summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore29
-rw-r--r--README.Coding3
-rw-r--r--WHATSNEW.txt8253
-rw-r--r--docs/README-NOW11
-rw-r--r--examples/LDAP/samba.schema9
-rw-r--r--examples/VFS/Makefile.in2
-rw-r--r--examples/VFS/configure.in11
-rw-r--r--examples/VFS/skel_opaque.c14
-rw-r--r--examples/VFS/skel_transparent.c10
-rw-r--r--examples/libsmbclient/Makefile10
-rwxr-xr-xexamples/misc/adssearch.pl4
-rw-r--r--examples/pam_winbind/pam_winbind.conf9
-rw-r--r--examples/perfcounter/Makefile13
-rw-r--r--examples/perfcounter/perf_writer_util.c8
-rwxr-xr-xexamples/scripts/users_and_groups/adduserstogroups.pl167
-rwxr-xr-xexamples/scripts/users_and_groups/createdomobj.pl158
-rw-r--r--make-tarball.sh67
-rw-r--r--packaging/Debian/README3
-rw-r--r--packaging/Debian/debian-sarge/changelog49
-rw-r--r--packaging/Debian/debian-sarge/patches/documentation.patch74
-rw-r--r--packaging/Debian/debian-sarge/patches/fhs.patch202
-rw-r--r--packaging/Debian/debian-sarge/patches/nmbd-signalling.patch.unused (renamed from packaging/Debian/debian-sarge/patches/nmbd-signalling.patch)0
-rw-r--r--packaging/Debian/debian-sarge/patches/non-linux-ports.patch4
-rw-r--r--packaging/Debian/debian-sarge/patches/samba.patch6
-rw-r--r--packaging/Debian/debian-sarge/patches/undefined-symbols.patch22
-rw-r--r--source/.indent.pro30
-rw-r--r--source/.valgrind_suppressions85
-rw-r--r--source/Doxyfile6
-rw-r--r--source/Makefile.in964
-rw-r--r--source/TODO4
-rw-r--r--source/VERSION9
-rw-r--r--source/aclocal.m4 (renamed from source/m4/aclocal.m4)33
-rw-r--r--source/auth/auth.c15
-rw-r--r--source/auth/auth_compat.c2
-rw-r--r--source/auth/auth_domain.c4
-rw-r--r--source/auth/auth_ntlmssp.c2
-rw-r--r--source/auth/auth_sam.c10
-rw-r--r--source/auth/auth_server.c99
-rw-r--r--source/auth/auth_util.c528
-rw-r--r--source/auth/pampass.c4
-rw-r--r--source/auth/token_util.c462
-rwxr-xr-xsource/autogen.sh6
-rw-r--r--source/client/cifs_resolver.sh51
-rw-r--r--source/client/client.c108
-rw-r--r--source/client/clitar.c2
-rw-r--r--source/configure.in893
-rwxr-xr-xsource/depcomp584
-rw-r--r--source/exports/libsmbclient.syms4
-rw-r--r--source/exports/libsmbsharemodes.syms3
-rw-r--r--source/groupdb/mapping.c179
-rw-r--r--source/groupdb/mapping.h33
-rw-r--r--source/groupdb/mapping_ldb.c682
-rw-r--r--source/groupdb/mapping_tdb.c174
-rw-r--r--source/include/ads.h26
-rw-r--r--source/include/ads_protos.h24
-rw-r--r--source/include/auth.h6
-rw-r--r--source/include/client.h29
-rw-r--r--source/include/core/nterr.h1
-rw-r--r--source/include/ctdbd_conn.h65
-rw-r--r--source/include/dbwrap.h55
-rw-r--r--source/include/doserr.h1
-rw-r--r--source/include/gpo.h8
-rw-r--r--source/include/includes.h42
-rw-r--r--source/include/intl.h1
-rw-r--r--source/include/libsmbclient.h20
-rw-r--r--source/include/locking.h32
-rw-r--r--source/include/messages.h219
-rw-r--r--source/include/nt_status.h6
-rw-r--r--source/include/ntdomain.h12
-rw-r--r--source/include/nterr.h2
-rw-r--r--source/include/ntioctl.h4
-rw-r--r--source/include/packet.h84
-rw-r--r--source/include/passdb.h19
-rw-r--r--source/include/popt_common.h11
-rw-r--r--source/include/privileges.h4
-rw-r--r--source/include/reg_objects.h108
-rw-r--r--source/include/rpc_client.h9
-rw-r--r--source/include/rpc_dfs.h394
-rw-r--r--source/include/rpc_ds.h26
-rw-r--r--source/include/rpc_echo.h75
-rw-r--r--source/include/rpc_eventlog.h26
-rw-r--r--source/include/rpc_misc.h4
-rw-r--r--source/include/rpc_netlogon.h29
-rw-r--r--source/include/rpc_reg.h470
-rw-r--r--source/include/rpc_samr.h9
-rw-r--r--source/include/rpc_secdes.h52
-rw-r--r--source/include/rpc_shutdown.h75
-rw-r--r--source/include/rpc_srvsvc.h884
-rw-r--r--source/include/rpc_svcctl.h11
-rw-r--r--source/include/safe_string.h6
-rw-r--r--source/include/session.h2
-rw-r--r--source/include/smb.h105
-rw-r--r--source/include/smb_launchd.h43
-rw-r--r--source/include/smb_macros.h32
-rw-r--r--source/include/smb_share_modes.h2
-rw-r--r--source/include/smbldap.h4
-rw-r--r--source/include/smbprofile.h4
-rw-r--r--source/include/srvstr.h8
-rw-r--r--source/include/trans2.h41
-rw-r--r--source/include/util_tdb.h29
-rw-r--r--source/include/vfs.h17
-rw-r--r--source/include/vfs_macros.h9
-rw-r--r--source/iniparser/AUTHORS4
-rw-r--r--source/iniparser/Makefile14
-rw-r--r--source/iniparser/html/dir_000000.html27
-rw-r--r--source/iniparser/html/dirs.html19
-rw-r--r--source/iniparser/html/doxygen.css107
-rw-r--r--source/iniparser/html/globals_func.html53
-rw-r--r--source/iniparser/html/index.html50
-rw-r--r--source/iniparser/html/iniparser_8h.html788
-rw-r--r--source/iniparser/html/iniparser_8main.html2
-rw-r--r--source/iniparser/html/tab_b.gifbin35 -> 0 bytes
-rw-r--r--source/iniparser/html/tab_l.gifbin706 -> 0 bytes
-rw-r--r--source/iniparser/html/tab_r.gifbin2585 -> 0 bytes
-rw-r--r--source/iniparser/html/tabs.css102
-rw-r--r--source/iniparser/src/dictionary.c8
-rw-r--r--source/iniparser/src/dictionary.h4
-rw-r--r--source/iniparser/src/iniparser.c24
-rw-r--r--source/iniparser/src/iniparser.h22
-rw-r--r--source/iniparser/src/strlib.c8
-rw-r--r--source/iniparser/src/strlib.h8
-rw-r--r--source/iniparser_build/dictionary.c7
-rw-r--r--source/iniparser_build/iniparser.c7
-rw-r--r--source/iniparser_build/strlib.c7
-rw-r--r--source/intl/lang_tdb.c42
-rw-r--r--source/lib/charcnv.c14
-rw-r--r--source/lib/conn_tdb.c127
-rw-r--r--source/lib/ctdbd_conn.c1167
-rw-r--r--source/lib/data_blob.c6
-rw-r--r--source/lib/dbwrap.c87
-rw-r--r--source/lib/dbwrap_ctdb.c451
-rw-r--r--source/lib/dbwrap_file.c414
-rw-r--r--source/lib/dbwrap_tdb.c263
-rw-r--r--source/lib/debug.c50
-rw-r--r--source/lib/dmallocmsg.c27
-rw-r--r--source/lib/dummysmbd.c20
-rw-r--r--source/lib/errmap_unix.c117
-rw-r--r--source/lib/events.c95
-rw-r--r--source/lib/file_id.c102
-rw-r--r--source/lib/gencache.c32
-rw-r--r--source/lib/launchd.c242
-rw-r--r--source/lib/ldb/Doxyfile26
-rw-r--r--source/lib/ldb/Makefile.in173
-rw-r--r--source/lib/ldb/README_gcov.txt29
-rwxr-xr-xsource/lib/ldb/autogen.sh17
-rw-r--r--source/lib/ldb/common/attrib_handlers.c406
-rw-r--r--source/lib/ldb/common/ldb.c1133
-rw-r--r--source/lib/ldb/common/ldb_attributes.c309
-rw-r--r--source/lib/ldb/common/ldb_controls.c106
-rw-r--r--source/lib/ldb/common/ldb_debug.c105
-rw-r--r--source/lib/ldb/common/ldb_dn.c1028
-rw-r--r--source/lib/ldb/common/ldb_ldif.c761
-rw-r--r--source/lib/ldb/common/ldb_match.c431
-rw-r--r--source/lib/ldb/common/ldb_modules.c452
-rw-r--r--source/lib/ldb/common/ldb_msg.c830
-rw-r--r--source/lib/ldb/common/ldb_parse.c819
-rw-r--r--source/lib/ldb/common/ldb_utf8.c149
-rw-r--r--source/lib/ldb/common/qsort.c254
-rwxr-xr-xsource/lib/ldb/config.guess1466
-rw-r--r--source/lib/ldb/config.mk315
-rwxr-xr-xsource/lib/ldb/config.sub1579
-rw-r--r--source/lib/ldb/configure.ac74
-rwxr-xr-xsource/lib/ldb/docs/builddocs.sh52
-rw-r--r--source/lib/ldb/docs/design.txt41
-rwxr-xr-xsource/lib/ldb/docs/installdocs.sh17
-rw-r--r--source/lib/ldb/examples.dox16
-rw-r--r--source/lib/ldb/examples/ldbreader.c125
-rw-r--r--source/lib/ldb/examples/ldifreader.c129
-rw-r--r--source/lib/ldb/include/dlinklist.h111
-rw-r--r--source/lib/ldb/include/includes.h29
-rw-r--r--source/lib/ldb/include/ldb.h1561
-rw-r--r--source/lib/ldb/include/ldb_errors.h311
-rw-r--r--source/lib/ldb/include/ldb_private.h225
-rwxr-xr-xsource/lib/ldb/install-sh238
-rw-r--r--source/lib/ldb/ldap.m490
-rw-r--r--source/lib/ldb/ldb.pc.in15
-rw-r--r--source/lib/ldb/ldb_ildap/ldb_ildap.c828
-rw-r--r--source/lib/ldb/ldb_ldap/ldb_ldap.c847
-rw-r--r--source/lib/ldb/ldb_sqlite3/README7
-rw-r--r--source/lib/ldb/ldb_sqlite3/base160.c155
-rw-r--r--source/lib/ldb/ldb_sqlite3/ldb_sqlite3.c1912
-rw-r--r--source/lib/ldb/ldb_sqlite3/schema363
-rw-r--r--source/lib/ldb/ldb_sqlite3/trees.ps1760
-rw-r--r--source/lib/ldb/ldb_tdb/ldb_cache.c561
-rw-r--r--source/lib/ldb/ldb_tdb/ldb_index.c1179
-rw-r--r--source/lib/ldb/ldb_tdb/ldb_pack.c294
-rw-r--r--source/lib/ldb/ldb_tdb/ldb_search.c528
-rw-r--r--source/lib/ldb/ldb_tdb/ldb_tdb.c1085
-rw-r--r--source/lib/ldb/ldb_tdb/ldb_tdb.h129
-rw-r--r--source/lib/ldb/ldb_tdb/ldb_tdb_wrap.c155
-rw-r--r--source/lib/ldb/libldb.m433
-rw-r--r--source/lib/ldb/mainpage.dox80
-rw-r--r--source/lib/ldb/man/ad2oLschema.1.xml87
-rw-r--r--source/lib/ldb/man/ldb.3.xml262
-rw-r--r--source/lib/ldb/man/ldbadd.1.xml105
-rw-r--r--source/lib/ldb/man/ldbdel.1.xml105
-rw-r--r--source/lib/ldb/man/ldbedit.1.xml200
-rw-r--r--source/lib/ldb/man/ldbmodify.1.xml93
-rw-r--r--source/lib/ldb/man/ldbrename.1.xml107
-rw-r--r--source/lib/ldb/man/ldbsearch.1.xml119
-rw-r--r--source/lib/ldb/man/oLschema2ldif.1.xml79
-rw-r--r--source/lib/ldb/modules/asq.c489
-rw-r--r--source/lib/ldb/modules/ldb_map.c1338
-rw-r--r--source/lib/ldb/modules/ldb_map.h158
-rw-r--r--source/lib/ldb/modules/ldb_map_inbound.c724
-rw-r--r--source/lib/ldb/modules/ldb_map_outbound.c1286
-rw-r--r--source/lib/ldb/modules/ldb_map_private.h117
-rw-r--r--source/lib/ldb/modules/objectclass.c694
-rw-r--r--source/lib/ldb/modules/operational.c312
-rw-r--r--source/lib/ldb/modules/paged_results.c567
-rw-r--r--source/lib/ldb/modules/paged_searches.c468
-rw-r--r--source/lib/ldb/modules/rdn_name.c343
-rw-r--r--source/lib/ldb/modules/skel.c137
-rw-r--r--source/lib/ldb/modules/sort.c443
-rw-r--r--source/lib/ldb/nssldb/README.txt34
-rw-r--r--source/lib/ldb/nssldb/ldb-grp.c427
-rw-r--r--source/lib/ldb/nssldb/ldb-nss.c402
-rw-r--r--source/lib/ldb/nssldb/ldb-nss.h86
-rw-r--r--source/lib/ldb/nssldb/ldb-pwd.c241
-rw-r--r--source/lib/ldb/samba/README7
-rw-r--r--source/lib/ldb/samba/ldif_handlers.c484
-rw-r--r--source/lib/ldb/sqlite3.m462
-rwxr-xr-xsource/lib/ldb/standalone.sh25
-rw-r--r--source/lib/ldb/swig/Ldb.py179
-rw-r--r--source/lib/ldb/swig/ldb.i240
-rw-r--r--source/lib/ldb/tests/init.ldif40
-rwxr-xr-xsource/lib/ldb/tests/init_slapd.sh41
-rwxr-xr-xsource/lib/ldb/tests/kill_slapd.sh12
-rwxr-xr-xsource/lib/ldb/tests/ldapi_url.sh11
-rw-r--r--source/lib/ldb/tests/photo.ldif5
-rw-r--r--source/lib/ldb/tests/samba4.pngbin6239 -> 0 bytes
-rw-r--r--source/lib/ldb/tests/schema-tests/schema-add-test.ldif66
-rw-r--r--source/lib/ldb/tests/schema-tests/schema-mod-test-1.ldif5
-rw-r--r--source/lib/ldb/tests/schema-tests/schema-mod-test-2.ldif5
-rw-r--r--source/lib/ldb/tests/schema-tests/schema-mod-test-3.ldif5
-rw-r--r--source/lib/ldb/tests/schema-tests/schema-mod-test-4.ldif5
-rw-r--r--source/lib/ldb/tests/schema-tests/schema-mod-test-5.ldif5
-rw-r--r--source/lib/ldb/tests/schema-tests/schema.ldif112
-rw-r--r--source/lib/ldb/tests/slapd.conf26
-rwxr-xr-xsource/lib/ldb/tests/start_slapd.sh14
-rw-r--r--source/lib/ldb/tests/test-attribs.ldif15
-rw-r--r--source/lib/ldb/tests/test-config.ldif67
-rw-r--r--source/lib/ldb/tests/test-default-config.ldif17
-rwxr-xr-xsource/lib/ldb/tests/test-extended.sh69
-rwxr-xr-xsource/lib/ldb/tests/test-generic.sh128
-rw-r--r--source/lib/ldb/tests/test-index.ldif11
-rwxr-xr-xsource/lib/ldb/tests/test-ldap.sh54
-rw-r--r--source/lib/ldb/tests/test-modify.ldif23
-rwxr-xr-xsource/lib/ldb/tests/test-schema.sh34
-rwxr-xr-xsource/lib/ldb/tests/test-sqlite3.sh25
-rw-r--r--source/lib/ldb/tests/test-tdb-features.sh119
-rwxr-xr-xsource/lib/ldb/tests/test-tdb.sh31
-rw-r--r--source/lib/ldb/tests/test-wildcard.ldif5
-rw-r--r--source/lib/ldb/tests/test-wrong_attributes.ldif3
-rw-r--r--source/lib/ldb/tests/test.ldif411
-rw-r--r--source/lib/ldb/tests/testdata.txt8
-rw-r--r--source/lib/ldb/tests/testsearch.txt5
-rw-r--r--source/lib/ldb/tools/ad2oLschema.c630
-rw-r--r--source/lib/ldb/tools/cmdline.c755
-rw-r--r--source/lib/ldb/tools/cmdline.h54
-rw-r--r--source/lib/ldb/tools/convert.c166
-rw-r--r--source/lib/ldb/tools/convert.h10
-rw-r--r--source/lib/ldb/tools/ldbadd.c120
-rw-r--r--source/lib/ldb/tools/ldbdel.c119
-rw-r--r--source/lib/ldb/tools/ldbedit.c333
-rw-r--r--source/lib/ldb/tools/ldbmodify.c120
-rw-r--r--source/lib/ldb/tools/ldbrename.c85
-rw-r--r--source/lib/ldb/tools/ldbsearch.c321
-rw-r--r--source/lib/ldb/tools/ldbtest.c410
-rw-r--r--source/lib/ldb/tools/oLschema2ldif.c608
-rw-r--r--source/lib/ldb/web/index.html89
-rw-r--r--source/lib/messages.c768
-rw-r--r--source/lib/messages_ctdbd.c119
-rw-r--r--source/lib/messages_local.c432
-rw-r--r--source/lib/module.c85
-rw-r--r--source/lib/packet.c256
-rw-r--r--source/lib/pam_errors.c4
-rw-r--r--source/lib/pidfile.c27
-rw-r--r--source/lib/privileges.c523
-rw-r--r--source/lib/privileges_basic.c512
-rw-r--r--source/lib/replace/Makefile.in9
-rw-r--r--source/lib/replace/README1
-rw-r--r--source/lib/replace/configure.ac2
-rw-r--r--source/lib/replace/dlfcn.c4
-rw-r--r--source/lib/replace/dlfcn.m417
-rw-r--r--source/lib/replace/libreplace.m43
-rw-r--r--source/lib/replace/libreplace_cc.m46
-rw-r--r--source/lib/replace/replace.c34
-rw-r--r--source/lib/replace/replace.h32
-rw-r--r--source/lib/replace/system/aio.h26
-rw-r--r--source/lib/replace/system/capability.h26
-rw-r--r--source/lib/replace/system/dir.h26
-rw-r--r--source/lib/replace/system/filesys.h31
-rw-r--r--source/lib/replace/system/glob.h27
-rw-r--r--source/lib/replace/system/iconv.h27
-rw-r--r--source/lib/replace/system/kerberos.h27
-rw-r--r--source/lib/replace/system/locale.h27
-rw-r--r--source/lib/replace/system/network.h27
-rw-r--r--source/lib/replace/system/passwd.h27
-rw-r--r--source/lib/replace/system/printing.h27
-rw-r--r--source/lib/replace/system/readline.h29
-rw-r--r--source/lib/replace/system/select.h31
-rw-r--r--source/lib/replace/system/shmem.h27
-rw-r--r--source/lib/replace/system/syslog.h27
-rw-r--r--source/lib/replace/system/terminal.h27
-rw-r--r--source/lib/replace/system/time.h29
-rw-r--r--source/lib/replace/system/wait.h29
-rw-r--r--source/lib/secace.c6
-rw-r--r--source/lib/secdesc.c112
-rw-r--r--source/lib/select.c4
-rw-r--r--source/lib/sharesec.c10
-rw-r--r--source/lib/smbldap.c62
-rw-r--r--source/lib/substitute.c24
-rw-r--r--source/lib/system.c445
-rw-r--r--source/lib/system_smbd.c8
-rw-r--r--source/lib/talloc/Makefile.in19
-rw-r--r--source/lib/talloc/config.mk5
-rw-r--r--source/lib/talloc/configure.ac2
-rw-r--r--source/lib/talloc/libtalloc.m410
-rw-r--r--source/lib/talloc/talloc.3.xml21
-rw-r--r--source/lib/talloc/talloc.c2
-rw-r--r--source/lib/talloc/talloc.h4
-rw-r--r--source/lib/talloc/talloc.pc.in7
-rw-r--r--source/lib/talloc/talloc_guide.txt21
-rw-r--r--source/lib/talloc/testsuite.c58
-rw-r--r--source/lib/tallocmsg.c16
-rw-r--r--source/lib/tdb/aclocal.m41
-rwxr-xr-xsource/lib/tdb/config.guess1466
-rwxr-xr-xsource/lib/tdb/config.sub1579
-rwxr-xr-xsource/lib/tdb/install-sh238
-rw-r--r--source/lib/util.c207
-rw-r--r--source/lib/util_file.c2
-rw-r--r--source/lib/util_nttoken.c70
-rw-r--r--source/lib/util_pw.c14
-rw-r--r--source/lib/util_reg.c141
-rw-r--r--source/lib/util_reg_api.c157
-rw-r--r--source/lib/util_reg_smbconf.c83
-rw-r--r--source/lib/util_sock.c55
-rw-r--r--source/lib/util_str.c63
-rw-r--r--source/lib/util_tdb.c313
-rw-r--r--source/libads/ads_status.c15
-rw-r--r--source/libads/authdata.c8
-rw-r--r--source/libads/cldap.c8
-rw-r--r--source/libads/disp_sec.c7
-rw-r--r--source/libads/dns.c49
-rw-r--r--source/libads/kerberos.c243
-rw-r--r--source/libads/kerberos_keytab.c148
-rw-r--r--source/libads/kerberos_verify.c110
-rw-r--r--source/libads/krb5_errs.c6
-rw-r--r--source/libads/krb5_setpw.c2
-rw-r--r--source/libads/ldap.c302
-rw-r--r--source/libads/ldap_schema.c72
-rw-r--r--source/libads/ldap_utils.c194
-rw-r--r--source/libads/sasl.c35
-rw-r--r--source/libgpo/gpo_fetch.c52
-rw-r--r--source/libgpo/gpo_ldap.c205
-rw-r--r--source/libgpo/gpo_sec.c181
-rw-r--r--source/libgpo/gpo_util.c165
-rw-r--r--source/libmsrpc/cac_lsarpc.c16
-rw-r--r--source/libmsrpc/cac_svcctl.c4
-rw-r--r--source/libmsrpc/cac_winreg.c564
-rw-r--r--source/libmsrpc/libmsrpc_internal.c4
-rw-r--r--source/library-versions.in9
-rw-r--r--source/librpc/gen_ndr/cli_dfs.c751
-rw-r--r--source/librpc/gen_ndr/cli_dfs.h27
-rw-r--r--source/librpc/gen_ndr/cli_echo.c321
-rw-r--r--source/librpc/gen_ndr/cli_echo.h14
-rw-r--r--source/librpc/gen_ndr/cli_epmapper.c267
-rw-r--r--source/librpc/gen_ndr/cli_epmapper.h12
-rw-r--r--source/librpc/gen_ndr/cli_eventlog.c724
-rw-r--r--source/librpc/gen_ndr/cli_eventlog.h28
-rw-r--r--source/librpc/gen_ndr/cli_initshutdown.c107
-rw-r--r--source/librpc/gen_ndr/cli_initshutdown.h7
-rw-r--r--source/librpc/gen_ndr/cli_lsa.c2642
-rw-r--r--source/librpc/gen_ndr/cli_lsa.h86
-rw-r--r--source/librpc/gen_ndr/cli_netlogon.c1600
-rw-r--r--source/librpc/gen_ndr/cli_netlogon.h51
-rw-r--r--source/librpc/gen_ndr/cli_srvsvc.c1826
-rw-r--r--source/librpc/gen_ndr/cli_srvsvc.h58
-rw-r--r--source/librpc/gen_ndr/cli_svcctl.c1510
-rw-r--r--source/librpc/gen_ndr/cli_svcctl.h48
-rw-r--r--source/librpc/gen_ndr/cli_unixinfo.c165
-rw-r--r--source/librpc/gen_ndr/cli_unixinfo.h9
-rw-r--r--source/librpc/gen_ndr/cli_winreg.c1186
-rw-r--r--source/librpc/gen_ndr/cli_winreg.h39
-rw-r--r--source/librpc/gen_ndr/cli_wkssvc.c62
-rw-r--r--source/librpc/gen_ndr/dfs.h553
-rw-r--r--source/librpc/gen_ndr/echo.h211
-rw-r--r--source/librpc/gen_ndr/epmapper.h353
-rw-r--r--source/librpc/gen_ndr/eventlog.h286
-rw-r--r--source/librpc/gen_ndr/initshutdown.h64
-rw-r--r--source/librpc/gen_ndr/lsa.h1465
-rw-r--r--source/librpc/gen_ndr/messaging.h21
-rw-r--r--source/librpc/gen_ndr/ndr_dcerpc.h2
-rw-r--r--source/librpc/gen_ndr/ndr_dfs.c5343
-rw-r--r--source/librpc/gen_ndr/ndr_dfs.h131
-rw-r--r--source/librpc/gen_ndr/ndr_echo.c1460
-rw-r--r--source/librpc/gen_ndr/ndr_echo.h59
-rw-r--r--source/librpc/gen_ndr/ndr_epmapper.c2686
-rw-r--r--source/librpc/gen_ndr/ndr_epmapper.h77
-rw-r--r--source/librpc/gen_ndr/ndr_eventlog.c1644
-rw-r--r--source/librpc/gen_ndr/ndr_eventlog.h92
-rw-r--r--source/librpc/gen_ndr/ndr_initshutdown.c429
-rw-r--r--source/librpc/gen_ndr/ndr_initshutdown.h29
-rw-r--r--source/librpc/gen_ndr/ndr_lsa.c11074
-rw-r--r--source/librpc/gen_ndr/ndr_lsa.h331
-rw-r--r--source/librpc/gen_ndr/ndr_messaging.c115
-rw-r--r--source/librpc/gen_ndr/ndr_messaging.h16
-rw-r--r--source/librpc/gen_ndr/ndr_misc.h1
-rw-r--r--source/librpc/gen_ndr/ndr_netlogon.c13129
-rw-r--r--source/librpc/gen_ndr/ndr_netlogon.h247
-rw-r--r--source/librpc/gen_ndr/ndr_security.h2
-rw-r--r--source/librpc/gen_ndr/ndr_srvsvc.c19569
-rw-r--r--source/librpc/gen_ndr/ndr_svcctl.c5682
-rw-r--r--source/librpc/gen_ndr/ndr_svcctl.h154
-rw-r--r--source/librpc/gen_ndr/ndr_unixinfo.c526
-rw-r--r--source/librpc/gen_ndr/ndr_unixinfo.h32
-rw-r--r--source/librpc/gen_ndr/ndr_winreg.c4419
-rw-r--r--source/librpc/gen_ndr/ndr_winreg.h133
-rw-r--r--source/librpc/gen_ndr/ndr_wkssvc.c18
-rw-r--r--source/librpc/gen_ndr/netlogon.h1405
-rw-r--r--source/librpc/gen_ndr/notify.h2
-rw-r--r--source/librpc/gen_ndr/srv_dfs.c1543
-rw-r--r--source/librpc/gen_ndr/srv_dfs.h29
-rw-r--r--source/librpc/gen_ndr/srv_echo.c715
-rw-r--r--source/librpc/gen_ndr/srv_echo.h16
-rw-r--r--source/librpc/gen_ndr/srv_epmapper.c574
-rw-r--r--source/librpc/gen_ndr/srv_epmapper.h14
-rw-r--r--source/librpc/gen_ndr/srv_eventlog.c1619
-rw-r--r--source/librpc/gen_ndr/srv_eventlog.h30
-rw-r--r--source/librpc/gen_ndr/srv_initshutdown.c219
-rw-r--r--source/librpc/gen_ndr/srv_initshutdown.h9
-rw-r--r--source/librpc/gen_ndr/srv_lsa.c5616
-rw-r--r--source/librpc/gen_ndr/srv_lsa.h88
-rw-r--r--source/librpc/gen_ndr/srv_netlogon.c3340
-rw-r--r--source/librpc/gen_ndr/srv_netlogon.h53
-rw-r--r--source/librpc/gen_ndr/srv_srvsvc.c3718
-rw-r--r--source/librpc/gen_ndr/srv_srvsvc.h60
-rw-r--r--source/librpc/gen_ndr/srv_svcctl.c3212
-rw-r--r--source/librpc/gen_ndr/srv_svcctl.h50
-rw-r--r--source/librpc/gen_ndr/srv_unixinfo.c385
-rw-r--r--source/librpc/gen_ndr/srv_unixinfo.h11
-rw-r--r--source/librpc/gen_ndr/srv_winreg.c2457
-rw-r--r--source/librpc/gen_ndr/srv_winreg.h41
-rw-r--r--source/librpc/gen_ndr/srvsvc.h73
-rw-r--r--source/librpc/gen_ndr/svcctl.h32
-rw-r--r--source/librpc/gen_ndr/tables.c63
-rw-r--r--source/librpc/gen_ndr/unixinfo.h82
-rw-r--r--source/librpc/gen_ndr/winreg.h624
-rw-r--r--source/librpc/gen_ndr/wkssvc.h14
-rw-r--r--source/librpc/idl/dfs.idl394
-rw-r--r--source/librpc/idl/echo.idl127
-rw-r--r--source/librpc/idl/epmapper.idl302
-rw-r--r--source/librpc/idl/eventlog.idl178
-rw-r--r--source/librpc/idl/idl_types.h86
-rw-r--r--source/librpc/idl/initshutdown.idl46
-rw-r--r--source/librpc/idl/lsa.idl976
-rw-r--r--source/librpc/idl/messaging.idl26
-rw-r--r--source/librpc/idl/misc.idl47
-rw-r--r--source/librpc/idl/netlogon.idl1204
-rw-r--r--source/librpc/idl/notify.idl56
-rw-r--r--source/librpc/idl/ntsvcs.idl77
-rw-r--r--source/librpc/idl/samr.idl1234
-rw-r--r--source/librpc/idl/security.idl355
-rw-r--r--source/librpc/idl/spoolss.idl1417
-rw-r--r--source/librpc/idl/srvsvc.idl1512
-rw-r--r--source/librpc/idl/svcctl.idl499
-rw-r--r--source/librpc/idl/unixinfo.idl56
-rw-r--r--source/librpc/idl/winreg.idl396
-rw-r--r--source/librpc/idl/wkssvc.idl393
-rw-r--r--source/librpc/ndr/libndr.h1
-rw-r--r--source/librpc/ndr/ndr.c10
-rw-r--r--source/librpc/ndr/ndr_basic.c51
-rw-r--r--source/librpc/ndr/ndr_misc.c16
-rwxr-xr-xsource/librpc/tables.pl89
-rw-r--r--source/librpc/tools/ndrdump.c448
-rw-r--r--source/libsmb/cliconnect.c61
-rw-r--r--source/libsmb/clidgram.c28
-rw-r--r--source/libsmb/clientgen.c217
-rw-r--r--source/libsmb/clierror.c11
-rw-r--r--source/libsmb/clifile.c46
-rw-r--r--source/libsmb/clifsinfo.c326
-rw-r--r--source/libsmb/clikrb5.c339
-rw-r--r--source/libsmb/clilist.c4
-rw-r--r--source/libsmb/climessage.c6
-rw-r--r--source/libsmb/clioplock.c2
-rw-r--r--source/libsmb/cliprint.c4
-rw-r--r--source/libsmb/cliquota.c23
-rw-r--r--source/libsmb/clirap.c2
-rw-r--r--source/libsmb/clireadwrite.c60
-rw-r--r--source/libsmb/clisecdesc.c6
-rw-r--r--source/libsmb/clispnego.c25
-rw-r--r--source/libsmb/clistr.c4
-rw-r--r--source/libsmb/clitrans.c31
-rw-r--r--source/libsmb/doserr.c1
-rw-r--r--source/libsmb/errormap.c128
-rw-r--r--source/libsmb/libsmb_compat.c86
-rw-r--r--source/libsmb/libsmbclient.c334
-rw-r--r--source/libsmb/namequery.c12
-rw-r--r--source/libsmb/namequery_dc.c26
-rw-r--r--source/libsmb/ntlm_check.c18
-rw-r--r--source/libsmb/ntlmssp.c46
-rw-r--r--source/libsmb/ntlmssp_parse.c23
-rw-r--r--source/libsmb/ntlmssp_sign.c8
-rw-r--r--source/libsmb/samlogon_cache.c10
-rw-r--r--source/libsmb/smb_seal.c497
-rw-r--r--source/libsmb/smb_share_modes.c36
-rw-r--r--source/libsmb/smb_signing.c37
-rw-r--r--source/libsmb/smbencrypt.c57
-rw-r--r--source/libsmb/trustdom_cache.c6
-rw-r--r--source/libsmb/unexpected.c6
-rw-r--r--source/locking/brlock.c372
-rw-r--r--source/locking/locking.c374
-rw-r--r--source/locking/posix.c69
-rw-r--r--source/m4/check_gnu_make.m478
-rw-r--r--source/m4/cond.m434
-rw-r--r--source/m4/depend.m4158
-rw-r--r--source/m4/depout.m468
-rw-r--r--source/m4/lead-dot.m421
-rw-r--r--source/m4/make.m451
-rw-r--r--source/m4/substnot.m412
-rw-r--r--source/modules/charset_macosxfs.c18
-rw-r--r--source/modules/exports.darwin1
-rw-r--r--source/modules/gpfs.c61
-rw-r--r--source/modules/nfs4_acls.c117
-rw-r--r--source/modules/vfs_afsacl.c8
-rw-r--r--source/modules/vfs_aixacl2.c10
-rw-r--r--source/modules/vfs_cap.c10
-rw-r--r--source/modules/vfs_catia.c18
-rw-r--r--source/modules/vfs_default.c26
-rw-r--r--source/modules/vfs_full_audit.c34
-rw-r--r--source/modules/vfs_gpfs.c165
-rw-r--r--source/modules/vfs_netatalk.c33
-rw-r--r--source/modules/vfs_readahead.c2
-rw-r--r--source/modules/vfs_recycle.c18
-rw-r--r--source/modules/vfs_zfsacl.c187
-rw-r--r--source/nmbd/nmbd.c141
-rw-r--r--source/nmbd/nmbd_elections.c7
-rw-r--r--source/nmbd/nmbd_lmhosts.c2
-rw-r--r--source/nmbd/nmbd_packets.c35
-rw-r--r--source/nmbd/nmbd_processlogon.c24
-rw-r--r--source/nmbd/nmbd_winsserver.c13
-rw-r--r--source/nsswitch/idmap.c429
-rw-r--r--source/nsswitch/idmap_ad.c46
-rw-r--r--source/nsswitch/idmap_cache.c200
-rw-r--r--source/nsswitch/idmap_ldap.c443
-rw-r--r--source/nsswitch/idmap_rid.c2
-rw-r--r--source/nsswitch/idmap_tdb.c178
-rw-r--r--source/nsswitch/idmap_util.c2
-rw-r--r--source/nsswitch/nss_info.c13
-rw-r--r--source/nsswitch/nss_info_template.c2
-rw-r--r--source/nsswitch/pam_winbind.c152
-rw-r--r--source/nsswitch/pam_winbind.h17
-rw-r--r--source/nsswitch/wb_common.c6
-rw-r--r--source/nsswitch/winbind_nss.h3
-rw-r--r--source/nsswitch/winbind_nss_linux.h4
-rw-r--r--source/nsswitch/winbind_nss_netbsd.c2
-rw-r--r--source/nsswitch/winbind_nss_solaris.c2
-rw-r--r--source/nsswitch/winbindd.c189
-rw-r--r--source/nsswitch/winbindd.h33
-rw-r--r--source/nsswitch/winbindd_ads.c554
-rw-r--r--source/nsswitch/winbindd_async.c139
-rw-r--r--source/nsswitch/winbindd_cache.c1228
-rw-r--r--source/nsswitch/winbindd_ccache_access.c4
-rw-r--r--source/nsswitch/winbindd_cm.c305
-rw-r--r--source/nsswitch/winbindd_cred_cache.c6
-rw-r--r--source/nsswitch/winbindd_creds.c2
-rw-r--r--source/nsswitch/winbindd_dual.c200
-rw-r--r--source/nsswitch/winbindd_group.c723
-rw-r--r--source/nsswitch/winbindd_misc.c33
-rw-r--r--source/nsswitch/winbindd_nss.h39
-rw-r--r--source/nsswitch/winbindd_pam.c279
-rw-r--r--source/nsswitch/winbindd_passdb.c28
-rw-r--r--source/nsswitch/winbindd_reconnect.c5
-rw-r--r--source/nsswitch/winbindd_rpc.c125
-rw-r--r--source/nsswitch/winbindd_sid.c5
-rw-r--r--source/nsswitch/winbindd_sockinit.c127
-rw-r--r--source/nsswitch/winbindd_user.c44
-rw-r--r--source/nsswitch/winbindd_util.c382
-rw-r--r--source/pam_smbpass/general.h8
-rw-r--r--source/pam_smbpass/pam_smb_acct.c10
-rw-r--r--source/pam_smbpass/pam_smb_auth.c10
-rw-r--r--source/pam_smbpass/pam_smb_passwd.c10
-rw-r--r--source/param/loadparm.c365
-rw-r--r--source/passdb/login_cache.c54
-rw-r--r--source/passdb/lookup_sid.c31
-rw-r--r--source/passdb/machine_sid.c5
-rw-r--r--source/passdb/passdb.c68
-rw-r--r--source/passdb/pdb_get_set.c4
-rw-r--r--source/passdb/pdb_interface.c162
-rw-r--r--source/passdb/pdb_ldap.c5
-rw-r--r--source/passdb/pdb_smbpasswd.c2
-rw-r--r--source/passdb/pdb_tdb.c66
-rw-r--r--source/passdb/secrets.c154
-rw-r--r--source/printing/notify.c36
-rw-r--r--source/printing/nt_printing.c223
-rw-r--r--source/printing/printfsp.c3
-rw-r--r--source/printing/printing.c75
-rw-r--r--source/profile/profile.c37
-rwxr-xr-xsource/python/examples/tdbpack/tdbtimetrial.py2
-rwxr-xr-xsource/python/examples/tdbpack/test_tdbpack.py2
-rw-r--r--source/python/py_lsa.c4
-rw-r--r--source/python/py_ntsec.c2
-rw-r--r--source/python/py_smb.c2
-rw-r--r--source/python/py_spoolss_printers_conv.c1
-rw-r--r--source/python/py_srvsvc.c2
-rw-r--r--source/registry/reg_api.c728
-rw-r--r--source/registry/reg_db.c223
-rw-r--r--source/registry/reg_eventlog.c15
-rw-r--r--source/registry/reg_frontend.c393
-rw-r--r--source/registry/reg_frontend_hilvl.c200
-rw-r--r--source/registry/reg_objects.c44
-rw-r--r--source/registry/reg_perfcount.c20
-rw-r--r--source/registry/reg_printing.c11
-rw-r--r--source/registry/reg_shares.c2
-rw-r--r--source/registry/reg_smbconf.c98
-rw-r--r--source/rpc_client/cli_dfs.c632
-rw-r--r--source/rpc_client/cli_echo.c143
-rw-r--r--source/rpc_client/cli_lsarpc.c267
-rw-r--r--source/rpc_client/cli_netlogon.c133
-rw-r--r--source/rpc_client/cli_pipe.c42
-rw-r--r--source/rpc_client/cli_reg.c709
-rw-r--r--source/rpc_client/cli_samr.c297
-rw-r--r--source/rpc_client/cli_shutdown.c119
-rw-r--r--source/rpc_client/cli_srvsvc.c617
-rw-r--r--source/rpc_client/cli_svcctl.c24
-rw-r--r--source/rpc_parse/parse_dfs.c2705
-rw-r--r--source/rpc_parse/parse_echo.c164
-rw-r--r--source/rpc_parse/parse_eventlog.c39
-rw-r--r--source/rpc_parse/parse_lsa.c7
-rw-r--r--source/rpc_parse/parse_misc.c78
-rw-r--r--source/rpc_parse/parse_net.c110
-rw-r--r--source/rpc_parse/parse_prs.c44
-rw-r--r--source/rpc_parse/parse_reg.c1789
-rw-r--r--source/rpc_parse/parse_rpc.c22
-rw-r--r--source/rpc_parse/parse_samr.c111
-rw-r--r--source/rpc_parse/parse_sec.c124
-rw-r--r--source/rpc_parse/parse_shutdown.c268
-rw-r--r--source/rpc_parse/parse_spoolss.c14
-rw-r--r--source/rpc_parse/parse_srv.c3557
-rw-r--r--source/rpc_parse/parse_svcctl.c47
-rw-r--r--source/rpc_server/srv_dfs.c602
-rw-r--r--source/rpc_server/srv_dfs_nt.c273
-rw-r--r--source/rpc_server/srv_echo.c150
-rw-r--r--source/rpc_server/srv_echo_nt.c118
-rw-r--r--source/rpc_server/srv_epmapper_nt.c71
-rw-r--r--source/rpc_server/srv_eventlog.c46
-rw-r--r--source/rpc_server/srv_eventlog_lib.c12
-rw-r--r--source/rpc_server/srv_eventlog_nt.c156
-rw-r--r--source/rpc_server/srv_initshutdown_nt.c78
-rw-r--r--source/rpc_server/srv_lsa.c159
-rw-r--r--source/rpc_server/srv_lsa_hnd.c6
-rw-r--r--source/rpc_server/srv_lsa_nt.c576
-rw-r--r--source/rpc_server/srv_netlog_nt.c19
-rw-r--r--source/rpc_server/srv_ntsvcs_nt.c25
-rw-r--r--source/rpc_server/srv_pipe.c135
-rw-r--r--source/rpc_server/srv_pipe_hnd.c6
-rw-r--r--source/rpc_server/srv_reg.c659
-rw-r--r--source/rpc_server/srv_reg_nt.c1352
-rw-r--r--source/rpc_server/srv_samr.c2
-rw-r--r--source/rpc_server/srv_samr_nt.c134
-rw-r--r--source/rpc_server/srv_spoolss_nt.c569
-rw-r--r--source/rpc_server/srv_srvsvc.c621
-rw-r--r--source/rpc_server/srv_srvsvc_nt.c2274
-rw-r--r--source/rpc_server/srv_svcctl.c45
-rw-r--r--source/rpc_server/srv_svcctl_nt.c267
-rw-r--r--source/rpc_server/srv_unixinfo_nt.c131
-rw-r--r--source/rpc_server/srv_winreg_nt.c1209
-rw-r--r--source/rpcclient/cmd_dfs.c162
-rw-r--r--source/rpcclient/cmd_echo.c50
-rw-r--r--source/rpcclient/cmd_lsarpc.c94
-rw-r--r--source/rpcclient/cmd_netlogon.c40
-rw-r--r--source/rpcclient/cmd_samr.c227
-rw-r--r--source/rpcclient/cmd_shutdown.c4
-rw-r--r--source/rpcclient/cmd_spoolss.c23
-rw-r--r--source/rpcclient/cmd_srvsvc.c261
-rw-r--r--source/rpcclient/cmd_test.c2
-rw-r--r--source/rpcclient/cmd_unixinfo.c202
-rw-r--r--source/rpcclient/rpcclient.c42
-rw-r--r--source/samba3-knownfail4
-rw-r--r--source/script/build_idl.sh61
-rwxr-xr-xsource/script/count_80_col.pl15
-rwxr-xr-xsource/script/format_indent.sh12
-rwxr-xr-xsource/script/installmodules.sh14
-rwxr-xr-xsource/script/mkversion.sh146
-rwxr-xr-xsource/script/strip_trail_ws.pl18
-rw-r--r--[-rwxr-xr-x]source/script/tests/gdb_backtrace0
-rwxr-xr-xsource/script/tests/selftest.sh9
-rwxr-xr-xsource/script/tests/test_local_s3.sh3
-rwxr-xr-xsource/script/tests/test_posix_s3.sh6
-rw-r--r--source/services/services_db.c75
-rw-r--r--source/services/svc_netlogon.c4
-rw-r--r--source/smbd/aio.c178
-rw-r--r--source/smbd/blocking.c266
-rw-r--r--source/smbd/chgpasswd.c20
-rw-r--r--source/smbd/close.c56
-rw-r--r--source/smbd/conn.c43
-rw-r--r--source/smbd/connection.c239
-rw-r--r--source/smbd/dir.c59
-rw-r--r--source/smbd/dmapi.c4
-rw-r--r--source/smbd/error.c31
-rw-r--r--source/smbd/fileio.c38
-rw-r--r--source/smbd/filename.c25
-rw-r--r--source/smbd/files.c51
-rw-r--r--source/smbd/ipc.c183
-rw-r--r--source/smbd/lanman.c36
-rw-r--r--source/smbd/mangle_hash.c5
-rw-r--r--source/smbd/message.c20
-rw-r--r--source/smbd/msdfs.c26
-rw-r--r--source/smbd/negprot.c23
-rw-r--r--source/smbd/notify.c56
-rw-r--r--source/smbd/notify_internal.c118
-rw-r--r--source/smbd/nttrans.c448
-rw-r--r--source/smbd/open.c220
-rw-r--r--source/smbd/oplock.c240
-rw-r--r--source/smbd/oplock_irix.c49
-rw-r--r--source/smbd/oplock_linux.c24
-rw-r--r--source/smbd/password.c66
-rw-r--r--source/smbd/pipes.c19
-rw-r--r--source/smbd/posix_acls.c102
-rw-r--r--source/smbd/process.c149
-rw-r--r--source/smbd/quotas.c3
-rw-r--r--source/smbd/reply.c960
-rw-r--r--source/smbd/seal.c704
-rw-r--r--source/smbd/sec_ctx.c89
-rw-r--r--source/smbd/server.c437
-rw-r--r--source/smbd/service.c133
-rw-r--r--source/smbd/session.c192
-rw-r--r--source/smbd/sesssetup.c126
-rw-r--r--source/smbd/share_access.c6
-rw-r--r--source/smbd/sockinit.c201
-rw-r--r--source/smbd/statcache.c151
-rw-r--r--source/smbd/trans2.c503
-rw-r--r--source/smbd/vfs.c2
-rw-r--r--source/tdb/Makefile.in (renamed from source/lib/tdb/Makefile.in)8
-rw-r--r--source/tdb/aclocal.m4 (renamed from source/lib/ldb/aclocal.m4)0
-rwxr-xr-xsource/tdb/autogen.sh (renamed from source/lib/tdb/autogen.sh)2
-rw-r--r--source/tdb/common/dump.c (renamed from source/lib/tdb/common/dump.c)0
-rw-r--r--source/tdb/common/error.c (renamed from source/lib/tdb/common/error.c)2
-rw-r--r--source/tdb/common/freelist.c (renamed from source/lib/tdb/common/freelist.c)10
-rw-r--r--source/tdb/common/freelistcheck.c (renamed from source/lib/tdb/common/freelistcheck.c)4
-rw-r--r--source/tdb/common/io.c (renamed from source/lib/tdb/common/io.c)89
-rw-r--r--source/tdb/common/lock.c (renamed from source/lib/tdb/common/lock.c)2
-rw-r--r--source/tdb/common/open.c (renamed from source/lib/tdb/common/open.c)41
-rw-r--r--source/tdb/common/tdb.c (renamed from source/lib/tdb/common/tdb.c)37
-rw-r--r--source/tdb/common/tdb_private.h (renamed from source/lib/tdb/common/tdb_private.h)44
-rw-r--r--source/tdb/common/tdbback.c (renamed from source/lib/tdb/tools/tdbbackup.c)154
-rw-r--r--source/tdb/common/transaction.c (renamed from source/lib/tdb/common/transaction.c)29
-rw-r--r--source/tdb/common/traverse.c (renamed from source/lib/tdb/common/traverse.c)4
-rw-r--r--source/tdb/config.m4 (renamed from source/lib/tdb/libtdb.m4)16
-rw-r--r--source/tdb/config.mk (renamed from source/lib/tdb/config.mk)4
-rw-r--r--source/tdb/configure.in (renamed from source/lib/tdb/configure.ac)13
-rw-r--r--source/tdb/docs/README (renamed from source/lib/tdb/docs/README)0
-rw-r--r--source/tdb/docs/tdb.magic (renamed from source/lib/tdb/docs/tdb.magic)0
-rw-r--r--source/tdb/include/tdb.h (renamed from source/lib/tdb/include/tdb.h)3
-rw-r--r--source/tdb/include/tdbback.h (renamed from source/include/reg_db.h)22
-rw-r--r--source/tdb/include/tdbconfig.h.in58
-rw-r--r--source/tdb/swig/Tdb.py (renamed from source/lib/tdb/swig/Tdb.py)0
-rw-r--r--source/tdb/swig/tdb.i (renamed from source/lib/tdb/swig/tdb.i)0
-rw-r--r--source/tdb/tdb.pc.in (renamed from source/lib/tdb/tdb.pc.in)4
-rw-r--r--source/tdb/tools/tdbbackup.c155
-rw-r--r--source/tdb/tools/tdbdump.c (renamed from source/lib/tdb/tools/tdbdump.c)18
-rw-r--r--source/tdb/tools/tdbtest.c (renamed from source/lib/tdb/tools/tdbtest.c)0
-rw-r--r--source/tdb/tools/tdbtool.c (renamed from source/lib/tdb/tools/tdbtool.c)183
-rw-r--r--source/tdb/tools/tdbtorture.c (renamed from source/lib/tdb/tools/tdbtorture.c)0
-rw-r--r--source/tests/crypttest.c6
-rw-r--r--source/tests/fcntl_lock.c10
-rw-r--r--source/tests/fcntl_lock64.c12
-rw-r--r--source/tests/ftruncate.c4
-rw-r--r--source/tests/getgroups.c14
-rw-r--r--source/tests/os2_delete.c214
-rw-r--r--source/tests/shared_mmap.c16
-rw-r--r--source/tests/summary.c2
-rw-r--r--source/tests/trivial.c1
-rw-r--r--source/tests/unixsock.c21
-rw-r--r--source/torture/cmd_vfs.c2
-rw-r--r--source/torture/locktest.c14
-rw-r--r--source/torture/locktest2.c15
-rw-r--r--source/torture/mangle_test.c4
-rw-r--r--source/torture/msgtest.c51
-rw-r--r--source/torture/torture.c6
-rw-r--r--source/utils/net.c11
-rw-r--r--source/utils/net.h3
-rw-r--r--source/utils/net_ads.c82
-rw-r--r--source/utils/net_ads_gpo.c73
-rw-r--r--source/utils/net_conf.c1225
-rw-r--r--source/utils/net_domain.c84
-rw-r--r--source/utils/net_groupmap.c2
-rw-r--r--source/utils/net_help.c5
-rw-r--r--source/utils/net_idmap.c6
-rw-r--r--source/utils/net_rpc.c574
-rw-r--r--source/utils/net_rpc_join.c2
-rw-r--r--source/utils/net_rpc_printer.c28
-rw-r--r--source/utils/net_rpc_registry.c815
-rw-r--r--source/utils/net_rpc_rights.c12
-rw-r--r--source/utils/net_rpc_service.c20
-rw-r--r--source/utils/net_sam.c165
-rw-r--r--source/utils/net_status.c86
-rw-r--r--source/utils/net_util.c4
-rw-r--r--source/utils/netlookup.c4
-rw-r--r--source/utils/ntlm_auth.c60
-rw-r--r--source/utils/ntlm_auth_diagnostics.c54
-rw-r--r--source/utils/pdbedit.c9
-rw-r--r--source/utils/smbcacls.c25
-rw-r--r--source/utils/smbcontrol.c385
-rw-r--r--source/utils/smbcquotas.c9
-rw-r--r--source/utils/smbpasswd.c2
-rw-r--r--source/utils/smbtree.c34
-rw-r--r--source/utils/status.c123
-rw-r--r--source/utils/status_profile.c4
-rw-r--r--source/web/startstop.c2
-rw-r--r--source/web/statuspage.c90
-rw-r--r--source/web/swat.c2
813 files changed, 40664 insertions, 197552 deletions
diff --git a/.bzrignore b/.bzrignore
deleted file mode 100644
index e350ef7c351..00000000000
--- a/.bzrignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.o
-*.po
-source/client/client_proto.h
-source/groupdb/mapping.po
-source/include/build_env.h
-source/include/config.h
-source/include/config.h.in
-source/include/proto.h
-source/include/stamp-h
-source/include/version.h
-source/Makefile
-source/config.log
-source/config.status
-source/configure
-source/dynconfig.po
-source/smbadduser
-source/bin/*
-source/script/findsmb
-source/script/gen-8bit-gap.sh
-source/script/installbin.sh
-source/script/uninstallbin.sh
-source/smbd/build_options.c
-source/utils/net_proto.h
-source/utils/ntlm_auth_proto.h
-source/web/swat_proto.h
-source/nsswitch/winbindd_proto.h
-source/tags
-source/utils/passwd_proto.h
-source/include/includes.h.gch
diff --git a/README.Coding b/README.Coding
index 73ceb5028cf..ba9e8be08c5 100644
--- a/README.Coding
+++ b/README.Coding
@@ -76,8 +76,7 @@ displaying trailing whitespace:
endf
autocmd BufNewFile,BufRead * call ActivateInvisibleCharIndicator()
endif
- " Show tabs, trailing whitespace, and continued lines visually
- set list listchars=tab:»·,trail:·,extends:…
+
=========================
FAQ & Statement Reference
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 179a31c7fda..58680368788 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,6 +1,8251 @@
- WHATS NEW IN Samba 3 SVN
- ========================
+ ===============================
+ Release Notes for Samba 3.0.25b
+ June 20, 2007
+ ===============================
-This file is NOT maintained but will be created during releases.
-See the SAMBA_3_0_RELEASE branch for the current WHATSNEW.
+This is the third production release of the Samba 3.0.25 code
+base and is the version that servers should be run for for all
+current bug fixes.
+
+Major bug fixes included in Samba 3.0.25b are:
+
+ o Offline caching of files with Windows XP/Vista clients.
+ o Improper cleanup of expired or invalid byte range locks
+ on files.
+ o Crashes is idmap_ldap and idmap_rid.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.25a
+---------------------
+
+o Jeremy Allison <jra@samba.org>
+ * BUG 4655: Fix client parsing bug in spoolss EnumPrinterDataEx().
+ * Ensure that proper oplock break requests occur during file open
+ and performing internal checks for compatible open modes.
+ * Fix offline file caching with Windows XP/Vista clients.
+ * Coverity fixes.
+ * Ensure that winbindd reports the correct client connection
+ details in response to a SIGUSR2.
+ * Fix timespec_current() to return the correct nano-second time.
+ * Fix lock logic inconsistencies in tdb_traverse().
+ * Remove restriction on string length for rpcclient commands.
+ * BUG 4683: Fix LSA crash bug.
+ * BUG 3204: Fix file descriptor leak in the parent winbindd when
+ child processes hang.
+ * Avoid calling rename_open_files() when the old and new names
+ are identical.
+ * BUG 4689: Fix bug in new change notify code caused by not
+ ignoring the max_params_return value and as a resulting
+ returning truncated names.
+ * Fix sync_file() to return NTSTATUS and return this on failure in
+ the write reply path.
+ * BUG 4678,4697: Fix token creation for clear text logins.
+
+
+o Jacob Berkman <jberkman@novell.com>
+ * BUG 4566: Pass password data to krb5_prompter.
+
+
+o Guenther Deschner <gd@samba.org>
+ * BUG 4657: Fix compilation and linking of pam_smbpass.so.
+ * Add more netlogon GetDcName() client calls.
+
+
+o Steve Langasek <vorlon@debian.org>
+ * Allow SIGTERM to cause nmbd to exit on awaiting an interface
+ to come up.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix record state check error when reviewing entries in nmbd's
+ WINS database.
+
+
+o Justin Maggard <jmaggard@infrant.com>
+ * Don't expire a password if it's explicitly set as ACB_PWNOTREQ.
+
+
+o <mnix@wanm.com.au>
+ * Fix old old bug in cli_smbwrite() (not incrementing data
+ being sent).
+
+
+o Jens Nissen <jens.nissen@gmx.net>
+ * BUG 4537: Fix smbtorture deny test2.
+
+
+o James Peach <jpeach@apple.com>
+ * Fix structure types in the vfs_catia NT_ACL operations.
+
+
+o Doug Rudoff <doug_rudoff@isilon.com>
+ * Ensure that the the lck struct for invalid locks are correctly
+ saved and therefore cleaned up.
+
+
+o Simo Sorce <idra@samba.org>
+ * Updates for the packaging/Debian directory.
+ * Add missing 'c' character to the list of shell safe characters.
+ * BUG 4667 (partial): Fix crash bug in idmap_ldap.c.
+ * Fix inconsistencies between creating machine and user accounts.
+ * Fix bug deleting LDAP user accounts that used the account
+ objectclass as its structural basis.
+ * BUG 2319: Ensure that smbspool correctly decodes %-encoded
+ characters.
+ * BUG 4624: Fix crashes in idmap_rid.
+
+
+Release notes for older releases follow:
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.25a
+ May 25, 2007
+ ===============================
+
+Major bug fixes included in Samba 3.0.25a are:
+
+ o Missing supplementary Unix group membership when using "force
+ group".
+ o Premature expiration of domain user passwords when using a
+ Samba domain controller.
+ o Failure to open the Windows object picker against a server
+ configured to use "security = domain".
+ * Authentication failures when using security = server.
+
+
+Changes to MS-DFS Root Share Behavior
+=====================================
+
+Please be aware that the initial value for the "msdfs root" share
+parameter was changed in the 3.0.25 release series and that this
+option is now disabled by default. Windows clients frequently require
+a reboot in order to clear any cached information about MS-DFS
+root shares on a server and you may experience failures accessing
+file services on Samba 3.0.25 servers until the client reboot
+is performed. Alternately, you may explicitly re-enable the
+parameter in smb.conf. Please refer to the smb.conf(5) man page
+for more details.
+
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.25
+--------------------
+
+o Michael Adam <obnox@samba.org>
+ * Fix logic in detection of the need to replace dlopen, et. al.
+ * Add HP-UX ACL VFS module.
+ * Fix build of Tru64 ACL VFS module.
+
+
+o Jeremy Allison <jra@samba.org>
+ * BUG 4622: Fix authentication failures in security = server.
+ * Fix pointer marshalling in srvsvc parsing code.
+ * BUG 4630: Fix conversion of 8 byte time_t and NT_TIME values.
+ * Ensure that if we're blocked on a POSIX lock we know nothing
+ about that we retry the lock every 10 seconds instead of waiting
+ for the standard select timeout.
+ * BUG 4637: Fix samlogon reply regression that broke domain logons.
+ * Fix rename on open files and improved delete-on-close semantics.
+ * Fix POSIX setfilepathinfo to use lstat.
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * Add -pie support to Python's setup.py.
+ * Strip STYPE_TEMPORARY and STYPE_HIDDEN when printing share
+ listing from 'net rap shares".
+ * Fix argument parsing in "net rap server domain".
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * BUG 4616: Don't return a dns or forest name when replying to the
+ DsGetPrimaryRoleInfo() and configured for security = domain.
+ * Trim noise by removing redundant WARNING log message that would
+ flood at log level 2.
+ * Fix truncation of supplementary Unix groups when using "force group".
+
+
+o Guenther Deschner <gd@samba.org>
+ * Always fallback to NTLM authentication in pam_winbind when the
+ user's account has UF_DONT_REQUIRE_PREAUTH set.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Valgrind fixes in mount.cifs.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix crash bug in the Solaria ACL VFS module caused by
+ uninitialized variables.
+
+
+o Herb Lewis <herb@samba.org>
+ * Update connection structure definition for tdbtool display
+ output.
+
+
+o Derrell Lipman <derrell@samba.org>
+ * BUG 4601: Fix smbc_getxattr() to properly return the required
+ size of the buffer needed to contain the extended attributes.
+ * BUG 4599: Fix failure when setting attributes.
+ * BUG 4634: Type of the size parameter to getpeername in
+ libsmbclient code was wrong.
+ * Fix libsmbclient interaction with links on Vista and properly
+ detect non-NTSTATUS errors.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * BUG 4630: Fix special case of unix_to_nt_time() for TIME_T_MAX
+ and the output from http_timestring().
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Merge gdb_backtrace script changes form SAMBA_4_0.
+
+
+o Lars Mueller <lars@samba.org>
+ * Allow idmap_ldap to be built as a shared lib.
+
+
+o James Peach <jpeach@apple.com>
+ * BUG 4426: Move FAM libraries from smbd to vfs_fam_notify.
+ * BUG 2287: Replace unnecessary AC_TRY_RUN with AC_TRY_LINK.
+ * BUG 4589: Fix typo in pdbedit output.
+
+
+o Simo Sorce <idra@samba.org>
+ * Short circuit Unix Users and Unix Groups Domain SID checks
+ in smbd to avoid unnecessary calls to winbindd.
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.25
+ May 14, 2007
+ ==============================
+
+The 3.0.25 release is an upgrade release over the 3.0.23/3.0.24
+series which means that a substantial amount of development has
+occurred and many new features have been added since the last
+Samba production release. We would like to thank everyone in
+the Samba community that help to test the preview snapshots and
+release candidates. We believe that the this production release
+is in much better shape due to your help.
+
+Major features included in the 3.0.25 code base include:
+
+ o Significant improvements in the winbind off-line logon support.
+ o Support for secure DDNS updates as part of the 'net ads join'
+ process.
+ o Rewritten IdMap interface which allows for TTL based caching and
+ per domain backends.
+ o New plug-in interface for the "winbind nss info" parameter.
+ o New file change notify subsystem which is able to make use of
+ inotify on Linux.
+ o Support for passing Windows security descriptors to a VFS
+ plug-in allowing for multiple Unix ACL implements to running side
+ by side on the Same server.
+ o Improved compatibility with Windows Vista clients including
+ improved read performance with Linux servers.
+ o Man pages for IdMap and VFS plug-ins.
+
+Security Fixes included in the Samba 3.0.25 release are:
+
+ o CVE-2007-2444
+ Versions: Samba 3.0.23d - 3.0.25pre2
+ Local SID/Name translation bug can result in
+ user privilege elevation
+
+ o CVE-2007-2446
+ Versions: Samba 3.0.0 - 3.0.24
+ Multiple heap overflows allow remote code execution
+
+ o CVE-2007-2447
+ Versions: Samba 3.0.0 - 3.0.24
+ Unescaped user input parameters are passed as
+ arguments to /bin/sh allowing for remote command
+ execution
+
+
+Off-line Logons and AD Site Support
+===================================
+
+Winbind's capability to support offline logons has been greatly
+improved with the 3.0.25 release including support for locating
+domain controllers asynchronously using Active Directory Site
+information.
+
+
+New IdMap Interface for Winbindd
+================================
+
+The 3.0.25 release of Samba includes a rewritten IdMap interface
+for winbindd which replaces the "idmap backend" parameter. Please
+refer to the "idmap domains" description in the smb.conf(5) man
+page for more details.
+
+
+Dynamic DNS Updates
+===================
+
+The "net ads join" command is now able to register the host's DNS A
+records with Windows 2000 SP4 and 2003 DNS servers. This
+feature must be enabled at compile time using the --with-dnsupdate
+when running the ./configure script. There is also a related "net ads
+dns" command for refreshing a host's records which could be launched
+from a dhcp client script when a new IP address is obtained.
+
+
+Support for Additional ACL Modules
+==================================
+
+Samba's POSIX ACL support has been moved inside of the VFS layer
+which means it is now possible to support multiple ACL implementations
+on the same server including NFSv4 and GPFS ACLs.
+
+
+VFS ReadAhead Plugin
+====================
+
+Windows Vista introduces pipe-lined read support for improved
+performance when transferring files. The new vfs_readahead plugin
+allows Linux file servers to utilize additional Kernel buffers
+for caching files in order to avoid Disk I/O wait time when serving
+Vista clients. If you experience poor read performance between
+Linux servers and Vista clients, please test the vfs_readahead
+module by adding the following lines to the share definition
+in smb.conf:
+
+[file_share]
+ vfs objects = readahead
+
+Note that this plugin will result in additional RAM requirements
+due to the increased amount of kernel buffer caches used by smbd.
+Please refer to vfs_readahead(8) for more information.
+
+
+Windows Vista, Office 2007, and Offline Files
+=============================================
+
+Research surrounding offline files, Windows Vista, and Microsoft
+Office 2007 has revealed a incompatibility between these
+applications and the "map acl inherit = no" setting in smb.conf.
+Users requiring support client side caching (csc) and offline
+files are encouraged to enable the "map acl inherit" for any
+affected share definitions in the server's configuration.
+Future versions of Samba will enable this setting by default.
+
+Please refer to the smb.conf(5) man page for more details on
+"map acl inherit".
+
+
+######################################################################
+Changes
+#######
+
+smb.conf changes
+----------------
+
+ Parameter Name Description Default
+ -------------- ----------- -------
+ change notify timeout Removed n/a
+ change notify New Yes
+ debug prefix timestamp New No
+ fam change notify Removed n/a
+ idmap domains New ""
+ idmap alloc backend New ""
+ idmap cache time New 900
+ idmap negative cache time New 120
+ kernel change notify Per share Yes
+ lock spin count Removed n/a
+ max stat cache size Modified 1024KB
+ msdfs root Modified no
+ printjob username New %U
+ winbind normalize names New no
+
+
+
+
+Changes since 3.0.25rc3
+-----------------------
+
+
+o Jeremy Allison <jra@samba.org>
+ * Fix memory corruption bug during string processing.
+ * Instantiate idiom that malloc/tallocs of array of 0 elements
+ returns NULL.
+ * Fix marshalling bugs in samr code based on incorrect
+ assumptions.
+ * Fix DFS MS-RPC enumeration reply when we have no DFS shares.
+ * Fix memory corruption when enumerating accounts in the
+ LsaPrivilege database.
+ * Fixes for CVE-2007-2444, CVE-2007-2446, and CVE-2007-2447.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Fix memory corruption when adding/removing members from Local
+ Groups.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Prevent leaking on full NET_USER_INFO_3 structure memory on each
+ cached login.
+ * Plug memory leak in client SPNEGO session setup code.
+ * Don't clear cached U/SID and UG/SID entries when we want to
+ logon offline.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Allow prepaths in mount.cifs.
+ * Don't prompt for a password in mount.cifs when sec=none has been
+ specified.
+
+
+o Steve Langasek <vorlon@debian.org>
+ * BUG 4600: Fix compilation of --with-python.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix memory corruption bug in string_replace().
+ * Fix valgrind error in parse_domain_user().
+ * Fix compilation of explicit --without-winbind.
+ * Fix an uninitialized variable and other compiler warnings.
+ * Fix memory leak in smbd's claim session code.
+ * BUG 4613: Fix incorrect password expiration caused by stomping on
+ the time values in the NET_USER_INFO_3 for remote users.
+ * Fixes for CVE-2007-2446.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Add AC_GNU_SOURCE macro in libreplace for systems which don't have it.
+ * Fix libreplace compiler warnings.
+
+
+o Jens Nissen <jens.nissen@gmx.net>
+ * Fix memory leak on the file/directory ACL processing code.
+
+
+o Simo Sorce <idra@samba.org>
+ * Memory allocation cleanups and sanity checks after the malloc(0)
+ == NULL crusade.
+ * Fix socket leak in idmap_ldap.c.
+ * Fix failure in "net idmap restore".
+ * Fix crash bug in idmap_ldap's get_credentials() code.
+ * Fixes for CVE-2007-2446.
+
+
+o Alison Winters <alisonw@sgi.com>
+ * Add missing return calls in sendfilereadbraw.
+
+
+Changes since 3.0.24
+--------------------
+
+
+commits
+-------
+
+o Michael Adam <ma@sernet.de>
+ * Patch to lib/sysquotas_linux.c replacing some "get"s by "set"s.
+ This makes the difference between the get and set calls for
+ SMB_USER_FS_QUOTA_TYPE and SMB_GROUP_FS_QUOTA_TYPE.
+ * Prevent collision from config.h created by stand alone component
+ builds.
+
+
+o Jeremy Allison <jra@samba.org>
+ * Fix CIFS POSIX unlink behavior.
+ * Change POSIX_UNLINK to allow clients to differentiate between
+ unlink/rmdir calls.
+ * Add smbclient implementations of POSIX open/mkdir/unlink/rmdir.
+ * Refactor MS-DFS server and client code.
+ * Support deep MS-DFS referrals in Samba client applications.
+ * Change the VFS interface to use struct timespec for utimes.
+ * Fix build failures on *BSD platforms caused by introduction of
+ memalign().
+ * Optimize exit path in the byte-range locking code in smbd to
+ only read the locking db if there are outstanding lock requests.
+ * Fix long-standing bug in our chain processing code.
+ * BUG 4384: Fix bug in old search code.
+ * Add support for the UNIX_INFO2 info level.
+ * Add in the "create info" field to the reply from POSIX_OPEN
+ and POSIX_MKDIR.
+ * Refactor the sessionsetupX code a little to allow us to return
+ a NT_STATUS_TIME_DIFFERENCE_AT_DC error to a client.
+ * Fix memory leaks in the LDAP sasl bind code.
+ * Fix crash in vfs audit/full audit modules caused by API changes.
+ * Fix connection problem between pre-3.0.25 smbclient and new DFS
+ server code.
+ * Fix valgrind errors in credentials.c.
+ * Fix logic error in CIFS POSIX extensions for open() and mkdir().
+ * Fix if logic error when checking for password resets of machine
+ trust accounts in Samba's passdb.
+ * Ensure we use the same technique to pull the share mode data out
+ that locking.c does.
+ * Fixes buffer parsing in the server side Lanman and RAP calls.
+ * Fix GetPrinter() info level 3 to fix displaying and setting
+ security descriptors on printers from WinXP x86_64 clients.
+ * Return correct error code to the trans2 GetDfsReferral() request
+ from Vista clients (fixes listing share contents in the Vista
+ explorer.exe).
+ * BUG 4486: Fix the exclude_dir parameter in the VFS recycle
+ plugin.
+ * Consolidate the become_root_uid_only() calls to only use
+ become_root().
+ * Add vfs_readahead module to deal with the pipe-lined reads
+ from Vista clients.
+ * BUG 4404: Fix server SMB/CIFS protocol bugs that broke Vista
+ clients trying to utilize offline file support.
+ * BUG 4494: Make sure to fail immediately if sendfile fails and
+ don't continue on to call chain_reply() (based on report from
+ Kevin Jamieson).
+ * Remove tdb.h from the libsmbsharemodes.so header file.
+ * BUG 3634: Fix crash in nmbd caused by a bad "interfaces" include
+ in smb.conf.
+ * Add initial version to winbindd_cache.tdb file. Automatically
+ delete existing non-versioned cache files.
+ * Fix the storage size of time_t in winbindd_cache.tdb to be 8
+ bytes.
+ * Cope with signature errors on sessionsetupX logins where the
+ server just reflects our signature back to us. Allow the upper
+ layer to see the real error.
+ * BUG 4512: Limit the volume label for a share to 32 UNICODE
+ characters.
+ * Allow arbitrary bases in int and ulong parsing in smb.conf.
+ * Fix off-by-one error in tconX parsing.
+ * Winbind off-line logon fixes.
+ * Support for AD sites when locating domain controllers.
+ * Fix libsmbclient bug with Konqueror and NetApp filers that need
+ a leading / in OpenAndX calls.
+ * BUG 4187: Possible crash in signing on/off code.
+ * Fix memory leaks in pam_winbind.c.
+ * Fix a bug in the sequence number store/fetch routines in
+ winbindd_cache.tdb.
+ * Fix the problem with Linux clients requesting O_WRONLY on write-only
+ files.
+ * Fix a class of memory allocation bugs in the handling of user tokens.
+ * Fix crash bug in winbindd caused by a bug in the messaging dispatch
+ code.
+ * Fix memory bloat in trans calls caused by talloc()'ing memory off the
+ wrong context.
+ * Fix wildcard renames with SMBmv.
+ * Fixes for pathname handling code.
+ * Add in the wdel smbclient command to perform wildcard deletes.
+ * Fix a bug that causes smbd to 'hang' intermittently while updating
+ the trusted domain cache.
+ * Cleanup error path processing in reduce_name().
+ * Fixes for smbtorture tests (BASE-DELETE, ...)
+ * Delete on close fixes ("I completely understand it this time").
+ * Remove unneeded checks on incoming uid/gid for mknod (fifo) Unix
+ extensions code.
+ * More fixes for Unix Extensions include support for POSIX locking.
+ * NTLMv2 fixes for Vista clients.
+ * Add an optimized lookup for Domain Users and only report the current
+ user (which is generally what the calling application wants to know
+ anyways).
+ * Fixes for supporting the Vista backup utility based on work by Joe
+ Meadows <jameadows@webopolis.com>.
+ * Fix 4377: Fix rename of "foo" -> "Foo".
+ * BUG 4188: Fix for Vista delete directory bug.
+ * BUG 4400: Add support for processing large Krb5 tickets in SMB
+ sesssetup&X. Based on work by <todd.stecher@isilon.com>.
+ * Fix trans2 file size reporting for Linux CIFS client.
+ * Allow Well-Known and Local Groups to be stored in POSIX ACLs
+ as long as there is a SID/gid mapping entry available.
+ * Fix memory corruption bug in the CIFS POSIX open/mkdir.
+ * BUG 4536: Correctly delete symlinks pointing to a directory.
+
+
+o Danilo Almeida <dalmeida@centeris.com>
+ * Add additional debug support for pam_winbind.
+ * Add support for listing multiple groups in pam_winbind's
+ require-membership-of option which act as a logical OR.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Ensure debug messages from tools print the correct config file
+ location if the file was defined as a command line option.
+
+
+o Andrew Benham <andrew.benham@thus.net>
+ * BUG 4290: Properly compute time to password expiration in message
+ from pam_winbind.
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * Ensure nfsv4 chown logic is controlled by "nfs4:chown=[yes|no]".
+ * Add GPFS-provided DMAPI support
+
+
+o Kai Blin <kai.blin@gmail.com>
+ * Match Windows NTLMSSP flags.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Implement pluggable "winbind nss info" interface.
+ * Removal of unmaintained smbwrapper utility.
+ * Fix server affinity bugs in the 'net ads join' code to include
+ support for AD sites.
+ * Implement DDNS update client code.
+ * Upper case the host/sAMAccountName in the keytab file.
+ * Fix lookupname call in winbindd when joined to a child domain and
+ trying to resolve a SID in a sibling domain.
+ * Fix password changes against a Windows 2000 DC using pam_winbind.
+ * Fix crash in "pdbedit -L -w"
+ * Add "winbind normalize names" option.
+ * BUG 4093: Make %a resolve correctly for Windows Vista and Windows
+ XP 64bit clients.
+ * Printing fixes for Windows Vista.
+ * Protect the sasl bind against a NULL principal string in the
+ SPNEGO negTokenInit
+ * Fix some "cannot access LDAP when no root" bugs.
+ * NSS and PAM fixes on AIX.
+ * Cached credentials and Krb5 ticket renewal fixes in winbindd.
+ * Fix server affinity bug in Winbind's ADS connection handling.
+ * Fix crash when enumerating local group membership in usrmgr.exe
+ on a Samba DC.
+ * Rework parsing for NetFileEnum() and NetSessionEnum()
+ * Add server stub for NetFileClose()
+ * Return correct information for sessions and open files
+ including session duration, number of open files, and open pipes.
+ * Fixes for "winbind normalize names" functionality:
+ - Fix getgroups() call called using a normalized name
+ - Fix some more name mappings that could cause for example
+ a user to be unable to unlock the screen as the username
+ would not match in the PAM authenticate call.
+ * Blacklist BUILTIN and MACHINE domains from the idmap domains as
+ these should only be handled by the winbindd_passdb.c backend.
+ * Allow the alloc init to fail for backwards compatible
+ configurations such as with idmap_ad.
+ * Remove the deprecated flags from idmap backend, et. al. These
+ are mutually exclusive with the "idmap domains".
+ * Add the osname and osver options to 'net ads join'
+ * Ensure winbindd honors the "idmap domains" option and not
+ default to idmap_tdb.
+ * Fix memory corruption caused by calling free() on talloc()'d
+ memory when adding and removing users from local groups.
+ * BUG 4501 (partial): Fix crash bugs in idmap_ad plugin by adding
+ the schema_mode option when using "winbind nss info = template".
+ * BUG 4491, 4501 (partial): Disable attempts to allocate a uid/gid if no
+ idmap alloc backend has been defined. Do not defined a default
+ alloc backend.
+ * Fix "make install" to include creating the links between
+ idmap_ad and the nss_info_rfc2307 and nss_info_sfu plugins.
+ * Enable the --with-dnsupdate in the Fedora/RHEL RPM packaging
+ files.
+ * BUG 4508: Remove potential loops in the idmap API by requiring
+ the caller defined the SID type rather than having the idmap layer
+ call back up to determine the SID type when allocating
+ uids/gids.
+ * Don't inherit the offline flag for winbindd_domains that have
+ not been initialized yet.
+ * Fix a crash in idmap_ldap caused by a NULL pointer dereference.
+ * Fix deadlock and timeout conditions in idmap_rid.
+
+
+o Steven Danneman <steven.danneman@isilon.com>
+ * Memory leak fixes.
+ * Fix core dump when config file in same directory.
+
+
+o Mathias Dietz <mdietz@de.ibm.com>
+ * Initial implementation of the GPFS VFS module.
+ * Work on NFSv4 ACL VFS plugin.
+ * Add support for share modes to the GPFS VFS plugin.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Winbind off-line logon fixes.
+ * Support for AD sites when locating domain controllers.
+ * Various fixes for 'net ads' user management functions.
+ * Add an CLDAP client written in Perl.
+ * Cleanups to the Krb5 ticket refresh code in winbindd.
+ * Fixes for various error messages from pam_winbind when password
+ policies are being enforced.
+ * Implement grace logons for offline authentications in pam_winbind.
+ * Fixes for idmap_ad.
+ * Memory leak fixes.
+ * BUG 4009: Fixes leaking file descriptors (CLOSE_WAIT) in winbindd
+ with short lived service tickets
+ * Implement basic AD group policy library
+ * Adding experimental krb5 lib locator plugin.
+ * Ensure that Samba clients are correctly reported by the %a
+ smb.conf as "Samba" and not "Vista".
+ * Prevent a user from issuing a PAM_DELETE_CREDS request in
+ pam_close_session() for another user.
+ * Fix tdb keynames in netsamlogon_clear_cached_user().
+ * Add missing proto_exists dependency for the Winbind NSS target
+ in the Makefile.
+ * Build fixes when linking against Heimdal 0.8 Kerberos libraries.
+ * Build fixes when using older Heimdal Krb5 libs (e.g. 0.6.3).
+ * Memory allocation error checks in libgpo.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Fix mount.cifs compile on old libc missing bind mount #define.
+
+
+o SATOH Fumiyasu <fumiyas@osstech.co.jp>
+ * Fix memory leaks in the error paths used by winbindd's credential
+ cache code.
+ * BUG 4409: Add minsize parameter to the vfs_recycle plugin.
+ * BUG 3319: Ensure that 'hide unreadable' does not filter MS-DFS links.
+
+
+o Krishna Ganugapati <krishnag@centeris.com>
+ * Implement DDNS update client code.
+
+
+o YAMASAKI Hiroyuki <h-yamasaki@pd.jp.nec.com>
+ * BUG 4346: Fix type reported for hidden shares via MS-RPC.
+
+
+o David Hu <david.hu@hp.com>
+ * BUG 4267: Fix memory leaks in ldapsam.
+
+
+o Bjoern Jacke <bj@sernet.de>
+ * BUG 4244: Limit stat cache to a default of 1MB.
+
+
+o William Jojo <jojowil@hvcc.edu>
+ * BUG 3713: Re-add reporting what the profiles tool does (-v).
+ * BUG 3632: Fix for EISCON in open_any_socket_out() on AIX.
+ * BUG 4447: Fix compile failure on AIX 5.2.
+
+
+o Taj Khattra <taj.khattra@gmail.com>
+ * Fix missing lock count release in transaction cancel.
+
+
+o Zack Kirsch <zack.kirsch@isilon.com>
+ * Fix memory leaks on some error paths.
+ * Memory leak fixes on error paths in various places.
+
+
+o Derrell Lipman <derrell@samba.org>
+ * BUG 4115: Fix for using kerberos logins in libsmbclient.so.
+ * BUG 4309: Prevent netbios keepalive on port 445 which causes
+ Vista to disconnect Samba clients.
+ * Ensure that the libsmbclient example programs link with the
+ libsmbclient library that's part of the current tree.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Replace snum references with a structure based array.
+ * Allow changing of the hashsize when running tdbbackup.
+ * Implement secure DDNS update code
+ * Klocwork, Coverity, and IBM Checker fixes.
+ * BUG 4273: Fix crash in 'net rpc vampire'
+ * Refactor older SMB file serving code.
+ * Refactor open directory file serving code.
+ * Implement support for inotify when serving CIFS change notification
+ requests (includes merge work from SAMBA_4_0).
+ * Fixes to allow Samba 3.0 to pass various smbtorture tests (RAW-OPEN,
+ RAW-UNLINK, RAW-CLOSE, ...)
+ * Refactor delete on close file server code.
+ * MS-DFS fixes for Vista clients.
+ * BUG 4372: Long timeout in LDAP setup when accessing files after
+ 10 secs.
+ * Change the static array for the in-memory mirrors of the hash chain
+ locks to a dynamically allocated one.
+ * Use inotify for file change notification on Linux.
+ * Revert "msdfs root" to default to "no".
+ * Refactor AIO code.
+ * Fix memory leaks when returning user lists to clients via SAMR calls.
+ * BUG 4365: Fix NTLMv2 implementation on Samba member servers not
+ running winbindd.
+ * Reduce contention on the tdb free list by periodic reclamation
+ of dead tdb records into groups
+ * Split tdb free lists per hash chain.
+ * Coverity fixes.
+ * Add winbindd_priv_request_response() request that kills the
+ existing winbind pipe connection if it's not privileged to prevent
+ race conditions during the challenge/response authentication sequence.
+ * BUG 4460: Fix compile error in winbind_nss_irix.c.
+ * Fix Coverity bug reports.
+ * Fixes buffer parsing in the server side Lanman and RAP calls.
+
+
+o David Leonard <dleonard@vintela.com>.
+ * Fix file descriptor leak from an error path in winbindd.
+ * BUG 4369: Fix smbclient's showacls on files in subdirectories.
+
+
+o Herb Lewis <herb@samba.org>
+ * Cleanups to sharesec utility.
+ * Compiler warning cleanups.
+ * Compiler warning fixes.
+ * Allow smbcontrol to use POPT_COMMON_SAMBA options to allow setting
+ debug level.
+ * Add "debug prefix timestamp" to allow syslog type timestamps to be
+ added in the Samba log files.
+ * Fix compile error in nmbd_incomingdgrams.c.
+ * Allow profiling level to be set on startup.
+
+
+o Ying Li <ying.li2@hp.com>
+ * Use the default tdb idmap plugin when neither idmap domains
+ nor idmap backend have been defined.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * Various compile warning fixes.
+ * Initial patch set for strptime() in libreplace.
+
+
+o Don McCall <don.mccall@hp.com>
+ * Fix compile bug in vfs_default on platforms without utimes().
+ * HP-UX compile fixes.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Bug fixes for GPFS VFS module.
+ * Fix "password never expires" policy which would be incorrectly
+ require all users to change their password at login time.
+ * Fix the GPFS VFS module to pass the POSIX ACL tests (Thanks to
+ Gomati Mohanan).
+ * Fix crate_user() access checks when setting the "User Cannot
+ Change Password" flag.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * POSIX ACL compile warning fixes.
+ * Fix --with-fhs, where confdir is set to \${sysconfdir} but
+ sysconfdir wasn't defined in the Makefile.
+ * Add localstatedir to configure.in for completeness.
+ * BUG 4496: Fix libreplace failure on ulibc systems.
+ * Merge numerous libreplace fixes from the SAMBA_4_0 code base
+ (stdint.h, stdbool.h, unsetenv, strptime(), strtoll(), et. al.).
+ * Move ZERO_*, ARRAY_SIZE and PTR_DIFF macros into libreplace.
+ * Portability fixes for dlopen() (merge from SAMBA_4_0)
+ * Sync libreplace (merge from SAMBA_4_0)
+
+
+o Heinrich Mislik <Heinrich.Mislik@univie.ac.at>
+ * AIX quota fixes.
+
+
+o Gomati Mohanan <gomati.mohanan@in.ibm.com>
+ * Work on NFSv4 ACL VFS plugin.
+
+
+o Lars Mueller <lars@samba.org>
+ * Provide better feedback about deprecated use of multiple passdb
+ backends. Use the first backend to have at least this one working.
+ * Fix make install to include smbmount, et. al. docs.
+ * Merge more proto_exists dependency fixes from SAMBA_3_0.
+ * Makefile cleanups.
+ * Log the reason for failures when not creating a core file on a
+ crash due to restrictive permissions on the log file directory.
+
+
+o James Peach <jpeach@apple.com>
+ * Replace exit_server with exit_server_cleanly where appropriate.
+ * Add docs for VFS modules.
+ * Portability fixes for autoconf and character set modules on
+ OS X.
+ * Only attempt to reload the config file after the fork point
+ if we are in daemon mode.
+ * Support the SMB_QUERY_POSIX_WHOAMI info level on QueryFsInfo.
+ * Changing the FindFirst response for the UNIX_INFO2 level to
+ include a length field before the name.
+ * Add call to chflags(2) in the default VFS module.
+
+
+o Andy Polyakov <appro@fy.chalmers.se>
+ * Pull the CUPS comment and location attributes when not overridden
+ by values stored in Samba's ntprinters.tdb.
+ * BUG 3275: Allow upload of x64 printer drivers by relaxing the COFF
+ header parsing code in smbd.
+
+
+o J Raynor <raynorj@mn.rr.com>
+ * Make sure we are privileged when doing DMAPI operations on systems
+ that don't have capability support.
+
+
+o Jorge Santos <jorge_a_santos@hotmail.com>
+ * BUG 4500: Fix compile bug in quota.c.
+
+
+o Jiri Sasek <jiri.sasek@sun.com>
+ * Fix incorrect Krb5 linking on Solaris.
+ * Fix possible NULL dereference in adt_tree.c
+
+
+o Karolin Seeger <ks@sernet.de>
+ * Fix a compile problem in shadow_copy_test.c.
+ * Add 'net sam policy' commands.
+ * Fixes for "net usershare" and "guest_ok=y"
+
+
+o Robert Shearman <rob@codeweavers.com>
+ * Allow NULL domain and username in the form of user@domain to be
+ interpreted correctly by ntlm_auth for use by Wine applications.
+
+
+o Simo Sorce <idra@samba.org>
+ * Remove redundant log messages from idmap_ad.c.
+ * BUG 3974: Fix ambiguity between the -N option and the -T
+ tar options.
+ * Fix linking flags used when creating shared libraries.
+ * Offline logon fixes in the idmap backend manager.
+ * Cleanup initialization code in the sfu and rfc2307 nss_info
+ plugins to protect against a crash if called before the idmap_ad
+ module has been initialized.
+ * Protect against crashes in get_dc_name() in the idmap_ad code
+ when we are working offline.
+ * BUG 4438, 4440: Fix bugs in "net sam provision".
+ * Initial implementation of new IdMap interface.
+ * Fix crash in pam_winbind caused by referencing a pointer after the
+ memory had been freed.
+ * Implement escaping function for ldap RDN values.
+
+
+o Peter Somogyi <SOMOGYI@de.ibm.com>
+ * Work on NFSv4 ACL VFS plugin.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Fix an integer overflow in the ndr library code used by PIDL.
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Implement support for IDL autogenerated code to
+ handle the MS-RPC parsing functions.
+
+
+o Don Watson <dwwatson@us.ibm.com>
+ * Fixes for 'net rpc vampire' and the guest account
+
+
+o Martin Zielinski <mz@seh.de>
+ * Printing fixes for Windows Vista clients.
+
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.24
+ Feb 5, 2007
+ ==============================
+
+
+Important issues addressed in 3.0.24 include:
+
+ o Fixes for the following security advisories:
+ - CVE-2007-0452 (Potential Denial of Service bug in smbd)
+ - CVE-2007-0453 (Buffer overrun in NSS host lookup Winbind
+ NSS library on Solaris)
+ - CVE-2007-0454 (Format string bug in afsacl.so VFS plugin)
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.23d
+---------------------
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * Fix for CVE-2007-0452 & CVE-2007-0454
+
+
+o Olivier Gay <ouah@ouah.org>
+ * Fix for CVE-2007-0453
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix for CVE-2007-0452
+
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.23d
+ Nov 14, 2006
+ ===============================
+
+This is the latest stable release of Samba. This is the version
+that production Samba servers should be running for all current
+bug-fixes. Please read the changes in this section and for the
+original 3.0.23 release regarding new features and difference
+in behavior from previous releases.
+
+Important issues addressed in 3.0.23d include:
+
+ o Stability fixes for winbindd
+ o Portability fixes on FreeBSD and Solaris operating systems.
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.23c
+---------------------
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * Changes to ntlm_auth to better support Firefox's NTLM
+ authentication.
+ * Make the "max usershares" parameter an advisory limit.
+ * BUG 4095: Cleanup bad substitution causing the username
+ to be translated to domain\user twice in spnego path.
+ * BUG 4097: Ensure all pdb_XXX calls are wrapped in
+ [un]become_root() pairs.
+ * Ensure we always return the canonicalized name
+ * Add in fixes to mangling dir code.
+ * Do not assume that gencache can always be opened for RW access.
+ Fall back to RO.
+ * Always initialize variables in winbindd request/response
+ structure.
+ * Fix libsmbclient bug with Konqueror and NetApp filers that
+ need a leading / in OpenAndX calls.
+ * Added showacls toggle in the smbclient code.
+ * Add a suffix to the pidfile's program name if this is a process
+ with a non-default configuration file name.
+ * Fix protection from invalid struct tm values.
+ * BUG 4187: Possible crash in signing on/off code.
+ * BUG 4214: Fix crash bug in find_forced_group().
+ * BUG 4224: Fix enforcement of the deadtime parameter.
+
+
+o Timur Bakeyev <timur@com.bat.ru>
+ * BUG 3856: Set the nss soname version on FreeBSD.
+ * BUG 4109: Fix bug causing smbd to turn off winbindd and
+ fail to disable the _NO_WINBIND environment.
+ * BUG 3868: Prevent --with-aio-support from trimming the
+ $LIBS variable in configure.in.
+
+
+o Dmitry Butskoy <dmitry@butskoy.name>
+ * BUG 4075: Allow smbd to use winbindd to lookup uids/gids
+ outside the idmap range if 'winbind trusted domains
+ only = yes'.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Fix primary group lookup failures. Use the Get_Pwnam_alloc()
+ call to ensure it finds the Unix user first.
+ * Only grant privs to Administrators if privileges are enabled
+ to avoid bogus error messages in the logs.
+
+
+o Alex Deiter <tiamat@komi.mts.ru>
+ * BUG 3524: Fix for quota support on Solaris.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Close socket when the CLDAP request has failed.
+ * Memory leak fixes in the libads/ldap.c code.
+ * Printer publishing fixes for "net ads".
+ * Fix error code returns in the CLDAP client code.
+ * Do not anonymously query for AD schema items in winbindd.
+ * Protect against storing null-sids in the winbind cache.
+ * Fallback to non-paging LDAP searches for anonymous bound
+ connections.
+ * More workarounds when nscd.
+ * Fix error code typoe in the GetDcName() netlogon call
+ (including two new error codes).
+ * Fix valgrind warnings in pam_winbind
+ * Add two missing refresh_sequence_number calls where they are
+ missing just before writing to the winbind cache tdb.
+ * Attempt to locate a valid domain controller before prompting
+ for credentials in "net ads".
+ * Set 35 second timeout in winbindd's netlogon code when sending
+ a GETDC request.
+ * Stop "net ads {user,group} delete" from doing funny things.
+ * Fix container handling for "net ads user" and "net ads group"
+ functions.
+ * Fix various memleaks and seg faults in "net ads {user,group}".
+
+
+o Udo Eberhardt <udo.eberhardt@thesycon.de>
+ * BUG 4100: Fix crash in the server spooler code by initializing
+ values for smb_io_notify_info_data_strings.
+
+
+o Olaf Flebbe <o.flebbe@science-computing.de>
+ * BUG 4133: pam_winbind.c compile fix on AIX 5.1.
+
+
+o David Hu <david.hu@hp.com>
+ * BUG 4212: Fix memleak in the default_ou_string handling.
+
+
+o Mikhail Kshevetskiy <kl@laska.dorms.spbu.ru>
+ * BUG 4229: Compile fix for systems without kerberos.
+
+
+o Volker Lendecke <vl@samba.org>
+ * NTLMSSP LanMan session key fixes.
+ * Various potential seg fault fixes.
+ * Extra logic in share access checks for bad smb.conf parameter
+ settings.
+ * Fixes to allow smbclient to connect to Vista RC1 workstations.
+ * Fix bad search filter in ldapsam when enumerating group
+ members.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Correctly handle the password expiration policy on Samba DCs.
+
+
+o Nils Nordman <nils.nordman@nordman.org>
+ * BUG 4085: Allow smbpasswd to change expired passwords on
+ remote servers.
+
+
+o Simo Sorce <idra@samba.org>
+ * Merge uid2sid and gid2sid async calls for SAMBA_3_0.
+ * Better fqdn handling when parsing the /etc/hosts file.
+ * Fix crash bug in pam_winbind.
+
+o Andrew Tridgell <tridge@samba.org>
+ * Fix string alignment problem in password change code.
+
+
+o Jim Wang
+ * BUG 4211: Logic error when enforcing "acl group control"
+ behavior.
+
+
+Release Notes for older release follow:
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.23c
+ Aug 30, 2006
+ ===============================
+
+We would like to thank the developers of the Saturn code analysis
+tool from Stanford University (http://glide.stanford.edu/saturn).
+This release includes several code fixes based on its reports.
+
+Common bugs fixed in 3.0.23c include:
+
+ o Authentication failures in pam_winbind when the AD domain
+ policy is set to not expire passwords.
+ o Authorization failures when using smb.conf options such
+ as "valid users" with the smbpasswd passdb backend.
+
+
+RID Algorithms & Passdb
+=======================
+
+Starting with the 3.0.23c release, the officially supported passdb
+backends (smbpasswd, tdbsam, and ldapsam) now operate identically
+with regards to the historical RID algorithm for unmapped users
+and groups (i.e. accounts not in the passdb or group mapping table).
+The resulting behavior is that all unmapped users are resolved
+to a SID in the S-1-22-1 domain and all unmapped groups resolve
+to a SID in the S-1-22-2 domain. Previously, when using the
+smbpasswd passdb, such users and groups would resolve to an
+algorithmic SID in the machine's own domain (S-1-5-XX-XX-XX).
+However, the smbpasswd backend still utilizes the RID algorithm
+when creating new user accounts or allocating a RID for a new
+group mapping entry.
+
+With the changes in the 3.0.23c release, it is now possible to
+resolve a uid/gid, name, or SID in any direction and always obtain
+a symmetric mapping. This is important so that values for smb.conf
+parameters such as "valid users" resolve to the same SIDs as those
+included in the local user's initial token.
+
+Most installations will notice no change. However, because
+an unmapped account's SID will now change even when using
+smbpasswd it is possible that any security descriptors on files
+previously copied from a Samba host to a Windows NTFS partition
+may now fail to give access. The workaround is to either manually
+map all affect groups (or add impacted users to the server's
+passdb) or to manually reset the file's ACL.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.23b
+---------------------
+
+commits
+-------
+o Michael Adam <ma@sernet.de>
+ * Fix incorrect logic in internal_resolve_name() caused by if
+ statement.
+
+
+o Jeremy Allison <jra@samba.org>
+ * Don't store a NULL SID in winbindd's offline cache.
+ * Ensure we store the offline password hash in the correct format.
+ * OS/2 fixes for large Extended Attributes data.
+ * Fix nmbd crashes caused by miscalculation in pushing
+ announcements.
+ * Handle times consistently across all client utils including
+ libsmbclient.
+ * Fix a file descriptor leak in nmbd sync DNS lookup code.
+ * Fix inconsistency found in checking for NULL in DLIST_REMOVE
+ macro.
+ * Pointer dereference fixes based on the Saturn analysis tool.
+ * Fix memory leak in the AD DC lookup code.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * RHEL4 and Fedora packaging updates.
+ * Remove RID algorithm support for unmapped users and groups
+ when using an smbpasswd backend.
+ * Extend the NT token for local users' with the S-1-22-2
+ SID for each supplementary group
+ * BUG 3969: Fix unsigned time comparison with expiration
+ policy from AD DC.
+ * Merge Guenther's fixes from the SuSE SLES10 tree to ensure
+ that winbindd talks to the correct DC when servicing PAM
+ authentication requests.
+ * Do not use the generic IP address sort routines for AD DCs
+ since the SRV lookup include a sorting algorithm based
+ on priority and weight.
+ * Fix our DNS SRV lookup code to deal with multi-homed hosts.
+ * More changes to ensure that the primary group SID for
+ a local user is based on the primary Unix group and not the
+ primaryGroupSID passdb attribute.
+ * Disable storing SIDs in the S-1-22-1 and S-1-22-2 domain
+ to the SID<->uid/gid cache.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Fix msdfs RPC client and server management RPCs.
+ * Align idmap_ad with the current idmap_methods interface.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Re-add support for "username level" when looking up the
+ matching Unix user for an smbpasswd entry.
+ * snprintf() fixes.
+
+
+o Simo Sorce <idra@samba.org>
+ * Let innetgr() work without binding its use to a
+ NIS domain to support netgroups in local files.
+
+
+o Ben Winslow <rain@bluecherry.net>
+ * Allow client smb signing to be turned off correctly.
+
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.23b
+ Aug 7, 2006
+ ===============================
+
+Common bugs fixed in 3.0.23b include:
+
+ o Ambiguity with unqualified names in smb.conf parameters
+ such as "force user" and "valid users".
+ o Errors in 'net ads join' caused by bad IP address in the list
+ of domain controllers.
+ o SMB signing errors in the client and server code.
+ o Domain join failures when using smbpasswd on a Samba PDC.
+
+
+Member servers, domain accounts, and smb.conf
+=============================================
+
+Since Samba 3.0.8, it has been recommended that all domain accounts
+listed in smb.conf on a member server be fully qualified with the
+domain name. This is now a requirement. All unqualified names are
+assumed to be local to the Unix host, either as part of the server's
+local passdb or in the local system list of accounts (e.g. /etc/passwd
+or /etc/group).
+
+The reason for this change is that smbd has transitioned from
+access checks based on string comparisons to token based
+authorization. All names are resolved to a SID and then verified
+against the logged on user's NT user token. Local names will
+resolve to a local SID, while qualified domain names will resolve
+to the appropriate domain SID.
+
+If the member server is not running winbindd at all, domain
+accounts will be implicitly mapped to local accounts and their
+tokens will be modified appropriately to reflect the local
+SID and group membership.
+
+For example, the following share will restrict access to the
+domain group "Linux Admins" and the local group srvadmin.
+
+[restricted]
+ path = /data
+ valid users = +"DOMAIN\Linux Admins" +srvadmin
+
+Note that to restrict the [homes] share on a member server to the
+owner of that directory, it is necessary to prefix the %S value
+to "valid users".
+
+[global]
+ security = {domain,ads}
+ workgroup = DOM
+ winbind separator = +
+[homes]
+ valid users = DOM+%S
+
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.23a
+---------------------
+
+commits
+-------
+o Michael Adams <ma@sernet.de>
+ * Fix memory leaks on error paths in 'net ads join'.
+
+
+o Jeremy Allison <jra@samba.org>
+ * BUG 3962: Fix memory leak when enumerating print jobs.
+ * Fix file access flags for the Linux CIFS fs client.
+ * Fix memory leaks in the smbclient DFS code.
+ * BUG 3967: Fix SMB signing client bug in trans calls.
+ * BUG 3985: Ensure in msdfs we check for our NetBIOS aliases.
+ * Added lookup_name_smbconf() to be called when looking up names
+ from smb.conf. Unqualified names are assumed to be local.
+ * BUG 4003: Fix SMB signing server error in NTcancel reply.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Fix a few "smbldap_open(): Cannot open when not root" bugs when
+ viewing or modifying local group membership.
+ * Make LsaLookupSids() reply include the full SID of unresolved
+ SIDs.
+ * BUG 3957: Prevent returning strange DC IP addresses by zeroing
+ memory in the SRV hostlist in case there is not an A record for
+ each SRV name.
+ * BUG 3964: normalize the case of usernames prior to getpwnam()
+ call in the smbpasswd backend.
+ * Cleanup the 'net ads help join' output and document createupn
+ and createcomputer options.
+ * Fix a regression in the ldapsam URI syntax. Allow multiple
+ LDAP URIs to be grouped by "".
+
+
+o William Charles <william@charles.name>
+ * BUG 3959: Remove rand() from SRV RR comparison to fix crashes
+ in qsort().
+
+
+o Guenther Deschner <gd@samba.org>
+ * Fix memory leaks in pam_winbind.
+ * Save the logon script path from the info3 in the PAM session
+ allowing other PAM modules to pick it up from there.
+
+
+o Volker Lendecke <vl@samba.org>
+ * BUG 3991: Fix problem with user tokens on standalone systems
+ configured to use a username map.
+ * Fix bug where qualified user or group names in smb.conf
+ were assumed to use the '\' character as the winbind separator.
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.23a
+ Jul 21, 2006
+ ===============================
+
+Common bugs fixed in 3.0.23a include:
+
+ o Failure to strip the domain name from groups when 'winbind
+ use default domain = yes'
+ o Failure in pam_winbind to correctly parse arguments.
+ o Bad token creation of local users on member servers not
+ running winbindd.
+ o Failure to add users or groups to ACLs using the Windows
+ object picker.
+ o Failure in file serving code when 'kernel oplocks = yes'.
+
+New features in 3.0.23a include:
+
+ o New "createupn" option to "net ads join"
+ o Rewritten Kerberos keytab generation when 'use kerberos
+ keytab = yes'
+
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.23
+--------------------
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Fix memory leaks in the POSIX locking for for the Linux CIFS fs
+ client.
+ * Fix memory leaks in the AD schema parsing code.
+ * Fixed bug in interaction with Linux kernel oplocks.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Rewrite the detection of the correct DES salting principal name
+ when joining an Active Directory Domain.
+ * Rewrite the keytab generation code based on existing SPN,
+ UPN, and sAMAccountName attributes in the AD machine object.
+ * Cleanup of dead code from idmap_ad.
+ * Fix Winbind 32bit/64bit portability issues.
+ * Fail 'net ads join' and disable the machine account if we cannot
+ set any SPNs for ourselves.
+ * Make sure to lower case all usernames before calling the create,
+ delete, or rename hooks.
+ * Preserve case for usernames in passdb
+ * Flush the getpwnam cache after renaming a user
+ * Add become/unbecome root block in _samr_delete_dom_user() when
+ trying to verify the account's existence.
+ * Changed 'net ads join' syntax for specifying an alternate
+ OU. New syntax is createcomputer=<ou path top to bottom>.
+ * Add createupn=[UPN] option to 'net ads join' for setting the
+ userPrincipalName attribute.
+ * Bug 3920: Restore winbind use default domain behavior for domain
+ groups. This break local users and 'winbind nested groups' on
+ domain members.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Don't clear the cache when starting winbindd in off line mode.
+ * Fix errno reporting in pam_winbind debug messages.
+ * BUG 3937: Fix segv in libnss_wins.so.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix memory leaks in the in error paths out of the CLDAP
+ request code.
+ * AIX portability fixes for DNS client code.
+ * BUG 3811, 3948: Fix alignment bug in on lsaquery.
+ * BUG 3949: Fixed authorization issue on domain member
+ servers not running winbindd.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Fixed a bug which caused resolve_ads() to spin forever if
+ one of the DCs isn't resolvable in DNS.
+
+
+o Simo Sorce <idra@samba.org>
+ * Debian packaging fixes.
+
+
+o Dietrich Streifert <dietrich.streifert@visionet.de>
+ * BUG 3916: Fix error parsing pam_winbind config arguments.
+
+
+Release Notes for older release follow:
+
+ --------------------------------------------------
+
+ ==============================
+ Release Notes for Samba 3.0.23
+ Jul 10, 2006
+ ==============================
+
+There has been a substantial amount of cleanup work done during
+this development cycle. We would like to thank both Coverity
+(http://www.coverity.com/) and Klocwork (http://www.klocwork.com/)
+for analyzing the Samba source code. As a result, this release
+includes fixes for over 400 defects. The coverage was approximately
+even with over 200 defects reported by each tool.
+
+Thanks very much to those people who spent time testing the
+release candidates and reported their findings. We would like to
+especially thank Thomas Bork <tombork@web.de> for his numerous
+reports. We believe that the final release is in much better shape
+in large part due to his efforts.
+
+New features in 3.0.23 include:
+
+ o Improved 'make test'
+ o New offline mode in winbindd.
+ o New Kerberos support for pam_winbind.so.
+ o New handling of unmapped users and groups.
+ o New non-root share management tools.
+ o Improved support for local and BUILTIN groups.
+ o Winbind IDMAP integration with RFC2307 schema objects supported
+ by Windows 2003 R2.
+ o Rewritten 'net ads join' to mimic Windows XP without requiring
+ administrative rights to join a domain.
+
+
+User and Group changes
+======================
+
+The user and group internal management routines have been
+rewritten to prevent overlaps of assigned Relative Identifiers
+(RIDs). In the past the has been a potential problem when either
+manually mapping Unix groups with the 'net groupmap' command or
+when migrating a Windows domain to a Samba domain using 'net rpc
+vampire'.
+
+Unmapped users are now assigned a SID in the S-1-22-1 domain and
+unmapped groups are assigned a SID in the S-1-22-2 domain.
+Previously they were assign a RID within the SAM on the Samba
+server. For a DC this would have been under the authority of the
+domain SID where as on a member server or standalone host, this
+would have been under the authority of the local SAM (hint: net
+getlocalsid).
+
+The result is that any unmapped users or groups on an upgraded
+Samba domain controller may be assigned a new SID. Because the
+SID rather than a name is stored in Windows security descriptors,
+this can cause a user to no longer have access to a resource for
+example if a file was copied from a Samba file server to a local
+NTFS partition. Any files stored on the Samba server itself will
+continue to be accessible because Unix stores the Unix gid and not
+the SID for authorization checks.
+
+A further example will help illustrate the change. Assume that a
+group named 'developers' exists with a Unix gid of 782 but this
+user does not exist in Samba's group mapping table. it would be
+perfectly normal for this group to be appear in an ACL editor.
+Prior to 3.0.23, the group SID might appear as
+S-1-5-21-647511796-4126122067-3123570092-2565. With 3.0.23, the
+group SID would be reported as S-1-22-2-782. Any security
+descriptors associated with files stored on an NTFS disk partition
+would not allow access based on the group permissions if the user
+was not a member of the
+S-1-5-21-647511796-4126122067-3123570092-2565 group. Because this
+group SID not reported in a user's token is S-1-22-2-782, Windows
+would fail the authorization check even though both SIDs in some
+respect referred to the same Unix group.
+
+The current workaround is to create a manual domain group mapping
+entry for the group 'developers' to point at the
+S-1-5-21-647511796-4126122067-3123570092-2565 SID.
+
+
+Passdb Changes
+==============
+
+The "passdb backend" parameter no long accepts multiple backends
+in a chaining configuration. Also be aware that the SQL and XML
+based passdb modules have been removed in this release. More
+information of external support for a SQL passdb module can be
+found at http://pdbsql.sourceforge.net/.
+
+
+Group Mapping Changes
+=====================
+
+The default mapping entries for groups such as "Domain Admins" are
+no longer created when using an smbpasswd file or a tdbsam passdb
+backend. This means that it is necessary to use 'net groupmap
+add' rather than 'net groupmap modify' to set these entries.
+This change has no effect on winbindd's IDmap functionality for
+domain groups.
+
+
+LDAP Changes
+============
+
+There has also been a minor update the Samba LDAP schema file. A
+substring matching rule has been added to the sambaSID attribute
+definition. For OpenLDAP servers, this will require the addition
+of 'index sambaSID sub' to the slapd.conf configuration file. It
+will be necessary to run slapindex after making this change. There
+has been no change to actual data storage schema.
+
+
+######################################################################
+Changes
+#######
+
+smb.conf changes
+----------------
+
+ Parameter Name Description Default
+ -------------- ----------- -------
+ acl group control Deprecated No
+ add port command New ""
+ change notify timeout Changed Scope
+ dmapi support New No
+ dos filemode Modified No
+ enable asu support Changed default No
+ enable core files New Yes
+ enable privileges Changed default Yes
+ enable rid algorithm Removed
+ fam change notify New Yes
+ hosts equiv Removed
+ host msdfs Changed default Yes
+ msdfs root Changed default Yes
+ open files database hash size New 10007
+ passdb expand explicit Changed default No
+ strict locking Changed default auto
+ usershare allow guests New No
+ usershare max shares New 0
+ usershare owner only New Yes
+ usershare path New ${lockdir}
+ usershare prefix allow list New ""
+ usershare prefix deny list New ""
+ usershare template share New ""
+ winbind enum users Changed default No
+ winbind enum groups Changed default No
+ winbind nested groups Changed default Yes
+ winbind offline logon New No
+ winbind refresh tickets New No
+ winbind max idle children Removed
+ wins partners Removed
+
+
+Changes since 3.0.22
+--------------------
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Fixes for various Klocwork defect reports.
+ * Cleanup pdb_get_XXX() methods and ensure that a failure
+ to allocate memory for a samu user structure is reported
+ as a failure to the calling function.
+ * Fix memleak in printing gencache contents.
+ * Fix warnings reported by gcc4 -O6 on 64-bit systems
+ * Fix naming conflicts with 'net usershare' structures and
+ Solaris header files.
+ * Fix memleaks on error paths from the ASN.1 parsing code.
+ * Add uid to share_mode_entry structure so we can report who
+ opened the file.
+ * Ensure we use sys_write in password chats so we're not
+ interrupted.
+ * Ensure all new rid allocation goes through the same pdb_ldap
+ interface.
+ * BUG 3308: Stop us returning duplicate mid replies on path
+ based set-EOF trans2 calls.
+ * Pass RAW-OPLOCK with kernel oplocks off.
+ * Fix bug in OS/2 Warp - it doesn't set the ff_last offset
+ correctly when doing info level 1 directory scans.
+ * Add Samba4 replacement for timegm() to work on Solaris.
+ * Remove extra add-byte in the trans2 UNIX_BASIC infolevel.
+ * BUG 3592: Ignore a file in the tar output from smbclient if the
+ read failed (e.g. due to ACCESS_DENIED). (Based on ideas from
+ Justin Best <justinb@pdxmission.org>).
+ * BUG 3668: Workaround issues in Windows server code with LARGE_READX.
+ * Push/Pull Kerberos principal and realm names to/from UTF-8.
+ * Fix incorrect boolean in assert to make POSIX lock tests
+ pass with CIFSFS.
+ * Don't ever set O_SYNC on open unless "strict sync = yes".
+ * Remove dead printing code.
+ * Allow configurable guest access to Samba's usershare functionality.
+ * BUG 3587: Make byte-range locking tdb self-cleaning.
+ * Ensure every exit error path in the session setup code calls
+ nt_status_squash().
+ * Use portable wrapper functions instead of seteuid directly in
+ winbindd.
+ * Make "change notify timeout" a per-share parameter.
+ * Fix regression in SAMBA_4_0's smbtorture DENY tests.
+ * Fix valgrind-spotted issue in BASE-DELETE test.
+ * Fix early termination condition in winbindd when trying to
+ connect to a remote DC.
+ * Instruct winbindd to ignore fd_set when select() returns -1.
+ * BUG 3779: Make nmbd udp sockets non-blocking to prevent problem
+ with select returning true but no data being available.
+ * Back port talloc_steal() fixes from SAMBA_4_0 (original fixes by
+ Andrew Tridgell).
+ * BUG 3467: Fix delete on close semantics needed by WinXP Media
+ Center Ed. for simultaneous recording and playback (thanks to
+ Jason Qian for the debugging assistance).
+ * BUG 3347: Save the Unix user token used to set the
+ delete-on-close flag.
+ * Fix parsing of SAMR_Q_CONNECT_ANON.
+ * Add in support for userinfo26 structure and re-enable
+ userinfo25
+ * Schannel server fixes. Fix the credentials chaining across
+ \netlogon pipe disconnects.
+ * Replace ubqix code in nmbd with an internal tdb.
+ * Fix struct timespec checks in configure.in.
+ * Add in server support for the NetSamLogonEx().
+ * Add support for LsaLookupSids2() and LsaLookupSids3().
+ * Add LsaLookupNames[2-4]().
+ * Add support for 'net usershare'.
+ * BUG 3522: Fix error code return on SMBmkdir(foo) when foo
+ already exists (thanks to Sandeep Tamhankar).
+ * BUG 3510: Fix 'net rpc join' against a server when
+ schannel is disabled.
+ * Get rid of poor errno mapping table. Bounce through NTSTATUS
+ instead.
+ * Check for SeMachineAccountPrivilege when deleting machine
+ accounts.
+ * Fix a logic bug with multiple oplock contention.
+ * Add the replacements for opendir/readdir etc from SAMBA_4_0.
+ Attempt to fix the broken directory handling in the *BSD.
+ * Allow run time tuning of the locking tdb hash size for
+ very busy servers.
+ * BUG 3642: Ensure we don't call FD_SET on read with
+ fd == -1.
+ * BUG 3569: Work around linear posix locking issue on AIX
+ which was causing high loads due to the tdb CLEAR_IF_FIRST
+ flag (based on work from William JoJo).
+ * Fix OS/2 directory delete bug found by kukks.
+ * Match the Windows 2003 NTLMSSP signature.
+ * Performance tuning work in core read & write file serving
+ paths.
+ * Change default to 'strict locking' to better reflect
+ real world clients.
+ * Fix error return on session setup. Ensure no data blob is
+ added if the logon call failed so that Windows clients
+ interpret the NT_STATUS code correctly.
+ * Teach Samba the difference between exclusive and batch
+ oplocks.
+ * BUG 3592: Ignore a file in a smbtar output if the first
+ read fails (inspired by Justin Best).
+ * BUG 3668: Workaround Windows bug with LARGE_READX where if
+ you ask for exactly 64k bytes it returns 0.
+ * BUG 3858: Ensure that all files are removed by a wildcard
+ delete when 'hide unreadable = yes'.
+ * Fix various issues raised by the Klocwork code analyzer.
+ * Fix nmbd WINS serving bug causing duplicate IPs in the *<1b>
+ query reply ("enhanced browsing = yes").
+ * Fix SMB signing failures in client tools.
+ * BUG 3909: Avoid EA lookups on MS-DFS links.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Work around abort() in the OpenLDAP client libs caused by a NULL
+ msg pointer.
+
+
+o Timur Bakeyev <timur@com.bat.ru>
+ * BUG 2961: Fix compile warnings for pam_smbpass.
+ * BUG 2746, 3763: Fix compile warnings in pam_winbind.
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * Fix 'smbcontrol shutdown' messages for nmbd and winbindd.
+ * Fix absolute symlinks in the installbin.sh script.
+
+
+o Max N. Boyarov <m.boyarov@sam-solutions.net>
+ * Fix crash bug in perfmon daemon example code.
+
+
+o Nicholas Brealey <nick@brealey.org>
+ * Compile fix for pam_winbind.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Fix 'make install' problem when building outside source/.
+ * Fix 'net ads join' when the workgroup is set incorrectly in
+ smb.conf.
+ * Re-add code to include the BUILTIN\Administrators SID when
+ winbindd is not running, but the user's token includes the
+ Domain Admin SID. Fixes access problem for managing Services.
+ * Only call the printer publishing calls if 'security = ads'.
+ * Normalize printing keys when deleting.
+ * Only store LANMAN passwords on a change if 'lanman auth = yes'.
+ * Look at the NT password (not lanman one) when determining if 'smbpasswd
+ -e' should probably for a password.
+ * Default eventlog tdbs to mode 0660 to allow easier access by
+ BUILTIN\Administrators.
+ * Remove extra call to create_user on member servers without winbindd.
+ * Replace the use of OpenLDAP's ldap_domain2hostlist() for locating
+ AD DC's with out own DNS SRV queries.
+ * Fix compile error on HP-UX reported by Ryan Novosielski.
+ * Rewrite 'net ads join' to share common code with 'net rpc join'
+ and behave more like a Windows XP client.
+ * Remove --with-ldapsam option from configure (only used for
+ backwards compatibility for 2.2 smb.conf files).
+ * Remove 'wins partners' and 'hosts equiv' smb.conf parameters.
+ * Remove rhosts authentication module.
+ * Reimplement 'net ads leave' to disable the machine account in the
+ domain rather than removing it.
+ * Rewrite of tdbsam file descriptor handling.
+ * Add server affinity support when selecting a remote
+ domain controller.
+ * Remove chaining of passdb modules.
+ * Generate a local users primary group SID based on his
+ or her primary Unix group rather than storing the attribute
+ in the passdb entry.
+ * Default primary group SID to 'Domain Users' if the real Unix
+ primary group maps to the S-1-22-2 domain.
+ * Refactor memory management in passdb user objects.
+ * RHEL and Fedora packaging fixes.
+ * Implement XcvDataPort() spooler call and supporting 'add
+ port command'.
+ * BUG 3534: Ignore lines in the username map file with no right
+ hand list.
+ * Add support for the experimental %(DomainSID) smb.conf
+ variable.
+ * Add support for parsing SIDs in smb.conf value lists.
+ * Fix vuid allocation in Kerberos SMBsesssetup reply.
+ * Ensure that local group membership is included in the
+ getgroups() NSS reply.
+ * Automatically create a BUILTIN\{Administrators,Users} if
+ winbindd is running.
+ * Automatically grant all privileges to members of the local
+ Administrators group.
+ * Protect against NULL cli_state* pointers in
+ cli_rpc_pipe_open().
+ * Add a SUBSTR matching rule the the Samba LDAP schema
+ file for the sambaSID attribute. This will allow for
+ Searching group mapping entries within a given domain
+ without reorganizing the directory namespace. Also
+ requires 'index sambaSID sub' in slapd.conf.
+ * Fix parsing of 'idmap uid/gid' values that broke when
+ the range included any whitespace.
+ * Support renaming local groups (protect against renaming
+ BUILTIN groups).
+ * Do not allow the root account to be deleted via MS-RPC.
+ * Fix RID allocation to skip over RIDs that resolve in our
+ own domain (work around upgraded users and groups).
+ * Store the name/ip address combination when we do a reverse
+ look up in case future forward lookups would fail.
+ Fixes cases where a DC name could not be resolved via
+ NetBIOS queries,
+ * Allow winbindd to run on standalone servers in order to
+ provide support for local groups.
+ * Deprecate 'acl group control' and replace it with added
+ functionality to 'dos filemode'.
+ * Ensure that all global memory is freed from pam_winbind
+ when unloading the shared library (based on work from Arkady
+ Glabek).
+ * Fix 32-bit/64-bit portability issues between PAM & NSS winbind
+ libraries and winbindd.
+ * Add defensive checks about create local accounts (i.e. calling
+ 'add user script') on domain member servers when winbindd
+ is running but having problems.
+ * Use system provided killproc() in RedHat init scripts for
+ more robust shutdown.
+ * Fix a crash in the printer publishing code when adding a
+ new printer via the APW.
+ * Fix broken compile of unsupported smbwrapper utility.
+ * BUG 3905: Fix smbd startup failure caused by a failure to
+ create an NT token for the guest account.
+ * BUG 3908: Fix RPC bind authentication failure which broke
+ user password changes.
+ * Ensure that "net ads join" reports failure correctly if
+ it cannot set the machine account password.
+
+
+o Mathias Dietz <MDIETZ@de.ibm.com>
+ * EPERM can be a valid return from getting an xattr.
+ Don't disable if we get it.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Fix memleaks in winbindd ads searches.
+ * Fix timestamp bug in pam_winbindd which forced users to change
+ passwords prematurely.
+ * Small debug message cleanups.
+ * Small fixes for 'net ads password'.
+ * BUG 3843: Allow to set passwords directly when creating users
+ via "net rpc user add"
+ * Add "rpc shell" to the usage text for the net command.
+ * Winbindd user aliases lookup fixes for large domains.
+ * Fix memleak in the CLDAP processing code.
+ * Enable AD features in winbindd's PAM support only when
+ communicating with an AD domain controller.
+ * Set our internal domains to "online" by default in winbindd.
+ * BUG 3800: Fill the password_policy method in winbindd for
+ winbindd_passdb.
+ * Fix memory leak when LDAP POSIX attribute queries fail.
+ * Honor the krb5 principal name change (of the new ads join code)
+ in the kerberized winbind pam_auth.
+ * Correctly handle the case when there is no configuration file
+ for pam_winbind.
+ * Adding "own-domain" switch to wbinfo which is handy from time
+ to time.
+ * BUG 3823: Fix in-forest domain trust enumeration in winbindd.
+ * Fix winbindd group enumeration for groups with no members.
+ * Correct "net ads changetrustpw" to use the sAMAccountName.
+ * Fix winbindd in ADS domains by removing code using the
+ UPN and rely upon the sAMAccountName.
+ * Fix a eDir related memory leak.
+ * Don't try to add the sn attribute twice to an LDAP
+ inetOrgPerson + samSamAccount entry.
+ * Fix winbind function table typo.
+ * Attempt to send the correct warning from pam_winbind when a password
+ change was attempted too early.
+ * Don't use cached credentials when changing passwords.
+ * Correctly disallow unauthorized access when logging on with the
+ kerberized pam_winbind and workstation restrictions are in effect.
+ * Save useless round trips in pam_winbind's auth calls.
+ * Make the existence of the /etc/security/pam_winbind.conf file
+ non-critical and fallback to only parse the argv options in that
+ case.
+ * Add winbind debug class to the main winbindd process.
+ * Be consistent between rpc and ads winbind backend: let the
+ ads backend query the samlogon cache first as well.
+ * Ignore BUILTIN groups when searching AD for group memberships.
+ * Fix KRB5KDC_ERR_POLICY -> NTSTATUS mapping.
+ * Cleanup credential caches from winbind's linked list.
+ * Fix 'winbindd -n' for new persistent caches.
+ * Fix searching by SID in winbindd.
+ * Add "smbcontrol winbind onlinestatus" for debugging purpose.
+ * Prefer to use the indexed objectCategory attribute (instead of
+ objectClass which is not indexed on AD) in LDAP queries.
+ * Free LDAP result in ads_get_attrname_by_oid().
+ * Prevent unnecessary storing of password in a WINBINDD_CCACHE_ENTRY.
+ * Prevent passwords of winbindd's list of credential caches from
+ being swapped to disk using mlock().
+ * BUG 3345: Expand the "winbind nss info" to also take "rfc2307" to
+ support the plain posix attributes LDAP schema from win2k3-r2
+ (based on patches from Howard Wilkinson and Bob Gautier).
+ * Add more robust code for fallback when lookup_usergroups() fails.
+ * Fix 'net rpc join' for winbindd running on a Samba DC.
+ * Add help text for new 'net rpc audit' utility.
+ * Add net ads search SID.
+ * samrQueryDomainInfo level 5 should return the domain name, not our
+ NetBIOS name when we are a DC.
+ * Add some more client rpc for the querydominfo calls (from samba4 idl).
+ * Process all the supported info levels in the samr_query_domain_info2
+ call.
+ * Wrap the samr_query_domain_info2() call around
+ samr_query_domain_info().
+ * Fix segv in smbctool.
+ * Honor the time_offset also when verifying Kerberos tickets.
+ * Prevent unnecessary longstanding LDAP connection to eDirectory.
+ * Fix segv in smbspool.
+ * BUG 1914: Allow to store 24 password history entries in ldapsam.
+ * Enhancements to various commands in rpcclient
+ * Don't force 'Administrator' to change an expired password on
+ logon.
+ * Add support for offline mode in winbindd.
+ * Provide support in pam_winbind for initializing a user's
+ ticket cache.
+ * Implement samr_chgpasswd_user3 server-side.
+ * Make pam_winbind more robust when detecting domain users.
+ * Add client side support for SAMR_GET_USRDOM_PWINFO.
+ * Re-enable strict checking on C++ reserved keywords since Heimdal
+ 0.7.2 has been released.
+ * Allow renaming of machine accounts in a Samba domain.
+ * BUG 3539: Let winbindd try to obtain the gecos field from
+ the msSFU30Gecos attribute when "winbind nss info = sfu" is
+ set.
+ * Correctly handle acb_info/acct_flags as uint32 not as uint16.
+ * Return the real ACB-flags in the SamLogon() reply.
+ * Some client side cleanup for the samr set security object
+ functions.
+ * Make sure we always reset the userAccountControl bits when
+ re-joining (net ads join) with an existing account.
+ * Document some more MSV1_0 bits and their behavior.
+ * Only set the last rebind timestamp when we did rebind
+ after a update LDAP operation to avoid the ldap replication
+ sleep period.
+ * Fix incorrect error checking in winbindd for domains with
+ no trusts.
+ * Consolidate the parsing of the Krb5 PAC and NET_USER_INFO3
+ structure.
+ * Work around crash bug in MIT krb5 libs when reading a
+ keytab file. Stop trying to decrypt a ticket as soon as
+ we have a clear indication that the ticket is bad.
+ * Merge DCERPC_FAULT constants from the SAMBA_4_0 tree.
+ * Adding client side samr querygroup infolevels 2 & 5.
+ * Make smbpasswd -a root work for eDirectory where there
+ is no "account" structural objectclass.
+ * Make sure we only send out a CLDAP request (net ads) to
+ an connected AD server.
+ * Fix a broken LDAP search filter when looking for groups.
+ * Add in-tree version of iniparser library from
+ http://ndevilla.free.fr/iniparser/ for use by pam_winbind
+ (rather than linking in loadparm.c). Settings are now stored
+ in /etc/security/pam_winbind.conf.
+ * Fix different extended_dn handling in adssearch.pl
+ (Thanks to Frederic Brin at Novell).
+ * Fix a memleak in winbindd's credentials cache.
+ * Protect against crashes in CLDAP request processing.
+ * Remove incomplete DfsEnum() info level to avoid an smbd crash.
+
+
+o Aleksey Fedoseev <fedoseev@ru.ibm.com>
+ * Fix parameter type for 'acl compatibility'.
+ * Fixes for msgtest torture tool.
+ * Fix crash bug in the file locking code.
+
+
+o Arek Glabek <aglabek@centeris.com>
+ * Fix parsing error on input parameters in eventlogadm.
+
+
+o Paul Green <paulg@samba.org>
+ * Properly rebuild time limit on systems with executable extensions.
+ * Fix build on platforms that do not support shared libs.
+ * Remove dead code in the auth_script module.
+
+
+o Bjoern Jacke <samba@j3e.de>.
+ * Fix DMAPI compile failures on AIX and True64.
+ * Fix AIX PIC suffix (use .o instead of .po).
+ * Fall back to less-preferred clocks until we find one that we
+ can use if clock_gmtime() is not available at run-time.
+ * Fix EA support on AIX platforms.
+ * Automatically disable file shares with no explicit path set.
+ * Remove the local hack to set the RO bit on directories in
+ user profiles when profile acls = yes. Rely on EAs instead.
+ * Compile fixes for Solaris LDAP client libs.
+ * Add DMAPI/XDSM support for AIX.
+ * Find JFS DMAPI libs on Linux when only they are available.
+
+
+o William Jojo <jojowil@hvcc.edu>
+ * Fixes for the winbind NSS library on AIX.
+ * Fix VFS builds on AIX platforms.
+ * Fixes for the AIX version of libnss_winbind.so
+
+
+o Leonid Kabanov <lkabanov@mail.ru>
+ * BUG 3711: Shell portability fixes for 'make test'.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fixes for various Klocwork defect reports.
+ * Fixes for various Coverity defect reports.
+ * BUG 3848: Fix WinXP join error in a Samba domain using ldapsam.
+ * Fix more potential seg-faults when something on our way to a
+ DC connection fails.
+ * Never fall back to using the IP address for a DC's name in RPC
+ connections.
+ * Implement recycle:subdir_mode.
+ * Activate RPC-AUTHCONTEXT in "make test".
+ * Portability fixes for 'make test'.
+ * Correctly set the group RID in init_sam_from_buffer.
+ * Fix missing prompt in smbclient.
+ * Return correct error code upon success from _net_srv_pwset().
+ * Fix Windows XP joins to a Samba domain.
+ * Fix 'valid users = +unixgroup' which was failing with smbpasswd
+ when mapped to a non-algorithmic rid.
+ * Fix regression which upper-cased machine names passed to the
+ 'add machine script'.
+ * Correct parsing error in parse_net.c for user's with no group
+ membership.
+ * Fix off by one error in client SPNEGO code and other klocwork
+ bug fixes.
+ * Memory leak fixes in 'net sam'.
+ * BUG 3720: Fix uninitialized error return variable.
+ * Default "passdb expand explicit" to no.
+ * BUG 3741: Re-enable algorithmic SID mapping in one critical place.
+ * Fix user NT token creation when utilizing a username map.
+ * More coverity fixes.
+ * Fix a VUID bug in 'security = share'.
+ * Correctly fill in the gid for local users.
+ * Fix some warnings on True64.
+ * Add special close handling for fake files.
+ * BUG 3788: Fix nss_winbind's getgrouplist() call on AIX.
+ * BUG 3435: Fix 'msdfs root = yes' in [homes].
+ * Instruct winbindd to find a trusted DC on its own when running on
+ a Samba DC.
+ * Fix segv in child winbindd processes caused by a failed tconX
+ to the DC.
+ * Dynamically compute the maximum password age based no the
+ last change time rather than reading the must change time
+ from the passdb record.
+ * Rewrite mechanisms for handling lookup_{name,sid} resolution.
+ * Assign unmapped users to the S-1-22-1 domain and unmapped
+ groups to the S-1-22-2 domain
+ * Disable algorithmic mapping for RIDs in tdbsam & ldapsam
+ * Remove sql passdb backends.
+ * Implement rpccli_samr_set_domain_info()
+ * Add initial support for 'net sam' command.
+ * BUG 2413: Remove anonymous connections in 'net rpc info'.
+ * Implement asynchronous support for trans2 calls.
+ * Make smbclient -L use RPC to list shares, fall back to RAP.
+ * Ensure that the global SAM SID is initialized before any
+ dependent routines are called.
+ * Enhance consistency checks on local configuration when joining
+ a domain.
+ * Fix a memleak in the server registry code for enumeration
+ shares.
+ * Fix an invalid munlock() call in winbindd's credentials cache.
+ * Fix compile warnings when passing NULL to snprintf().
+ * BUG 3915: Fall back to a pure unix user with S-1-22 SIDs in the
+ token in case anything weird is going on with the 'force user'.
+ * CVE-2006-3403: Fix minor memory exhaustion DoS in smbd.
+
+
+o Derrell Lipman <derrell@samba.org>
+ [libsmbclient]
+ * BUG 3814: Only set the DFS capability flag in client requests
+ if the share is a DFS root.
+ * Fix bug causing previous settings to be re-initialized
+ when parsing new configuration files.
+ * BUG 3446: Don't ignore the authentication domain when parsing
+ the SMB URI.
+ * Fix cli_setpathinfo() to actually do what it's supposed to.
+ * Fix libsmbclient to make correct use of the new "one connection
+ per server feature".
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * Numerous compiler warning fixes.
+
+
+o John E. Malmberg <wb8tyw@qsl.net>
+ * Make smbldap obey config tests.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Fixes for 'make test' on AIX.
+ * Ensure we do a wildcard search for SID's starting with the global SAM
+ sid, not an exact search (from John Janosik).
+ * Adapt smbclient fix to smbtree to enable long share names.
+ * Prevent machines and users with no home directory from
+ getting the previous entries home path when migrating via
+ 'net rpc vampire' (based on a patch from Richard Renard).
+ * Remove hard-coded LDIF names when dumping a migrated
+ domain's users and groups.
+ * BUG 1374: Can't join an OU with name that contains '#'.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Add more tests to 'make test'.
+ * Try to make timelimit.c more portable.
+ * Fix linking of smbmount tools with --enable-socket-wrapper.
+ * Pass 'target:samba3=yes' to samba4's smbtorture when running
+ samba3's make test.
+ * Miscellaneous fixes for 'make test'.
+ * Add improved support for 'make test' including making
+ use of smbtorture from SAMBA_4_0.
+ * Add --no-process-group to all server programs
+ (e.g. timelimit 20000 bin/nmbd -F -S --no-process-group).
+ * Add configure tests --with-selftest-prefix=/tmp/samba-test
+
+
+o Lars Müller <lmuelle@samba.org>
+ * Fix lock calls in the python tdb bindings.
+ * Add -k switch to tdbdump for accessing a single key.
+ * Debian packaging fixes.
+ * Add -t|--password-from-stdin option to pdbedit as we had
+ with Samba 2.2.
+ * Various minor fixes to install scripts used by 'make install'.
+
+
+o James Peach <jpeach@sgi.com>
+ * Ensure smbclient always prompts on standard output when in
+ interactive mode.
+ * BUG 3801, 3805: Fix MIPSPro compiler warnings on IRIX.
+ * Introduce command line options to set the remainder of the
+ parameters in dynconfig.c.
+ * Avoid pulling in -lpthreads caused by -lrt.
+ * Fix build failures on IRIX 6.4 due to DMAPI support.
+ * Isolate the slow CLOCK_REALTIME message in the profiling code.
+ * Correct comparison logic so that libunwind can be correctly detected.
+ * Implement a "stacktrace" smbcontrol option using libunwind's remote
+ stack tracing support (ia64 only).
+ * Use dynamic buffers in the IRIX nsswitch module to prevent truncation
+ of long group lists.
+ * New autoconf macro to test for sysconf variables.
+ * Change profiling data macros to use stack variables rather than
+ globals. This catches mismatched start/end calls and removes
+ the need for special nested profiling calls.
+ * Rewrite AC_LIBTESTFUNC so that it works like the callers
+ of it expect.
+ * Use clock_gettime for profiling timstamps if it is available. Use
+ the fastest clock available on uniprocessors.
+ * Preserve errno in fcntl lock wrappers.
+ * Initialize our saved uid and gid so that we can tell when we
+ created the profiling shmem segment and don't bogusly refuse to
+ look at it.
+ * Add a new option "enable core files" which can be used to disable
+ automatic core file dumping.
+ * Update our internal copy of popt to that distributed with the RPM
+ 4.2 source code.
+ * Add support for FAM for file change notification.
+ * Disable sendfile if the 'write cache;' has been enabled.
+ * Refactor capability interface from being IRIX-specific to
+ using only the POSIX interface.
+ * Consolidate core dumping code to aid in debugging.
+ * Add support for libunwind to generating a backtrace.
+ * BUG 3490: Don't test for ldap or krb5 libs if --without-ldap
+ and --without-ads are specified.
+ * Allow the user to set winbind nss timeouts in seconds on IRIX.
+ * Set the FILE_STATUS_OFFLINE bit by observing the events
+ a DMAPI-based HSM is interested in.
+
+
+o Tim Potter <tpot@samba.org>
+ * Build janitorial duties.
+ * BUG 3725: Put references to $PICFLAGS in quotes.
+
+
+o Aruna Prabakar <aruna.prabakar@hp.com>
+ * Show -W option in smbpasswd usage text.
+
+
+o ISHIKAWA Tomonori <toishika@fsi.co.jp>
+ * BUG 2715: Fix nmbd datagram comment buffer size for multibyte
+ character strings
+
+
+o Andreas Schwab
+ * Correct syntax error in aclocal.m4.
+
+
+o Simo Sorce <idra@samba.org>
+ * Pam modules install fix.
+ * Allow "net changesecretpw" to accept a password via stdin.
+ * Implement 'net setdomainsid' command.
+ * Ensure that sid -> group conversion are done as root.
+ * BUG 3413: Sanity check for existence of 'ldap admin
+ dn' before setting a password in secrets.tdb (based on
+ work by William Jojo).
+ * New revision of the snprintf replace code.
+ * Set the correct sid type when looking up a gid.
+
+
+o Todd Stecher <tstecher@isilon.com>
+ * Add TCP fallback for our implementation of the CHANGEPW
+ kpasswd calls.
+
+
+o Ronan Waide <waider@waider.ie>
+ * Add 'wbinfo -i' functionality to exercise winbindd's getpwnam()
+ functionality.
+
+
+o Shlomi Yaakobovich <Shlomi@exanet.com>
+ * Fix for machine password time_t overflow.
+
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.22
+ Mar 30, 2006
+ ==============================
+
+This is a security release of Samba. The Samba 3.0.21 release
+series (including the patch releases a through c) has been
+discovered to expose the clear text of the server's machine
+account credentials in the winbind log files when the log
+level is set to 5 or higher. This defect has been assigned
+the CVE number CAN-2006-1059.
+
+Summary
+=======
+
+The machine trust account password is the secret shared
+between a domain controller and a specific member server.
+Access to the member server machine credentials allows
+an attacker to impersonate the server in the domain and
+gain access to additional information regarding domain
+users and groups.
+
+The winbindd daemon included in Samba 3.0.21 and subsequent
+patch releases (3.0.21a-c) writes the clear text of server's
+machine credentials to its log file at level 5. The winbindd
+log files are world readable by default and often log files
+are requested on open mailing lists as tools used to debug
+server misconfigurations.
+
+This affects servers configured to use domain or ads security
+and possibly Samba domain controllers as well (if configured
+to use winbindd).
+
+=======
+
+ --------------------------------------------------
+
+ ===============================
+ Release Notes for Samba 3.0.21c
+ Feb 24, 2006
+ ===============================
+
+Common bugs fixed in 3.0.21c include:
+
+ o Access checks when deleting printer driver meta-data.
+ o Several non-default combinations schannel and SPNEGO support.
+ o Password changes with NT4 and Win2k pre-SP4 clients.
+ o High load issues on IRIX caused by a bug when interfacing
+ with kernel oplocks.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.21b
+---------------------
+
+commits
+-------
+o Michael Adam <ma@SerNet.DE>
+ * Add popt to the include path for examples/VFS.
+
+
+o Jeremy Allison <jra@samba.org>
+ * Fix bug in the USC2 macros on big-endian CPUs.
+ * Filter deleted oplocks from the output of smbstatus.
+ * Remove invalid test check_for_pipe().
+ * BUG 3515: Fix kernel oplock support on IRIX.
+ * BUG 3522: Fix return value for mkdir request when the directory
+ already exists.
+ * BUG 3526: Add missing FindNext info levels (diagnosed by Corinna
+ Vinschen).
+ * BUG 3330: Fix username parsing in Kerberos PAC (based on work
+ by Guenther).
+ * BUG 3512: Fix cause of "use spnego=no" and "server signing=auto"
+ resulting in a client disconnect after negprot.
+ * BUG 3510: Fix 'net join' against a server with client schannel
+ disabled.
+ * Fix negprot bug causing a 2k client with cached domain
+ credentials to refuse to connect to a standalone Samba host.
+ * Ensure that the correct error is checked when encountering a
+ socket error (fixes crashes in winbindd).
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Fix domain joins from NT4 clients and password changes.
+
+
+o Richard Bollinger <rabollinger@gmail.com>.
+ * Compile fix in pdbedit.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Break RHEL/Fedora packaging out to include a samba-docs rpm.
+ * Remove use of /var/cache/samba from RHEL/Fedora packaging.
+ * Fix bug in loadparm.c that caused builtin services to be also
+ listed as external services (e.g. Spooler, NETLOGON, etc..).
+ * Fix bug in the samr dispinfo enumeration code.
+ * Add earlier checks to deny deleting a printer driver meta-data.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Add Account Policy LDAP attributes for eDirectory schema.
+
+
+o William JoJo <jojowil@hvcc.edu>
+ * BUG 1870: Make nmblookup do a node status on all IP's when
+ requested.
+ * BUG 2353: Fix clitar -F processing.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix the build for --with-aio-support.
+ * Fix remote password changing if password must change is set.
+ * Fix rpcclient to obey the -W parameter.
+ * Fix segv in smbmount and the profiles tool.
+ * Fix typo in pdbedit help text (reported by Karolin Seeger).
+
+
+o Vladimir Lettiev
+ * Honour the $(DESTDIR) Makefile variable when installing
+ Python extensions.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * Compiler warning fixes.
+
+
+o Lars Müller <lmuelle@samba.org>
+ * Fix python build with older python versions.
+ * Update dhcp.conf files in Debian packaging
+ * SWAT welcome file updates
+ * Compiler warning fixes.
+ * Add .2 to the SONAME as version suffix if we link the nss
+ modules on linux.
+ * Add -t|--password-from-stdin option to pdbedit.
+
+
+o James Peach <jpeach@sgi.com>
+ * Continue not enabling valgrind on 64-bit Linux.
+
+
+o Tim Potter <tpot@samba.org>
+ * Remove unused #defines.
+
+
+o Simo Sorce <idra@samba.org>
+ * Debian packaging updates.
+
+
+o Qiao Yang <qyang@stbernard.com>
+ * Make sure to refresh the timestamp on entries in the failed
+ connection code in winbindd.
+
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.21b
+ Jan 30, 2006
+ ===============================
+
+Common bugs fixed in 3.0.21b include:
+
+ o Server crashes in smbd.
+ o Compile issues on 64-bit platforms.
+ o Crash bugs on big-endian systems.
+ o Packaging fixes for RHEL/Fedora, Solaris, & Debian.
+ o Over 30 bugzilla reports closed.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.21a
+---------------------
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Fix the SAMR cache across handles opens and closes.
+ * Re-add the talloc_describe_all() function for reporting pool
+ usage.
+ * Merge talloc license change from Samba 4.
+ * Fix 64-bit compile warnings reported by gcc.
+ * Add the share path into the sharemode db.
+ * Consistency fixes: Remove use of uint8_t -> uint8.
+ * BUG 3346: Fix crash bug in big-endian boxes by linearizing
+ structure when passing through the messaging API.
+ * BUG 3421: Fix segv in the Kerberos key tab code (Thanks to
+ Luke Deller).
+ * Force smbd to exit if the guest account internal setup fails.
+ * BUG 3419: vfs_full_audit fixes for multiple connections.
+ * Ensure SWAT lists running processes.
+ * Fix NTLMv2 interoperability bug between Samba servers.
+ * Oplock break logic fixes.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * BUG 3401: Fix crash bug caused by incorrect handling of weak
+ session keys. Based on original patch from Yau Lam Yiu.
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * BUG 3397: Add USER_INFO_9 for SMS 2003 support (ported from
+ Samba TNG code).
+
+
+o Stefan Burkei <stefan@burkei.de>
+ * BUG 3248: When doing auth_crap authentication use the client
+ given workstation name not our own.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Fixing net rpc registry enumerate from overwriting the open
+ subkey handle.
+ * BUG 3380: fix crash when changing printer drivers.
+ * BUG 3391: ensure we can lookup account policies for failed
+ logons.
+ * Adding query/set ops for security descriptors on services.
+ * BUG 3329: Solaris packaging fixes.
+ * Better formatting for smbstatus output (based on patch from
+ Adam Neilson).
+ * Hook the max connections spin box in the share properties
+ MMC plug-in dialog to the 'max connections' smb.conf parameter
+ and the 'modify share command' option.
+ * Work around building libnss_winbind.so on Solaris when
+ --enable-developer is specified.
+ * Add vendor patch level string to VERSION.
+ * Consolidate packaging for RHEL4 and Fedora based on initial
+ work by jht.
+
+
+o Albert Chin <@thewrittenword.com>
+ * BUG 3374: Build failures on True64.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Fill in samr_get_dom_pwinfo based on Samba4.
+ * Fill in the clientside TRUSTED_DOMAIN_INFO_EX query.
+ * Fixes for adssearch.pl example script.
+ * Prevent 'net rpc' from dumping clear text password at high log
+ levels unless built with DEBUG_PASSWORD.
+ * Fix 'net ads user add' with a Windows 2003 SP1 DC.
+ * Fix python build.
+ * Fix segfault in pdb_nds.c.
+ * Don't write null sid mappings into the winbindd_cache.tdb.
+ * Save sid_to_name lookup result in winbindd already after doing
+ a successful name_to_sid.
+ * BUG 3390: Fix segfault in "net rpc vampire|samdump".
+ * BUG 1524, 3205: Support changing expired passwords in
+ pam_winbindd.
+ * Fix netfileenum returning WERR_BUF_TOO_SMALL in rpcclient.
+ * BUG 3264: Allow idmap_ad to load as 'ad'. Cleanup the way
+ idmap modules are build and loaded, idmap_rid now will have
+ to be loaded without prefix, just "rid".
+ * Prevent cli_krb5_get_ticket of getting into an infinite loop.
+
+
+o Andrew Esh <Andrew_Esh@adaptec.com>
+ * BUG 1061: Fix nmbd to correctly the path to an lmhosts files
+ specified on the command line with -H.
+
+
+o SATOH Fumiyasu <fumiya@samba.gr.jp>
+ * End profile fixes.
+ * BUG 3348: Don't assume owning sticky bit directory means
+ write access allowed.
+ * Fix double free in on failure path in POSIX acl code.
+
+
+o Andriy Gapon <avg@icyb.net.ua>
+ * BUG 3458: Fix crash bug in smbd and winbindd caused by
+ accessing freed memory.
+
+
+o Björn Jacke <bj@sernet.de>
+ * Configure check for Tru64 EA functions (not yet implemented).
+ * Find Tru64 AIO lib in configure.
+ * Cut-n-paste fixes in configure.in.
+
+
+o John Janosik <jpjanosi@us.ibm.com>
+ * IBM Tivoli Directory Server schema updates.
+
+
+o Michael James <michael@james.st>
+ * sid2string fix in adssearch.pl.
+
+
+o William JoJo <jojowil@hvcc.edu>
+ * BUG 3340: Prevent automatic inclusion of AIO support on AIX.
+ * BUG 3389: Failures on AIX in linking smbd when the symbol
+ table for ld exceeds 65536 bytes.
+ * Add -W to smbpassword so that the ldap admin dn password does
+ not have to be specified on the command line.
+ * BUG 3408: Fix for external password change programs on AIX.
+ * BUG 1779: 64-bit compile fixes.
+
+
+o Martin Koeppe <mkoeppe@gmx.de>
+ * BUG 3287: Match SFU behavior for dev/inode numbers.
+
+
+o Volker Lendecke <vl@samba.org>
+ * BUG 3291: Fix valgrind error in client connection code.
+ * BUG 3292: Prevent smbclient from spinning if server terminates
+ connection.
+ * BUG 3293: Use SMBecho instead of chkpath to keep a smbclient
+ connection alive smbclient.
+ * Add lookupname to rpcclient query_user as a fallback, we now
+ accept both rid and username.
+ * Introduce yet another copy of the string_sub function:
+ talloc_string_sub use by AFS token code in winbindd.
+ * BUG 3351: pdb_mysql again overwrites password fields.
+ * BUG 3384: Fix segv in tdbtool.
+ * Use the same CFLAGS for generating the pch as we use to
+ actually compile.
+ * Correct typo when compiling the vfs_catia module.
+ * Fix automatic recreation of a new tdb sam file.
+
+
+o Derrell Lipman <derrell@samba.org>
+ [libsmbclient]
+ * Fix parsing of file times (w_time and m_time were reversed).
+ * Add additional libsmbclient test programs.
+ * BUG 3336: Load networks interfaces in libsmbcliebt after parsing
+ the configuration files.
+ * Avoid doing a NetBIOS name query for each server and workgroup
+ enumeration call.
+ * Do not open connection when only looking for cached connection.
+ * BUG 2651: Add option to log debug messages to stderr instead
+ of stdout.
+ * Added flag to not request authentication information.
+ * Enhancements to smbwrapper example code.
+ * Replace smbwrapper call to dlopen(/lib/libc...) with direct
+ use of RTLD_NEXT.
+
+
+o David May <mayd@cygnus.uwa.edu.au>
+ * BUG 3329: Shell scripting portability fixes on 'make test'.
+
+
+o Tony Mountifield <tony@softins.co.uk>
+ * BUG 3327: fix bad access to gencache.tdb after fork() in
+ smbmount.
+
+
+o Lars Müller <lmuelle@samba.org>
+ * BUG 3264: Support backwards compatible setups using
+ 'idmap backend = idmap_rid'.
+ * Add %w macro for the winbind separator.
+ * Convert net command to use stderr for error messages rather
+ than stdout.
+
+
+o James Peach <jpeach@sgi.com>
+ * Portability fixes in LDAP code. Don't use non-static array
+ initializers.
+ * Support the TCP_FASTACK socket option if it is available.
+ * Tell the MIPSPro compiler to push DEBUG calls out of line.
+
+
+o Makr Proehl <m.proehl@science-computing.de>
+ * BUG 1336: Print the server role when calling testparm in
+ non-verbose mode.
+
+
+o Simo Sorce <idra@samba.org>
+ * Crackcheck utility enhancement based on patch sent by
+ Tom Geissler.
+ * BUG 3405: Fix segv in vfs_recycle module on platforms wither
+ mode_t is not 32-bits.
+
+
+o John Terpstra <jht@samba.org>
+ * RHEL/Fedora spec file patches.
+
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.21a
+ Dec 30, 2005
+ ===============================
+
+Common bugs fixed in 3.0.21a include:
+
+ o Deadlocks when multiple users access an oplocked file
+ concurrently
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.21
+--------------------
+
+commits
+-------
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * RedHat 9 packaging Fixes.
+
+
+o Guenther Deschner <gd@samba.org>
+ * eDirectory schema syntax fixes.
+
+
+o Volker Lendecke <vl@samba.org>
+ * BUG 3349: Deadlock caused logic error in oplock code.
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.21
+ Dec 20, 2005
+ ==============================
+
+Common bugs fixed in 3.0.21 include:
+
+ o Missing groups in a user's token when logging in via Kerberos
+ o Incompatibilities with newer MS Windows hotfixes and
+ embedded OS platforms
+ o Portability and crash bugs.
+ o Performance issues in winbindd.
+
+New features introduced in Samba 3.0.21 include:
+
+ o Complete NTLMv2 support by consolidating authentication
+ mechanism used at the CIFS and RPC layers.
+ o The capability to manage Unix services using the Win32
+ Service Control API.
+ o The capability to view external Unix log files via the
+ Microsoft Event Viewer.
+ o New libmsrpc share library for application developers.
+ o Rewrite of CIFS oplock implementation.
+ o Performance Counter external daemon.
+ o Winbindd auto-detection query methods when communicating with
+ a domain controller.
+ o The ability to enumerate long share names in libsmbclient
+ applications.
+
+
+######################################################################
+Changes
+#######
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ dfree cache time New
+ dfree command Per share
+ eventlog list New
+ iprint server New
+ map read only New
+ passdb expand explicit New
+ rename user script New
+ reset on zero vc New
+ svcctl list Renamed from 'enable svcctl'
+
+
+
+Changes since 3.0.20b
+---------------------
+
+o Jeremy Allison <jra@samba.org>
+ * BUG 1828: Fixed SPNEGO issues with PocketPC clients.
+ * Added 'map readonly' parameter.
+ * BUG 3166: Fix crash in libsmbclient if the $HOME environment is
+ not defined.
+ * Maintain schannel client session keys in volatile
+ $(privatedir)/schannel_store.tdb.
+ * BUG 2769: Ensure we mangle filenames ending in a space
+ * Catch corner case of renaming a symlinked directory into
+ itself
+ * Ensure that smb.conf requests for hidden files are honored,
+ even when DOS attributes are stored in EA's
+ * Add new auth method "auth_script" for calling an external
+ program
+ * BUG 2152: Fix for mangled filenames when the client does
+ support long filenames
+ * Rewritten implementation of client and server DCE/RPC infrastructure
+ * BUG 3192: Adds a "dfree cache time" parameter.
+ * Fix acl evaluation bug found by Marc Cousin. Only evaluate
+ the S_IWGRP mask in the absence of a POSIX ACL.
+ * Remove use of 'long long' in libsmbclient code.
+ * Ensure the new canonicalize_servicename() in name/snum hash
+ is multi-byte safe.
+ * BUG 2922: Integration of FreeBSD AIO patches from Timur
+ Bakeyev.
+ * BUG 3216: Put directory opens into the share mode db so we
+ can treat them similarly to file opens (delete on close,
+ share mode violations etc.).
+ * Fix bug in name mangling code when case sensitivity is enabled.
+ * Remove external dependencies from the sharemodes library.
+ * BUG 3212: Ignore bogus OS/2 set EA values on trans2 calls.
+ * Don't misinterpret wild card characters in file names on disk
+ as they are actually valid characters.
+ * BUG 3223: Fix bug in account policy management when
+ account_pol.tdb settings have been migrating to an LDAP
+ backend.
+ * Allow the hash size of the tdb open (locking) database to be
+ set in local.h.
+ * Fix error code returns on client spoolss code.
+ * Remove unneeded strncpy use.
+ * Fix uninitialized variables warnings.
+ * Cleanup smbcacls security descriptor parsing and error codes.
+ * BUG 3224: Correctly use machine_account_name and client_name
+ when doing netlogon credential setup. Fixes winbindd running
+ on a Samba PDC.
+ * Backport Samba 4 time zone handling.
+ * Fix core dump if setmntent() returns NULL.
+ * Replace old crc32 code with one from the FreeBSD tree.
+ * Filter stored DOS attributes by SAMBA_ATTRIBUTES_MASK.
+ * Remove #define of close -> close_fn macro in libsmbclient.
+ * Return early if -1 returned from *BSD EA call (reported by
+ Timur).
+ * Name space cleanup by marking local functions static.
+ * Move samr enumeration cache from per handle basis to a shared
+ cache.
+ * BUG 3274: Fix invalid smbclient qpath_basic() queries against
+ OS/2 servers (based on patch from Guenter Kukkukk).
+ * Ensure default applies to new files (reported by Thomas
+ Neumann).
+ * BUG 3293: Use SMBecho to testing the server in client rather
+ than SMBchkpath.
+ * Merge talloc fixes from Samba 4 branch.
+ * Add support DCE/RPC cancel operation.
+ * Don't reset attrs to zero in EA get. Fixes 'hide dot files'
+ when using EA for DOS attributes.
+ * Fix bug in returning remote time (reported by Thomas Bork).
+ * No users or groups to return in BUILTIN domain.
+ * Removed separate "builtin" search enumeration.
+ * Added count_sam_aliases to return the correct alias count.
+ * Correctly handle the LDAP_UNWILLING_TO_PERFORM error from
+ eDirectory when accessing the universal password.
+ * Fix deadlock condition in share mode locking code.
+ * Fix logic bug in unix_mask_match().
+ * Fix memory leak in SMB client code found by Mikhail Kshevetskiy.
+
+
+
+o Rashid N. Achilov <shelton@granch.ru>
+ * Add better service description names to the svcctl code.
+
+
+o Timur Bakeyev <timur@com.bat.ru>
+ * BUG 3262: Improve FreeBSD DOS attribute error reporting.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Remove another ancient NTLMSSP implementation.
+ * Allow machine account logons work if the client gives the
+ appropriate flags.
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * Add POSIX statvfs() to VFS api.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Eventlog and ServiceControl support.
+ * BUG 1051: store the directory path so we can send the full
+ name in the unlink call from smbclient.
+ * Use reference count strategy for keeping the registry tdb
+ open.
+ * Convert internal registry objects to new hierarchical talloc
+ * Allow the root user a free pass for access checks in the
+ registry and service control checks.
+ * Sanity checks in the privilege code to prevent empty SID
+ entries
+ * Add basic infrastructure for 'make test' when the socket
+ wrapper library is configured at compile time
+ * Convert profiles utility to use the current regfio interface
+ for reading and writing user profiles
+ * Remove netsamlogon_cache interface
+ * Ensure that print jobs are removed even when the cancel
+ command is received before the print cache has been updated
+ * Fix linking problem on Solaris when including ACL support.
+ * Give root a free pass to open the eventlog tdb files.
+ * Fix segfault in addprinter due to mixing talloc() and
+ malloc()'d memory.
+ * fix invalid read reported by valgrind in the spoolss
+ backchannel connection.
+ * Remove use of 'long long' in perfcounter registry code.
+ * BUG 3201: make sure request structure is cleared prior to
+ sending the request to winbindd.
+ * Don't count open pipes in the num_files_open on a connection
+ (regression from Samba 2.2).
+ * Ensure servername hashing code normalizes the name.
+ * Fix checks for connect() in -lnsl[_s].
+ * Convert eventlog API to use NTSTATUS return codes rather
+ than WERROR.
+ * Fix segv in winbindd caused by an uninitialized variable
+ in winbindd_dual_getsidaliases().
+ * Allow winbindd to select the appropriate backend methods
+ based on the DC attributes and not the security parameter.
+ * Re-add the netsamlogon_cache tdb and ensure that user entries
+ are updated from the PAC data during Kerberos ticket
+ validation.
+ * Fix lockup when running 'wbinfo -t' on a Samba PDC caused
+ by mangling machine names in sub_set_smb_name().
+ * Add smbget to the list of tools built by default.
+ * Fix clearing of eventlog tdb files.
+ * Fix sequential reads in eventlog support.
+ * BUG 2718: Don't use qpathinfo_basic() call when remote server
+ is Win9x.
+ * Fix build issues with the Sun compiler.
+ * BUG 3156: Don't use find_service() when explicitly looking
+ for a printer.
+ * Fix nss_winbind_solaris.c build breakage on HP-UX.
+ * Initialize the local group description.
+ * Disable WINS and NetLogon services in the MMC services
+ plugin when the associated smb.conf features are not enabled.
+ * Add checks for invalid characters in new share names on the
+ srvsvc pipe.
+ * Fix SWAT installation issues with 'make install'.
+ * Always add the BUILTIN\Administrators SID to a Domain
+ Admins token.
+
+
+o Alex Deiter <tiamat@komi.mts.ru>
+ * BUG 3196: Patch to compile against the Sun LDAP client libs.
+ (not for AD support; just ldap support).
+
+
+o Guenther Deschner <gd@samba.org>
+ * Fixed compile problems and warnings with newer OpenLDAP
+ and OpenSSL libs
+ * Fix bug when enumerating trusted domains via 'wbinfo -m'
+ * Parse the MS Kerberos PAC to obtain the user group
+ membership during logon.
+ * Add support for SeRestorePrivilege to allow a process to
+ change the ownership of a file to any arbitrary account
+ * Fix password history storage when using Novell eDirectory for
+ ldapsam storage
+ * Backport Kerberos PAC parsing from Samba 4 branch in order to
+ correctly create the NT User Token when logging into a Samba
+ member server
+ * Add small helper function to return a PAC_LOGON_INFO.
+ * Use LDAP bitwise matching rule when searching for groups
+ in ADS.
+ * Avoid an infinite loop when retrying to connect in smbspool.
+ * Memory leak fixes in the Kerberos PAC parsing code.
+ * Improve NT_STATUS error messages returned from pam_winbind.
+ * Rename unknown samr group fields in samr structures with
+ the correct name.removed separate "builtin" search enumeration.
+ * Cleanup redundant StartTLS code.
+ * Allow StartTLS support when connecting to Windows 2003 by
+ setting 'ldap ssl = start_tls'.
+ * Support raw NTLMSSP session setups in smbspool.
+ * Add rpccli_samr_chgpasswd3().
+ * Add 'wbinfo --separator'.
+ * Uninitialized warnings fixes.
+ * Fix return value in client spooler code.
+ * Require forced migration of account policies.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Fix cifs to handle non-numeric uid and gid parameters.
+ * Merge trunk and SAMBA_3_0 mount.cifs code.
+ * Cleanup cifs cfs help message.
+
+
+o Paul Green <paulg@samba.org>
+ * Update to the latest config.guess and config.sub files.
+
+
+o Deryck Hodge <deryck@samba.org>
+ * Allow control of syslog facility and level in audit vfs modules.
+
+
+o S Murthy Kambhampaty <smk_va@yahoo.com>
+ * Patches for Fedora RPM specfile and init script
+
+
+o Krishna Ganugapati <krishnag@centeris.com>
+ * Use the subtree delete ldap control when running 'net ads
+ leave'.
+
+
+o Volker Lendecke <vl@samba.org>
+ * New oplock implementation.
+ * Add assert() call if winbindd cannot locate the domain SID in
+ secrets.tdb on startup
+ * Fix an annoying timeout in winbindd when nmbd is not running.
+ * Speed up loading smb.conf for large numbers of share
+ definitions by adding an internal hashing of names to snums.
+ Thanks to Michael Adam.
+ * Fix potential segv in rpcclient's lsarpc calls.
+ * Fix bugs in winbindd's use of rpccli_netlogon_getdcname().
+ * Fix alignment in getdc response.
+ * Allow pdbedit to set the domain for a user account.
+ * Fix fallback logic in rpc binds.
+ * Fix memleak in message handling code.
+ * Fix connection bug to port 445 and 139 after a successful
+ getdcname response.
+ * Add additional calls to initialize_krb5_error_table() for
+ Kerberos client code.
+ * Implement the possibility to have AFS users as SIDs in pts.
+ * Removed unused alternative_name code from winbindd.
+ * Protect against NULL alternative_name strings in winbindd.
+ * Define a default panic action with -DEVELOPER is defined.
+ * Add the capability to reset smbd connections on a zero VC id.
+ * Allow smb.conf variable expansion to be disabled in passdb
+ backends.
+ * Add lookupname to rpcclient query_user as a fallback.
+ * BUG 3292: Prevent smbclient from spinning when the server
+ disconnects.
+ * BUG 2191: Fix valgrind error in cli_session_setup_guest().
+ * Add samr_lookup_rids for the builtin domain.
+ * Memory allocation cleanups in passdb.
+ * Restrict samr_open_domain() to our domain only.
+ * Change local_lookup_sid() to local_lookup_rid() since it
+ is responsible for our domain only.
+ * Fix some uninitialized variable warnings.
+ * Fix winbind_lookup_name for the local domain,
+
+
+o Derrell Lipman <derrell@samba.org>
+ * Cleanup libmsrpc version numbers.
+ * BUG 3257, 3267, 3273: Plug memory and file descriptor leaks.
+ * Fix crash bug in libsmbclient.
+ * Add long share name support to libsmbclient when enumerating
+ shares.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * Removed compiler various warnings.
+
+
+o Alex Masterov <alex@infobit.ru>
+ * BUG 3218: Fix XATTR calls on *BSD systems.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Speed up string_to_sid by removing next_token calls and
+ unneeded strncmp() calls.
+ * Implement user rename for smbpasswd and LDAP backends.
+ * BUG 2961 (partial): Add rename support for user accounts to tdbsam
+ * BUG 3187: Fix time zone offset in logon hours restrictions.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Fix setting of quotas on linux kernel with the struct
+ if_dqblk interface
+ * Enable sysquota interface on Linux by default
+ * Use lp_socket_address() when binding to port 138/udp in nmbd.
+
+
+o Brian Moran <bmoran@centeris.com>
+ * Eventlog and ServiceControl support.
+ * Added eventlogadm tool for writing Eventlog records.
+ * Fix typo when creating Eventlog source DLL registry paths.
+ * Add simple script to tail syslog and write records to
+ eventlog tdb.
+ * Fix segv in eventlogadm when not event logs are listed in
+ smb.conf.
+
+
+o Lars Müller <lmuelle@samba.org>
+ * Only install smbsh manpage if smbwrapper has been successfully
+ built.
+ * Ensure setmntent() returns with != NULL in the disk_quotas()
+ Linux version.
+ * Add configure switch to disable libmsrpc build.
+ * Add a soname to libmsrpc.
+
+
+o Ricky Nance <ricky.nance@gmail.com>
+ * Updates for the mklogon perl scripts.
+
+
+o Chris Nicholls <skel@samba.org>
+ * New libmsrpc library (Google SoC Project).
+ * Fix libmsrpc build of on the Sun compiler by removing empty
+ structure declarations.
+
+
+o James Peach <jpeach@sgi.com>
+ * Fix parsing error for smb ports parameter.
+
+
+o Tim Potter <tpot@samba.org>
+ * BUG 3260: Fix DYNEXP flags on HPUX.
+
+
+o Marcin Porwit <mporwit@centeris.com>
+ * Eventlog and ServiceControl support.
+ * Added basic Performance Counter daemon which can feed data
+ for the Windows perfmon.exe tool.
+ * Fix directory permissions in the perfcounter daemon.
+ * Add the 'File' registry value for the eventlog keys.
+
+
+o Aruna Prabakar <aruna.prabakar@hp.com.
+ * Add checks to verify that the spooler is running on HP-UX when
+ reloading the printer name cache.
+
+
+o Joel Smith <joel.j.smith@novell.com>
+ * Add iPrint printing backend support.
+
+
+o Toomas Soome <Toomas.Soome@mls.ee>
+ * Implement host lookups in nss_winbind.so.1 on Solaris
+
+
+o Simo Sorce <idra@samba.org>
+ * Update Debian packaging.
+
+
+o John Terpstra <jht@samba.org>
+ * Add 'net idmap' usage help text.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Change license notice of standalone talloc library to LGPL.
+
+
+o Darren Tucker <dtucker@zip.com.au>
+ o Crash fix for snprintf() code.
+
+
+o Rainer Weikusat <rainer.weikusat@sncag.com>
+ * Fix function name typo in skeleton VFS code.
+
+
+
+Release Notes for older release follow:
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.20b
+ Oct 12, 2005
+ ===============================
+
+Common bugs fixed in 3.0.20b include:
+
+ o A crash bug in winbindd
+ o Reporting files as read-only instead of returning the
+ correct error code of "access denied"
+ o File system quota support defects
+
+
+######################################################################
+Changes
+#######
+
+
+Changes since 3.0.20a
+---------------------
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * BUG 3088: Fix error condition for files on a read-write share
+ which cannot be read due to permissions.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * BUG 3070: Fix crash bug in qfsinfo when retrieving fs quota
+ details.
+ * BUG 1473, 3090: Quota detection and compilation problems on
+ Solaris.
+
+
+o Marc Balmer <marc@msys.ch>
+ * Build fixes when builddir != srcdir
+
+
+o Alex Deiter <tiamat@komi.mts.ru>
+ * BUG 3145: Fix build issue regarding quota support on Solaris.
+
+
+o Volker Lendecke <vl@samba.org>
+ * BUG 3068: Fix for winbindd crashed by empty DC alternative
+ name.
+
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.20a
+ Sept 30, 2005
+ ===============================
+
+Common bugs fixed in 3.0.20a include:
+
+ o Stability problems with winbindd.
+ o Crash bugs caused by incompatibilities on 64-bit systems.
+ o Missing files from directory listings on AIX servers
+ o User Manager interoperability problems.
+ o Minor build difficulties on various platforms such as
+ Solaris and OpenBSD,
+
+
+Winbind, security = domain, and Active Directory
+================================================
+
+Recent security updates for Windows 2000 and Windows 2003 have
+changed the fashion in which user and group lists can be obtained
+from domain controllers. In short, the RPC mechanisms used by
+"security = domain" to retrieve users and groups is not compatible
+with these changes. The "security = ads" configuration is not
+affected by the Windows protocol changes.
+
+Samba developers are actively working to correct this problem in
+the 3.0.21 release. In the meantime, Administrators who are unable
+to migrate to "security = ads" and must continue using "security =
+domain", can define credentials to be used by winbindd for account
+enumeration by executing the following command as root.
+
+ wbinfo --set-auth-user='DOMAIN\username%password'
+
+
+
+######################################################################
+Changes
+#######
+
+
+Changes since 3.0.20
+--------------------
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * BUG 3065: Fix for legacy clients retrieving a listing of
+ an empty directory.
+ * Added external library for accessing Samba's share mode
+ database.
+ * Fix winbindd credentials chain which caused logon failures
+ after attempting to authenticate an unknown user.
+ * Fix recursive looping bug in winbindd.
+ * Fix build errors on 64-bit systems.
+ * Posix ACL memory leak and crash bug fixes.
+ * BUG 3044: Ensure OPEN-EXEC is honored as read-only.
+ * BUG 3060: Ensure SMBcreate truncates the file if it exists.
+ * Hide dot files and directory logic fixes.
+ * Correct display of open file modes by smbstatus.
+ * BUG 3010: Fix missing files bug on AIX systems.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Allow the root user to automatically pass se_access_checks()
+ in the registry and service control server code.
+ * Ensure that winbindd uses the correct name in the net_auth2()
+ request when running on a Samba PDC.
+ * Fix linking problem with tdb utilities.
+ * BUG 3080: Fix regression in 'net rpc shutdown' command.
+ * Fix segv in 'net rpc' when the pipe open fails.
+ * Fix upload bug when installing 64-bit Windows printer drivers.
+ * Fix regression in the smburi syntax used by smbspool.
+ * Fix sorting of subkey hash records in registry files.
+ * Correct REG_CREATE_KEY_EX parsing error.
+ * Interoperability issues with usrmgr.exe and Samba groups.
+ * Use the display names and not the Unix names when enumerating
+ groups in the ldapsam passdb backend.
+ * Ensure that Windows domain user names are converted to lower case.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Prevent BUILTIN sids returned in the user's token from
+ a Windows DC from being applied to any local group mappings
+ on the Samba host.
+ * Plug memory leaks in the Kerberos keytab code.
+ * Ensure BUILTIN groups are returned from winbindd's idmap_rid
+ backend when 'winbind nested groups' is enabled.
+ * Fix crash bug in winbindd caused by 64-bit build issues.
+ * Improve debug messages in smbspool.
+ * Give better error-message when "NDS Universal Password" change fails.
+ * Fix password history error in the eDirectory schema file.
+ * Ensure that Windows domain group names are converted to lower case.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Allow disabling mandatory byte range lock mount flag, and fix
+ corresponding entry in mtab.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix race condition in the NTcreate&X open code when the
+ disposition is NTCREATEX_DISP_CREATE.
+ * Correct logic error when checking the pid for pending print
+ change notify messages.
+ * Ensure that winbindd child process complete startup even when
+ the parent is receiving authentication requests.
+ * Return the full NTSTATUS code to ntlm_auth and pam_winbindd
+ when authentication fails.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * Compile warning fixes.
+
+
+o Uli Meis <a.sporto@gmail.com>
+ * Patches for pdb_*sql.c
+
+
+o Luke Mewburn <lukem@NetBSD.org>
+ * Autoconf syntax fixes.
+
+
+o James Peach <jpeach@sgi.com>
+ * Correct problem with creating a core file in Linux.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Quota fixes in smbd.
+
+
+o Peter Rindfuss <rindfuss@wz-berlin.de>
+ * Patches for pdb_*sql.c
+
+
+o Jiri Sasek <Jiri.Sasek@Sun.COM>
+ * Solaris toolchain patches for autoconf scripts.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Fix for tdb clear-if-first race condition.
+
+
+o Leo Weppelman <leo@wau.mis.ah.nl>
+ * BUG 3104: Don't allow time updates to files on read-only shares.
+
+
+o Steve Williams <steve@celineandsteve.com>
+ * BUG 3052: Fix compile issues on OpenBSD.
+
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.20
+ Aug 19, 2005
+ ==============================
+
+Additional features introduced in Samba 3.0.20 include:
+
+ o Support for several new Win32 rpc pipes.
+ o Improved support for OS/2 clients.
+ o New 'net rpc service' tool for managing Win32 services.
+ o Capability to set the owner on new files and directory
+ based on the parent's ownership.
+ o Experimental, asynchronous IO file serving support.
+ o Completed Support for Microsoft Print Migrator.
+ o New Winbind IDmap plugin (ad) for retrieving uid and gid
+ from AD servers which maintain the SFU user and group
+ attributes.
+ o Rewritten support for POSIX pathnames when utilizing
+ the Linux CIFS fs client.
+ o New asynchronous winbindd.
+ o Support for Microsoft Print Migrator.
+ o New Windows NT registry file I/O library.
+ o New user right (SeTakeOwnershipPrivilege) added.
+ o New "net share migrate" options.
+
+
+What happened to 3.0.15 - 3.0.19?
+==================================
+
+After some discussion it was deemed that the amount of changes
+going into the next Samba 3.0 release needed something to catch
+people's attention. Skipping several releases was chosen as
+the best solution with the least overhead. There will be no
+3.0.15 - 3.0.19 ever released. The next production release
+following 3.0.20 should be 3.0.21.
+
+The original announcement about the version number change can
+be found in the samba mailing list archives:
+
+http://marc.theaimsgroup.com/?l=samba&m=111721010206997&w=2
+
+
+Asynchronous Winbind Implementation
+===================================
+
+Winbindd has been completely rewritten in this release to support
+an almost completely non-blocking, asynchronous request/reply
+model. This means that winbindd will scale much better in
+large domain environments and on high latency networks. Neither
+the client interface nor the command line tools (i.e. wbinfo) have
+changed in their calling conventions or syntax. However, due to
+internal structure changes, it is required (more so than normal)
+that you install the nss_winbind.so library included in this release.
+
+
+Support for Microsoft Print Migrator
+====================================
+
+Samba 3.0.20 includes full support for migrating printers from
+Windows servers or other Samba servers via the Microsoft Print
+Migrator tool. Restoring printers requires a working "add printer
+command" defined in smb.conf. Current support also allows
+administrators to create a master list of printer drivers which
+can be restored in bulk on new (or existing) Samba installations.
+
+
+Asynchronous IO Support
+=======================
+
+Experimental support for async IO has been added to smbd for
+certain platforms. To enable this new feature, Samba must be
+compiled to include the --with-aio-support configure option.
+In addition, the "aio read size" and "aio write size" to non-zero
+values. See the smb.conf(5) man page for more details on these
+settings.
+
+
+######################################################################
+Changes
+#######
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ acl check permissions New
+ acl group control New
+ acl map full control New
+ aio read size New
+ aio write size New
+ enable asu support New
+ inherit owner New
+ ldap filter Removed
+ map to guest Modified (new value added)
+ max stat cache size New
+ min password length Removed
+ printer admin Deprecated
+ username map script New
+ winbind enable local accounts Removed
+ winbindd nss info New
+
+
+Changes since 3.0.14a
+---------------------
+
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * BUG 2533: Fix incorrect directory listings for OS/2 clients.
+ * Ensure the old SMB search calls always ask mask_match() to
+ translate patterns like ????????.???.
+ * Split out the check_path_syntax() into a findfirst, findnext,
+ & wildcard versions.
+ * Fix checks for matching groups in an file ACL against the
+ user's primary and supplementary group list.
+ * BUG 2541: Ensure we recognize LANMAN2.1 as OS/2 and select
+ LANMAN2 protocol, ensure the EA size is always correctly
+ set on a query for a file with no EA's.
+ * BUG 2551: Look at the incoming flags2 flag
+ FLAGS2_LONG_PATH_COMPONENTS determines if a reply is
+ uppercased on a SMBsearch request, not the protocol level.
+ * Added "volume" command to smbclient that prints out the
+ volume name and serial number.
+ * Added "fix for broken SMB_INFO_VOLUME level used by OS/2.
+ * Add support for OS/2 Extended Attributes.
+ * Correctly check OpenX open modes.
+ * Ensure allocation size is correctly returned for OpenX.
+ * Only set allocation on create/truncate for nttrans.
+ * Fix oplock bug in trans2open() code.
+ * Remove unix_ERR_XXX global nastiness.
+ * Only do the strange DOS error for openX, not trans2open.
+ * Ensure SMBopen replies includes the share modes as well as
+ open modes.
+ * BUG 2581: Add size limit (in kb) to stat cache.
+ * Fix bug in the trans2 secondary processing.
+ * BUG 2601: Enforce DOS_OPEN_EXEC to mean read-only.
+ * Add an SMB counter per connection struct for gathering
+ profiling data.
+ * BUG 2605: Ensure smbclient doesn't perform commands if
+ the "chdir" fails in a scripted set.
+ * Ensure a 'forced group' is added to the list of effective
+ gids when processing ACLs.
+ * Refactor rpc_bind structures for better future work.
+ * BUG 2942: Add missing value in debug message.
+ * BUG 2946: Fix regressions in str[n]cmp_w) functions found
+ by 'mangling method = hash'.
+ * Fix memory leaks in the msdfs trans2 server code.
+ * Convert msdfs server to be talloc'd based.
+ * Fix up stackable vfs interface.
+ * Fix rpc fault when encountering an unknown rpc_bind auth
+ type.
+ * BUG 2954: More AIX 5.1 AIO compile fixes.
+ * Fix valgrind bug in interaction with new aio buffer (found
+ by Volker).
+ * BUG 2878: Fix Norton commander not running on OS/2 clients.
+ * Cleanup SAMR user info structure naming.
+ * BUG 2889: Fix directly listings from OS/2 clients.
+ * Added "acl group control" parameter.
+ * Add debug warning if AddPrinterEx() is called without having
+ an 'add printer command' defined.
+ * Add better log messages when modifying ldap entries.
+ * BUG 2829: Fix strXX_w() functions on non-x86 platforms when
+ when string is unaligned.
+ * BUG 2918: Fix SMB chaining by ensuring that deferred open
+ message buffer is nor reused.
+ * Add support for client setting capabilities to select posix
+ pathnames on the wire.
+ * Stop using C++ reserved words so that Samba can be compiled
+ using g++. Also allows VFS modules in C++.
+ * More fixes to allow better large directory scaling.
+ * BUG 2827: Ensure we call the vfs connection hook before
+ doing a vfs stat. Allows database vfs backends to initialize
+ with a working connection.
+ * BUG 2826: Ensure the correct return value for symlink and
+ readlink in the VFS.
+ * Merge handling of ASN.1 objects bigger than 64k from Samba 4.
+ * Added AIO support to smbd.
+ * Add "acl map full control", true by default, to allow people
+ to change mapping of rwx to full control or not.
+ * Transition smbd to use NTcreate&X for internal file opens.
+ * Add checks against the current effective group id (e.g. force
+ user) when testing write permissions one ACLs.
+ * Fix FindFirst/FindNext server code when parsing directories
+ on old IRIX XFS file systems (thanks to Cale Fairchild
+ for the debugging help).
+ * BUG 2644: Test for special files to be ignored was reversed.
+ * Ensure yield_connection() is called on all appropriate error
+ conditions.
+ * Fix EDEADLCK problem with deferred open calls.
+ * BUG 2622: Remove DPTR_MASK as it makes no sense.
+ * Fix the write cache based on some VERY good detective work
+ from Ingo Kilian.
+ * BUG 2346: Fix read-only excel file bugs.
+ * Don't wrap the setfsinfo call in HAVE_QUOTA as they'll just
+ return ENOSYS if not implemented.
+ * Add new CAP for POSIX pathnames.
+ * BUG 2703: Add NULL guard for disp_fields[0].
+ * BUG 2681: With "strict allocate = yes" we now zero fill when
+ a file is extended. Should catch disk full errors on write
+ from MS-Office.
+ * Add "acl check permissions" to turn on/off the new
+ behavior of checking for write access in a directory
+ before delete.
+ * Refactor printing interface to take offset into job.
+ * Allow mapping of POSIX ACLs to NT perms to differentiate
+ between directories and files.
+ * Added encrypt/decrypt function for LSA secrets and trusted
+ domain passwords on the wire.
+ * BUG 2729: Resume keys are *mandatory* for a search when
+ listing a W2K and above server from a FATxx filesystem only.
+ * BUG 2735: Ensure that smbd mangles control characters in file
+ and directory names.
+ * Refactor small pieces of socket handling code (in conjunction
+ with Derrell).
+ * BUG 2698: Fix infinite listing loop in smbclient caused by
+ an invalid character set conversion.
+ * Add client code that will abort a directory listing if we
+ see the same name twice between packets.
+ * Performance improvements in trans2 qfilepathinfo code by
+ removing unnecessary memset() calls.
+ * Rewrite the RPC bind parsing functions to follow the
+ spec; fixes bug with 64-bit Windows XP and OS X 10.4.
+ * BUG 2774: Set sparse flag if needed when returning
+ file attributes.
+ * Fix errors listing directories from Windows NT clients
+ which caused "." and ".." to show up in explorer.exe.
+ * Merge of error code fixes from SAMBA_4_0 branch.
+ * BUG 2801: Fix regression in the "delete veto files" option.
+ * Fix based on work from Shlomi Yaakobovich to catch loops
+ in corrupted tdb files.
+ * Allow someone with SeTakeOwnershipPrivilege to chown the
+ user of a file to herself.
+ * Fix minor compiler warnings in printing/printing.c.
+ * Merge new DOS error code from SAMBA_4.
+ * Fix issue when non-English characters in filenames and
+ directories.
+ * Fix bogus error message in smbstatus about unknown share modes.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Support raw NTLMSSP authentication for Windows Vista
+ clients.
+ * Fix parallel NTLMSSP processing by removing global state.
+ * BUG 2684: Add per service hosts allow/deny checks for
+ printers when connecting via MS-RPC.
+ * BUG 2391: Fix segv caused by free a static pointer returned
+ from getpwnam().
+ * Support Kerberos authentication in smbd when using a keytab
+ and participating in a non-Microsoft Kerberos realm.
+
+
+o Timur Bakeyev <timur@com.bat.ru>
+ * BUG 2546: Add support for FreeBSD EA API
+ * Fix detection of FreeBSD 7.x platforms in autoconf checks.
+ * BUG 2908: Fix string length logic error in msdfs code.
+ * BUG 2909: Fix typo that caused smbd to call the wrong
+ aio_fsync function.
+
+
+o Ed Boraas <ed.boraas@concordia.ab.ca>.
+ * Added Linux per-socket TCP settings.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Added support for \svcctl pipe rpcs.
+ * Added 'net rpc service' subcommand for managing Win32
+ services.
+ * Refactoring work on the rpc [un]marshalling layer and
+ structures.
+ * Verify privilege name in 'net rpc rights privileges' in
+ order to provide better error messages.
+ * Cleanup rpc structures in rpc_spoolss.h.
+ * Cleanups and fixes for the \winreg server code.
+ * Cleanup of rpc structures used by LsaEnumerateTrustedDomains.
+ * Fix bugs in client spoolss code after refactoring work.
+ * Fix Valgrind warnings of invalid reads in the spoolss
+ server code.
+ * Fixed a segv when enumerating services on a Samba host.
+ * Fix segv in the service control server code.
+ * Fix crashes in client spoolss calls caused by not checking
+ for a valid pointer from the caller.
+ * Fix regression in DeleteDriver() server routines.
+ * Fix dup_a_regval() when size is 0.
+ * Fix usrmgr.exe crash when viewing user properties at
+ debuglevel 10.
+ * Do not enumerate any privileges when 'enable privileges = no'
+ and log a message if a client tries.
+ * BUG 2872: Fix cut-n-paste error when checking pointer value
+ in ntlmssp_set_workstation().
+ * Fix upgrade path from earlier nt*tdb files.
+ * Removed print handle object cache.
+ * BUG 2853: Don't strip out characters like '$' from printer
+ names when substituting for the lpq command.
+ * BUG 2557: Gracefully fail on unsupported SetPrinter() levels.
+ * Fix build issues on x86_64-linux systems caused by valgrind
+ headers. Thanks to Bent Vangli to the suggestions.
+ * Refactor spoolss client calls.
+ * Adding 'username map script'.
+ * Disable schannel on the LSA and SAMR pipes in winbindd client
+ code to deal with Windows 2003 SP1 and Windows 2000 SP4 SR1.
+ * Cleanup of winreg API functions.
+ * Add server stubs for RegSetKeySec() and RegGetKeySec().
+ * Map generic bits to specific bits in reg_open_entry()
+ requests.
+ * Add write support to registry tdb and printing backends.
+ * Use tdb lookups rather than hard-coding certain registry
+ value names and data.
+ * BUG 2808: don't try to install man pages if they are not
+ present.
+ * Fix initialized variables reported by valgrind.
+ * Normalize key lookups in ntprinters.tdb.
+ * Mark "enumports command" as deprecated.
+ * Add missing class file for python share command example.
+ * Fix smbclient build issue on Solaris.
+ * BUG 2626: ensure that the calling_name is set to something
+ after parsing smb.conf (if not set via -n).
+ * Use "add machine script" when creating a user (ACB_NORMAL)
+ who has a name ending in '$' (e.g. usrmgr.exe creating
+ domain trust accounts).
+ * Add 'rid' synonym for idmap_rid IDMap module.
+ * Ensure that we set full access on the handle returned
+ from _samr_create_dom_{alias,group}() so that future
+ set_{alias,group}() commands succeed.
+ * Fix bug when looking for internal domains in winbindd
+ (caused winbindd_getgrgid() for local groups to fail).
+ * Fix query and set alias info calls (level 1 from the MMC
+ manage computer plug-in.
+ * Remove bogus log messages about unknown specversions.
+ * BUG 2680: copy files from an MS-DFS win2k root share
+ * BUG 2688: re-implement support for the -P (--port) option
+ * Support connecting to an 'msdfs proxy' share on a Samba
+ server.
+ * Strip the directory path from cups command line printing
+ defaults.
+ * Fix bug that prevented smbclient from creating directories
+ on non-dfs paths.
+ * Deprecate the "printer admin" parameter in favor of the
+ SePrintOperatorPrivilege.
+ * Add the capability to read and write WinNT regf registry
+ files.
+ * Implement access checks for RegOpenXXX() server calls.
+ * Extend registry client rpc calls.
+ * Add "net rpc registry" set of commands.
+ * Remove testprns tool.
+ * Ensure that printer ACLs use the specific bits as well as
+ the generic bits. Upgrade existing ntprinters.tdb SECDESC
+ records.
+ * Add server support for RegSaveKey() for dumping registry
+ trees to a regf file.
+ * Add "enable asu support" smb.conf parameter.
+ * Merge various small file changes from trunk.
+ * Remove "winbind enable local accounts" support.
+ * Remove "ldap filter" smb.conf option.
+ * Remove editreg utility (needs to be rewritten using regfio.c).
+ * Fix build failure when running 'make torture' without first
+ running 'make all' first.
+ * BUG 1261: Remove unusable libbiconv from iconv detection
+ in configure.
+ * Add new option for "map to guest". "Bad Uid" re-enables the
+ Samba 2.2 behavior of mapping authenticated users to the
+ guest account if there does not exist a valid Unix account
+ for the Windows domain user (based on patch from
+ aruna.prabakar@hp.com).
+ * Fix a couple of regressions after introduction of new winbindd.
+ * Fix smbpasswd user password change (still worked by bad error
+ messages) due to trying to strdup a NULL pointer.
+ * Implement default security descriptors for the
+ OpenService[Manager]() calls and check requested access mask
+ at connect time.
+ * Include access checks on handle mask for \svcctl operations
+ such as ControlService() and StartService().
+ * Implement simulated start and stop service control for
+ the spooler service as a per smbd service state value.
+ * Add interface structure for controlling service via rc.init
+ scripts (incomplete).
+ * Convert move_driver_to_download_area() to use copy_file()
+ rather than moving the files.
+ * Add version number to registry.tdb file since it can be
+ modified now.
+ * Remove over-paranoid assert() call when checking spoolss
+ buffer pointers
+ * Fix error in EnumPrinterData() reported by valgrind.
+ * Fix broken help links in SWAT editor caused by new doc layout.
+ * Ensure that a domain structure in winbind is initialized prior
+ to assigning the methods for communicating to a DC.
+ * BUG 3000: Remove background updates of winbind cache and allow
+ child processes to immediately update and expired cache entry.
+
+
+o David.Collier-Brown <David.Collier-Brown@sun.com>
+ * Added panic action script for Solaris.
+
+
+o Jeremy Cooper <jeremy@ncircle.com>
+ * Added support for several new \winreg client rpcs.
+
+
+o <core@road-star.jp>
+ * BUG 2792: Ensure the shadow copy module hooks seekdir,
+ telldir, rewinddir to match updated large directory code.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Close handles on group creation in rpcclient to better
+ support mass group account creation.
+ * Fix account policy key lookup for minimum and maximum
+ password lengths.
+ * Fix some compiler warnings and add missing exclude-block
+ in 'net rpc share migrate'.
+ * Allow use of a non-default smb.conf by rpcclient.
+ * Fix querydispinfo search semantics in rpcclient test code.
+ * Fix querydispinfo server semantics to allow to list more
+ then 511 users.
+ * Fix server crash bug in ancient OpenPrinter() call.
+ * Fix a crash bug when enumerating privileges via the LSA
+ calls.
+ * Fix crash in EnumPrinterKey() client calls caused by previous
+ refactoring work.
+ * Various compiler warning fixes.
+ * Fix segfault in the client AddPrinterEx-call of 'net
+ rpc printer'.
+ * Fix build issues when --with-aio-support is enabled.
+ * BUG 2502: Removed the deprecated 'min passwd length parameter'.
+ * Honour the CC environment variable in python build.
+ * Fix searches in pdb_ldap for inter-domain trust accounts.
+ * Don't expand the %L in %LOGONSERVER% from user attributes.
+ * Fix bug in 'net rpc vampire' that caused accounts to be created
+ with no assigned ACB flags.
+ * Fix enumeration of builtin-aliases.
+ * Avoid unset rids for builtin-aliases.
+ * Add 'recycle:touch_mtime = true' vfs option for the recycle bin.
+ * More "net rpc share migrate" fixes.
+ * Merge PADL's idmap_ad plugin (taken from the latest
+ xad_oss_plugins-tarball).
+ * Add support for "idmap backend = ad" when "security = ads".
+ * Add home directory and shell support from AD via "winbindd nss
+ support = sfu" and "security = ads".
+ * Provide better feedback when we fail share-manipulation
+ due to missing scripts.
+ * Correctly substitute "\" as default winbind separator in
+ generate_parm_table.py example share command script.
+ * Document pam_winbind.c to clarify the working status of
+ require-membership-of option.
+ * Added client-support for various lsa_query_trust_dom_info()
+ calls and a rpcclient-tester for some info-levels.
+ * Add "net rpc trustdom vampire" tool (in conjunction with
+ Lars Mueller).
+ * Add missing cli_srvsvc_net_share_set_info-function and
+ rpcclient-testers (in preparation for net share acl migration).
+ * Print trusted domain passwords returned via rpcclient in
+ display charset.
+ * Error code fixes when attempting to manipulating
+ non-existent shares.
+ * Cleanup "net share migrate" code.
+ * Allow to touch mtime in vfs-recycle with "recycle:touch_mtime
+ = true".
+ * Allow admins to uncheck the "User must change Password at
+ next Logon" checkbox in User manager (merge from trunk).
+
+
+o Renaud Duhaut <rd@duhaut.com>
+ * BUG 1040: Add directory_mode parameter when creating recycle
+ directories.
+
+
+o Steven Edwards <steven_ed4153@yahoo.com>.
+ * Use chsize() if we don't have ftruncate().
+
+
+o Rodrigo Fernandez-Vizarra <Rodrigo.Fernandez-Vizarra@Sun.COM>
+ * BUG 1780: Add Kerberos (file based ticket cache) support
+ to smbspool.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Update list of mount options for mount.cifs.
+ * Add more defines for POSIX extensions to match the newly
+ added client implementation.
+ * Add initial support for cifs umount utility.
+ * Fix cifs mounts to handle commas embedded in prompted
+ password, and password and credential files.
+ * Fix cifs mounts to handle domain name and user name in
+ username field (in form domain\user).
+ * Add missing error code mappings when a client unsuccessfully
+ tries to create a hard-link.
+ * Add support so umount.cifs can update mtab.
+ * Add two newer mount options to syntax help for mount.cifs.
+ * Add missing remount flag handling.
+ * Allow domain= to be specified in credentials file.
+ * Fix umount.cifs help, allow root to unmount someone else's
+ mount.
+ * Lock mtab when updating it during umount.cifs, also delete
+ only one matching entry at a time.
+ * Fix minor compiler warnings in the mount.cifs helper.
+
+
+o Deryck Hodge <deryck@samba.org>
+ * BUG 2137: Encode quotes for display in HTML (original patch
+ from Jay Fenlason).
+
+
+o Olaf Imig <Olaf.Imig@bifab.de>
+ * BUG 1998: Correct byte ordering bug when storing 16-bit RAP
+ print job ids.
+ * BUG 2653: Fix segv in rpcclient OpenPrinterEx() call.
+
+
+o Björn Jacke <bj@sernet.de>
+ * Added ioctl constants reported by msbackup.exe and filemon.exe.
+
+
+o Kevin Jamieson <bugzilla@kevinjamieson.com>
+ * BUG 2819: Fix typo when checking for ".." in smbd's statcache.
+
+
+o John Janosik <jpjanosi@us.ibm.com>
+ * BUG 2077: Correctly fill in the correct server name when
+ processing trusted domain logins.
+ * BUG 2976: Mark logons for unknown domains with a
+ non-authoritative response.
+
+
+o William Jojo <jojowil@hvcc.edu>
+ * AIX AIO fixes.
+
+
+o Guenter Kukkukk <guenter.kukkukk@kukkukk.com>
+ * BUG 2541: Fix copying of file(s) from samba share to an OS/2
+ local drive.
+
+
+o Tom Lackemann <cessnatomny@yahoo.com>
+ * BUG 2242: Patch to ensure that we only set the security
+ descriptor on an NTtransact create if we created the file.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Port some of the non-critical changes from HEAD to 3_0.
+ The main one is the change in pdb_enum_alias_memberships
+ to match samr.idl a bit closer.
+ * Close handles on user creation in rpcclient to better
+ support mass user account creation.
+ * Implement client RAP calls for enumusers/enumgroups level 0.
+ * Implement a new caching API for enumerating the pdb elements.
+ * Convert the RAP user and group enumeration functions to the
+ utilized the pdb_search API.
+ * BUG 2438: Partial fix for 'net rpc trustdom establish' in
+ RestrictAnonymous environments.
+ * Internal passdb API changes for better search capabilities
+ (based on original work by Guenther Deschner).
+ * Fix various compiler warnings.
+ * Add chain length statistics to tdbtool.
+ * Fix set afs ACL calls on files and directories in the root of
+ a share.
+ * Refactoring work on internal open code
+ * Correctly initialize the version in a new set of nt*tdb files.
+ * Remove smb_run_idle_events() from main process loop in smbd
+ and instead rely upon the timeout processing to handle
+ dropping idle LDAP connections.
+ * Fix the bug where users show up as trusting domains.
+ * Fix an assertion failure in winbindd.
+ * Fix a memleak in vfs_afsacl.
+ * Various compiler warning fixes.
+ * Fix compile when --enable-socket-wrapper is defined.
+ * Fixes for top level acls in vfs_acl.c.
+ * Refactor passdb interface functions.
+ * Compile fixes when '#define PARANOID_MALLOC_CHECKER 1'.
+ * Correct 2 segv's in "net rpc printer migrate".
+ * Return correct group type from smbd for BUILTIN groups.
+ * Backport the talloc() layer from Samba 4.
+ * BUG 2701: Fix segv in ldap reconnection code.
+ * BUG 2705: Fix segv when connecting from usrmgr.exe.
+ * Use the SID in the user token for the %s expansion in 'afs
+ username map'.
+ * Memory leak fixes in passdb code.
+ * BUG 2720: Fixes for "net usersidlist".
+ * BUG 2725: Fix segv in "net ads user".
+ * Only allow schannel connections if a successful Auth2
+ has been previously performed.
+ * Don't look at gencache.tdb for the trusted domains if
+ winbind is present.
+ * Rewrite winbindd using an asynchronous process model.
+
+
+o Herb Lewis <herb@samba.org>
+ * Compiler warning cleanups.
+ * smbwrapper Makefile and compile time check cleanups.
+ * Adding robustness checks for tdbdump and tdbtool.
+ * Extend tdb command line parsing to arbitrary hex characters.
+ * Add LOCKING debug class.
+ * Fix more compiler warnings.
+
+
+o Derrell Lipman <derrell@samba.org>
+ * add support for opening a file for write with O_APPEND
+ in libsmbclient.
+ * Added smbsh/smbwrapper for Linux to example/libsmbclient
+ tree.
+ * Fix smbc_stat() from returning incorrect timestamps IFF
+ it used cli_qpathinfo2() to retrieve the timestamps (Win2k)
+ and not if it used cli-getatr() to retrieve the timestamps
+ (Win98).
+ * Fix handful of compiler warnings.
+ * BUG 2498, 2484: smbc_getxattr() fixes.
+ * BUG 1133: Added provision for overloading some global
+ configuration options via the new, per-user file
+ ~/.smb/smb.conf.append.
+ * BUG 2543: Properly cache anonymous username when reverting
+ to anonymous login, in libsmbclient.
+ * BUG 2505: Fix large file support in libsmbclient.
+ * BUG 2564: Ensure correct errno when smbc_opendir() was called
+ with a file rather than a directory.
+ * Correct deprecated lvalue casts in testsuite/libsmbclient.
+ * BUG 2663. cli_getattrE() and cli_setattrE() were not
+ formatting or parsing the timestamp values correctly.
+ * Correctly detect AF_LOCAL support in configure.
+ * Fix problem updating file times on Windows 98 hosts using
+ libsmbclient.
+ * Fix compile breakage on Solaris by eliminating the use of
+ ctime_r() in libsmbclient DEBUG statement.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * BUG 2483, 2468. 2469, 2478, 2093: Compiler warning fixes.
+ * Various compiler warning fixes about mistyped variables.
+ * BUG 2882, 2885, 2890, 2891, 2900: Various compiler warning fixes
+ and code cleanups.
+ * BUG 2527, 2538: Removed unused variables.
+
+
+o Marcel <samba.10.maazl@spamgourmet.com>
+ * Fix regression in OS/2 trans2 open code.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Fixes for samr_lookup_rids() when using ldapsam:trusted=yes
+ (in conjunction with Volker).
+ * BUG 2953: Prevent the credentials chain on DC gets out
+ of sync with client when NT_STATUS_NO_USER is returned.
+ * Added subcommands to "net rpc vampire" (mostly done by Don
+ Watson <dwatson@us.ibm.com>) to allow data to be put into an
+ ldif file instead of actually writing to the passdb.
+ * BUG 2736: Add retries to workaround winbind race condition
+ with detecting idle clients.
+ * BUG 2953: Additional fixes for domain trusts. Also clears
+ up the "bad stub" error when attempting to logon to a Samba
+ domain with a bad username.
+
+
+o Luke Mewburn <lukem@NetBSD.org>
+ * Compiler warning fixes.
+
+
+o Kalim Moghul <kalim@samba.org>
+ * Removed unused printmode command from smbclient.
+
+
+o Lars Müller <lmuelle@samba.org>
+ * Re-enable the VERSION_REVISION option in case of another
+ letter release.
+ * Fix spoolss python bindings after C++ compiler changes and
+ other python fixes.
+ * BUG 2659: Don't trump on memory in smbtorture.
+ * BUG 2060: Add -fPIC which is the case for all other Samba
+ shared libs.
+ * Fix argv parsing in "net rpc".
+ * Add support to create position independent executable (PIE)
+ code if the compiler supports it.
+ * BUG 2767: Add new options to testparm (--show-all-parameters,
+ --parameter-name, and --section-name).
+ * Fix net share migrate files to also migrate the ACLs of
+ the top level dir of a share.
+
+
+o Marcel Muller <mueller@maazl.de>
+ * Patch to fix the OS/2 EA_FROM_LIST info level call.
+ * Mangled names fix for OS/2 clients.
+ * Ensure we correctly set the return packet size to include the
+ pad bytes in reply_readbmpx().
+ * Fix for bug in SMBwriteBraw that incorrectly returned the
+ number of bytes written.
+
+
+o Ricky Nance <ricky.nance@gmail.com>
+ * Implemented mklogon script generator for domain logon scripts.
+
+
+o James Peach <jpeach@sgi.com>
+ * BUG 1843: Fix quotas (with no soft limits) on IRIX.
+ * BUG 2285: Patch for hires timestamps and efficient notify code.
+ * MS-DFS tidyup patches.
+ * Build fixes on IRIX.
+ * IRIX compiler warning fixes.
+ * BUG 2596: Fix become_root link issues and one IRIX stack
+ backtrace bug.
+ * Fix for null pointer ACL free.
+ * BUG 2314: Fix const compiler warnings in the quota code.
+
+
+o Ed Plese <ed@edplese.com>
+ * Fix faulty logic which caused winbindd to return failure
+ when a user possessed no supplementary groups.
+
+
+o Marcin Porwit <mporwit@centeris.com>
+ * Initial support for the \eventlog pipe.
+ * Fix a memleak in the eventlog code.
+ * Miscellaneous fixes for Samba's experimental event log support.
+ * Add ServiceQueryConfig2() and ServiceQueryStatusEx() server
+ calls.
+
+
+o Tim Potter <tpot@samba.org>
+ * BUG 2940, 2943: Fixed various compiler warnings regarding
+ mismatched types and unused variables.
+ * BUG 1888, 1894: Fix warnings when time_t is an unsigned type.
+ * BUG 2733: Fix incorrect SHLIBEXT is set when running
+ configure script on HPUX IA.
+ * Remove unused autoconf #define's.
+ * BUG 2893: Fix inverted assignment in 'net rpc printer' code.
+ * Removed unused function declarations in tdb.h.
+ * BUG 2895: Don't wrap non-existent functions in the python
+ tdb bindings.
+ * BUG 2623, 2630: $< and $* are not valid in explicit rules
+ according to POSIX.
+ * BUG 2560: Fix compile error lurking where PATH_MAX is not
+ defined.
+ * BUG 2625: Remove configure check for FTRUNCATE_NEEDS_ROOT.
+ * BUG 2611: Add fflush(stdout) after displaying username prompt
+ in smbsh if username not specified on command line.
+ * BUG 2699: Fix for segfault in samba.winbind.auth_crap module
+ * BUG 2808: Update install swat message to reflect the fact
+ that swat/README no longer exists.
+
+
+o Denis Sbragion <d.sbragion@infotecna.it>
+ * BUG 2196: Allow absolute path (system wide) recycle bin.
+
+
+o Fernando Schapachnik <fernando@mecon.gov.ar>
+ * Add logon hours support for the Postgres backend.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * Fix bug in profiles tool caused by use of MAP_PRIVATE.
+
+o Joerg Sonnenberger <joerg@leaf.dragonflybsd.org>
+ * BUG 2362: Quota support fix for DragonFly.
+ * Fix dragonfly detection in configure.
+
+
+o Simo Sorce <idra@samba.org>
+ * Allow Domain Admins to force user sessions to close via the
+ Windows Server Manager.
+ * Add support to 'net rpc right privileges <name>' to enumerate
+ accounts which possess a specific privilege.
+ * Fix memory issues issues in vfstest (reported by Rainer Link).
+ * Randomize reloading as to not overload cupsd.
+
+
+o Smitty <smitty@plainjoe.org>
+ * Compile fixes for smbget when using --enable-developer.
+ * Include LUID values to match Windows privileges since
+ apparently this matters to printmig.exe
+
+
+o John Terpstra <jht@samba.org>
+ * Solaris packaging fixes.
+ * Clean up usage help text in "net rpc user"
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Merge socket wrapper library fixes from Samba 4.
+
+
+o Brett Trotter <blt@iastate.edu>
+ * Fix definition of global_sid_* in vfs_acl.c.
+
+
+o Mark Weaver <mark-clist@npsl.co.uk>
+ * Patch to fix sys_select so it can't drop signals if another
+ fd is ready to read.
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Remove --with-manpage-languages configure option.
+ * Merge socket wrapper fixes for IRIX systems from the
+ Samba 4 branch.
+ * Add socket_wrapper library to 3.0. Can be enabled by passing
+ --enable-socket-wrapper to configure.
+ * Fix build of the various sql pdb backends after new talloc.
+
+
+o Qiao Yang <qyang@stbernard.com>
+ * Use our own DC when getting the SID for a domain.
+
+
+
+Release Notes for older release follow:
+
+ --------------------------------------------------
+ ===============================
+ Release Notes for Samba 3.0.14a
+ Apr 14, 2005
+ ===============================
+
+Common bugs fixed in 3.0.14a include:
+
+ o Compatibility issues between Winbind and Windows 2003 SP1
+ domain controllers (*2k3sp1*).
+ o MS-DFS errors with Windows XP SP2 clients.
+ o High CPU loads caused by infinite loops in the FindNext()
+ server code.
+ o Invalid SMB_ASSERT() which caused smbd to panic on ACL'd
+ files.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.14
+--------------------
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Fixed invalid SMB_ASSERT() triggered by checking access on
+ ACL'd files.
+
+
+Changes since 3.0.13
+--------------------
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ dos filetimes Enabled by default
+
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Prevent nt_status code support when negotiating protocols
+ earlier than NT1.
+ * BUG 2533: Remove the UNICODE flags2 bit from SMBsearch calls
+ as this SMB is DOS codepage only.
+ * BUG 2585: Fix printf() issues in smbpasswd which caused
+ seg faults.
+ * BUG 2563: Fix infinite loop on non-existent file with
+ FindNext().
+ * BUG 2581 (partial): Ensure if realloc fails on an internal
+ tdb we fail gracefully.
+ * Ensure that 'dos filetimes' works with ACLs.
+ * Set 'dos filetimes = yes' as the default for smb.conf.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Workaround autoconf issue to prevent debug symbols from
+ being included in the default build.
+ * Disable schannel on the \lsarpc pipe in order to successfully
+ enumerate users and groups (*2k3sp1*)
+ * Fix parsing error in rpc binds which broke NTLMSSP
+ authentication. And as a result broke CTL+ALT+DEL password
+ changes from a Windows 2003 SP1 member of a Samba domain
+ (*2k3sp1*).
+ * Revert change to FindFirst() server code that broke WinXP
+ SP2 clients from launching *.exe files from a dfs target
+ share.
+ * BUG 2588: Force smbclient to send netbios messages to port
+ 139 unless otherwise instructed (based on patch from Thomas
+ Bork).
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix build on FreeBSD 4 where Winbind is not supported.
+ * Fix 'wbinfo --user-sids' when using domain local groups.
+ * Restrict domain local groups reported by 'wbinfo -r' to
+ the Samba server domain and not the users domain.
+
+
+o Lin Li <linl@xandros.com>
+ * Ensure that winbind initializes internal trusted domain
+ structures when enumerating users and groups.
+
+
+o Tim Potter <tpot@samba.org>
+ * BUG 2565: Fix crash bug and compiler warnings in strchr_m()
+ test.
+ * Fix compiler warnings.
+
+
+o <psz@maths.usyd.edu.au>
+ * Fix for possible root squash NFS bugs.
+
+
+o Simo Sorce <irda@samba.org>
+ * Debian packaging fixes.
+
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.13
+ Mar 24, 2005
+ ==============================
+
+Common bugs fixed in 3.0.13 include:
+
+ o Infinite FindNext() loop from Windows 9x client when
+ copying or deleting files on a Samba file share using
+ explorer.exe.
+ o Numerous smbclient bugs when listing directories.
+ o Failures in smbclient when connecting to a Windows 9x
+ file server.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.12
+--------------------
+
+o Jeremy Allison <jra@samba.org>
+ * Fix typo bug in smbclient where flags overwrote info level
+ in the cli_list_new().
+ * Fix old smbclient bug where ff_searchcount was being compared
+ to -1 resulting in processing a filename twice.
+ * Fix segv in smbclient caused by overwriting the last 2 bytes
+ in cli_list_new().
+ * BUG 2530: Fix potential segv in smbclient when talking to a
+ Windows 9x file server.
+ * Fix last entry offset in cli_list_new() when using a
+ FindFirst/FindNext info level of 0x104.
+ * BUG 2501: Stop Win98 from looping doing FindNext on a
+ singleton directory.
+ * BUG 2521: Fix error in access checks when user group ACLs.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * BUG 2497: Fix bug in rpcclient's deletedriverex when asking
+ to delete all versions of a driver.
+ * BUG 2517: use the realm from smb.conf for 'net ads info' when
+ 'disable netbios = yes'.
+ * BUG 2530: Ensure that smbclient correctly detects MS-DFS root
+ shares.
+ * Update RedHat packaging files to require cups support. Also
+ remove requirement for 'idmap {uid,gid}' settings in smb.conf
+ from winbindd init script.
+ * BUG 2516: fix compile issue on True64.
+
+
+
+o Guenther Deschner <gd@samba.org>
+ * Check for the correct cli-struct when copying files in 'net
+ rpc printer' routines.
+
+
+o Herb Lewis <herb@samba.org>
+ * Fix incorrect test in 'net rpc user' when the user is not
+ a member of any groups.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Make sure that enum_group_members() searches the correct suffix.
+
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.12
+ Mar 18, 2005
+ ==============================
+
+Common bugs fixed in 3.0.12 include:
+
+ o Winbind failures when using 'disable netbios = yes'
+ o Failure to establish a trust relationship via 'net rpc trust
+ establish'
+ o Various portability & compiler issues.
+ o Read only file deletion failure caused by new delete semantics
+ in Windows XP SP2 and the MS 04-044 security hotfix.
+ o Error messages from shared Excel workbooks residing on Samba
+ file shares.
+ o Missing files in the output of smbclient -c 'dir' when run
+ against Windows file servers.
+ o Inability for Print Administrators to pause/resume/purge print
+ queues.
+
+Additional features introduced in Samba 3.0.12:
+
+ o Performance enhancements when serving directories containing
+ large number of files.
+ o MS-DFS support added to smbclient.
+ o More performance improvements when using Samba/OpenLDAP based
+ DC's via the 'ldapsam:trusted=yes' option.
+ o Support for the Novell NDS universal password when using the
+ ldapsam passdb backend.
+ o New 'net rpc trustdom {add,del}' functionality to eventually
+ replace 'smbpasswd {-a,-x} -i'.
+ o New libsmbclient functionality.
+
+
+
+=======================
+Large Directory Support
+=======================
+
+Samba 3.0.12pre1 introduces a specific mechanism for dealing
+with file services that frequently contain a large number of files
+per directory. Historically Samba's performance has suffered
+in such environments due to the translation from case
+insensitive lookups by Windows client to the case sensitive
+storage mechanisms used by UNIX filesystems.
+
+Configuration details along with a short HOWTO can be found at:
+
+http://www.samba.org/samba/ftp/HOWTO/Samba-LargeDirectory-HOWTO
+
+
+==================================
+libsmbclient Binary Compatibility
+==================================
+
+Please note that a change has been made to the _SMBCCTX structure
+in source/include/libsmbclient.h. This change is not backwards
+compatible with applications linked against the libsmbclient.so
+library from Samba 3.0.11. However, it is compatible with all
+other Samba 3.0.x releases. This means that it will be most likely
+be necessary to recompile any applications linked against the
+3.0.11 version of the library.
+
+
+######################################################################
+Changes
+#######
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ allocation roundup size New
+ log nt token command New
+ write cache Deprecated
+
+
+
+Changes since 3.0.11
+--------------------
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * BUG 2146: Return correct allocation sizes so as not to crash
+ the VC++ compiler.
+ * BUG 962: Ensure that parsing of service names in smb.conf is
+ multibyte safe.
+ * BUG 2201, 2227: Support new delete semantics used by MS04-044
+ and XP SP2.
+ * BUG 1525: Correctly timestamps interpreted on 64-bit time_t
+ values (patch submitted by Jay Fenlason <fenlason@redhat.com>).
+ * Add special hooks when serving directories containing large
+ numbers of files.
+ * Ensure that WINS negative name query responses and WACK
+ packets use the correct RR type of 0xA instead of reflecting
+ back what the query RR type was (0x20).
+ * BUG 2310: Only do 16-bit normalization on small dfree request.
+ * BUG 2323: Correct authentication failure when using plaintext
+ passwords from Windows XP clients.
+ * BUG 2146: Add new smb.conf option 'allocation roundup size' to
+ work around issues building MS Visual Studio 6.0 project
+ on a Samba file share while restoring the pre-3.0.21pre1
+ behavior by default.
+ * BUG 2399 (partial): Ensure we use SMB_VFS_STAT instead of
+ stat when checking for existence of a pathname.
+ * Check the sticky bit on the parent directory for supporting
+ the new WinXP SP2 file deletion semantics.
+ * Various oplock, share mode, and byte range locking fixes
+ found by Connectathon tests.
+ * BUG 2271: Fix resume key issues in trans2FindFirst() client
+ code (inspired by patch from Satwik Hebbar).
+ * BUG 2382, 2045: More pending modtime and delayed write fixes
+ for MS Excel (incorporates partial patches from
+ ke_miyata@itg.hitachi.co.jp).
+ * Debug log message cleanups.
+ * Add case insensitive search for a principal match on logon
+ verification in the system keytab (based on patch by
+ Michael Brown <mbrown@fensystems.co.uk>).
+ * Revert the previous SMB signing change from Nalin Dahyabhai
+ when using DES keys.
+ * Add missing RESOLVE_DFSPATH() calls for older SMB commands.
+ * Fix FindFirst() server code to deal with resume names of ".."
+ and "." (found by Jim McDonough).
+ * BUG 2451: Fix missing functions in full audit VFS module.
+ * Ensure that smbd logs failures reported by DISK_FREE()
+ (reported by Ying Li <ying.li2@hp.com>).
+ * Ensure that smbclient obeys the max protocol argument again.
+ * BUG 2335: Return correct error code for OS/2 clients (based on
+ negotiated protocol level).
+ * BUG 2460, 2464: remove dead code and unused variables
+ (reported by Jason Mader).
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Avoid length-limited intermediate copy of NT and LM responses
+ in NETLOGON client.
+ * Debug message cleanups in the NTLMSSP implementation.
+
+
+o Manuel Baena <mbaena@lcc.uma.es>
+ * Print actual error message in smbmnt.c:fullpath().
+
+
+o Vince Brimhall <vbrimhall@novell.com>
+ * Add support for Novell NDS universal password.
+ * BUG 2424: Ensure that uidNumber and gidNumber use match
+ the RFC2307 schema.
+ * BUG 2453: Change the way pdb_nds.c handles users with no
+ Universal or Simple Password.
+ * NDS schema file corrections.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Add trans2 client call for checking dfs referrals
+ * Convert smbclient to use TRANS_QPATHINFO(SMB_QUERY_FILE_BASIC_INFO)
+ when checking directories on modern CIFS servers.
+ * Add MS-DFS support to smbclient.
+ * Code cleanup of adt_tree.[ch].
+ * Add missing checks to allow root to manage user rights.
+ * Allow domain admins to manage rights assignments on domain members
+ servers.
+ * BUG 2333: Use the lpq command to pass in the correct printer name
+ for cups_queue_get(). CUPS backend now sets 'lpq command= %p' as
+ the default.
+ * BUG 1439: make sure to initialize pointer to prevent invalid
+ free()'s on exit.
+ * BUG 2329: fix to re-enable winbindd to locate DC's when 'disable
+ netbios = yes'.
+ * Add cups-devel to BuidlRequires directive in Fedora spec file.
+ * BUG 858: Fix order of popt args evaluation so we don't crash
+ when given no command line args.
+ * Remove dependency on bash for source/autogen.sh.
+ * Fix clitar.c compile issues caused by broken MIT 1.4 headers.
+ * Implement MS-DFS for recursive directory listings in smbclient.
+ * BUG 2394: Fix nmbd linking issue on IRIX.
+ * Only display the publish check box in the client's printer
+ properties dialog if we are a member of an AD domain.
+ * BUG 2363: allow 'in use' driver to be removed as long as
+ one 'Windows NT x86' driver remains.
+ * BUG 1881: Allow PRINT_SPOOL_PREFIX to be set in local.h for
+ porting purposes.
+ * Enforce better printer.tdb cache consistency when removing
+ jobs from a print queue via SMB.
+ * Ensure that pause/resume/purge print queue commands are run
+ with the appropriate level of privilege necessary to actually
+ work.
+ * BUG 2355: Use bsd style commands (lpq, lpr, etc...) for default
+ for 'printing = cups' installations that do not actually have
+ libcups.
+ * BUG 2425: Remove incorrect checks for Win98 DFS clients.
+ * BUG 2215: Rewrite questionable code that was causing gcc to
+ choke.
+ * Add server support for LsaLookupPrivValue().
+ * Various small compile fixes and cleanup warnings.
+ * BUG 2456: Fix compile failure on non-gcc platforms due to
+ non-standard pragma.
+
+
+o Kevin Dalley <kevin@kelphead.org>
+ * BUG 2398: Don't force smbclient to assume a dry run if the
+ target tarfile is /dev/null.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Fix crash bug in the client-spoolss enumdataex-call.
+ * Expand the valid-workstation-scheme by expanding names
+ beginning with a plus (+) as a unix group.
+ * Allow own netbios name to be set in smbclient's session setup.
+ * Better handling of LDAP over IPC connections that have expired
+ on the LDAP-Server.
+ * Fix pipe-mismatch for NETDFS in cli_dfs.c.
+ * Add examples/misc/adssearch.pl.
+ * BUG 2343: Build fixes.
+ * Support get_user_info_7 in SAMR server RPC.
+ * Fix server_role in the samr_query_dom_info calls.
+ * Add example perl script to check for multiple LDAP entries
+ after running 'net rpc vampire'.
+ * Add more output when listing printer forms via rpcclient.
+ * Debug log message cleanup.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * On failed mount (ENXIO) retry share name in uppercase (fix
+ mount to FastConnect AIX SMB server).
+ * Add missing FILE_ATTRIBUTE_XXX defines to smb.h.
+ * Ignore user_xattr mount parm (mount.cifs) so as not to confuse
+ it with a user name.
+ * Update for new CIFS POSIX info levels.
+ * Ignore users mount parm in mount.cifs.
+
+o SATOH Fumiyasu <fumiya@samba.gr.jp>
+ * BUG 1549: Don't truncate service names in smbstatus.
+
+
+o William Jojo <jojowil@hvcc.edu>
+ * BUG 2445: Patch to avoid default ACLs on AIX.
+
+
+o S Murthy Kambhampaty <smk_va@yahoo.com>
+ * Add idmap_rid module to Fedora and RedHat spec files.
+
+
+o Volker Lendecke <vl@samba.org>
+ * BUG 2401: Flush internal getpwnam() cache after deleting a
+ user.
+ * BUG 1604: Make winbind work with more than 10 trusted domains.
+ * Cleanup various compiler warnings.
+ * Fix a memory leaks in privileges code and passdb backends.
+ * Fixes for samr_lookup_sids() client call.
+ * Optimize _samr_query_groupmem with LDAP backend for large
+ domains.
+ * Support SIDs as %s replacements in the afs username map
+ parameter.
+ * Add 'log nt token command' parameter. If set, %s is replaced
+ with the user sid, and %t takes all the group sids.
+ * Do not use the "Local Unix Group"-default description for
+ all kinds of group-mappings.
+ * Fix uninitialized variable in Linux nss_winbind library.
+ * Move 'net afskey' into a subcommand of its own, 'net afs key'.
+ * Implement 'net afs impersonate'.
+
+
+o Herb Lewis <herb@samba.org>
+ * Fix build problem when HAVE_POSIX_ACL is not defined.
+ * BUG 2417: Add help lines for net rpc group addmem and
+ delmem commands.
+
+
+o Derrell Lipman <derrell.lipman@unwireduniverse.com>
+ * Add support to libsmbclient for getting and setting DOS
+ attributes using EA functions.
+ * Fix libsmbclient's URL encoding/decoding.
+ * Replace browse listing URI queries with an internal options
+ structure (previous method violated the SMB URI syntax).
+ * Allow tree connects to be multiplexed over a single CIFS server
+ connection context.
+ * Ensure that cli_tdis() sets the cnum field to -1 so that callers
+ can determine a dead tree connection.
+ * Implement better solution for backwards binary compatibility
+ in libsmbclient while adding new fields to struct _SMBCCTX.
+
+
+o Mark Loeser <halcy0n@gentoo.org>
+ * BUG 2443: Compile fix for gcc4.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * BUG 2338: Fix coredump when OS/2 checks for long file name
+ support (with .+,;=[].) (thanks to Guenter Kukkukk).
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * Compiler warning fixes (BUGS BUG 2132, 2134, 2289, 2327, 2340,
+ 2341, 2342)
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Fixes for server schannel implementation when 'restrict
+ anonymous = 1' is set in smb.conf.
+ * Fix bug in server side lookupsids reply that crashed lsass.exe
+ on Windows clients.
+ * Fix 'net rpc trustdom establish'.
+ * BUG 2062: Turn off broadcast for all 390 NICs.
+ * Fix 'net rpc trustdom add' to correctly add new domain trust
+ accounts. This will eventually replace 'smbpasswd -a -i'.
+ * Implement 'net rpc trustdom del', including client side of
+ samr_remove_sid_from_foreign_domain.
+ * Bring IBM Directory Server schema up to date with openldap
+ schema.
+ * Allow for better protection of sensitive attributes in IBM
+ Directory Server.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Fix memleaks in the nttrans code.
+
+
+o Mike Nix <mnix@wanm.com.au>
+ * Add SMBsplopen and SMBsplclose client calls.
+
+
+o Justin Ossevoort <justin@snt.utwente.nl>
+ * BUG 2316: Fix crashes in pdb_pgsql.
+
+
+o James Peach <jpeach@sgi.com>
+ * Fixes in string handling code.
+ * Fix oplock2 test in client smbtorture.
+
+
+o Tim Potter <tpot@samba.org>
+ * Fix up example pdb modules after prototype change for
+ setsampwent.
+ * BUG 2058: Fix for shared object creation in examples.
+ * BUG 2315: Fix segv in LSA privileges server code.
+ * Build fixes for python wrapper libraries.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * BUG 2044: Fix segv in profiles tool.
+ * Fix bogus error messages when enumerating user group
+ membership via 'net rpc'.
+
+
+o Simo Sorce <idra@samba.org>
+ * Debian packaging fixes.
+
+
+o John Terpstra <jht@samba.org>
+ * Add the capability to set account description using pdbedit.
+
+
+o Doug VanLeuven <roamdad@sonic.net>
+ * Add more case/realm/name permutations to the Kerberos keytab.
+ * AIX compile fixes.
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * BUG 892: Default unknown_6 field to 1260 in mySQL pdb module.
+ * BUG 1957: Implement minimal update of fields in mySQL pdb
+ module.
+
+
+o Torsten Werner <torsten.werner@assyst-intl.com>
+ * BUG 2405: Define 'lpstat' printcap output on HPUX.
+
+
+o Shlomi Yaakobovich" <Shlomi@exanet.com>
+ * Detect infinite loops when traversing tdbs.
+
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.11
+ Feb 5, 2005
+ ==============================
+
+Common bugs fixed in 3.0.11 include:
+
+ o Crash in smbd when using CUPS printing.
+ o Parsing error of other SIDs included in the user_info_3
+ structure returned from domain controllers.
+ o Inefficiencies when searching non-AD LDAP directories.
+ o Failure to expand variables in user domain attributes
+ in tdbsam and ldapsam.
+ o Memory leaks.
+ o Failure to retrieve certain attribute when migrating from
+ a Windows DC to a Samba DC via 'net rpc vampire'.
+ o Numerous printing bugs bugs including memory
+ bloating on large/busy print servers.
+ o Compatibility issues with Exchange 5.5 SP4.
+ o sendfile fixes.
+
+Additional features introduced in Samba 3.0.11:
+
+ o Winbindd performance improvements.
+ o More 'net rpc vampire' functionality.
+ o Support for the Windows privilege model to assign rights
+ to specific SIDs.
+ o New administrative options to the 'net rpc' command.
+
+
+============
+LDAP Changes
+============
+
+If "ldap user suffix" or "ldap machine suffix" are defined in
+smb.conf, all user-accounts must reside below the user suffix,
+and all machine and inter-domain trust-accounts must be located
+below the machine suffix. Previous Samba releases would fall
+back to searching the 'ldap suffix' in some cases.
+
+
+===============
+Privilege Model
+===============
+
+Samba 3.0.11 supports the following assignable rights
+
+SeMachineAccountPrivilege Add machines to domain
+SePrintOperatorPrivilege Manage printers
+SeAddUsersPrivilege Add users and groups to the domain
+SeRemoteShutdownPrivilege Force shutdown from a remote system
+SeDiskOperatorPrivilege Manage disk shares
+
+These rights can be assigned to arbitrary users or groups
+via the 'net rpc rights grant/revoke' command. More details
+of Samba's privilege implementation can be found in the
+Samba-HOWTO-Collection.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.10
+--------------------
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ afs token lifetime New
+ enable privileges New
+ ldap password sync Alias
+ min password length Deprecated
+ winbind enable local accounts Deprecated
+
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Extend vfs to add seekdir/telldir/rewinddir.
+ * Fix dirent return.
+ * Fix bugs when handling secondary trans2 requests.
+ * Implementation of get posix acls in UNIX extensions.
+ * Added set posix acl functionality into the UNIX extensions code.
+ * Updated config.guess/config.sub .
+ * Fix error reply when 'follow symlinks = no'.
+ * BUG 1061, 2045: Only set mtime from pending_modtime if it's
+ not already zero.
+ * Fixes for LARGE_READX support.
+ * Fix the problem we get on Linux where sendfile fails, but we've
+ already sent the header using send().
+ * BUG 2081: Ensure SE_DESC_DACL_PROTECTED is set if 'map acl
+ inherit = no'.
+ * BUG 2088: Ensure inherit permissions is only applied on a new
+ file, not an existing one.
+ * Don't go fishing for the krb5 authorization data unless we know
+ it's there.
+ * Fixes for libsmbclient to ensure that interrupted system calls
+ are restarted minus the already expired portion of the timeout
+ (based on work by Derrell Lipman).
+ * More Unicode string parsing fixes.
+ * Convert the winreg pipe to use WERROR returns.
+ * Make all LDAP timeouts consistent (input from Joe Meadows
+ <jameadows@webopolis.com>).
+ * BUG 2231: Remove double "\\" from client findfirst.
+ * BUG 2238: Fix memory leak in shadow copy vfs.
+ * Return correct DOS/NT error code on transact named pipe on
+ closed pipe handle.
+ * BUG 2211: Fix security descriptor parsing bug (based on work by
+ Mrinal Kalakrishnan <mail@mrinal.net>).
+ * BUG 2270: Fix memory leaks in cups printing backend support
+ (based on work by Lars Mueller).
+ * BUG 2255: Fix debug level in Kerberos error messages.
+ * BUG 2110: Ensure we convert to ucs2 correctly after the
+ CAN-2004-0930 patch.
+ * Make strict locking an enum. Auto means use oplock optimization.
+ * Fix client & server to allow 127k READX calls.
+ * More *alloc fixes (includes additional fixes by Albert Chin.
+ * Catch sendfile errors correctly and return the correct values
+ we want the caller to return.
+ * BUG 2092: Prevent auto-anonymous logins via libsmbclient
+ for better use by desktop environments such as GNOME.
+ * Ensure we can't remove a level II oplock without having the
+ shared memory area locked.
+
+
+o Timur Bakeyev <timur@com.bat.ru>
+ * BUG 2100: change the way we check for errors after a dlopen().
+ * BUG 2263: Guard base64_encode_data_blob() against empty blobs.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Clarify error message when 'lanman auth = no'.
+ * Remove the unnecessary UTF-8 conversion calls in the calls to
+ auth_winbind from smbd.
+ * Don't store the auth-user credentials with the cli_state* as
+ this can cause the schannel setup to fail when the auth-user
+ domain is not our primary domain.
+
+
+o Grigory Batalov <bga@altlinux.org>
+ * Fix encoding while receiving of a message which was actually
+ sent using STR_ASCII.
+
+
+o Daniel Beschorner <db@unit-netz.de>
+ * BUG 603: Correct access mask check for _samr_lookup_domain()
+ to work with Windows RAS server
+
+
+o Jerome Borsboom <j.borsboom@erasmusmc.nl>
+ * Fix missing printer_tdb reference decrement.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * BUG 2073: fall back to smb_name if current_user_info is not
+ available in lp_file_list_changed().
+ * Fixes the spurious 'register_message_flags: tdb fetch failed'
+ errors.
+ * Don't run the background LPQ daemon when we are running in
+ interactive mode.
+ * prevent the background LPQ daemon from updating the print queue
+ cache just because multiple smbd processes sent a message that
+ it was out of date.
+ * consolidate printer searches to use find_service rather than
+ for(...) loops.
+ * BUG 2091: don't remove statically defined printers in
+ remove_stale_printers().
+ * Fix logic error in add_a_form() that only compared N characters
+ instead of the entire form name.
+ * BUG 2107: fix memory bloating caused by large numbers of
+ print_queue_updates() requests sent via messages.tdb.
+ * Check the setprinter(3) based on the access permissions on
+ the handle and avoid the call to print_access_check().
+ * Re-instantiate previous semantics for calling init_unistr2()
+ with a NULL source buffer.
+ * Support Windows privilege model for assigning rights
+ to specific SIDs. Based on work by Simo Sorce in the trunk
+ svn branch. This feature is controlled by the 'enable
+ privileges = [yes|no]' smb.conf(5) option.
+ * Add some smb.conf scripts for add/delete/change shares and
+ deleting cups printers.
+ * Expand variables in the profile path, logon home and logon script
+ values when using either tdbsam or ldapsam.
+ * Add Domain Admins (Full Control) to the default printer security
+ descriptor if we are a DC.
+ * RedHat and Fedora Packaging fixes for perl dependencies.
+ * Remove unused schema items from OpenLDAP schema file.
+ * Remove duplicate enumeration of "Windows x86" architecture
+ when listing printer drivers via rpcclient.
+ * Fail set_privileges() if 'enable privileges = no' to prevent
+ confused admins.
+ * Fix segfault in cups_queue_get().
+ * Tighten restrictions on changing user passwords when
+ the connected user possesses the SeMachineAccountPrivilege.
+ * Ensure we set NETBIOSNAME.domainname for the long machine name
+ when publishing printers in AD (based on input from Rob Foehl).
+ * Mark 'winbind enable local accounts' as deprecated.
+ * Mark testprns tool as deprecated.
+ * Allow root to grant/revoke privilege assignments.
+ * Correct interaction between user rights and se_access_check() on
+ SAMR objects.
+ * BUG 2286: Fix typo OpenLDAP schema file for sambaConfig object
+ class.
+ * BUG 2262: Add support in configure.in for *freebsd6*.
+ * BUG 2266: Portability fixes for quota code on FreeBSD4.
+ * BUG 2264: Remove shutdown and abortshutdown commands from
+ rpcclient in favor of using the same functions in 'net'.
+ * BUG 2295: Prevent smbd from returning an empty server name
+ in certain lanman api calls.
+ * BUG 2290: Fix autogen.sh script in examples (based on original
+ patch from Lars Mueller).
+ * Fix bug enumerating domain trusts in security = ads.
+ * Fix segv in rpcclient's dsenumdomtrusts.
+ * Fix bug in expansion of %U and %G in included filenames.
+ * BUG 2291: Restrict creation of server trust and domain trust
+ accounts to members of the "Domain Admins" group.
+
+o Nadav Danieli <nadavd@exanet.com>
+ * Short circuit some is_locked() tests if we are oplocked.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Allow 'localhost' as a valid server name in the smbd for the
+ spoolss calls.
+ * Fix KRB5_SETPW-defines, no change in behavior (Thanks to Luke
+ Mewburn for the input).
+ * BUG 2059: Add additional checks needed after logic change to the
+ HAVE_WRFILE_KEYTAB detection test.
+ * BUG 1076: Fix interaction with Exchange 5.5. SP4 and a
+ Samba DC. Allow us to lookup at least our own SID.
+ * More fixes to have proper German in swat (Thanks to Reiner
+ Klaproth and Björn Jacke.
+ * BUG 404, 2076: Allow to set OWNER- and GROUP-entries while
+ setting security descriptors with smbcacls and using with
+ the -S or -M switch.
+ * Include the munged_dial, bad_password_count, logon_count, and
+ logon_hours attributes when running 'net rpc vampire'.
+ * Fix segfault in idmap_rid.
+ * When winbindd is operating in the multi-mapping mode of
+ idmap_rid, allow BUILTIN domain-mapping.
+ * Display infolevel 12 in query_dom_info in rpcclient.
+ * Fix bug in winbindd's lowercasing of usernames.
+ * Allow -v or -l for displaying verbose groupmap-listing
+ as well as "verbose".
+ * Backport Samba4 SAM_DELTA_DOMAIN_INFO for use in 'net rpc
+ vampire'.
+ * Close LDAP-Connection before retrying to open a new connection
+ in the retry-loop.
+ * Marking "min password length" as depreciated.
+ * Implement SAMR query_dom_info-call info-level 8 server- and
+ client-side, based on samba4-idl.
+ * Allow rpcclient to define a port to use when connecting
+ to a remote server.
+ * Allow Account Lockout with Lockout Duration "forever" (until
+ admin unlocks) to be set and displayed in User Manager.
+ * Allow to set acb_mask in rpcclient's enumdomusers.
+ * Add more generic rootDSE inspection function to check
+ for given controls or extensions and remember these on a
+ per server basis.
+ * Improve LDAP search efficiency by passing the acb_mask to
+ pdb_setsampwent().
+ * Fixes for ldapsam_enum_group_memberships().
+ * Add createdomgroup to rpcclient.
+ * Add "net rpc user RENAME"-command.
+ * Display sam_user_info_7 in rpcclient.
+ * Make multi-domain-mode in idmap_rid accessible from outside
+ (can be compiled with -DIDMAP_RID_SUPPORT_TRUSTED_DOMAINS).
+ * When vampiring account policy AP_LOCK_ACCOUNT_DURATION honor
+ "Lockout Duration: Forever".
+ * Fix configure.in tests using KRB5_CONFIG variable and krb5-
+ config utility.
+ * Require assignment of Administrator SID in the passdb
+ backend. Fall back to the default name of 'Administrator' if
+ the lookup fails rather than using the first name in the
+ default 'admin users' list.
+ * Enhance LDAP failure debug messages.
+ * BUG 2291: Call the 'add machine script' for server trust and
+ domain trust accounts as well as workstation accounts.
+
+
+o Levente Farkas <lfarkas@lfarkas.org>
+ * BUG 2299: Better logrotate scripts for RedHat and Fedora
+ packages.
+
+
+o Jay Fenlason <fenlason@redhat.com>
+ * Fix crash in 'net join' due to calling free on
+ static buffers.
+ * Several patches from RedHat's Fedora Core RPMS.
+
+
+o Rob Foehl <rwf@loonybin.net>.
+ * Compiler warnings.
+ * Try modifying printer published attributes before adding it a
+ new entry in AD.
+ * Solaris packaging fixes.
+ * Don't force the cups printer-make-and-model tag as the comment
+ for autoloaded printers.
+ * Implement caching of names from printcap to support a true
+ 'printcap cache time'.
+
+
+o Johann Hanne <jhml@gmx.net>
+ * BUG 2038: Only fail winbindd_getgroups() if all lookups fail.
+
+
+o Jeff Hardy <hardyjm@potsdam.edu>
+ * Example script for 'add print command' when using CUPS.
+
+
+o Deryck Hodge <deryck@samba.org>
+ * Add -P (--password-only-menu) to SWAT for displaying only the
+ password change page to non-root users.
+
+
+o David Hu <david.hu@hp.com>
+ * Copy structure from print_queue_update() message rather than
+ referencing it. Fixes seg fault on HP-UX.
+
+
+o Buck Huppmann <buckh@pobox.com>
+ * BUG 2186: Don't free uninitialized credentials.
+ * BUG 2189: Add the HOST/fqdn servicePrincipalName even when
+ dnsDomainName != realm.
+
+
+o Björn Jacke <bjoern@j3e.de>
+ * BUG 2040: Ensure the locale is reset to C to get ASCII-
+ compatible toupper/lower functions.
+
+
+o William Jojo <jojowil@hvcc.edu>
+ * Fix HPUX sendfile and add configure.in tests and code for
+ sendfile on AIX.
+ * AIX 5.3 compile fixes.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Optimize anonymous session setups by workstations in a
+ Samba domain.
+ * Reimplment the QueryUserAliases() server RPC reply.
+ * Re-add the getpwnam-cache for performance.
+ * Cache the result of a pdb_getsampwnam for later SID lookup
+ queries.
+ * Unify the means of localtaing a user's global groups on a
+ Samba DC.
+ * Fix bug when serving the 'Start Menu' in a roaming user profile..
+ * Map more pre-defined NT security descriptors to AFS acls.
+ * Add timeout to AD search requests.
+ * If a connection to a DC is requested (in winbindd), open
+ connections simultaneously to all DCs found.
+ * Memleak fixes.
+ * Fix logic error in handling of 'printcap name' parameter.
+ * Prevent winbindd from SPAM'ing the log files with 'user root
+ does not exist'.
+ * Backport samr_DomInfo2 IDL specification from Samba 4.
+ * Implement smbstatus -n, don't lookup users and groups.
+ * Implement simple mapping that maps the space to another character
+ defined by afsacl:space.
+ * Add support for 'net idmap delete <idmap-file> <SID>'.
+ * Add new parameter 'afs token lifetime' tells the AFS client
+ when to throw away a token (patch from kllin@it.su.se).
+ * Initial work to allow support for multiple pipe opens on a
+ single cli_state*.
+ * Ensure that we still retrieve the netbios name of any DC
+ listed as a 'password server' to work around cases where the
+ DC was defined using an IP address or fqdn.
+ * Fix memleak in winbindd connection code.
+ * Fix cli_samr_queryuseraliases.
+ * Allow wbinfo --user-sids to expand expand domain local groups.
+ * Allow 'rpcclient -c enumtrust' to enumerate more than 10 trusts.
+ * Fix parsing of other_sids in net_user_info3.
+ * Correct bad failure logic when user was not a member of any
+ domain local groups.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * BUG 2113, 2289: Remove dead code.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * BUG 1952: Try INITSHUTDOWN pipe first, used by newer
+ clients. If it fails, fall back to WINREG.
+ * BUG 1770: Remove READ_ATTRIBUTES from GENERIC_EXECUTE.
+ * BUG 2198: Set password last change time when running 'net rpc
+ vampire'.
+ * Add "refuse machine password change" policy field.
+
+
+o Luke Mewburn <lukem@NetBSD.org>
+ * BUG 2150: shmget() - Use POSIX definitions instead of non-
+ standard SHM_.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * autogen.sh fixes.
+
+
+o Buchan Milne <bgmilne@mandrake.org>
+ * Mandrake packaging fixes.
+
+
+o Lars Mueller <lmuelle@samba.org>
+ * Fix build of libsmbclient on x86_64.
+ * BUG 2013: Fix testsuite build issues when libsmbclient.so
+ is installed in a non-default location.
+ * BUG 2050: Calculate max_fd for select correctly.
+ * Fix inverted logic heck for HAVE_WRFILE_KEYTAB in autoconf
+ script.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * BUG 2069: Remove unused variables.
+ * BUG 2075: Remove dead code paths.
+ * BUG 2083: Fix compiler warnings caused by bad type casts.
+
+
+o James Peach <jpeach@sgi.com>
+ * Fix rewinddir -> rewind_dir when using VFS macros.
+
+
+o Gavrie Philipson <gavrie@disksites.com>
+ * BUG 1838: Remove stale printers imeeddiately when
+ processing a SIGHUP and during smb.conf reload.
+
+
+o Tim Potter <tpot@samba.org>
+ * BUG 2080: Fix duplicate call to pdb_get_acct_desc().
+ * BUG 2168: Fix cast in SMB_XMALLOC_ARRAY.
+ * Change the license for the winbindd external interface
+ more liberal.
+ * HP-UX compile fixes.
+ * Compile fixes after new setsampwent() API.
+
+
+o Richard Renard <rrenard@idealx.com>
+ * Update Netscape DS 5.2 LDAP schema.
+
+
+o Simo Sorce <idra@samba.org>
+ * Backport pdbedit changes from trunk.
+ * Allows the add/change share command to create the shared
+ directory directory on disk.
+ * Log a warning in testparm if a print command is defined for
+ a print service using 'printing = cups'.
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Bug fixes for pdb_{xml,pqsql,xml}
+ * Fixes for pdb_mysql.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Bring Samba3 into line with the Samba4 password change code.
+
+
+o Shiro Yamada <shiro@miraclelinux.com>
+ * BUG 2190: Force SWAT to display parameters in unix charset and
+ not UTF-8.
+
+
+ --------------------------------------------------
+ ==============================
+ Release Notes for Samba 3.0.10
+ Dec 16, 2004
+ ==============================
+
+Common bugs fixed in 3.0.10 include:
+
+ o Fix for security issues described in CAN-2004-1154.
+
+
+Changes since 3.0.9
+-------------------
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * Added checks surrounding all *alloc() calls to fix
+ CAN-2004-1154.
+ * Fix long standing memory size bug in bitmap_allocate().
+ * Remove bogus error check in deferred open file serving
+ code.
+
+
+o Thomas Bork <tombork@web.de>
+ * Fix autoconf script on platforms using a version of GNU ld
+ that does not include a date stamp in the output of --version.
+
+
+o Luke Mewburn <lukem@NetBSD.org>
+ * Fix the swat install script to deal with the new image
+ destination directory used by the docs.
+
+
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.9
+ Nov 15, 2004
+ =============================
+
+Common bugs fixed in 3.0.9 include:
+
+ o Problem updating roaming user profiles.
+ o Crash in smbd when printing from a Windows 9x client.
+ o Unresolved symbols in libsmbclient which caused
+ applications such as KDE's konqueror to fail when
+ accessing smb:// URLs.
+
+
+Changes since 3.0.8
+-------------------
+
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * Correctly detect errno for no acl/ea support.
+ * BUG 2036: Fix seg fault in 'net ads join'.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Solaris packaging fixes.
+ * Fix seg fault in lanman printing code.
+ * BUG 2017: fix testparm reporting for the passwd program
+ string.
+ * Fix output of smbstatus to match the man page.
+ * BUG 2027: fix conflict with declaration MD5_CTX in system
+ headers.
+ * 2028: Avoid false error messages when copying a long
+ printer name to the device mode.
+
+
+o Guenther Deschner <gd@samba.org>
+ * Allow deldriverex in rpcclient to delete drivers for a
+ specific architecture and a specific version.
+ * Fix a couple of rpcclient spoolss commands (setprinter,
+ setprintername, getdriver) w.r.t to printer-naming scheme.
+ Allow 'localhost' in the server string for certain server-side
+ spoolss functions.
+ * BUG 2015: Do not fail on setting file attributes with
+ acl support enabled.
+
+
+o Michel Gravey <michel.gravey@optogone.com>
+ * Fix build when using gcc 3.0.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix tdb open logic when checking our local_pid after
+ the fork().
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * BUG 1932: Fix crash in 'net getlocalsid' when run as
+ non-root user.
+
+
+o Luke Mewburn <lukem@NetBSD.org>
+ BUG 1661: Fix KRB5_SETPW-defines
+
+
+o Buchan Milne <bgmilne@mandrake.org>
+ * BUG 2023: Mandrake packaging fixes for building 3.0.9.
+
+
+o Lars Mueller <lmuelle@samba.org>
+ * BUG 2013: Fix unresolved symbols in libsmbclient.so.
+
+
+o Martin Zielinski <mz@seh.de>
+ * Add DeletePrinterDriverEx() functionality to rpcclient.
+
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.8
+ Nov 7, 2004
+ =============================
+
+Common bugs fixed in 3.0.8 include:
+
+ o Compile fixes for HP-UX
+ o Fixes for the printer publishing code used when joined to
+ an AD domain.
+ o Incompatibilities with file system quotas.
+ o Several bugs in the spoolss printing code and print system
+ backends.
+ o Inconsistencies in the username map functionality when
+ configured on domain member servers.
+ o Various compile warnings and errors on various platforms.
+ o Fixes for Kerberos interoperability with Windows 200x
+ domains when using DES keys.
+ o Fix for CAN-2004-0930 -- smbd remote DoS vulnerability.
+ o Fix for CAN-2004-0882 -- possible buffer overrun in smbd.
+
+
+New features included in the 3.0.8 release are:
+
+ o New migration functionality added the the net tool
+ for files/directories, printers, and shares.
+ o New experimental idmap backend for assigning uids/gids
+ directly based on the user/group RID when acting as a
+ member of single domain without any trusts.
+ o Additional printer migration support for XP/2003 platforms.
+
+
+===========================
+Change in Winbindd Behavior
+===========================
+
+All usernames returned by winbindd are now converted to lower
+case for better consistency. This means any winbind installation
+relying on the winbind username will need to rename existing
+directories and/or files based on the username (%u and %U) to lower
+case (e.g. mv $name `echo $name | tr '[A-Z]' '[a-z]'`). This may
+include mail spool files, home directories, valid user lines in
+smb.conf, etc....
+
+
+======================
+Change in Username Map
+======================
+
+Previous Samba releases would only support reading the fully qualified
+username (e.g. DOMAIN\user) from the username map when performing a
+Kerberos login from a client. However, when looking up a map
+entry for a user authenticated by NTLM[SSP], only the login name would be
+used for matches. This resulted in inconsistent behavior sometimes
+even on the same server.
+
+Samba 3.0.8 obeys the following rules when applying the username
+map functionality:
+
+ * When performing local authentication, the username map is
+ applied to the login name before attempting to authenticate
+ the connection.
+ * When relying upon a external domain controller for validating
+ authentication requests, smbd will apply the username map
+ to the fully qualified username (i.e. DOMAIN\user) only
+ after the user has been successfully authenticated.
+
+
+######################################################################
+Changes
+#######
+
+Changes since 3.0.7
+-------------------
+
+smb.conf changes
+----------------
+ Parameter Name Action
+ -------------- ------
+ force printername New
+ sendfile disabled by default
+
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * Ensure extended security bit is on only if we negotiated
+ extended security.
+ * Simplify statcache to use an in-memory tdb.
+ * If you're selecting a hash algorithm for tdb, you need
+ to do it at open time.
+ * Removed old dir caching code - not being used now we
+ have the statcache anyway.
+ * Simplify the mangle hash code to use an in-memory tdb.
+ * Merge iconv changes from Samba 4 branch.
+ * Fix parsing of names ending in dot and a few other error
+ returns.
+ * BUG 1667: Smbpasswd file could be left locked on some
+ error exits.
+ * Fixes for smbclient tar functionality.
+ * BUG 1743: Fix logic bug the deferred open code.
+ * Don't try to set security descriptors on shares where
+ this has been turned off.
+ * Return correct error codes on old SEARCH call.
+ * Ensure we set errno = E2BIG when we overflow in the
+ fast-path character conversion code.
+ * Fix the roundup problem (returning 1mb roundup) for
+ non-Windows clients.
+ * Added 'stat' command to smbclient to exercise the
+ UNIX_FILE_BASIC info level.
+ * Fix bug where we could incorrectly set sparse attribute.
+ * Fix incorrect locks/unlocks in tdb_lockkeys()/tdb_unlockkeys()
+ (reported by Taj Khattra <taj.khattra@gmail.com>).
+ * Remove locked keys tdb code.
+ * BUG 1886: Prevent delete on close being set for readonly files
+ (and return the correct error code).
+ * Ensure we pass most of the new lock tests except for the cancel
+ lock which is yet to be added (merged from Samba 4 branch).
+ * BUG 1947: Fix incorrect use of getpwnam() etc. interface.
+ * BUG 1956: Ensure errno is saved and restored consistently on a
+ normal_close.
+ * BUG 1651: Adapted patch from Nalin Dahyabhai for ensuring
+ that all of the appropriate service principal names are set
+ upon joining an AD domain.
+ * Fix the correct use of resume name in the trans2 code.
+ * BUG 1717: Adapted patch from Nalin Dahyabhai to detect the
+ correct salt used when generated the DES key after joining an
+ AD domain.
+ * Enhanced krb5 detection routines in the autoconf scripts.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Avoid changing the machine account password in the passdb
+ backend, when it has 'already been changed'. This occurs
+ in situations where the secure channel between the workstation
+ and the DC breaks down, such as occurred in the MS04-11
+ security patch.
+ * Fix utility name in error message in ntlm_auth.
+ * Fix NTLMv2 for use with pam_winbind.
+ * Remove conversion to and from UTF8 on the winbind pipe.
+ * Allow 'require_membership_of' and 'require-membership-of'.
+ * Fix the error code for 'you didn't specify a domain' in
+ ntlm_auth.
+ * Use sys_getgroups() rather than scanning all groups
+ when generating SAMR replies.
+
+
+o Igor Belyi <sambauser@katehok.ac93.org>
+ * Ensure pdb user is deleted first before deleting UNIX
+ user (LDAP backend needs this ordering).
+
+
+o Cornelio Bondad Jr <Corny.Bondad@hp.com>
+ * Fix core dump in 'net rpc vampire'.
+
+
+o Vince Brimhall <vbrimhall@novell.com>
+ * Make ldapsam_compat robust against NULL attributes.
+
+
+o Gerald Carter <jerry@samba.org>
+ * Don't limit the number of groups returned by winbindd_getgroups()
+ by NGROUPS_MAX.
+ * BUG 1519: Match Windows 2000 behavior when opening a
+ printer using a servername in the form of an IP address or
+ DNS name.
+ * BUG 1907: remove extra slashes from the printer name in
+ getprinterdriverdir_1().
+ * Fix standard_sub_snum() to use the current user's gid.
+ * Fix background queue update bug (based on Volker's initial work
+ in 3.1.0).
+ * Add 'force printername' service parameter for people that want
+ to enforce printername == sharename for spoolss printing.
+ * Ensure consistent usage of the username map. Use the fully
+ qualified DOMAIN\user format for 'security = domain|ads' and
+ apply after authentication has succeeded.
+ * Cosmetic fix for getent output -- lowercase the username only
+ and not the complete domain\username string.
+ * Packaging fixes for Solaris, Redhat, & Fedora.
+
+
+o Sean Chandler <sean.chandler@verizon.net>
+ * Fix memlieak in cliconnect.c.
+
+
+o Darren Chew <darrenc@vicscouts.asn.au>
+ * Solaris packaging fixes.
+
+
+o Nalin Dahyabhai <nalin@redhat.com>
+ * SMB signing fix for 56-bit DES session keys.
+
+
+o Guenther Deschner <gd@samba.org>
+ * add IA64 to the architecture table of printer-drivers.
+ * Add file/share/printer migration functionality to
+ the net command.
+ * Show correct help for net groupmap commands.
+ * Fix deadlock loop in winbind's required_membership_sid
+ verification.
+ * Bring the same level of "required_membership"-functionality
+ that ntlm_auth uses, to pam_winbindd as well.
+ * Prevent "net lookup kdc" from seg-faulting when
+ using our own implementation of krb5_lookup_kdc with
+ heimdal.
+ * Adding getprinter level 7 to rpcclient.
+ * Support migrating printers|shares|files from Server A
+ to Server B while running the net-command on client C.
+ * Fixed krb5_krbhost_get_addrinfo()-parameters and make
+ failure of this call non-critical (Thanks to Love @ Heimdal
+ for the explanation and patch).
+ * Fix typos in net's usage-output.
+ * Fix the paranoia-check to ensure the ldap-attribute and the
+ smb.conf-parameter for samba's "algorithmic rid base" in ldapsam
+ are identical.
+ * Fix several bugs in the _samr_query_useraliases() rpc reply.
+ * Check correct string length when verifying password-policies
+ and using extended characters (Thanks to Uwe Morgenroth from CC
+ Compunet and Volker).
+ * Make 'password history'-behavior in ldapsam more consistent.
+ * Adding "Windows x64" as architecture string and driverdir "x64"
+ for the 64bit AMD platform.
+ * BUG 1343: Readd WKGUID-binding to match the correct default-
+ locations of new User-, Group- and Machine-Accounts in Active
+ Directory (this got lost during the last trunk-merge).
+ * Fix printer-migration w.r.t. to new naming-convention for
+ policy-handles.
+ * Allow to migrate win2k3/xp-drivers as well.
+ * Add client-side support of triggering ads printer publishing
+ over msrpc setprinter calls inside the net-tool.
+ * Add the idmap_rid module (written in conjunction with
+ Sumit Bose <sbose@suse.de>).
+ * BUG 1661: Fix build with recent heimdal releases.
+ * Prevent idmap_rid from making unnecessary calls to domain
+ controllers for trusted domains.
+
+
+o Arthur van Dongen <avdongen@xs4all.nl>
+ * Fix typos in pam_winbind log messages and SuSE
+ packaging files.
+
+
+o Rob Foehl <rwf@loonybin.net>
+ * Typo fixes for log messages in printer publishing code.
+ * Fix memory leak in printer publishing code.
+ * Ensure print_backend_init() only gets called once.
+ * Have smbd check the published status of all printers
+ at startup.
+ * Cleanup up the XXX_a_printer() API for consistency.
+ * Refactored the printer publishing code and include better
+ error handling.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Fix IP address override in mount.cifs mount helper and clean
+ up warning messages from the sparse tool and expand syntax help.
+ * Strip guest mount option off before sending to kernel mount
+ routine to avoid logging spurious message.
+
+
+o Satoh Fumiyasu <fumiya@samba.gr.jp>
+ * BUG 1732: Limit share names returned by RAP based on windows
+ character width, not unix character width.
+ * BUG 1498: Ensure that acl entries are stored in the correct
+ order.
+
+
+o Brett Funderburg <brett@deepfile.com>
+ * Pass create options parameter to nt_create_andx() function
+ from the python bindings.
+ * BUG 1864: Add sd->type field to security descriptor Python
+ representation.
+ * Return an error if a Netapp filer returns NT_STATUS_ACCESS_DENIED
+ when trying to return the security descriptor for a file.
+ * BUG 1884: Fixes for the Python bindings to use the value
+ of the desired_access filed passed into the lsa_open_policy()
+ routines.
+
+
+o Michael Gravey <michel.gravey@optogone.com>
+ * BUG 1776: Fix warnings when building modules caused by
+ certain versions of GNU ld not using the the default
+ --allow-shlib-undefined flag.
+
+
+o Chris Hertel <crh@samba.org>
+ * Fix logic bug in splay tree data structure when finding
+ a leaf node.
+ * Fix bug where an invalid MAC address would be printed by
+ a node status lookup from nmblookup.
+
+
+o Uli Iske <iske@elkb.de>
+ * Update the DNS/eDirectory LDAP schema file.
+
+
+o Björn Jacke <bjacke@sernet.de>
+ * BUG 1766: Unify charset-handling in Content-Type:-headers to
+ UTF-8. Reformat msgstr in msg-files to UTF-8.
+ * Do not use display charset for swat output.
+ * Convert the share names correctly from unix encoding to web
+ encoding and vice versa.
+ * Convert files from status page from unix charset to UTF-8.
+
+
+o Guenter Kukkukk <guenter.kukkukk@kukkukk.com>
+ * BUG 1590: Fix for talking to OS/2 clients (max_mux ignored).
+
+
+o Tom Lackemann <cessnatomny@yahoo.com>
+ * BUG 1954: Fix memory leak in posix acl code.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Robustnss fix for winbindd when sending multiple requests
+ at a high rate for a slow operation.
+ * Solve the problem of user sids ending up with gid's
+ and vice versa.
+ * Use sys_fork instead of fork for the dual daemon so that
+ we get the correct debug pid in the logfiles.
+ * Based on patch from jmcd, implement special lists for the LDAP
+ user attributes to delete.
+ * Fix creation of aliases via usrmgr. Winbind was too strict
+ checking the type of sids.
+ * Lowercase all usernames returned by winbind.
+ * BUG 1545, 1823: Only issue the ldap extended password change
+ operation if the ldap server supports it. Also ignore object
+ class violation errors from the extended operation.
+ * Optimization for 'idmap backend = ldap': When asking sid2id
+ for the wrong type, don't ask ldap when we have the opposite mapping
+ in the local tdb.
+ * Fix ldapsam_compat homeDrive.
+ * Add usersidlist and allowedusers subcommands to the net tool
+ in order to support scanning a file server's share and list
+ all users who have permission to connect there.
+ * Allow for multiple DC's to be named as #1c names in lmhosts.
+ * Memory leak fixes.
+ * Fix checks for the local pid of an smbd process after
+ reopening tdbs.
+
+
+o Herb Lewis <herb@samba.org>
+ * Added tdbtool to be built by default.
+
+
+o Love <lha@stacken.kth.se>
+ * BUG 1955: Inconsistent error return.
+
+
+o Sorin Manolache <sorinm@gmail.com>
+ * Memory leak fix.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Allow 'net ads lookup' to rely on command line arguments
+ if contacting an ADS server fails; utilize cldap for lookups.
+ * Fixup formatting errors in TDB_LOG calls; add printf attribute
+ support to tdb log functions.
+
+
+o Bill McGonigle <bill+samba@bfccomputing.com>
+ * BUG 1926: Type in debug message.
+
+
+o Sean McGrath
+ * BUG 1822: Add -D_REENTRANT to CPPFLAGS and -lthread to LDFLAGS
+ for libsmbclient.
+
+
+o Luke Mewburn <lukem@NetBSD.org>
+ * BUG 1782: Prevent testparm from displaying parameter synonyms.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Fix crash in smbcquotas and smbcacls caused by setup_logging().
+ * Fix client quota support.
+ * Fix opening of system quota file.
+
+
+o Lars Mueller <lmuelle@samba.org>
+ * Small fixes for autogen.sh to deal with version detection
+ of autoconf and autoheader; fixes for examples using
+ libtool to adhere to stricter syntax of newer version.
+
+
+o Henrik Nordstrom <hno@squid-cache.org>
+ * Allow winbindd to return the correct number of groups
+ when the groups array must be enlarged.
+
+
+o Narayana Pattipati <narayana.pattipati@wipro.com>
+ * Solaris autoconf detection fixes.
+
+
+o Tim Potter <tpot@samba.org>
+ * BUG 1360: (correct fix) Use -Wl when passing flags to
+ the linker.
+ * HP-UX compile fixes (from JBravo on #samba-technical).
+ * BUG 1731: More HP-UX compiles fixes.
+ * BUG 1778: Include yp_prot.h before ypclnt.h as AIX 5.2
+ spits the dummy otherwise.
+ * Fix bug in Python printerdata wrapper.
+ * BUG 1762: nss_winbind fixes on AIX 5.x (patch from
+ <bugzilla-samba@thewrittenword.com>).
+ * Fix parameter confusion in priming of name-to-sid cache
+ (Found by Qiao Yang).
+ * BUG 1888: Remove '..' from all pre-processor commands.
+ * BUG 1903: Change some #if DEBUG_PASSWORD's to #ifdef
+ DEBUG_PASSWORD.
+
+
+o Matt Selsky <selsky@columbia.edu>
+ * BUG 350: use autoconf 2.57 feature for checking header file
+ preprocessing (fixes configure warnings on Solaris).
+
+
+o Richard Renard <rrenard@idealx.com>
+ * Fix usermgr.exe and trust relationships.
+
+
+o Paul Szabo <psz@maths.usyd.edu.au>
+ * Fix to make find_workgroup use the same
+ truncation as create_workgroup.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * Ensure cli_write() can support writes >= 65536 bytes.
+
+
+o Simo Sorce <idra@samba.org>
+ * Added check password script code in examples/auth/crackcheck/
+ * Fix memory corruption bug caused in freeing static memory.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Remove lp_use_mmap() from map_file() since the latter
+ is for read only and does not require coherence.
+ * Ensure that the uuid pack/unpack routines do not go past
+ the end of the structure.
+ * Converted Samba 3 tree to use the new utf-16 aware iconv
+ code.
+ * Changed iconv to recognise UCS-2LE and UTF-16LE as synonyms.
+ * Ensure configure only uses '=' instead of the bashism '=='.
+ * Reduces the number of tdb locking calls made on file IO.
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Convert internal data to UTF-8 before calling libxml2.
+ * Complain if 'password chat' doesn't contain the %u variable
+ (based on a patch by Ronan Waide).
+
+
+o Josef Zlomek
+ * BUG 1541: Fix recursive ls in smbclient.
+
+
+o Igor Zhbanov <bsg@uniyar.ac.ru>
+ * BUG 1797: Prevent winbind and nmbd from ignoring the "-l"
+ option.
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.7
+ Sept 13, 2004
+ =============================
+
+Common bugs fixed in 3.0.7 include:
+
+ o Fixes for two Denial of Service vulnerabilities
+ (CVE ID# CAN-2004-0807 & CAN-2004-0808).
+ o Winbind failure to return user entries under certain
+ conditions.
+ o Syntax errors in the OpenLDAP schema file (samba.schema).
+ o Printing errors caused by not setting default values
+ for the various printing commands.
+
+
+Changes since 3.0.6
+-------------------
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ winbind enable local accounts disabled by default
+
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Fix parsing of names ending in dot and a few other error
+ returns.
+ * BUG 1674: Move the symlinks checks into reduce_name().
+ * Fix memleak when checking the valid names smb.conf option.
+ * Fix memleak on error return path in the file open code.
+ * More paranoia checks in the hash2 mangling code.
+ * Fix syntax error in configure.in.
+ * Match Win2k3's behavior for pathname parsing error returns.
+ * Make nmbd more robust against bad netbios packets
+ (CAN-2004-0808).
+ * Add more checks for invalid ASN.1 packets for SPNEGO packets
+ (CAN-2004-0807).
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Janitor work in loadparm.c -- remove unused parameters.
+
+
+o Gerald Carter <jerry@samba.org>
+ * BUG 1464: Ensure that printing commands are initialized even
+ if the 'printing' parameter is not explicitly set.
+ * Resolve name conflict on DEC OSF-5.1 (inspired by patch from
+ Adharsh Praveen <rprav@india.hp.com>)
+ * Work around parsing error in the print change notify code.
+ * remove duplicate declaration of getprintprocdir from
+ rpcclient.
+ * Only use sAMAccountName and not userPrincipalName when looking
+ up a username in AD since the breaks winbindd (lookup_name()
+ only works with the sAMAccountName).
+ * Fix bug with winbindd_getpwnam() caused by Microsoft DC's not
+ filling in the username in the user_info3.
+ * Fix logic bug in the check for creating a user's home directory
+ in register_vuid(); caused home directory to be mismatched to
+ the first share in smb.conf under certain conditions.
+ * BUG 1656: rename auto.a to auto.smb.
+ * Ensure that we assign our pid to print jobs (and not our
+ parent's pid); ensures that spooling jobs from dead smbds
+ are removed from the tdb.
+ * Disable 'winbind enable local accounts' by default.
+ * Adding some initial checks for DragonFly (same as
+ FreeBSD 4.1).
+
+
+o Guenther Deschner <gd@samba.org>
+ * Use SMB_ASSERT() to track down NULL printer names in
+ the tdb open code.
+ * Revert fix for BUG 1474 to avoid unnecessary packaging
+ dependencies.
+
+
+o Olaf Flebbe <o.flebbe@science-computing.de>.
+ * BUG 1627: fix for NIS compiles on HPUX 11.00, AIX 4.3
+ and 5.1.
+ * BUG 1626: More compile fixes.
+
+
+o Rob Foehl <rwf@loonybin.net>
+ * Don't clear the PRINT_ATTRIBUTE_PUBLISHED was getting reset
+ by attempts to sanitize the defined attributes.
+
+
+o SATOH Fumiyasu <fumiya@miraclelinux.com>
+ * BUG 1546: Preserve errno in MB strupper_m/strlower_m.
+
+
+o Helmut Heinreichsberger <helmut.heinreichsberger@chello.at>.
+ * BUG 1657: Remove used initialized variable,
+ * BUG 1658: Add a little bit of const.
+
+
+o Volker Lendecke <vl@samba.org>
+ * If there's garbage in the pidfile, we should not panic
+ but assume that no one else is around. We can't find the
+ other guy anyway.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Fixup format string in the tdb error messages.
+
+
+o Jonas Olsson <lexicon@lysator.liu.se>
+ * BUG 1416: Don't reuncture a users list to NGROUPS_MAX when
+ reporting the list in usrmgr.exe.
+
+
+o Tim Potter <tpot@samba.org>
+ * Fix out-of-tree builds (problem with the script to generate
+ the svn version number).
+ * BUG 1360: Need to use -Wl when passing flags to the linker.
+ * BUG 1741: Define a struct nss_groupsbymem for HPUX 11 which
+ doesn't have one of its own.
+
+o Simo Sorce <idra@samba.org>
+ * Fixup compile issues on AIX caused by broken strlen() and
+ strdup().
+ * Update debian packaging files.
+
+
+o Dimitri van der Spek <dwspek@aboveit.nl>
+ * Use the correct counter when copying group rids from the
+ user_info3 struct in pam_winbind.
+
+
+o Qiao Yang <qyang@stbernard.com>
+ * BUG 1622: Only cache the user
+
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.6
+ Aug 19, 2004
+ =============================
+
+Common bugs fixed in 3.0.6 include:
+
+ o Schannel failure in winbindd.
+ o Numerous memory leaks.
+ o Incompatibilities between the 'write list' and 'force user'
+ smb.conf options.
+ o Premature optimization of the open_directory() internal
+ function that broke tools such as the ArcServe backup
+ agent, Macromedia HomeSite, and Robocopy.
+ o Corrupt workgroup names in nmbd's browse.dat.
+ o Sharing violation errors commonly seen when opening
+ when serving Microsoft Office documents from a Samba
+ file share.
+ o Browsing problems caused by an apostrophe (') in the
+ computer's description field.
+ o Problems creating special file types from UNIX CIFS
+ clients and enabling 'unix extensions'.
+ o Fix stalls in smbd caused by inaccessible LDAP servers.
+ o Remove various memory leaks.
+ o Fix issues in the password lockout feature.
+
+New features introduced in this release include:
+
+ O Support symlinks created by CIFS clients which
+ can be followed on the server.
+ o Using a cups server other than localhost.
+ o Maintaining the service principal entry in the system
+ keytab for integration with other kerberized services.
+ Please refer to the 'use Kerberos keytab' entry in
+ smb.conf(5). When using the heimdal Kerberos libraries,
+ you must also specify the following in /etc/krb5.conf:
+ [libdefaults]
+ default_keytab_name = FILE:/etc/krb5.keytab
+ o Support for maintaining individual printer names
+ stored separately from the printer's sharename.
+ o Support for maintaining user password history.
+ o Support for honoring the logon times for user in a
+ Samba domain.
+
+
+============================================
+unix extensions = yes (default) and symlinks
+============================================
+
+Beginning with Samba 3.0.6pre1 (formerly known as 3.0.5pre1),
+clients supporting the UNIX extensions to the CIFS protocol
+can create symlinks to absolute paths which will be **followed**
+by the server. This functionality has been requested in order
+to correctly support certain applications when the user's home
+directory is mounted using some type of CIFS client (e.g. the
+cifsvfs in the Linux 2.6 kernel).
+
+If this behavior is not acceptable for your production environment
+you can set 'wide links = no' in the specific share declaration in
+the server's smb.conf. Be aware that disabling wide link support
+out of a share in Samba may impact the server's performance due
+to the fact that smbd will now have to check each path additional
+times before traversing it.
+
+
+========================
+Password History Support
+========================
+
+The new password history feature allows smbd to check the new
+password in password change requests against a list of the user's
+previous passwords. The number of previous passwords to save can
+be set using pdbedit (4 in this example):
+
+ root# pdbedit -P "password history" -C 4
+
+When using the ldapsam passdb backend, it is vital to secure the
+following attributes from access by non-administrative users:
+
+ * sambaNTPassword
+ * sambaLMPassword
+ * sambaPasswordHistory
+
+You should refer to your directory server's documentation on how
+to implement this restriction.
+
+
+Changes since 3.0.5
+-------------------
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ cups server New
+ defer sharing violations New
+ force unknown acl user New
+ ldap timeout New
+ printcap cache time New
+ use Kerberos keytab New
+
+commits
+-------
+o Jeremy Allison <jra@samba.org>
+ * Correct path parsing bug that broke DeletePrinterDriverEx().
+ * Fix bugs in check_path_syntax() caught by asserts.
+ * Internal change - rearrange internal global case setting
+ variables to a per connection basis.
+ * BUG 1345: Fix premature optimization in unix_convert().
+ * Allow clients to truncate a locked file.
+ * BUG 1319: Always check to see if a user as write access
+ to a share, even when 'force user' is set.
+ * Fix specific case of open that doesn't cause oplock break,
+ or share mode check.
+ * Correct sid type is WKN_GROUP, not alias. Added some
+ more known types (inspired by patch from Jianliang Lu).
+ * Allow creation of absolute symlink paths via CIFS clients.
+ * Fix charset bug in when invoking send_mailslot().
+ * When using widelinks = no, use realpath to canonicalize
+ the connection path on connection create for the user.
+ * Enhance stat open code.
+ * Fix unix extensions mknod code path.
+ * Allow unix domain socket creation via unix extensions.
+ * Auto disable the 'store dos attribute' parameter if the
+ underlying filesystem doesn't support EAs.
+ * Implement deferred open code to fix a bug with Excel files
+ on Samba shares.
+ * BUG 1427: Catch bad path errors at the right point. Ensure
+ all our pathname parsing is consistent.
+ * Fix SMB signing error introduced by the new deferred open
+ code.
+ * Change default setting for case sensitivity to "auto". (see
+ commit message -- r1154 -- for details).
+ * Add new remote client arch -- CIFSFS.
+ * Allow smbd to maintain the service principal entry in the
+ system keytab file (based on patch Dan Perry <dperry@pppl.gov>,
+ Guenther Deschner, et. al.).
+ * Fix longstanding memleak bug with logfile name.
+ * Fix incorrect type in printer publishing (struct uuid,
+ not UUID_FLAT).
+ * Heimdal compile fixes after introduction of the new ketyab
+ feature.
+ * Ensure we check attributes correctly on rename request.
+ * Ensure we defer a sharing violation on rename correctly.
+ * BUG 607: Ensure we remove DNS and DNSFAIL records immediately
+ on timeout.
+ * Fix bogus error message when using "mangling method = hash"
+ rather than hash2.
+ * Turn on sendfile by default for non-Win9x clients.
+ * Handle non-io opens that cause oplock breaks correctly.
+ * Ensure ldap replication sleep time is not more than 5 seconds.
+ * Add support for storing a user's password history.
+ LDAP portion of the code was based on a patch from
+ Jianliang Lu <j.lu@tiesse.com>.
+ * Correct memory leaks found in the password change code.
+ * Fix support for the mknod command with the Linux CIFS client.
+ * Remove support for passing the new password to smbpasswd
+ on the command line without using the -s option.
+ * Ensure home directory service number is correctly reused
+ (inspired by patches from Michael Collin Nielsen
+ <michael@hum.aau.dk>).
+ * Fix to stop printing accounts from resetting the bas
+ password and account lockout flags.
+ * If a account was locked out by an admin (and has a bad
+ password count of zero) leave it locked out until an admin
+ unlocks it (but log a message).
+ * Ensure we return the same ACL revision on the wire that
+ W2K3 does.
+ * BUG 1578: Hardcode replacement for invalid characters as '_'
+ (based on fix from Alexander E. Patrakov <patrakov@ums.usu.ru>).
+ * Fix hashed password history for LDAP backends.
+ * Enforce logon hours restrictions if confiogured (based on code
+ from Richard Renard <rrenard@idealx.com>).
+ * BUG 1606: Force smbd to disable sendfile with DOS clients
+ and ensure that the chained header is filled in for ...&X
+ commands.
+ * BUG 1602: Fix access to shares when all symlink support
+ has been disabled.
+
+
+
+o Tom Alsberg <alsbergt@cs.huji.ac.il>
+ * Allow pdbedit to export a single user from a passdb backend.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Fix parsing bug in GetDomPwInfo().
+ * Fix segfault in 'ntlm_auth --diagnostics'.
+ * Re-enable code to allow sid_to_gid() to perform a group
+ mapping lookup before checking with winbindd.
+ * Fix memory leak in the trans2 signing code.
+ * Allow more flexible GSS-SPENGO client and server operation
+ in ntlm_auth.
+ * Improve smbd's internal random number generation.
+ * Fix a few outstanding long password changes in smbd.
+ * Fix LANMAN2 session setup code.
+
+
+o Eric Boehm <boehm@nortelnetworks.com>
+ BUG 703: Final touches on netgroup case lookups.
+
+
+o Jerome Borsboom <j.borsboom@erasmusmc.nl>
+ * Ensure error status codes don't get overwritten in
+ lsa_lookup_sids() server code.
+ * Correct bug that caused smbd to overwrite certain error
+ codes when returning up the call stack.
+ * Ensure the correct sid type returned for builtin sids.
+
+
+o Gerald Carter <jerry@samba.org>
+ * Fix a few bugs in the Fedora Packaging files.
+ * Fix for setting the called name to by our IP if the
+ called name was *SMBSERVER and *SMBSERV. Fixes issue
+ with connecting to printers via \\ip.ad.dr.ess\printer
+ UNC path.
+ * BUG 1315: fix for schannel client connections to servers
+ when we haven't specifically negotiated AUTH_PIPE_SEAL.
+ * Allow PrinterDriverData valuenames with embedded backslashes
+ (Fixes bug with one of the Konica Fiery drivers).
+ * Fixed string length miscalculation in netbios names that
+ resulted in corrupt workgroup names in browse.dat.
+ * When running smbd as a daemon, launch child smbd to update
+ the lpq cache listing in the background.
+ * Allow printers "Printers..." folder to be renamed to a string
+ other than the share name.
+ * Allow winbindd to use domain trust account passwords when
+ running on a Samba DC to establish an schannel to remote
+ domains.
+ * Fix bad merge and ensure that we always use tdb_open_log()
+ instead of tdb_open_ex() (the former call enforce the 'use
+ mmap' parameter).
+ * BUG 1221: revert old change that used single and double
+ quotes as delimeters in next_token(), and change
+ print_parameter() to print out parm values surrounded by
+ double quotes (instead of single quotes).
+ * Prevent home directories added during the SMBsesssetup&X from
+ being removed as unused services.
+ * Invalidate the print object cache for open printer handles when
+ smbd receives a message that an attribute on a given printer
+ has been changed.
+ * Cause the configure script to exit if --enable-cups[=yes] is
+ defined and the system does not have the cups devel files
+ installed.
+ * BUG 1297: Prevent map_username() from being called twice
+ during logon.
+ * Ensure that we use the userPrincipalName AD attribute
+ value for LDAP SASL binds.
+ * Ensure we remove the tdb entry when deleting a job that
+ is being spooled.
+ * BUG 1520: Work around bug in Windows XP SP2 RC2 where the
+ client sends a FindNextPrintChangeNotify() request without
+ previously sending a FindFirstPrintChangeNotify(). Return
+ the same error code as Windows 2000 SP4.
+ * BUG 1516: Manually declare ldap_open_with_timeout() to
+ workaround compiler errors on IRIX (or other systems without
+ LDAP headers).
+ * Merge security fixes for CAN-2004-0600, CAN-2004-0686 from
+ 3.0.5.
+ * Corrected syntax error in the OID for sambaUnixIdPool,
+ sambaSidEntry, & sambaIdmapEntry object classes.
+ * Tighten the cache consistency with the ntprinters.tdb entry
+ an the in memory cache associated with open printer handles.
+ * Make sure that register_messages_flags() doesn't overwrite
+ the originally registered flags.
+
+
+o Fabien Chevalier <fabien.chevalier@supelec.fr>
+ * Debian BUG 252591: Ensure that the return value from the
+ number of available interfaces is initialized in case no
+ interfaces are actually available.
+
+
+o Guenther Deschner <gd@sernet.de>
+ * Implement 'rpcclient setprintername'.
+ * Add local groups to the user's NT_TOKEN since they are
+ actually supported now.
+ * Heimdal compile fixes after introduction of the new keytab
+ feature.
+ * Correctly honor the info level parameter in 'rpcclient
+ enumprinters'.
+ * Reintroduce 'force unknown acl user' parameter. When getting a
+ security descriptor for a file, if the owner sid is not known,
+ the owner uid is set to the current uid. Same for group sid.
+ * Ensure that REG_SZ values in the SetPrinterData actually
+ get written in UNICODE strings rather than ASCII.
+ * Ensure that the last Kerberos error return is not invalid.
+ * Display share ACL entries from rpcclient.
+ * Correct infinite loop in pam_winbind's verification of
+ group membership in the 'other sids' field in the user_info3
+ struct.
+
+
+o Fabian Franz <FabianFranz@gmx.de>
+ * Support specifying a port in the device URL passed to smbspool.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Handle -S and user mount parms in mount.cifs.
+ * Fix user unmount of shares mount with suid mount.cifs.
+ * prevent infinite recusion in reopen_logs() when expanding
+ the smb.conf variable %I.
+
+
+o Bjoern Jacke <bj@sernet.de>
+ * Install libsmbclient into $(LIBDIR), not into hard coded
+ ${prefix}/lib. This helps amd64 systems with /lib and /lib64
+ and an explicit configure --libdir setting.
+
+
+o <kawasa_r@itg.hitachi.co.jp>
+ * Correct more memory leaks and initialization bugs.
+ * Fix bug that prevented core dumps from being generated
+ even if you tried.
+ * Connect to the winbind pipe in non-blocking mode to
+ prevent processes from hanging.
+ * Memory leak fixes.
+
+
+o Stephan Kulow <coolo@suse.de>
+ * Fix crash bug in libsmbclient.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Added vfs_full_audit module.
+ * Add vfs_afsacl.c which can display & set AFS acls via
+ the NT security editor.
+ * Fix crash bug caused by trying to Base64 encode a NULL string.
+ * Fix DOS error code bug in reply_chkpath().
+ * Correct misunderstanding of the max_size field in
+ cli_samr_enum_als_groups; it is more like an account_control
+ field with individual bits what to retrieve.
+ * Implement 'net rpc group rename' -- rename domain groups.
+ * Implement the 'cups server' option. This makes it possible
+ to have virtual smbd's connect to different cups daemons.
+ * Paranoia fixes when adding local aliases to a user's NT_TOKEN.
+ * Fix sid_to_gid() calls in winbindd to prevent loops.
+ * Ensure that local_sid_to_gid() sets the type of the group on
+ return.
+ * Make sure that the clients are given back the IP address to
+ which they connected in the case of a multi-homed host. Only
+ affects strings the spoolss printing replies.
+ * Fix the bad password lockout. This has not worked as pdb_ldap.c
+ did not ask for the modifyTimestamp attribute, so it could
+ not find it. Try not to regress by not putting that attrib
+ in the main list but append it manually for the relevant searches.
+ * Fix two memleaks in login_cache.c.
+ * fixes memory bloat when unmarshalling strings.
+ * Fix compile errors using gcc 3.2 on SuSE 8.2.
+ * Fix the build for systems without Kerberos headers.
+ * Allow winbindd to handle authentication requests only when
+ started without either an 'idmap uid' or 'idmap gid' range.
+ * Fix the build for systems without ldap headers.
+ * Fix interaction between share security descriptor and the
+ 'read only' smb.conf option.
+ * Fix bug that caused _samr_lookupsids() with more than 32 (
+ MAX_REF_DOMAINS) SIDs to fail.
+ * Allow the 'idmap backend' parameter to accept a list of
+ LDAP servers for failover purposes.
+ * Revert code in smbd to remove a tdb when it has become
+ corrupted.
+ * Add paranoid checks when mapping SIDs to a uid/gid to
+ ensure that the type is correct.
+ * Initial work on getting client support for sending mailslot
+ datagrams.
+ * Add 'ldap timeout' parameter.
+ * Dont always uppercase 'afs username map'.
+ * Expand aliases for getusersids as well.
+ * Improved NT->AFS ACL mapping VFS module.
+
+
+o Herb Lewis <herb@samba.org>
+ * Add the acls debug class.
+ * Fix logic bug in netbios name truncate routine.
+ * Fix smbd crash caused by smbtorture IOCTL test.
+ * Fix errno tromping before calling iconv to reset the
+ conversion state.
+ * need to leave empty dacl so we can remove last ACE.
+
+
+o Jianliang Lu <Jianliang.Lu@getronics.com>
+ * Fix to stop smbd hanging on missing group member in
+ get_memberuids().
+ * Make sure Samba returns the correct group types.
+ * Reset the bad password count password counts upon a successful login.
+
+
+o Jason Mader <jason@ncac.gwu.edu>
+ * BUG 1385: Don't use non-consts in a structure initialization.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * BUG 1279: SMBjobid fix for Samba print servers running on
+ Big-Endian platforms.
+
+
+o Joe Meadows <jameadows@webopolis.com>
+ * Add optional timeout parameter to ldap open calls.
+ * Allow get_dc_list() to check the negative cache.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * fix a configure logic bug for linux/XFS quotas when
+ using --with-sys-quotas.
+ * Use quota debug class in quota code.
+ * print out the SVN revision by configure,
+
+
+o Buchan Milne <bgmilne@mandrake.org>
+ * Mandrake packaging fixes.
+
+
+o Lars Mueller <lmuelle@samba.org>
+ * BUG 1279: Added 'printcap cache time' parameter.
+ * Fix afs related build issues on SuSE.
+ * Fix compiler warnings in the Kerberos client code.
+
+
+o James Peach <jpeach@sgi.com>
+ * More iconv detection fixes for IRIX.
+ * Compile fixed for systems that do not have C99/UNIX98 compliant
+ vsnprintf by default.
+ * Prevent smbd from attempting to use sendfile at all if it is
+ not supported by the server's OS.
+ * Allow SWAT to search for index.html when serving html files
+ in a directory.
+
+
+o Dan Peterson
+ * Implement NFS quota support on FreeBSD.
+
+
+o Tim Potter <tpot@samba.org>
+ * BUG 1360: Use -Bsymbolic when creating shared libraries to
+ avoid conflicts with identical symbols in the global namespace
+ when loading libnss_wins.so.
+
+
+o Richard Renard <rrenard@idealx.com>
+ * Save the current password as it is being changed into the
+ password history list.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * Fix error return codes on some lock messages.
+ * BUG 1178: Make the libsmbclient routines callable
+ by C++ programs.
+ * BUG 1333: Make sure we return an error code when
+ things go wrong.
+ * BUG 1301: Return NT_STATUS_SHARING_VIOLATION when
+ share mode locking requests fail.
+
+
+o Simo Sorce <idra@samba.org>
+ * Update Debian stable & unstable packaging.
+ * Tidy up parametric options in testparm output.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * Add sigchild handling to winbindd to restart the child
+ daemon if necessary.
+
+
+o Tom Shaw <tomisfaraway@gmail.com>
+ * Use winbindd_fill_pwent() consistently.
+
+
+o Nick Thompson <nickthompson@agere.com>
+ * Protect smbd against broken filesystems which return zero
+ blocksize.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Fixed bug in handling of timeout in socket connections.
+
+
+o Nick Wellnhofer <wellnhofer@aevum.de>
+ * Prevent lp_interfaces() list from being corrupted. Fixes
+ bug where nmbd would lose the list of network interfaces
+ on the system and consequently shutdown.
+
+
+o James Wilkinson <jwilk@alumni.cse.ucsc.edu>
+ * Fix ntlm_auth memory leaks.
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Additional NT status to unix error mappings.
+ * BUG 478: Rename vsnprintf to smb_vsnprintf so we don't
+ get duplicate symbol errors.
+ * Return an error when the last command read from stdin
+ fails in smbclient.
+ * Prepare for better error checking in tar.
+ * BUG 1474: Fix build of --with-expsam stuff on Solaris.
+
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.5
+ July 20, 2004
+ =============================
+
+Please note that Samba 3.0.5 is identical to Samba 3.0.4 with
+the exception of correcting the two security issues outlined
+below.
+
+######################## SECURITY RELEASE ########################
+
+Summary: Multiple Potential Buffer Overruns in Samba 3.0.x
+CVE ID: CAN-2004-0600, CAN-2004-0686
+ (http://cve.mitre.org/)
+
+
+This is the latest stable release of Samba. This is the version
+that production Samba servers should be running for all current
+bug-fixes.
+
+It has been confirmed that versions of Samba 3 prior to v3.0.4
+are vulnerable to two potential buffer overruns. The individual
+details are given below.
+
+=============
+CAN-2004-0600
+=============
+
+Affected Versions: Samba 3.0.2 and later
+
+The internal routine used by the Samba Web Administration
+Tool (SWAT v3.0.2 and later) to decode the base64 data
+during HTTP basic authentication is subject to a buffer
+overrun caused by an invalid base64 character. It is
+recommended that all Samba v3.0.2 or later installations
+running SWAT either (a) upgrade to v3.0.5, or (b) disable
+the swat administration service as a temporary workaround.
+
+This same code is used internally to decode the
+sambaMungedDial attribute value when using the ldapsam
+passdb backend. While we do not believe that the base64
+decoding routines used by the ldapsam passdb backend can
+be exploited, sites using an LDAP directory service with
+Samba are strongly encouraged to verify that the DIT only
+allows write access to sambaSamAccount attributes by a
+sufficiently authorized user.
+
+The Samba Team would like to heartily thank Evgeny Demidov
+for analyzing and reporting this bug.
+
+-------------
+CAN-2004-0686
+-------------
+
+Affected Versions: Samba 3.0.0 and later
+
+A buffer overrun has been located in the code used to support
+the 'mangling method = hash' smb.conf option. Please be aware
+that the default setting for this parameter is 'mangling method
+= hash2' and therefore not vulnerable.
+
+Affected Samba 3 installations can avoid this possible security
+bug by using the default hash2 mangling method. Server
+installations requiring the hash mangling method are encouraged
+to upgrade to Samba 3.0.5.
+
+
+##################################################################
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.4
+ May 8, 2004
+ =============================
+
+Common bugs fixed in Samba 3.0.4 include:
+
+ o Password changing after applying the patch described in
+ the Microsoft KB828741 article to Windows clients.
+ o Crashes in smbd.
+ o Managing print jobs via Windows on Big-Endian servers.
+ o Several memory leaks in winbindd and smbd.
+ o Compile issues on AIX and *BSD.
+
+Changes since 3.0.3
+--------------------
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * Fix path processing for DeletePrinterDriverEx().
+ * BUG 1303: Fix for Microsoft hotfix MS04-011 password change
+ breakage.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Fix alignment bug in GetDomPwInfo().
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * Fix utime[s]() issues in smbwrapper on systems
+ that can boot both the 2.4 and 2.6 Linux kernels.
+
+
+o Gerald Carter <jerry@samba.org>
+ * Fedora packaging fixes.
+ * BUG 1302: Fix seg fault by not trying to optimize a list of
+ invalid gids using the wrong array size.
+ * BUG 1309: fix seg fault caused by trying to strdup(NULL)
+ seen when 'security = share'.
+ * Fix problems when using IBM's compiler on AIX.
+ * Link Developer's Guide, Example Guide, and multi-page HOWTO
+ into SWAT's welcome page.
+ * BUG 1293: fix double free in printer publishing code.
+
+
+o Wim Delvaux <wim.delvaux@adaptiveplanet.com>
+ * Fix for handling timeouts in socket connections.
+
+
+o Michel Gravey <michel.gravey@optogone.com>
+ * BUG 483: patch from to fix password hash creation in SWAT.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Close the open NT pipes before the tdis.
+ * Fix AFS related build issues.
+ * Handle error conditions when base64 encoding a blob of 0 bytes.
+
+
+o Herb Lewis <herb@samba.org>
+ * Added 'acls' debug class.
+
+o kawasa_r@itg.hitachi.co.jp
+ * Multiple variable initialization and memory leak fixes.
+
+
+o Stephan Kulow <coolo@suse.de>
+ * Fix string length bug in libsmbclient that caused KDE's
+ Konqueror to crash.
+ * BUG 429: More libsmbclient fixes.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * BUG 1007, 1279: Store the print job using a little-endian key.
+
+
+o Eric Mertens
+ o Compile fix for OpenBSD (ENOTSUP not supported).
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Correct bug in disks quota views from explorer.
+
+
+o Tim Potter <tpot@samba.org>
+ BUG 1305: Correct debug output.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * Fix incorrect error code mapping.
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Add additional NT_STATUS errorm mappings.
+
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.3
+ April 29, 2004
+ =============================
+
+
+Common bugs fixed in Samba 3.0.3 include:
+
+ o Crash bugs and change notify issues in Samba's printing code.
+ o Honoring secondary group membership on domain member servers.
+ o TDB scalability issue surrounding the TDB_CLEAR_IF_FIRST flag.
+ o Substitution errors for %[UuGg] in smb.conf.
+ o winbindd crashes when using ADS security mode.
+ o SMB signing errors.
+ o Delays in winbindd startup caused by unnecessary
+ connections to trusted domain controllers.
+ o Various small memory leaks.
+ o Winbindd failing due to expired Kerberos tickets.
+
+New features introduced in Samba 3.0.3 include:
+
+ o Improved support for i18n character sets.
+ o Support for account lockout policy based on
+ bad password attempts.
+ o Improved support for long password changes (>14
+ characters) and strong password enforcement.
+ o Support for Windows aliases (i.e. nested groups).
+ o Experimental support for storing DOS attribute on files
+ and folders in Extended Attributes.
+ o Support for local nested groups via winbindd.
+ o Specifying options to be passed directly to the CUPS libraries.
+
+Please be aware that the Samba source code repository was
+migrated from CVS to Subversion on April 4, 2004. Details on
+accessing the Samba source tree via anonymous svn can be found
+at http://svn.samba.org/samba/subversion.html.
+
+
+Changes since 3.0.2a
+--------------------
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ cups options New
+ ea support New
+ only user Deprecated
+ store dos attributes New
+ unicode Removed
+ winbind nested groups New
+
+
+commits
+-------
+
+o Jeremy Allison <jra@samba.org>
+ * Ensure that Kerberos mutex is always properly unlocked.
+ * Removed Heimdal "in-memory keytab" support.
+ * Fixup the 'multiple-vuids' bugs in our server code.
+ * Correct return code from lsa_lookup_sids() on unmapped
+ sids (based on work by vl@samba.org).
+ * Fix the "too many fcntl locks" scalability problem
+ raised by tridge.
+ * Fixup correct (as per W2K3) returns for lookupsids
+ as well as lookupnames.
+ * Fixups for delete-on-close semantics as per Win2k3 behavior.
+ * Make SMB_FILE_ACCESS_INFORMATION call work correctly.
+ * Fix "unable to initialize" bug when smbd hasn't been run with
+ new system and a user is being added via pdbedit/smbpasswd.
+ * Added NTrename SMB (0xA5).
+ * Fixup correct timeout values for blocking lock timeouts.
+ * Fix various bugs reported by 'gentest'.
+ * More locking fixes in the case where we own the lock.
+ * Fix up regression in IS_NAME_VALID and renames.
+ * Don't set allocation size on directories.
+ * Return correct error code on fail if file exists and target
+ is a directory.
+ * Added client "hardlink" comment to test doing NT rename with
+ hard links. Added hardlink_internals() code - UNIX extensions
+ now use this as well.
+ * Use a common function to parse all pathnames from the wire for
+ much closer emulation of Win2k3 error return codes.
+ * Implement check_path_syntax() and rewrite string sub
+ functions for better multibyte support.
+ * Ensure msdfs referrals are multibyte safe.
+ * Allow msdfs symlink syntax to be more forgiving.
+ eg. sym_link -> msdfs://server/share/path/in/share
+ or sym_link -> msdfs:\\server\share\path\in\share.
+ * Cleanup multibyte netbios name support in nmbd ( based on patch
+ by MORIYAMA Masayuki <moriyama@miraclelinux.com>).
+ * Fix check_path_syntax() for multibyte encodings which have
+ no '\' as second byte (based on work by ab@samba.org.
+ * Fix the "dfs self-referrals as anonymous user" problem
+ (based on patch from vl@samba.org).
+ * BUG 1064: Ensure truncate attribute checking is done correctly
+ on "hidden" dot files.
+ * Fix bug in anonymous dfs self-referrals again.
+ * Fix get/set of EA's in client library
+ * Added support for OS/2 EA's in smbd server.
+ * Added 'ea support' parameter to smb.conf.
+ * Added 'store dos attributes' parameter to smb.conf.
+ * Fix wildcard identical rename.
+ * Fix reply_ctemp - make compatible with w2k3.
+ * Fix wildcard unlink.
+ * Fix wildcard src with wildcard dest renames.
+ * BUG 1139: Fix based on suggestion by jdev@panix.com.
+ swap lookups for user and group - group will do an
+ algorithmic lookup if it fails, user won't.
+ * Make EA's lookups case independent.
+ * Fix SETPATHINFO in 'unix extensions' support.
+ * Make 3.x pass the Samba 4.x RAW-SEARCH tests - except for
+ the UNIX info levels, and the short case preserve names.
+
+
+o Timur Bakeyev <timur@com.bat.ru>
+ * BUG 1144: only set --with-fhs when the argument is 'yes'
+ * BUG 1152: Allow python modules to build despite libraries added
+ to LDFLAGS instead of LDPATH.
+ * BUG 1141: Fix nss*.so names on FreeBSD 5.x.
+
+
+o Craig Barratt <cbarratt@users.sourceforge.net>
+ * BUG 389: Allow multiple exclude arguments with smbclient
+ tar -Xr options (better support for Amanda backup client).
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Include support for linking with cracklib for enforcing strong
+ password changes.
+ * Add support for >14 character password changes from Windows
+ clients.
+ * Add 'admin set password' capability to 'net rpc'.
+ * Allow 'net rpc samdump' to work with any joined domain
+ regardless of smb.conf settings.
+ * Use an allocated buffer for count_chars.
+ * Add sanity checks for changes in the domain SID in an
+ LDAP DIT.
+ * Implement python unit tests for Samba's multibyte string
+ support.
+ * Remove 'unicode' smb.conf option.
+ * BUG 1138: Fix support for 'optional' SMB signing and other
+ signing bugs.
+ * BUG 169: Fix NTLMv2-only behavior.
+ * Ensure 'net' honors the 'netbios name' in the smb.conf by
+ default.
+ * Support SMB signing on connections using only the LANMAN
+ password and generate the correct the 'session key' for these
+ connections.
+ * Implement --required-membership-of=, an ntlm_auth option
+ that restricts all authentication to members of this particular
+ group.
+ * Improve our fall back code for password changes.
+ * Only send the ntlm_auth 'ntlm-server-1' helper client a '.'
+ after the server had said something (such as an error).
+ * Add 'ntlm-server-1' helper protocol to ntlm_auth.
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * Fix incorrect size calculation of the directory name
+ in recycle.so.
+ * Fix problems with very long filenames in both smbd and smbclient
+ caused by truncating paths during character conversions.
+ * Fix smbfs problem with Tree Disconnect issued before smbfs
+ starts its work.
+
+
+o Gerald Carter <jerry@samba.org>
+ * BUG 850: Fix 'make installmodules' bug on True64.
+ * BUG 66: mark 'only user' deprecated.
+ * Remove corrupt tdb and shutdown (only for printing tdbs,
+ connections, sessionid & locking).
+ * decrement smbd counter in connections.tdb in smb_panic().
+ * RedHat specfile updates.
+ * Fix xattr.h build issue on Debian testing and SuSE 8.2.
+ * BUG 1147; bad pointer case in get_stored_queue_info()
+ causing seg fault.
+ * BUG 761: read the config file before initialized default
+ values for printing options; don't default to bsd printing
+ Linux.
+ * Allow the 'printing' parameter to be set on a per share basis.
+ * BUG 503: RedHat/Fedora packaging fixes regarding logrotate.
+ * BUG 848: don't create winbind local users/groups that already
+ exist in the tdb.
+ * BUG 1080: fix declaration of SMB_BIG_UINT (broke compile on
+ LynxOS/ppc).
+ * BUG 488: fix the 'show client in col 1' button and correctly
+ enumerate active connections.
+ * BUG 1007 (partial): Fix abort in smbd caused by byte ordering
+ problem when storing the updating pid for the lpq cache.
+ * BUG 1007 (partial): Fix print change notify bugs.
+ * BUG 1165, 1126: Fix bug with secondary groups (security = ads)
+ and winbind use default domain = yes. Also ensures that
+ * BUG 1151: Ensure that winbindd users are passed through
+ the username map.
+ * Fix client rpc binds for ASU derived servers (pc netlink,
+ etc...).
+ * BUG 417, 1128: Ensure that the current_user_info is set
+ consistently so that %[UuGg] is expanded correctly.
+ * BUG 1195: Fix crash in winbindd when the ADS server is
+ unavailable.
+ * BUG 1185: Set reconnect time to be the same as the
+ 'winbind cache time'.
+ * Ensure that we return the sec_desc in smb_io_printer_info_2.
+ * Change Samba printers Win32 attribute to PRINTER_ATTRIBUTE_LOCAL.
+ * BUG 1095: Honor the '-l' option in smbclient.
+ * BUG 1023: surround get_group_from_gid() with become_unbecome_root()
+ block.
+ * Ensure server schannel uses the auth level requested by the
+ client.
+ * Removed --with-cracklib option due to potential crash issue.
+ * Fix -lcrypto linking problem with wbinfo.
+ * BUG 761: allow printing parameter to set defaults on a per
+ share basis.
+ * Add 'cups options' parameter to allow raw printing without
+ changing /etc/cups/cupsd.conf.
+ * BUG 1081, 1183: Added remove_duplicate_gids() to smbd and
+ winbindd.
+ * BUG 1246: Fix typo in Fedora /etc/init.d/winbind.
+ * BUG 1288: resolve any machine netbios name (0x00) and not just
+ servers (0x20).
+ * BUG 1199: Fix potential symlink issue in
+ examples/printing/smbprint.
+
+
+o Robert Dahlem <Robert.Dahlem@gmx.net>
+ * BUG 1048: Don't return short names when when 'mangled names = no'
+
+
+o Guenther Deschner <gd@suse.com>
+ * Remove hard coded attribute name in the ads ranged retrieval
+ code.
+ * Add --with-libdir and --with-mandir to autoconf script.
+
+
+o Bostjan Golob <golob@gimb.org>
+ * BUG 1046: Fix getpwent_list() so that the username is not
+ overwritten by other fields.
+
+
+o Landon Fuller <landonf@opendarwin.org>
+ * BUG 1232: patch from landonf@opendarwin.org (Landon Fuller)
+ to fix user/group enumeration on systems whose libc does not
+ call setgrent() before trying to enumerate users (i.e.
+ FreeBSD 5.2).
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Update mount.cifs to version 1.1.
+ * Disable dev (MS_NODEV) on user mounts from cifs vfs.
+ * Fixes to minor security bug in the mount helper.
+ * Fix credential file mounting for cifs vfs.
+ * Fix free of incremented pointer in cifsvfs mount helper.
+ * Fix path canonicalization of the mount target path and help
+ text display in the cifs mount helper.
+ * Add missing guest mount option for mount.cifs.
+
+
+o SATOH Fumiyasu <fumiya@miraclelinux.com>
+ * BUG 1055; formatting fixes for 'net share'.
+ * BUG 692: correct truncation of share names and workgroup
+ names in smbclient.
+ * BUG 1088: use strchr_m() for query_host (smbclient -L).
+ * Patch from to internally count characters correctly.
+
+
+o Paul Green <paulg@samba.org>
+ * Update VOS _POSIX_C_SOURCE macro to 200112L.
+ * Fix bug in configure.ion by moving the first use of
+ AC_CHECK_HEADERS so it is always executed.
+ * Fix configure.in to only use $BLDSHARED to select whether to
+ build static or shared libraries.
+
+
+o Pat Haywarrd <Pat.Hayward@propero.net>
+ * Make the session_users list dynamic (max of 128K).
+
+
+o Cal Heldenbrand <calzplace@yahoo.com>
+ * Fix for for 'pam_smbpass migrate' functionality.
+
+
+o Chris Hertel <crh@samba.org>
+ * fix enumeration of shares 12 characters in length via
+ smbclient.
+
+
+o Ulrich Holeschak <ulrich@holeschak.de>
+ * BUG 932: fix local password change using pam_smbpass
+
+
+o Krischan Jodies <kj@sernet.de>
+ * Implement 'net rpc group delete'
+
+
+o John Klinger <john.klinger@lmco.com>
+ * Return NSS_SUCCESS once the max number of gids possible
+ has been found in initgroups() on Solaris.
+ * BUG 1182: Re-enable the -n 'no cache' option for winbindd.
+
+
+o Volker Lendecke <vl@samba.org>
+ * Fix success message for net groupmap modify.
+ * Fix errors when enumerating members of groups in 'net rpc'.
+ * Match Windows behavior in samr_lookup_names() by returning
+ ALIAS(4) when you search in BUILTIN.
+ * Fix server SAMR code to be able to set alias info for
+ builtin as well.
+ * Fix duplication of logic when creating groups via smbd.
+ * Ensure that the HWM values are set correctly after running
+ 'net idmap'.
+ * Add 'net rpc group add'.
+ * Implement 'net groupmap set' and 'net groupmap cleanup'.
+ * Add 'net rpc group [add|del]mem' for domain groups and aliases.
+ * Fix wb_delgrpmem (wbinfo -o).
+ * As a DC we should not reply to lsalookupnames on DCNAME\\user.
+ * Fix sambaUserWorkstations on a Samba DC.
+ * Implement wbinfo -k: Have winbind generate an AFS token after
+ authenticating the user.
+ * Add expand_msdfs VFS module for providing referrals based on the
+ the client's IP address.
+ * Implement client side NETLOGON GetDCName function.
+ * Fix caching of name->sid lookups.
+ * Add support in winbindd for expanding nested local groups.
+ * Fix memleak in winbindd.
+ * Fix msdfs proxy.
+ * Don't list domain groups from BUILTIN.
+ * Fix memleak in policy handle utility functions.
+ * Decrease winbindd startup time by only contacting trusted
+ domains as necessary.
+ * Allow winbindd to ask the DC for its domain for a trusted
+ DC.
+ * Fix Netscape DS schema based on comments from
+ <thomas.mueller@christ-wasser.de>.
+ * Correct case where adding a domain user to a XP local group
+ did a lsalookupname on the user without domain prefix, and
+ failed.
+ * Fix segfault in winbindd caused by 'wbinfo -a'.
+
+
+o Herb Lewis <herb@samba.org>
+ * Fix typo for tag in proto file.
+ * Add missing #ifdef HAVE_BICONV stuff.
+ * Truncate Samba's netbios name at the first '.' (not
+ right to left).
+
+
+o Derrell Lipman <Derrell.Lipman@UnwiredUniverse.com>
+ * Bug fixes and enhancements to libsmbclient library.
+
+
+o Jianliang Lu <j.lu@tiesse.com>
+ * Enforce the 'user must change password at next login' flag.
+ * Decode meaning of 'fields present' flags (improves support
+ for usrmgr.exe).
+ * NTLMv2 fixes.
+ * Don't force an upper case domain name in the ntlmssp code.
+
+
+o L. Lucius <ib@digicron.com>.
+ * type fixes.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Add versioning support to tdbsam.
+ * Update the IBM Directory Server schema with the OpenLDAP
+ file.
+ * Various decoding fixes to improve usrmgr.exe support.
+ * Fix statfs redeclaration of statfs struct on ppc
+ * Implement support for password lockout of Samba domain
+ controllers and standalone servers.
+ * Get MungedDial attribute actually working with full TS
+ strings in it for pdb_ldap.
+ * BUG 1208 (partial): Improvements for working with expired krb5
+ tickets in winbindd.
+ * Use timegm, or our already existing replacement instead of
+ timezone (spotted by Andrzej Tobola <san@iem.pw.edu.pl>).
+ * Remove modifyTimestamp from list of our attributes.
+ * Fix lsalookupnames to check for domain users as well as local
+ users.
+ * Merge struct uuid replacement for GUID from trunk.
+ * BUG 1208: Finish support for handling expired tickets in
+ winbindd (in conjunction with Guenther Deschner <gd@suse.de>).
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Implement new VERSION schema based on subversion revision
+ numbers.
+ * Add shadow_copy vfs module.
+ * Fix segault in login_cache support.
+
+
+o Heinrich Mislik <Heinrich.Mislik@univie.ac.at>
+ o BUG 979 -- Fix quota display on AIX.
+
+
+o James Peach <jpeach@sgi.com>
+ * Correct check for printf() format when using the SGI MIPSPro
+ compiler.
+ * BUG 1038: support backtrace for 'panic action' on IRIX.
+ * BUG 768: Accept profileing arg to IRIX init script.
+ * BUG 748: Relax arg parsing to sambalp script (IRIX).
+ * BUG 758: Fix pdma build.
+ * Search IRIX ABI paths for libiconv. Based on initial fix from
+ Jason Mader.
+
+
+o Kurt Pfeifle <kpfeifle@danka.de>
+ * Add example shell script for migrating drivers and printers
+ from a Windows print server to a Samba print server using
+ smbclient/rpcclient (examples/printing/VamireDriversFunctions).
+
+
+o Tim Potter <tpot@samba.org>
+ * Fix logic bug in tdb non-blocking lock routines when
+ errno == EAGAIN.
+ * BUG 1025: Include sys/acl.h in check for broken nisplus
+ include files.
+ * BUG 1066: s/printf/d_printf/g in SWAT.
+ * BUG 1098: rename internal msleep() function to fix build
+ problems on AIX.
+ * BUG 1112: Fix for writable printerdata problem in python bindings.
+ * BUG 1154: Remove reference to <sys/mman.h> in tdbdump.c.
+ * BUG 1155: enclose use of fchown() with guards.
+ * Relicense tdb python module as LGPL.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * Add support to smbclient for multiple logins on the same
+ session (based on work by abartlet@samba.org).
+ * Correct blocking condition in smbd's use of accept() on IRIX.
+ * Add support for printing out the MAC address on nmblookup.
+
+
+o Simo Sorce <idra@samba.org>
+ * Replace unknown_3 with fields_present in SAMR code.
+ * More length checks in strlcat().
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Rewrote the AIX UESS backend for winbindd.
+ * Fixed compilation with --enable-dmalloc.
+ * Change tdb license to LGPL (see source/tdb/tdb.c).
+ * Force winbindd to use schannel in clients connections to
+ DC's if possible.
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Fix ETA Calculation when resuming downloads in smbget.
+ * Add -O (for writing downloaded files to standard out)
+ based on patch by Bas van Sisseren <bas@dnd.utwente.nl>.
+ * Fix syntax error in example mysql table
+
+
+o TAKEDA yasuma <yasuma@miraclelinux.com>
+ * BUG 900: fix token processing in cmd_symlink, cmd_link,
+ cmd_chown, cmd_chmod smbclient functions.
+
+
+o Shiro Yamada <shiro@miraclelinux.com>
+ * BUG 1129: install image files for SWAT.
+
+
+ --------------------------------------------------
+
+ ==============================
+ Release Notes for Samba 3.0.2a
+ February 13, 2004
+ ==============================
+
+Samba 3.0.2a is a minor patch release for the 3.0.2 code base
+to address, in particular, a problem when using pdbedit to
+sanitize (--force-initialized-passwords) Samba's tdbsam
+backend. This is the latest stable release of Samba. This
+is the version that all production Samba servers should be
+running for all current bug-fixes.
+
+******************* Attention! Achtung! Kree! *********************
+
+Beginning with Samba 3.0.2, passwords for accounts with a last
+change time (LCT-XXX in smbpasswd, sambaPwdLastSet attribute in
+ldapsam, etc...) of zero (0) will be regarded as uninitialized
+strings. This will cause authentication to fail for such
+accounts. If you have valid passwords that meet this criteria,
+you must update the last change time to a non-zero value. If you
+do not, then 'pdbedit --force-initialized-passwords' will disable
+these accounts and reset the password hashes to a string of X's.
+
+******************* Attention! Achtung! Kree! *********************
+
+
+Changes since 3.0.2
+-------------------
+
+commits
+-------
+
+Please refer to the CVS log for the SAMBA_3_0 branch for complete
+details. The list of changes per contributor are as follows:
+
+
+o Jeremy Allison <jra@samba.org>
+ * Added paranoia checks in parsing code.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Ensure that changes to uninitialized passwords in ldapsam
+ are written to the DIT.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Fixed iterator in tdbsam.
+ * Fix bug that disabled accounts with a valid NT password
+ hash, but no LanMan hash.
+
+
+o Steve French <sfrench@us.ibm.com>
+ * Added missing nosetuid and noexec options.
+
+
+o Bostjan Golob <golob@gimb.org>
+ * BUG 1046: Don't overwrite usernames of entries returned
+ by getpwent_list().
+
+
+o Sebastian Krahmer <krahmer@suse.de>
+ * Fixed potential crash bug in NTLMSSP parsing code.
+
+
+o Tim Potter <tpot@samba.org>
+ * Fixed logic in tdb_brlock error checking.
+
+
+o Urban Widmark <urban@teststation.com>
+ * Set nosuid,nodev flags in smbmnt by default.
+
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.2
+ February 9, 2004
+ =============================
+
+It has been confirmed that previous versions of Samba 3.0 are
+susceptible to a password initialization bug that could grant an
+attacker unauthorized access to a user account created by the
+mksmbpasswd.sh shell script.
+
+The Common Vulnerabilities and Exposures project (cve.mitre.org)
+has assigned the name CAN-2004-0082 to this issue.
+
+Samba administrators not wishing to upgrade to the current
+version should download the 3.0.2 release, build the pdbedit
+tool, and run
+
+ root# pdbedit-3.0.2 --force-initialized-passwords
+
+This will disable all accounts not possessing a valid password
+(e.g. the password field has been set a string of X's).
+
+Samba servers running 3.0.2 are not vulnerable to this bug
+regardless of whether or not pdbedit has been used to sanitize
+the passdb backend.
+
+Some of the more visible bugs in 3.0.1 addressed in the 3.0.2
+release include:
+
+ o Joining a Samba domain from Pre-SP2 Windows 2000 clients.
+ o Logging onto a Samba domain from Windows XP clients.
+ o Problems with the %U and %u smb.conf variables in relation to
+ Windows 9x/ME clients.
+ o Kerberos failures due to an invalid in memory keytab detection
+ test.
+ o Updates to the ntlm_auth tool.
+ o Fixes for various SMB signing errors.
+ o Better separation of WINS and DNS queries for domain controllers.
+ o Issues with nss_winbind FreeBSD and Solaris.
+ o Several crash bugs in smbd and winbindd.
+ o Output formatting fixes for smbclient for better compatibility
+ with scripts based on the 2.2 version.
+
+
+Changes since 3.0.1
+-------------------
+
+smb.conf changes
+----------------
+
+ Parameter Name Action
+ -------------- ------
+ ldap replication sleep New
+ read size removed (unused)
+ source environment removed (unused)
+
+
+commits
+-------
+
+Please refer to the CVS log for the SAMBA_3_0 branch for complete
+details. The list of changes per contributor are as follows:
+
+o Jeremy Allison <jra@samba.org>
+ * Revert change that broke Exchange clear text samlogons.
+ * Fix gcc 3.4 warning in MS-DFS code.
+ * Tidy up of NTLMSSP code.
+ * Fixes for SMB signing errors
+ * BUG 815: Workaround NT4 bug to support plaintext
+ password logins and UNICODE.
+ * Fix SMB signing bug when copying large files.
+ * Correct error logic in mkdir_internals() (caused a panic
+ when combined with --enable-developer).
+ * BUG 830: Protect against crashes due to bad character
+ conversions.
+
+
+o Petri Asikainen <paca@sci.fi>
+ * BUG 330, 387:Fix single valued attribute updates when
+ working with Novell NDS.
+
+
+o Andrew Bartlett <abartlet@samba.org>
+ * Correctly handle per-pipe NTLMSSP inside a NULL session.
+ * Fix segfault in gencache
+ * Fix early free() of encrypted_session_key.
+ * Change DC lookup routines to more carefully separate
+ DNS names (realms) from NetBIOS domain names.
+ * Add new sid_to_dn() function for internal winbindd use.
+ * Refactor cli_ds_enum_domain_trusts().
+ * BUG 707: Implement range retrieval of ADS attributes (based
+ on work from Volker <vl@samba.org> and Guenther Deschner
+ <gd@suse.com>).
+ * Automatically initialize the signing engine if a session key
+ is available.
+ * BUG 916: Do not perform a + -> ' ' substitution for squid URL
+ encoded strings, only form input in SWAT.
+ * Resets the NTLMSSP state for new negotiate packets.
+ * Add 2-byte alignments in net_samlogon() queries to parse
+ odd-length plain text passwords.
+ * Allow Windows groups with no members in winbindd.
+ * Allow normal authentication in the absence of a server
+ generated session key.
+ * More optimizations for looking up UNIX group lists.
+ * Clean up error codes and return values for pam_winbindd
+ and winbindd PAM interface.
+ * Fix string return values in ntlm_auth tool.
+ * Fix segfault when 'security = ads' but no realm is defined.
+ * BUG 722: Allow winbindd to map machine accounts to uids.
+ * More cleanups for winbindd's find_our_domain().
+ * More clearly detect whether a domain controller is an NT4
+ or mixed-mode AD DC (additional bug fixes by jerry & jmcd).
+ * Increase separation between DNS queries for hosts and queries
+ for AD domain controllers.
+ * Include additional NT_STATUS to PAM error mappings.
+ * Password initialization fixes.
+
+
+o Justin Baugh <justin.baugh@request.com>
+ * BUG 948: Implement missing functions required for FreeBSD
+ nss_winbind support.
+
+
+o Alexander Bokovoy <ab@samba.org>
+ * BUG 922: Make sure enable fast path for strlower_m() and
+ strupper_m().
+
+
+o Luca Bolcioni <Luca.Bolcioni@yacme.com>
+ * Fix crash when using 'security = server' and 'encrypt
+ passwords = no' by always initializing the session key.
+
+
+o Dmitry Butskoj <buc@odusz.elektra.ru>
+ * Fix for special files being hidden from admins.
+
+
+o Gerald (Jerry) Carter <jerry@samba.org>
+ * Fix bug in the lanman session key generation. Caused
+ "decode_pw: incorrect password length" error messages.
+ * Save the right case for the located user name in
+ fill_sam_account(). Fixes %U/%u expansion for win9x clients.
+ * BUG 897: Add well known rid for pre win2k compatible access
+ group.
+ * BUG 887: Correct typo in delete user script example.
+ * Use short lived TALLOC_CTX* for allocating printer objects
+ from the print handle cache.
+ * BUG 912: Fix check for HAVE_MEMORY_KEYTAB.
+ * Fix several warnings reported by the SUN Forte C compiler.
+ * Fully control DNS queries for AD DC's using 'name resolve order'.
+ * BUG 770: Send the SMBjobid for UNIX jobs back to the client.
+ * BUG 972: Fix segfault in cli_ds_getprimarydominfo().
+ * BUG 936: fix bind credentials for schannel binds in smbd.
+ * BUG 446: Fix output of smbclient for better compatibility
+ with scripts based on the 2.2 version (including Amanda).
+ * BUG 891, 949: Fedora packaging fixes.
+ * Fix bug that caused rpcclient to incorrectly retrieve
+ the SID for a server (this causing all calls that required
+ this information to fail).
+ * BUG 977: Don't create a homes share for a user if a static
+ share already exists by the same name.
+ * Removed unused smb.conf options.
+ * Password initialization fixes.
+ * Set the disable flag for template accounts created by
+ mksmbpasswd.sh.
+ * Disable any account has no passwords and does not have the
+ ACB_PWNOTREQ bit set.
+
+
+o Guenther Deschner <gd@suse.com>
+ * Install smbwrapper.so should be put into the $(libdir)
+ and not $(bindir).
+ * Add the capability to specify the new user password
+ for "net ads password" on the command line.
+ * Correctly detect AFS headers on SuSE.
+
+
+o James Flemer <jflemer@uvm.edu>
+ * Fix AIX compile bug by linking HAVE_ATTR_LIST to
+ HAVE_SYS_ATTRIBUTES_H.
+
+
+o Luke Howard <lukeh@PADL.COM>
+ * Fix segfault in session setup reply caused by a early free().
+
+
+o Stoian Ivanov <sdr@bultra.com>
+ * Implement grepable output for smbclient -L.
+
+
+o LaMont Jones <lamont@debian.org>
+ * BUG 225328 (Debian): Correct false failure LFS test that resulted
+ in _GNU_SOURCE not being defined (thus resulting in strndup()
+ not being defined).
+
+
+o Volker Lendecke <vl@samba.org>
+ * BUG 583: Ensure that user names always contain the short
+ version of the domain name.
+ * Fix our parsing of the LDAP uri.
+ * Don't show the 'afs username map' in the SWAT basic view.
+ * Fix SMB signing issues in relation to failed NTLMSSP logins.
+ * BUG 924: Fix return codes in smbtorture harness.
+ * Always lower-case usernames before handing it to AFS code.
+ * Add a German translation for SWAT.
+ * Fix a segfaults in winbindd.
+ * Fix the user's domain passed to register_vuid() from
+ reply_spnego_Kerberos().
+ * Add NSS example code in nss_winbind to convert UNIX
+ id's <-> Windows SIDs.
+ * Display more descriptive error messages for login via 'net'.
+ * Fix compiler warning in the net tool.
+ * Fix length bug when decoding base64 strings.
+ * Ensure we don't call getpwnam() inside a loop that is iterating
+ over users with getpwent(). This broke on glibc 2.3.2.
+
+
+o Herb Lewis <herb@samba.org>
+ * Fix bit rot in psec.
+
+
+o Jianliang Lu <j.lu@tiesse.com>
+ * Ensure we delete the group mapping before calling the delete
+ group script.
+ * Define well known RID for managing the "Power Users" group.
+ * BUG 381: check builtin (not local) group SID when updating
+ group membership.
+ * BUG 101: set the SV_TYPE_PRINTQ_SERVER flag in host announcement
+ packet.
+
+
+o John Klinger <john.klinger@lmco.com>
+ * Implement initgroups() call in nss_winbind on Solaris.
+
+
+o Jim McDonough <jmcd@us.ibm.com>
+ * Fix regression in net rpc join caused by recent changes
+ to cli_lsa_query_info_policy().
+ * BUG 964: Fix crash bug in 'net rpc join' using a preexisting
+ machine account.
+
+
+o MORIYAMA Masayuki <moriyama@miraclelinux.com>
+ * BUG 570: Ensure that configure honors the LDFLAGS variable.
+
+
+o Stefan Metzmacher <metze@samba.org>
+ * Implement LDAP rebind sleep patch.
+ * Revert to 2.2 quota code because of so many broken quota files
+ out there.
+ * Fix XFS quotas: HAVE_XFS_QUOTA -> HAVE_XFS_QUOTAS
+ XFS_USER_QUOTA -> USRQUOTA
+ XFS_GROUP_QUOTA -> GRPQUOTA
+ * Fix disk_free calculation with group quotas.
+ * Add debug class 'quota' and a lot of DEBUG()'s
+ to the quota code.
+ * Fix sys_chown() when no chown() is present.
+ * Add SIGABRT to fault handling in order to catch got a
+ backtrace if an error occurs the OpenLDAP client libs.
+
+
+o <ndb@theghet.to>
+ * Allow an existing LDAP machine account to be re-used when
+ joining an AD domain.
+
+
+o James Peach <jpeach@sgi.com>
+ * BUG 889: Change smbd to use pread/pwrite on platforms that
+ support these calls. Can lead to a significant speed increase.
+
+
+o Tim Potter <tpot@samba.org>
+ * BUG 905: Remove POBAD_CC to fix Solaris Forte compiles.
+ * BUG 924: Fix typo in RW2 torture test.
+
+
+o Richard Sharpe <rsharpe@samba.org>
+ * Small fixes to torture.c to cleanup the error handling
+ and prevent crashes.
+
+
+o J. Tournier <jerome.tournier@IDEALX.com>
+ * Small fixes for the smbldap-tool scripts.
+
+
+o Andrew Tridgell <tridge@samba.org>
+ * Fix src len check in pull_usc2().
+
+
+o Jelmer Vernooij <jelmer@samba.org>
+ * Put functions for generating SQL queries in pdb_sql.c
+ * Add pgSQL backend (based on patch by Hamish Friedlander)
+ * BUG 908: Fix -s option to smbcontrol.
+ * Add smbget utility - a wget-clone for the SMB/CIFS protocol.
+ * Fix for libnss_wins on IRIX platforms.
+ * Fix swatdir for --with-fhs.
+
+
+ --------------------------------------------------
+
+ =============================
+ Release Notes for Samba 3.0.1
+ December 15, 2003
+ =============================
+
+Some of the more common bugs in 3.0.0 addressed in the release
+include:
+
+ o Substitution problems with smb.conf variables.
+ o Errors in return codes which caused some applications
+ to fail to open files.
+ o General Protection Faults on Windows 2000/XP clients
+ using Samba point-n-print features.
+ o Several miscellaneous crash bugs.
+ o Access problems when enumerating group mappings are
+ stored in an LDAP Directory.
+ o Several common SWAT bugs when writing changes to
+ smb.conf.
+ o Internal inconsistencies when 'winbind use default
+ domain = yes'
+
+
+
+Changes since 3.0.0
+----------------------
+
+ Parameter Name Action
+ -------------- ------
+ hide local users Removed
+ mangled map Deprecated
+ mangled stack Removed
+ passwd chat timeout New
+
+
+commits
+-------
+
+o Change the interface for init_unistr2 to not take a length
+ but a flags field. We were assuming that
+ 2*strlen(mb_string) == length of ucs2-le string. (bug 480).
+o Allow d_printf() to handle strings with escaped quotation
+ marks since the msg file includes the escape character (bug 489).
+o Fix bad html table row termination in SWAT wizard code (bug 413).
+o Fix to parse the level-2 strings.
+o Fix for "valid users = %S" in [homes]. Fix read/write
+ list as well.
+o Change AC_CHECK_LIB_EXT to prepend libraries instead of append.
+ This is the same way AC_CHECK_LIB works (bug 508).
+o Testparm output fixes for clarity.
+o Fix broken wins hook functionality -- i18n bug (bug 528).
+o Take care of condition where DOS and NT error codes must differ.
+o Default to using only built-in charsets when a working iconv
+ implementation cannot be located.
+o Wrap internals of sys_setgroups() so the sys_XX() call can
+ be done unconditionally (bug 550).
+o Remove duplicate smbspool link on SWAT's front page (bug 541).
+o Save and restore CFLAGS before/after AC_PROG_CC. Ensures that
+ --enable-debug=[yes|no] works correctly.
+o Allow ^C to interrupt smbpasswd if using our getpass
+ (e.g. smbpasswd command).
+o Support signing only on RPC's (bug 167).
+o Correct bug that prevented Excel 2000 clients from opening
+ files marked as read-only.
+o Portability fix bugs 546 - 549).
+o Explicitly initialize the value of AR for vendor makes that don't
+ do this (e.g. HPUX 11). (bug 552).
+o More i18n fixes for SWAT (bug 413).
+o Change the cwd before the postexec script to ensure that a
+ umount will succeed.
+o Correct double free that caused winbindd to crash when a DC
+ is rebooted (bug 437).
+o Fix incorrect mode sum (bug 562).
+o Canonicalize SMB_INFO_ALLOCATION in the same was as
+ SMB_FS_FULL_SIZE_INFORMATION (bug 564).
+o Add script to generate *msg files.
+o Add Dutch SWAT translation file.
+o Make sure to call get_user_groups() with the full winbindd
+ name for a user if he/she has one (bug 406).
+o Fix up error code returns from Samba4 tester. Ensure invalid
+ paths are validated the same way.
+o Allow Samba3 to pass the Samba4 RAW-READ tests.
+o Refuse to configure if --with-expsam=$BACKEND was used but no
+ libraries were found for $BACKEND.
+o Move sysquotas autoconf tests to a separate file.
+o Match W2K w.r.t. writelock and writeclose. Samba4 torture
+ tester
+o Make sure that the files that contain the static_init_$subsystem;
+ macro get recompiled after configure by removing the object
+ files.
+o Ensure canceling a blocking lock returns the correct error
+ message.
+o Match Samba 2.2 behavior; make ACB_NORMAL the default ACB value.
+o Updated Japanese welcome file in SWAT.
+o Fix to nt-time <-> unix-time functions reversible.
+o Ensure that winbindd uses the the escaped DN when querying
+ an AD ldap server.
+o Fix portability issues when compiling (bug 505, 550)
+o Compile fix for tdbbackup when Samba needs to override
+ non-C99 compliant implementations of snprintf().
+o Use @PICSUFFIX@ instead of .po in Makefile.in (bug 574).
+o Make sure we break out of samsync loop on error.
+o Ensure error code path doesn't free unmalloc()'d memory
+ (bug 628).
+o Add configure test for krb5_keytab_entry keyblock vs key
+ member (bug 636).
+o Fixed spinlocks.
+o Modified testparm so that all output so all debug output goes
+ to stderr, and all file processing goes to stdout.
+o Fix error return code for BUFFER_TOO_SMALL in smbcacls
+ and smbcquotas.
+o Fix "NULL dest in safe_strcpy()" log message by ensuring that
+ we have a devmode before copying a string to the devicename.
+o Support mapping REALM.COM\user to a local user account (without
+ running winbindd) for compatibility with 2.2.x release.
+o Ensure we don't use mmap() on blacklisted systems.
+o fixed a number of bugs and memory leaks in the AIX
+ winbindd shim
+o Call initgroups() in SWAT before becomming the user so that
+ secondary group permissions can be used when writing to
+ smb.conf.
+o Fix signing problems when reverse connecting back to a
+ client for printer notify
+o Fix signing problems caused by a miss-sequence bug.
+o Missing map in errormap for ERROR_MORE_DATA -> ERRDOS, ERRmoredata.
+ Fixes NEXUS tools running on Win9x clients (bug 64).
+o Don't leave the domain field uninitialized in cli_lsa.c if some
+ SID could not be mapped.
+o Fix segfault in mount.cifs helper when there is no options
+ specified during mount.
+o Change the \n after the password prompt to go to tty instead
+ of stdout (bug 668).
+o Stop net -P from prompting for machine account password (bug 451).
+o Change in behavior to Not only change the effective uid but also
+ the real uid when becoming unprivileged.
+o Cope with Exchange 5.5 cleartext pop password auth.
+o New files for support of initshutdown pipe. Win2k doesn't
+ respond properly to all requests on the winreg pipe, so we need
+ to handle this new pipe (bug 534).
+o Added more va_copy() checks in configure.in.
+o Include fixes for libsmbclient build problems.
+o Missing UNIX -> DOS codepage conversion in lanman.c.
+o Allow DFMS-S filenames can now have arbitrary case (bug 667).
+o Parameterize the listen backlog in smbd and make it larger by
+ default. A backlog of 5 is way too small these days.
+o Check for an invalid fid before dereferencing the fsp pointer
+ (bug 696).
+o Remove invalid memory frees and return codes in pdb_ldap.c.
+o Prompt for password when invoking --set-auth-user and no
+ password is given.
+o Bind the nmbd sending socket to the 'socket address'.
+o Re-order link command for smbd, rpcclient and smbpasswd to ensure
+ $LDFLAGS occurs before any library specification (bug 661).
+o Fix large number of printf() calls for 64-bit size_t.
+o Fix AC_CHECK_MEMBER so that SLES8 does correctly finds the
+ keyblock in the krb5 structs.
+o Remove #include <compat.h> in hopes to avoid problems with
+ apache header files.
+o Correct winbindd build problems on HP-UX 11.
+o Lowercase netgroups lookups (bug 703).
+o Use the actual size of the buffer in strftime instead of a made
+ up value which just happens to be less than sizeof(fstring).
+ (bug 713).
+o Add ldaplibs to pdbedit link line (bug 651).
+o Fix crash bug in smbclient completion (bug 659).
+o Fix packet length for browse list reply (bug 771).
+o Fix coredump in cli_get_backup_list().
+o Make sure that we expand %N (bug 612).
+o Allow rpcclient adddriver command to specify printer driver
+ version (bug 514).
+o Compile tdbdump by default.
+o Apply patches to fix iconv detection for FreeBSD.
+o Do not allow the 'guest account' to be added to a passdb backend
+ using smbpasswd or pdbedit (bug 624).
+o Save LDFLAGS during iconv detection (bug 57).
+o Run krb5 logins through the username map if the winbindd
+ lookup fails (bug 698).
+o Add const for lp_set_name_resolve_order() to avoid compiler
+ warnings (bug 471).
+o Add support for the %i macro in smb.conf to stand in for the for
+ the local IP address to which a client connected.
+o Allow winbindd to match local accounts to domain SID when
+ 'winbind trusted domains only = yes' (bug 680).
+o Remove code in idmap_ldap that searches the user suffix and group
+ suffix. It's not needed and provides inconsistent functionality
+ from the tdb backend.
+o Patch to handle munged dial string for Windows 2000 TSE.
+ Thanks to Gaz de France, Direction de la Recherche, Service
+ Informatique Métier for their supporting this work by Aurelien
+ Degrémont <adegremont@idealx.com>.
+o Correct the "smbldap_open: cannot access when not root error"
+ messages when looking up group information (bug 281).
+o Skip over the winbind separator when looking up a user.
+ This fixes the bug that prevented local users from
+ matching an AD user when not running winbindd (bug 698).
+o Fix a problem with configure on *BSD systems. Make sure
+ we add -liconv etc to LDFLAGS.
+o Fix core dump bug when "security = server" and the authentication
+ server goes away.
+o Correct crash bug due to an empty munged dial string.
+o Show files locked by a specific user (smbstatus -u 'user')
+ (bug 590).
+o Fix bug preventing print jobs from display in the queue
+ monitor used by Windows NT and later clients (bug 660).
+o Fix several reported problems with point-n-print from
+ Windows 2000/XP clients due to a bug in the EnumPrinterDataEx()
+ reply (bug 338, 527 & 643).
+o Fix a handful of potential memory leaks in the LDAP code used
+ by ldapsam[_compat] and the LDAP idmap backend.
+o Fix for pdbedit error code returns (bug 763).
+o Make sure we only enumerate group mapping entries (not
+ /etc/group) even when doing local aliases.
+o Relax check on the pipe name in a dce/rpc bind response to work
+ around issues with establishing trusts to a Windows 2003 domain.
+o Ensure we mangle names ending in '.' in hash2 mangling method.
+o Correct parsing issues with munged dial string.
+o Fix bugs in quota support for XFS.
+o Add a cleaner method for applications that need to provide
+ name->SID mappings to do this via NSS rather than having to
+ know the winbindd pipe protocol.
+o Adds a variant of the winbindd_getgroups() call called
+ winbindd_getusersids() that provides direct SID->SIDs listing of
+ a users supplementary groups. This is enough to allow non-Samba
+ applications to do ACL checking.
+o Make sure we don't append the 'ldap suffix' when writing out the
+ 'ldap XXX suffix' values in SWAT (bug 328).
+o Fix renames across file systems.
+o Ensure that items in a list of strings containing whitespace are
+ written out surrounded by single quotes. This means that both
+ double and single quotes are now used to surround strings in
+ smb.conf (bug 481).
+o Enable SWAT to correctly determine if winbindd is running (bug
+ 398).
+o Include WWW-Authenticate field in 401 response for bad auth
+ attempt (bug 629).
+o Add support for NTLM2 (NTLMv2 session security).
+o Add support for variable-length session keys.
+o More privilege fixes for group enumeration in LDAP (bug 281).
+o Use the dns name (or IP) as the originating client name when
+ using CUPS (bug 467).
+o Fix various SMB signing bugs.
+o Fix ACL propagation on a DFS root (bug 263).
+o Disable NTLM2 for RPC pipes.
+o Allow the client to specify the NTLM2 flags got NTLMSSP
+ authentication.
+o Change the name of the job passed off to cups from "Test Page"
+ to "smbprn.00000033 Test Page" so that we can get the smb
+ jobid back. This allow users to delete jobs with cups printing
+ backend (partial work on bug 770).
+o Fix build of winbindd with static pdb modules.
+o Retrieve the correct ACL group bits if the file has an ACL
+ (bug 802).
+o Implement "net rpc group members": Get members of a domain group
+ in human-readable format.
+o Add MacOSX (Darwin) specific charset module code.
+o Use samr_dispinfo(level == 1) for enumerating domain users so we
+ can include the full name in gecos field (bug 587).
+o Add support for winbind's NSS library on FeeeBSD 5.1 (bug 797).
+o Implement 'net rpc group list [global|local|builtin]*' for a
+ select listing of the respective user databases.
+o Don't automatically set NT status code flag unless client tells
+ us it can cope.
+o Add 'net status [sessions|shares] [parseable]'.
+o Don't mistake pre-existing UNIX jobs for smb jobs (remainder of
+ bug 770).
+o Add 'Replicator' and 'RAS Servers' to list of builtin SIDs
+ (bug 608).
+o Fix inverted logic in hosts allow/deny checks caused by
+ s/strcmp/strequal/ (bug 846).
+o Implement correct version SamrRemoveSidForeignDomain() (bug 252).
+o Fix typo in 'hash' mangling algorithm.
+o Support munged dial for ldapsam (bug 800).
+o Fix process_incoming_data() to return the number of bytes handled
+ this call whether we have a complete PDU or not; fixes bug
+ with multiple PDU request rpc's broken over SMBwriteX calls
+ each.
+o Fix incorrect smb flags2 for connections to pre-NT servers
+ (causes smbclient to fail to OS2 for example) (bug 821).
+o Update version string in smbldap-tools Makefile to 0.8.2.
+o Correct a problem with "net rpc vampire" mis-parsing the
+ alias member info reply.
+o Ensure the ${libdir} is created by the installclientlib script.
+o Fix detection of Windows 2003 client architecture in the smb.conf
+ %a variable.
+o Ensure that smbd calls the add user script for a missing UNIX
+ user on Kerberos auth call (bug 445).
+o Fix bugs in hosts allow/deny when using a mismatched
+ network/netmask pair.
+o Protect alloc_sub_basic() from crashing when the source string
+ is NULL (partial work on bug 687).
+o Fix spinlocks on IRIX.
+o Corrected some bad destination paths when running "configure
+ --with-fhs".
+o Add packaging files for Fedora Core 1.
+o Correct bug in SWAT install script for non-english languages.
+o Support character set ISO-8859-1 internally (bug 558).
+o Fixed more LDAP access errors when looking up group mappings
+ (bug 281).
+o Fix UNISTR2 length bug in LsaQueryInfo(3) that caused SID
+ resolution to fail on local files on on domain members
+ (bug 875).
+o Fix uninitialized variable in passdb.c.
+o Fix formal parameter type in get_static() in nsswitch/wins.c.
+o Fix problem mounting directories when mount.cifs is installed
+ with the setuid bit on.
+o Fix bug that prevent --mandir from overriding the defaults
+ given in the --with-fhs macro.
+o Fix bug in in-memory Kerberos keytab detection routines
+ in configure.in
+
+
+
+######################################################################
+
+ The original 3.0.0 release notes follow
+ =======================================
+ WHATS NEW IN Samba 3.0.0
+ September 24, 2003
+ =======================================
+
+
+Major new features:
+-------------------
+
+1) Active Directory support. Samba 3.0 is now able to
+ join a ADS realm as a member server and authenticate
+ users using LDAP/Kerberos.
+
+2) Unicode support. Samba will now negotiate UNICODE on the wire
+ and internally there is now a much better infrastructure for
+ multi-byte and UNICODE character sets.
+
+3) New authentication system. The internal authentication system
+ has been almost completely rewritten. Most of the changes are
+ internal, but the new auth system is also very configurable.
+
+4) New default filename mangling system.
+
+5) A new "net" command has been added. It is somewhat similar to
+ the "net" command in windows. Eventually we plan to replace
+ numerous other utilities (such as smbpasswd) with subcommands
+ in "net".
+
+6) Samba now negotiates NT-style status32 codes on the wire. This
+ improves error handling a lot.
+
+7) Better Windows 2000/XP/2003 printing support including publishing
+ printer attributes in active directory.
+
+8) New loadable module support for passdb backends and character
+ sets.
+
+9) New default dual-daemon winbindd support for better performance.
+
+10) Support for migrating from a Windows NT 4.0 domain to a Samba
+ domain and maintaining user, group and domain SIDs.
+
+11) Support for establishing trust relationships with Windows NT 4.0
+ domain controllers.
+
+12) Initial support for a distributed Winbind architecture using
+ an LDAP directory for storing SID to uid/gid mappings.
+
+13) Major updates to the Samba documentation tree.
+
+14) Full support for client and server SMB signing to ensure
+ compatibility with default Windows 2003 security settings.
+
+15) Improvement of ACL mapping features based on code donated by
+ Andreas Grünbacher.
+
+
+Plus lots of other improvements!
+
+
+Additional Documentation
+------------------------
+
+Please refer to Samba documentation tree (included in the docs/
+subdirectory) for extensive explanations of installing, configuring
+and maintaining Samba 3.0 servers and clients. It is advised to
+begin with the Samba-HOWTO-Collection for overviews and specific
+tasks (the current book is up to approximately 400 pages) and to
+refer to the various man pages for information on individual options.
+
+We are very glad to be able to include the second edition of
+"Using Samba" by Jay Ts, Robert Eckstein, and David Collier-Brown
+(O'Reilly & Associates) in this release. The book is available
+on-line at http://samba.org/samba/docs/ and is included with
+the Samba Web Administration Tool (SWAT). Thanks to the authors and
+publisher for making "Using Samba" under the GNU Free Documentation
+License.
+
+
+######################################################################
+Upgrading from a previous Samba 3.0 beta
+########################################
+
+Beginning with Samba 3.0.0beta3, the RID allocation functions
+have been moved into winbindd. Previously these were handled
+by each passdb backend. This means that winbindd must be running
+to automatically allocate RIDs for users and/or groups. Otherwise,
+smbd will use the 2.2 algorithm for generating new RIDs.
+
+If you are using 'passdb backend = tdbsam' with a previous Samba
+3.0 beta release (or possibly alpha), it may be necessary to
+move the RID_COUNTER entry from /usr/local/samba/private/passdb.tdb
+to winbindd_idmap.tdb. To do this:
+
+1) Ensure that winbindd_idmap.tdb exists (launch winbindd at least
+ once)
+2) build tdbtool by executing 'make tdbtool' in the source/tdb/
+ directory
+3) run: (note that 'tdb>' is the tool's prompt for input)
+
+ root# ./tdbtool /usr/local/samba/private/passdb.tdb
+ tdb> show RID_COUNTER
+ key 12 bytes
+ RID_COUNTER
+ data 4 bytes
+ [000] 0A 52 00 00 .R.
+
+ tdb> move RID_COUNTER /usr/local/samba/var/locks/winbindd_idmap.tdb
+ ....
+ record moved
+
+If you are using 'passdb backend = ldapsam', it will be necessary to
+store idmap entries in the LDAP directory as well (i.e. idmap backend
+= ldap). Refer to the 'net idmap' command for more information on
+migrating SID<->UNIX id mappings from one backend to another.
+
+If the RID_COUNTER record does not exist, then these instructions are
+unneccessary and the new RID_COUNTER record will be correctly generated
+if needed.
+
+
+
+########################
+Upgrading from Samba 2.2
+########################
+
+This section is provided to help administrators understand the details
+involved with upgrading a Samba 2.2 server to Samba 3.0.
+
+
+Building
+--------
+
+Many of the options to the GNU autoconf script have been modified
+in the 3.0 release. The most noticeable are:
+
+ * removal of --with-tdbsam (is now included by default; see section
+ on passdb backends and authentication for more details)
+
+ * --with-ldapsam is now on used to provided backward compatible
+ parameters for LDAP enabled Samba 2.2 servers. Refer to the passdb
+ backend and authentication section for more details
+
+ * inclusion of non-standard passdb modules may be enabled using
+ --with-expsam. This includes an XML backend and a mysql backend.
+
+ * removal of --with-msdfs (is now enabled by default)
+
+ * removal of --with-ssl (no longer supported)
+
+ * --with-utmp now defaults to 'yes' on supported systems
+
+ * --with-sendfile-support is now enabled by default on supported
+ systems
+
+
+Parameters
+----------
+
+This section contains a brief listing of changes to smb.conf options
+in the 3.0.0 release. Please refer to the smb.conf(5) man page for
+complete descriptions of new or modified parameters.
+
+Removed Parameters (order alphabetically):
+
+ * admin log
+ * alternate permissions
+ * character set
+ * client codepage
+ * code page directory
+ * coding system
+ * domain admin group
+ * domain guest group
+ * force unknown acl user
+ * hide local users
+ * mangled stack
+ * nt smb support
+ * postscript
+ * printer driver
+ * printer driver file
+ * printer driver location
+ * read size
+ * source environment
+ * status
+ * strip dot
+ * total print jobs
+ * use rhosts
+ * valid chars
+ * vfs options
+
+New Parameters (new parameters have been grouped by function):
+
+ Remote management
+ -----------------
+ * abort shutdown script
+ * shutdown script
+
+ User and Group Account Management
+ ---------------------------------
+ * add group script
+ * add machine script
+ * add user to group script
+ * algorithmic rid base
+ * delete group script
+ * delete user from group script
+ * passdb backend
+ * set primary group script
+
+ Authentication
+ --------------
+ * auth methods
+ * realm
+ * passwd chat timeout
+
+ Protocol Options
+ ----------------
+ * client lanman auth
+ * client NTLMv2 auth
+ * client schannel
+ * client signing
+ * client use spnego
+ * disable netbios
+ * ntlm auth
+ * paranoid server security
+ * server schannel
+ * server signing
+ * smb ports
+ * use spnego
+
+ File Service
+ ------------
+ * get quota command
+ * hide special files
+ * hide unwriteable files
+ * hostname lookups
+ * kernel change notify
+ * mangle prefix
+ * map acl inherit
+ * msdfs proxy
+ * set quota command
+ * use sendfile
+ * vfs objects
+
+ Printing
+ --------
+ * max reported print jobs
+
+ UNICODE and Character Sets
+ --------------------------
+ * display charset
+ * dos charset
+ * unicode
+ * unix charset
+
+ SID to uid/gid Mappings
+ -----------------------
+ * idmap backend
+ * idmap gid
+ * idmap uid
+ * winbind enable local accounts
+ * winbind trusted domains only
+ * template primary group
+ * enable rid algorithm
+
+ LDAP
+ ----
+ * ldap delete dn
+ * ldap group suffix
+ * ldap idmap suffix
+ * ldap machine suffix
+ * ldap passwd sync
+ * ldap replication sleep
+ * ldap user suffix
+
+ General Configuration
+ ---------------------
+ * preload modules
+ * private dir
+
+Modified Parameters (changes in behavior):
+
+ * encrypt passwords (enabled by default)
+ * mangling method (set to 'hash2' by default)
+ * passwd chat
+ * passwd program
+ * restrict anonymous (integer value)
+ * security (new 'ads' value)
+ * strict locking (enabled by default)
+ * unix extensions (enabled by default)
+ * winbind cache time (increased to 5 minutes)
+ * winbind uid (deprecated in favor of 'idmap uid')
+ * winbind gid (deprecated in favor of 'idmap gid')
+
+
+Databases
+---------
+
+This section contains brief descriptions of any new databases
+introduced in Samba 3.0. Please remember to backup your existing
+${lock directory}/*tdb before upgrading to Samba 3.0. Samba will
+upgrade databases as they are opened (if necessary), but downgrading
+from 3.0 to 2.2 is an unsupported path.
+
+Name Description Backup?
+---- ----------- -------
+account_policy User policy settings yes
+gencache Generic caching db no
+group_mapping Mapping table from Windows yes
+ groups/SID to unix groups
+winbindd_idmap ID map table from SIDS to UNIX yes
+ uids/gids.
+namecache Name resolution cache entries no
+netsamlogon_cache Cache of NET_USER_INFO_3 structure no
+ returned as part of a successful
+ net_sam_logon request
+printing/*.tdb Cached output from 'lpq no
+ command' created on a per print
+ service basis
+registry Read-only samba registry skeleton no
+ that provides support for exporting
+ various db tables via the winreg RPCs
+
+
+Changes in Behavior
+-------------------
+
+The following issues are known changes in behavior between Samba 2.2 and
+Samba 3.0 that may affect certain installations of Samba.
+
+ 1) When operating as a member of a Windows domain, Samba 2.2 would
+ map any users authenticated by the remote DC to the 'guest account'
+ if a uid could not be obtained via the getpwnam() call. Samba 3.0
+ rejects the connection as NT_STATUS_LOGON_FAILURE. There is no
+ current work around to re-establish the 2.2 behavior.
+
+ 2) When adding machines to a Samba 2.2 controlled domain, the
+ 'add user script' was used to create the UNIX identity of the
+ machine trust account. Samba 3.0 introduces a new 'add machine
+ script' that must be specified for this purpose. Samba 3.0 will
+ not fall back to using the 'add user script' in the absence of
+ an 'add machine script'
+
+
+######################################################################
+Passdb Backends and Authentication
+##################################
+
+There have been a few new changes that Samba administrators should be
+aware of when moving to Samba 3.0.
+
+ 1) encrypted passwords have been enabled by default in order to
+ inter-operate better with out-of-the-box Windows client
+ installations. This does mean that either (a) a samba account
+ must be created for each user, or (b) 'encrypt passwords = no'
+ must be explicitly defined in smb.conf.
+
+ 2) Inclusion of new 'security = ads' option for integration
+ with an Active Directory domain using the native Windows
+ Kerberos 5 and LDAP protocols.
+
+ MIT Kerberos 1.3.1 supports the ARCFOUR-HMAC-MD5 encryption
+ type which is neccessary for servers on which the
+ administrator password has not been changed, or Kerberos-enabled
+ SMB connections to servers that require Kerberos SMB signing.
+ Besides this one difference, either MIT or Heimdal Kerberos
+ distributions are usable by Samba 3.0.
+
+
+Samba 3.0 also includes the possibility of setting up chains
+of authentication methods (auth methods) and account storage
+backends (passdb backend). Please refer to the smb.conf(5)
+man page for details. While both parameters assume sane default
+values, it is likely that you will need to understand what the
+values actually mean in order to ensure Samba operates correctly.
+
+The recommended passdb backends at this time are
+
+ * smbpasswd - 2.2 compatible flat file format
+ * tdbsam - attribute rich database intended as an smbpasswd
+ replacement for stand alone servers
+ * ldapsam - attribute rich account storage and retrieval
+ backend utilizing an LDAP directory.
+ * ldapsam_compat - a 2.2 backward compatible LDAP account
+ backend
+
+Certain functions of the smbpasswd(8) tool have been split between the
+new smbpasswd(8) utility, the net(8) tool, and the new pdbedit(8)
+utility. See the respective man pages for details.
+
+
+######################################################################
+LDAP
+####
+
+This section outlines the new features affecting Samba / LDAP
+integration.
+
+New Schema
+----------
+
+A new object class (sambaSamAccount) has been introduced to replace
+the old sambaAccount. This change aids us in the renaming of
+attributes to prevent clashes with attributes from other vendors.
+There is a conversion script (examples/LDAP/convertSambaAccount) to
+modify and LDIF file to the new schema.
+
+Example:
+
+ $ ldapsearch .... -b "ou=people,dc=..." > sambaAcct.ldif
+ $ convertSambaAccount --sid=<Domain SID> \
+ --input=sambaAcct.ldif --output=sambaSamAcct.ldif \
+ --changetype=[modify|add]
+
+The <DOM SID> can be obtained by running 'net getlocalsid
+<DOMAINNAME>' on the Samba PDC as root. The changetype determines
+the format of the generated LDIF output--either create new entries
+or modify existing entries.
+
+The old sambaAccount schema may still be used by specifying the
+"ldapsam_compat" passdb backend. However, the sambaAccount and
+associated attributes have been moved to the historical section of
+the schema file and must be uncommented before use if needed.
+The 2.2 object class declaration for a sambaAccount has not changed
+in the 3.0 samba.schema file.
+
+Other new object classes and their uses include:
+
+ * sambaDomain - domain information used to allocate rids
+ for users and groups as necessary. The attributes are added
+ in 'ldap suffix' directory entry automatically if
+ an idmap uid/gid range has been set and the 'ldapsam'
+ passdb backend has been selected.
+
+ * sambaGroupMapping - an object representing the
+ relationship between a posixGroup and a Windows
+ group/SID. These entries are stored in the 'ldap
+ group suffix' and managed by the 'net groupmap' command.
+
+ * sambaUnixIdPool - created in the 'ldap idmap suffix' entry
+ automatically and contains the next available 'idmap uid' and
+ 'idmap gid'
+
+ * sambaIdmapEntry - object storing a mapping between a
+ SID and a UNIX uid/gid. These objects are created by the
+ idmap_ldap module as needed.
+
+ * sambaSidEntry - object representing a SID alone, as a Structural
+ class on which to build the sambaIdmapEntry.
+
+
+New Suffix for Searching
+------------------------
+
+The following new smb.conf parameters have been added to aid in directing
+certain LDAP queries when 'passdb backend = ldapsam://...' has been
+specified.
+
+ * ldap suffix - used to search for user and computer accounts
+ * ldap user suffix - used to store user accounts
+ * ldap machine suffix - used to store machine trust accounts
+ * ldap group suffix - location of posixGroup/sambaGroupMapping entries
+ * ldap idmap suffix - location of sambaIdmapEntry objects
+
+If an 'ldap suffix' is defined, it will be appended to all of the
+remaining sub-suffix parameters. In this case, the order of the suffix
+listings in smb.conf is important. Always place the 'ldap suffix' first
+in the list.
+
+Due to a limitation in Samba's smb.conf parsing, you should not surround
+the DN's with quotation marks.
+
+
+IdMap LDAP support
+------------------
+
+Samba 3.0 supports an ldap backend for the idmap subsystem. The
+following options would inform Samba that the idmap table should be
+stored on the directory server onterose in the "ou=idmap,dc=plainjoe,
+dc=org" partition.
+
+ [global]
+ ...
+ idmap backend = ldap:ldap://onterose/
+ ldap idmap suffix = ou=idmap,dc=plainjoe,dc=org
+ idmap uid = 40000-50000
+ idmap gid = 40000-50000
+
+This configuration allows winbind installations on multiple servers to
+share a uid/gid number space, thus avoiding the interoperability problems
+with NFS that were present in Samba 2.2.
+
+
+
+######################################################################
+Trust Relationships and a Samba Domain
+######################################
+
+Samba 3.0.0beta2 is able to utilize winbindd as the means of
+allocating uids and gids to trusted users and groups. More
+information regarding Samba's support for establishing trust
+relationships can be found in the Samba-HOWTO-Collection included
+in the docs/ directory of this release.
+
+First create your Samba PDC and ensure that everything is
+working correctly before moving on the trusts.
+
+To establish Samba as the trusting domain (named SAMBA) from a Windows NT
+4.0 domain named WINDOWS:
+
+ 1) create the trust account for SAMBA in "User Manager for Domains"
+ 2) connect the trust from the Samba domain using
+ 'net rpc trustdom establish GLASS'
+
+To create a trustlationship with SAMBA as the trusted domain:
+
+ 1) create the initial trust account for GLASS using
+ 'smbpasswd -a -i GLASS'. You may need to create a UNIX
+ account for GLASS$ prior to this step (depending on your
+ local configuration).
+ 2) connect the trust from a WINDOWS DC using "User Manager
+ for Domains"
+
+Now join winbindd on the Samba PDC to the SAMBA domain using
+the normal steps for adding a Samba server to an NT4 domain:
+(note that smbd & nmbd must be running at this point)
+
+ root# net rpc join -U root
+ Password: <enter root password from smbpasswd file here>
+
+Start winbindd and test the join with 'wbinfo -t'.
+
+Now test the trust relationship by connecting to the SAMBA DC
+(e.g. POGO) as a user from the WINDOWS domain:
+
+ $ smbclient //pogo/netlogon -U Administrator -W WINDOWS
+ Password:
+
+Now connect to the WINDOWS DC (e.g. CRYSTAL) as a Samba user:
+
+ $ smbclient //crystal/netlogon -U root -W WINDOWS
+ Password:
+
+######################################################################
+Changes in Winbind
+##################
+
+Beginning with Samba3.0.0beta3, winbindd has been given new account
+manage functionality equivalent to the 'add user script' family of
+smb.conf parameters. The idmap design has also been changed to
+centralize control of foreign SID lookups and matching to UNIX
+uids and gids.
+
+
+Brief Description of Changes
+----------------------------
+
+1) The sid_to_uid() family of functions (smbd/uid.c) have been
+ reverted to the 2.2.x design. This means that when resolving a
+ SID to a UID or similar mapping:
+
+ a) First consult winbindd
+ b) perform a local lookup only if winbindd fails to
+ return a successful answer
+
+ There are some variations to this, but these two rules generally
+ apply.
+
+2) All idmap lookups have been moved into winbindd. This means that
+ a server must run winbindd (and support NSS) in order to achieve
+ any mappings of SID to dynamically allocated UNIX ids. This was
+ a conscious design choice.
+
+3) (OBSOLETE) New functions have been added to winbindd to emulate
+ the 'add user script' family of smbd functions without requiring
+ that external scripts be defined. This functionality is controlled
+ by the 'winbind enable local accounts' smb.conf parameter (enabled
+ by default).
+
+ However, this account management functionality is only supported
+ in a local tdb (winbindd_idmap.tdb). If these new UNIX accounts
+ must be shared among multiple Samba servers (such as a PDC and BDCs),
+ it will be necessary to define your own 'add user script', et. al.
+ programs that place the accounts/groups in some form of directory
+ such as NIS or LDAP. This requirement was deemed beyond the scope
+ of winbind's account management functions. Solutions for
+ distributing UNIX system information have been deployed and tested
+ for many years. We saw no need to reinvent the wheel.
+
+4) A member of a Samba controlled domain running winbindd is now able
+ to map domain users directly onto existing UNIX accounts while still
+ automatically creating accounts for trusted users and groups. This
+ behavior is controlled by the 'winbind trusted domains only' smb.conf
+ parameter (disabled by default to provide 2.2.x winbind behavior).
+
+5) Group mapping support is wrapped in the local_XX_to_XX() functions
+ in smbd/uid.c. The reason that group mappings are not included
+ in winbindd is because the purpose of Samba's group map is to
+ match any Windows SID with an existing UNIX group. These UNIX
+ groups can be created by winbindd (see next section), but the
+ SID<->gid mapping is retreived by smbd, not winbindd.
+
+
+Examples
+--------
+
+* security = server running winbindd to allocate accounts on demand
+
+* Samba PDC running winbindd to handle the automatic creation of UNIX
+ identities for machine trust accounts
+
+* Automtically creating UNIX user and groups when migrating a Windows NT
+ 4.0 PDC to a Samba PDC. Winbindd must be running when executing
+ 'net rpc vampire' for this to work.
+
+
+######################################################################
+Known Issues
+############
+
+* There are several bugs currently logged against the 3.0 codebase
+ that affect the use of NT 4.0 GUI domain management tools when run
+ against a Samba 3.0 PDC. This bugs should be released in an early
+ 3.0.x release.
+
+Please refer to https://bugzilla.samba.org/ for a current list of bugs
+filed against the Samba 3.0 codebase.
+
+
+######################################################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical IRC channel on irc.freenode.net.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored.
+
+A new bugzilla installation has been established to help support the
+Samba 3.0 community of users. This server, located at
+https://bugzilla.samba.org/, has replaced the older jitterbug server
+previously located at http://bugs.samba.org/.
diff --git a/docs/README-NOW b/docs/README-NOW
deleted file mode 100644
index 261c8dd3a1a..00000000000
--- a/docs/README-NOW
+++ /dev/null
@@ -1,11 +0,0 @@
- ATTENTION
- DOCS TREE REMOVED
----------------------------------------------------
-
-This docs tree has been moved to a separate SVN
-module on svn.samba.org named 'samba-docs'.
-See http://svn.samba.org/samba/subversion.html
-for details on accessing Samba svn trees.
-
-For anonymous access to samba-docs, point svn here:
- svn://svnanon.samba.org/samba-docs/trunk
diff --git a/examples/LDAP/samba.schema b/examples/LDAP/samba.schema
index 31a7a67b8ed..549a7088623 100644
--- a/examples/LDAP/samba.schema
+++ b/examples/LDAP/samba.schema
@@ -501,15 +501,6 @@ objectclass ( 1.3.6.1.4.1.7165.2.2.14 NAME 'sambaTrustPassword' SUP top STRUCTUR
MAY ( sambaSID $ sambaPwdLastSet ))
##
-## Trust password for trusted domains
-## (to be stored beneath the trusting sambaDomain object in the DIT)
-##
-objectclass ( 1.3.6.1.4.1.7165.2.2.15 NAME 'sambaTrustedDomainPassword' SUP top STRUCTURAL
- DESC 'Samba Trusted Domain Password'
- MUST ( sambaDomainName $ sambaSID $
- sambaNTPassword $ sambaPwdLastSet ))
-
-##
## Whole-of-domain info
##
objectclass ( 1.3.6.1.4.1.7165.2.2.5 NAME 'sambaDomain' SUP top STRUCTURAL
diff --git a/examples/VFS/Makefile.in b/examples/VFS/Makefile.in
index 4de0efd29e8..8869a4f20d3 100644
--- a/examples/VFS/Makefile.in
+++ b/examples/VFS/Makefile.in
@@ -12,7 +12,7 @@ FLAGS = $(CFLAGS) $(CPPFLAGS) -fPIC \
-I$(SAMBA_SOURCE)/popt \
-I$(SAMBA_SOURCE)/lib/replace \
-I$(SAMBA_SOURCE)/lib/talloc \
- -I$(SAMBA_SOURCE)/lib/tdb/include \
+ -I$(SAMBA_SOURCE)/tdb/include \
-I$(SAMBA_SOURCE)/smbwrapper \
-I$(SAMBA_SOURCE)/librpc \
-I$(SAMBA_SOURCE) -I.
diff --git a/examples/VFS/configure.in b/examples/VFS/configure.in
index b8e10d482b8..1a0ff6bb4ca 100644
--- a/examples/VFS/configure.in
+++ b/examples/VFS/configure.in
@@ -5,14 +5,14 @@ dnl We must use autotools 2.53 or above
AC_PREREQ(2.53)
AC_INIT(Makefile.in)
-AC_CONFIG_HEADER(module_config.h)
+#dnl Uncomment this if you want to use your own define's too
+#AC_CONFIG_HEADER(module_config.h)
#dnl To make sure that didn't get #define PACKAGE_* in modules_config.h
#echo "" > confdefs.h
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
-AC_CANONICAL_HOST
#################################################
# Directory handling stuff to support both the
@@ -313,11 +313,6 @@ if test "$enable_shared" = "yes"; then
BLDSHARED="false"
LDSHFLAGS=""
;;
- *darwin*)
- BLDSHARED="true"
- LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
- SHLIBEXT="dylib"
- ;;
*)
;;
esac
@@ -337,7 +332,7 @@ AC_CACHE_CHECK([whether building shared libraries actually works],
ac_cv_shlib_works=no
# try building a trivial shared library
if test "$PICSUFFIX" = "po"; then
- $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o shlib.po ${srcdir-.}/../../source/tests/shlib.c &&
+ $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
$CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
ac_cv_shlib_works=yes
else
diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 1ba6a9b13bd..7103d0c27b7 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -206,11 +206,6 @@ static int skel_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, uid
return vfswrap_fchown(NULL, fsp, fd, uid, gid);
}
-static int skel_lchown(vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid)
-{
- return vfswrap_lchown(NULL, path, uid, gid);
-}
-
static int skel_chdir(vfs_handle_struct *handle, const char *path)
{
return vfswrap_chdir(NULL, path);
@@ -295,18 +290,18 @@ static size_t skel_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
return 0;
}
-static NTSTATUS skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int
+static BOOL skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int
fd, uint32 security_info_sent, SEC_DESC *psd)
{
errno = ENOSYS;
- return NT_STATUS_NOT_IMPLEMENTED;
+ return False;
}
-static NTSTATUS skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const
+static BOOL skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const
char *name, uint32 security_info_sent, SEC_DESC *psd)
{
errno = ENOSYS;
- return NT_STATUS_NOT_IMPLEMENTED;
+ return False;
}
static int skel_chmod_acl(vfs_handle_struct *handle, const char *name, mode_t mode)
@@ -605,7 +600,6 @@ static vfs_op_tuple skel_op_tuples[] = {
{SMB_VFS_OP(skel_fchmod), SMB_VFS_OP_FCHMOD, SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(skel_chown), SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(skel_fchown), SMB_VFS_OP_FCHOWN, SMB_VFS_LAYER_OPAQUE},
- {SMB_VFS_OP(skel_lchown), SMB_VFS_OP_LCHOWN, SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(skel_chdir), SMB_VFS_OP_CHDIR, SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(skel_getwd), SMB_VFS_OP_GETWD, SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(skel_ntimes), SMB_VFS_OP_NTIMES, SMB_VFS_LAYER_OPAQUE},
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index 746fa31736b..2efb3d54a78 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -200,11 +200,6 @@ static int skel_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, uid
return SMB_VFS_NEXT_FCHOWN(handle, fsp, fd, uid, gid);
}
-static int skel_lchown(vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid)
-{
- return SMB_VFS_NEXT_LCHOWN(handle, path, uid, gid);
-}
-
static int skel_chdir(vfs_handle_struct *handle, const char *path)
{
return SMB_VFS_NEXT_CHDIR(handle, path);
@@ -286,13 +281,13 @@ static size_t skel_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
return SMB_VFS_NEXT_GET_NT_ACL(handle, fsp, name, security_info, ppdesc);
}
-static NTSTATUS skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
int fd, uint32 security_info_sent, SEC_DESC *psd)
{
return SMB_VFS_NEXT_FSET_NT_ACL(handle, fsp, fd, security_info_sent, psd);
}
-static NTSTATUS skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
const char *name, uint32 security_info_sent, SEC_DESC *psd)
{
return SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent, psd);
@@ -566,7 +561,6 @@ static vfs_op_tuple skel_op_tuples[] = {
{SMB_VFS_OP(skel_fchmod), SMB_VFS_OP_FCHMOD, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(skel_chown), SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(skel_fchown), SMB_VFS_OP_FCHOWN, SMB_VFS_LAYER_TRANSPARENT},
- {SMB_VFS_OP(skel_lchown), SMB_VFS_OP_LCHOWN, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(skel_chdir), SMB_VFS_OP_CHDIR, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(skel_getwd), SMB_VFS_OP_GETWD, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(skel_ntimes), SMB_VFS_OP_NTIMES, SMB_VFS_LAYER_TRANSPARENT},
diff --git a/examples/libsmbclient/Makefile b/examples/libsmbclient/Makefile
index d44df77b3fb..be383aea671 100644
--- a/examples/libsmbclient/Makefile
+++ b/examples/libsmbclient/Makefile
@@ -10,12 +10,12 @@ EXTLIB_INCL = -I/usr/include/gtk-1.2 \
DEFS = -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
CFLAGS = -O0 -g -I$(SAMBA_INCL) $(EXTLIB_INCL) $(DEFS)
-LDFLAGS = -L/usr/local/samba/lib
+LDFLAGS = -L/usr/local/samba/lib \
+ -lldap -lkrb5 -lgssapi_krb5
#LIBSMBCLIENT = /usr/local/samba/lib/libsmbclient.so
LIBSMBCLIENT = ../../source/bin/libsmbclient.a -ldl -lresolv
TESTS= testsmbc \
- tree \
testacl \
testacl2 \
testbrowse \
@@ -26,6 +26,8 @@ TESTS= testsmbc \
testutime \
testread
+# tree \
+
all: $(TESTS) smbsh
testsmbc: testsmbc.o
@@ -38,11 +40,11 @@ tree: tree.o
testacl: testacl.o
@echo Linking testacl
- $(CC) `gtk-config --cflags` $(CFLAGS) $(LDFLAGS) -o $@ $< `gtk-config --libs` $(LIBSMBCLIENT) -lpopt
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBSMBCLIENT) -lpopt
testacl2: testacl2.o
@echo Linking testacl2
- $(CC) `gtk-config --cflags` $(CFLAGS) $(LDFLAGS) -o $@ $< `gtk-config --libs` $(LIBSMBCLIENT) -lpopt
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBSMBCLIENT) -lpopt
testbrowse: testbrowse.o
@echo Linking testbrowse
diff --git a/examples/misc/adssearch.pl b/examples/misc/adssearch.pl
index 725140ac600..4482222934f 100755
--- a/examples/misc/adssearch.pl
+++ b/examples/misc/adssearch.pl
@@ -408,7 +408,6 @@ my %ads_gtype = (
"GTYPE_SECURITY_BUILTIN_LOCAL_GROUP" => 0x80000005,
"GTYPE_SECURITY_DOMAIN_LOCAL_GROUP" => 0x80000004,
"GTYPE_SECURITY_GLOBAL_GROUP" => 0x80000002,
- "GTYPE_SECURITY_UNIVERSAL_GROUP" => 0x80000008,
"GTYPE_DISTRIBUTION_GLOBAL_GROUP" => 0x00000002,
"GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP" => 0x00000004,
"GTYPE_DISTRIBUTION_UNIVERSAL_GROUP" => 0x00000008,
@@ -1782,9 +1781,8 @@ sub main () {
if (!$opt_notify && ($async_search->code == LDAP_REFERRAL)) {
foreach my $ref ($async_search->referrals) {
print "\ngot Referral: [$ref]\n";
- my ($prot, $host, $base) = split(/\/+/, $ref);
$async_ldap_hd->unbind();
- $async_ldap_hd = get_ldap_hd($host, 1);
+ $async_ldap_hd = get_ldap_hd($ref, 1);
if (do_bind($async_ldap_hd, $sasl_bind) == -1) {
$async_ldap_hd->unbind();
next;
diff --git a/examples/pam_winbind/pam_winbind.conf b/examples/pam_winbind/pam_winbind.conf
index a9e02a833a5..ca36e2ab00a 100644
--- a/examples/pam_winbind/pam_winbind.conf
+++ b/examples/pam_winbind/pam_winbind.conf
@@ -9,9 +9,6 @@
# turn on debugging
;debug = no
-# turn on extended PAM state debugging
-;debug_state = no
-
# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
;cached_login = no
@@ -27,9 +24,3 @@
# make successful authentication dependend on membership of one SID
# (can also take a name)
;require_membership_of =
-
-# password expiry warning period in days
-;warn_pwd_expire = 14
-
-# omit pam conversations
-;silent = no
diff --git a/examples/perfcounter/Makefile b/examples/perfcounter/Makefile
index e74b7361016..07bc7657c9c 100644
--- a/examples/perfcounter/Makefile
+++ b/examples/perfcounter/Makefile
@@ -19,20 +19,19 @@
SAMBA_SRC_DIR=../../source
TDB_SRC_DIR=$(SAMBA_SRC_DIR)/tdb
-CFLAGS = -g -I$(SAMBA_SRC_DIR)/include -I$(TDB_SRC_DIR)/include
+CFLAGS = -g -I$(SAMBA_SRC_DIR)/include -I$(TDB_SRC_DIR)
CC = gcc
PROGS = perfcount
-TDB_OBJ = $(TDB_SRC_DIR)/common/tdb.o $(TDB_SRC_DIR)/common/dump.o \
- $(TDB_SRC_DIR)/common/error.o $(TDB_SRC_DIR)/common/freelist.o \
- $(TDB_SRC_DIR)/common/io.o $(TDB_SRC_DIR)/common/lock.o \
- $(TDB_SRC_DIR)/common/open.o $(TDB_SRC_DIR)/common/transaction.o \
- $(TDB_SRC_DIR)/common/traverse.o
+TDB_OBJ = $(TDB_SRC_DIR)/tdb.o $(TDB_SRC_DIR)/spinlock.o $(TDB_SRC_DIR)/tdbback.o
PERF_WRITER_OBJ = perf_writer.o perf_writer_mem.o perf_writer_util.o perf_writer_cpu.o perf_writer_process.o perf_writer_disk.o
default: $(PROGS)
-perfcount: $(PERF_WRITER_OBJ)
+$(TDB_OBJ):
+ cd $(TDB_SRC_DIR) && make
+
+perfcount: $(PERF_WRITER_OBJ) $(TDB_OBJ)
$(CC) $(CFLAGS) -o perfcount $(PERF_WRITER_OBJ) $(TDB_OBJ)
clean:
diff --git a/examples/perfcounter/perf_writer_util.c b/examples/perfcounter/perf_writer_util.c
index 85ef48fb602..78a99fef494 100644
--- a/examples/perfcounter/perf_writer_util.c
+++ b/examples/perfcounter/perf_writer_util.c
@@ -37,6 +37,10 @@ void add_key_raw(TDB_CONTEXT *db, char *keystring, void *databuf, size_t datasiz
key.dsize = strlen(keystring);
data.dptr = databuf;
data.dsize = datasize;
+ fprintf(stderr, "doing insert of [%x] with key [%s] into [%s]\n",
+ data.dptr,
+ keystring,
+ db->name);
tdb_store(db, key, data, flags);
}
@@ -49,6 +53,10 @@ void add_key(TDB_CONTEXT *db, char *keystring, char *datastring, int flags)
key.dsize = strlen(keystring);
data.dptr = datastring;
data.dsize = strlen(datastring);
+ /* fprintf(stderr, "doing insert of [%s] with key [%s] into [%s]\n",
+ data.dptr,
+ keystring,
+ db->name);*/
tdb_store(db, key, data, flags);
}
diff --git a/examples/scripts/users_and_groups/adduserstogroups.pl b/examples/scripts/users_and_groups/adduserstogroups.pl
deleted file mode 100755
index 335dad00aae..00000000000
--- a/examples/scripts/users_and_groups/adduserstogroups.pl
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/usr/bin/perl
-
-#
-# adduserstogroups.pl
-#
-# add single or continuously numbered domain users
-# to a given single group or list of groups
-#
-# Copyright (C) Michael Adam <obnox@samba.org> 2007
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 2 of the License, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 675
-# Mass Ave, Cambridge, MA 02139, USA.
-#
-
-#
-# WARNING: This script is still rather crude.
-#
-
-use strict;
-use Getopt::Std;
-
-my $net_cmd = "net";
-
-# defaults:
-
-my $server;
-my $num_members = 1;
-my $startmem; # if empty, don't add numbers to member prefix
-my $member_prefix; # name prefix for member
-my $num_groups = 1;
-my $startgroup; # if empty, don't add numbers to group prefix
-my $group_prefix; # name prefix for group
-my $path; # path to rpcclient command
-my $net_path = $net_cmd;
-my $creds;
-
-sub usage {
- print "USAGE: $0 [-h] -S server -U user\%pass \\\n"
- . "\t-m member [-s startmem] [-n nummem] \\\n"
- . "\t-g group [-G stargroup] [-N numgroups] \\\n"
- . "\t[-P path]\n";
-}
-
-# parse commandline:
-
-my %options = ();
-getopts("U:S:m:s:n:g:G:N:P:h", \%options);
-
-if (exists($options{h})) {
- usage();
- exit 0;
-}
-
-if (exists($options{g})) {
- $group_prefix = $options{g};
-}
-else {
- print "ERROR: mandatory argument '-g' missing\n";
- usage();
- exit 1;
-}
-
-if (exists($options{U})) {
- $creds = "-U $options{U}";
- if ($creds !~ '%') {
- print "ERROR: you need to specify credentials in the form -U user\%pass\n";
- usage();
- exit 1;
- }
-}
-else {
- print "ERROR: mandatory argument '-U' missing\n";
- usage();
- exit 1;
-}
-
-if (exists($options{S})) {
- $server = $options{S};
-}
-else {
- print "ERROR: madatory argument '-S' missing\n";
- usage();
- exit 1;
-}
-
-if (exists($options{s})) {
- $startmem = $options{s};
-}
-
-if (exists($options{n})) {
- $num_members = $options{n};
-}
-
-if (exists($options{m})) {
- $member_prefix = $options{m};
-}
-else {
- print "ERROR: mandatory argument '-m' missing\n";
- usage();
- exit 1;
-}
-
-if (exists($options{G})) {
- $startgroup = $options{G};
-}
-
-if (exists($options{N})) {
- $num_groups = $options{N};
-}
-
-if (exists($options{P})) {
- $path = $options{p};
- $net_path = "$path/$net_cmd";
-}
-
-if (@ARGV) {
- print "ERROR: junk on the command line ('" . join(" ", @ARGV) . "')...\n";
- usage();
- exit 1;
-}
-
-# utility functions:
-
-sub do_add {
- my $member_name = shift;
- my $group_name = shift;
- print "adding member $member_name to group $group_name\n";
- system("$net_path rpc -I $server ".$creds." group addmem $group_name $member_name");
-}
-
-sub add_group_loop {
- my $member_name = shift;
-
- if ("x$startgroup" eq "x") {
- do_add($member_name, $group_prefix);
- }
- else {
- for (my $groupnum = 1; $groupnum <= $num_groups; ++$groupnum) {
- do_add($member_name,
- sprintf("%s%.05d", $group_prefix, $startgroup + $groupnum - 1));
- }
- }
-}
-
-
-# main:
-
-if ("x$startmem" eq "x") {
- add_group_loop($member_prefix);
-}
-else {
- for (my $memnum = 1; $memnum <= $num_members; ++$memnum) {
- add_group_loop(sprintf("%s%.05d", $member_prefix, $startmem + $memnum - 1));
- }
-}
-
diff --git a/examples/scripts/users_and_groups/createdomobj.pl b/examples/scripts/users_and_groups/createdomobj.pl
deleted file mode 100755
index 6568b216642..00000000000
--- a/examples/scripts/users_and_groups/createdomobj.pl
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/perl
-
-#
-# createdomobj.pl
-#
-# create single or continuously numbered domain
-# users/groups/aliases via rpc
-#
-# Copyright (C) Michael Adam <obnox@samba.org> 2007
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 2 of the License, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 675
-# Mass Ave, Cambridge, MA 02139, USA.
-#
-
-#
-# WARNING: This script is still rather crude.
-#
-
-use strict;
-use Getopt::Std;
-
-
-my $target_type = "group"; # what type of object to create
-my $rpc_cmd = "createdom".$target_type;
-my $rpccli_cmd = "rpcclient";
-
-# defaults:
-
-my $server;
-my $num_targets = 1;
-my $startnum; # if empty, don't add numbers to prefix
-my $prefix = $target_type; # name-prefix
-my $path; # path to rpcclient command
-my $rpccli_path = $rpccli_cmd;
-my $creds;
-
-sub usage {
- print "USAGE: $0 [-h] -S server -U user\%pass [-p prefix] \\\n"
- . "\t[-t {alias|group|user}] [-s startnum] [-n numobjs] [-P path] \n";
-}
-
-# parse commandline:
-
-my %options = ();
-getopts("U:t:S:s:n:p:P:h", \%options);
-
-if (exists($options{h})) {
- usage();
- exit 0;
-}
-
-if (exists($options{t})) {
- $target_type = $options{t};
- if ($target_type !~ /^(alias|user|group)$/) {
- print "ERROR: invalid target type given\n";
- usage();
- exit 1;
- }
- $rpc_cmd = "createdom".$target_type;
-}
-
-if (exists($options{U})) {
- $creds = "-U $options{U}";
- if ($creds !~ '%') {
- print "ERROR: you need to specify credentials in the form -U user\%pass\n";
- usage();
- exit 1;
- }
-}
-else {
- print "ERROR: mandatory argument '-U' missing\n";
- usage();
- exit 1;
-}
-
-if (exists($options{S})) {
- $server = $options{S};
-}
-else {
- print "ERROR: madatory argument '-S' missing\n";
- usage();
- exit 1;
-}
-
-if (exists($options{s})) {
- $startnum = $options{s};
-}
-
-if (exists($options{n})) {
- $num_targets = $options{n};
-}
-
-if (exists($options{p})) {
- $prefix = $options{p};
-}
-
-if (exists($options{P})) {
- $path = $options{p};
- $rpccli_path = "$path/$rpccli_cmd";
-}
-
-if (@ARGV) {
- print "ERROR: junk on the command line ('" . join(" ", @ARGV) . "')...\n";
- usage();
- exit 1;
-}
-
-# utility functions:
-
-sub open_rpc_pipe {
- print "opening rpc pipe\n";
- open(IPC, "| $rpccli_cmd $server $creds -d0") or
- die "error opening rpc pipe.";
-}
-
-sub close_rpc_pipe {
- print "closing rpc pipe\n";
- close(IPC);
-}
-
-sub do_create {
- my $target_name = shift;
- print "creating $target_type $target_name\n";
- print IPC "$rpc_cmd $target_name\n";
-}
-
-# main:
-
-open_rpc_pipe();
-
-if ("x$startnum" eq "x") {
- do_create($prefix);
-}
-else {
- for (my $num = 1; $num <= $num_targets; ++$num) {
- do_create(sprintf "%s%.05d", $prefix, $startnum + $num - 1);
- if (($num) % 500 == 0) {
- printf("500 ".$target_type."s created\n");
- close_rpc_pipe();
- sleep 2;
- open_rpc_pipe();
- }
- }
-}
-
-close_rpc_pipe();
-
diff --git a/make-tarball.sh b/make-tarball.sh
deleted file mode 100644
index c57f01dc790..00000000000
--- a/make-tarball.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/sh
-
-## A simple script to build a tarball of the current CVS tree.
-## You either need to include the using_samba cvs module in the
-## parent directory or tell the script where to find it
-##
-## Usgae: ./make-tarball.sh [nodocs]
-
-NODOCS=0
-if [ x"$1" = x"nodocs" ] ; then
- NODOCS=1
- echo Not including docs.
-fi
-
-DOCSDIR=../samba-docs/
-USING_SAMBA=../using_samba/
-SRCDIR=`pwd`
-
-if [ $NODOCS -eq 0 ]; then
- if [ ! -d $USING_SAMBA ]; then
-
- echo Cannot find "Using Samba" directory \(assuming $USING_SAMBA\).
- echo Please set the USING_SAMBA variable in this script to the correct
- echo location. The html files are available in the using_samba CVS
- echo module on cvs.samba.org. See http://cvs.samba.org/ for details
- echo about anonymous CVS access. Exiting now....
-
- exit 1
-
- fi
-
- if [ ! -d $DOCSDIR ]; then
-
- echo Cannot find samba-docs \(assuming $DOCSDIR\).
- echo Please set the DOCSDIR variable in this script
- echo to the correct path.
-
- exit 1
-
- fi
-fi
-
-( cd source ; sh script/mkversion.sh )
-VERSION=`grep SAMBA_VERSION_OFFICIAL_STRING source/include/version.h | cut -d\" -f2 | sed 's/ /_/g'`
-TARBALLDIR=/tmp/samba-$VERSION
-
-echo Creating the tarball source directory in $TARBALLDIR
-
-/bin/rm -rf $TARBALLDIR
-/bin/rm -f samba-$VERSION.tar
-
-mkdir $TARBALLDIR
-rsync -aC ./ $TARBALLDIR
-/bin/rm -rf $TARBALLDIR/docs/*
-if [ $NODOCS -eq 0 ]; then
- rsync -aC $DOCSDIR/ $TARBALLDIR/docs/
- rsync -aC $USING_SAMBA $TARBALLDIR/docs/htmldocs/
-fi
-
-echo Creating packaging scripts...
-( cd $TARBALLDIR/packaging; sh bin/update-pkginfo $VERSION 1 )
-
-echo Creating source/configure...
-( cd $TARBALLDIR/source; ./autogen.sh )
-
-echo Making tarball samba-$VERSION.tar in current directory...
-( cd `dirname $TARBALLDIR`; tar cf $SRCDIR/samba-$VERSION.tar samba-$VERSION )
diff --git a/packaging/Debian/README b/packaging/Debian/README
index 8efe8164c8d..9c7a1d921fa 100644
--- a/packaging/Debian/README
+++ b/packaging/Debian/README
@@ -1,3 +1,6 @@
+NOTE: the debian-unstable and debian-woody are not updated anymore,
+they are left only as a reference for now. --SSS
+
Building Samba Packages for Debian GNU/Linux
--------------------------------------------
diff --git a/packaging/Debian/debian-sarge/changelog b/packaging/Debian/debian-sarge/changelog
index bd66900a7f2..65a25106903 100644
--- a/packaging/Debian/debian-sarge/changelog
+++ b/packaging/Debian/debian-sarge/changelog
@@ -1,3 +1,52 @@
+samba (3.0.25c-1) stable; urgency=low
+
+ * samba 3.0.25c bugfix release
+
+ -- Simo Sorce <idra@samba.org> Mon, 3 Sep 2007 11:18:30 -0400
+
+samba (3.0.25b-1) stable; urgency=low
+
+ * samba 3.0.25b bugfix release
+
+ -- Simo Sorce <idra@samba.org> Mon, 2 Jul 2007 12:16:30 -0400
+
+samba (3.0.25a-2) stable; urgency=low
+
+ * Fix bug in fhs.patch
+
+ -- Simo Sorce <idra@samba.org> Wed, 6 Jun 2007 11:33:30 -0400
+
+samba (3.0.25a-1) stable; urgency=high
+
+ * samba 3.0.25a Stabilizing release
+ * Includes Security fixes release with 3.0.24a and 3.0.25
+
+ -- Simo Sorce <idra@samba.org> Mon, 28 May 2007 20:45:30 -0400
+
+samba (3.0.24-1) stable; urgency=high
+
+ * samba 3.0.24 Security Release
+
+ -- Simo Sorce <idra@samba.org> Mon, 19 Feb 2007 15:53:30 -0500
+
+samba (3.0.23d-1) stable; urgency=low
+
+ * samba 3.0.23d Samba Team Release
+
+ -- Simo Sorce <idra@samba.org> Fri, 17 Nov 2006 15:39:30 -0500
+
+samba (3.0.23c-1) stable; urgency=low
+
+ * samba 3.0.23c Samba Team Release
+
+ -- Simo Sorce <idra@samba.org> Fri, 8 Sep 2006 14:12:30 -0400
+
+samba (3.0.23a-1) stable; urgency=low
+
+ * samba 3.0.23a Samba Team Release
+
+ -- Simo Sorce <idra@samba.org> Tue, 1 Aug 2006 22:01:30 -0400
+
samba (3.0.23-1) stable; urgency=low
* samba 3.0.23 Samba Team Release
diff --git a/packaging/Debian/debian-sarge/patches/documentation.patch b/packaging/Debian/debian-sarge/patches/documentation.patch
index 505a53c51b6..65fd1722b49 100644
--- a/packaging/Debian/debian-sarge/patches/documentation.patch
+++ b/packaging/Debian/debian-sarge/patches/documentation.patch
@@ -1,66 +1,66 @@
--- samba-3.0.4/docs/manpages/swat.8.orig 2004-05-05 10:22:50.000000000 -0400
+++ samba-3.0.4/docs/manpages/swat.8 2004-05-10 13:25:53.000000000 -0400
-@@ -80,6 +80,13 @@
+@@ -80,4 +80,10 @@
.SH "INSTALLATION"
-
.PP
+\fBDebian-specific Note\fR: all these steps have already been done for
+you. However, by default, swat is not enabled. This has been done for
+security reasons. To enable swat you need to edit /etc/inetd.conf,
+uncomment the swat entry (usually at the end of the file), and then
+restart inetd.
-+
+.PP
Swat is included as binary package with most distributions\&. The package manager in this case takes care of the installation and configuration\&. This section is only for those who have compiled swat from scratch\&.
-
.PP
-@@ -87,13 +94,13 @@
-
- .TP 3
+@@ -87,12 +94,12 @@
+ .TP 3n
\(bu
-/usr/local/samba/sbin/swat
+/usr/sbin/swat
- .TP
+ .TP 3n
\(bu
-/usr/local/samba/swat/images/*
+/usr/share/samba/swat/images/*
- .TP
+ .TP 3n
\(bu
-/usr/local/samba/swat/help/*
+/usr/share/samba/swat/help/*
- .LP
-
.SS "Inetd Installation"
-@@ -102,7 +109,7 @@
- You need to edit your \fI/etc/inetd\&.conf \fR and \fI/etc/services\fR to enable SWAT to be launched via \fBinetd\fR\&.
-
.PP
--In \fI/etc/services\fR you need to add a line like this:
-+In \fI/etc/services\fR you need to add a line like this (not needed for Debian):
-
+ You need to edit your
+@@ -125,7 +131,7 @@
+ .PP
+ In
+ \fI/etc/services\fR
+-you need to add a line like this:
++you need to add a line like this (not needed for Debian):
.PP
\fBswat 901/tcp\fR
-@@ -114,10 +121,10 @@
- the choice of port number isn't really important except that it should be less than 1024 and not currently used (using a number above 1024 presents an obscure security hole depending on the implementation details of your\fBinetd\fR daemon)\&.
-
.PP
--In \fI/etc/inetd\&.conf\fR you should add a line like this:
-+In \fI/etc/inetd\&.conf\fR you should add a line like this (not needed for Debian since the maintainer scripts do it automatically. You need to uncomment the line, though, because it is added commented out for security reasons):
-
+@@ -140,9 +146,9 @@
+ .PP
+ In
+ \fI/etc/inetd.conf\fR
+-you should add a line like this:
++you should add a line like this (not needed for Debian since the maintainer scripts do it automatically. You need to uncomment the line, though, because it is added commented out for security reasons):
.PP
--\fBswat stream tcp nowait\&.400 root /usr/local/samba/sbin/swat swat\fR
-+\fBswat stream tcp nowait\&.400 root /usr/sbin/swat swat\fR
-
+-swat stream tcp nowait.400 root /usr/local/samba/sbin/swat swat
++swat stream tcp nowait.400 root /usr/sbin/swat swat
.PP
- Once you have edited \fI/etc/services\fR and \fI/etc/inetd\&.conf\fR you need to send a HUP signal to inetd\&. To do this use \fBkill \-1 PID \fR where PID is the process ID of the inetd daemon\&.
-@@ -141,8 +148,8 @@
- This file must contain a mapping of service name (e\&.g\&., swat) to service port (e\&.g\&., 901) and protocol type (e\&.g\&., tcp)\&.
-
- .TP
--\fI/usr/local/samba/lib/smb\&.conf\fR
--This is the default location of the \fBsmb\&.conf\fR(5) server configuration file that swat edits\&. Other common places that systems install this file are \fI /usr/samba/lib/smb\&.conf\fR and \fI/etc/smb\&.conf \fR\&. This file describes all the services the server is to make available to clients\&.
-+\fI/etc/samba/smb\&.conf\fR
-+This is the default location of the \fBsmb\&.conf\fR(5) server configuration file that swat edits\&. This file describes all the services the server is to make available to clients\&.
-
+ Once you have edited
+ \fI/etc/services\fR
+@@ -166,13 +172,13 @@
+ .RE
+ .PP
+-\fI/usr/local/samba/lib/smb.conf\fR
++\fI/etc/samba/smb.conf\fR
+ .RS 3n
+ This is the default location of the
+ \fBsmb.conf\fR(5)
+ server configuration file that swat edits. Other common places that systems install this file are
+ \fI /usr/samba/lib/smb.conf\fR
+ and
+-\fI/etc/smb.conf \fR. This file describes all the services the server is to make available to clients.
++\fI/etc/samba/smb.conf \fR. This file describes all the services the server is to make available to clients.
+ .RE
.SH "WARNINGS"
-
+ .PP
diff --git a/packaging/Debian/debian-sarge/patches/fhs.patch b/packaging/Debian/debian-sarge/patches/fhs.patch
index e152ec873e9..5ab5053bed9 100644
--- a/packaging/Debian/debian-sarge/patches/fhs.patch
+++ b/packaging/Debian/debian-sarge/patches/fhs.patch
@@ -111,19 +111,6 @@ diff -uNr samba-3.0.10.orig/source/dynconfig.c samba-3.0.10/source/dynconfig.c
+ return lp_lockdir();
+#endif
+}
-diff -uNr samba-3.0.10.orig/source/groupdb/mapping.c samba-3.0.10/source/groupdb/mapping.c
---- samba-3.0.10.orig/source/groupdb/mapping.c 2004-12-17 03:50:08.000000000 -0800
-+++ samba-3.0.10/source/groupdb/mapping.c 2004-12-17 03:55:29.000000000 -0800
-@@ -140,8 +140,8 @@
-
- if (tdb)
- return True;
-
-- tdb = tdb_open_log(lock_path("group_mapping.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
-+ tdb = tdb_open_log(state_path("group_mapping.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
- if (!tdb) {
- DEBUG(0,("Failed to open group mapping database\n"));
- return False;
diff -uNr samba-3.0.10.orig/source/include/dynconfig.h samba-3.0.10/source/include/dynconfig.h
--- samba-3.0.10.orig/source/include/dynconfig.h 2004-12-17 03:50:08.000000000 -0800
+++ samba-3.0.10/source/include/dynconfig.h 2004-12-17 03:55:29.000000000 -0800
@@ -152,18 +139,6 @@ diff -uNr samba-3.0.10.orig/source/intl/lang_tdb.c samba-3.0.10/source/intl/lang
if (stat(msg_path, &st) != 0) {
/* the msg file isn't available */
DEBUG(10, ("lang_tdb_init: %s: %s\n", msg_path,
-diff -uNr samba-3.0.21.orig/source/lib/account_pol.c samba-3.0.21/source/lib/account_pol.c
---- samba-3.0.21.orig/source/lib/account_pol.c 2005-12-20 15:28:38.000000000 +0000
-+++ samba-3.0.21/source/lib/account_pol.c 2005-12-23 11:41:08.000000000 +0000
-@@ -262,7 +262,7 @@
- return True;
- }
-
-- tdb = tdb_open_log(lock_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
-+ tdb = tdb_open_log(state_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
- if (!tdb) {
- DEBUG(0,("Failed to open account policy database\n"));
- return False;
diff -uNr samba-3.0.10.orig/source/lib/util.c samba-3.0.10/source/lib/util.c
--- samba-3.0.10.orig/source/lib/util.c 2004-12-17 03:50:08.000000000 -0800
+++ samba-3.0.10/source/lib/util.c 2004-12-17 03:55:29.000000000 -0800
@@ -229,32 +204,6 @@ diff -uNr samba-3.0.10.orig/source/lib/util.c samba-3.0.10/source/lib/util.c
* @brief Returns the platform specific shared library extension.
*
* @retval Pointer to a static #fstring containing the extension.
-diff -uNr samba-3.0.10.orig/source/lib/util_unistr.c samba-3.0.10/source/lib/util_unistr.c
---- samba-3.0.10.orig/source/lib/util_unistr.c 2004-12-17 03:50:08.000000000 -0800
-+++ samba-3.0.10/source/lib/util_unistr.c 2004-12-17 03:55:29.000000000 -0800
-@@ -54,11 +54,11 @@
- }
- initialised = 1;
-
-- upcase_table = map_file(lib_path("upcase.dat"), 0x20000);
-+ upcase_table = map_file(data_path("upcase.dat"), 0x20000);
- upcase_table_use_unmap = ( upcase_table != NULL );
-
-- lowcase_table = map_file(lib_path("lowcase.dat"), 0x20000);
-+ lowcase_table = map_file(data_path("lowcase.dat"), 0x20000);
- lowcase_table_use_unmap = ( lowcase_table != NULL );
-
- #ifdef HAVE_SETLOCALE
- /* Get the name of the current locale. */
-@@ -161,7 +161,7 @@
- return;
- }
-
-- valid_file = map_file(lib_path("valid.dat"), 0x10000);
-+ valid_file = map_file(data_path("valid.dat"), 0x10000);
- if (valid_file) {
- valid_table = valid_file;
- mapped_file = 1;
diff -uNr samba-3.0.10.orig/source/libsmb/samlogon_cache.c samba-3.0.10/source/libsmb/samlogon_cache.c
--- samba-3.0.10.orig/source/libsmb/samlogon_cache.c 2004-12-17 03:50:08.000000000 -0800
+++ samba-3.0.10/source/libsmb/samlogon_cache.c 2004-12-17 03:55:29.000000000 -0800
@@ -267,15 +216,6 @@ diff -uNr samba-3.0.10.orig/source/libsmb/samlogon_cache.c samba-3.0.10/source/l
TDB_DEFAULT, O_RDWR | O_CREAT, 0600);
}
-@@ -67,7 +67,7 @@
- winbindd_cache.tdb open. Open the tdb if a NULL is passed. */
-
- if (!tdb) {
-- tdb = tdb_open_log(lock_path("winbindd_cache.tdb"), 5000,
-+ tdb = tdb_open_log(cache_path("winbindd_cache.tdb"), 5000,
- TDB_DEFAULT, O_RDWR, 0600);
- if (!tdb) {
- DEBUG(5, ("netsamlogon_clear_cached_user: failed to open cache\n"));
diff -uNr samba-3.0.10.orig/source/nmbd/nmbd_serverlistdb.c samba-3.0.10/source/nmbd/nmbd_serverlistdb.c
--- samba-3.0.10.orig/source/nmbd/nmbd_serverlistdb.c 2004-12-17 03:50:09.000000000 -0800
+++ samba-3.0.10/source/nmbd/nmbd_serverlistdb.c 2004-12-17 03:55:29.000000000 -0800
@@ -321,18 +261,27 @@ diff -uNr samba-3.0.23.orig/source/nsswitch/winbindd_cache.c samba-3.0.23/source
WINBINDD_CACHE_TDB_DEFAULT_HASH_SIZE,
TDB_DEFAULT /*TDB_CLEAR_IF_FIRST*/, O_RDWR|O_CREAT, 0600);
-diff -uNr samba-3.0.10.orig/source/nsswitch/winbindd_util.c samba-3.0.10/source/nsswitch/winbindd_util.c
---- samba-3.0.10.orig/source/nsswitch/winbindd_util.c 2004-12-17 03:50:09.000000000 -0800
-+++ samba-3.0.10/source/nsswitch/winbindd_util.c 2004-12-17 03:55:30.000000000 -0800
-@@ -957,7 +957,7 @@
- SMB_STRUCT_STAT stbuf;
- TDB_CONTEXT *idmap_tdb;
+@@ -2223,9 +2223,9 @@
+ tdb_close(wcache->tdb);
+ wcache->tdb = NULL;
-- pstrcpy(idmap_name, lock_path("winbindd_idmap.tdb"));
-+ pstrcpy(idmap_name, state_path("winbindd_idmap.tdb"));
+- if (unlink(lock_path("winbindd_cache.tdb")) == -1) {
++ if (unlink(cache_path("winbindd_cache.tdb")) == -1) {
+ DEBUG(0,("initialize_winbindd_cache: unlink %s failed %s ",
+- lock_path("winbindd_cache.tdb"),
++ cache_path("winbindd_cache.tdb"),
+ strerror(errno) ));
+ return False;
+ }
+@@ -2487,7 +2487,7 @@
+ return;
- if (!file_exist(idmap_name, &stbuf)) {
- /* nothing to convert return */
+ /* when working offline we must not clear the cache on restart */
+- wcache->tdb = tdb_open_log(lock_path("winbindd_cache.tdb"),
++ wcache->tdb = tdb_open_log(cache_path("winbindd_cache.tdb"),
+ WINBINDD_CACHE_TDB_DEFAULT_HASH_SIZE,
+ lp_winbind_offline_logon() ? TDB_DEFAULT : (TDB_DEFAULT | TDB_CLEAR_IF_FIRST),
+ O_RDWR|O_CREAT, 0600);
diff -uNr samba-3.0.10.orig/source/param/loadparm.c samba-3.0.10/source/param/loadparm.c
--- samba-3.0.10.orig/source/param/loadparm.c 2004-12-17 03:50:09.000000000 -0800
+++ samba-3.0.10/source/param/loadparm.c 2004-12-17 03:55:30.000000000 -0800
@@ -498,18 +447,6 @@ diff -uNr samba-3.0.23.orig/source/lib/sharesec.c samba-3.0.23/source/lib/shares
return False;
}
-diff -uNr samba-3.0.10.orig/source/sam/idmap_tdb.c samba-3.0.10/source/sam/idmap_tdb.c
---- samba-3.0.10.orig/source/sam/idmap_tdb.c 2004-12-17 03:50:09.000000000 -0800
-+++ samba-3.0.10/source/sam/idmap_tdb.c 2004-12-17 03:55:31.000000000 -0800
-@@ -487,7 +487,7 @@
- BOOL tdb_is_new = False;
-
- /* use the old database if present */
-- tdbfile = SMB_STRDUP(lock_path("winbindd_idmap.tdb"));
-+ tdbfile = SMB_STRDUP(state_path("winbindd_idmap.tdb"));
- if (!tdbfile) {
- DEBUG(0, ("idmap_init: out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
diff -uNr samba-3.0.23.orig/source/smbd/lanman.c samba-3.0.23/source/smbd/lanman.c
--- samba-3.0.23.orig/source/smbd/lanman.c 2006-07-15 09:50:10.000000000 -0400
+++ samba-3.0.23/source/smbd/lanman.c 2006-07-15 09:55:31.000000000 -0400
@@ -525,18 +462,6 @@ diff -uNr samba-3.0.23.orig/source/smbd/lanman.c samba-3.0.23/source/smbd/lanman
return 0;
}
-diff -uNr samba-3.0.10.orig/source/utils/net_idmap.c samba-3.0.10/source/utils/net_idmap.c
---- samba-3.0.10.orig/source/utils/net_idmap.c 2004-12-17 03:50:10.000000000 -0800
-+++ samba-3.0.10/source/utils/net_idmap.c 2004-12-17 03:55:32.000000000 -0800
-@@ -126,7 +126,7 @@
- return NT_STATUS_UNSUCCESSFUL;
- }
-
-- tdbfile = SMB_STRDUP(lock_path("winbindd_idmap.tdb"));
-+ tdbfile = SMB_STRDUP(state_path("winbindd_idmap.tdb"));
- if (!tdbfile) {
- DEBUG(0, ("idmap_init: out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
diff -uNr samba-3.0.11.orig/source/printing/nt_printing.c samba-3.0.11/source/printing/nt_printing.c
--- samba-3.0.11.orig/source/printing/nt_printing.c 2005-03-23 02:51:08.000000000 -0800
+++ samba-3.0.11/source/printing/nt_printing.c 2005-03-23 02:54:33.000000000 -0800
@@ -549,3 +474,92 @@ diff -uNr samba-3.0.11.orig/source/printing/nt_printing.c samba-3.0.11/source/pr
pstrcat(printdb_path, sharename);
pstrcat(printdb_path, ".tdb");
+diff -uPr samba-3.0.25a.orig/source/groupdb/mapping_tdb.c samba-3.0.25a/source/groupdb/mapping_tdb.c
+--- samba-3.0.25a.orig/source/groupdb/mapping_tdb.c 2007-04-25 09:38:59.000000000 +0000
++++ samba-3.0.25a/source/groupdb/mapping_tdb.c 2007-05-29 00:28:42.000000000 +0000
+@@ -39,7 +39,7 @@
+ if (tdb)
+ return True;
+
+- tdb = tdb_open_log(lock_path("group_mapping.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
++ tdb = tdb_open_log(state_path("group_mapping.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+ if (!tdb) {
+ DEBUG(0,("Failed to open group mapping database\n"));
+ return False;
+diff -uPr samba-3.0.25a.orig/source/lib/account_pol.c samba-3.0.25a/source/lib/account_pol.c
+--- samba-3.0.25a.orig/source/lib/account_pol.c 2007-03-01 04:54:30.000000000 +0000
++++ samba-3.0.25a/source/lib/account_pol.c 2007-05-29 00:21:35.000000000 +0000
+@@ -213,9 +213,9 @@
+ return True;
+ }
+
+- tdb = tdb_open_log(lock_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600);
++ tdb = tdb_open_log(state_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600);
+ if (!tdb) { /* the account policies files does not exist or open failed, try to create a new one */
+- tdb = tdb_open_log(lock_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
++ tdb = tdb_open_log(state_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+ if (!tdb) {
+ DEBUG(0,("Failed to open account policy database\n"));
+ return False;
+diff -uPr samba-3.0.25a.orig/source/lib/util_unistr.c samba-3.0.25a/source/lib/util_unistr.c
+--- samba-3.0.25a.orig/source/lib/util_unistr.c 2007-03-01 04:54:30.000000000 +0000
++++ samba-3.0.25a/source/lib/util_unistr.c 2007-05-29 00:24:07.000000000 +0000
+@@ -88,11 +88,11 @@
+ }
+ initialised = 1;
+
+- upcase_table = (smb_ucs2_t *)map_file(lib_path("upcase.dat"),
++ upcase_table = (smb_ucs2_t *)map_file(data_path("upcase.dat"),
+ 0x20000);
+ upcase_table_use_unmap = ( upcase_table != NULL );
+
+- lowcase_table = (smb_ucs2_t *)map_file(lib_path("lowcase.dat"),
++ lowcase_table = (smb_ucs2_t *)map_file(data_path("lowcase.dat"),
+ 0x20000);
+ lowcase_table_use_unmap = ( lowcase_table != NULL );
+
+@@ -230,7 +230,7 @@
+ return;
+ }
+
+- valid_file = (uint8 *)map_file(lib_path("valid.dat"), 0x10000);
++ valid_file = (uint8 *)map_file(data_path("valid.dat"), 0x10000);
+ if (valid_file) {
+ valid_table = valid_file;
+ mapped_file = 1;
+diff -uPr samba-3.0.25a.orig/source/libsmb/samlogon_cache.c samba-3.0.25a/source/libsmb/samlogon_cache.c
+--- samba-3.0.25a.orig/source/libsmb/samlogon_cache.c 2007-05-10 22:09:35.000000000 +0000
++++ samba-3.0.25a/source/libsmb/samlogon_cache.c 2007-05-29 00:38:41.000000000 +0000
+@@ -67,7 +67,7 @@
+ winbindd_cache.tdb open. Open the tdb if a NULL is passed. */
+
+ if (!tdb) {
+- tdb = tdb_open_log(lock_path("winbindd_cache.tdb"),
++ tdb = tdb_open_log(cache_path("winbindd_cache.tdb"),
+ WINBINDD_CACHE_TDB_DEFAULT_HASH_SIZE,
+ TDB_DEFAULT, O_RDWR, 0600);
+ if (!tdb) {
+diff -uPr samba-3.0.25a.orig/source/nsswitch/idmap_tdb.c samba-3.0.25a/source/nsswitch/idmap_tdb.c
+--- samba-3.0.25a.orig/source/nsswitch/idmap_tdb.c 2007-05-10 22:09:34.000000000 +0000
++++ samba-3.0.25a/source/nsswitch/idmap_tdb.c 2007-05-29 00:27:55.000000000 +0000
+@@ -247,7 +247,7 @@
+ }
+
+ /* use the old database if present */
+- tdbfile = talloc_strdup(ctx, lock_path("winbindd_idmap.tdb"));
++ tdbfile = talloc_strdup(ctx, state_path("winbindd_idmap.tdb"));
+ if (!tdbfile) {
+ DEBUG(0, ("Out of memory!\n"));
+ ret = NT_STATUS_NO_MEMORY;
+diff -uPr samba-3.0.25a.orig/source/passdb/pdb_tdb.c samba-3.0.25a/source/passdb/pdb_tdb.c
+--- samba-3.0.25a.orig/source/passdb/pdb_tdb.c 2007-03-01 04:54:41.000000000 +0000
++++ samba-3.0.25a/source/passdb/pdb_tdb.c 2007-05-29 00:38:41.000000000 +0000
+@@ -1559,7 +1559,7 @@
+ uint32 rid;
+ BOOL ret = False;
+
+- tdb = tdb_open_log(lock_path("winbindd_idmap.tdb"), 0,
++ tdb = tdb_open_log(state_path("winbindd_idmap.tdb"), 0,
+ TDB_DEFAULT, O_RDWR | O_CREAT, 0644);
+
+ if (tdb == NULL) {
diff --git a/packaging/Debian/debian-sarge/patches/nmbd-signalling.patch b/packaging/Debian/debian-sarge/patches/nmbd-signalling.patch.unused
index ca04cce3bfa..ca04cce3bfa 100644
--- a/packaging/Debian/debian-sarge/patches/nmbd-signalling.patch
+++ b/packaging/Debian/debian-sarge/patches/nmbd-signalling.patch.unused
diff --git a/packaging/Debian/debian-sarge/patches/non-linux-ports.patch b/packaging/Debian/debian-sarge/patches/non-linux-ports.patch
index ac2ee1dcf54..2a3f55ed4d4 100644
--- a/packaging/Debian/debian-sarge/patches/non-linux-ports.patch
+++ b/packaging/Debian/debian-sarge/patches/non-linux-ports.patch
@@ -47,16 +47,18 @@ diff -uNr samba-3.0.11.orig/source/configure.in samba-3.0.11/source/configure.in
AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
AC_TRY_LINK([#include <sys/sendfile.h>],
[\
-@@ -4307,10 +4319,10 @@
+@@ -4307,12 +4319,12 @@
WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
case "$host_os" in
- *linux*)
+ linux*-gnu* | gnu* | k*bsd*-gnu)
+ NSSSONAMEVERSIONSUFFIX=".2"
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
;;
- *freebsd[[5-9]]*)
+ freebsd5*|*freebsd[[6-9]]*)
# FreeBSD winbind client is implemented as a wrapper around
# the Linux version.
+ NSSSONAMEVERSIONSUFFIX=".1"
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
diff --git a/packaging/Debian/debian-sarge/patches/samba.patch b/packaging/Debian/debian-sarge/patches/samba.patch
index 8e77cfb86e5..d1d443af26f 100644
--- a/packaging/Debian/debian-sarge/patches/samba.patch
+++ b/packaging/Debian/debian-sarge/patches/samba.patch
@@ -32,11 +32,11 @@ diff -uNr samba-3.0.0beta1.orig/source/web/diagnose.c samba-3.0.0beta1/source/we
--- samba-3.0.0beta1.orig/source/web/diagnose.c 2003-06-07 12:57:41.000000000 -0500
+++ samba-3.0.0beta1/source/web/diagnose.c 2003-06-30 20:12:22.000000000 -0500
@@ -66,6 +66,7 @@
- static struct cli_state cli;
- extern struct in_addr loopback_ip;
+ {
+ struct cli_state *cli;
+ loopback_ip.s_addr = htonl((127 << 24) + 1);
- if (!cli_initialise(&cli))
+ if ((cli = cli_initialise()) == NULL)
return False;
--- samba-3.0.23/source/script/installbin.sh.in.orig 2006-07-15 09:08:36.000000000 -0400
diff --git a/packaging/Debian/debian-sarge/patches/undefined-symbols.patch b/packaging/Debian/debian-sarge/patches/undefined-symbols.patch
deleted file mode 100644
index e9a376ea9b8..00000000000
--- a/packaging/Debian/debian-sarge/patches/undefined-symbols.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -uNr samba-3.0.11.orig/source/Makefile.in samba-3.0.11/source/Makefile.in
---- samba-3.0.11.orig/source/Makefile.in 2005-03-23 02:40:40.000000000 -0800
-+++ samba-3.0.11/source/Makefile.in 2005-03-23 02:48:59.000000000 -0800
-@@ -631,7 +631,8 @@
- $(RPC_ECHO_OBJ) $(SMBLDAP_OBJ) $(IDMAP_OBJ) libsmb/spnego.o $(PASSCHANGE_OBJ)
-
- WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \
-- $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ)
-+ $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) \
-+ $(SECRETS_OBJ)
-
- WINBIND_WINS_NSS_PICOBJS = $(WINBIND_WINS_NSS_OBJ:.o=.@PICSUFFIX@)
-
-@@ -997,7 +998,7 @@
-
- bin/libsmbclient.@SHLIBEXT@: $(LIBSMBCLIENT_PICOBJS)
- @echo Linking libsmbclient shared library $@
-- @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBCLIENT_PICOBJS) $(LDFLAGS) $(LIBS) \
-+ @$(SHLD) $(LDSHFLAGS) -Wl,-z,defs -o $@ $(LIBSMBCLIENT_PICOBJS) $(LDFLAGS) $(LIBS) \
- $(KRB5LIBS) $(LDAP_LIBS) \
- @SONAMEFLAG@`basename $@`.$(LIBSMBCLIENT_MAJOR)
-
diff --git a/source/.indent.pro b/source/.indent.pro
new file mode 100644
index 00000000000..05445f44924
--- /dev/null
+++ b/source/.indent.pro
@@ -0,0 +1,30 @@
+-bad
+-bap
+-bbb
+-br
+-ce
+-ut
+-ts8
+-i8
+-di1
+-brs
+-npsl
+-npcs
+-prs
+-bbo
+-hnl
+-bad
+-bap
+-bbb
+-br
+-ce
+-ut
+-ts8
+-i8
+-di1
+-brs
+-npsl
+-npcs
+-prs
+-bbo
+-hnl
diff --git a/source/.valgrind_suppressions b/source/.valgrind_suppressions
deleted file mode 100644
index a09a4dcf7d8..00000000000
--- a/source/.valgrind_suppressions
+++ /dev/null
@@ -1,85 +0,0 @@
-# add valgrind suppressions for the build farm here. Get the format
-# from the build farm log
-
-{
- samba_dlopen1
- Memcheck:Cond
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/tls/libc-2.3.6.so
- obj:/lib/ld-2.3.6.so
- fun:_dl_open
-}
-
-{
- samba_dlopen2
- Memcheck:Cond
- obj:/lib/ld-2.3.6.so
- fun:_dl_open
-}
-
-{
- samba_dlopen3
- Memcheck:Addr4
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/tls/libc-2.3.6.so
- obj:/lib/ld-2.3.6.so
- fun:_dl_open
-}
-
-{
- samba_dlopen4
- Memcheck:Cond
- obj:/lib/ld-2.3.6.so
- obj:/lib/tls/libc-2.3.6.so
- obj:/lib/ld-2.3.6.so
- fun:_dl_open
- }
-
-{
- samba_dlopen5
- Memcheck:Addr4
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/tls/libc-2.3.6.so
- obj:/lib/ld-2.3.6.so
- fun:_dl_open
-}
-
-{
- samba_dlopen6
- Memcheck:Cond
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/tls/libc-2.3.6.so
- obj:/lib/ld-2.3.6.so
- fun:_dl_open
-}
-
-{
- samba_dlopen7
- Memcheck:Addr4
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/tls/libc-2.3.6.so
- obj:/lib/ld-2.3.6.so
- fun:_dl_open
-}
-
-{
- samba_libc_dlsym1
- Memcheck:Addr4
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/ld-2.3.6.so
- obj:/lib/tls/libc-2.3.6.so
- obj:/lib/ld-2.3.6.so
- fun:__libc_dlsym
-}
diff --git a/source/Doxyfile b/source/Doxyfile
index cdcb658908a..c1040781d84 100644
--- a/source/Doxyfile
+++ b/source/Doxyfile
@@ -168,3 +168,9 @@ DOT_CLEANUP = YES
# configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
+CGI_NAME = search.cgi
+CGI_URL =
+DOC_URL =
+DOC_ABSPATH =
+BIN_ABSPATH = /usr/local/bin/
+EXT_DOC_PATHS =
diff --git a/source/Makefile.in b/source/Makefile.in
index 5838829264b..ee6d6ed559d 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -20,38 +20,19 @@ smbtorture4_path=@smbtorture4_path@
LIBS=@LIBS@
CC=@CC@
SHLD=@SHLD@
-
-## Dynamic shared libraries build settings
-DSO_EXPORTS_CMD=-Wl,--version-script,$(srcdir)/exports/`basename $@ | sed 's/@SHLIBEXT@$$/syms/'`
-DSO_EXPORTS=@DSO_EXPORTS@
-SONAME_VER=`grep ^$@ $(builddir)/library-versions | cut -d: -f2`
-SHLD_DSO = $(SHLD) $(LDSHFLAGS) $(DSO_EXPORTS) -o $@
-
-# Add $(DEVELOPER_CFLAGS) to $(CFLAGS) to enable extra compiler
-# (GCC) warnings. This is done automtically for --enable-developer
-# and --enable-krb5developer.
-DEVELOPER_CFLAGS=@DEVELOPER_CFLAGS@
CFLAGS=@CFLAGS@
CPPFLAGS=-DHAVE_CONFIG_H @CPPFLAGS@
-
EXEEXT=@EXEEXT@
-LDFLAGS=@PIE_LDFLAGS@ @LDFLAGS@
AR=@AR@
LDSHFLAGS=@LDSHFLAGS@ @LDFLAGS@
-
-# The MODULE_EXPORTS variable conatins the platform-specific linker flags
-# needed to restrict the exports for VFS, IDMAP, RPC and PASSDB modules.
-MODULE_EXPORTS=@MODULE_EXPORTS@
-
WINBIND_NSS_LDSHFLAGS=@WINBIND_NSS_LDSHFLAGS@ @LDFLAGS@
+LDFLAGS=@PIE_LDFLAGS@ @LDFLAGS@
AWK=@AWK@
PICFLAG=@PICFLAG@
DYNEXP=@DYNEXP@
PYTHON=@PYTHON@
PERL=@PERL@
-PIDL_ARGS=@PIDL_ARGS@
-
TERMLDFLAGS=@TERMLDFLAGS@
TERMLIBS=@TERMLIBS@
PRINT_LIBS=@PRINT_LIBS@
@@ -103,9 +84,8 @@ VARDIR = @localstatedir@
MANDIR = @mandir@
DATADIR = @datadir@
-# The permissions to give the executables and other data
-INSTALLPERMS_BIN = 0755
-INSTALLPERMS_DATA = 0644
+# The permissions to give the executables
+INSTALLPERMS = 0755
# set these to where to find various files
# These can be overridden by command line switches (see smbd(8))
@@ -113,7 +93,6 @@ INSTALLPERMS_DATA = 0644
LOGFILEBASE = @logfilebase@
CONFIGFILE = $(CONFIGDIR)/smb.conf
LMHOSTSFILE = $(CONFIGDIR)/lmhosts
-CTDBDIR = @ctdbdir@
# This is where smbpasswd et al go
PRIVATEDIR = @privatedir@
@@ -131,35 +110,41 @@ LOCKDIR = @lockdir@
PIDDIR = @piddir@
LIBSMBCLIENT=bin/libsmbclient.a @LIBSMBCLIENT_SHARED@
+LIBSMBCLIENT_MAJOR=0
+LIBSMBCLIENT_MINOR=1
+
LIBMSRPC=bin/libmsrpc.a @LIBMSRPC_SHARED@
+LIBMSRPC_MAJOR=0
+LIBMSRPC_MINOR=1
+
LIBSMBSHAREMODES=bin/libsmbsharemodes.a @LIBSMBSHAREMODES_SHARED@
+LIBSMBSHAREMODES_MAJOR=0
+LIBSMBSHAREMODES_MINOR=2
+
LIBADDNS=bin/libaddns.a @LIBADDNS_SHARED@
+LIBADDNS_MAJOR=0
+LIBADDNS_MINOR=1
FLAGS1 = $(CFLAGS) @FLAGS1@ @SAMBA_CPPFLAGS@ $(CPPFLAGS)
FLAGS2 =
FLAGS3 =
-FLAGS4 = -I$(CTDBDIR)/include
+FLAGS4 =
FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4)
FLAGS = $(ISA) $(FLAGS5) -I$(srcdir)/lib -D_SAMBA_BUILD_=3
-PATH_FLAGS = -DSMB_PASSWD_FILE=\"$(SMB_PASSWD_FILE)\" \
- -DPRIVATE_DIR=\"$(PRIVATE_DIR)\" \
- -DCONFIGFILE=\"$(CONFIGFILE)\" \
- -DSBINDIR=\"$(SBINDIR)\" \
- -DBINDIR=\"$(BINDIR)\" \
- -DLMHOSTSFILE=\"$(LMHOSTSFILE)\" \
- -DSWATDIR=\"$(SWATDIR)\" \
- -DLOCKDIR=\"$(LOCKDIR)\" \
- -DPIDDIR=\"$(PIDDIR)\" \
- -DLIBDIR=\"$(LIBDIR)\" \
- -DLOGFILEBASE=\"$(LOGFILEBASE)\" \
- -DSHLIBEXT=\"@SHLIBEXT@\" \
- -DCTDBDIR=\"$(CTDBDIR)\" \
- -DCONFIGDIR=\"$(CONFIGDIR)\"
+PASSWD_FLAGS = -DSMB_PASSWD_FILE=\"$(SMB_PASSWD_FILE)\" -DPRIVATE_DIR=\"$(PRIVATE_DIR)\"
+PATH_FLAGS1 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DSBINDIR=\"$(SBINDIR)\"
+PATH_FLAGS2 = $(PATH_FLAGS1) -DBINDIR=\"$(BINDIR)\"
+PATH_FLAGS3 = $(PATH_FLAGS2) -DLMHOSTSFILE=\"$(LMHOSTSFILE)\"
+PATH_FLAGS4 = $(PATH_FLAGS3) -DSWATDIR=\"$(SWATDIR)\" -DLOCKDIR=\"$(LOCKDIR)\" -DPIDDIR=\"$(PIDDIR)\"
+PATH_FLAGS5 = $(PATH_FLAGS4) -DLIBDIR=\"$(LIBDIR)\" \
+ -DLOGFILEBASE=\"$(LOGFILEBASE)\" -DSHLIBEXT=\"@SHLIBEXT@\"
+PATH_FLAGS6 = $(PATH_FLAGS5) -DCONFIGDIR=\"$(CONFIGDIR)\"
+PATH_FLAGS = $(PATH_FLAGS6) $(PASSWD_FLAGS)
# Note that all executable programs now provide for an optional executable suffix.
-SBIN_PROGS = bin/smbd@EXEEXT@ bin/nmbd@EXEEXT@ @SWAT_SBIN_TARGETS@ @EXTRA_SBIN_PROGS@
+SBIN_PROGS = bin/smbd@EXEEXT@ bin/nmbd@EXEEXT@ bin/swat@EXEEXT@ @EXTRA_SBIN_PROGS@
ROOT_SBIN_PROGS = @CIFSMOUNT_PROGS@
@@ -171,21 +156,18 @@ BIN_PROGS2 = bin/smbcontrol@EXEEXT@ bin/smbtree@EXEEXT@ bin/tdbbackup@EXEEXT@ \
BIN_PROGS3 = bin/smbpasswd@EXEEXT@ bin/rpcclient@EXEEXT@ bin/smbcacls@EXEEXT@ \
bin/profiles@EXEEXT@ bin/ntlm_auth@EXEEXT@ \
bin/smbcquotas@EXEEXT@ bin/eventlogadm@EXEEXT@
-BIN_PROGS4 = bin/ldbedit@EXEEXT@ bin/ldbsearch@EXEEXT@ bin/ldbadd@EXEEXT@ \
- bin/ldbdel@EXEEXT@ bin/ldbmodify@EXEEXT@
TORTURE_PROGS = bin/smbtorture@EXEEXT@ bin/msgtest@EXEEXT@ \
bin/masktest@EXEEXT@ bin/locktest@EXEEXT@ \
bin/locktest2@EXEEXT@ bin/nsstest@EXEEXT@ bin/vfstest@EXEEXT@ \
- bin/pdbtest@EXEEXT@ bin/talloctort@EXEEXT@ bin/replacetort@EXEEXT@ \
- bin/tdbtorture@EXEEXT@
+ bin/pdbtest@EXEEXT@ bin/talloctort@EXEEXT@ bin/replacetort@EXEEXT@
-BIN_PROGS = @EXTRA_BIN_PROGS@ @SMBMOUNT_PROGS@ \
- $(BIN_PROGS1) $(BIN_PROGS2) $(BIN_PROGS3) $(BIN_PROGS4)
+BIN_PROGS = @SMBMOUNT_PROGS@ @EXTRA_BIN_PROGS@ \
+ $(BIN_PROGS1) $(BIN_PROGS2) $(BIN_PROGS3)
EVERYTHING_PROGS = bin/debug2html@EXEEXT@ bin/smbfilter@EXEEXT@ \
bin/talloctort@EXEEXT@ bin/replacetort@EXEEXT@ \
- bin/log2pcap@EXEEXT@ bin/sharesec@EXEEXT@ bin/ndrdump@EXEEXT@
+ bin/log2pcap@EXEEXT@ bin/sharesec@EXEEXT@
SHLIBS = @LIBSMBCLIENT@ @LIBSMBSHAREMODES@ @LIBMSRPC@ @LIBADDNS@
@@ -209,14 +191,11 @@ MODULES = $(VFS_MODULES) $(PDB_MODULES) $(RPC_MODULES) $(IDMAP_MODULES) \
# object file lists
######################################################################
-TDBBASE_OBJ = lib/tdb/common/tdb.o lib/tdb/common/dump.o lib/tdb/common/error.o \
- lib/tdb/common/freelist.o lib/tdb/common/freelistcheck.o \
- lib/tdb/common/io.o lib/tdb/common/lock.o \
- lib/tdb/common/open.o lib/tdb/common/transaction.o \
- lib/tdb/common/traverse.o
+TDBBASE_OBJ = tdb/common/tdb.o tdb/common/dump.o tdb/common/error.o \
+ tdb/common/freelist.o tdb/common/freelistcheck.o tdb/common/io.o tdb/common/lock.o \
+ tdb/common/open.o tdb/common/transaction.o tdb/common/traverse.o
-TDB_OBJ = $(TDBBASE_OBJ) lib/util_tdb.o\
- lib/dbwrap.o lib/dbwrap_tdb.o lib/dbwrap_ctdb.o
+TDB_OBJ = $(TDBBASE_OBJ) lib/util_tdb.o tdb/common/tdbback.o
SMBLDAP_OBJ = @SMBLDAP@ @SMBLDAPUTIL@
@@ -236,19 +215,11 @@ ERRORMAP_OBJ = libsmb/errormap.o
PASSCHANGE_OBJ = libsmb/passchange.o
-
LIBNDR_OBJ = librpc/ndr/ndr_basic.o librpc/ndr/ndr.o librpc/ndr/ndr_misc.o \
- librpc/ndr/ndr_sec_helper.o librpc/ndr/ndr_string.o librpc/ndr/sid.o
+ librpc/ndr/ndr_sec_helper.o librpc/ndr/ndr_string.o librpc/ndr/sid.o \
+ rpc_client/ndr.o
-RPCCLIENT_NDR_OBJ = rpc_client/ndr.o
-
-LIBNDR_GEN_OBJ = librpc/gen_ndr/ndr_unixinfo.o librpc/gen_ndr/ndr_lsa.o \
- librpc/gen_ndr/ndr_dfs.o librpc/gen_ndr/ndr_echo.o \
- librpc/gen_ndr/ndr_winreg.o librpc/gen_ndr/ndr_initshutdown.o \
- librpc/gen_ndr/ndr_srvsvc.o librpc/gen_ndr/ndr_svcctl.o \
- librpc/gen_ndr/ndr_eventlog.o librpc/gen_ndr/ndr_wkssvc.o \
- librpc/gen_ndr/ndr_notify.o \
- librpc/gen_ndr/ndr_epmapper.o
+LIBNDR_GEN_OBJ = librpc/gen_ndr/ndr_wkssvc.o librpc/gen_ndr/ndr_notify.o
RPC_PARSE_OBJ0 = rpc_parse/parse_prs.o rpc_parse/parse_misc.o
@@ -256,7 +227,7 @@ RPC_PARSE_OBJ0 = rpc_parse/parse_prs.o rpc_parse/parse_misc.o
# that requires knowledge of security contexts
RPC_PARSE_OBJ1 = $(RPC_PARSE_OBJ0) rpc_parse/parse_sec.o
-RPC_PARSE_OBJ2 = rpc_parse/parse_rpc.o rpc_parse/parse_net.o
+RPC_PARSE_OBJ2 = rpc_parse/parse_rpc.o rpc_parse/parse_net.o rpc_parse/parse_srv.o
LIBREPLACE_OBJ = @LIBREPLACE_OBJS@
@@ -264,10 +235,7 @@ SOCKET_WRAPPER_OBJ = @SOCKET_WRAPPER_OBJS@
TALLOC_OBJ = lib/talloc/talloc.o
-
-LIB_WITHOUT_PROTO_OBJ = $(LIBREPLACE_OBJ) $(SOCKET_WRAPPER_OBJ) $(TALLOC_OBJ) \
- lib/messages.o librpc/gen_ndr/ndr_messaging.o lib/messages_local.o \
- lib/messages_ctdbd.o lib/packet.o lib/ctdbd_conn.o
+LIB_WITHOUT_PROTO_OBJ = $(LIBREPLACE_OBJ) $(SOCKET_WRAPPER_OBJ) $(TALLOC_OBJ)
LIB_WITH_PROTO_OBJ = $(VERSION_OBJ) lib/charcnv.o lib/debug.o lib/fault.o \
lib/interface.o lib/md4.o \
@@ -276,21 +244,20 @@ LIB_WITH_PROTO_OBJ = $(VERSION_OBJ) lib/charcnv.o lib/debug.o lib/fault.o \
lib/ufc.o lib/genrand.o lib/username.o \
lib/util_pw.o lib/access.o lib/smbrun.o \
lib/bitmap.o lib/crc32.o lib/dprintf.o \
- lib/xfile.o lib/wins_srv.o $(UTIL_REG_OBJ) \
+ lib/xfile.o lib/wins_srv.o \
lib/util_str.o lib/clobber.o lib/util_sid.o lib/util_uuid.o \
lib/util_unistr.o lib/util_file.o lib/data_blob.o \
lib/util.o lib/util_sock.o lib/sock_exec.o lib/util_sec.o \
lib/substitute.o lib/fsusage.o \
- lib/ms_fnmatch.o lib/select.o lib/errmap_unix.o \
+ lib/ms_fnmatch.o lib/select.o lib/messages.o \
lib/tallocmsg.o lib/dmallocmsg.o libsmb/smb_signing.o \
lib/md5.o lib/hmacmd5.o lib/arc4.o lib/iconv.o \
nsswitch/wb_client.o $(WBCOMMON_OBJ) \
- lib/pam_errors.o intl/lang_tdb.o lib/conn_tdb.o \
+ lib/pam_errors.o intl/lang_tdb.o \
lib/adt_tree.o lib/gencache.o $(TDB_OBJ) \
lib/module.o lib/events.o lib/ldap_escape.o @CHARSET_STATIC@ \
lib/secdesc.o lib/util_seaccess.o lib/secace.o lib/secacl.o \
- libads/krb5_errs.o lib/system_smbd.o lib/audit.o $(LIBNDR_OBJ) \
- lib/file_id.o
+ libads/krb5_errs.o lib/system_smbd.o lib/audit.o
LIB_OBJ = $(LIB_WITHOUT_PROTO_OBJ) $(LIB_WITH_PROTO_OBJ)
@@ -303,9 +270,7 @@ READLINE_OBJ = lib/readline.o
# Be sure to include them into your application
POPT_LIB_OBJ = lib/popt_common.o
-PARAM_WITHOUT_REG_OBJ = dynconfig.o param/loadparm.o param/params.o lib/sharesec.o
-PARAM_REG_ADD_OBJ = $(UTIL_REG_API_OBJ)
-PARAM_OBJ = $(PARAM_WITHOUT_REG_OBJ) $(PARAM_REG_ADD_OBJ)
+PARAM_OBJ = dynconfig.o param/loadparm.o param/params.o lib/sharesec.o
KRBCLIENT_OBJ = libads/kerberos.o libads/ads_status.o
@@ -314,7 +279,7 @@ LIBADDNS_OBJ0 = libaddns/dnsrecord.o libaddns/dnsutils.o libaddns/dnssock.o \
LIBADDNS_OBJ = $(LIBADDNS_OBJ0) $(TALLOC_OBJ)
LIBGPO_OBJ0 = libgpo/gpo_ldap.o libgpo/gpo_parse.o libgpo/gpo_util.o \
- libgpo/gpo_fetch.o libgpo/gpo_filesync.o libgpo/gpo_sec.o
+ libgpo/gpo_fetch.o libgpo/gpo_filesync.o
LIBGPO_OBJ = $(LIBGPO_OBJ0)
LIBADS_OBJ = libads/ldap.o libads/ldap_printer.o libads/sasl.o \
@@ -343,74 +308,60 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
libsmb/clistr.o libsmb/cliquota.o libsmb/clifsinfo.o libsmb/clidfs.o \
libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \
libsmb/clioplock.o $(ERRORMAP_OBJ) libsmb/clirap2.o \
- libsmb/smb_seal.o $(DOSERR_OBJ) \
+ $(DOSERR_OBJ) \
$(RPC_PARSE_OBJ1) $(LIBSAMBA_OBJ) $(LIBNMB_OBJ)
-RPC_CLIENT_OBJ1 = rpc_client/cli_netlogon.o
+RPC_CLIENT_OBJ1 = rpc_client/cli_netlogon.o rpc_client/cli_srvsvc.o
LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \
$(RPC_CLIENT_OBJ1) rpc_client/cli_reg.o $(RPC_CLIENT_OBJ) \
rpc_client/cli_spoolss.o rpc_client/cli_spoolss_notify.o \
- rpc_client/cli_ds.o rpc_client/cli_svcctl.o
+ rpc_client/cli_ds.o rpc_client/cli_svcctl.o \
+ rpc_client/cli_shutdown.o rpc_client/cli_dfs.o rpc_client/cli_echo.o
-LIBMSRPC_GEN_OBJ = librpc/gen_ndr/cli_unixinfo.o librpc/gen_ndr/cli_lsa.o \
- librpc/gen_ndr/cli_dfs.o librpc/gen_ndr/cli_echo.o \
- librpc/gen_ndr/cli_srvsvc.o librpc/gen_ndr/cli_svcctl.o \
- librpc/gen_ndr/cli_winreg.o librpc/gen_ndr/cli_initshutdown.o \
- librpc/gen_ndr/cli_eventlog.o librpc/gen_ndr/cli_epmapper.o \
- $(LIBNDR_GEN_OBJ) $(RPCCLIENT_NDR_OBJ)
+LIBMSRPC_GEN_OBJ = librpc/gen_ndr/cli_wkssvc.o \
+ $(LIBNDR_GEN_OBJ) $(LIBNDR_OBJ)
REGOBJS_OBJ = registry/reg_objects.o
REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o registry/reg_printing.o \
registry/reg_db.o registry/reg_eventlog.o registry/reg_shares.o \
- registry/reg_util.o registry/reg_dynamic.o registry/reg_perfcount.o \
- registry/reg_smbconf.o registry/reg_api.o \
- registry/reg_frontend_hilvl.o \
- $(UTIL_REG_API_OBJ) $(UTIL_REG_SMBCONF_OBJ)
+ registry/reg_util.o registry/reg_dynamic.o registry/reg_perfcount.o
-RPC_LSA_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o librpc/gen_ndr/srv_lsa.o
+RPC_LSA_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o
RPC_NETLOG_OBJ = rpc_server/srv_netlog.o rpc_server/srv_netlog_nt.o
RPC_SAMR_OBJ = rpc_server/srv_samr.o rpc_server/srv_samr_nt.o \
rpc_server/srv_samr_util.o
-RPC_UNIXINFO_OBJ = librpc/gen_ndr/srv_unixinfo.o rpc_server/srv_unixinfo_nt.o
REGFIO_OBJ = registry/regfio.o
-RPC_EPMAPPER_OBJ = librpc/gen_ndr/srv_epmapper.o rpc_server/srv_epmapper_nt.o
-
-RPC_INITSHUTDOWN_OBJ = librpc/gen_ndr/srv_initshutdown.o rpc_server/srv_initshutdown_nt.o
+RPC_REG_OBJ = rpc_server/srv_reg.o rpc_server/srv_reg_nt.o $(REGFIO_OBJ)
-RPC_REG_OBJ = rpc_server/srv_winreg_nt.o \
- librpc/gen_ndr/srv_winreg.o \
- $(REGFIO_OBJ)
RPC_LSA_DS_OBJ = rpc_server/srv_lsa_ds.o rpc_server/srv_lsa_ds_nt.o
-RPC_SVC_OBJ = librpc/gen_ndr/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o
+RPC_SVC_OBJ = rpc_server/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o
RPC_WKS_OBJ = librpc/gen_ndr/srv_wkssvc.o rpc_server/srv_wkssvc_nt.o
RPC_SVCCTL_OBJ = rpc_server/srv_svcctl.o rpc_server/srv_svcctl_nt.o \
- librpc/gen_ndr/srv_svcctl.o \
services/svc_spoolss.o services/svc_rcinit.o services/services_db.o \
services/svc_netlogon.o services/svc_winreg.o \
services/svc_wins.o
RPC_NTSVCS_OBJ = rpc_server/srv_ntsvcs.o rpc_server/srv_ntsvcs_nt.o
-RPC_DFS_OBJ = librpc/gen_ndr/srv_dfs.o rpc_server/srv_dfs_nt.o
+RPC_DFS_OBJ = rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o
RPC_SPOOLSS_OBJ = rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o
-RPC_EVENTLOG_OBJ = rpc_server/srv_eventlog.o rpc_server/srv_eventlog_nt.o \
- rpc_server/srv_eventlog_lib.o librpc/gen_ndr/srv_eventlog.o
+RPC_EVENTLOG_OBJ = rpc_server/srv_eventlog.o rpc_server/srv_eventlog_nt.o rpc_server/srv_eventlog_lib.o
RPC_PIPE_OBJ = rpc_server/srv_pipe_hnd.o \
rpc_server/srv_pipe.o rpc_server/srv_lsa_hnd.o
-RPC_ECHO_OBJ = rpc_server/srv_echo_nt.o librpc/gen_ndr/srv_echo.o
+RPC_ECHO_OBJ = rpc_server/srv_echo.o rpc_server/srv_echo_nt.o
RPC_SERVER_OBJ = @RPC_STATIC@ $(RPC_PIPE_OBJ)
@@ -418,7 +369,10 @@ RPC_PARSE_OBJ = rpc_parse/parse_lsa.o $(RPC_PARSE_OBJ2) \
rpc_parse/parse_samr.o \
rpc_parse/parse_ds.o rpc_parse/parse_spoolss.o \
rpc_parse/parse_eventlog.o rpc_parse/parse_buffer.o \
- rpc_parse/parse_ntsvcs.o rpc_parse/parse_svcctl.o $(REGOBJS_OBJ)
+ rpc_parse/parse_ntsvcs.o rpc_parse/parse_svcctl.o $(REGOBJS_OBJ) \
+ rpc_parse/parse_dfs.o \
+ rpc_parse/parse_reg.o rpc_parse/parse_echo.o \
+ rpc_parse/parse_shutdown.o
RPC_CLIENT_OBJ = rpc_client/cli_pipe.o
@@ -430,15 +384,14 @@ PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \
passdb/util_wellknown.o passdb/util_builtin.o passdb/pdb_compat.o \
passdb/util_unixsids.o passdb/lookup_sid.o \
passdb/login_cache.o @PDB_STATIC@ \
- lib/account_pol.o lib/privileges.o lib/privileges_basic.o \
- lib/util_nscd.o
+ lib/account_pol.o lib/privileges.o lib/util_nscd.o
DEVEL_HELP_WEIRD_OBJ = modules/weird.o
CP850_OBJ = modules/CP850.o
CP437_OBJ = modules/CP437.o
CHARSET_MACOSXFS_OBJ = modules/charset_macosxfs.o
-GROUPDB_OBJ = groupdb/mapping.o groupdb/mapping_tdb.o groupdb/mapping_ldb.o
+GROUPDB_OBJ = groupdb/mapping.o groupdb/mapping_tdb.o
PROFILE_OBJ = profile/profile.o
PROFILES_OBJ = utils/profiles.o \
@@ -468,7 +421,6 @@ VFS_POSIXACL_OBJ = modules/vfs_posixacl.o
VFS_AIXACL_OBJ = modules/vfs_aixacl.o modules/vfs_aixacl_util.o
VFS_AIXACL2_OBJ = modules/vfs_aixacl2.o modules/vfs_aixacl_util.o modules/nfs4_acls.o
VFS_SOLARISACL_OBJ = modules/vfs_solarisacl.o
-VFS_ZFSACL_OBJ = modules/vfs_zfsacl.o modules/nfs4_acls.o
VFS_HPUXACL_OBJ = modules/vfs_hpuxacl.o
VFS_IRIXACL_OBJ = modules/vfs_irixacl.o
VFS_TRU64ACL_OBJ = modules/vfs_tru64acl.o
@@ -494,9 +446,8 @@ AUTH_UNIX_OBJ = auth/auth_unix.o
AUTH_WINBIND_OBJ = auth/auth_winbind.o
AUTH_SCRIPT_OBJ = auth/auth_script.o
-AUTH_OBJ = auth/auth.o @AUTH_STATIC@ auth/auth_util.o auth/token_util.o \
- lib/util_nttoken.o \
- auth/auth_compat.o auth/auth_ntlmssp.o \
+AUTH_OBJ = auth/auth.o @AUTH_STATIC@ auth/auth_util.o auth/auth_compat.o \
+ auth/auth_ntlmssp.o \
$(PLAINTEXT_AUTH_OBJ) $(SLCACHE_OBJ) $(DCUTIL_OBJ)
MANGLE_OBJ = smbd/mangle.o smbd/mangle_hash.o smbd/mangle_map.o smbd/mangle_hash2.o
@@ -514,7 +465,7 @@ SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \
smbd/reply.o smbd/sesssetup.o smbd/trans2.o smbd/uid.o \
smbd/dosmode.o smbd/filename.o smbd/open.o smbd/close.o \
smbd/blocking.o smbd/sec_ctx.o smbd/srvstr.o \
- smbd/vfs.o smbd/statcache.o smbd/seal.o \
+ smbd/vfs.o smbd/statcache.o \
smbd/posix_acls.o lib/sysacls.o $(SERVER_MUTEX_OBJ) \
smbd/process.o smbd/service.o smbd/error.o \
printing/printfsp.o lib/sysquotas.o lib/sysquotas_linux.o \
@@ -522,10 +473,9 @@ SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \
smbd/change_trust_pw.o smbd/fake_file.o \
smbd/quotas.o smbd/ntquotas.o $(AFS_OBJ) smbd/msdfs.o \
$(AFS_SETTOKEN_OBJ) smbd/aio.o smbd/statvfs.o \
- smbd/dmapi.o lib/launchd.o smbd/sockinit.o \
- $(MANGLE_OBJ) @VFS_STATIC@
+ smbd/dmapi.o $(MANGLE_OBJ) @VFS_STATIC@
-SMBD_OBJ_BASE = $(PARAM_WITHOUT_REG_OBJ) $(SMBD_OBJ_SRV) $(LIBSMB_OBJ) \
+SMBD_OBJ_BASE = $(PARAM_OBJ) $(SMBD_OBJ_SRV) $(LIBSMB_OBJ) \
$(RPC_SERVER_OBJ) $(RPC_PARSE_OBJ) $(SECRETS_OBJ) \
$(LOCKING_OBJ) $(PASSDB_OBJ) $(PRINTING_OBJ) $(PROFILE_OBJ) \
$(LIB_OBJ) $(PRINTBACKEND_OBJ) $(OPLOCK_OBJ) \
@@ -533,7 +483,7 @@ SMBD_OBJ_BASE = $(PARAM_WITHOUT_REG_OBJ) $(SMBD_OBJ_SRV) $(LIBSMB_OBJ) \
$(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) \
$(LIBADS_OBJ) $(KRBCLIENT_OBJ) $(LIBADS_SERVER_OBJ) \
$(REGISTRY_OBJ) $(POPT_LIB_OBJ) \
- $(BUILDOPT_OBJ) $(SMBLDAP_OBJ) $(LDB_OBJ)
+ $(BUILDOPT_OBJ) $(SMBLDAP_OBJ)
PRINTING_OBJ = printing/pcap.o printing/print_svid.o printing/print_aix.o \
printing/print_cups.o printing/print_generic.o \
@@ -567,7 +517,7 @@ SWAT_OBJ = $(SWAT_OBJ1) $(PARAM_OBJ) $(PRINTING_OBJ) $(LIBSMB_OBJ) \
$(LOCKING_OBJ) $(PASSDB_OBJ) $(SECRETS_OBJ) $(KRBCLIENT_OBJ) \
$(LIB_NONSMBD_OBJ) $(GROUPDB_OBJ) $(PLAINTEXT_AUTH_OBJ) \
$(POPT_LIB_OBJ) $(SMBLDAP_OBJ) $(RPC_PARSE_OBJ) $(LIBMSRPC_GEN_OBJ) $(LIBMSRPC_OBJ) \
- $(PASSCHANGE_OBJ) $(LDB_OBJ)
+ $(PASSCHANGE_OBJ)
STATUS_OBJ = utils/status.o utils/status_profile.o \
$(LOCKING_OBJ) $(PARAM_OBJ) \
@@ -585,7 +535,6 @@ SMBTREE_OBJ = utils/smbtree.o $(PARAM_OBJ) \
$(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) \
rpc_client/cli_pipe.o $(RPC_PARSE_OBJ2) \
$(RPC_CLIENT_OBJ1) \
- $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(LDB_OBJ) $(GROUPDB_OBJ) \
$(LIBMSRPC_GEN_OBJ)
TESTPARM_OBJ = utils/testparm.o \
@@ -597,12 +546,12 @@ PASSWD_UTIL_OBJ = utils/passwd_util.o
SMBPASSWD_OBJ = utils/smbpasswd.o $(PASSWD_UTIL_OBJ) $(PASSCHANGE_OBJ) \
$(PARAM_OBJ) $(SECRETS_OBJ) $(LIBSMB_OBJ) $(PASSDB_OBJ) \
$(GROUPDB_OBJ) $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \
- $(POPT_LIB_OBJ) $(SMBLDAP_OBJ) $(RPC_PARSE_OBJ) $(LIBMSRPC_GEN_OBJ) $(LIBMSRPC_OBJ) $(LDB_OBJ)
+ $(POPT_LIB_OBJ) $(SMBLDAP_OBJ) $(RPC_PARSE_OBJ) $(LIBMSRPC_GEN_OBJ) $(LIBMSRPC_OBJ)
PDBEDIT_OBJ = utils/pdbedit.o $(PASSWD_UTIL_OBJ) $(PARAM_OBJ) $(PASSDB_OBJ) \
$(LIBSAMBA_OBJ) $(LIB_NONSMBD_OBJ) $(GROUPDB_OBJ) \
$(SECRETS_OBJ) $(POPT_LIB_OBJ) $(SMBLDAP_OBJ) libsmb/asn1.o \
- $(RPC_PARSE_OBJ1) $(DOSERR_OBJ) $(LDB_OBJ) $(ERRORMAP_OBJ)
+ $(RPC_PARSE_OBJ1) $(DOSERR_OBJ) libsmb/errormap.o
SMBGET_OBJ = utils/smbget.o $(POPT_LIB_OBJ) $(LIBSMBCLIENT_OBJ)
@@ -614,7 +563,6 @@ RPCCLIENT_OBJ1 = rpcclient/rpcclient.o rpcclient/cmd_lsarpc.o \
rpcclient/cmd_dfs.o \
rpcclient/cmd_ds.o rpcclient/cmd_echo.o \
rpcclient/cmd_shutdown.o rpcclient/cmd_test.o \
- rpcclient/cmd_unixinfo.o \
$(DISPLAY_SEC_OBJ)
RPCCLIENT_OBJ = $(RPCCLIENT_OBJ1) \
@@ -622,7 +570,7 @@ RPCCLIENT_OBJ = $(RPCCLIENT_OBJ1) \
$(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(LIBMSRPC_GEN_OBJ) $(LIBMSRPC_OBJ) \
$(READLINE_OBJ) $(GROUPDB_OBJ) $(KRBCLIENT_OBJ) \
$(LIBADS_OBJ) $(SECRETS_OBJ) $(POPT_LIB_OBJ) \
- $(SMBLDAP_OBJ) $(DCUTIL_OBJ) $(LDB_OBJ)
+ $(SMBLDAP_OBJ) $(DCUTIL_OBJ)
PAM_WINBIND_OBJ = nsswitch/pam_winbind.o $(WBCOMMON_OBJ) \
$(LIBREPLACE_OBJ) $(SOCKET_WRAPPER_OBJ) @BUILD_INIPARSER@
@@ -632,7 +580,7 @@ LIBSMBCLIENT_OBJ = libsmb/libsmbclient.o libsmb/libsmb_compat.o \
$(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
$(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
$(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(RPC_PARSE_OBJ) \
- $(SECRETS_OBJ) $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ)
+ $(SECRETS_OBJ) $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ)
CAC_OBJ = $(LIBSMBCLIENT_OBJ) \
libmsrpc/libmsrpc.o libmsrpc/libmsrpc_internal.o \
@@ -649,7 +597,7 @@ LIBBIGBALLOFMUD_MAJOR = 0
LIBBIGBALLOFMUD_OBJ = $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) \
$(LIBSMB_OBJ) $(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(RPC_PARSE_OBJ) $(PASSDB_OBJ) \
- $(GROUPDB_OBJ) $(KRBCLIENT_OBJ) $(SMBLDAP_OBJ) $(LDB_OBJ)
+ $(GROUPDB_OBJ) $(KRBCLIENT_OBJ) $(SMBLDAP_OBJ)
CLIENT_OBJ1 = client/client.o client/clitar.o rpc_client/cli_pipe.o \
$(RPC_CLIENT_OBJ1) \
@@ -658,7 +606,6 @@ CLIENT_OBJ1 = client/client.o client/clitar.o rpc_client/cli_pipe.o \
CLIENT_OBJ = $(CLIENT_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) \
$(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(LIBMSRPC_GEN_OBJ) \
$(READLINE_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) \
- $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ) \
$(DISPLAY_SEC_OBJ)
TOOL_OBJ = client/smbctool.o client/clitar.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
@@ -666,28 +613,6 @@ TOOL_OBJ = client/smbctool.o client/clitar.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
$(READLINE_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) \
$(DISPLAY_SEC_OBJ)
-UTIL_REG_OBJ = lib/util_reg.o
-UTIL_REG_API_OBJ = lib/util_reg_api.o
-UTIL_REG_SMBCONF_OBJ = lib/util_reg_smbconf.o
-
-# objects to be used when not all of the registry code should be
-# loaded but only the portion needed by reg_api, typically for
-# using smbconf (registry) - full access
-REG_API_OBJ = registry/reg_api.o \
- registry/reg_frontend_hilvl.o \
- registry/reg_smbconf.o \
- registry/reg_db.o \
- registry/reg_util.o \
- \
- registry/reg_cachehook.o \
- registry/reg_eventlog.o \
- registry/reg_perfcount.o \
- registry/reg_dynamic.o \
- \
- lib/util_nttoken.o \
- $(UTIL_REG_API_OBJ) \
- $(UTIL_REG_SMBCONF_OBJ)
-
NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_domain.o utils/net_help.o \
utils/net_rap.o utils/net_rpc.o utils/net_rpc_samsync.o \
utils/net_rpc_join.o utils/net_time.o utils/net_lookup.o \
@@ -696,18 +621,16 @@ NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_domain.o utils/net_help.o \
utils/net_rpc_service.o utils/net_rpc_registry.o utils/net_usershare.o \
utils/netlookup.o utils/net_sam.o utils/net_rpc_shell.o \
utils/net_util.o utils/net_rpc_sh_acct.o utils/net_rpc_audit.o \
- $(PASSWD_UTIL_OBJ) utils/net_dns.o utils/net_ads_gpo.o \
- utils/net_conf.o
+ $(PASSWD_UTIL_OBJ) utils/net_dns.o utils/net_ads_gpo.o
-NET_OBJ = $(NET_OBJ1) $(PARAM_WITHOUT_REG_OBJ) $(SECRETS_OBJ) $(LIBSMB_OBJ) \
+NET_OBJ = $(NET_OBJ1) $(PARAM_OBJ) $(SECRETS_OBJ) $(LIBSMB_OBJ) \
$(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
$(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(LIBADDNS_OBJ0) \
$(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) \
$(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) $(POPT_LIB_OBJ) \
$(SMBLDAP_OBJ) $(DCUTIL_OBJ) $(SERVER_MUTEX_OBJ) \
$(AFS_OBJ) $(AFS_SETTOKEN_OBJ) $(REGFIO_OBJ) $(READLINE_OBJ) \
- $(LDB_OBJ) $(LIBGPO_OBJ) @BUILD_INIPARSER@ $(DISPLAY_SEC_OBJ) \
- $(REG_API_OBJ)
+ $(LIBGPO_OBJ) $(INIPARSER_OBJ) $(DISPLAY_SEC_OBJ)
CUPS_OBJ = client/smbspool.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
$(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(SECRETS_OBJ)
@@ -746,7 +669,7 @@ NSSTEST_OBJ = torture/nsstest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
PDBTEST_OBJ = torture/pdbtest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
$(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
- $(SMBLDAP_OBJ) $(POPT_LIB_OBJ) $(LDB_OBJ)
+ $(SMBLDAP_OBJ) $(POPT_LIB_OBJ)
VFSTEST_OBJ = torture/cmd_vfs.o torture/vfstest.o $(SMBD_OBJ_BASE) $(READLINE_OBJ)
@@ -761,13 +684,13 @@ LOCKTEST2_OBJ = torture/locktest2.o $(PARAM_OBJ) $(LOCKING_OBJ) $(LIBSMB_OBJ) \
SMBCACLS_OBJ = utils/smbcacls.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
$(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(RPC_PARSE_OBJ) \
$(PASSDB_OBJ) $(GROUPDB_OBJ) $(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(SECRETS_OBJ) \
- $(POPT_LIB_OBJ) $(DCUTIL_OBJ) $(LIBADS_OBJ) $(SMBLDAP_OBJ) $(LDB_OBJ)
+ $(POPT_LIB_OBJ) $(DCUTIL_OBJ) $(LIBADS_OBJ) $(SMBLDAP_OBJ)
SMBCQUOTAS_OBJ = utils/smbcquotas.o $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
$(PARAM_OBJ) \
$(LIB_NONSMBD_OBJ) $(RPC_PARSE_OBJ) \
$(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(SECRETS_OBJ) $(POPT_LIB_OBJ) \
- $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ)
+ $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ)
EVTLOGADM_OBJ0 = utils/eventlogadm.o
@@ -790,16 +713,11 @@ REPLACETORT_OBJ = lib/replace/test/testsuite.o \
lib/replace/test/strptime.o \
$(LIBREPLACE_OBJ)
-NDRDUMP_OBJ = librpc/tools/ndrdump.o \
- $(PARAM_OBJ) $(LIBNDR_GEN_OBJ) \
- $(LIBSAMBA_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \
- $(RPC_PARSE_OBJ1) $(DOSERR_OBJ) $(SECRETS_OBJ)
-
RPCTORTURE_OBJ = torture/rpctorture.o \
rpcclient/display.o \
rpcclient/cmd_lsarpc.o \
- rpcclient/cmd_wkssvc.o \
rpcclient/cmd_samr.o \
+ rpcclient/cmd_wkssvc.o \
rpcclient/cmd_srvsvc.o \
rpcclient/cmd_netlogon.o \
$(PARAM_OBJ) $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \
@@ -811,7 +729,6 @@ SMBFILTER_OBJ = utils/smbfilter.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(SECRETS_OBJ) \
$(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ)
PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
- $(RPCCLIENT_NDR_OBJ) \
$(SMBD_OBJ_SRV) $(NMBD_OBJ1) $(LIBSMB_OBJ) \
$(SMBTORTURE_OBJ1) $(RPCCLIENT_OBJ1) \
$(LIBMSRPC_OBJ) \
@@ -826,9 +743,8 @@ PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
$(RPC_SVC_OBJ) $(RPC_WKS_OBJ) $(RPC_DFS_OBJ) $(RPC_SPOOLSS_OBJ) \
$(RPC_ECHO_OBJ) $(RPC_SVCCTL_OBJ) $(RPC_EVENTLOG_OBJ) $(SMBLDAP_OBJ) \
$(IDMAP_OBJ) libsmb/spnego.o $(PASSCHANGE_OBJ) $(RPC_UNIXINFO_OBJ) \
- $(RPC_NTSVCS_OBJ) $(RPC_INITSHUTDOWN_OBJ) \
- utils/passwd_util.o $(LIBGPO_OBJ) $(NSS_INFO_OBJ) \
- $(RPC_EPMAPPER_OBJ)
+ $(RPC_NTSVCS_OBJ) $(RPC_INITSHUTDOWN_OBJ) utils/passwd_util.o \
+ $(LIBGPO_OBJ) $(NSS_INFO_OBJ)
WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \
$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) $(SECRETS_OBJ)
@@ -837,17 +753,16 @@ PAM_SMBPASS_OBJ_0 = pam_smbpass/pam_smb_auth.o pam_smbpass/pam_smb_passwd.o \
pam_smbpass/pam_smb_acct.o pam_smbpass/support.o
PAM_SMBPASS_OBJ = $(PAM_SMBPASS_OBJ_0) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
$(SECRETS_OBJ) $(SMBLDAP_OBJ) $(LIBSAMBA_OBJ) \
- $(RPC_PARSE_OBJ1) $(DOSERR_OBJ) $(LDB_OBJ) $(ERRORMAP_OBJ)
+ $(RPC_PARSE_OBJ1) $(DOSERR_OBJ) $(ERRORMAP_OBJ)
IDMAP_OBJ = nsswitch/idmap.o nsswitch/idmap_cache.o nsswitch/idmap_util.o @IDMAP_STATIC@
NSS_INFO_OBJ = nsswitch/nss_info.o @NSS_INFO_STATIC@
-IDMAP_NSS_OBJ = sam/idmap_nss.o @IDMAP_NSS_STATIC@
+IDMAP_NSS_OBJ = sam/idmap_nss.o
WINBINDD_OBJ1 = \
nsswitch/winbindd.o \
- nsswitch/winbindd_sockinit.o \
nsswitch/winbindd_user.o \
nsswitch/winbindd_group.o \
nsswitch/winbindd_util.o \
@@ -865,8 +780,7 @@ WINBINDD_OBJ1 = \
nsswitch/winbindd_async.o \
nsswitch/winbindd_creds.o \
nsswitch/winbindd_cred_cache.o \
- nsswitch/winbindd_ccache_access.o \
- auth/token_util.o
+ nsswitch/winbindd_ccache_access.o
WINBINDD_OBJ = \
$(WINBINDD_OBJ1) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
@@ -875,49 +789,14 @@ WINBINDD_OBJ = \
$(PROFILE_OBJ) $(SLCACHE_OBJ) $(SMBLDAP_OBJ) \
$(SECRETS_OBJ) $(LIBADS_OBJ) $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) \
$(DCUTIL_OBJ) $(IDMAP_OBJ) $(NSS_INFO_OBJ) \
- $(AFS_OBJ) $(AFS_SETTOKEN_OBJ) lib/launchd.o \
- $(LIBADS_SERVER_OBJ) $(SERVER_MUTEX_OBJ) $(LDB_OBJ)
+ $(AFS_OBJ) $(AFS_SETTOKEN_OBJ) \
+ $(LIBADS_SERVER_OBJ) $(SERVER_MUTEX_OBJ)
WBINFO_OBJ = nsswitch/wbinfo.o $(LIBSAMBA_OBJ) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
$(SECRETS_OBJ) $(POPT_LIB_OBJ) $(AFS_SETTOKEN_OBJ) $(RPC_PARSE_OBJ1) $(DOSERR_OBJ)
WINBIND_NSS_OBJ = $(WBCOMMON_OBJ) $(LIBREPLACE_OBJ) $(SOCKET_WRAPPER_OBJ) @WINBIND_NSS_EXTRA_OBJS@
-LDB_COMMON_OBJ=lib/ldb/common/ldb.o lib/ldb/common/ldb_ldif.o \
- lib/ldb/common/ldb_parse.o lib/ldb/common/ldb_msg.o lib/ldb/common/ldb_utf8.o \
- lib/ldb/common/ldb_debug.o lib/ldb/common/ldb_modules.o \
- lib/ldb/common/ldb_dn.o lib/ldb/common/ldb_match.o lib/ldb/common/ldb_attributes.o \
- lib/ldb/common/attrib_handlers.o lib/ldb/common/ldb_controls.o lib/ldb/common/qsort.o
-
-LDB_TDB_OBJ=lib/ldb/ldb_tdb/ldb_tdb.o \
- lib/ldb/ldb_tdb/ldb_pack.o lib/ldb/ldb_tdb/ldb_search.o lib/ldb/ldb_tdb/ldb_index.o \
- lib/ldb/ldb_tdb/ldb_cache.o lib/ldb/ldb_tdb/ldb_tdb_wrap.o
-
-LDB_MODULES_OBJ=lib/ldb/modules/operational.o lib/ldb/modules/rdn_name.o \
- lib/ldb/modules/objectclass.o \
- lib/ldb/modules/paged_results.o lib/ldb/modules/sort.o lib/ldb/modules/asq.o
-
-# enabled in configure.in
-LDB_LDAP_OBJ=@LDBLDAP@
-
-LDB_OBJ = ${LDB_COMMON_OBJ} ${LDB_TDB_OBJ} ${LDB_LDAP_OBJ} ${LDB_MODULES_OBJ}
-
-LDB_CMDLINE_OBJ = $(PARAM_OBJ) $(SECRETS_OBJ) $(LIBSMB_OBJ) \
- $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
- $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(LIBADDNS_OBJ0) \
- $(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) \
- $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) $(POPT_LIB_OBJ) \
- $(SMBLDAP_OBJ) $(DCUTIL_OBJ) $(SERVER_MUTEX_OBJ) \
- $(AFS_OBJ) $(AFS_SETTOKEN_OBJ) $(REGFIO_OBJ) $(READLINE_OBJ) \
- $(LDB_OBJ) lib/ldb/tools/cmdline.o
-
-
-LDBEDIT_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbedit.o
-LDBSEARCH_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbsearch.o
-LDBADD_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbadd.o
-LDBDEL_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbdel.o
-LDBMODIFY_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbmodify.o
-
SMB_KRB5_LOCATOR_OBJ1 = libads/smb_krb5_locator.o
SMB_KRB5_LOCATOR_OBJ = $(SMB_KRB5_LOCATOR_OBJ1) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
$(LIBNMB_OBJ) $(RPC_PARSE_OBJ1) $(SECRETS_OBJ) $(LIBSAMBA_OBJ) $(DOSERR_OBJ)
@@ -925,22 +804,18 @@ SMB_KRB5_LOCATOR_OBJ = $(SMB_KRB5_LOCATOR_OBJ1) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ)
POPT_OBJ=popt/findme.o popt/popt.o popt/poptconfig.o \
popt/popthelp.o popt/poptparse.o
-INIPARSER_OBJ = iniparser_build/iniparser.o iniparser_build/dictionary.o \
- iniparser_build/strlib.o
+INIPARSER_OBJ = iniparser/src/iniparser.o iniparser/src/dictionary.o \
+ iniparser/src/strlib.o
-TDBBACKUP_OBJ = lib/tdb/tools/tdbbackup.o $(LIBREPLACE_OBJ) \
+TDBBACKUP_OBJ = tdb/tools/tdbbackup.o tdb/common/tdbback.o $(LIBREPLACE_OBJ) \
$(TDBBASE_OBJ) $(SOCKET_WRAPPER_OBJ)
-TDBTOOL_OBJ = lib/tdb/tools/tdbtool.o $(TDBBASE_OBJ) $(LIBREPLACE_OBJ) \
- $(SOCKET_WRAPPER_OBJ)
-
-TDBDUMP_OBJ = lib/tdb/tools/tdbdump.o $(TDBBASE_OBJ) $(LIBREPLACE_OBJ) \
+TDBTOOL_OBJ = tdb/tools/tdbtool.o $(TDBBASE_OBJ) $(LIBREPLACE_OBJ) \
$(SOCKET_WRAPPER_OBJ)
-TDBTORTURE_OBJ = lib/tdb/tools/tdbtorture.o $(TDBBASE_OBJ) $(LIBREPLACE_OBJ) \
+TDBDUMP_OBJ = tdb/tools/tdbdump.o $(TDBBASE_OBJ) $(LIBREPLACE_OBJ) \
$(SOCKET_WRAPPER_OBJ)
-
NTLM_AUTH_OBJ1 = utils/ntlm_auth.o utils/ntlm_auth_diagnostics.o
NTLM_AUTH_OBJ = ${NTLM_AUTH_OBJ1} $(LIBSAMBA_OBJ) $(POPT_LIB_OBJ) \
@@ -948,7 +823,7 @@ NTLM_AUTH_OBJ = ${NTLM_AUTH_OBJ1} $(LIBSAMBA_OBJ) $(POPT_LIB_OBJ) \
libads/kerberos_verify.o $(SECRETS_OBJ) $(SERVER_MUTEX_OBJ) \
libads/authdata.o $(RPC_PARSE_OBJ1) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
$(SMBLDAP_OBJ) $(DOSERR_OBJ) rpc_parse/parse_net.o $(LIBNMB_OBJ) \
- $(LDB_OBJ) $(ERRORMAP_OBJ)
+ $(LDB_OBJ) libsmb/errormap.o
######################################################################
# now the rules...
@@ -1008,20 +883,6 @@ modules: SHOWFLAGS $(MODULES)
cac: SHOWFLAGS $(LIBMSRPC)
-#####################################################################
-## Perl IDL Compiler
-IDL_FILES = unixinfo.idl lsa.idl dfs.idl echo.idl winreg.idl initshutdown.idl \
- srvsvc.idl svcctl.idl eventlog.idl wkssvc.idl netlogon.idl notify.idl \
- epmapper.idl messaging.idl
-
-idl:
- @IDL_FILES="$(IDL_FILES)" CPP="$(CPP)" PERL="$(PERL)" \
- srcdir="$(srcdir)" $(srcdir)/script/build_idl.sh $(PIDL_ARGS)
-
-
-#####################################################################
-
-
everything: all libsmbclient debug2html smbfilter talloctort replacetort modules torture \
$(EVERYTHING_PROGS)
@@ -1046,60 +907,25 @@ MAKEDIR = || exec false; \
mkdir "$$dir" || \
exec false; fi || exec false
-# Run a static checker.
-CHECK_CC = $(CC_CHECKER) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@
-# Compile a source file.
-COMPILE_CC = $(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@
-# Compile a source file with the installation paths defined.
-COMPILE_CC_PATH = $(CC) -I. -I$(srcdir) $(PATH_FLAGS) $(FLAGS) $(PICFLAG) -c $< -o $@
-
-COMPILE = $(COMPILE_CC)
-
-# BEGIN GNU make specific
-# Rewrite the COMPILE rule to generate dependencies as a side-effect.
-# This is is actually toolchain-independent, but making use of the dependency
-# files requires GNU make, so it's pointless to have them otherwise.
-@ifGNUmake@DEPDIR=.
-@ifGNUmake@COMPILE_DEPENDS = source=$< object=$@ libtool=no \
-@ifGNUmake@ tmpdepfile=$(DEPDIR)/$*.TPo depfile=$(DEPDIR)/$*.d \
-@ifGNUmake@ DEPDIR=$(DEPDIR) @CCDEPMODE@ \
-@ifGNUmake@ $(srcdir)/depcomp $(COMPILE_CC)
-@ifGNUmake@COMPILE = $(COMPILE_DEPENDS)
-# END GNU make specific
-
.c.o:
@if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \
dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi
@if test -n "$(CC_CHECKER)"; then \
echo "Checking $*.c with '$(CC_CHECKER)'";\
- $(CHECK_CC); \
+ $(CC_CHECKER) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@;\
fi
@echo Compiling $*.c
- @$(COMPILE) && exit 0;\
+ @$(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@ && exit 0;\
echo "The following command failed:" 1>&2;\
- echo "$(COMPILE_CC)" 1>&2;\
- $(COMPILE_CC) >/dev/null 2>&1
+ echo "$(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@" 1>&2;\
+ $(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@ >/dev/null 2>&1
@BROKEN_CC@ -mv `echo $@ | sed 's%^.*/%%g'` $@
-# BEGIN GNU make specific
-# Include all the generated dependency files. The sort is done to
-# remove duplicates.
-@ifGNUmake@DEPENDS_OBJ = $(SMBD_SRV_OBJ) $(NET_OBJ) $(WINBINDD_OBJ)
-@ifGNUmake@-include $(patsubst %.o, %.d, $(sort $(DEPENDS_OBJ)))
-# END GNU make specific
-
-PRECOMPILED_HEADER = $(builddir)/include/includes.h.gch
-
# this adds support for precompiled headers. To use it, install a snapshot
# of gcc-3.4 and run 'make pch' before you do the main build.
pch: proto_exists
- rm -f $(PRECOMPILED_HEADER)
- $(MAKE) $(PRECOMPILED_HEADER)
-
-$(PRECOMPILED_HEADER): $(srcdir)/include/includes.h
- $(COMPILE)
-
-BINARY_PREREQS = proto_exists bin/.dummy
+ rm -f $(builddir)/include/includes.h.gch
+ $(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $(srcdir)/include/includes.h -o $(builddir)/include/includes.h.gch
# These dependencies are only approximately correct: we want to make
# sure Samba's paths are updated if ./configure is re-run. Really it
@@ -1109,31 +935,22 @@ BINARY_PREREQS = proto_exists bin/.dummy
dynconfig.o: dynconfig.c Makefile
@echo Compiling $*.c
- @$(COMPILE_CC_PATH) && exit 0;\
+ @$(CC) $(FLAGS) $(PATH_FLAGS) $(PICFLAG) -c $(srcdir)/dynconfig.c -o $@ && exit 0;\
echo "The following command failed:" 1>&2;\
- echo "$(COMPILE_CC_PATH)" 1>&2;\
- $(COMPILE_CC_PATH) >/dev/null 2>&1
+ echo "$(CC) $(FLAGS) $(PATH_FLAGS) $(PICFLAG) -c $(srcdir)/dynconfig.c -o $@" 1>&2;\
+ $(CC) $(FLAGS) $(PATH_FLAGS) $(PICFLAG) -c $(srcdir)/dynconfig.c -o $@ >/dev/null 2>&1
lib/pidfile.o: lib/pidfile.c
@echo Compiling $*.c
- @$(COMPILE_CC_PATH) && exit 0;\
- echo "The following command failed:" 1>&2;\
- echo "$(COMPILE_CC_PATH)" 1>&2;\
- $(COMPILE_CC_PATH) >/dev/null 2>&1
+ @$(CC) -I. -I$(srcdir) $(FLAGS) $(PATH_FLAGS) $(PICFLAG) -c $(srcdir)/lib/pidfile.c -o $@
lib/version.o: lib/version.c include/version.h
@echo Compiling $*.c
- @$(COMPILE_CC_PATH) && exit 0;\
- echo "The following command failed:" 1>&2;\
- echo "$(COMPILE_CC_PATH)" 1>&2;\
- $(COMPILE_CC_PATH) >/dev/null 2>&1
+ @$(CC) -I. -I$(srcdir) $(FLAGS) $(PATH_FLAGS) $(PICFLAG) -c $(srcdir)/lib/version.c -o $@
smbd/build_options.o: smbd/build_options.c Makefile include/config.h include/build_env.h include/proto.h
@echo Compiling $*.c
- @$(COMPILE_CC_PATH) && exit 0;\
- echo "The following command failed:" 1>&2;\
- echo "$(COMPILE_CC_PATH)" 1>&2;\
- $(COMPILE_CC_PATH) >/dev/null 2>&1
+ @$(CC) $(FLAGS) $(PATH_FLAGS) $(PICFLAG) -c smbd/build_options.c -o $@
smbd/build_options.c: include/config.h.in script/mkbuildoptions.awk
@echo Generating $@
@@ -1144,253 +961,228 @@ bin/.dummy:
dir=bin $(MAKEDIR); fi
@: >> $@ || : > $@ # what a fancy emoticon!
-bin/smbd@EXEEXT@: $(BINARY_PREREQS) $(SMBD_OBJ) @BUILD_POPT@
+bin/smbd@EXEEXT@: proto_exists $(SMBD_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(LDAP_LIBS) \
$(KRB5LIBS) $(DYNEXP) $(PRINT_LIBS) $(AUTH_LIBS) \
$(ACL_LIBS) $(PASSDB_LIBS) $(LIBS) @POPTLIBS@ @SMBD_LIBS@
-bin/nmbd@EXEEXT@: $(BINARY_PREREQS) $(NMBD_OBJ) @BUILD_POPT@
+bin/nmbd@EXEEXT@: proto_exists $(NMBD_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS)
-bin/swat@EXEEXT@: $(BINARY_PREREQS) $(SWAT_OBJ) @BUILD_POPT@
+bin/swat@EXEEXT@: proto_exists $(SWAT_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINT_LIBS) \
$(AUTH_LIBS) $(LIBS) $(PASSDB_LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS)
-bin/rpcclient@EXEEXT@: $(BINARY_PREREQS) $(RPCCLIENT_OBJ) @BUILD_POPT@
+bin/rpcclient@EXEEXT@: proto_exists $(RPCCLIENT_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(PASSDB_LIBS) $(RPCCLIENT_OBJ) \
$(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ \
$(KRB5LIBS) $(LDAP_LIBS)
-bin/smbclient@EXEEXT@: $(BINARY_PREREQS) $(CLIENT_OBJ) @BUILD_POPT@
+bin/smbclient@EXEEXT@: proto_exists $(CLIENT_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS)
+ @$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS)
-bin/smbctool@EXEEXT@: $(BINARY_PREREQS) $(TOOL_OBJ) @BUILD_POPT@
+bin/smbctool@EXEEXT@: proto_exists $(TOOL_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(TOOL_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) -Lbin -lsmbclient
-bin/net@EXEEXT@: $(BINARY_PREREQS) $(NET_OBJ) @BUILD_POPT@
+bin/net@EXEEXT@: proto_exists $(NET_OBJ) @BUILD_POPT@ @BUILD_INIPARSER@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(NET_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(UUID_LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(TERMLDFLAGS) $(TERMLIBS) $(NSCD_LIBS) @INIPARSERLIBS@
-bin/profiles@EXEEXT@: $(BINARY_PREREQS) $(PROFILES_OBJ) @BUILD_POPT@
+bin/profiles@EXEEXT@: proto_exists $(PROFILES_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(PROFILES_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(LDAP_LIBS) @POPTLIBS@
-bin/smbspool@EXEEXT@: $(BINARY_PREREQS) $(CUPS_OBJ)
+bin/smbspool@EXEEXT@: proto_exists $(CUPS_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(CUPS_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/smbmount@EXEEXT@: $(BINARY_PREREQS) $(MOUNT_OBJ)
+bin/smbmount@EXEEXT@: proto_exists $(MOUNT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(MOUNT_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/smbmnt@EXEEXT@: $(BINARY_PREREQS) $(MNT_OBJ)
+bin/smbmnt@EXEEXT@: proto_exists $(MNT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(MNT_OBJ) $(DYNEXP) $(LDFLAGS)
-bin/smbumount@EXEEXT@: $(BINARY_PREREQS) $(UMOUNT_OBJ)
+bin/smbumount@EXEEXT@: proto_exists $(UMOUNT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(UMOUNT_OBJ) $(DYNEXP) $(LDFLAGS)
-bin/mount.cifs@EXEEXT@: $(BINARY_PREREQS) $(CIFS_MOUNT_OBJ)
+bin/mount.cifs@EXEEXT@: $(CIFS_MOUNT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(CIFS_MOUNT_OBJ) $(DYNEXP) $(LDFLAGS)
-bin/umount.cifs@EXEEXT@: $(BINARY_PREREQS) $(CIFS_UMOUNT_OBJ)
+bin/umount.cifs@EXEEXT@: $(CIFS_UMOUNT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(CIFS_UMOUNT_OBJ) $(DYNEXP) $(LDFLAGS)
-bin/testparm@EXEEXT@: $(BINARY_PREREQS) $(TESTPARM_OBJ) @BUILD_POPT@
+bin/testparm@EXEEXT@: proto_exists $(TESTPARM_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(TESTPARM_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(LDAP_LIBS) @POPTLIBS@
-bin/smbstatus@EXEEXT@: $(BINARY_PREREQS) $(STATUS_OBJ) @BUILD_POPT@
+bin/smbstatus@EXEEXT@: proto_exists $(STATUS_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(STATUS_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(LDAP_LIBS) \
@POPTLIBS@
-bin/smbcontrol@EXEEXT@: $(BINARY_PREREQS) $(SMBCONTROL_OBJ) @BUILD_POPT@
+bin/smbcontrol@EXEEXT@: proto_exists $(SMBCONTROL_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) -DUSING_SMBCONTROL $(FLAGS) -o $@ \
$(SMBCONTROL_OBJ) $(DYNEXP) $(LDFLAGS) \
$(LIBS) $(LDAP_LIBS) @LIBUNWIND_PTRACE@ @POPTLIBS@
-bin/smbtree@EXEEXT@: $(BINARY_PREREQS) $(SMBTREE_OBJ) @BUILD_POPT@
+bin/smbtree@EXEEXT@: proto_exists $(SMBTREE_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SMBTREE_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS)
+ @$(CC) $(FLAGS) -o $@ $(SMBTREE_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS)
-bin/smbpasswd@EXEEXT@: $(BINARY_PREREQS) $(SMBPASSWD_OBJ) @BUILD_POPT@
+bin/smbpasswd@EXEEXT@: proto_exists $(SMBPASSWD_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(LDFLAGS) $(PASSDB_LIBS) \
$(DYNEXP) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS)
-bin/pdbedit@EXEEXT@: $(BINARY_PREREQS) $(PDBEDIT_OBJ) @BUILD_POPT@
+bin/pdbedit@EXEEXT@: proto_exists $(PDBEDIT_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(PASSDB_LIBS) $(LDAP_LIBS)
-bin/smbget@EXEEXT@: $(BINARY_PREREQS) $(SMBGET_OBJ) @BUILD_POPT@
+bin/smbget@EXEEXT@: proto_exists $(SMBGET_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBGET_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS)
-bin/samtest@EXEEXT@: $(SAMTEST_OBJ) @BUILD_POPT@
+bin/samtest@EXEEXT@: $(SAMTEST_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SAMTEST_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(PASSDB_LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/nmblookup@EXEEXT@: $(BINARY_PREREQS) $(NMBLOOKUP_OBJ) @BUILD_POPT@
+bin/nmblookup@EXEEXT@: proto_exists $(NMBLOOKUP_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(NMBLOOKUP_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(LDAP_LIBS)
-bin/smbtorture@EXEEXT@: $(BINARY_PREREQS) $(SMBTORTURE_OBJ)
+bin/smbtorture@EXEEXT@: proto_exists $(SMBTORTURE_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBTORTURE_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/talloctort@EXEEXT@: $(BINARY_PREREQS) $(TALLOCTORT_OBJ)
+bin/talloctort@EXEEXT@: proto_exists $(TALLOCTORT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(TALLOCTORT_OBJ) $(LDFLAGS) \
$(DYNEXP) $(LIBS) $(LDAP_LIBS)
-bin/replacetort@EXEEXT@: $(REPLACETORT_OBJ)
+bin/replacetort@EXEEXT@: $(REPLACETORT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) @PIE_LDFLAGS@ -o $@ $(REPLACETORT_OBJ) $(LDFLAGS) \
$(DYNEXP) $(LIBS)
-bin/masktest@EXEEXT@: $(BINARY_PREREQS) $(MASKTEST_OBJ)
+bin/masktest@EXEEXT@: proto_exists $(MASKTEST_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(MASKTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/msgtest@EXEEXT@: $(BINARY_PREREQS) $(MSGTEST_OBJ)
+bin/msgtest@EXEEXT@: proto_exists $(MSGTEST_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(MSGTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/smbcacls@EXEEXT@: $(BINARY_PREREQS) $(SMBCACLS_OBJ) @BUILD_POPT@
+bin/smbcacls@EXEEXT@: proto_exists $(SMBCACLS_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBCACLS_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ \
$(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS)
-bin/smbcquotas@EXEEXT@: $(BINARY_PREREQS) $(SMBCQUOTAS_OBJ) @BUILD_POPT@
+bin/smbcquotas@EXEEXT@: proto_exists $(SMBCQUOTAS_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBCQUOTAS_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ \
$(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS)
-bin/eventlogadm@EXEEXT@: $(BINARY_PREREQS) $(EVTLOGADM_OBJ) @BUILD_POPT@
+bin/eventlogadm@EXEEXT@: proto_exists $(EVTLOGADM_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(EVTLOGADM_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(LDAP_LIBS) @POPTLIBS@
-bin/sharesec@EXEEXT@: $(BINARY_PREREQS) $(SHARESEC_OBJ) @BUILD_POPT@
+bin/sharesec@EXEEXT@: proto_exists $(SHARESEC_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SHARESEC_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(LDAP_LIBS) @POPTLIBS@
-bin/locktest@EXEEXT@: $(BINARY_PREREQS) $(LOCKTEST_OBJ)
+bin/locktest@EXEEXT@: proto_exists $(LOCKTEST_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LOCKTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/nsstest@EXEEXT@: $(BINARY_PREREQS) $(NSSTEST_OBJ)
+bin/nsstest@EXEEXT@: proto_exists $(NSSTEST_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(NSSTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/pdbtest@EXEEXT@: $(BINARY_PREREQS) $(PDBTEST_OBJ)
+bin/pdbtest@EXEEXT@: proto_exists $(PDBTEST_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(PDBTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(LIBS) @POPTLIBS@
-bin/vfstest@EXEEXT@: $(BINARY_PREREQS) $(VFSTEST_OBJ) @BUILD_POPT@
+bin/vfstest@EXEEXT@: proto_exists $(VFSTEST_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(VFSTEST_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(PRINT_LIBS) $(AUTH_LIBS) $(ACL_LIBS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) @SMBD_LIBS@ $(NSCD_LIBS)
-bin/smbiconv@EXEEXT@: $(BINARY_PREREQS) $(SMBICONV_OBJ) @BUILD_POPT@
+bin/smbiconv@EXEEXT@: $(SMBICONV_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBICONV_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) @POPTLIBS@
-bin/log2pcap@EXEEXT@: $(BINARY_PREREQS) $(LOG2PCAP_OBJ) @BUILD_POPT@
+bin/log2pcap@EXEEXT@: proto_exists $(LOG2PCAP_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LOG2PCAP_OBJ) $(LDFLAGS) $(DYNEXP) @POPTLIBS@ $(LIBS)
-bin/locktest2@EXEEXT@: $(BINARY_PREREQS) $(LOCKTEST2_OBJ)
+bin/locktest2@EXEEXT@: proto_exists $(LOCKTEST2_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LOCKTEST2_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/rpctorture@EXEEXT@: $(BINARY_PREREQS) $(RPCTORTURE_OBJ)
+bin/rpctorture@EXEEXT@: $(RPCTORTURE_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(RPCTORTURE_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/ndrdump@EXEEXT@: $(BINARY_PREREQS) $(NDRDUMP_OBJ)
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(NDRDUMP_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) \
- @POPTLIBS@ @LDAP_LIBS@
-
-bin/debug2html@EXEEXT@: $(BINARY_PREREQS) $(DEBUG2HTML_OBJ)
+bin/debug2html@EXEEXT@: proto_exists $(DEBUG2HTML_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(DEBUG2HTML_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS)
-bin/smbfilter@EXEEXT@: $(BINARY_PREREQS) $(SMBFILTER_OBJ)
+bin/smbfilter@EXEEXT@: proto_exists $(SMBFILTER_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBFILTER_OBJ) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS)
-bin/ldbedit: $(BINARY_PREREQS) $(LDBEDIT_OBJ) @BUILD_POPT@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(LDBEDIT_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(UUID_LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(TERMLDFLAGS) $(TERMLIBS) $(NSCD_LIBS)
-
-bin/ldbsearch: $(BINARY_PREREQS) $(LDBSEARCH_OBJ) @BUILD_POPT@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(LDBSEARCH_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(UUID_LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(TERMLDFLAGS) $(TERMLIBS) $(NSCD_LIBS)
-
-bin/ldbadd: $(BINARY_PREREQS) $(LDBADD_OBJ) @BUILD_POPT@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(LDBADD_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(UUID_LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(TERMLDFLAGS) $(TERMLIBS) $(NSCD_LIBS)
-
-bin/ldbmodify: $(BINARY_PREREQS) $(LDBMODIFY_OBJ) @BUILD_POPT@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(LDBMODIFY_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(UUID_LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(TERMLDFLAGS) $(TERMLIBS) $(NSCD_LIBS)
-
-bin/ldbdel: $(BINARY_PREREQS) $(LDBDEL_OBJ) @BUILD_POPT@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(LDBDEL_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(UUID_LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(TERMLDFLAGS) $(TERMLIBS) $(NSCD_LIBS)
-
-bin/libaddns.@SHLIBEXT@: $(BINARY_PREREQS) $(LIBADDNS_OBJ)
+bin/libaddns.@SHLIBEXT@: proto_exists $(LIBADDNS_OBJ)
@echo Linking libaddns shared library $@
- @$(SHLD_DSO) $(LIBADDNS_OBJ) $(LDFLAGS) $(LIBS) \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBADDNS_OBJ) $(LIBS) \
$(KRB5LIBS) $(UUID_LIBS)\
- @SONAMEFLAG@`basename $@`.$(SONAME_VER)
+ @SONAMEFLAG@`basename $@`.$(LIBADDNS_MAJOR)
-bin/libaddns.a: $(BINARY_PREREQS) $(LIBADDNS_OBJ)
+bin/libaddns.a: proto_exists $(LIBADDNS_OBJ)
@echo Linking libaddns non-shared library $@
@-$(AR) -rc $@ $(LIBADDNS_OBJ)
-bin/libsmbclient.@SHLIBEXT@: $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ)
+bin/libsmbclient.@SHLIBEXT@: proto_exists $(LIBSMBCLIENT_OBJ)
@echo Linking libsmbclient shared library $@
- @$(SHLD_DSO) $(LIBSMBCLIENT_OBJ) $(LDFLAGS) $(LIBS) \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBCLIENT_OBJ) $(LIBS) \
$(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \
- @SONAMEFLAG@`basename $@`.$(SONAME_VER)
+ @SONAMEFLAG@`basename $@`.$(LIBSMBCLIENT_MAJOR)
-bin/libsmbclient.a: $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ)
+bin/libsmbclient.a: proto_exists $(LIBSMBCLIENT_OBJ)
@echo Linking libsmbclient non-shared library $@
@-$(AR) -rc $@ $(LIBSMBCLIENT_OBJ)
-bin/libsmbsharemodes.@SHLIBEXT@: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ)
+bin/libsmbsharemodes.@SHLIBEXT@: proto_exists $(LIBSMBSHAREMODES_OBJ)
@echo Linking libsmbsharemodes shared library $@
- @$(SHLD_DSO) $(LIBSMBSHAREMODES_OBJ) $(LDFLAGS) $(LIBS) \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBSHAREMODES_OBJ) $(LIBS) \
$(KRB5LIBS) $(LDAP_LIBS) \
- @SONAMEFLAG@`basename $@`.$(SONAME_VER)
+ @SONAMEFLAG@`basename $@`.$(LIBSMBSHAREMODES_MAJOR)
-bin/libsmbsharemodes.a: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ)
+bin/libsmbsharemodes.a: proto_exists $(LIBSMBSHAREMODES_OBJ)
@echo Linking libsmbsharemodes non-shared library $@
@-$(AR) -rc $@ $(LIBSMBSHAREMODES_OBJ)
-bin/libmsrpc.@SHLIBEXT@: $(BINARY_PREREQS) $(CAC_OBJ)
+bin/libmsrpc.@SHLIBEXT@: proto_exists $(CAC_OBJ)
@echo Linking libmsrpc shared library $@
- @$(SHLD_DSO) $(CAC_OBJ) $(LDFLAGS) $(LIBS) \
- @SONAMEFLAG@`basename $@`.$(SONAME_VER)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(CAC_OBJ) $(LIBS) \
+ @SONAMEFLAG@`basename $@`.$(LIBMSRPC_MAJOR)
-bin/libmsrpc.a: $(BINARY_PREREQS) $(CAC_OBJ)
+bin/libmsrpc.a: proto_exists $(CAC_OBJ)
@echo Linking libmsrpc non-shared library $@
@-$(AR) -rc $@ $(CAC_OBJ)
# This is probably wrong for anything other than the GNU linker.
-bin/libbigballofmud.@SHLIBEXT@: $(BINARY_PREREQS) $(LIBBIGBALLOFMUD_OBJ)
+bin/libbigballofmud.@SHLIBEXT@: proto_exists $(LIBBIGBALLOFMUD_OBJ)
@echo Linking bigballofmud shared library $@
@$(SHLD) $(LDSHFLAGS) -o $@ $(LIBBIGBALLOFMUD_OBJ) $(LIBS) \
$(PASSDB_LIBS) $(IDMAP_LIBS) $(KRB5LIBS) $(LDAP_LIBS) \
@@ -1407,279 +1199,318 @@ libsmbsharemodes: $(LIBSMBSHAREMODES)
libmsrpc: $(LIBMSRPC)
libaddns: $(LIBADDNS)
-# Linker command to link a RPC, VFS, AUTH, CHARSET or PASSDB module.
-SHLD_MODULE = $(SHLD) $(LDSHFLAGS) $(MODULE_EXPORTS) \
- -o $@ @SONAMEFLAG@`basename $@`
-
-bin/librpc_lsarpc.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_LSA_OBJ)
- @echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_LSA_OBJ)
-
-bin/librpc_samr.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_SAMR_OBJ)
+bin/librpc_lsarpc.@SHLIBEXT@: proto_exists $(RPC_LSA_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_SAMR_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_LSA_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_unixinfo.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_UNIXINFO_OBJ)
+bin/librpc_samr.@SHLIBEXT@: proto_exists $(RPC_SAMR_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_UNIXINFO_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SAMR_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_epmapper.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_EPMAPPER_OBJ)
+bin/librpc_unixinfo.@SHLIBEXT@: proto_exists $(RPC_UNIXINFO_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_SVC_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_UNIXINFO_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_srvsvc.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_SVC_OBJ)
+bin/librpc_srvsvc.@SHLIBEXT@: proto_exists $(RPC_SVC_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_SVC_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SVC_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_svcctl.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_SVCCTL_OBJ)
+bin/librpc_svcctl.@SHLIBEXT@: proto_exists $(RPC_SVCCTL_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_SVCCTL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SVCCTL_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_ntsvcs.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_NTSVCS_OBJ)
+bin/librpc_ntsvcs.@SHLIBEXT@: proto_exists $(RPC_NTSVCS_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_NTSVCS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_NTSVCS_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_wkssvc.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_WKS_OBJ)
+bin/librpc_wkssvc.@SHLIBEXT@: proto_exists $(RPC_WKS_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_WKS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_WKS_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_NETLOGON.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_NETLOG_OBJ)
+bin/librpc_NETLOGON.@SHLIBEXT@: proto_exists $(RPC_NETLOG_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_NETLOG_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_NETLOG_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_winreg.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_REG_OBJ)
+bin/librpc_reg.@SHLIBEXT@: proto_exists $(RPC_REG_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_REG_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_REG_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_initshutdown.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_INITSHUTDOWN_OBJ)
+bin/librpc_initshutdown.@SHLIBEXT@: proto_exists $(RPC_INITSHUTDOWN_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_INITSHUTDOWN_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_INITSHUTDOWN_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_lsa_ds.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_LSA_DS_OBJ)
+bin/librpc_lsa_ds.@SHLIBEXT@: proto_exists $(RPC_LSA_DS_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_LSA_DS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_LSA_DS_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_spoolss.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_SPOOLSS_OBJ)
+bin/librpc_spoolss.@SHLIBEXT@: proto_exists $(RPC_SPOOLSS_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_SPOOLSS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SPOOLSS_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_eventlog.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_EVENTLOG_OBJ)
+bin/librpc_eventlog.@SHLIBEXT@: proto_exists $(RPC_EVENTLOG_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_EVENTLOG_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_EVENTLOG_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_netdfs.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_DFS_OBJ)
+bin/librpc_netdfs.@SHLIBEXT@: proto_exists $(RPC_DFS_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_DFS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_DFS_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/librpc_echo.@SHLIBEXT@: $(BINARY_PREREQS) $(RPC_ECHO_OBJ)
+bin/librpc_echo.@SHLIBEXT@: proto_exists $(RPC_ECHO_OBJ)
@echo "Linking $@"
- @$(SHLD_MODULE) $(RPC_ECHO_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_ECHO_OBJ) -lc \
+ @SONAMEFLAG@`basename $@`
-bin/winbindd@EXEEXT@: $(BINARY_PREREQS) $(WINBINDD_OBJ) @BUILD_POPT@
+bin/winbindd@EXEEXT@: proto_exists $(WINBINDD_OBJ) @BUILD_POPT@ bin/.dummy
@echo "Linking $@"
@$(CC) $(FLAGS) -o $@ $(WINBINDD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \
@POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) $(PASSDB_LIBS)
-@WINBIND_NSS@: $(BINARY_PREREQS) $(WINBIND_NSS_OBJ)
+@WINBIND_NSS@: $(WINBIND_NSS_OBJ)
@echo "Linking $@"
@$(SHLD) $(WINBIND_NSS_LDSHFLAGS) -o $@ $(WINBIND_NSS_OBJ) \
@WINBIND_NSS_EXTRA_LIBS@ @SONAMEFLAG@`basename $@`@NSSSONAMEVERSIONSUFFIX@
-@WINBIND_WINS_NSS@: $(BINARY_PREREQS) $(WINBIND_WINS_NSS_OBJ)
+@WINBIND_WINS_NSS@: proto_exists $(WINBIND_WINS_NSS_OBJ)
@echo "Linking $@"
@$(SHLD) $(LDSHFLAGS) -o $@ $(WINBIND_WINS_NSS_OBJ) \
$(LDAP_LIBS) $(KRB5LIBS) $(LIBS) \
@SONAMEFLAG@`basename $@`@NSSSONAMEVERSIONSUFFIX@
-@SMB_KRB5_LOCATOR@: $(BINARY_PREREQS) $(SMB_KRB5_LOCATOR_OBJ)
+@SMB_KRB5_LOCATOR@: proto_exists $(SMB_KRB5_LOCATOR_OBJ)
@echo "Linking $@"
@$(SHLD) $(LDSHFLAGS) -o $@ $(SMB_KRB5_LOCATOR_OBJ) \
$(LDAP_LIBS) $(LIBS) -lcom_err \
@SONAMEFLAG@`basename $@`
-bin/pam_winbind.@SHLIBEXT@: $(BINARY_PREREQS) $(PAM_WINBIND_OBJ)
+bin/pam_winbind.@SHLIBEXT@: $(PAM_WINBIND_OBJ) bin/.dummy
@echo "Linking shared library $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_WINBIND_OBJ) -lpam @INIPARSERLIBS@ \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_WINBIND_OBJ) -lpam @INIPARSERLIBS@ $(GPLIBS) \
@SONAMEFLAG@`basename $@`
-bin/builtin.@SHLIBEXT@: $(BINARY_PREREQS) $(AUTH_BUILTIN_OBJ)
+bin/builtin.@SHLIBEXT@: proto_exists $(AUTH_BUILTIN_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(AUTH_BUILTIN_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_BUILTIN_OBJ) @SONAMEFLAG@`basename $@`
-bin/domain.@SHLIBEXT@: $(BINARY_PREREQS) $(AUTH_DOMAIN_OBJ)
+bin/domain.@SHLIBEXT@: proto_exists $(AUTH_DOMAIN_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(AUTH_DOMAIN_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_DOMAIN_OBJ) @SONAMEFLAG@`basename $@`
-bin/script.@SHLIBEXT@: $(BINARY_PREREQS) $(AUTH_SCRIPT_OBJ)
+bin/script.@SHLIBEXT@: proto_exists $(AUTH_SCRIPT_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(AUTH_SCRIPT_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_SCRIPT_OBJ) @SONAMEFLAG@`basename $@`
-bin/smbserver.@SHLIBEXT@: $(BINARY_PREREQS) $(AUTH_SERVER_OBJ)
+bin/smbserver.@SHLIBEXT@: proto_exists $(AUTH_SERVER_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(AUTH_SERVER_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_SERVER_OBJ) @SONAMEFLAG@`basename $@`
-bin/winbind.@SHLIBEXT@: $(BINARY_PREREQS) $(AUTH_WINBIND_OBJ)
+bin/winbind.@SHLIBEXT@: proto_exists $(AUTH_WINBIND_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(AUTH_WINBIND_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_WINBIND_OBJ) @SONAMEFLAG@`basename $@`
-bin/unix.@SHLIBEXT@: $(BINARY_PREREQS) $(AUTH_UNIX_OBJ)
+bin/unix.@SHLIBEXT@: proto_exists $(AUTH_UNIX_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(AUTH_UNIX_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_UNIX_OBJ) @SONAMEFLAG@`basename $@`
-bin/sam.@SHLIBEXT@: $(BINARY_PREREQS) $(AUTH_SAM_OBJ)
+bin/sam.@SHLIBEXT@: proto_exists $(AUTH_SAM_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(AUTH_SAM_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_SAM_OBJ) @SONAMEFLAG@`basename $@`
-bin/ldapsam.@SHLIBEXT@: $(BINARY_PREREQS) passdb/pdb_ldap.o passdb/pdb_nds.o
+bin/ldapsam.@SHLIBEXT@: passdb/pdb_ldap.o
@echo "Building plugin $@"
- @$(SHLD_MODULE) passdb/pdb_ldap.o passdb/pdb_nds.o $(LDAP_LIBS)
+ @$(SHLD) $(LDSHFLAGS) $(LDAP_LIBS) -o $@ passdb/pdb_ldap.o \
+ @SONAMEFLAG@`basename $@`
-bin/tdbsam.@SHLIBEXT@: $(BINARY_PREREQS) passdb/pdb_tdb.o
+bin/tdbsam.@SHLIBEXT@: proto_exists passdb/pdb_tdb.o
@echo "Building plugin $@"
- @$(SHLD_MODULE) passdb/pdb_tdb.o
+ @$(SHLD) $(LDSHFLAGS) -o $@ passdb/pdb_tdb.o \
+ @SONAMEFLAG@`basename $@`
-bin/smbpasswd.@SHLIBEXT@: $(BINARY_PREREQS) passdb/pdb_smbpasswd.o
+bin/smbpasswd.@SHLIBEXT@: proto_exists passdb/pdb_smbpasswd.o
@echo "Building plugin $@"
- @$(SHLD_MODULE) passdb/pdb_smbpasswd.o
+ @$(SHLD) $(LDSHFLAGS) -o $@ passdb/pdb_smbpasswd.o \
+ @SONAMEFLAG@`basename $@`
-bin/rid.@SHLIBEXT@: $(BINARY_PREREQS) nsswitch/idmap_rid.o
+bin/rid.@SHLIBEXT@: proto_exists nsswitch/idmap_rid.o
@echo "Building plugin $@"
- @$(SHLD_MODULE) nsswitch/idmap_rid.o
+ @$(SHLD) $(LDSHFLAGS) -o $@ nsswitch/idmap_rid.o \
+ @SONAMEFLAG@`basename $@`
-bin/ad.@SHLIBEXT@: $(BINARY_PREREQS) nsswitch/idmap_ad.o
+bin/ad.@SHLIBEXT@: proto_exists nsswitch/idmap_ad.o
@echo "Building plugin $@"
- @$(SHLD_MODULE) nsswitch/idmap_ad.o
+ @$(SHLD) $(LDSHFLAGS) -o $@ nsswitch/idmap_ad.o \
+ @SONAMEFLAG@`basename $@`
-bin/ldap.@SHLIBEXT@: $(BINARY_PREREQS) nsswitch/idmap_ldap.o
+bin/ldap.@SHLIBEXT@: proto_exists nsswitch/idmap_ldap.o
@echo "Building plugin $@"
- @$(SHLD_MODULE) nsswitch/idmap_ldap.o
+ @$(SHLD) $(LDSHFLAGS) -o $@ nsswitch/idmap_ldap.o \
+ @SONAMEFLAG@`basename $@`
-bin/weird.@SHLIBEXT@: $(BINARY_PREREQS) $(DEVEL_HELP_WEIRD_OBJ)
+bin/weird.@SHLIBEXT@: proto_exists $(DEVEL_HELP_WEIRD_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(DEVEL_HELP_WEIRD_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(DEVEL_HELP_WEIRD_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/CP850.@SHLIBEXT@: $(BINARY_PREREQS) $(CP850_OBJ)
+bin/CP850.@SHLIBEXT@: proto_exists $(CP850_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(CP850_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(CP850_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/CP437.@SHLIBEXT@: $(BINARY_PREREQS) $(CP437_OBJ)
+bin/CP437.@SHLIBEXT@: proto_exists $(CP437_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(CP437_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(CP437_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/macosxfs.@SHLIBEXT@: $(BINARY_PREREQS) $(CHARSET_MACOSXFS_OBJ)
+bin/macosxfs.@SHLIBEXT@: $(CHARSET_MACOSXFS_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(CHARSET_MACOSXFS_OBJ) -framework CoreFoundation
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(CHARSET_MACOSXFS_OBJ) \
+ -framework CoreFoundation @SONAMEFLAG@`basename $@`
# NOTE, there is no build rule for a dynamic default VFS module because
# this one MUST MUST MUST be built statically.
-bin/audit.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_AUDIT_OBJ)
+bin/audit.@SHLIBEXT@: proto_exists $(VFS_AUDIT_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_AUDIT_OBJ)
-
-bin/extd_audit.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_EXTD_AUDIT_OBJ)
- @echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_EXTD_AUDIT_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_AUDIT_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/full_audit.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_FULL_AUDIT_OBJ)
+bin/extd_audit.@SHLIBEXT@: proto_exists $(VFS_EXTD_AUDIT_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_FULL_AUDIT_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_EXTD_AUDIT_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/recycle.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_RECYCLE_OBJ)
+bin/full_audit.@SHLIBEXT@: proto_exists $(VFS_FULL_AUDIT_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_RECYCLE_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_FULL_AUDIT_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/netatalk.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_NETATALK_OBJ)
+bin/recycle.@SHLIBEXT@: proto_exists $(VFS_RECYCLE_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_NETATALK_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_RECYCLE_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/fake_perms.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_FAKE_PERMS_OBJ)
+bin/netatalk.@SHLIBEXT@: proto_exists $(VFS_NETATALK_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_FAKE_PERMS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_NETATALK_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/default_quota.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_DEFAULT_QUOTA_OBJ)
+bin/fake_perms.@SHLIBEXT@: proto_exists $(VFS_FAKE_PERMS_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_DEFAULT_QUOTA_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_FAKE_PERMS_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/readonly.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_READONLY_OBJ)
+bin/default_quota.@SHLIBEXT@: proto_exists $(VFS_DEFAULT_QUOTA_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_READONLY_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_DEFAULT_QUOTA_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/shadow_copy.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_SHADOW_COPY_OBJ)
+bin/readonly.@SHLIBEXT@: proto_exists $(VFS_READONLY_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_SHADOW_COPY_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_READONLY_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/cap.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_CAP_OBJ)
+bin/shadow_copy.@SHLIBEXT@: proto_exists $(VFS_SHADOW_COPY_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_CAP_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_SHADOW_COPY_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/expand_msdfs.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_EXPAND_MSDFS_OBJ)
+bin/cap.@SHLIBEXT@: proto_exists $(VFS_CAP_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_EXPAND_MSDFS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_CAP_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/afsacl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_AFSACL_OBJ)
+bin/expand_msdfs.@SHLIBEXT@: proto_exists $(VFS_EXPAND_MSDFS_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_AFSACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_EXPAND_MSDFS_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/posixacl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_POSIXACL_OBJ)
+bin/afsacl.@SHLIBEXT@: $(VFS_AFSACL_OBJ:.o=.po)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_POSIXACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_AFSACL_OBJ:.o=.po) \
+ @SONAMEFLAG@`basename $@`
-bin/aixacl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_AIXACL_OBJ)
+bin/posixacl.@SHLIBEXT@: $(VFS_POSIXACL_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_AIXACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_POSIXACL_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/aixacl2.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_AIXACL2_OBJ)
+bin/aixacl.@SHLIBEXT@: $(VFS_AIXACL_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_AIXACL2_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_AIXACL_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/solarisacl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_SOLARISACL_OBJ)
+bin/aixacl2.@SHLIBEXT@: $(VFS_AIXACL2_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_SOLARISACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_AIXACL2_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/zfsacl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_ZFSACL_OBJ)
+bin/solarisacl.@SHLIBEXT@: $(VFS_SOLARISACL_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_ZFSACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_SOLARISACL_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/irixacl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_IRIXACL_OBJ)
+bin/irixacl.@SHLIBEXT@: proto_exists $(VFS_IRIXACL_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_IRIXACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_IRIXACL_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/hpuxacl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_HPUXACL_OBJ)
+bin/hpuxacl.@SHLIBEXT@: proto_exists $(VFS_HPUXACL_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_HPUXACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_HPUXACL_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/tru64acl.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_TRU64ACL_OBJ)
+bin/tru64acl.@SHLIBEXT@: $(VFS_TRU64ACL_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_TRU64ACL_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_TRU64ACL_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/catia.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_CATIA_OBJ)
+bin/catia.@SHLIBEXT@: proto_exists $(VFS_CATIA_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_CATIA_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_CATIA_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/cacheprime.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_CACHEPRIME_OBJ)
+bin/cacheprime.@SHLIBEXT@: proto_exists $(VFS_CACHEPRIME_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_CACHEPRIME_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_CACHEPRIME_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/prealloc.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_PREALLOC_OBJ)
+bin/prealloc.@SHLIBEXT@: proto_exists $(VFS_PREALLOC_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_PREALLOC_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_PREALLOC_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/commit.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_COMMIT_OBJ)
+bin/commit.@SHLIBEXT@: proto_exists $(VFS_COMMIT_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_COMMIT_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_COMMIT_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/gpfs.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_GPFS_OBJ)
+bin/gpfs.@SHLIBEXT@: $(VFS_GPFS_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_GPFS_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_GPFS_OBJ) \
+ @SONAMEFLAG@`basename $@`
-bin/notify_fam.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_NOTIFY_FAM_OBJ)
+bin/notify_fam.@SHLIBEXT@: $(VFS_NOTIFY_FAM_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_NOTIFY_FAM_OBJ) @SMB_FAM_LIBS@
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_NOTIFY_FAM_OBJ) \
+ @SONAMEFLAG@`basename $@` @SMB_FAM_LIBS@
-bin/readahead.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_READAHEAD_OBJ)
+bin/readahead.@SHLIBEXT@: $(VFS_READAHEAD_OBJ)
@echo "Building plugin $@"
- @$(SHLD_MODULE) $(VFS_READAHEAD_OBJ)
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_READAHEAD_OBJ) \
+ @SONAMEFLAG@`basename $@`
#########################################################
## IdMap NSS plugins
@@ -1687,59 +1518,55 @@ bin/readahead.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_READAHEAD_OBJ)
## None here right now
#########################################################
-bin/wbinfo@EXEEXT@: $(BINARY_PREREQS) $(WBINFO_OBJ) @BUILD_POPT@
+bin/wbinfo@EXEEXT@: proto_exists $(WBINFO_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(WBINFO_OBJ) $(DYNEXP) $(LIBS) $(LDAP_LIBS) @POPTLIBS@
-bin/ntlm_auth@EXEEXT@: $(BINARY_PREREQS) $(NTLM_AUTH_OBJ) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
- @BUILD_POPT@
+bin/ntlm_auth@EXEEXT@: proto_exists $(NTLM_AUTH_OBJ) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
+ @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(NTLM_AUTH_OBJ) \
$(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(LIBS) \
@POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS)
-bin/pam_smbpass.@SHLIBEXT@: $(BINARY_PREREQS) $(PAM_SMBPASS_OBJ)
+bin/pam_smbpass.@SHLIBEXT@: $(PAM_SMBPASS_OBJ)
@echo "Linking shared library $@"
@$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_SMBPASS_OBJ) -lpam $(DYNEXP) $(LIBS) $(LDAP_LIBS) $(KRB5LIBS) $(NSCD_LIBS)
-bin/tdbbackup@EXEEXT@: $(BINARY_PREREQS) $(TDBBACKUP_OBJ)
+bin/tdbbackup@EXEEXT@: proto_exists $(TDBBACKUP_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(LIBS) $(TDBBACKUP_OBJ)
-bin/tdbtool@EXEEXT@: $(BINARY_PREREQS) $(TDBTOOL_OBJ)
+bin/tdbtool@EXEEXT@: $(TDBTOOL_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(LIBS) $(TDBTOOL_OBJ)
-bin/tdbdump@EXEEXT@: $(BINARY_PREREQS) $(TDBDUMP_OBJ)
+bin/tdbdump@EXEEXT@: $(TDBDUMP_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(LIBS) $(TDBDUMP_OBJ)
-bin/tdbtorture@EXEEXT@: $(BINARY_PREREQS) $(TDBTORTURE_OBJ)
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(LIBS) $(TDBTORTURE_OBJ)
-
-bin/t_strcmp@EXEEXT@: $(BINARY_PREREQS) bin/libbigballofmud.@SHLIBEXT@ torture/t_strcmp.o
+bin/t_strcmp@EXEEXT@: proto_exists bin/libbigballofmud.@SHLIBEXT@ torture/t_strcmp.o
$(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_strcmp.o -L ./bin -lbigballofmud
-bin/t_strstr@EXEEXT@: $(BINARY_PREREQS) bin/libbigballofmud.@SHLIBEXT@ torture/t_strstr.o
+bin/t_strstr@EXEEXT@: proto_exists bin/libbigballofmud.@SHLIBEXT@ torture/t_strstr.o
$(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_strstr.o -L ./bin -lbigballofmud
-bin/t_strappend@EXEEXT@: $(BINARY_PREREQS) bin/libbigballofmud.@SHLIBEXT@ torture/t_strappend.o
+bin/t_strappend@EXEEXT@: proto_exists bin/libbigballofmud.@SHLIBEXT@ torture/t_strappend.o
$(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_strappend.o -L ./bin -lbigballofmud
-bin/t_stringoverflow@EXEEXT@: $(BINARY_PREREQS) bin/libbigballofmud.@SHLIBEXT@ torture/t_stringoverflow.o
+bin/t_stringoverflow@EXEEXT@: bin/libbigballofmud.@SHLIBEXT@ torture/t_stringoverflow.o
$(CC) $(FLAGS) -o $@ $(DYNEXP) torture/t_stringoverflow.o -L./bin -lbigballofmud
-bin/t_doschar@EXEEXT@: $(BINARY_PREREQS) bin/libbigballofmud.@SHLIBEXT@ torture/t_doschar.o
+bin/t_doschar@EXEEXT@: proto_exists bin/libbigballofmud.@SHLIBEXT@ torture/t_doschar.o
$(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_doschar.o -L ./bin -lbigballofmud
-bin/t_push_ucs2@EXEEXT@: $(BINARY_PREREQS) bin/libbigballofmud.@SHLIBEXT@ torture/t_push_ucs2.o
+bin/t_push_ucs2@EXEEXT@: proto_exists bin/libbigballofmud.@SHLIBEXT@ torture/t_push_ucs2.o
$(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_push_ucs2.o -L ./bin -lbigballofmud
bin/timelimit@EXEEXT@: script/tests/timelimit.o
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(DYNEXP) script/tests/timelimit.o
-install: installservers installbin @INSTALL_CIFSMOUNT@ installman installscripts installdat installmodules @SWAT_INSTALL_TARGETS@ @INSTALL_LIBSMBCLIENT@ @INSTALL_LIBMSRPC@ @INSTALL_PAM_MODULES@ @INSTALL_LIBSMBSHAREMODES@
+install: installservers installbin @INSTALL_CIFSMOUNT@ installman installscripts installdat installswat installmodules @INSTALL_LIBSMBCLIENT@ @INSTALL_LIBMSRPC@ @INSTALL_PAM_MODULES@ @INSTALL_LIBSMBSHAREMODES@
install-everything: install installmodules
@@ -1753,39 +1580,37 @@ install-everything: install installmodules
# is not used
installdirs:
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(BINDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(PRIVATEDIR) $(PIDDIR) $(LOCKDIR) $(MANDIR)
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(BINDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(PRIVATEDIR) $(PIDDIR) $(LOCKDIR) $(MANDIR)
installservers: all installdirs
- @$(SHELL) script/installbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(SBINDIR) $(SBIN_PROGS)
+ @$(SHELL) script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(SBINDIR) $(SBIN_PROGS)
installbin: all installdirs
- @$(SHELL) script/installbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(BINDIR) $(BIN_PROGS)
+ @$(SHELL) script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(BINDIR) $(BIN_PROGS)
installcifsmount: @CIFSMOUNT_PROGS@
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(ROOTSBINDIR)
- @$(SHELL) script/installbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSMOUNT_PROGS@
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) $(ROOTSBINDIR)
+ @$(SHELL) script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSMOUNT_PROGS@
# Some symlinks are required for the 'probing' of modules.
# This mechanism should go at some point..
installmodules: modules installdirs
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(VFSLIBDIR) $(VFS_MODULES)
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(PDBLIBDIR) $(PDB_MODULES)
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(RPCLIBDIR) $(RPC_MODULES)
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(IDMAPLIBDIR) $(IDMAP_MODULES)
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(NSSINFOLIBDIR) $(NSS_INFO_MODULES)
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(AUTHLIBDIR) $(AUTH_MODULES)
- @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(PDBLIBDIR) ldapsam.@SHLIBEXT@ NDS_ldapsam.@SHLIBEXT@
- @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(PDBLIBDIR) ldapsam.@SHLIBEXT@ NDS_ldapsam_compat.@SHLIBEXT@
+ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(VFSLIBDIR) $(VFS_MODULES)
+ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(PDBLIBDIR) $(PDB_MODULES)
+ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(RPCLIBDIR) $(RPC_MODULES)
+ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(IDMAPLIBDIR) $(IDMAP_MODULES)
+ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(NSSINFOLIBDIR) $(NSS_INFO_MODULES)
+ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
+ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(AUTHLIBDIR) $(AUTH_MODULES)
@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(PDBLIBDIR) ldapsam.@SHLIBEXT@ ldapsam_compat.@SHLIBEXT@
@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) rhosts.@SHLIBEXT@ hostsequiv.@SHLIBEXT@
@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) sam.@SHLIBEXT@ sam_ignoredomain.@SHLIBEXT@
@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) domain.@SHLIBEXT@ trustdomain.@SHLIBEXT@ ntdomain.@SHLIBEXT@
@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) builtin.@SHLIBEXT@ guest.@SHLIBEXT@ fixed_challenge.@SHLIBEXT@ name_to_ntstatus.@SHLIBEXT@
- @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(NSSINFOLIBDIR) ../idmap/ad.@SHLIBEXT@ rfc2307.@SHLIBEXT@ sfu.@SHLIBEXT@ sfu20.@SHLIBEXT@
+ @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(NSSINFOLIBDIR) ../idmap/ad.@SHLIBEXT@ rfc2307.@SHLIBEXT@ sfu.@SHLIBEXT@
installscripts: installdirs
- @$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS_BIN) $(DESTDIR)$(BINDIR) $(SCRIPTS)
+ @$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
installdat: installdirs
@$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR) $(LIBDIR) $(srcdir)
@@ -1797,35 +1622,34 @@ installswat: installdirs installmsg
@$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR) $(SWATDIR) $(srcdir)
installclientlib: installdirs libsmbclient
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(LIBDIR)
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) $(LIBDIR)
-$(INSTALLLIBCMD_SH) bin/libsmbclient.@SHLIBEXT@ $(DESTDIR)$(LIBDIR)
-$(INSTALLLIBCMD_A) bin/libsmbclient.a $(DESTDIR)$(LIBDIR)
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) ${prefix}/include
- -$(INSTALLCMD) -m $(INSTALLPERMS_DATA) $(srcdir)/include/libsmbclient.h $(DESTDIR)${prefix}/include
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) ${prefix}/include
+ -$(INSTALLCMD) $(srcdir)/include/libsmbclient.h $(DESTDIR)${prefix}/include
installlibmsrpc: installdirs libmsrpc
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(LIBDIR)
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) $(LIBDIR)
-$(INSTALLLIBCMD_SH) bin/libmsrpc.@SHLIBEXT@ $(DESTDIR)$(LIBDIR)
-$(INSTALLLIBCMD_A) bin/libmsrpc.a $(DESTDIR)$(LIBDIR)
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) ${prefix}/include
- -$(INSTALLCMD) -m $(INSTALLPERMS_DATA) $(srcdir)/include/libmsrpc.h $(DESTDIR)${prefix}/include
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) ${prefix}/include
+ -$(INSTALLCMD) $(srcdir)/include/libmsrpc.h $(DESTDIR)${prefix}/include
installlibsmbsharemodes: installdirs libsmbsharemodes
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(LIBDIR)
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) $(LIBDIR)
-$(INSTALLLIBCMD_SH) bin/libsmbsharemodes.@SHLIBEXT@ $(DESTDIR)$(LIBDIR)
-$(INSTALLLIBCMD_A) bin/libsmbsharemodes.a $(DESTDIR)$(LIBDIR)
- -$(INSTALLCMD) -m $(INSTALLPERMS_DATA) $(srcdir)/include/smb_share_modes.h $(DESTDIR)${prefix}/include
installlibaddns: installdirs libaddns
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(LIBDIR)
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) $(LIBDIR)
-$(INSTALLLIBCMD_SH) bin/libaddns.@SHLIBEXT@ $(DESTDIR)$(LIBDIR)
-$(INSTALLLIBCMD_A) bin/libaddns.a $(DESTDIR)$(LIBDIR)
installpammodules: $(PAM_MODULES)
- @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(PAMMODULESDIR)
+ @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS) $(DESTDIR) $(PAMMODULESDIR)
@for module in $(PAM_MODULES); do \
echo "Installing module $${module} as $(DESTDIR)/$(PAMMODULESDIR)/$${module}.@SHLIBEXT@ "; \
- $(INSTALLCMD) -m $(INSTALLPERMS_BIN) bin/$${module}.@SHLIBEXT@ \
+ $(INSTALLCMD) -m $(INSTALLPERMS) bin/$${module}.@SHLIBEXT@ \
"$(DESTDIR)/$(PAMMODULESDIR)"; \
done
@@ -1833,7 +1657,7 @@ installpammodules: $(PAM_MODULES)
PYTHON_OBJ = $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(LIBSMB_OBJ) $(RPC_PARSE_OBJ) \
$(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
- $(SECRETS_OBJ) $(KRBCLIENT_OBJ) $(SMBLDAP_OBJ) $(LDB_OBJ)
+ $(SECRETS_OBJ) $(KRBCLIENT_OBJ) $(SMBLDAP_OBJ)
python_ext: $(PYTHON_OBJ)
@if test -z "$(PYTHON)"; then \
@@ -1857,7 +1681,6 @@ python_install: $(PYTHON_OBJ)
python_clean:
@-if test -n "$(PYTHON)"; then $(PYTHON) python/setup.py clean; fi
- @-rm -rf build/
# revert to the previously installed version
revert:
@@ -1891,24 +1714,24 @@ uninstallman:
@$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(srcdir) C
uninstallservers:
- @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(SBINDIR) $(SBIN_PROGS)
+ @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(SBINDIR) $(SBIN_PROGS)
uninstallbin:
- @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(BINDIR) $(BIN_PROGS)
+ @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(BINDIR) $(BIN_PROGS)
uninstallcifsmount:
- @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSMOUNT_PROGS@
+ @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSMOUNT_PROGS@
uninstallmodules:
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(VFSLIBDIR) $(VFS_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(PDBLIBDIR) $(PDB_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(RPCLIBDIR) $(RPC_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(IDMAPLIBDIR) $(IDMAP_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(AUTHLIBDIR) $(AUTH_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(VFSLIBDIR) $(VFS_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(PDBLIBDIR) $(PDB_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(RPCLIBDIR) $(RPC_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(IDMAPLIBDIR) $(IDMAP_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR) $(prefix) $(AUTHLIBDIR) $(AUTH_MODULES)
uninstallscripts:
- @$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS_BIN) $(DESTDIR)$(BINDIR) $(SCRIPTS)
+ @$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
uninstalldat:
@$(SHELL) $(srcdir)/script/uninstalldat.sh $(DESTDIR) $(LIBDIR) $(srcdir)
@@ -1947,10 +1770,7 @@ uninstallpammodules:
TOPFILES=dynconfig.o
clean: delheaders python_clean
- -rm -f $(PRECOMPILED_HEADER)
- -rm -f core */*~ *~ \
- */*.o */*/*.o */*/*/*.o \
- */*.d */*/*.d */*/*/*.d \
+ -rm -f core */*~ *~ */*.o */*/*.o */*/*/*.o \
*/*.@SHLIBEXT@ */*/*.@SHLIBEXT@ */*/*/*.@SHLIBEXT@ \
$(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(ROOT_SBIN_PROGS) \
$(MODULES) $(TORTURE_PROGS) $(LIBSMBCLIENT) $(LIBADDNS) \
@@ -2048,7 +1868,7 @@ realclean: clean delheaders
-rm -f script/installbin.sh script/uninstallbin.sh
distclean: realclean
- -rm -f smbadduser
+ -rm -f include/stamp-h
-rm -f include/config.h Makefile
-rm -f config.status config.cache so_locations
-rm -rf .deps TAGS
diff --git a/source/TODO b/source/TODO
deleted file mode 100644
index b5f98ab2163..00000000000
--- a/source/TODO
+++ /dev/null
@@ -1,4 +0,0 @@
-- Properly map Samba4's dom_sid to Samba3's DOM_SID
-- Allow building IDL files from within the Samba3 tree
-- Autogenerate correct headers so generated files don't have to
- be edited for Samba3
diff --git a/source/VERSION b/source/VERSION
index 3b81224ea21..35d07036766 100644
--- a/source/VERSION
+++ b/source/VERSION
@@ -25,11 +25,10 @@
########################################################
SAMBA_VERSION_MAJOR=3
SAMBA_VERSION_MINOR=0
-SAMBA_VERSION_RELEASE=27
+SAMBA_VERSION_RELEASE=26
########################################################
-# If a official release has a serious bug #
-# a security release will have 'a' sufffix #
+# Bug fix releases use a letter for the patch revision #
# #
# so SAMBA's version will be #
# <MAJOR>.<MINOR>.<RELEASE><REVISION> #
@@ -37,7 +36,7 @@ SAMBA_VERSION_RELEASE=27
# e.g. SAMBA_VERSION_REVISION=a #
# -> "2.2.8a" #
########################################################
-SAMBA_VERSION_REVISION=
+SAMBA_VERSION_REVISION=b
########################################################
# For 'pre' releases the version will be #
@@ -47,7 +46,7 @@ SAMBA_VERSION_REVISION=
# e.g. SAMBA_VERSION_PRE_RELEASE=1 #
# -> "2.2.9pre1" #
########################################################
-SAMBA_VERSION_PRE_RELEASE=1
+SAMBA_VERSION_PRE_RELEASE=
########################################################
# For 'rc' releases the version will be #
diff --git a/source/m4/aclocal.m4 b/source/aclocal.m4
index fd9efb60e6b..0b9bc0b689c 100644
--- a/source/m4/aclocal.m4
+++ b/source/aclocal.m4
@@ -362,23 +362,6 @@ AC_DEFUN(jm_ICONV,
jm_cv_func_iconv=yes
jm_cv_lib_iconv="iconv")
LIBS="$jm_save_LIBS"
-
- if test "$jm_cv_lib_iconv" != yes; then
- jm_save_LIBS="$LIBS"
- LIBS="$LIBS -lbiconv"
- AC_TRY_LINK([#include <stdlib.h>
-#include <biconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- jm_cv_lib_iconv=yes
- jm_cv_func_iconv=yes
- jm_cv_include="biconv.h"
- jm_cv_biconv=yes
- jm_cv_lib_iconv="biconv")
-
- LIBS="$jm_save_LIBS"
- fi
fi
fi
fi
@@ -420,6 +403,22 @@ main(){
AC_MSG_RESULT($ICONV_CHARSET)
])
+dnl CFLAGS_ADD_DIR(CFLAGS, $INCDIR)
+dnl This function doesn't add -I/usr/include into CFLAGS
+AC_DEFUN(CFLAGS_ADD_DIR,[
+if test "$2" != "/usr/include" ; then
+ $1="$$1 -I$2"
+fi
+])
+
+dnl LIB_ADD_DIR(LDFLAGS, $LIBDIR)
+dnl This function doesn't add -L/usr/lib into LDFLAGS
+AC_DEFUN(LIB_ADD_DIR,[
+if test "$2" != "/usr/lib" ; then
+ $1="$$1 -L$2"
+fi
+])
+
dnl AC_ENABLE_SHARED - implement the --enable-shared flag
dnl Usage: AC_ENABLE_SHARED[(DEFAULT)]
dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
diff --git a/source/auth/auth.c b/source/auth/auth.c
index eb239d3d7df..0b868b265ed 100644
--- a/source/auth/auth.c
+++ b/source/auth/auth.c
@@ -79,7 +79,7 @@ static struct auth_init_function_entry *auth_find_backend_entry(const char *name
static const uint8 *get_ntlm_challenge(struct auth_context *auth_context)
{
- DATA_BLOB challenge = data_blob_null;
+ DATA_BLOB challenge = data_blob(NULL, 0);
const char *challenge_set_by = NULL;
auth_methods *auth_method;
TALLOC_CTX *mem_ctx;
@@ -136,7 +136,7 @@ static const uint8 *get_ntlm_challenge(struct auth_context *auth_context)
DEBUG(5, ("auth_context challenge created by %s\n", challenge_set_by));
DEBUG(5, ("challenge is: \n"));
- dump_data(5, auth_context->challenge.data, auth_context->challenge.length);
+ dump_data(5, (const char *)auth_context->challenge.data, auth_context->challenge.length);
SMB_ASSERT(auth_context->challenge.length == 8);
@@ -233,15 +233,15 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
auth_context->challenge_set_by));
DEBUG(10, ("challenge is: \n"));
- dump_data(5, auth_context->challenge.data, auth_context->challenge.length);
+ dump_data(5, (const char *)auth_context->challenge.data, auth_context->challenge.length);
#ifdef DEBUG_PASSWORD
DEBUG(100, ("user_info has passwords of length %d and %d\n",
(int)user_info->lm_resp.length, (int)user_info->nt_resp.length));
DEBUG(100, ("lm:\n"));
- dump_data(100, user_info->lm_resp.data, user_info->lm_resp.length);
+ dump_data(100, (const char *)user_info->lm_resp.data, user_info->lm_resp.length);
DEBUG(100, ("nt:\n"));
- dump_data(100, user_info->nt_resp.data, user_info->nt_resp.length);
+ dump_data(100, (const char *)user_info->nt_resp.data, user_info->nt_resp.length);
#endif
/* This needs to be sorted: If it doesn't match, what should we do? */
@@ -333,7 +333,10 @@ static void free_auth_context(struct auth_context **auth_context)
if (*auth_context) {
/* Free private data of context's authentication methods */
for (auth_method = (*auth_context)->auth_method_list; auth_method; auth_method = auth_method->next) {
- TALLOC_FREE(auth_method->private_data);
+ if (auth_method->free_private_data) {
+ auth_method->free_private_data (&auth_method->private_data);
+ auth_method->private_data = NULL;
+ }
}
talloc_destroy((*auth_context)->mem_ctx);
diff --git a/source/auth/auth_compat.c b/source/auth/auth_compat.c
index 65ece50a508..13035eece28 100644
--- a/source/auth/auth_compat.c
+++ b/source/auth/auth_compat.c
@@ -96,7 +96,7 @@ return True if the password is correct, False otherwise
BOOL password_ok(char *smb_name, DATA_BLOB password_blob)
{
- DATA_BLOB null_password = data_blob_null;
+ DATA_BLOB null_password = data_blob(NULL, 0);
BOOL encrypted = (global_encrypted_passwords_negotiated && (password_blob.length == 24 || password_blob.length > 46));
if (encrypted) {
diff --git a/source/auth/auth_domain.c b/source/auth/auth_domain.c
index 853108863b7..a32677d0370 100644
--- a/source/auth/auth_domain.c
+++ b/source/auth/auth_domain.c
@@ -408,8 +408,8 @@ static NTSTATUS check_trustdomain_security(const struct auth_context *auth_conte
* No need to become_root() as secrets_init() is done at startup.
*/
- if (!pdb_get_trusteddom_pw(user_info->domain, &trust_password,
- &sid, &last_change_time)) {
+ if (!secrets_fetch_trusted_domain_password(user_info->domain, &trust_password,
+ &sid, &last_change_time)) {
DEBUG(0, ("check_trustdomain_security: could not fetch trust "
"account password for domain %s\n",
user_info->domain));
diff --git a/source/auth/auth_ntlmssp.c b/source/auth/auth_ntlmssp.c
index 08e88cc21a4..51b145a7608 100644
--- a/source/auth/auth_ntlmssp.c
+++ b/source/auth/auth_ntlmssp.c
@@ -68,7 +68,7 @@ static NTSTATUS auth_ntlmssp_set_challenge(struct ntlmssp_state *ntlmssp_state,
DEBUG(5, ("auth_context challenge set by %s\n", auth_context->challenge_set_by));
DEBUG(5, ("challenge is: \n"));
- dump_data(5, auth_context->challenge.data, auth_context->challenge.length);
+ dump_data(5, (const char *)auth_context->challenge.data, auth_context->challenge.length);
return NT_STATUS_OK;
}
diff --git a/source/auth/auth_sam.c b/source/auth/auth_sam.c
index b6364a6ca49..80e02c318bd 100644
--- a/source/auth/auth_sam.c
+++ b/source/auth/auth_sam.c
@@ -255,18 +255,18 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
BOOL ret;
NTSTATUS nt_status;
NTSTATUS update_login_attempts_status;
- DATA_BLOB user_sess_key = data_blob_null;
- DATA_BLOB lm_sess_key = data_blob_null;
+ DATA_BLOB user_sess_key = data_blob(NULL, 0);
+ DATA_BLOB lm_sess_key = data_blob(NULL, 0);
BOOL updated_autolock = False, updated_badpw = False;
if (!user_info || !auth_context) {
return NT_STATUS_UNSUCCESSFUL;
}
- /* the returned struct gets kept on the server_info, by means
- of a steal further down */
+ /* Can't use the talloc version here, because the returned struct gets
+ kept on the server_info */
- if ( !(sampass = samu_new( mem_ctx )) ) {
+ if ( !(sampass = samu_new( NULL )) ) {
return NT_STATUS_NO_MEMORY;
}
diff --git a/source/auth/auth_server.c b/source/auth/auth_server.c
index f862ba0f1a0..d490b1a467b 100644
--- a/source/auth/auth_server.c
+++ b/source/auth/auth_server.c
@@ -141,72 +141,38 @@ static struct cli_state *server_cryptkey(TALLOC_CTX *mem_ctx)
return cli;
}
-struct server_security_state {
- struct cli_state *cli;
-};
-
/****************************************************************************
- Send a 'keepalive' packet down the cli pipe.
+ Clean up our allocated cli.
****************************************************************************/
-static BOOL send_server_keepalive(const struct timeval *now,
- void *private_data)
+static void free_server_private_data(void **private_data_pointer)
{
- struct server_security_state *state = talloc_get_type_abort(
- private_data, struct server_security_state);
-
- if (!state->cli || !state->cli->initialised) {
- return False;
+ struct cli_state **cli = (struct cli_state **)private_data_pointer;
+ if (*cli && (*cli)->initialised) {
+ DEBUG(10, ("Shutting down smbserver connection\n"));
+ cli_shutdown(*cli);
}
-
- if (send_keepalive(state->cli->fd)) {
- return True;
- }
-
- DEBUG( 2, ( "send_server_keepalive: password server keepalive "
- "failed.\n"));
- cli_shutdown(state->cli);
- state->cli = NULL;
- return False;
+ *private_data_pointer = NULL;
}
-static int destroy_server_security(struct server_security_state *state)
-{
- if (state->cli) {
- cli_shutdown(state->cli);
- }
- return 0;
-}
+/****************************************************************************
+ Send a 'keepalive' packet down the cli pipe.
+****************************************************************************/
-static struct server_security_state *make_server_security_state(struct cli_state *cli)
+static void send_server_keepalive(void **private_data_pointer)
{
- struct server_security_state *result;
-
- if (!(result = talloc(NULL, struct server_security_state))) {
- DEBUG(0, ("talloc failed\n"));
- cli_shutdown(cli);
- return NULL;
- }
-
- result->cli = cli;
- talloc_set_destructor(result, destroy_server_security);
-
- if (lp_keepalive() != 0) {
- struct timeval interval;
- interval.tv_sec = lp_keepalive();
- interval.tv_usec = 0;
-
- if (event_add_idle(smbd_event_context(), result, interval,
- "server_security_keepalive",
- send_server_keepalive,
- result) == NULL) {
- DEBUG(0, ("event_add_idle failed\n"));
- TALLOC_FREE(result);
- return NULL;
+ /* also send a keepalive to the password server if its still
+ connected */
+ if (private_data_pointer) {
+ struct cli_state *cli = (struct cli_state *)(*private_data_pointer);
+ if (cli && cli->initialised) {
+ if (!send_keepalive(cli->fd)) {
+ DEBUG( 2, ( "send_server_keepalive: password server keepalive failed.\n"));
+ cli_shutdown(cli);
+ *private_data_pointer = NULL;
+ }
}
}
-
- return result;
}
/****************************************************************************
@@ -229,26 +195,23 @@ static DATA_BLOB auth_get_challenge_server(const struct auth_context *auth_conte
/* However, it is still a perfectly fine connection
to pass that unencrypted password over */
- *my_private_data =
- (void *)make_server_security_state(cli);
- return data_blob_null;
+ *my_private_data = (void *)cli;
+ return data_blob(NULL, 0);
} else if (cli->secblob.length < 8) {
/* We can't do much if we don't get a full challenge */
DEBUG(2,("make_auth_info_server: Didn't receive a full challenge from server\n"));
cli_shutdown(cli);
- return data_blob_null;
+ return data_blob(NULL, 0);
}
- if (!(*my_private_data = (void *)make_server_security_state(cli))) {
- return data_blob_null;
- }
+ *my_private_data = (void *)cli;
/* The return must be allocated on the caller's mem_ctx, as our own will be
destoyed just after the call. */
return data_blob_talloc(auth_context->mem_ctx, cli->secblob.data,8);
} else {
- return data_blob_null;
+ return data_blob(NULL, 0);
}
}
@@ -259,7 +222,7 @@ static DATA_BLOB auth_get_challenge_server(const struct auth_context *auth_conte
****************************************************************************/
static NTSTATUS check_smbserver_security(const struct auth_context *auth_context,
- void *private_data,
+ void *my_private_data,
TALLOC_CTX *mem_ctx,
const auth_usersupplied_info *user_info,
auth_serversupplied_info **server_info)
@@ -271,12 +234,8 @@ static NTSTATUS check_smbserver_security(const struct auth_context *auth_context
static BOOL bad_password_server = False;
NTSTATUS nt_status = NT_STATUS_NOT_IMPLEMENTED;
BOOL locally_made_cli = False;
- struct server_security_state *state;
-
- state = talloc_get_type_abort(
- private_data, struct server_security_state);
- cli = state->cli;
+ cli = (struct cli_state *)my_private_data;
if (cli) {
} else {
@@ -450,6 +409,8 @@ static NTSTATUS auth_init_smbserver(struct auth_context *auth_context, const cha
(*auth_method)->name = "smbserver";
(*auth_method)->auth = check_smbserver_security;
(*auth_method)->get_chal = auth_get_challenge_server;
+ (*auth_method)->send_keepalive = send_server_keepalive;
+ (*auth_method)->free_private_data = free_server_private_data;
return NT_STATUS_OK;
}
diff --git a/source/auth/auth_util.c b/source/auth/auth_util.c
index 7509b5ad1ce..1c534475500 100644
--- a/source/auth/auth_util.c
+++ b/source/auth/auth_util.c
@@ -27,6 +27,12 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_AUTH
+static struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx,
+ const DOM_SID *user_sid,
+ BOOL is_guest,
+ int num_groupsids,
+ const DOM_SID *groupsids);
+
/****************************************************************************
Create a UNIX user on demand.
****************************************************************************/
@@ -235,8 +241,8 @@ BOOL make_user_info_netlogon_interactive(auth_usersupplied_info **user_info,
const uchar nt_interactive_pwd[16],
const uchar *dc_sess_key)
{
- unsigned char lm_pwd[16];
- unsigned char nt_pwd[16];
+ char lm_pwd[16];
+ char nt_pwd[16];
unsigned char local_lm_response[24];
unsigned char local_nt_response[24];
unsigned char key[16];
@@ -252,7 +258,7 @@ BOOL make_user_info_netlogon_interactive(auth_usersupplied_info **user_info,
#ifdef DEBUG_PASSWORD
DEBUG(100,("key:"));
- dump_data(100, key, sizeof(key));
+ dump_data(100, (char *)key, sizeof(key));
DEBUG(100,("lm owf password:"));
dump_data(100, lm_pwd, sizeof(lm_pwd));
@@ -262,10 +268,10 @@ BOOL make_user_info_netlogon_interactive(auth_usersupplied_info **user_info,
#endif
if (lm_interactive_pwd)
- SamOEMhash(lm_pwd, key, sizeof(lm_pwd));
+ SamOEMhash((uchar *)lm_pwd, key, sizeof(lm_pwd));
if (nt_interactive_pwd)
- SamOEMhash(nt_pwd, key, sizeof(nt_pwd));
+ SamOEMhash((uchar *)nt_pwd, key, sizeof(nt_pwd));
#ifdef DEBUG_PASSWORD
DEBUG(100,("decrypt of lm owf password:"));
@@ -276,11 +282,11 @@ BOOL make_user_info_netlogon_interactive(auth_usersupplied_info **user_info,
#endif
if (lm_interactive_pwd)
- SMBOWFencrypt(lm_pwd, chal,
+ SMBOWFencrypt((const unsigned char *)lm_pwd, chal,
local_lm_response);
if (nt_interactive_pwd)
- SMBOWFencrypt(nt_pwd, chal,
+ SMBOWFencrypt((const unsigned char *)nt_pwd, chal,
local_nt_response);
/* Password info paranoia */
@@ -362,7 +368,7 @@ BOOL make_user_info_for_reply(auth_usersupplied_info **user_info,
#ifdef DEBUG_PASSWORD
DEBUG(10,("Unencrypted password (len %d):\n",
(int)plaintext_password.length));
- dump_data(100, plaintext_password.data,
+ dump_data(100, (const char *)plaintext_password.data,
plaintext_password.length);
#endif
@@ -372,11 +378,11 @@ BOOL make_user_info_for_reply(auth_usersupplied_info **user_info,
/* We can't do an NT hash here, as the password needs to be
case insensitive */
- local_nt_blob = data_blob_null;
+ local_nt_blob = data_blob(NULL, 0);
} else {
- local_lm_blob = data_blob_null;
- local_nt_blob = data_blob_null;
+ local_lm_blob = data_blob(NULL, 0);
+ local_nt_blob = data_blob(NULL, 0);
}
ret = make_user_info_map(
@@ -430,6 +436,83 @@ BOOL make_user_info_guest(auth_usersupplied_info **user_info)
return NT_STATUS_IS_OK(nt_status) ? True : False;
}
+/****************************************************************************
+ prints a NT_USER_TOKEN to debug output.
+****************************************************************************/
+
+void debug_nt_user_token(int dbg_class, int dbg_lev, NT_USER_TOKEN *token)
+{
+ size_t i;
+
+ if (!token) {
+ DEBUGC(dbg_class, dbg_lev, ("NT user token: (NULL)\n"));
+ return;
+ }
+
+ DEBUGC(dbg_class, dbg_lev,
+ ("NT user token of user %s\n",
+ sid_string_static(&token->user_sids[0]) ));
+ DEBUGADDC(dbg_class, dbg_lev,
+ ("contains %lu SIDs\n", (unsigned long)token->num_sids));
+ for (i = 0; i < token->num_sids; i++)
+ DEBUGADDC(dbg_class, dbg_lev,
+ ("SID[%3lu]: %s\n", (unsigned long)i,
+ sid_string_static(&token->user_sids[i])));
+
+ dump_se_priv( dbg_class, dbg_lev, &token->privileges );
+}
+
+/****************************************************************************
+ prints a UNIX 'token' to debug output.
+****************************************************************************/
+
+void debug_unix_user_token(int dbg_class, int dbg_lev, uid_t uid, gid_t gid,
+ int n_groups, gid_t *groups)
+{
+ int i;
+ DEBUGC(dbg_class, dbg_lev,
+ ("UNIX token of user %ld\n", (long int)uid));
+
+ DEBUGADDC(dbg_class, dbg_lev,
+ ("Primary group is %ld and contains %i supplementary "
+ "groups\n", (long int)gid, n_groups));
+ for (i = 0; i < n_groups; i++)
+ DEBUGADDC(dbg_class, dbg_lev, ("Group[%3i]: %ld\n", i,
+ (long int)groups[i]));
+}
+
+/******************************************************************************
+ Create a token for the root user to be used internally by smbd.
+ This is similar to running under the context of the LOCAL_SYSTEM account
+ in Windows. This is a read-only token. Do not modify it or free() it.
+ Create a copy if your need to change it.
+******************************************************************************/
+
+NT_USER_TOKEN *get_root_nt_token( void )
+{
+ static NT_USER_TOKEN *token = NULL;
+ DOM_SID u_sid, g_sid;
+ struct passwd *pw;
+
+ if ( token )
+ return token;
+
+ if ( !(pw = sys_getpwnam( "root" )) ) {
+ DEBUG(0,("get_root_nt_token: getpwnam\"root\") failed!\n"));
+ return NULL;
+ }
+
+ /* get the user and primary group SIDs; although the
+ BUILTIN\Administrators SId is really the one that matters here */
+
+ uid_to_sid(&u_sid, pw->pw_uid);
+ gid_to_sid(&g_sid, pw->pw_gid);
+
+ token = create_local_nt_token(NULL, &u_sid, False,
+ 1, &global_sid_Builtin_Administrators);
+ return token;
+}
+
static int server_info_dtor(auth_serversupplied_info *server_info)
{
TALLOC_FREE(server_info->sam_account);
@@ -478,23 +561,19 @@ NTSTATUS make_server_info_sam(auth_serversupplied_info **server_info,
DOM_SID unix_group_sid;
- if ( !(result = make_server_info(NULL)) ) {
- return NT_STATUS_NO_MEMORY;
- }
-
- if ( !(pwd = getpwnam_alloc(result, pdb_get_username(sampass))) ) {
+ if ( !(pwd = getpwnam_alloc(NULL, pdb_get_username(sampass))) ) {
DEBUG(1, ("User %s in passdb, but getpwnam() fails!\n",
pdb_get_username(sampass)));
- TALLOC_FREE(result);
return NT_STATUS_NO_SUCH_USER;
}
+ if ( !(result = make_server_info(NULL)) ) {
+ TALLOC_FREE(pwd);
+ return NT_STATUS_NO_MEMORY;
+ }
+
result->sam_account = sampass;
- /* Ensure thaat the sampass will be freed with the result */
- talloc_steal(result, sampass);
- result->unix_name = pwd->pw_name;
- /* Ensure that we keep pwd->pw_name, because we will free pwd below */
- talloc_steal(result, pwd->pw_name);
+ result->unix_name = talloc_strdup(result, pwd->pw_name);
result->gid = pwd->pw_gid;
result->uid = pwd->pw_uid;
@@ -548,6 +627,53 @@ NTSTATUS make_server_info_sam(auth_serversupplied_info **server_info,
return NT_STATUS_OK;
}
+/*
+ * Add alias SIDs from memberships within the partially created token SID list
+ */
+
+static NTSTATUS add_aliases(const DOM_SID *domain_sid,
+ struct nt_user_token *token)
+{
+ uint32 *aliases;
+ size_t i, num_aliases;
+ NTSTATUS status;
+ TALLOC_CTX *tmp_ctx;
+
+ if (!(tmp_ctx = talloc_init("add_aliases"))) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
+ aliases = NULL;
+ num_aliases = 0;
+
+ status = pdb_enum_alias_memberships(tmp_ctx, domain_sid,
+ token->user_sids,
+ token->num_sids,
+ &aliases, &num_aliases);
+
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(10, ("pdb_enum_alias_memberships failed: %s\n",
+ nt_errstr(status)));
+ TALLOC_FREE(tmp_ctx);
+ return status;
+ }
+
+ for (i=0; i<num_aliases; i++) {
+ DOM_SID alias_sid;
+ sid_compose(&alias_sid, domain_sid, aliases[i]);
+ if (!add_sid_to_array_unique(token, &alias_sid,
+ &token->user_sids,
+ &token->num_sids)) {
+ DEBUG(0, ("add_sid_to_array failed\n"));
+ TALLOC_FREE(tmp_ctx);
+ return NT_STATUS_NO_MEMORY;
+ }
+ }
+
+ TALLOC_FREE(tmp_ctx);
+ return NT_STATUS_OK;
+}
+
static NTSTATUS log_nt_token(TALLOC_CTX *tmp_ctx, NT_USER_TOKEN *token)
{
char *command;
@@ -584,6 +710,274 @@ static NTSTATUS log_nt_token(TALLOC_CTX *tmp_ctx, NT_USER_TOKEN *token)
return NT_STATUS_OK;
}
+/*******************************************************************
+*******************************************************************/
+
+static NTSTATUS add_builtin_administrators( struct nt_user_token *token )
+{
+ DOM_SID domadm;
+
+ /* nothing to do if we aren't in a domain */
+
+ if ( !(IS_DC || lp_server_role()==ROLE_DOMAIN_MEMBER) ) {
+ return NT_STATUS_OK;
+ }
+
+ /* Find the Domain Admins SID */
+
+ if ( IS_DC ) {
+ sid_copy( &domadm, get_global_sam_sid() );
+ } else {
+ if ( !secrets_fetch_domain_sid( lp_workgroup(), &domadm ) )
+ return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
+ }
+ sid_append_rid( &domadm, DOMAIN_GROUP_RID_ADMINS );
+
+ /* Add Administrators if the user beloongs to Domain Admins */
+
+ if ( nt_token_check_sid( &domadm, token ) ) {
+ if (!add_sid_to_array(token, &global_sid_Builtin_Administrators,
+ &token->user_sids, &token->num_sids)) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ }
+
+ return NT_STATUS_OK;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+static NTSTATUS create_builtin_users( void )
+{
+ NTSTATUS status;
+ DOM_SID dom_users;
+
+ status = pdb_create_builtin_alias( BUILTIN_ALIAS_RID_USERS );
+ if ( !NT_STATUS_IS_OK(status) ) {
+ DEBUG(0,("create_builtin_users: Failed to create Users\n"));
+ return status;
+ }
+
+ /* add domain users */
+ if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER))
+ && secrets_fetch_domain_sid(lp_workgroup(), &dom_users))
+ {
+ sid_append_rid(&dom_users, DOMAIN_GROUP_RID_USERS );
+ status = pdb_add_aliasmem( &global_sid_Builtin_Users, &dom_users);
+ if ( !NT_STATUS_IS_OK(status) ) {
+ DEBUG(0,("create_builtin_users: Failed to add Domain Users to"
+ " Users\n"));
+ return status;
+ }
+ }
+
+ return NT_STATUS_OK;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+static NTSTATUS create_builtin_administrators( void )
+{
+ NTSTATUS status;
+ DOM_SID dom_admins, root_sid;
+ fstring root_name;
+ enum lsa_SidType type;
+ TALLOC_CTX *ctx;
+ BOOL ret;
+
+ status = pdb_create_builtin_alias( BUILTIN_ALIAS_RID_ADMINS );
+ if ( !NT_STATUS_IS_OK(status) ) {
+ DEBUG(0,("create_builtin_administrators: Failed to create Administrators\n"));
+ return status;
+ }
+
+ /* add domain admins */
+ if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER))
+ && secrets_fetch_domain_sid(lp_workgroup(), &dom_admins))
+ {
+ sid_append_rid(&dom_admins, DOMAIN_GROUP_RID_ADMINS);
+ status = pdb_add_aliasmem( &global_sid_Builtin_Administrators, &dom_admins );
+ if ( !NT_STATUS_IS_OK(status) ) {
+ DEBUG(0,("create_builtin_administrators: Failed to add Domain Admins"
+ " Administrators\n"));
+ return status;
+ }
+ }
+
+ /* add root */
+ if ( (ctx = talloc_init("create_builtin_administrators")) == NULL ) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ fstr_sprintf( root_name, "%s\\root", get_global_sam_name() );
+ ret = lookup_name( ctx, root_name, 0, NULL, NULL, &root_sid, &type );
+ TALLOC_FREE( ctx );
+
+ if ( ret ) {
+ status = pdb_add_aliasmem( &global_sid_Builtin_Administrators, &root_sid );
+ if ( !NT_STATUS_IS_OK(status) ) {
+ DEBUG(0,("create_builtin_administrators: Failed to add root"
+ " Administrators\n"));
+ return status;
+ }
+ }
+
+ return NT_STATUS_OK;
+}
+
+/*******************************************************************
+ Create a NT token for the user, expanding local aliases
+*******************************************************************/
+
+static struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx,
+ const DOM_SID *user_sid,
+ BOOL is_guest,
+ int num_groupsids,
+ const DOM_SID *groupsids)
+{
+ struct nt_user_token *result = NULL;
+ int i;
+ NTSTATUS status;
+ gid_t gid;
+
+ DEBUG(10, ("Create local NT token for %s\n", sid_string_static(user_sid)));
+
+ if (!(result = TALLOC_ZERO_P(mem_ctx, NT_USER_TOKEN))) {
+ DEBUG(0, ("talloc failed\n"));
+ return NULL;
+ }
+
+ /* Add the user and primary group sid */
+
+ if (!add_sid_to_array(result, user_sid,
+ &result->user_sids, &result->num_sids)) {
+ return NULL;
+ }
+
+ /* For guest, num_groupsids may be zero. */
+ if (num_groupsids) {
+ if (!add_sid_to_array(result, &groupsids[0],
+ &result->user_sids, &result->num_sids)) {
+ return NULL;
+ }
+ }
+
+ /* Add in BUILTIN sids */
+
+ if (!add_sid_to_array(result, &global_sid_World,
+ &result->user_sids, &result->num_sids)) {
+ return NULL;
+ }
+ if (!add_sid_to_array(result, &global_sid_Network,
+ &result->user_sids, &result->num_sids)) {
+ return NULL;
+ }
+
+ if (is_guest) {
+ if (!add_sid_to_array(result, &global_sid_Builtin_Guests,
+ &result->user_sids, &result->num_sids)) {
+ return NULL;
+ }
+ } else {
+ if (!add_sid_to_array(result, &global_sid_Authenticated_Users,
+ &result->user_sids, &result->num_sids)) {
+ return NULL;
+ }
+ }
+
+ /* Now the SIDs we got from authentication. These are the ones from
+ * the info3 struct or from the pdb_enum_group_memberships, depending
+ * on who authenticated the user.
+ * Note that we start the for loop at "1" here, we already added the
+ * first group sid as primary above. */
+
+ for (i=1; i<num_groupsids; i++) {
+ if (!add_sid_to_array_unique(result, &groupsids[i],
+ &result->user_sids, &result->num_sids)) {
+ return NULL;
+ }
+ }
+
+ /* Deal with the BUILTIN\Administrators group. If the SID can
+ be resolved then assume that the add_aliasmem( S-1-5-32 )
+ handled it. */
+
+ if ( !sid_to_gid( &global_sid_Builtin_Administrators, &gid ) ) {
+ /* We can only create a mapping if winbind is running
+ and the nested group functionality has been enabled */
+
+ if ( lp_winbind_nested_groups() && winbind_ping() ) {
+ become_root();
+ status = create_builtin_administrators( );
+ if ( !NT_STATUS_IS_OK(status) ) {
+ DEBUG(2,("create_local_nt_token: Failed to create BUILTIN\\Administrators group!\n"));
+ /* don't fail, just log the message */
+ }
+ unbecome_root();
+ }
+ else {
+ status = add_builtin_administrators( result );
+ if ( !NT_STATUS_IS_OK(status) ) {
+ /* just log a complaint but do not fail */
+ DEBUG(3,("create_local_nt_token: failed to check for local Administrators"
+ " membership (%s)\n", nt_errstr(status)));
+ }
+ }
+ }
+
+ /* Deal with the BUILTIN\Users group. If the SID can
+ be resolved then assume that the add_aliasmem( S-1-5-32 )
+ handled it. */
+
+ if ( !sid_to_gid( &global_sid_Builtin_Users, &gid ) ) {
+ /* We can only create a mapping if winbind is running
+ and the nested group functionality has been enabled */
+
+ if ( lp_winbind_nested_groups() && winbind_ping() ) {
+ become_root();
+ status = create_builtin_users( );
+ if ( !NT_STATUS_IS_OK(status) ) {
+ DEBUG(2,("create_local_nt_token: Failed to create BUILTIN\\Users group!\n"));
+ /* don't fail, just log the message */
+ }
+ unbecome_root();
+ }
+ }
+
+ /* Deal with local groups */
+
+ if (lp_winbind_nested_groups()) {
+
+ become_root();
+
+ /* Now add the aliases. First the one from our local SAM */
+
+ status = add_aliases(get_global_sam_sid(), result);
+
+ if (!NT_STATUS_IS_OK(status)) {
+ TALLOC_FREE(result);
+ return NULL;
+ }
+
+ /* Finally the builtin ones */
+
+ status = add_aliases(&global_sid_Builtin, result);
+
+ if (!NT_STATUS_IS_OK(status)) {
+ TALLOC_FREE(result);
+ return NULL;
+ }
+
+ unbecome_root();
+ }
+
+
+ get_privileges_for_sids(&result->privileges, result->user_sids,
+ result->num_sids);
+ return result;
+}
+
/*
* Create the token to use from server_info->sam_account and
* server_info->sids (the info3/sam groups). Find the unix gids.
@@ -1624,7 +2018,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
/* ensure we are never given NULL session keys */
if (memcmp(info3->user_sess_key, zeros, sizeof(zeros)) == 0) {
- result->user_session_key = data_blob_null;
+ result->user_session_key = data_blob(NULL, 0);
} else {
result->user_session_key = data_blob_talloc(
result, info3->user_sess_key,
@@ -1632,7 +2026,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
}
if (memcmp(info3->lm_sess_key, zeros, 8) == 0) {
- result->lm_session_key = data_blob_null;
+ result->lm_session_key = data_blob(NULL, 0);
} else {
result->lm_session_key = data_blob_talloc(
result, info3->lm_sess_key,
@@ -1699,6 +2093,89 @@ BOOL make_auth_methods(struct auth_context *auth_context, auth_methods **auth_me
return True;
}
+/****************************************************************************
+ Duplicate a SID token.
+****************************************************************************/
+
+NT_USER_TOKEN *dup_nt_token(TALLOC_CTX *mem_ctx, const NT_USER_TOKEN *ptoken)
+{
+ NT_USER_TOKEN *token;
+
+ if (!ptoken)
+ return NULL;
+
+ token = TALLOC_P(mem_ctx, NT_USER_TOKEN);
+ if (token == NULL) {
+ DEBUG(0, ("talloc failed\n"));
+ return NULL;
+ }
+
+ ZERO_STRUCTP(token);
+
+ if (ptoken->user_sids && ptoken->num_sids) {
+ token->user_sids = (DOM_SID *)TALLOC_MEMDUP(
+ token, ptoken->user_sids, sizeof(DOM_SID) * ptoken->num_sids );
+
+ if (token->user_sids == NULL) {
+ DEBUG(0, ("TALLOC_MEMDUP failed\n"));
+ TALLOC_FREE(token);
+ return NULL;
+ }
+ token->num_sids = ptoken->num_sids;
+ }
+
+ /* copy the privileges; don't consider failure to be critical here */
+
+ if ( !se_priv_copy( &token->privileges, &ptoken->privileges ) ) {
+ DEBUG(0,("dup_nt_token: Failure to copy SE_PRIV!. "
+ "Continuing with 0 privileges assigned.\n"));
+ }
+
+ return token;
+}
+
+/****************************************************************************
+ Check for a SID in an NT_USER_TOKEN
+****************************************************************************/
+
+BOOL nt_token_check_sid ( const DOM_SID *sid, const NT_USER_TOKEN *token )
+{
+ int i;
+
+ if ( !sid || !token )
+ return False;
+
+ for ( i=0; i<token->num_sids; i++ ) {
+ if ( sid_equal( sid, &token->user_sids[i] ) )
+ return True;
+ }
+
+ return False;
+}
+
+BOOL nt_token_check_domain_rid( NT_USER_TOKEN *token, uint32 rid )
+{
+ DOM_SID domain_sid;
+
+ /* if we are a domain member, the get the domain SID, else for
+ a DC or standalone server, use our own SID */
+
+ if ( lp_server_role() == ROLE_DOMAIN_MEMBER ) {
+ if ( !secrets_fetch_domain_sid( lp_workgroup(),
+ &domain_sid ) ) {
+ DEBUG(1,("nt_token_check_domain_rid: Cannot lookup "
+ "SID for domain [%s]\n", lp_workgroup()));
+ return False;
+ }
+ }
+ else
+ sid_copy( &domain_sid, get_global_sam_sid() );
+
+ sid_append_rid( &domain_sid, rid );
+
+ return nt_token_check_sid( &domain_sid, token );\
+}
+
/**
* Verify whether or not given domain is trusted.
*
@@ -1723,7 +2200,8 @@ BOOL is_trusted_domain(const char* dom_name)
become_root();
DEBUG (5,("is_trusted_domain: Checking for domain trust with "
"[%s]\n", dom_name ));
- ret = pdb_get_trusteddom_pw(dom_name, NULL, NULL, NULL);
+ ret = secrets_fetch_trusted_domain_password(dom_name, NULL,
+ NULL, NULL);
unbecome_root();
if (ret)
return True;
diff --git a/source/auth/pampass.c b/source/auth/pampass.c
index a83e2bcb3ff..ba11d2e8fc2 100644
--- a/source/auth/pampass.c
+++ b/source/auth/pampass.c
@@ -41,11 +41,7 @@
* which determines what actions/limitations/allowances become affected.
*********************************************************************/
-#if defined(HAVE_SECURITY_PAM_APPL_H)
#include <security/pam_appl.h>
-#elif defined(HAVE_PAM_PAM_APPL_H)
-#include <pam/pam_appl.h>
-#endif
/*
* Structure used to communicate between the conversation function
diff --git a/source/auth/token_util.c b/source/auth/token_util.c
deleted file mode 100644
index 57db0d193fd..00000000000
--- a/source/auth/token_util.c
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Authentication utility functions
- * Copyright (C) Andrew Tridgell 1992-1998
- * Copyright (C) Andrew Bartlett 2001
- * Copyright (C) Jeremy Allison 2000-2001
- * Copyright (C) Rafal Szczesniak 2002
- * Copyright (C) Volker Lendecke 2006
- * Copyright (C) Michael Adam 2007
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* functions moved from auth/auth_util.c to minimize linker deps */
-
-#include "includes.h"
-
-/****************************************************************************
- Check for a SID in an NT_USER_TOKEN
-****************************************************************************/
-
-BOOL nt_token_check_sid ( const DOM_SID *sid, const NT_USER_TOKEN *token )
-{
- int i;
-
- if ( !sid || !token )
- return False;
-
- for ( i=0; i<token->num_sids; i++ ) {
- if ( sid_equal( sid, &token->user_sids[i] ) )
- return True;
- }
-
- return False;
-}
-
-BOOL nt_token_check_domain_rid( NT_USER_TOKEN *token, uint32 rid )
-{
- DOM_SID domain_sid;
-
- /* if we are a domain member, the get the domain SID, else for
- a DC or standalone server, use our own SID */
-
- if ( lp_server_role() == ROLE_DOMAIN_MEMBER ) {
- if ( !secrets_fetch_domain_sid( lp_workgroup(),
- &domain_sid ) ) {
- DEBUG(1,("nt_token_check_domain_rid: Cannot lookup "
- "SID for domain [%s]\n", lp_workgroup()));
- return False;
- }
- }
- else
- sid_copy( &domain_sid, get_global_sam_sid() );
-
- sid_append_rid( &domain_sid, rid );
-
- return nt_token_check_sid( &domain_sid, token );\
-}
-
-/******************************************************************************
- Create a token for the root user to be used internally by smbd.
- This is similar to running under the context of the LOCAL_SYSTEM account
- in Windows. This is a read-only token. Do not modify it or free() it.
- Create a copy if your need to change it.
-******************************************************************************/
-
-NT_USER_TOKEN *get_root_nt_token( void )
-{
- static NT_USER_TOKEN *token = NULL;
- DOM_SID u_sid, g_sid;
- struct passwd *pw;
-
- if ( token )
- return token;
-
- if ( !(pw = sys_getpwnam( "root" )) ) {
- DEBUG(0,("get_root_nt_token: getpwnam\"root\") failed!\n"));
- return NULL;
- }
-
- /* get the user and primary group SIDs; although the
- BUILTIN\Administrators SId is really the one that matters here */
-
- uid_to_sid(&u_sid, pw->pw_uid);
- gid_to_sid(&g_sid, pw->pw_gid);
-
- token = create_local_nt_token(NULL, &u_sid, False,
- 1, &global_sid_Builtin_Administrators);
- return token;
-}
-
-
-/*
- * Add alias SIDs from memberships within the partially created token SID list
- */
-
-NTSTATUS add_aliases(const DOM_SID *domain_sid,
- struct nt_user_token *token)
-{
- uint32 *aliases;
- size_t i, num_aliases;
- NTSTATUS status;
- TALLOC_CTX *tmp_ctx;
-
- if (!(tmp_ctx = talloc_init("add_aliases"))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- aliases = NULL;
- num_aliases = 0;
-
- status = pdb_enum_alias_memberships(tmp_ctx, domain_sid,
- token->user_sids,
- token->num_sids,
- &aliases, &num_aliases);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("pdb_enum_alias_memberships failed: %s\n",
- nt_errstr(status)));
- TALLOC_FREE(tmp_ctx);
- return status;
- }
-
- for (i=0; i<num_aliases; i++) {
- DOM_SID alias_sid;
- sid_compose(&alias_sid, domain_sid, aliases[i]);
- if (!add_sid_to_array_unique(token, &alias_sid,
- &token->user_sids,
- &token->num_sids)) {
- DEBUG(0, ("add_sid_to_array failed\n"));
- TALLOC_FREE(tmp_ctx);
- return NT_STATUS_NO_MEMORY;
- }
- }
-
- TALLOC_FREE(tmp_ctx);
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
-*******************************************************************/
-
-static NTSTATUS add_builtin_administrators( struct nt_user_token *token )
-{
- DOM_SID domadm;
-
- /* nothing to do if we aren't in a domain */
-
- if ( !(IS_DC || lp_server_role()==ROLE_DOMAIN_MEMBER) ) {
- return NT_STATUS_OK;
- }
-
- /* Find the Domain Admins SID */
-
- if ( IS_DC ) {
- sid_copy( &domadm, get_global_sam_sid() );
- } else {
- if ( !secrets_fetch_domain_sid( lp_workgroup(), &domadm ) )
- return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
- }
- sid_append_rid( &domadm, DOMAIN_GROUP_RID_ADMINS );
-
- /* Add Administrators if the user beloongs to Domain Admins */
-
- if ( nt_token_check_sid( &domadm, token ) ) {
- if (!add_sid_to_array(token, &global_sid_Builtin_Administrators,
- &token->user_sids, &token->num_sids)) {
- return NT_STATUS_NO_MEMORY;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
-*******************************************************************/
-
-static NTSTATUS create_builtin_users( void )
-{
- NTSTATUS status;
- DOM_SID dom_users;
-
- status = pdb_create_builtin_alias( BUILTIN_ALIAS_RID_USERS );
- if ( !NT_STATUS_IS_OK(status) ) {
- DEBUG(0,("create_builtin_users: Failed to create Users\n"));
- return status;
- }
-
- /* add domain users */
- if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER))
- && secrets_fetch_domain_sid(lp_workgroup(), &dom_users))
- {
- sid_append_rid(&dom_users, DOMAIN_GROUP_RID_USERS );
- status = pdb_add_aliasmem( &global_sid_Builtin_Users, &dom_users);
- if ( !NT_STATUS_IS_OK(status) ) {
- DEBUG(0,("create_builtin_administrators: Failed to add Domain Users to"
- " Users\n"));
- return status;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
-*******************************************************************/
-
-static NTSTATUS create_builtin_administrators( void )
-{
- NTSTATUS status;
- DOM_SID dom_admins, root_sid;
- fstring root_name;
- enum lsa_SidType type;
- TALLOC_CTX *ctx;
- BOOL ret;
-
- status = pdb_create_builtin_alias( BUILTIN_ALIAS_RID_ADMINS );
- if ( !NT_STATUS_IS_OK(status) ) {
- DEBUG(0,("create_builtin_administrators: Failed to create Administrators\n"));
- return status;
- }
-
- /* add domain admins */
- if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER))
- && secrets_fetch_domain_sid(lp_workgroup(), &dom_admins))
- {
- sid_append_rid(&dom_admins, DOMAIN_GROUP_RID_ADMINS);
- status = pdb_add_aliasmem( &global_sid_Builtin_Administrators, &dom_admins );
- if ( !NT_STATUS_IS_OK(status) ) {
- DEBUG(0,("create_builtin_administrators: Failed to add Domain Admins"
- " Administrators\n"));
- return status;
- }
- }
-
- /* add root */
- if ( (ctx = talloc_init("create_builtin_administrators")) == NULL ) {
- return NT_STATUS_NO_MEMORY;
- }
- fstr_sprintf( root_name, "%s\\root", get_global_sam_name() );
- ret = lookup_name( ctx, root_name, 0, NULL, NULL, &root_sid, &type );
- TALLOC_FREE( ctx );
-
- if ( ret ) {
- status = pdb_add_aliasmem( &global_sid_Builtin_Administrators, &root_sid );
- if ( !NT_STATUS_IS_OK(status) ) {
- DEBUG(0,("create_builtin_administrators: Failed to add root"
- " Administrators\n"));
- return status;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-
-/*******************************************************************
- Create a NT token for the user, expanding local aliases
-*******************************************************************/
-
-struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx,
- const DOM_SID *user_sid,
- BOOL is_guest,
- int num_groupsids,
- const DOM_SID *groupsids)
-{
- struct nt_user_token *result = NULL;
- int i;
- NTSTATUS status;
- gid_t gid;
-
- DEBUG(10, ("Create local NT token for %s\n", sid_string_static(user_sid)));
-
- if (!(result = TALLOC_ZERO_P(mem_ctx, NT_USER_TOKEN))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- /* Add the user and primary group sid */
-
- if (!add_sid_to_array(result, user_sid,
- &result->user_sids, &result->num_sids)) {
- return NULL;
- }
-
- /* For guest, num_groupsids may be zero. */
- if (num_groupsids) {
- if (!add_sid_to_array(result, &groupsids[0],
- &result->user_sids, &result->num_sids)) {
- return NULL;
- }
- }
-
- /* Add in BUILTIN sids */
-
- if (!add_sid_to_array(result, &global_sid_World,
- &result->user_sids, &result->num_sids)) {
- return NULL;
- }
- if (!add_sid_to_array(result, &global_sid_Network,
- &result->user_sids, &result->num_sids)) {
- return NULL;
- }
-
- if (is_guest) {
- if (!add_sid_to_array(result, &global_sid_Builtin_Guests,
- &result->user_sids, &result->num_sids)) {
- return NULL;
- }
- } else {
- if (!add_sid_to_array(result, &global_sid_Authenticated_Users,
- &result->user_sids, &result->num_sids)) {
- return NULL;
- }
- }
-
- /* Now the SIDs we got from authentication. These are the ones from
- * the info3 struct or from the pdb_enum_group_memberships, depending
- * on who authenticated the user.
- * Note that we start the for loop at "1" here, we already added the
- * first group sid as primary above. */
-
- for (i=1; i<num_groupsids; i++) {
- if (!add_sid_to_array_unique(result, &groupsids[i],
- &result->user_sids, &result->num_sids)) {
- return NULL;
- }
- }
-
- /* Deal with the BUILTIN\Administrators group. If the SID can
- be resolved then assume that the add_aliasmem( S-1-5-32 )
- handled it. */
-
- if ( !sid_to_gid( &global_sid_Builtin_Administrators, &gid ) ) {
- /* We can only create a mapping if winbind is running
- and the nested group functionality has been enabled */
-
- if ( lp_winbind_nested_groups() && winbind_ping() ) {
- become_root();
- status = create_builtin_administrators( );
- if ( !NT_STATUS_IS_OK(status) ) {
- DEBUG(2,("create_local_nt_token: Failed to create BUILTIN\\Administrators group!\n"));
- /* don't fail, just log the message */
- }
- unbecome_root();
- }
- else {
- status = add_builtin_administrators( result );
- if ( !NT_STATUS_IS_OK(status) ) {
- /* just log a complaint but do not fail */
- DEBUG(3,("create_local_nt_token: failed to check for local Administrators"
- " membership (%s)\n", nt_errstr(status)));
- }
- }
- }
-
- /* Deal with the BUILTIN\Users group. If the SID can
- be resolved then assume that the add_aliasmem( S-1-5-32 )
- handled it. */
-
- if ( !sid_to_gid( &global_sid_Builtin_Users, &gid ) ) {
- /* We can only create a mapping if winbind is running
- and the nested group functionality has been enabled */
-
- if ( lp_winbind_nested_groups() && winbind_ping() ) {
- become_root();
- status = create_builtin_users( );
- if ( !NT_STATUS_IS_OK(status) ) {
- DEBUG(2,("create_local_nt_token: Failed to create BUILTIN\\Users group!\n"));
- /* don't fail, just log the message */
- }
- unbecome_root();
- }
- }
-
- /* Deal with local groups */
-
- if (lp_winbind_nested_groups()) {
-
- /* Now add the aliases. First the one from our local SAM */
-
- status = add_aliases(get_global_sam_sid(), result);
-
- if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(result);
- return NULL;
- }
-
- /* Finally the builtin ones */
-
- status = add_aliases(&global_sid_Builtin, result);
-
- if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(result);
- return NULL;
- }
- }
-
-
- get_privileges_for_sids(&result->privileges, result->user_sids,
- result->num_sids);
- return result;
-}
-
-/****************************************************************************
- prints a NT_USER_TOKEN to debug output.
-****************************************************************************/
-
-void debug_nt_user_token(int dbg_class, int dbg_lev, NT_USER_TOKEN *token)
-{
- size_t i;
-
- if (!token) {
- DEBUGC(dbg_class, dbg_lev, ("NT user token: (NULL)\n"));
- return;
- }
-
- DEBUGC(dbg_class, dbg_lev,
- ("NT user token of user %s\n",
- sid_string_static(&token->user_sids[0]) ));
- DEBUGADDC(dbg_class, dbg_lev,
- ("contains %lu SIDs\n", (unsigned long)token->num_sids));
- for (i = 0; i < token->num_sids; i++)
- DEBUGADDC(dbg_class, dbg_lev,
- ("SID[%3lu]: %s\n", (unsigned long)i,
- sid_string_static(&token->user_sids[i])));
-
- dump_se_priv( dbg_class, dbg_lev, &token->privileges );
-}
-
-/****************************************************************************
- prints a UNIX 'token' to debug output.
-****************************************************************************/
-
-void debug_unix_user_token(int dbg_class, int dbg_lev, uid_t uid, gid_t gid,
- int n_groups, gid_t *groups)
-{
- int i;
- DEBUGC(dbg_class, dbg_lev,
- ("UNIX token of user %ld\n", (long int)uid));
-
- DEBUGADDC(dbg_class, dbg_lev,
- ("Primary group is %ld and contains %i supplementary "
- "groups\n", (long int)gid, n_groups));
- for (i = 0; i < n_groups; i++)
- DEBUGADDC(dbg_class, dbg_lev, ("Group[%3i]: %ld\n", i,
- (long int)groups[i]));
-}
-
-/* END */
diff --git a/source/autogen.sh b/source/autogen.sh
index 02f55c54219..4d3488c9a48 100755
--- a/source/autogen.sh
+++ b/source/autogen.sh
@@ -16,7 +16,7 @@ AUTOCONFFOUND="0"
##
for i in $TESTAUTOHEADER; do
if which $i > /dev/null 2>&1; then
- if test `$i --version | head -n 1 | cut -d. -f 2 | sed "s/[^0-9]//g"` -ge 53; then
+ if test `$i --version | head -n 1 | cut -d. -f 2 | tr -d [:alpha:]` -ge 53; then
AUTOHEADER=$i
AUTOHEADERFOUND="1"
break
@@ -30,7 +30,7 @@ done
for i in $TESTAUTOCONF; do
if which $i > /dev/null 2>&1; then
- if test `$i --version | head -n 1 | cut -d. -f 2 | sed "s/[^0-9]//g"` -ge 53; then
+ if test `$i --version | head -n 1 | cut -d. -f 2 | tr -d [:alpha:]` -ge 53; then
AUTOCONF=$i
AUTOCONFFOUND="1"
break
@@ -53,7 +53,7 @@ echo "$0: running script/mkversion.sh"
rm -rf autom4te*.cache
rm -f configure include/config.h*
-IPATHS="-Im4 -Ilib/replace"
+IPATHS="-I. -Ilib/replace"
echo "$0: running $AUTOHEADER $IPATHS"
$AUTOHEADER $IPATHS || exit 1
diff --git a/source/client/cifs_resolver.sh b/source/client/cifs_resolver.sh
deleted file mode 100644
index 2229d5a5f5b..00000000000
--- a/source/client/cifs_resolver.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/sh
-###############################################################################
-#
-# Written by Igor Mammedov (niallain@gmail.com)
-# Modified by Steve French <sfrench@samba.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version
-# 2 of the License, or (at your option) any later version.
-#
-###############################################################################
-#
-# linux-cifs-client dns name resolver helper
-# called by cifs kernel module upcall to key API to resolve server name
-# to IP when module connects to DFS link. We may eventually make this
-# C code, but this is a good starting point.
-# You should have appropriate kernel and keyutils installed.
-# CIFS DFS Support will require Linux kernel module
-# cifs.ko version 1.48 or later.
-#
-# Consult the CIFS client users guide for more details
-# http://www.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf
-#
-# Put the following string in /etc/request-key.conf without comment sign :)
-# create cifs_resolver * * /sbin/cifs_resolver.sh %k %d %S
-#
-# Put this script into /sbin directory
-# Call: /sbin/cifs_resolver.sh <keyid> <desc> <session-keyring>
-#
-# <desc> - is server name to resolve
-#
-
-status=0
-{
- echo "cifs_resolver: resolving: $2"
-
- DATAA=`/usr/bin/host $2`
- status=$?
-
- if [ "x$status" != "x0" ]; then
- echo "cifs_resolver: failed to resolve: $2"
- exit $status
- else
- DATAA=`echo "$DATAA" | sed 's/.*has address //'`
- echo "cifs_resolver: resolved: $2 to $DATAA"
- keyctl instantiate $1 "$DATAA" $3 || exit 1
- fi
-# if you want to debug the upcall, replace /dev/null (below) with ttyS0 or file
-} >&/dev/null
-exit 0
diff --git a/source/client/client.c b/source/client/client.c
index 721fa831561..0cc14330cc9 100644
--- a/source/client/client.c
+++ b/source/client/client.c
@@ -194,6 +194,10 @@ static void send_message(void)
msg[l] = c;
}
+ if ((total_len > 0) && (strlen(msg) == 0)) {
+ break;
+ }
+
if (!cli_message_text(cli, msg, l, grp_id)) {
d_printf("SMBsendtxt failed (%s)\n",cli_errstr(cli));
return;
@@ -1787,54 +1791,6 @@ static int cmd_open(void)
/****************************************************************************
****************************************************************************/
-static int cmd_posix_encrypt(void)
-{
- NTSTATUS status;
-
- if (cli->use_kerberos) {
- status = cli_gss_smb_encryption_start(cli);
- } else {
- fstring buf;
- fstring domain;
- fstring user;
- fstring password;
-
- if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
- d_printf("posix_encrypt domain user password\n");
- return 1;
- }
- fstrcpy(domain,buf);
-
- if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
- d_printf("posix_encrypt domain user password\n");
- return 1;
- }
- fstrcpy(user,buf);
-
- if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
- d_printf("posix_encrypt domain user password\n");
- return 1;
- }
- fstrcpy(password,buf);
-
- status = cli_raw_ntlm_smb_encryption_start(cli,
- user,
- password,
- domain);
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- d_printf("posix_encrypt failed with error %s\n", nt_errstr(status));
- } else {
- d_printf("encryption on\n");
- }
-
- return 0;
-}
-
-/****************************************************************************
-****************************************************************************/
-
static int cmd_posix_open(void)
{
pstring mask;
@@ -2697,7 +2653,8 @@ static int cmd_rename(void)
pstring src,dest;
pstring buf,buf2;
struct cli_state *targetcli;
- pstring targetname;
+ pstring targetsrc;
+ pstring targetdest;
pstrcpy(src,cur_dir);
pstrcpy(dest,cur_dir);
@@ -2711,13 +2668,21 @@ static int cmd_rename(void)
pstrcat(src,buf);
pstrcat(dest,buf2);
- if ( !cli_resolve_path( "", cli, src, &targetcli, targetname ) ) {
- d_printf("chown %s: %s\n", src, cli_errstr(cli));
+ if ( !cli_resolve_path( "", cli, src, &targetcli, targetsrc ) ) {
+ d_printf("rename %s: %s\n", src, cli_errstr(cli));
return 1;
}
- if (!cli_rename(targetcli, targetname, dest)) {
- d_printf("%s renaming files\n",cli_errstr(targetcli));
+ if ( !cli_resolve_path( "", cli, dest, &targetcli, targetdest ) ) {
+ d_printf("rename %s: %s\n", dest, cli_errstr(cli));
+ return 1;
+ }
+
+ if (!cli_rename(targetcli, targetsrc, targetdest)) {
+ d_printf("%s renaming files %s -> %s \n",
+ cli_errstr(targetcli),
+ targetsrc,
+ targetdest);
return 1;
}
@@ -3027,12 +2992,10 @@ static BOOL browse_host_rpc(BOOL sort)
NTSTATUS status;
struct rpc_pipe_client *pipe_hnd;
TALLOC_CTX *mem_ctx;
- uint32 enum_hnd = 0;
- struct srvsvc_NetShareCtr1 ctr1;
- union srvsvc_NetShareCtr ctr;
+ ENUM_HND enum_hnd;
+ WERROR werr;
+ SRV_SHARE_INFO_CTR ctr;
int i;
- uint32 level;
- uint32 numentries;
mem_ctx = talloc_new(NULL);
if (mem_ctx == NULL) {
@@ -3040,6 +3003,8 @@ static BOOL browse_host_rpc(BOOL sort)
return False;
}
+ init_enum_hnd(&enum_hnd, 0);
+
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &status);
if (pipe_hnd == NULL) {
@@ -3049,23 +3014,23 @@ static BOOL browse_host_rpc(BOOL sort)
return False;
}
- ZERO_STRUCT(ctr1);
- level = 1;
- ctr.ctr1 = &ctr1;
+ werr = rpccli_srvsvc_net_share_enum(pipe_hnd, mem_ctx, 1, &ctr,
+ 0xffffffff, &enum_hnd);
- status = rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, "", &level,
- &ctr, 0xffffffff, &numentries,
- &enum_hnd);
-
- if (!NT_STATUS_IS_OK(status)) {
+ if (!W_ERROR_IS_OK(werr)) {
TALLOC_FREE(mem_ctx);
cli_rpc_pipe_close(pipe_hnd);
return False;
}
- for (i=0; i<numentries; i++) {
- struct srvsvc_NetShareInfo1 *info = &ctr.ctr1->array[i];
- browse_fn(info->name, info->type, info->comment, NULL);
+ for (i=0; i<ctr.num_entries; i++) {
+ SRV_SHARE_INFO_1 *info = &ctr.share.info1[i];
+ char *name, *comment;
+ name = rpcstr_pull_unistr2_talloc(
+ mem_ctx, &info->info_1_str.uni_netname);
+ comment = rpcstr_pull_unistr2_talloc(
+ mem_ctx, &info->info_1_str.uni_remark);
+ browse_fn(name, info->info_1.type, comment, NULL);
}
TALLOC_FREE(mem_ctx);
@@ -3275,7 +3240,6 @@ static struct
{"newer",cmd_newer,"<file> only mget files newer than the specified local file",{COMPL_LOCAL,COMPL_NONE}},
{"open",cmd_open,"<mask> open a file",{COMPL_REMOTE,COMPL_NONE}},
{"posix", cmd_posix, "turn on all POSIX capabilities", {COMPL_REMOTE,COMPL_NONE}},
- {"posix_encrypt",cmd_posix_encrypt,"<domain> <user> <password> start up transport encryption",{COMPL_REMOTE,COMPL_NONE}},
{"posix_open",cmd_posix_open,"<name> 0<mode> open_flags mode open a file using POSIX interface",{COMPL_REMOTE,COMPL_NONE}},
{"posix_mkdir",cmd_posix_mkdir,"<name> 0<mode> creates a directory using POSIX interface",{COMPL_REMOTE,COMPL_NONE}},
{"posix_rmdir",cmd_posix_rmdir,"<name> removes a directory using POSIX interface",{COMPL_REMOTE,COMPL_NONE}},
@@ -3671,12 +3635,12 @@ static void readline_callback(void)
timeout.tv_usec = 0;
sys_select_intr(cli->fd+1,&fds,NULL,NULL,&timeout);
- /* We deliberately use cli_receive_smb_return_keepalive instead of
+ /* We deliberately use receive_smb instead of
client_receive_smb as we want to receive
session keepalives and then drop them here.
*/
if (FD_ISSET(cli->fd,&fds)) {
- if (!cli_receive_smb_return_keepalive(cli)) {
+ if (!receive_smb(cli->fd,cli->inbuf,0)) {
DEBUG(0, ("Read from server failed, maybe it closed the "
"connection\n"));
return;
diff --git a/source/client/clitar.c b/source/client/clitar.c
index 3d925858a0f..7bbb9fc58bf 100644
--- a/source/client/clitar.c
+++ b/source/client/clitar.c
@@ -264,7 +264,7 @@ static long readtarheader(union hblock *hb, file_info2 *finfo, char *prefix)
if (fchk != chk) {
DEBUG(0, ("checksums don't match %ld %ld\n", fchk, chk));
- dump_data(5, (uint8 *)hb - TBLOCK, TBLOCK *3);
+ dump_data(5, (char *)hb - TBLOCK, TBLOCK *3);
return -1;
}
diff --git a/source/configure.in b/source/configure.in
index 4c718bc6ee0..74fc8732f09 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -6,12 +6,6 @@ AC_INIT(include/includes.h)
AC_CONFIG_HEADER(include/config.h)
AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
-case "$PATH" in
- */usr/ucb*)
- AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
- ;;
-esac
-
SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
@@ -169,20 +163,6 @@ AC_ARG_WITH(logfilebase,
;;
esac])
-
-#################################################
-# set ctdb source directory location
-AC_ARG_WITH(ctdb,
-[ --with-ctdb=DIR Where to find ctdb sources],
-[ case "$withval" in
- yes|no)
- AC_MSG_WARN([--with-ctdb called without argument])
- ;;
- * )
- ctdbdir="$withval"
- ;;
- esac])
-
#################################################
# set lib directory location
AC_ARG_WITH(libdir,
@@ -253,7 +233,7 @@ done
SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
-SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/tdb/include"
SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
@@ -268,7 +248,6 @@ AC_SUBST(configdir)
AC_SUBST(lockdir)
AC_SUBST(piddir)
AC_SUBST(logfilebase)
-AC_SUBST(ctdbdir)
AC_SUBST(privatedir)
AC_SUBST(swatdir)
AC_SUBST(bindir)
@@ -280,10 +259,8 @@ dnl Unique-to-Samba variables we'll be playing with.
AC_SUBST(SAMBA_CPPFLAGS)
AC_SUBST(SHELL)
AC_SUBST(LDSHFLAGS)
-AC_SUBST(MODULE_EXPORTS)
AC_SUBST(SONAMEFLAG)
AC_SUBST(SHLD)
-AC_SUBST(DSO_EXPORTS)
AC_SUBST(HOST_OS)
AC_SUBST(PICFLAG)
AC_SUBST(PIE_CFLAGS)
@@ -354,21 +331,6 @@ AC_LIBREPLACE_CC_CHECKS
m4_include(lib/socket_wrapper/config.m4)
-
-AC_ARG_ENABLE(swat,
-[ --enable-swat Build the SWAT tool (default=yes)],
-[
- case "$enable_swat" in
- no) ;;
- *)
- SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)'
- SWAT_INSTALL_TARGETS=installswat
- ;;
- esac
- AC_SUBST(SWAT_SBIN_TARGETS)
- AC_SUBST(SWAT_INSTALL_TARGETS)
-])
-
#################################################
# set prefix for 'make test'
selftest_prefix="./"
@@ -385,35 +347,6 @@ AC_ARG_WITH(selftest-prefix,
esac
])
-AC_ARG_ENABLE(launchd,
-[ --enable-launchd Support running under launchd (default=auto)])
-
-if test x"$enable_launchd" != x"no" ; then
- AC_CACHE_CHECK([whether to include launchd support],
- samba_cv_launchd_support,
- [
- AC_TRY_COMPILE(
- [
-#include <launch.h>
- ],
- [
- launchd_msg(NULL);
- launchd_data_get_fd(NULL);
- ],
- samba_cv_launchd_support=yes,
- samba_cv_launchd_support=no)
- ])
-
- if test x"$samba_cv_launchd_support" = x"yes" ; then
- AC_DEFINE(WITH_LAUNCHD_SUPPORT, 1,
- [Whether launchd support should be enabled])
- else
- if test x"$enable_launchd" = x"yes" ; then
- AC_ERROR(launchd support is not available)
- fi
- fi
-fi
-
#################################################
# set path of samba4's smbtorture
smbtorture4_path=""
@@ -436,19 +369,7 @@ AC_ARG_WITH(smbtorture4_path,
AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)],
[if eval "test x$enable_developer = xyes"; then
developer=yes
- fi])
-
-AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
- [if eval "test x$enable_krb5developer = xyes"; then
- developer=yes
- krb5_developer=yes
- fi])
-
-# Probe the gcc version for extra CFLAGS. We always stash these in
-# DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
-# Makefile edit, avoiding the need to re-run configure.
-if test x"$ac_cv_prog_gcc" = x"yes" ; then
- DEVELOPER_CFLAGS="-gstabs -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
+ CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
# Add -Wdeclaration-after-statement if compiler supports it
AC_CACHE_CHECK(
[that the C compiler understands -Wdeclaration-after-statement],
@@ -462,34 +383,16 @@ if test x"$ac_cv_prog_gcc" = x"yes" ; then
samba_cv_HAVE_Wdeclaration_after_statement=no,
samba_cv_HAVE_Wdeclaration_after_statement=cross)
])
-
- if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
- DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
- fi
-
- #-Werror-implicit-function-declaration
- AC_CACHE_CHECK(
- [that the C compiler understands -Werror-implicit-function-declaration],
- samba_cv_HAVE_Werror_implicit_function_declaration, [
- AC_TRY_RUN_STRICT([
- int main(void)
- {
- return 0;
- }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
- samba_cv_HAVE_Werror_implicit_function_declaration=yes,
- samba_cv_HAVE_Werror_implicit_function_declaration=no,
- samba_cv_HAVE_Werror_implicit_function_declaration=cross)
- ])
- if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
- DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
+ if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
+ CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
fi
+ fi])
- # krb5developer is like developer, except we don't get
- # -Wstrict-prototypes.
- if test x"$krb5_developer" != x"$yes" ; then
- DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
- fi
-fi
+AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
+ [if eval "test x$enable_krb5developer = xyes"; then
+ developer=yes
+ CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
+ fi])
AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]])
@@ -546,9 +449,6 @@ if test "$ac_cv_prog_gnu_ld" = "yes"; then
if test "$ac_cv_gnu_ld_date" -lt 20030217; then
ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
fi
- if test "$ac_cv_gnu_ld_date" -gt 20030101; then
- ac_cv_gnu_ld_version_script=yes
- fi
else
AC_MSG_CHECKING(GNU ld release version)
changequote(,)dnl
@@ -564,9 +464,6 @@ if test "$ac_cv_prog_gnu_ld" = "yes"; then
if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
fi
- if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
- ac_cv_gnu_ld_version_script=yes
- fi
fi
fi
@@ -646,41 +543,7 @@ if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
PIDL_ARGS="$PIDL_ARGS --uint-enums"
fi
-############################################
-# Check whether we can do automatic dependency tracking
-
-m4_include(m4/substnot.m4)
-m4_include(m4/cond.m4)
-m4_include(m4/make.m4)
-m4_include(m4/depout.m4)
-m4_include(m4/lead-dot.m4)
-m4_include(m4/check_gnu_make.m4)
-m4_include(m4/depend.m4)
-
-# Using the dependency files requires GNU make until someone adds support
-# for Makefile includes for other make implementations. Note that
-# CHECK_GNU_MAKE() can find a non-default make.
-CHECK_GNU_MAKE()
-if test "x$_cv_gnu_make_command" != "x" -a \
- x`which make` = x`which "$_cv_gnu_make_command"` ; then
- AC_SUBST(MAKE, $_cv_gnu_make_command)
-else
- # If GNU make is not the default, don't enable GNU-isms because we can't
- # guarantee that GNU make will actually be the make that is invoked.
- ifGNUmake='#'
-fi
-
-AM_DEP_TRACK()
-_AM_DEPENDENCIES(CC)
-
-# As per vl, disable dependency tracking by default until we don't need
-# to use "make proto' -- jpeach
-if test "x$enable_dependency_tracking" != xyes; then
- ifGNUmake='#'
-fi
-
-############################################
-# Figure out the flags to support named structure initializers
+dnl Figure out the flags to support named structure initializers
LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
@@ -726,7 +589,7 @@ AC_SUBST(DYNEXP)
dnl Add modules that have to be built by default here
dnl These have to be built static:
-default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 rpc_unixinfo rpc_epmapper auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
+default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_shutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_echo auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
dnl These are preferably build shared, and static if dlopen() is not available
default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437 auth_script vfs_readahead"
@@ -869,11 +732,11 @@ case "$host_os" in
CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
AC_TRY_RUN([
#include <unistd.h>
-int main () {
+main () {
#if _LFS64_LARGEFILE == 1
-return 0;
+exit(0);
#else
-return 1;
+exit(1);
#endif
}], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
CPPFLAGS="$old_CPPFLAGS"
@@ -888,15 +751,6 @@ return 1;
fi
;;
-# Systems with LFS support.
-#
- gnu* | k*bsd*-gnu)
- CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
- AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
- AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
- AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
- ;;
-
# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
#
*linux*)
@@ -908,7 +762,7 @@ return 1;
#include <sys/utsname.h>
#include <string.h>
#include <stdlib.h>
-int main() {
+main() {
#if _LFS64_LARGEFILE == 1
struct utsname uts;
char *release;
@@ -920,9 +774,9 @@ int main() {
int libc_minor = __GLIBC_MINOR__;
if (libc_major < 2)
- return 1;
+ exit(1);
if (libc_minor < 2)
- return 1;
+ exit(1);
#endif
/* Ensure this is kernel 2.4 or higher */
@@ -933,10 +787,10 @@ int main() {
minor = atoi(strsep(&release, "."));
if (major > 2 || (major == 2 && minor > 3))
- return 0;
- return 1;
+ exit(0);
+ exit(1);
#else
- return 1;
+ exit(1);
#endif
}
], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
@@ -957,7 +811,7 @@ int main() {
*darwin*)
AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
- # Add a system specific charset module.
+# Add a system specific charset module.
default_shared_modules="$default_shared_modules charset_macosxfs"
;;
@@ -969,9 +823,9 @@ int main() {
#include <unistd.h>
main () {
#if _LFS64_LARGEFILE == 1
-return 0;
+exit(0);
#else
-return 1;
+exit(1);
#endif
}], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
CPPFLAGS="$old_CPPFLAGS"
@@ -1223,7 +1077,7 @@ AC_HAVE_DECL(snprintf, [#include <stdio.h>])
# nothing until kernel 2.1.44! very dumb.
AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
AC_TRY_RUN([#include <errno.h>
-int main() { setresuid(1,1,1); setresuid(2,2,2); return errno==EPERM?0:1;}],
+main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
if test x"$samba_cv_have_setresuid" = x"yes"; then
AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
@@ -1234,7 +1088,7 @@ fi
AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
AC_TRY_RUN([#include <unistd.h>
#include <errno.h>
-int main() { errno = 0; setresgid(1,1,1); return errno != 0 ? (errno==EPERM ? 0 : 1) : 0;}],
+main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
if test x"$samba_cv_have_setresgid" = x"yes"; then
AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
@@ -1365,7 +1219,7 @@ if test x"$ac_cv_func_execl" = x"no"; then
EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
fi
-AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
+AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64)
AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid)
@@ -1387,7 +1241,6 @@ AC_CHECK_FUNCS(memalign posix_memalign)
AC_CHECK_HEADERS(sys/mman.h)
# setbuffer, shmget, shm_open are needed for smbtorture
AC_CHECK_FUNCS(setbuffer shmget shm_open)
-AC_CHECK_FUNCS(makecontext getcontext setcontext swapcontext)
# Find a method of generating a stack trace
AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
@@ -1520,35 +1373,25 @@ AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
#
#
case "$host_os" in
- linux*-gnu* | gnu* | k*bsd*-gnu)
+ *linux*)
# glibc <= 2.3.2 has a broken getgrouplist
- AC_CACHE_CHECK([for a broken Linux getgrouplist API],
- linux_getgrouplist_ok,
- [
- AC_TRY_RUN([
+ AC_TRY_RUN([
#include <unistd.h>
#include <sys/utsname.h>
-
- int main() {
- /* glibc up to 2.3 has a broken getgrouplist */
+main() {
+ /* glibc up to 2.3 has a broken getgrouplist */
#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
- int libc_major = __GLIBC__;
- int libc_minor = __GLIBC_MINOR__;
+ int libc_major = __GLIBC__;
+ int libc_minor = __GLIBC_MINOR__;
- if (libc_major < 2)
- return 1;
- if ((libc_major == 2) && (libc_minor <= 3))
- return 1;
+ if (libc_major < 2)
+ exit(1);
+ if ((libc_major == 2) && (libc_minor <= 3))
+ exit(1);
#endif
- return 0;
- }
-
- ],
- [linux_getgrouplist_ok=yes],
- [linux_getgrouplist_ok=no],
- [linux_getgrouplist_ok=cross])
- ])
-
+ exit(0);
+}
+], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
if test x"$linux_getgrouplist_ok" = x"yes"; then
AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
fi
@@ -1569,7 +1412,7 @@ if test x$ac_cv_func_stat64 = xno ; then
#include <unistd.h>
#endif
#include <sys/stat.h>
-], [struct stat64 st64; return stat64(".",&st64);], [ac_cv_func_stat64=yes])
+], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
AC_MSG_RESULT([$ac_cv_func_stat64])
if test x$ac_cv_func_stat64 = xyes ; then
AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
@@ -1583,7 +1426,7 @@ if test x$ac_cv_func_lstat64 = xno ; then
#include <unistd.h>
#endif
#include <sys/stat.h>
-], [struct stat64 st64; return lstat64(".",&st64);], [ac_cv_func_lstat64=yes])
+], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
AC_MSG_RESULT([$ac_cv_func_lstat64])
if test x$ac_cv_func_lstat64 = xyes ; then
AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
@@ -1597,7 +1440,7 @@ if test x$ac_cv_func_fstat64 = xno ; then
#include <unistd.h>
#endif
#include <sys/stat.h>
-], [struct stat64 st64; return fstat64(0,&st64);], [ac_cv_func_fstat64=yes])
+], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
AC_MSG_RESULT([$ac_cv_func_fstat64])
if test x$ac_cv_func_fstat64 = xyes ; then
AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
@@ -1748,6 +1591,14 @@ case "$host_os" in
esac
########################################################
+# Check if attropen() is present if this is Solaris
+case "$host_os" in
+ *solaris*)
+ AC_CHECK_FUNCS(attropen)
+ ;;
+esac
+
+########################################################
# Do xattr functions take additional options like on Darwin?
if test x"$ac_cv_func_getxattr" = x"yes" ; then
AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
@@ -1812,54 +1663,26 @@ EOF
fi
fi
-#Check if we can enable relro as well
-if test x"${samba_cv_fpie}" = x"yes"
-then
- AC_CACHE_CHECK(for relro, samba_cv_fpie_relro,
- [
- cat > conftest.c <<EOF
-int foo;
-main () { return 0;}
-EOF
- if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
- then
- samba_cv_fpie_relro=yes
- else
- samba_cv_fpie_relro=no
- fi
- rm -f conftest*
- ])
- if test x"${samba_cv_fpie_relro}" = x"yes"
- then
- PIE_LDFLAGS="-pie -Wl,-z,relro"
- fi
-fi
-
# Assume non-shared by default and override below
BLDSHARED="false"
# these are the defaults, good for lots of systems
HOST_OS="$host_os"
LDSHFLAGS="-shared"
-MODULE_EXPORTS=""
SONAMEFLAG="#"
SHLD="\${CC} \${CFLAGS}"
PICFLAG="${PIE_CFLAGS}"
SHLIBEXT="so"
-DSO_EXPORTS=""
# this bit needs to be modified for each OS that supports share libs
# You need to specify how to create a shared library and
-# how to compile C code to produce PIC object files
+ # how to compile C code to produce PIC object files
-AC_MSG_CHECKING([ability to build shared libraries])
+ AC_MSG_CHECKING([ability to build shared libraries])
-# and these are for particular systems
-case "$host_os" in
- linux*-gnu* | gnu* | k*bsd*-gnu)
- case "$host_os" in
- linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
- esac
+ # and these are for particular systems
+ case "$host_os" in
+ *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
BLDSHARED="true"
if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
@@ -1957,11 +1780,10 @@ case "$host_os" in
if test "${GCC}" = "yes"; then
PICFLAG="-fPIC"
else
- PICFLAG="+z +ESnolit"
+ PICFLAG="+z"
fi
if test "$host_cpu" = "ia64"; then
SHLIBEXT="so"
- PICFLAG="+z"
DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
else
SHLIBEXT="sl"
@@ -2025,30 +1847,20 @@ case "$host_os" in
*darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
BLDSHARED="true"
LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
- MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/modules/exports.darwin"
SHLIBEXT="dylib"
- # Since gcc doesn't fail on unrecognised options, the
- # PIE test incorrectly succeeds. Darwin gcc does not
- # actually support the PIE stuff.
- PIE_LDFLAGS=
- PIE_CFLAGS=
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
;;
*)
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
;;
-esac
+ esac
if test "$enable_shared" != "yes"; then
BLDSHARED=false
fi
-if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
- DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
-fi
-
-AC_MSG_RESULT($BLDSHARED)
+ AC_MSG_RESULT($BLDSHARED)
AC_MSG_CHECKING([LDFLAGS])
AC_MSG_RESULT([$LDFLAGS])
@@ -2111,7 +1923,7 @@ AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
AC_TRY_RUN([#include <stdio.h>
-int main() { long long x = 1000000; x *= x; return ((x/1000000) == 1000000)? 0: 1; }],
+main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
if test x"$samba_cv_have_longlong" = x"yes"; then
AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
@@ -2143,7 +1955,7 @@ fi
AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
AC_TRY_RUN([#include <stdio.h>
#include <sys/stat.h>
-int main() { return (sizeof(off_t) == 8) ? 0 : 1; }],
+main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
@@ -2156,7 +1968,7 @@ AC_TRY_RUN([
#endif
#include <stdio.h>
#include <sys/stat.h>
-int main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
+main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
@@ -2169,7 +1981,7 @@ AC_TRY_RUN([
#endif
#include <stdio.h>
#include <sys/stat.h>
-int main() { return (sizeof(ino_t) == 8) ? 0 : 1; }],
+main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
@@ -2182,7 +1994,7 @@ AC_TRY_RUN([
#endif
#include <stdio.h>
#include <sys/stat.h>
-int main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
+main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
@@ -2195,7 +2007,7 @@ AC_TRY_RUN([
#endif
#include <stdio.h>
#include <sys/stat.h>
-int main() { return (sizeof(dev_t) == 8) ? 0 : 1; }],
+main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
@@ -2208,7 +2020,7 @@ AC_TRY_RUN([
#endif
#include <stdio.h>
#include <sys/stat.h>
-int main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
+main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
@@ -2246,7 +2058,7 @@ AC_TRY_RUN([
#include <unistd.h>
#endif
#include <sys/types.h>
-int main() { dev_t dev; int i = major(dev); return 0; }],
+main() { dev_t dev; int i = major(dev); return 0; }],
samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
@@ -2258,7 +2070,7 @@ AC_TRY_RUN([
#include <unistd.h>
#endif
#include <sys/types.h>
-int main() { dev_t dev; int i = minor(dev); return 0; }],
+main() { dev_t dev; int i = minor(dev); return 0; }],
samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
@@ -2270,7 +2082,7 @@ AC_TRY_RUN([
#include <unistd.h>
#endif
#include <sys/types.h>
-int main() { dev_t dev = makedev(1,2); return 0; }],
+main() { dev_t dev = makedev(1,2); return 0; }],
samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
@@ -2278,7 +2090,7 @@ fi
AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
AC_TRY_RUN([#include <stdio.h>
-int main() { char c; c=250; return (c > 0)?0:1; }],
+main() { char c; c=250; exit((c > 0)?0:1); }],
samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
@@ -2329,12 +2141,12 @@ if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
AC_LIBTESTFUNC(rt, clock_gettime,
[
- AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
- [Whether clock_gettime is available])
- SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
- SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
- SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
- ])
+ AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
+ [Whether clock_gettime is available])
+ SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
+ SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
+ SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
+ ])
fi
@@ -2368,18 +2180,18 @@ void foo(const char *format, ...) {
va_start(ap, format);
len = vsnprintf(buf, 0, format, ap);
va_end(ap);
- if (len != 5) return 1;
+ if (len != 5) exit(1);
va_start(ap, format);
len = vsnprintf(0, 0, format, ap);
va_end(ap);
- if (len != 5) return 1;
+ if (len != 5) exit(1);
- if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) return 1;
+ if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
- return 0;
+ exit(0);
}
-int main() { foo("hello"); }
+main() { foo("hello"); }
],
samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
@@ -2389,9 +2201,9 @@ fi
AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
AC_TRY_RUN([#include <sys/types.h>
#include <dirent.h>
-int main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
+main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
-di->d_name[0] == 0) return 0; return 1;} ],
+di->d_name[0] == 0) exit(0); exit(1);} ],
samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
@@ -2400,7 +2212,7 @@ fi
AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
AC_TRY_COMPILE([#include <sys/types.h>
#include <utime.h>],
-[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);],
+[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
@@ -2530,7 +2342,8 @@ fi
# end utmp details
-ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
+ICONV_LOCATION=standard
+LOOK_DIRS="/usr /usr/local /sw /opt"
AC_ARG_WITH(libiconv,
[ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
[
@@ -2539,69 +2352,62 @@ AC_ARG_WITH(libiconv,
else
if test "$withval" != "yes" ; then
ICONV_PATH_SPEC=yes
- ICONV_LOOK_DIRS="$withval"
+ LOOK_DIRS="$withval"
fi
fi
])
-for i in $ICONV_LOOK_DIRS ; do
-
- save_LIBS="$LIBS"
- save_LDFLAGS="$LDFLAGS"
- save_CPPFLAGS="$CPPFLAGS"
-
- iconv_current_LIBS=""
- iconv_current_LDFLAGS=""
- iconv_current_CPPFLAGS=""
-
+for i in $LOOK_DIRS ; do
+ save_LIBS=$LIBS
+ save_LDFLAGS=$LDFLAGS
+ save_CPPFLAGS=$CPPFLAGS
ICONV_FOUND="no"
unset libext
-
- # This is here to handle -withval stuff for --with-libiconv
- # Perhaps we should always add a -L
- CPPFLAGS="$save_CPPFLAGS -I$i/include"
-
- # Check lib and lib32 library variants to cater for IRIX ABI-specific
- # installation paths. This gets a little tricky since we might have iconv
- # in both libiconv and in libc. In this case the jm_ICONV test will always
- # succeed when the header is found. To counter this, make sure the
- # library directory is there and check the ABI directory first (which
- # should be harmless on other systems.
- # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
+ CPPFLAGS="$CPPFLAGS -I$i/include"
+dnl This is here to handle -withval stuff for --with-libiconv
+dnl Perhaps we should always add a -L
+
+dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
+dnl installation paths. This gets a little tricky since we might have iconv
+dnl in both libiconv and in libc. In this case the jm_ICONV test will always
+dnl succeed when the header is found. To counter this, make sure the
+dnl library directory is there and check the ABI directory first (which
+dnl should be harmless on other systems.
+dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
for l in "lib32" "lib" "lib/hpux32"; do
if test -d "$i/$l" ; then
LDFLAGS="$save_LDFLAGS -L$i/$l"
- LIBS=
- export LDFLAGS LIBS CPPFLAGS
- # Try to find iconv(3)
+ LIBS=
+ export LDFLAGS LIBS CPPFLAGS
+dnl Try to find iconv(3)
jm_ICONV($i/$l)
if test x"$ICONV_FOUND" = "xyes" ; then
- libext="$l"
- break
- fi
+ libext="$l"
+ break;
+ fi
fi
done
if test x"$ICONV_FOUND" = "xyes" ; then
- iconv_current_LDFLAGS="-L$i/$libext"
- iconv_current_CPPFLAGS="-I$i/include"
-
+ LDFLAGS=$save_LDFLAGS
+ LIB_ADD_DIR(LDFLAGS, "$i/$libext")
+ CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
+ LIBS="$save_LIBS"
+ ICONV_LOCATION=$i
+ export LDFLAGS LIBS CPPFLAGS
+dnl Now, check for a working iconv ... we want to do it here because
+dnl there might be a working iconv further down the list of LOOK_DIRS
+
+ ############
+ # check for iconv in libc
+ ic_save_LIBS="$LIBS"
+ if test x"$ICONV_PATH_SPEC" = "xyes" ; then
+ LIBS="$LIBS -L$ICONV_LOCATION/$libext"
+ fi
if test x"$jm_cv_lib_iconv" != x; then
- iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
- else
- # We found iconv in libc.
- iconv_current_LIBS=""
+ LIBS="$LIBS -l$jm_cv_lib_iconv"
fi
-
- fi
-
- if test x"$ICONV_FOUND" = "xyes" ; then
-
- LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
- CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
- LIBS="$save_LIBS $iconv_current_LIBS"
- export LDFLAGS LIBS CPPFLAGS
-
+dnl AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
default_dos_charset=no
default_display_charset=no
default_unix_charset=no
@@ -2609,30 +2415,28 @@ for i in $ICONV_LOOK_DIRS ; do
# check for default dos charset name
for j in CP850 IBM850 ; do
rjs_CHARSET($j)
- default_dos_charset="$ICONV_CHARSET"
- if test x"$default_dos_charset" = x"$j"; then
+ if test x"$ICONV_CHARSET" = x"$j"; then
+ default_dos_charset="\"$j\""
break
fi
done
-
# check for default display charset name
for j in ASCII 646 ; do
rjs_CHARSET($j)
- default_display_charset="$ICONV_CHARSET"
- if test x"$default_display_charset" = x"$j"; then
+ if test x"$ICONV_CHARSET" = x"$j"; then
+ default_display_charset="\"$j\""
break
fi
done
-
# check for default unix charset name
for j in UTF-8 UTF8 ; do
rjs_CHARSET($j)
- default_unix_charset="$ICONV_CHARSET"
- if test x"$default_unix_charset" = x"$j"; then
+ if test x"$ICONV_CHARSET" = x"$j"; then
+ default_unix_charset="\"$j\""
break
fi
done
-
+
if test "$default_dos_charset" != "no" -a \
"$default_dos_charset" != "cross" -a \
"$default_display_charset" != "no" -a \
@@ -2641,63 +2445,38 @@ for i in $ICONV_LOOK_DIRS ; do
"$default_unix_charset" != "cross"
then
samba_cv_HAVE_NATIVE_ICONV=yes
- else
- if test "$default_dos_charset" = "cross" -o \
+ else if test "$default_dos_charset" = "cross" -o \
"$default_display_charset" = "cross" -o \
"$default_unix_charset" = "cross"
- then
- samba_cv_HAVE_NATIVE_ICONV=cross
- else
- samba_cv_HAVE_NATIVE_ICONV=no
- fi
+ then
+ samba_cv_HAVE_NATIVE_ICONV=cross
+ else
+ samba_cv_HAVE_NATIVE_ICONV=no
fi
-
- # At this point, we have a libiconv candidate. We know that
- # we have the right headers and libraries, but we don't know
- # whether it does the conversions we want. We can't test this
- # because we are cross-compiling. This is not necessarily a big
- # deal, since we can't guarantee that the results we get now will
- # match the results we get at runtime anyway.
- if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
- default_dos_charset="CP850"
- default_display_charset="ASCII"
- default_unix_charset="UTF-8"
- samba_cv_HAVE_NATIVE_ICONV=yes
- AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
- AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
fi
-
- if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
-
- CPPFLAGS=$save_CPPFLAGS
- LDFLAGS=$save_LDFLAGS
- LIBS=$save_LIBS
-
- if test x"$iconv_current_LIBS" != x; then
- LIBS="$LIBS $iconv_current_LIBS"
- fi
-
- # Add the flags we need to CPPFLAGS and LDFLAGS
- CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
- LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
-
- # Turn the #defines into string literals
- default_dos_charset="\"$default_dos_charset\""
- default_display_charset="\"$default_display_charset\""
- default_unix_charset="\"$default_unix_charset\""
-
- AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
- AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
- AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
- AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
-
+dnl ])
+
+ LIBS="$ic_save_LIBS"
+ if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+ if test x"$jm_cv_lib_iconv" != x; then
+ LIBS="$LIBS -l$jm_cv_lib_iconv"
+ fi
+ dnl Add the flags we need to CPPFLAGS and LDFLAGS
+ CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
+ LIB_ADD_DIR(LDFLAGS, "$i/$libext")
+ export CPPFLAGS
+ AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
+ AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
+ AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
+ AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
break
fi
-
- # We didn't find a working iconv, so keep going
+dnl We didn't find a working iconv, so keep going
fi
-
- # We only need to clean these up here for the next pass through the loop
+dnl We only need to clean these up here for the next pass through the loop
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
LIBS=$save_LIBS
@@ -2722,7 +2501,7 @@ AC_TRY_RUN([
#ifndef F_GETLEASE
#define F_GETLEASE 1025
#endif
-int main() {
+main() {
int fd = open("/dev/null", O_RDONLY);
return fcntl(fd, F_GETLEASE, 0) == -1;
}
@@ -2740,8 +2519,8 @@ AC_TRY_RUN([
#ifndef F_NOTIFY
#define F_NOTIFY 1026
#endif
-int main() {
- return fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0;
+main() {
+ exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
}
],
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
@@ -2818,8 +2597,8 @@ AC_TRY_RUN([
#define LOCK_MAND 32
#define LOCK_READ 64
#endif
-int main() {
- return flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0;
+main() {
+ exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
}
],
samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
@@ -2855,15 +2634,15 @@ if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/capability.h>
-int main() {
+main() {
cap_t cap;
cap_value_t vals[1];
if (!(cap = cap_get_proc()))
- return 1;
+ exit(1);
vals[0] = CAP_CHOWN;
cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
cap_set_proc(cap);
- return 0;
+ exit(0);
}],
samba_cv_HAVE_POSIX_CAPABILITIES=yes,
samba_cv_HAVE_POSIX_CAPABILITIES=no,
@@ -2985,15 +2764,15 @@ AC_TRY_RUN([#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
-int main() {
+main() {
struct stat st;
char tpl[20]="/tmp/test.XXXXXX";
int fd = mkstemp(tpl);
- if (fd == -1) return 1;
+ if (fd == -1) exit(1);
unlink(tpl);
- if (fstat(fd, &st) != 0) return 1;
- if ((st.st_mode & 0777) != 0600) return 1;
- return 0;
+ if (fstat(fd, &st) != 0) exit(1);
+ if ((st.st_mode & 0777) != 0600) exit(1);
+ exit(0);
}],
samba_cv_HAVE_SECURE_MKSTEMP=yes,
samba_cv_HAVE_SECURE_MKSTEMP=no,
@@ -3003,12 +2782,7 @@ if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
fi
AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
- AC_TRY_RUN([
-#include "${srcdir-.}/lib/replace/test/os2_delete.c"
-int main(void) {
- return test_readdir_os2_delete();
-}
-],
+ AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
[samba_cv_HAVE_BROKEN_READDIR=no],
[samba_cv_HAVE_BROKEN_READDIR=yes],
[samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
@@ -3017,10 +2791,7 @@ if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
AC_TRY_RUN([
#include "${srcdir-.}/lib/repdir.c"
-#include "${srcdir-.}/lib/replace/test/os2_delete.c"
-int main(void) {
- return test_readdir_os2_delete();
-],
+#include "${srcdir-.}/tests/os2_delete.c"],
samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
fi
@@ -3138,21 +2909,6 @@ if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
fi
fi
-AC_CACHE_CHECK([for the Darwin initgroups system call],
- samba_cv_DARWIN_INITGROUPS,
- AC_TRY_LINK([
-#include <sys/syscall.h>
-#include <unistd.h>
- ],
- [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
- samba_cv_DARWIN_INITGROUPS=yes,
- samba_cv_DARWIN_INITGROUPS=no)
-)
-
-if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
- AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
- [Whether to use the Darwin-specific initgroups system call])
-fi
AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
@@ -3196,11 +2952,11 @@ dnl
#ifdef HAVE_SYS_FCNTL_H
#include <sys/fcntl.h>
#endif
-int main() { struct flock64 fl64;
+main() { struct flock64 fl64;
#if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
-return 0;
+exit(0);
#else
-return 1;
+exit(1);
#endif
}],
samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
@@ -3281,11 +3037,10 @@ fi
AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
AC_TRY_RUN([
#include <stdio.h>
-#include <stdlib.h>
#include <limits.h>
-int main() {
+main() {
char *newpath = realpath("/tmp", NULL);
- return (newpath != NULL) ? 0 : 1;
+ exit ((newpath != NULL) ? 0 : 1);
}
],
samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
@@ -3508,12 +3263,6 @@ if test x"$with_ldap_support" != x"no"; then
default_shared_modules="$default_shared_modules";
SMBLDAP="lib/smbldap.o"
SMBLDAPUTIL="lib/smbldap_util.o"
- if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
- AC_MSG_WARN(Disabling ldb_ldap support (requires ldap_initialize))
- else
- AC_DEFINE(HAVE_LDB_LDAP,1,[Whether ldb_ldap is available])
- LDBLDAP="lib/ldb/ldb_ldap/ldb_ldap.o"
- fi
with_ldap_support=yes
AC_MSG_CHECKING(whether LDAP support is used)
AC_MSG_RESULT(yes)
@@ -3807,8 +3556,6 @@ if test x"$with_ads_support" != x"no"; then
AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
- AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
- AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
LIBS="$KRB5_LIBS $LIBS"
@@ -4129,7 +3876,7 @@ if test x"$with_ads_support" != x"no"; then
samba_cv_HAVE_WRFILE_KEYTAB,[
AC_TRY_RUN([
#include<krb5.h>
- int main()
+ main()
{
krb5_context context;
krb5_keytab keytab;
@@ -4185,45 +3932,6 @@ if test x"$with_ads_support" != x"no"; then
[whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
fi
- if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
- AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
- smb_krb5_enctype_to_string_takes_krb5_context_arg,[
- AC_TRY_RUN_STRICT([
- #include <krb5.h>
- int main(void) {
- krb5_context context = NULL;
- char *str = NULL;
- krb5_enctype_to_string(context, 1, &str);
- if (str) free (str);
- return 0;
- }
- ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
- smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
- smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
-
- if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
- AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
- [whether krb5_enctype_to_string takes krb5_context argument])
- fi
-
- AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
- smb_krb5_enctype_to_string_takes_size_t_arg,[
- AC_TRY_RUN_STRICT([
- #include <krb5.h>
- int main(void) {
- char buf[256];
- krb5_enctype_to_string(1, buf, 256);
- return 0;
- }
- ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
- smb_krb5_enctype_to_string_takes_size_t_arg=yes,
- smb_krb5_enctype_to_string_takes_size_t_arg=no)])
-
- if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
- AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
- [whether krb5_enctype_to_string takes size_t argument])
- fi
- fi
#
#
@@ -4467,11 +4175,7 @@ AC_ARG_WITH(cifsmount,
#################################################
-# Check for a PAM clear-text auth, accounts, password
-# and session support. Most PAM implementations keep their
-# headers in /usr/include/security. Darwin keeps its in
-# /usr/include/pam.
-
+# check for a PAM clear-text auth, accounts, password and session support
with_pam_for_crypt=no
try_pam=no
AC_MSG_CHECKING(whether to try PAM support)
@@ -4491,13 +4195,10 @@ if test x"${try_pam}" != x"no";then
use_pam=yes
create_pam_modules=yes
- # Most systems have PAM headers in /usr/include/security, but Darwin
- # has them in /usr/include/pam.
- AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
- if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
- x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
+ AC_CHECK_HEADERS(security/pam_appl.h)
+ if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then
if test x"${try_pam}" = x"yes";then
- AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
+ AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found])
fi
use_pam=no
create_pam_modules=no
@@ -4512,34 +4213,29 @@ if test x"${try_pam}" != x"no";then
create_pam_modules=no
fi
- AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
+ AC_CHECK_HEADERS(security/pam_modules.h,,,[[
#if HAVE_SECURITY_PAM_APPL_H
#include <security/pam_appl.h>
#endif
- #if HAVE_PAM_PAM_APPL_H
- #include <pam/pam_appl.h>
- #endif
]])
- if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
- x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
+ if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
if test x"${try_pam}" = x"yes";then
- AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
- fi
+ AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
+ fi
create_pam_modules=no
- fi
+ fi
if test x"$use_pam" = x"yes"; then
- AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
+ AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
- with_pam_for_crypt=yes
+ with_pam_for_crypt=yes
if test x"$create_pam_modules" = x"yes"; then
AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
# this checks are optional,
# we don't care about the results here
AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
- AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
else
AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
@@ -5012,12 +4708,12 @@ LIBMSRPC_SHARED=
LIBMSRPC=
AC_MSG_CHECKING(whether to build the libmsrpc shared library)
AC_ARG_WITH(libmsrpc,
-[ --with-libmsrpc Build the libmsrpc shared library (default=no unmaintained)],
+[ --with-libmsrpc Build the libmsrpc shared library (default=yes if shared libs supported)],
[ case "$withval" in
- *)
+ no)
AC_MSG_RESULT(no)
;;
- yes)
+ *)
if test $BLDSHARED = true; then
LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
LIBMSRPC=libmsrpc
@@ -5032,7 +4728,22 @@ AC_ARG_WITH(libmsrpc,
INSTALL_LIBMSRPC=installlibmsrpc
UNINSTALL_LIBMSRPC=uninstalllibmsrpc
;;
- esac ]
+ esac ],
+[
+# if unspecified, default is to built it if possible.
+ if test $BLDSHARED = true; then
+ LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
+ LIBMSRPC=libmsrpc
+ AC_MSG_RESULT(yes)
+ else
+ enable_static=yes
+ AC_MSG_RESULT(no shared library support -- will supply static library)
+ fi
+ if test $enable_static = yes; then
+ LIBMSRPC=libmsrpc
+ fi]
+ INSTALL_LIBMSRPC=installlibmsrpc
+ UNINSTALL_LIBMSRPC=uninstalllibmsrpc
)
@@ -5044,12 +4755,12 @@ LIBADDNS_SHARED=
LIBADDNS=
AC_MSG_CHECKING(whether to build the libaddns shared library)
AC_ARG_WITH(libaddns,
-[ --with-libaddns Build the libaddns shared library (default=no undefined API)],
+[ --with-libaddns Build the libaddns shared library (default=yes if shared libs supported)],
[ case "$withval" in
- *)
+ no)
AC_MSG_RESULT(no)
;;
- yes)
+ *)
if test $BLDSHARED = true; then
LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
LIBADDNS=libaddns
@@ -5064,7 +4775,22 @@ AC_ARG_WITH(libaddns,
INSTALL_LIBADDNS=installlibaddns
UNINSTALL_LIBADDNS=uninstalllibaddns
;;
- esac ]
+ esac ],
+[
+# if unspecified, default is to built it if possible.
+ if test $BLDSHARED = true; then
+ LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
+ LIBADDNS=libaddns
+ AC_MSG_RESULT(yes)
+ else
+ enable_static=yes
+ AC_MSG_RESULT(no shared library support -- will supply static library)
+ fi
+ if test $enable_static = yes; then
+ LIBADDNS=libaddns
+ fi]
+ INSTALL_LIBADDNS=installlibaddns
+ UNINSTALL_LIBADDNS=uninstalllibaddns
)
#################################################
@@ -5173,7 +4899,7 @@ if test $space = no; then
main ()
{
struct statvfs64 fsd;
- return statvfs64 (".", &fsd);
+ exit (statvfs64 (".", &fsd));
}],
fu_cv_sys_stat_statvfs64=yes,
fu_cv_sys_stat_statvfs64=no,
@@ -5226,7 +4952,7 @@ if test $space = no; then
{
struct statfs fsd;
fsd.f_fsize = 0;
- return statfs (".", &fsd, sizeof (struct statfs));
+ exit (statfs (".", &fsd, sizeof (struct statfs)));
}],
fu_cv_sys_stat_statfs3_osf1=yes,
fu_cv_sys_stat_statfs3_osf1=no,
@@ -5257,7 +4983,7 @@ member (AIX, 4.3BSD)])
{
struct statfs fsd;
fsd.f_bsize = 0;
- return statfs (".", &fsd);
+ exit (statfs (".", &fsd));
}],
fu_cv_sys_stat_statfs2_bsize=yes,
fu_cv_sys_stat_statfs2_bsize=no,
@@ -5278,7 +5004,7 @@ if test $space = no; then
main ()
{
struct statfs fsd;
- return statfs (".", &fsd, sizeof fsd, 0);
+ exit (statfs (".", &fsd, sizeof fsd, 0));
}],
fu_cv_sys_stat_statfs4=yes,
fu_cv_sys_stat_statfs4=no,
@@ -5306,7 +5032,7 @@ member (4.4BSD and NetBSD)])
{
struct statfs fsd;
fsd.f_fsize = 0;
- return statfs (".", &fsd);
+ exit (statfs (".", &fsd));
}],
fu_cv_sys_stat_statfs2_fsize=yes,
fu_cv_sys_stat_statfs2_fsize=no,
@@ -5337,7 +5063,7 @@ if test $space = no; then
struct fs_data fsd;
/* Ultrix's statfs returns 1 for success,
0 for not mounted, -1 for failure. */
- return statfs (".", &fsd) != 1;
+ exit (statfs (".", &fsd) != 1);
}],
fu_cv_sys_stat_fs_data=yes,
fu_cv_sys_stat_fs_data=no,
@@ -5391,71 +5117,55 @@ fi
AC_MSG_CHECKING(whether to support ACLs)
AC_ARG_WITH(acl-support,
-[ --with-acl-support Include ACL support (default=auto)],
+[ --with-acl-support Include ACL support (default=no)],
[ case "$withval" in
- yes|no)
- with_acl_support="$withval"
- ;;
- esac ])
-
-if test x"$with_acl_support" = x ; then
- with_acl_support="auto"
-fi
-
-AC_MSG_RESULT($with_acl_support)
+ yes)
-if test x"$with_acl_support" = x"no"; then
- AC_MSG_RESULT(Disabling ACL support)
- AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
-else
- AC_MSG_NOTICE(checking whether ACL support is available:)
case "$host_os" in
*sysv5*)
- AC_MSG_NOTICE(Using UnixWare ACLs)
+ AC_MSG_RESULT(Using UnixWare ACLs)
AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
default_static_modules="$default_static_modules vfs_solarisacl"
;;
*solaris*)
- AC_MSG_NOTICE(Using solaris ACLs)
+ AC_MSG_RESULT(Using solaris ACLs)
AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
ACL_LIBS="$ACL_LIBS -lsec"
default_static_modules="$default_static_modules vfs_solarisacl"
;;
*hpux*)
- AC_MSG_NOTICE(Using HPUX ACLs)
+ AC_MSG_RESULT(Using HPUX ACLs)
AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
default_static_modules="$default_static_modules vfs_hpuxacl"
;;
*irix*)
- AC_MSG_NOTICE(Using IRIX ACLs)
+ AC_MSG_RESULT(Using IRIX ACLs)
AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
default_static_modules="$default_static_modules vfs_irixacl"
;;
*aix*)
- AC_MSG_NOTICE(Using AIX ACLs)
+ AC_MSG_RESULT(Using AIX ACLs)
AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
default_static_modules="$default_static_modules vfs_aixacl"
;;
*osf*)
- AC_MSG_NOTICE(Using Tru64 ACLs)
+ AC_MSG_RESULT(Using Tru64 ACLs)
AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
ACL_LIBS="$ACL_LIBS -lpacl"
default_static_modules="$default_static_modules vfs_tru64acl"
;;
- *darwin*)
- AC_MSG_NOTICE(ACLs on Darwin currently not supported)
- AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
+ *freebsd[[5-9]]*)
+ AC_MSG_RESULT(Using FreeBSD posix ACLs)
+ AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
+ AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
+ default_static_modules="$default_static_modules vfs_posixacl"
;;
- *)
- AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
- case "$host_os" in
- *linux*)
- AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
- ;;
- esac
- AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
+ *linux*)
+ AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
+ AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
+ AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
acl_LIBS=$LIBS
- LIBS="$LIBS $ACL_LIBS"
+ LIBS="$LIBS -lacl"
AC_TRY_LINK([
#include <sys/types.h>
#include <sys/acl.h>
@@ -5470,11 +5180,11 @@ else
LIBS=$acl_LIBS
])
if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
- AC_MSG_NOTICE(Using posix ACLs)
+ AC_MSG_RESULT(Using posix ACLs)
AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
acl_LIBS=$LIBS
- LIBS="$LIBS $ACL_LIBS"
+ LIBS="$LIBS -lacl"
AC_TRY_LINK([
#include <sys/types.h>
#include <sys/acl.h>
@@ -5490,16 +5200,63 @@ else
if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
fi
- default_static_modules="$default_static_modules vfs_posixacl"
- else
- AC_MSG_NOTICE(ACL support is not avaliable)
- AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
fi
- ;;
+ ;;
+ *)
+ AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
+ AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
+ acl_LIBS=$LIBS
+ LIBS="$LIBS -lacl"
+ AC_TRY_LINK([
+ #include <sys/types.h>
+ #include <sys/acl.h>
+ ],[
+ acl_t acl;
+ int entry_id;
+ acl_entry_t *entry_p;
+ return acl_get_entry( acl, entry_id, entry_p);
+ ],
+ [samba_cv_HAVE_POSIX_ACLS=yes],
+ [samba_cv_HAVE_POSIX_ACLS=no])
+ LIBS=$acl_LIBS
+ ])
+ if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
+ AC_MSG_RESULT(Using posix ACLs)
+ AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
+ AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
+ acl_LIBS=$LIBS
+ LIBS="$LIBS -lacl"
+ AC_TRY_LINK([
+ #include <sys/types.h>
+ #include <sys/acl.h>
+ ],[
+ acl_permset_t permset_d;
+ acl_perm_t perm;
+ return acl_get_perm_np( permset_d, perm);
+ ],
+ [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
+ [samba_cv_HAVE_ACL_GET_PERM_NP=no])
+ LIBS=$acl_LIBS
+ ])
+ if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
+ AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
+ fi
+ fi
+ ;;
esac
-fi # with_acl_support
-
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
+ ;;
+ esac ],
+ AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
+ AC_MSG_RESULT(no)
+)
+if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
+ default_static_modules="$default_static_modules vfs_posixacl"
+fi
#################################################
# check for AIO support
@@ -5653,7 +5410,7 @@ AC_ARG_WITH(sendfile-support,
AC_MSG_RESULT(yes);
case "$host_os" in
- linux*-gnu* | gnu* | k*bsd*-gnu)
+ *linux*)
AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
AC_TRY_LINK([#include <sys/sendfile.h>],
[\
@@ -5902,7 +5659,6 @@ samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
AC_CACHE_CHECK([for Linux readahead],
samba_cv_HAVE_LINUX_READAHEAD,[
-
AC_TRY_LINK([
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
@@ -5917,8 +5673,6 @@ if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
[Whether Linux readahead is available])
fi
-AC_HAVE_DECL(readahead, [#include <fcntl.h>])
-
############################################
# See if we have the posix_fadvise syscall.
@@ -5961,11 +5715,11 @@ NSSSONAMEVERSIONSUFFIX=""
SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT"
case "$host_os" in
- linux*-gnu* | gnu* | k*bsd*-gnu)
+ *linux*)
NSSSONAMEVERSIONSUFFIX=".2"
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
;;
- freebsd5*|*freebsd[[6-9]]*)
+ *freebsd[[5-9]]*)
# FreeBSD winbind client is implemented as a wrapper around
# the Linux version.
NSSSONAMEVERSIONSUFFIX=".1"
@@ -6117,6 +5871,7 @@ if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
fi
+
#################################################
# Check to see if we should use the included popt
@@ -6145,7 +5900,7 @@ if test x"$INCLUDED_POPT" = x"yes"; then
FLAGS1="-I\$(srcdir)/popt"
else
AC_MSG_RESULT(no)
- BUILD_POPT=""
+ BUILD_POPT=""
POPTLIBS="-lpopt"
fi
AC_SUBST(BUILD_POPT)
@@ -6234,7 +5989,7 @@ done
dnl Always built these modules static
MODULE_rpc_spoolss=STATIC
-MODULE_rpc_srvsvc=STATIC
+MODULE_rpc_srv=STATIC
MODULE_idmap_tdb=STATIC
MODULE_idmap_passdb=STATIC
MODULE_idmap_nss=STATIC
@@ -6267,21 +6022,18 @@ SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_reg.$SHLIBEXT", RPC)
SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_svc.$SHLIBEXT", RPC)
SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_unixinfo, \$(RPC_UNIXINFO_OBJ), "bin/librpc_unixinfo.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_epmapper, \$(RPC_EPMAPPER_OBJ), "bin/librpc_epmapper.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
SMB_SUBSYSTEM(RPC,smbd/server.o)
SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
@@ -6335,7 +6087,6 @@ SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", V
SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
-SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
SMB_SUBSYSTEM(VFS,smbd/vfs.o)
@@ -6466,12 +6217,6 @@ AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
AC_MSG_WARN([cannot run when cross-compiling]))
-dnl Merge in developer cflags from now on
-AC_SUBST(DEVELOPER_CFLAGS)
-if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
- CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
-fi
-
builddir=`pwd`
AC_SUBST(builddir)
@@ -6480,7 +6225,7 @@ AC_SUBST(builddir)
SMBD_LIBS="$samba_dmapi_libs"
AC_SUBST(SMBD_LIBS)
-AC_OUTPUT(Makefile library-versions script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
+AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
#################################################
# Print very concise instructions on building/use
diff --git a/source/depcomp b/source/depcomp
deleted file mode 100755
index ca5ea4e1ef9..00000000000
--- a/source/depcomp
+++ /dev/null
@@ -1,584 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2006-10-15.18
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
-# Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
- '')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
- depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
- DEPDIR directory where to store dependencies.
- depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
- libtool Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "depcomp $scriptversion"
- exit $?
- ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
- sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am. Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
- for arg
- do
- case $arg in
- -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
- *) set fnord "$@" "$arg" ;;
- esac
- shift # fnord
- shift # $arg
- done
- "$@"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> $depfile
- echo >> $depfile
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> $depfile
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
- # start of each line; $object doesn't have directory information.
- # Version 6 uses the directory in both cases.
- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
- tmpdepfile="$stripped.u"
- if test "$libtool" = yes; then
- "$@" -Wc,-M
- else
- "$@" -M
- fi
- stat=$?
-
- if test -f "$tmpdepfile"; then :
- else
- stripped=`echo "$stripped" | sed 's,^.*/,,'`
- tmpdepfile="$stripped.u"
- fi
-
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
-
- if test -f "$tmpdepfile"; then
- outname="$stripped.o"
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
-
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp2)
- # The "hp" stanza above does not work with aCC (C++) and HP's ia64
- # compilers, which have integrated preprocessors. The correct option
- # to use with these is +Maked; it writes dependencies to a file named
- # 'foo.d', which lands next to the object file, wherever that
- # happens to be.
- # Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir.libs/$base.d
- "$@" -Wc,+Maked
- else
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir$base.d
- "$@" +Maked
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
- sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile" "$tmpdepfile2"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
- # in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
- "$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # Remove any Libtool call
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
- # X makedepend
- shift
- cleared=no
- for arg in "$@"; do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- # Strip any option that makedepend may not understand. Remove
- # the object too, otherwise makedepend will parse it as a source file.
- -*|$object)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix="`echo $object | sed 's/^.*\././'`"
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o,
- # because we must use -o when running libtool.
- "$@" || exit $?
- IFS=" "
- for arg
- do
- case "$arg" in
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/source/exports/libsmbclient.syms b/source/exports/libsmbclient.syms
deleted file mode 100644
index 3062e34bfdb..00000000000
--- a/source/exports/libsmbclient.syms
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- global: smbc_*;
- local: *;
-};
diff --git a/source/exports/libsmbsharemodes.syms b/source/exports/libsmbsharemodes.syms
deleted file mode 100644
index eb34bfc012a..00000000000
--- a/source/exports/libsmbsharemodes.syms
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- global: *;
-};
diff --git a/source/groupdb/mapping.c b/source/groupdb/mapping.c
index 4d0d01b8987..6520a42f2af 100644
--- a/source/groupdb/mapping.c
+++ b/source/groupdb/mapping.c
@@ -24,37 +24,6 @@
#include "includes.h"
#include "groupdb/mapping.h"
-static const struct mapping_backend *backend;
-
-/*
- initialise a group mapping backend
- */
-static BOOL init_group_mapping(void)
-{
- const char *backend_string;
-
- if (backend != NULL) {
- /* already initialised */
- return True;
- }
-
- /* default to using the ldb backend. This parameter should
- disappear in future versions of Samba3, but for now it
- provides a safety net in case any major problems are
- discovered with ldb after the release */
- backend_string = lp_parm_const_string(-1, "groupdb", "backend", "ldb");
-
- if (strcmp(backend_string, "ldb") == 0) {
- backend = groupdb_ldb_init();
- } else if (strcmp(backend_string, "tdb") == 0) {
- backend = groupdb_tdb_init();
- } else {
- DEBUG(0,("Unknown groupdb backend '%s'\n", backend_string));
- smb_panic("Unknown groupdb backend");
- }
- return backend != NULL;
-}
-
/****************************************************************************
initialise first time the mapping list
****************************************************************************/
@@ -80,6 +49,70 @@ NTSTATUS add_initial_entry(gid_t gid, const char *sid, enum lsa_SidType sid_name
return pdb_add_group_mapping_entry(&map);
}
+/****************************************************************************
+ Map a unix group to a newly created mapping
+****************************************************************************/
+NTSTATUS map_unix_group(const struct group *grp, GROUP_MAP *pmap)
+{
+ NTSTATUS status;
+ GROUP_MAP map;
+ const char *grpname, *dom, *name;
+ uint32 rid;
+
+ if (pdb_getgrgid(&map, grp->gr_gid)) {
+ return NT_STATUS_GROUP_EXISTS;
+ }
+
+ map.gid = grp->gr_gid;
+ grpname = grp->gr_name;
+
+ if (lookup_name(tmp_talloc_ctx(), grpname, LOOKUP_NAME_ISOLATED,
+ &dom, &name, NULL, NULL)) {
+
+ const char *tmp = talloc_asprintf(
+ tmp_talloc_ctx(), "Unix Group %s", grp->gr_name);
+
+ DEBUG(5, ("%s exists as %s\\%s, retrying as \"%s\"\n",
+ grpname, dom, name, tmp));
+ grpname = tmp;
+ }
+
+ if (lookup_name(tmp_talloc_ctx(), grpname, LOOKUP_NAME_ISOLATED,
+ NULL, NULL, NULL, NULL)) {
+ DEBUG(3, ("\"%s\" exists, can't map it\n", grp->gr_name));
+ return NT_STATUS_GROUP_EXISTS;
+ }
+
+ fstrcpy(map.nt_name, grpname);
+
+ if (pdb_rid_algorithm()) {
+ rid = algorithmic_pdb_gid_to_group_rid( grp->gr_gid );
+ } else {
+ if (!pdb_new_rid(&rid)) {
+ DEBUG(3, ("Could not get a new RID for %s\n",
+ grp->gr_name));
+ return NT_STATUS_ACCESS_DENIED;
+ }
+ }
+
+ sid_compose(&map.sid, get_global_sam_sid(), rid);
+ map.sid_name_use = SID_NAME_DOM_GRP;
+ fstrcpy(map.comment, talloc_asprintf(tmp_talloc_ctx(), "Unix Group %s",
+ grp->gr_name));
+
+ status = pdb_add_group_mapping_entry(&map);
+ if (NT_STATUS_IS_OK(status)) {
+ *pmap = map;
+ }
+ return status;
+}
+
+
+
+
+
+
+
static NTSTATUS alias_memberships(const DOM_SID *members, size_t num_members,
DOM_SID **sids, size_t *num)
{
@@ -89,7 +122,7 @@ static NTSTATUS alias_memberships(const DOM_SID *members, size_t num_members,
*sids = NULL;
for (i=0; i<num_members; i++) {
- NTSTATUS status = backend->one_alias_membership(&members[i], sids, num);
+ NTSTATUS status = one_alias_membership(&members[i], sids, num);
if (!NT_STATUS_IS_OK(status))
return status;
}
@@ -146,6 +179,7 @@ BOOL get_domain_group_from_sid(DOM_SID sid, GROUP_MAP *map)
fstrcpy( map->comment, "Ordinary Users" );
sid_copy( &map->sid, &sid );
map->sid_name_use = SID_NAME_DOM_GRP;
+ map->gid = (gid_t)-1;
return True;
}
@@ -335,66 +369,42 @@ int smb_delete_user_group(const char *unix_group, const char *unix_user)
NTSTATUS pdb_default_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
DOM_SID sid)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->get_group_map_from_sid(sid, map) ?
+ return get_group_map_from_sid(sid, map) ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
NTSTATUS pdb_default_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
gid_t gid)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->get_group_map_from_gid(gid, map) ?
+ return get_group_map_from_gid(gid, map) ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
NTSTATUS pdb_default_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
const char *name)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->get_group_map_from_ntname(name, map) ?
+ return get_group_map_from_ntname(name, map) ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
NTSTATUS pdb_default_add_group_mapping_entry(struct pdb_methods *methods,
GROUP_MAP *map)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->add_mapping_entry(map, TDB_INSERT) ?
+ return add_mapping_entry(map, TDB_INSERT) ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
NTSTATUS pdb_default_update_group_mapping_entry(struct pdb_methods *methods,
GROUP_MAP *map)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->add_mapping_entry(map, TDB_REPLACE) ?
+ return add_mapping_entry(map, TDB_REPLACE) ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
NTSTATUS pdb_default_delete_group_mapping_entry(struct pdb_methods *methods,
DOM_SID sid)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->group_map_remove(&sid) ?
+ return group_map_remove(&sid) ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
@@ -403,14 +413,26 @@ NTSTATUS pdb_default_enum_group_mapping(struct pdb_methods *methods,
GROUP_MAP **pp_rmap, size_t *p_num_entries,
BOOL unix_only)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->enum_group_mapping(sid, sid_name_use, pp_rmap, p_num_entries, unix_only) ?
+ return enum_group_mapping(sid, sid_name_use, pp_rmap, p_num_entries, unix_only) ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
+NTSTATUS pdb_default_find_alias(struct pdb_methods *methods,
+ const char *name, DOM_SID *sid)
+{
+ GROUP_MAP map;
+
+ if (!pdb_getgrnam(&map, name))
+ return NT_STATUS_NO_SUCH_ALIAS;
+
+ if ((map.sid_name_use != SID_NAME_WKN_GRP) &&
+ (map.sid_name_use != SID_NAME_ALIAS))
+ return NT_STATUS_OBJECT_TYPE_MISMATCH;
+
+ sid_copy(sid, &map.sid);
+ return NT_STATUS_OK;
+}
+
NTSTATUS pdb_default_create_alias(struct pdb_methods *methods,
const char *name, uint32 *rid)
{
@@ -520,32 +542,20 @@ NTSTATUS pdb_default_set_aliasinfo(struct pdb_methods *methods,
NTSTATUS pdb_default_add_aliasmem(struct pdb_methods *methods,
const DOM_SID *alias, const DOM_SID *member)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->add_aliasmem(alias, member);
+ return add_aliasmem(alias, member);
}
NTSTATUS pdb_default_del_aliasmem(struct pdb_methods *methods,
const DOM_SID *alias, const DOM_SID *member)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->del_aliasmem(alias, member);
+ return del_aliasmem(alias, member);
}
NTSTATUS pdb_default_enum_aliasmem(struct pdb_methods *methods,
const DOM_SID *alias, DOM_SID **pp_members,
size_t *p_num_members)
{
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return backend->enum_aliasmem(alias, pp_members, p_num_members);
+ return enum_aliasmem(alias, pp_members, p_num_members);
}
NTSTATUS pdb_default_alias_memberships(struct pdb_methods *methods,
@@ -560,11 +570,6 @@ NTSTATUS pdb_default_alias_memberships(struct pdb_methods *methods,
size_t i, num_alias_sids;
NTSTATUS result;
- if (!init_group_mapping()) {
- DEBUG(0,("failed to initialize group mapping\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
alias_sids = NULL;
num_alias_sids = 0;
diff --git a/source/groupdb/mapping.h b/source/groupdb/mapping.h
index 29e8ad5ffa3..9daaa7fdd78 100644
--- a/source/groupdb/mapping.h
+++ b/source/groupdb/mapping.h
@@ -10,22 +10,17 @@
*/
#define MEMBEROF_PREFIX "MEMBEROF/"
-/*
- groupdb mapping backend abstraction
- */
-struct mapping_backend {
- BOOL (*init_group_mapping)(void);
- BOOL (*add_mapping_entry)(GROUP_MAP *map, int flag);
- BOOL (*get_group_map_from_sid)(DOM_SID sid, GROUP_MAP *map);
- BOOL (*get_group_map_from_gid)(gid_t gid, GROUP_MAP *map);
- BOOL (*get_group_map_from_ntname)(const char *name, GROUP_MAP *map);
- BOOL (*group_map_remove)(const DOM_SID *sid);
- BOOL (*enum_group_mapping)(const DOM_SID *domsid, enum lsa_SidType sid_name_use,
- GROUP_MAP **pp_rmap,
- size_t *p_num_entries, BOOL unix_only);
- NTSTATUS (*one_alias_membership)(const DOM_SID *member,
- DOM_SID **sids, size_t *num);
- NTSTATUS (*add_aliasmem)(const DOM_SID *alias, const DOM_SID *member);
- NTSTATUS (*del_aliasmem)(const DOM_SID *alias, const DOM_SID *member);
- NTSTATUS (*enum_aliasmem)(const DOM_SID *alias, DOM_SID **sids, size_t *num);
-};
+/* internal prototypes */
+BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
+ size_t *p_num_entries, BOOL unix_only);
+BOOL group_map_remove(const DOM_SID *sid);
+BOOL init_group_mapping(void);
+NTSTATUS one_alias_membership(const DOM_SID *member,
+ DOM_SID **sids, size_t *num);
+BOOL get_group_map_from_sid(DOM_SID sid, GROUP_MAP *map);
+BOOL get_group_map_from_gid(gid_t gid, GROUP_MAP *map);
+BOOL get_group_map_from_ntname(const char *name, GROUP_MAP *map);
+BOOL add_mapping_entry(GROUP_MAP *map, int flag);
+NTSTATUS add_aliasmem(const DOM_SID *alias, const DOM_SID *member);
+NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member);
+NTSTATUS enum_aliasmem(const DOM_SID *alias, DOM_SID **sids, size_t *num);
diff --git a/source/groupdb/mapping_ldb.c b/source/groupdb/mapping_ldb.c
deleted file mode 100644
index 4f3aa185340..00000000000
--- a/source/groupdb/mapping_ldb.c
+++ /dev/null
@@ -1,682 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- *
- * group mapping code on top of ldb
- *
- * Copyright (C) Andrew Tridgell 2006
- *
- * based on tdb group mapping code from groupdb/mapping.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-#include "groupdb/mapping.h"
-#include "lib/ldb/include/includes.h"
-#include "lib/ldb/include/ldb_errors.h"
-
-static struct ldb_context *ldb;
-
-static BOOL mapping_upgrade(const char *tdb_path);
-
-/*
- connect to the group mapping ldb
-*/
-static BOOL init_group_mapping(void)
-{
- BOOL existed;
- const char *init_ldif[] =
- { "dn: @ATTRIBUTES\n" \
- "ntName: CASE_INSENSITIVE\n" \
- "\n",
- "dn: @INDEXLIST\n" \
- "@IDXATTR: gidNumber\n" \
- "@IDXATTR: ntName\n" \
- "@IDXATTR: member\n" };
- const char *db_path, *tdb_path;
- int ret;
- int flags = 0;
-
- if (ldb != NULL) {
- return True;
- }
-
- /* this is needed as Samba3 doesn't have this globally yet */
- ldb_global_init();
-
- db_path = lock_path("group_mapping.ldb");
-
- ldb = ldb_init(NULL);
- if (ldb == NULL) goto failed;
-
- existed = file_exist(db_path, NULL);
-
- if (lp_parm_bool(-1, "groupmap", "nosync", False)) {
- flags |= LDB_FLG_NOSYNC;
- }
-
- if (!lp_use_mmap()) {
- flags |= LDB_FLG_NOMMAP;
- }
-
- ret = ldb_connect(ldb, db_path, flags, NULL);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
-
- if (!existed) {
- /* initialise the ldb with an index */
- struct ldb_ldif *ldif;
- int i;
- for (i=0;i<ARRAY_SIZE(init_ldif);i++) {
- ldif = ldb_ldif_read_string(ldb, &init_ldif[i]);
- if (ldif == NULL) goto failed;
- ret = ldb_add(ldb, ldif->msg);
- talloc_free(ldif);
- if (ret == -1) goto failed;
- }
- }
-
- /* possibly upgrade */
- tdb_path = lock_path("group_mapping.tdb");
- if (file_exist(tdb_path, NULL) && !mapping_upgrade(tdb_path)) {
- unlink(lock_path("group_mapping.ldb"));
- goto failed;
- }
-
- return True;
-
-failed:
- DEBUG(0,("Failed to open group mapping ldb '%s' - '%s'\n",
- db_path, ldb?ldb_errstring(ldb):strerror(errno)));
- talloc_free(ldb);
- ldb = NULL;
- return False;
-}
-
-
-/*
- form the DN for a mapping entry from a SID
- */
-static struct ldb_dn *mapping_dn(TALLOC_CTX *mem_ctx, const DOM_SID *sid)
-{
- fstring string_sid;
- uint32_t rid;
- DOM_SID domsid;
-
- sid_copy(&domsid, sid);
- if (!sid_split_rid(&domsid, &rid)) {
- return NULL;
- }
- if (!sid_to_string(string_sid, &domsid)) {
- return NULL;
- }
- /* we split by domain and rid so we can do a subtree search
- when we only want one domain */
- return ldb_dn_string_compose(mem_ctx, NULL, "rid=%u,domain=%s",
- rid, string_sid);
-}
-
-/*
- add a group mapping entry
- */
-static BOOL add_mapping_entry(GROUP_MAP *map, int flag)
-{
- struct ldb_message *msg;
- int ret, i;
- fstring string_sid;
-
- msg = ldb_msg_new(ldb);
- if (msg == NULL) {
- return False;
- }
-
- msg->dn = mapping_dn(msg, &map->sid);
- if (msg->dn == NULL) {
- goto failed;
- }
-
- if (ldb_msg_add_string(msg, "objectClass", "groupMap") != LDB_SUCCESS ||
- ldb_msg_add_string(msg, "sid",
- sid_to_string(string_sid, &map->sid)) != LDB_SUCCESS ||
- ldb_msg_add_fmt(msg, "gidNumber", "%u", (unsigned)map->gid) != LDB_SUCCESS ||
- ldb_msg_add_fmt(msg, "sidNameUse", "%u", (unsigned)map->sid_name_use) != LDB_SUCCESS ||
- ldb_msg_add_string(msg, "comment", map->comment) != LDB_SUCCESS ||
- ldb_msg_add_string(msg, "ntName", map->nt_name) != LDB_SUCCESS) {
- goto failed;
- }
-
- ret = ldb_add(ldb, msg);
-
- /* if it exists we update it. This is a hangover from the semantics the
- tdb backend had */
- if (ret == LDB_ERR_ENTRY_ALREADY_EXISTS) {
- for (i=0;i<msg->num_elements;i++) {
- msg->elements[i].flags = LDB_FLAG_MOD_REPLACE;
- }
- ret = ldb_modify(ldb, msg);
- }
-
- talloc_free(msg);
-
- return ret == LDB_SUCCESS;
-
-failed:
- talloc_free(msg);
- return False;
-}
-
-/*
- unpack a ldb message into a GROUP_MAP structure
-*/
-static BOOL msg_to_group_map(struct ldb_message *msg, GROUP_MAP *map)
-{
- const char *sidstr;
-
- map->gid = ldb_msg_find_attr_as_int(msg, "gidNumber", -1);
- map->sid_name_use = ldb_msg_find_attr_as_int(msg, "sidNameUse", -1);
- fstrcpy(map->nt_name, ldb_msg_find_attr_as_string(msg, "ntName", NULL));
- fstrcpy(map->comment, ldb_msg_find_attr_as_string(msg, "comment", NULL));
- sidstr = ldb_msg_find_attr_as_string(msg, "sid", NULL);
-
- if (!string_to_sid(&map->sid, sidstr) ||
- map->gid == (gid_t)-1 ||
- map->sid_name_use == (enum lsa_SidType)-1) {
- DEBUG(0,("Unable to unpack group mapping\n"));
- return False;
- }
-
- return True;
-}
-
-/*
- return a group map entry for a given sid
-*/
-static BOOL get_group_map_from_sid(DOM_SID sid, GROUP_MAP *map)
-{
- int ret;
- struct ldb_dn *dn;
- struct ldb_result *res=NULL;
-
- dn = mapping_dn(ldb, &sid);
- if (dn == NULL) goto failed;
-
- ret = ldb_search(ldb, dn, LDB_SCOPE_BASE, NULL, NULL, &res);
- talloc_steal(dn, res);
- if (ret != LDB_SUCCESS || res->count != 1) {
- goto failed;
- }
-
- if (!msg_to_group_map(res->msgs[0], map)) goto failed;
-
- talloc_free(dn);
- return True;
-
-failed:
- talloc_free(dn);
- return False;
-}
-
-/*
- return a group map entry for a given gid
-*/
-static BOOL get_group_map_from_gid(gid_t gid, GROUP_MAP *map)
-{
- int ret;
- char *expr;
- struct ldb_result *res=NULL;
-
- expr = talloc_asprintf(ldb, "(&(gidNumber=%u)(objectClass=groupMap))",
- (unsigned)gid);
- if (expr == NULL) goto failed;
-
- ret = ldb_search(ldb, NULL, LDB_SCOPE_SUBTREE, expr, NULL, &res);
- talloc_steal(expr, res);
- if (ret != LDB_SUCCESS || res->count != 1) goto failed;
-
- if (!msg_to_group_map(res->msgs[0], map)) goto failed;
-
- talloc_free(expr);
- return True;
-
-failed:
- talloc_free(expr);
- return False;
-}
-
-/*
- Return the sid and the type of the unix group.
-*/
-static BOOL get_group_map_from_ntname(const char *name, GROUP_MAP *map)
-{
- int ret;
- char *expr;
- struct ldb_result *res=NULL;
-
- expr = talloc_asprintf(ldb, "(&(ntName=%s)(objectClass=groupMap))", name);
- if (expr == NULL) goto failed;
-
- ret = ldb_search(ldb, NULL, LDB_SCOPE_SUBTREE, expr, NULL, &res);
- talloc_steal(expr, res);
- if (ret != LDB_SUCCESS || res->count != 1) goto failed;
-
- if (!msg_to_group_map(res->msgs[0], map)) goto failed;
-
- talloc_free(expr);
- return True;
-
-failed:
- talloc_free(expr);
- return False;
-}
-
-/*
- Remove a group mapping entry.
-*/
-static BOOL group_map_remove(const DOM_SID *sid)
-{
- struct ldb_dn *dn;
- int ret;
-
- dn = mapping_dn(ldb, sid);
- if (dn == NULL) {
- return False;
- }
- ret = ldb_delete(ldb, dn);
- talloc_free(dn);
-
- return ret == LDB_SUCCESS;
-}
-
-
-/*
- Enumerate the group mappings for a domain
-*/
-static BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_use,
- GROUP_MAP **pp_rmap,
- size_t *p_num_entries, BOOL unix_only)
-{
- int i, ret;
- char *expr;
- fstring name;
- struct ldb_result *res;
- struct ldb_dn *basedn=NULL;
- TALLOC_CTX *tmp_ctx;
-
- tmp_ctx = talloc_new(ldb);
- if (tmp_ctx == NULL) goto failed;
-
- if (sid_name_use == SID_NAME_UNKNOWN) {
- expr = talloc_asprintf(tmp_ctx, "(&(objectClass=groupMap))");
- } else {
- expr = talloc_asprintf(tmp_ctx, "(&(sidNameUse=%u)(objectClass=groupMap))",
- sid_name_use);
- }
- if (expr == NULL) goto failed;
-
- /* we do a subtree search on the domain */
- if (domsid != NULL) {
- sid_to_string(name, domsid);
- basedn = ldb_dn_string_compose(tmp_ctx, NULL, "domain=%s", name);
- if (basedn == NULL) goto failed;
- }
-
- ret = ldb_search(ldb, basedn, LDB_SCOPE_SUBTREE, expr, NULL, &res);
- if (ret != LDB_SUCCESS) goto failed;
-
- (*pp_rmap) = NULL;
- *p_num_entries = 0;
-
- for (i=0;i<res->count;i++) {
- (*pp_rmap) = SMB_REALLOC_ARRAY((*pp_rmap), GROUP_MAP,
- (*p_num_entries)+1);
- if (!(*pp_rmap)) goto failed;
-
- if (!msg_to_group_map(res->msgs[i], &(*pp_rmap)[*p_num_entries])) {
- goto failed;
- }
-
- (*p_num_entries)++;
- }
-
- talloc_free(tmp_ctx);
- return True;
-
-failed:
- talloc_free(tmp_ctx);
- return False;
-}
-
-/*
- This operation happens on session setup, so it should better be fast. We
- store a list of aliases a SID is member of hanging off MEMBEROF/SID.
-*/
-static NTSTATUS one_alias_membership(const DOM_SID *member,
- DOM_SID **sids, size_t *num)
-{
- const char *attrs[] = {
- "sid",
- NULL
- };
- DOM_SID alias;
- char *expr;
- int ret, i;
- struct ldb_result *res=NULL;
- fstring string_sid;
- NTSTATUS status = NT_STATUS_INTERNAL_DB_CORRUPTION;
-
- if (!sid_to_string(string_sid, member)) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- expr = talloc_asprintf(ldb, "(&(member=%s)(objectClass=groupMap))",
- string_sid);
- if (expr == NULL) goto failed;
-
- ret = ldb_search(ldb, NULL, LDB_SCOPE_SUBTREE, expr, attrs, &res);
- talloc_steal(expr, res);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
-
- for (i=0;i<res->count;i++) {
- struct ldb_message_element *el;
- el = ldb_msg_find_element(res->msgs[i], "sid");
- if (el == NULL || el->num_values != 1) {
- status = NT_STATUS_INTERNAL_DB_CORRUPTION;
- goto failed;
- }
- string_to_sid(&alias, (char *)el->values[0].data);
- if (!add_sid_to_array_unique(NULL, &alias, sids, num)) {
- status = NT_STATUS_NO_MEMORY;
- goto failed;
- }
- }
-
- talloc_free(expr);
- return NT_STATUS_OK;
-
-failed:
- talloc_free(expr);
- return status;
-}
-
-/*
- add/remove a member field
-*/
-static NTSTATUS modify_aliasmem(const DOM_SID *alias, const DOM_SID *member,
- int operation)
-{
- fstring string_sid;
- int ret;
- struct ldb_message msg;
- struct ldb_message_element el;
- struct ldb_val val;
- TALLOC_CTX *tmp_ctx;
- GROUP_MAP map;
-
- if (!get_group_map_from_sid(*alias, &map)) {
- sid_to_string(string_sid, alias);
- return NT_STATUS_NO_SUCH_ALIAS;
- }
-
- if ((map.sid_name_use != SID_NAME_ALIAS) &&
- (map.sid_name_use != SID_NAME_WKN_GRP)) {
- DEBUG(0,("sid_name_use=%d\n", map.sid_name_use));
- return NT_STATUS_NO_SUCH_ALIAS;
- }
-
- tmp_ctx = talloc_new(NULL);
- if (tmp_ctx == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
- msg.dn = mapping_dn(tmp_ctx, alias);
- if (msg.dn == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
- msg.num_elements = 1;
- msg.elements = &el;
- el.flags = operation;
- el.name = talloc_strdup(tmp_ctx, "member");
- el.num_values = 1;
- el.values = &val;
- sid_to_string(string_sid, member);
- val.data = (uint8_t *)string_sid;
- val.length = strlen(string_sid);
-
- ret = ldb_modify(ldb, &msg);
- talloc_free(tmp_ctx);
-
- if (ret == LDB_ERR_NO_SUCH_OBJECT) {
- return NT_STATUS_NO_SUCH_ALIAS;
- }
-
- if (operation == LDB_FLAG_MOD_ADD &&
- ret == LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS) {
- return NT_STATUS_MEMBER_IN_ALIAS;
- }
-
- return (ret == LDB_SUCCESS ? NT_STATUS_OK : NT_STATUS_ACCESS_DENIED);
-}
-
-static NTSTATUS add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
-{
- return modify_aliasmem(alias, member, LDB_FLAG_MOD_ADD);
-}
-
-static NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
-{
- return modify_aliasmem(alias, member, LDB_FLAG_MOD_DELETE);
-}
-
-
-/*
- enumerate sids that have the given alias set in member
-*/
-static NTSTATUS enum_aliasmem(const DOM_SID *alias, DOM_SID **sids, size_t *num)
-{
- const char *attrs[] = {
- "member",
- NULL
- };
- int ret, i;
- struct ldb_result *res=NULL;
- struct ldb_dn *dn;
- struct ldb_message_element *el;
-
- *sids = NULL;
- *num = 0;
-
- dn = mapping_dn(ldb, alias);
- if (dn == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
- ret = ldb_search(ldb, dn, LDB_SCOPE_BASE, NULL, attrs, &res);
- talloc_steal(dn, res);
- if (ret == LDB_SUCCESS && res->count == 0) {
- talloc_free(dn);
- return NT_STATUS_OK;
- }
- if (ret != LDB_SUCCESS) {
- talloc_free(dn);
- return NT_STATUS_INTERNAL_DB_CORRUPTION;
- }
-
- el = ldb_msg_find_element(res->msgs[0], "member");
- if (el == NULL) {
- talloc_free(dn);
- return NT_STATUS_INTERNAL_DB_CORRUPTION;
- }
-
- for (i=0;i<el->num_values;i++) {
- DOM_SID sid;
- string_to_sid(&sid, (const char *)el->values[i].data);
- if (!add_sid_to_array_unique(NULL, &sid, sids, num)) {
- talloc_free(dn);
- return NT_STATUS_NO_MEMORY;
- }
- }
- talloc_free(dn);
-
- return NT_STATUS_OK;
-}
-
-/*
- upgrade one group mapping record from the old tdb format
-*/
-static int upgrade_map_record(TDB_CONTEXT *tdb_ctx, TDB_DATA key,
- TDB_DATA data, void *state)
-{
- int ret;
- GROUP_MAP map;
-
- if (strncmp((char *)key.dptr, GROUP_PREFIX,
- MIN(key.dsize, strlen(GROUP_PREFIX))) != 0) {
- return 0;
- }
-
- if (!string_to_sid(&map.sid, strlen(GROUP_PREFIX) + (const char *)key.dptr)) {
- DEBUG(0,("Bad sid key '%s' during upgrade\n", (const char *)key.dptr));
- *(int *)state = -1;
- return -1;
- }
-
- ret = tdb_unpack(data.dptr, data.dsize, "ddff",
- &map.gid, &map.sid_name_use, &map.nt_name, &map.comment);
- if (ret == -1) {
- DEBUG(0,("Failed to unpack group map record during upgrade\n"));
- *(int *)state = -1;
- return -1;
- }
-
- if (!add_mapping_entry(&map, 0)) {
- DEBUG(0,("Failed to add mapping entry during upgrade\n"));
- *(int *)state = -1;
- return -1;
- }
-
- return 0;
-}
-
-/*
- upgrade one alias record from the old tdb format
-*/
-static int upgrade_alias_record(TDB_CONTEXT *tdb_ctx, TDB_DATA key,
- TDB_DATA data, void *state)
-{
- const char *p = (const char *)data.dptr;
- fstring string_sid;
- DOM_SID member;
-
- if (strncmp((char *)key.dptr, MEMBEROF_PREFIX,
- MIN(key.dsize, strlen(MEMBEROF_PREFIX))) != 0) {
- return 0;
- }
-
- if (!string_to_sid(&member, strlen(MEMBEROF_PREFIX) + (const char *)key.dptr)) {
- DEBUG(0,("Bad alias key %s during upgrade\n",
- (const char *)key.dptr));
- *(int *)state = -1;
- }
-
- while (next_token(&p, string_sid, " ", sizeof(string_sid))) {
- DOM_SID alias;
- NTSTATUS status;
- string_to_sid(&alias, string_sid);
- status = add_aliasmem(&alias, &member);
- if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_ALIAS)) {
- DEBUG(0,("Ignoring orphaned alias record '%s'\n",
- string_sid));
- } else if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0,("Failed to add alias member during upgrade - %s\n",
- nt_errstr(status)));
- *(int *)state = -1;
- return -1;
- }
- }
-
- return 0;
-}
-
-/*
- upgrade from a old style tdb
-*/
-static BOOL mapping_upgrade(const char *tdb_path)
-{
- static TDB_CONTEXT *tdb;
- int ret, status=0;
- pstring old_path;
- pstring new_path;
-
- tdb = tdb_open_log(tdb_path, 0, TDB_DEFAULT, O_RDWR, 0600);
- if (tdb == NULL) goto failed;
-
- /* we have to do the map records first, as alias records may
- reference them */
- ret = tdb_traverse(tdb, upgrade_map_record, &status);
- if (ret == -1 || status == -1) goto failed;
-
- ret = tdb_traverse(tdb, upgrade_alias_record, &status);
- if (ret == -1 || status == -1) goto failed;
-
- if (tdb) {
- tdb_close(tdb);
- tdb = NULL;
- }
-
- pstrcpy(old_path, tdb_path);
- pstrcpy(new_path, lock_path("group_mapping.tdb.upgraded"));
-
- if (rename(old_path, new_path) != 0) {
- DEBUG(0,("Failed to rename old group mapping database\n"));
- goto failed;
- }
- return True;
-
-failed:
- DEBUG(0,("Failed to upgrade group mapping database\n"));
- if (tdb) tdb_close(tdb);
- return False;
-}
-
-
-
-static const struct mapping_backend ldb_backend = {
- .add_mapping_entry = add_mapping_entry,
- .get_group_map_from_sid = get_group_map_from_sid,
- .get_group_map_from_gid = get_group_map_from_gid,
- .get_group_map_from_ntname = get_group_map_from_ntname,
- .group_map_remove = group_map_remove,
- .enum_group_mapping = enum_group_mapping,
- .one_alias_membership = one_alias_membership,
- .add_aliasmem = add_aliasmem,
- .del_aliasmem = del_aliasmem,
- .enum_aliasmem = enum_aliasmem
-};
-
-/*
- initialise the ldb mapping backend
- */
-const struct mapping_backend *groupdb_ldb_init(void)
-{
- if (!init_group_mapping()) {
- DEBUG(0,("Failed to initialise ldb mapping backend\n"));
- return NULL;
- }
-
- return &ldb_backend;
-}
diff --git a/source/groupdb/mapping_tdb.c b/source/groupdb/mapping_tdb.c
index 7ea7ec498c1..2a4753d24f3 100644
--- a/source/groupdb/mapping_tdb.c
+++ b/source/groupdb/mapping_tdb.c
@@ -26,14 +26,10 @@
static TDB_CONTEXT *tdb; /* used for driver files */
-static BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
- size_t *p_num_entries, BOOL unix_only);
-static BOOL group_map_remove(const DOM_SID *sid);
-
/****************************************************************************
Open the group mapping tdb.
****************************************************************************/
-static BOOL init_group_mapping(void)
+ BOOL init_group_mapping(void)
{
const char *vstring = "INFO/version";
int32 vers_id;
@@ -89,16 +85,21 @@ static BOOL init_group_mapping(void)
/****************************************************************************
****************************************************************************/
-static BOOL add_mapping_entry(GROUP_MAP *map, int flag)
+ BOOL add_mapping_entry(GROUP_MAP *map, int flag)
{
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
pstring key, buf;
fstring string_sid="";
int len;
+ if(!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return(False);
+ }
+
sid_to_string(string_sid, &map->sid);
- len = tdb_pack((uint8 *)buf, sizeof(buf), "ddff",
+ len = tdb_pack(buf, sizeof(buf), "ddff",
map->gid, map->sid_name_use, map->nt_name, map->comment);
if (len > sizeof(buf))
@@ -106,9 +107,11 @@ static BOOL add_mapping_entry(GROUP_MAP *map, int flag)
slprintf(key, sizeof(key), "%s%s", GROUP_PREFIX, string_sid);
+ kbuf.dsize = strlen(key)+1;
+ kbuf.dptr = key;
dbuf.dsize = len;
- dbuf.dptr = (uint8 *)buf;
- if (tdb_store_bystring(tdb, key, dbuf, flag) != 0) return False;
+ dbuf.dptr = buf;
+ if (tdb_store(tdb, kbuf, dbuf, flag) != 0) return False;
return True;
}
@@ -118,19 +121,27 @@ static BOOL add_mapping_entry(GROUP_MAP *map, int flag)
Return the sid and the type of the unix group.
****************************************************************************/
-static BOOL get_group_map_from_sid(DOM_SID sid, GROUP_MAP *map)
+ BOOL get_group_map_from_sid(DOM_SID sid, GROUP_MAP *map)
{
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
pstring key;
fstring string_sid;
int ret = 0;
+ if(!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return(False);
+ }
+
/* the key is the SID, retrieving is direct */
sid_to_string(string_sid, &sid);
slprintf(key, sizeof(key), "%s%s", GROUP_PREFIX, string_sid);
- dbuf = tdb_fetch_bystring(tdb, key);
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
+
+ dbuf = tdb_fetch(tdb, kbuf);
if (!dbuf.dptr)
return False;
@@ -153,25 +164,30 @@ static BOOL get_group_map_from_sid(DOM_SID sid, GROUP_MAP *map)
Return the sid and the type of the unix group.
****************************************************************************/
-static BOOL get_group_map_from_gid(gid_t gid, GROUP_MAP *map)
+ BOOL get_group_map_from_gid(gid_t gid, GROUP_MAP *map)
{
TDB_DATA kbuf, dbuf, newkey;
fstring string_sid;
int ret;
+ if(!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return(False);
+ }
+
/* we need to enumerate the TDB to find the GID */
for (kbuf = tdb_firstkey(tdb);
kbuf.dptr;
newkey = tdb_nextkey(tdb, kbuf), safe_free(kbuf.dptr), kbuf=newkey) {
- if (strncmp((const char *)kbuf.dptr, GROUP_PREFIX, strlen(GROUP_PREFIX)) != 0) continue;
+ if (strncmp(kbuf.dptr, GROUP_PREFIX, strlen(GROUP_PREFIX)) != 0) continue;
dbuf = tdb_fetch(tdb, kbuf);
if (!dbuf.dptr)
continue;
- fstrcpy(string_sid, (const char *)kbuf.dptr+strlen(GROUP_PREFIX));
+ fstrcpy(string_sid, kbuf.dptr+strlen(GROUP_PREFIX));
string_to_sid(&map->sid, string_sid);
@@ -198,25 +214,30 @@ static BOOL get_group_map_from_gid(gid_t gid, GROUP_MAP *map)
Return the sid and the type of the unix group.
****************************************************************************/
-static BOOL get_group_map_from_ntname(const char *name, GROUP_MAP *map)
+ BOOL get_group_map_from_ntname(const char *name, GROUP_MAP *map)
{
TDB_DATA kbuf, dbuf, newkey;
fstring string_sid;
int ret;
+ if(!init_group_mapping()) {
+ DEBUG(0,("get_group_map_from_ntname:failed to initialize group mapping\n"));
+ return(False);
+ }
+
/* we need to enumerate the TDB to find the name */
for (kbuf = tdb_firstkey(tdb);
kbuf.dptr;
newkey = tdb_nextkey(tdb, kbuf), safe_free(kbuf.dptr), kbuf=newkey) {
- if (strncmp((const char *)kbuf.dptr, GROUP_PREFIX, strlen(GROUP_PREFIX)) != 0) continue;
+ if (strncmp(kbuf.dptr, GROUP_PREFIX, strlen(GROUP_PREFIX)) != 0) continue;
dbuf = tdb_fetch(tdb, kbuf);
if (!dbuf.dptr)
continue;
- fstrcpy(string_sid, (const char *)kbuf.dptr+strlen(GROUP_PREFIX));
+ fstrcpy(string_sid, kbuf.dptr+strlen(GROUP_PREFIX));
string_to_sid(&map->sid, string_sid);
@@ -243,24 +264,32 @@ static BOOL get_group_map_from_ntname(const char *name, GROUP_MAP *map)
Remove a group mapping entry.
****************************************************************************/
-static BOOL group_map_remove(const DOM_SID *sid)
+BOOL group_map_remove(const DOM_SID *sid)
{
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
pstring key;
fstring string_sid;
+ if(!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return(False);
+ }
+
/* the key is the SID, retrieving is direct */
sid_to_string(string_sid, sid);
slprintf(key, sizeof(key), "%s%s", GROUP_PREFIX, string_sid);
- dbuf = tdb_fetch_bystring(tdb, key);
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
+
+ dbuf = tdb_fetch(tdb, kbuf);
if (!dbuf.dptr)
return False;
SAFE_FREE(dbuf.dptr);
- if(tdb_delete_bystring(tdb, key) != TDB_SUCCESS)
+ if(tdb_delete(tdb, kbuf) != TDB_SUCCESS)
return False;
return True;
@@ -270,7 +299,7 @@ static BOOL group_map_remove(const DOM_SID *sid)
Enumerate the group mapping.
****************************************************************************/
-static BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
+BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
size_t *p_num_entries, BOOL unix_only)
{
TDB_DATA kbuf, dbuf, newkey;
@@ -282,6 +311,11 @@ static BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_
DOM_SID grpsid;
uint32 rid;
+ if(!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return(False);
+ }
+
*p_num_entries=0;
*pp_rmap=NULL;
@@ -289,14 +323,14 @@ static BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_
kbuf.dptr;
newkey = tdb_nextkey(tdb, kbuf), safe_free(kbuf.dptr), kbuf=newkey) {
- if (strncmp((const char *)kbuf.dptr, GROUP_PREFIX, strlen(GROUP_PREFIX)) != 0)
+ if (strncmp(kbuf.dptr, GROUP_PREFIX, strlen(GROUP_PREFIX)) != 0)
continue;
dbuf = tdb_fetch(tdb, kbuf);
if (!dbuf.dptr)
continue;
- fstrcpy(string_sid, (const char *)kbuf.dptr+strlen(GROUP_PREFIX));
+ fstrcpy(string_sid, kbuf.dptr+strlen(GROUP_PREFIX));
ret = tdb_unpack(dbuf.dptr, dbuf.dsize, "ddff",
&map.gid, &map.sid_name_use, &map.nt_name, &map.comment);
@@ -362,23 +396,31 @@ static BOOL enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_
/* This operation happens on session setup, so it should better be fast. We
* store a list of aliases a SID is member of hanging off MEMBEROF/SID. */
-static NTSTATUS one_alias_membership(const DOM_SID *member,
+ NTSTATUS one_alias_membership(const DOM_SID *member,
DOM_SID **sids, size_t *num)
{
fstring key, string_sid;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
const char *p;
+ if (!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return NT_STATUS_ACCESS_DENIED;
+ }
+
sid_to_string(string_sid, member);
slprintf(key, sizeof(key), "%s%s", MEMBEROF_PREFIX, string_sid);
- dbuf = tdb_fetch_bystring(tdb, key);
+ kbuf.dsize = strlen(key)+1;
+ kbuf.dptr = key;
+
+ dbuf = tdb_fetch(tdb, kbuf);
if (dbuf.dptr == NULL) {
return NT_STATUS_OK;
}
- p = (const char *)dbuf.dptr;
+ p = dbuf.dptr;
while (next_token(&p, string_sid, " ", sizeof(string_sid))) {
@@ -433,15 +475,20 @@ static BOOL is_aliasmem(const DOM_SID *alias, const DOM_SID *member)
}
-static NTSTATUS add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
+ NTSTATUS add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
{
GROUP_MAP map;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
pstring key;
fstring string_sid;
char *new_memberstring;
int result;
+ if(!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return NT_STATUS_ACCESS_DENIED;
+ }
+
if (!get_group_map_from_sid(*alias, &map))
return NT_STATUS_NO_SUCH_ALIAS;
@@ -455,7 +502,10 @@ static NTSTATUS add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
sid_to_string(string_sid, member);
slprintf(key, sizeof(key), "%s%s", MEMBEROF_PREFIX, string_sid);
- dbuf = tdb_fetch_bystring(tdb, key);
+ kbuf.dsize = strlen(key)+1;
+ kbuf.dptr = key;
+
+ dbuf = tdb_fetch(tdb, kbuf);
sid_to_string(string_sid, alias);
@@ -470,9 +520,10 @@ static NTSTATUS add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
return NT_STATUS_NO_MEMORY;
SAFE_FREE(dbuf.dptr);
- dbuf = string_term_tdb_data(new_memberstring);
+ dbuf.dsize = strlen(new_memberstring)+1;
+ dbuf.dptr = new_memberstring;
- result = tdb_store_bystring(tdb, key, dbuf, 0);
+ result = tdb_store(tdb, kbuf, dbuf, 0);
SAFE_FREE(new_memberstring);
@@ -492,11 +543,11 @@ static int collect_aliasmem(TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA data,
const char *p;
fstring alias_string;
- if (strncmp((const char *)key.dptr, MEMBEROF_PREFIX,
+ if (strncmp(key.dptr, MEMBEROF_PREFIX,
strlen(MEMBEROF_PREFIX)) != 0)
return 0;
- p = (const char *)data.dptr;
+ p = data.dptr;
while (next_token(&p, alias_string, " ", sizeof(alias_string))) {
@@ -514,7 +565,7 @@ static int collect_aliasmem(TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA data,
* list currently scanned. The key represents the alias
* member. Add that. */
- member_string = strchr((const char *)key.dptr, '/');
+ member_string = strchr(key.dptr, '/');
/* Above we tested for MEMBEROF_PREFIX which includes the
* slash. */
@@ -534,11 +585,16 @@ static int collect_aliasmem(TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA data,
return 0;
}
-static NTSTATUS enum_aliasmem(const DOM_SID *alias, DOM_SID **sids, size_t *num)
+ NTSTATUS enum_aliasmem(const DOM_SID *alias, DOM_SID **sids, size_t *num)
{
GROUP_MAP map;
struct aliasmem_closure closure;
+ if(!init_group_mapping()) {
+ DEBUG(0,("failed to initialize group mapping\n"));
+ return NT_STATUS_ACCESS_DENIED;
+ }
+
if (!get_group_map_from_sid(*alias, &map))
return NT_STATUS_NO_SUCH_ALIAS;
@@ -557,14 +613,14 @@ static NTSTATUS enum_aliasmem(const DOM_SID *alias, DOM_SID **sids, size_t *num)
return NT_STATUS_OK;
}
-static NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
+ NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
{
NTSTATUS result;
DOM_SID *sids;
size_t i, num;
BOOL found = False;
char *member_string;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
pstring key;
fstring sid_string;
@@ -593,8 +649,11 @@ static NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
sid_to_string(sid_string, member);
slprintf(key, sizeof(key), "%s%s", MEMBEROF_PREFIX, sid_string);
+ kbuf.dsize = strlen(key)+1;
+ kbuf.dptr = key;
+
if (num == 0)
- return tdb_delete_bystring(tdb, key) == 0 ?
+ return tdb_delete(tdb, kbuf) == 0 ?
NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
member_string = SMB_STRDUP("");
@@ -617,9 +676,10 @@ static NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
}
}
- dbuf = string_term_tdb_data(member_string);
+ dbuf.dsize = strlen(member_string)+1;
+ dbuf.dptr = member_string;
- result = tdb_store_bystring(tdb, key, dbuf, 0) == 0 ?
+ result = tdb_store(tdb, kbuf, dbuf, 0) == 0 ?
NT_STATUS_OK : NT_STATUS_ACCESS_DENIED;
TALLOC_FREE(sids);
@@ -628,29 +688,3 @@ static NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
return result;
}
-
-static const struct mapping_backend tdb_backend = {
- .add_mapping_entry = add_mapping_entry,
- .get_group_map_from_sid = get_group_map_from_sid,
- .get_group_map_from_gid = get_group_map_from_gid,
- .get_group_map_from_ntname = get_group_map_from_ntname,
- .group_map_remove = group_map_remove,
- .enum_group_mapping = enum_group_mapping,
- .one_alias_membership = one_alias_membership,
- .add_aliasmem = add_aliasmem,
- .del_aliasmem = del_aliasmem,
- .enum_aliasmem = enum_aliasmem
-};
-
-/*
- initialise the tdb mapping backend
- */
-const struct mapping_backend *groupdb_tdb_init(void)
-{
- if (!init_group_mapping()) {
- DEBUG(0,("Failed to initialise tdb mapping backend\n"));
- return NULL;
- }
-
- return &tdb_backend;
-}
diff --git a/source/include/ads.h b/source/include/ads.h
index cbab016d46e..fcaeb2069d2 100644
--- a/source/include/ads.h
+++ b/source/include/ads.h
@@ -10,9 +10,8 @@ enum wb_posix_mapping {
WB_POSIX_MAP_UNKNOWN = -1,
WB_POSIX_MAP_TEMPLATE = 0,
WB_POSIX_MAP_SFU = 1,
- WB_POSIX_MAP_SFU20 = 2,
- WB_POSIX_MAP_RFC2307 = 3,
- WB_POSIX_MAP_UNIXINFO = 4
+ WB_POSIX_MAP_RFC2307 = 2,
+ WB_POSIX_MAP_UNIXINFO = 3
};
typedef struct {
@@ -122,22 +121,14 @@ typedef void **ADS_MODLIST;
#define ADS_PERMIT_MODIFY_OID "1.2.840.113556.1.4.1413"
#define ADS_ASQ_OID "1.2.840.113556.1.4.1504"
#define ADS_EXTENDED_DN_OID "1.2.840.113556.1.4.529"
-#define ADS_SD_FLAGS_OID "1.2.840.113556.1.4.801"
-/* ldap attribute oids (Services for Unix 3.0, 3.5) */
+/* ldap attribute oids (Services for Unix) */
#define ADS_ATTR_SFU_UIDNUMBER_OID "1.2.840.113556.1.6.18.1.310"
#define ADS_ATTR_SFU_GIDNUMBER_OID "1.2.840.113556.1.6.18.1.311"
#define ADS_ATTR_SFU_HOMEDIR_OID "1.2.840.113556.1.6.18.1.344"
#define ADS_ATTR_SFU_SHELL_OID "1.2.840.113556.1.6.18.1.312"
#define ADS_ATTR_SFU_GECOS_OID "1.2.840.113556.1.6.18.1.337"
-/* ldap attribute oids (Services for Unix 2.0) */
-#define ADS_ATTR_SFU20_UIDNUMBER_OID "1.2.840.113556.1.4.7000.187.70"
-#define ADS_ATTR_SFU20_GIDNUMBER_OID "1.2.840.113556.1.4.7000.187.71"
-#define ADS_ATTR_SFU20_HOMEDIR_OID "1.2.840.113556.1.4.7000.187.106"
-#define ADS_ATTR_SFU20_SHELL_OID "1.2.840.113556.1.4.7000.187.72"
-#define ADS_ATTR_SFU20_GECOS_OID "1.2.840.113556.1.4.7000.187.97"
-
/* ldap attribute oids (RFC2307) */
#define ADS_ATTR_RFC2307_UIDNUMBER_OID "1.3.6.1.1.1.1.0"
#define ADS_ATTR_RFC2307_GIDNUMBER_OID "1.3.6.1.1.1.1.1"
@@ -258,11 +249,6 @@ typedef void **ADS_MODLIST;
GROUP_TYPE_ACCOUNT_GROUP| \
GROUP_TYPE_SECURITY_ENABLED \
)
-#define GTYPE_SECURITY_UNIVERSAL_GROUP ( /* 0x80000008 -2147483656 */ \
- GROUP_TYPE_UNIVERSAL_GROUP| \
- GROUP_TYPE_SECURITY_ENABLED \
- )
-
#define GTYPE_DISTRIBUTION_GLOBAL_GROUP 0x00000002 /* 2 */
#define GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP 0x00000004 /* 4 */
#define GTYPE_DISTRIBUTION_UNIVERSAL_GROUP 0x00000008 /* 8 */
@@ -312,12 +298,6 @@ typedef void **ADS_MODLIST;
#ifdef HAVE_KRB5
typedef struct {
- NTSTATUS ntstatus;
- uint32 unknown1;
- uint32 unknown2; /* 0x00000001 */
-} KRB5_EDATA_NTSTATUS;
-
-typedef struct {
#if defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) /* MIT */
krb5_address **addrs;
#elif defined(HAVE_KRB5_ADDRESSES) /* Heimdal */
diff --git a/source/include/ads_protos.h b/source/include/ads_protos.h
index 0cd7c2cac07..b5f323774d3 100644
--- a/source/include/ads_protos.h
+++ b/source/include/ads_protos.h
@@ -76,15 +76,6 @@ ADS_STATUS ads_search_retry_extended_dn(ADS_STRUCT *ads, LDAPMessage **res,
const char *dn,
const char **attrs,
enum ads_extended_dn_flags flags);
-ADS_STATUS ads_search_retry_extended_dn_ranged(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
- const char *dn,
- const char **attrs,
- enum ads_extended_dn_flags flags,
- char ***strings,
- size_t *num_strings);
-BOOL ads_get_dn_from_extended_dn(TALLOC_CTX *mem_ctx,
- const char *extended_dn,
- char **dn);
ADS_STATUS ads_search_retry_sid(ADS_STRUCT *ads, LDAPMessage **res,
const DOM_SID *sid,
const char **attrs);
@@ -102,18 +93,3 @@ ADS_STATUS ads_parse_gpo(ADS_STRUCT *ads,
LDAPMessage *res,
const char *gpo_dn,
struct GROUP_POLICY_OBJECT *gpo);
-ADS_STATUS ads_search_retry_dn_sd_flags(ADS_STRUCT *ads, LDAPMessage **res,
- uint32 sd_flags,
- const char *dn,
- const char **attrs);
-ADS_STATUS ads_do_search_all_sd_flags(ADS_STRUCT *ads, const char *bind_path,
- int scope, const char *expr,
- const char **attrs, uint32 sd_flags,
- LDAPMessage **res);
-ADS_STATUS ads_get_tokensids(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- const char *dn,
- DOM_SID *user_sid,
- DOM_SID *primary_group_sid,
- DOM_SID **sids,
- size_t *num_sids);
diff --git a/source/include/auth.h b/source/include/auth.h
index 4e7eb469bac..de75ff68f6f 100644
--- a/source/include/auth.h
+++ b/source/include/auth.h
@@ -115,6 +115,12 @@ typedef struct auth_methods
/* Used to keep tabs on things like the cli for SMB server authentication */
void *private_data;
+
+ /* Function to clean up the above arbitary structure */
+ void (*free_private_data)(void **private_data);
+
+ /* Function to send a keepalive message on the above structure */
+ void (*send_keepalive)(void **private_data);
} auth_methods;
diff --git a/source/include/client.h b/source/include/client.h
index 741ce6470d9..aa8a6479470 100644
--- a/source/include/client.h
+++ b/source/include/client.h
@@ -29,13 +29,13 @@
#define CLI_BUFFER_SIZE (0xFFFF)
#define CLI_SAMBA_MAX_LARGE_READX_SIZE (127*1024) /* Works for Samba servers */
#define CLI_WINDOWS_MAX_LARGE_READX_SIZE ((64*1024)-2) /* Windows servers are broken.... */
-#define CLI_SAMBA_MAX_POSIX_LARGE_READX_SIZE (0xFFFF00) /* 24-bit len. */
/*
* These definitions depend on smb.h
*/
-struct print_job_info {
+struct print_job_info
+{
uint16 id;
uint16 priority;
size_t size;
@@ -79,28 +79,6 @@ struct rpc_pipe_client {
struct dcinfo *dc;
};
-/* Transport encryption state. */
-enum smb_trans_enc_type { SMB_TRANS_ENC_NTLM, SMB_TRANS_ENC_GSS };
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
-struct smb_tran_enc_state_gss {
- gss_ctx_id_t gss_ctx;
- gss_cred_id_t creds;
-};
-#endif
-
-struct smb_trans_enc_state {
- enum smb_trans_enc_type smb_enc_type;
- uint16 enc_ctx_num;
- BOOL enc_on;
- union {
- NTLMSSP_STATE *ntlmssp_state;
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- struct smb_tran_enc_state_gss *gss_state;
-#endif
- } s;
-};
-
struct cli_state {
int port;
int fd;
@@ -153,15 +131,12 @@ struct cli_state {
int win95;
BOOL is_samba;
uint32 capabilities;
- uint32 posix_capabilities;
BOOL dfsroot;
TALLOC_CTX *mem_ctx;
smb_sign_info sign_info;
- struct smb_trans_enc_state *trans_enc_state; /* Setup if we're encrypting SMB's. */
-
/* the session key for this CLI, outside
any per-pipe authenticaion */
DATA_BLOB user_session_key;
diff --git a/source/include/core/nterr.h b/source/include/core/nterr.h
new file mode 100644
index 00000000000..c56735e7723
--- /dev/null
+++ b/source/include/core/nterr.h
@@ -0,0 +1 @@
+#include "includes.h"
diff --git a/source/include/ctdbd_conn.h b/source/include/ctdbd_conn.h
deleted file mode 100644
index 79d8abe59d1..00000000000
--- a/source/include/ctdbd_conn.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Samba3 ctdb connection handling
- Copyright (C) Volker Lendecke 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-struct ctdbd_connection;
-
-NTSTATUS ctdbd_init_connection(TALLOC_CTX *mem_ctx,
- struct ctdbd_connection **pconn);
-NTSTATUS ctdbd_messaging_connection(TALLOC_CTX *mem_ctx,
- struct ctdbd_connection **pconn);
-
-uint32 ctdbd_vnn(const struct ctdbd_connection *conn);
-
-NTSTATUS ctdbd_register_msg_ctx(struct ctdbd_connection *conn,
- struct messaging_context *msg_ctx);
-
-NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
- uint32 dst_vnn, uint64 dst_srvid,
- struct messaging_rec *msg);
-
-BOOL ctdbd_process_exists(struct ctdbd_connection *conn, uint32 vnn,
- pid_t pid);
-
-char *ctdbd_dbpath(struct ctdbd_connection *conn,
- TALLOC_CTX *mem_ctx, uint32_t db_id);
-
-NTSTATUS ctdbd_db_attach(struct ctdbd_connection *conn, const char *name,
- uint32_t *db_id, int tdb_flags);
-
-NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32 db_id,
- TDB_DATA key);
-
-NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32 db_id,
- TDB_DATA key, TALLOC_CTX *mem_ctx, TDB_DATA *data);
-
-NTSTATUS ctdbd_traverse(uint32 db_id,
- void (*fn)(TDB_DATA key, TDB_DATA data,
- void *private_data),
- void *private_data);
-
-NTSTATUS ctdbd_register_ips(struct ctdbd_connection *conn,
- const struct sockaddr_in *server,
- const struct sockaddr_in *client,
- void (*release_ip_handler)(const char *ip_addr,
- void *private_data),
- void *private_data);
-
-NTSTATUS ctdbd_register_reconfigure(struct ctdbd_connection *conn);
-
diff --git a/source/include/dbwrap.h b/source/include/dbwrap.h
deleted file mode 100644
index eae53e8ed48..00000000000
--- a/source/include/dbwrap.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Database interface wrapper around tdb
- Copyright (C) Volker Lendecke 2005-2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef __FILEDB_H__
-#define __FILEDB_H__
-
-struct db_record {
- TDB_DATA key, value;
- NTSTATUS (*store)(struct db_record *rec, TDB_DATA data, int flag);
- NTSTATUS (*delete_rec)(struct db_record *rec);
- void *private_data;
-};
-
-struct db_context {
- struct db_record *(*fetch_locked)(struct db_context *db,
- TALLOC_CTX *mem_ctx,
- TDB_DATA key);
- int (*fetch)(struct db_context *db, TALLOC_CTX *mem_ctx,
- TDB_DATA key, TDB_DATA *data);
- int (*traverse)(struct db_context *db,
- int (*f)(struct db_record *db,
- void *private_data),
- void *private_data);
- int (*traverse_read)(struct db_context *db,
- int (*f)(struct db_record *db,
- void *private_data),
- void *private_data);
- int (*get_seqnum)(struct db_context *db);
- void *private_data;
-};
-
-struct db_context *db_open(TALLOC_CTX *mem_ctx,
- const char *name,
- int hash_size, int tdb_flags,
- int open_flags, mode_t mode);
-
-
-#endif /* __FILEDB_H__ */
diff --git a/source/include/doserr.h b/source/include/doserr.h
index e9dab2adefa..5073cd005c1 100644
--- a/source/include/doserr.h
+++ b/source/include/doserr.h
@@ -217,7 +217,6 @@
#define WERR_DEST_NOT_FOUND W_ERROR(2152)
#define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320)
#define WERR_DOMAIN_CONTROLLER_NOT_FOUND W_ERROR(2453)
-#define WERR_DEVICE_NOT_AVAILABLE W_ERROR(4319)
#define WERR_STATUS_MORE_ENTRIES W_ERROR(0x0105)
#define WERR_PRINTER_DRIVER_ALREADY_INSTALLED W_ERROR(ERRdriveralreadyinstalled)
diff --git a/source/include/gpo.h b/source/include/gpo.h
index 431702e3001..c3ae20dd20b 100644
--- a/source/include/gpo.h
+++ b/source/include/gpo.h
@@ -49,7 +49,6 @@ struct GROUP_POLICY_OBJECT {
uint32 link_type; /* GPO_LINK_TYPE */
const char *user_extensions;
const char *machine_extensions;
- SEC_DESC *security_descriptor;
struct GROUP_POLICY_OBJECT *next, *prev;
};
@@ -94,10 +93,3 @@ struct GP_EXT {
#define GPO_CACHE_DIR "gpo_cache"
#define GPT_INI "GPT.INI"
-
-struct GPO_SID_TOKEN {
- DOM_SID object_sid;
- DOM_SID primary_group_sid;
- size_t num_token_sids;
- DOM_SID *token_sids;
-};
diff --git a/source/include/includes.h b/source/include/includes.h
index ebcb071b1c2..3ddfc7d96d6 100644
--- a/source/include/includes.h
+++ b/source/include/includes.h
@@ -173,7 +173,7 @@
#if HAVE_LBER_H
#include <lber.h>
-#if defined(HPUX) && !defined(_LBER_TYPES_H)
+#ifdef HPUX
/* Define ber_tag_t and ber_int_t for using
* HP LDAP-UX Integration products' LDAP libraries.
*/
@@ -181,7 +181,7 @@
typedef unsigned long ber_tag_t;
typedef int ber_int_t;
#endif
-#endif /* defined(HPUX) && !defined(_LBER_TYPES_H) */
+#endif /* HPUX */
#ifndef LBER_USE_DER
#define LBER_USE_DER 0x01
#endif
@@ -225,6 +225,10 @@ typedef int ber_int_t;
#include <sys/attributes.h>
#endif
+#ifndef ENOATTR
+#define ENOATTR ENODATA
+#endif
+
/* mutually exclusive (SuSE 8.2) */
#if HAVE_ATTR_XATTR_H
#include <attr/xattr.h>
@@ -635,6 +639,7 @@ typedef int BOOL;
#include "dlinklist.h"
#include "tdb.h"
#include "util_tdb.h"
+#include "tdbback.h"
#include "lib/talloc/talloc.h"
/* And a little extension. Abort on type mismatch */
@@ -643,18 +648,19 @@ typedef int BOOL;
#include "nt_status.h"
#include "ads.h"
+#include "gpo.h"
#include "ads_dns.h"
#include "interfaces.h"
#include "trans2.h"
#include "nterr.h"
#include "ntioctl.h"
+#include "messages.h"
#include "charset.h"
#include "dynconfig.h"
#include "util_getent.h"
#include "debugparse.h"
#include "version.h"
#include "privileges.h"
-#include "messages.h"
#include "locking.h"
#include "smb.h"
#include "ads_cldap.h"
@@ -667,7 +673,6 @@ typedef int BOOL;
#include "mapping.h"
#include "passdb.h"
#include "rpc_secdes.h"
-#include "gpo.h"
#include "authdata.h"
#include "msdfs.h"
#include "rap.h"
@@ -681,11 +686,15 @@ typedef int BOOL;
#include "rpc_lsa.h"
#include "rpc_netlogon.h"
#include "reg_objects.h"
-#include "reg_db.h"
+#include "rpc_reg.h"
#include "rpc_samr.h"
+#include "rpc_srvsvc.h"
#include "rpc_spoolss.h"
#include "rpc_eventlog.h"
+#include "rpc_dfs.h"
#include "rpc_ds.h"
+#include "rpc_echo.h"
+#include "rpc_shutdown.h"
#include "rpc_perfcount.h"
#include "rpc_perfcount_defs.h"
#include "librpc/gen_ndr/notify.h"
@@ -702,9 +711,6 @@ typedef int BOOL;
#include "spnego.h"
#include "rpc_client.h"
#include "event.h"
-#include "dbwrap.h"
-#include "packet.h"
-#include "ctdbd_conn.h"
/*
* Type for wide character dirent structure.
@@ -779,12 +785,6 @@ enum flush_reason_enum {
#include "nss_info.h"
-/* generated rpc server implementation functions */
-#include "librpc/gen_ndr/srv_echo.h"
-#include "librpc/gen_ndr/srv_svcctl.h"
-#include "librpc/gen_ndr/srv_lsa.h"
-#include "librpc/gen_ndr/srv_eventlog.h"
-
/***** automatically generated prototypes *****/
#ifndef NO_PROTO_H
#include "proto.h"
@@ -1108,7 +1108,9 @@ krb5_error_code smb_krb5_unparse_name(krb5_context context,
krb5_error_code krb5_set_real_time(krb5_context context, int32_t seconds, int32_t microseconds);
#endif
+#ifndef HAVE_KRB5_SET_DEFAULT_TGS_KTYPES
krb5_error_code krb5_set_default_tgs_ktypes(krb5_context ctx, const krb5_enctype *enc);
+#endif
#if defined(HAVE_KRB5_AUTH_CON_SETKEY) && !defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY)
krb5_error_code krb5_auth_con_setuseruserkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *keyblock);
@@ -1200,15 +1202,6 @@ krb5_error_code smb_krb5_mk_error(krb5_context context,
krb5_error_code error_code,
const krb5_principal server,
krb5_data *reply);
-krb5_enctype smb_get_enctype_from_kt_entry(const krb5_keytab_entry *kt_entry);
-krb5_error_code smb_krb5_enctype_to_string(krb5_context context,
- krb5_enctype enctype,
- char **etype_s);
-krb5_error_code smb_krb5_open_keytab(krb5_context context,
- const char *keytab_name,
- BOOL write_access,
- krb5_keytab *keytab);
-
#endif /* HAVE_KRB5 */
@@ -1219,9 +1212,6 @@ LDAP *ldap_open_with_timeout(const char *server, int port, unsigned int to);
#endif /* HAVE_LDAP */
-#if defined(HAVE_LINUX_READAHEAD) && ! defined(HAVE_READAHEAD_DECL)
-ssize_t readahead(int fd, off64_t offset, size_t count);
-#endif
/* TRUE and FALSE are part of the C99 standard and gcc, but
unfortunately many vendor compilers don't support them. Use True
diff --git a/source/include/intl.h b/source/include/intl.h
index 58f21e359b6..01fa3bad976 100644
--- a/source/include/intl.h
+++ b/source/include/intl.h
@@ -21,4 +21,5 @@
/* ideally we would have a static mapping, but that precludes
dynamic loading. This is a reasonable compromise */
+#define _(x) lang_msg_rotate(x)
#define N_(x) (x)
diff --git a/source/include/libsmbclient.h b/source/include/libsmbclient.h
index 5d674264d8c..45f2a41b088 100644
--- a/source/include/libsmbclient.h
+++ b/source/include/libsmbclient.h
@@ -1242,16 +1242,14 @@ int smbc_chown(const char *url, uid_t owner, gid_t group);
*/
int smbc_chmod(const char *url, mode_t mode);
-/**
- * @ingroup attribute
+/**@ingroup attribute
* Change the last modification time on a file
*
* @param url The smb url of the file or directory to change
* the modification time of
- *
- * @param tbuf An array of two timeval structures which contains,
- * respectively, the desired access and modification times.
- * NOTE: Only the tv_sec field off each timeval structure is
+ *
+ * @param tbuf A timeval structure which contains the desired
+ * modification time. NOTE: Only the tv_sec field is
* used. The tv_usec (microseconds) portion is ignored.
*
* @return 0 on success, < 0 on error with errno set:
@@ -1262,15 +1260,15 @@ int smbc_chmod(const char *url, mode_t mode);
int smbc_utimes(const char *url, struct timeval *tbuf);
#ifdef HAVE_UTIME_H
-/**
- * @ingroup attribute
+/**@ingroup attribute
* Change the last modification time on a file
*
* @param url The smb url of the file or directory to change
* the modification time of
- *
- * @param utbuf A pointer to a utimebuf structure which contains the
- * desired access and modification times.
+ *
+ * @param utbuf A utimebuf structure which contains the desired
+ * modification time. NOTE: Although the structure contains
+ * an access time as well, the access time value is ignored.
*
* @return 0 on success, < 0 on error with errno set:
* - EINVAL The client library is not properly initialized
diff --git a/source/include/locking.h b/source/include/locking.h
index d61b5fe1e43..4b3b10d7367 100644
--- a/source/include/locking.h
+++ b/source/include/locking.h
@@ -39,29 +39,39 @@ enum brl_flavour {WINDOWS_LOCK = 0, POSIX_LOCK = 1};
struct lock_context {
uint32 smbpid;
uint16 tid;
- struct server_id pid;
+ struct process_id pid;
};
-struct files_struct;
+/* The key used in the brlock database. */
-struct file_id {
- /* we don't use SMB_DEV_T and SMB_INO_T as we want a fixed size here,
- and we may be using file system specific code to fill in something
- other than a dev_t for the device */
- uint64_t devid;
- uint64_t inode;
+struct lock_key {
+ SMB_DEV_T device;
+ SMB_INO_T inode;
};
+struct files_struct;
+
struct byte_range_lock {
struct files_struct *fsp;
unsigned int num_locks;
BOOL modified;
BOOL read_only;
- struct file_id key;
- struct lock_struct *lock_data;
- struct db_record *record;
+ struct lock_key key;
+ void *lock_data;
};
+#define BRLOCK_FN_CAST() \
+ void (*)(SMB_DEV_T dev, SMB_INO_T ino, struct process_id pid, \
+ enum brl_type lock_type, \
+ enum brl_flavour lock_flav, \
+ br_off start, br_off size)
+
+#define BRLOCK_FN(fn) \
+ void (*fn)(SMB_DEV_T dev, SMB_INO_T ino, struct process_id pid, \
+ enum brl_type lock_type, \
+ enum brl_flavour lock_flav, \
+ br_off start, br_off size)
+
/* Internal structure in brlock.tdb.
The data in brlock records is an unsorted linear array of these
records. It is unnecessary to store the count as tdb provides the
diff --git a/source/include/messages.h b/source/include/messages.h
index 8c829712eb1..7cd0e023487 100644
--- a/source/include/messages.h
+++ b/source/include/messages.h
@@ -22,203 +22,90 @@
#ifndef _MESSAGES_H_
#define _MESSAGES_H_
-/* change the message version with any incompatible changes in the protocol */
-#define MESSAGE_VERSION 2
-
-
-#define MSG_TYPE_MASK 0xFFFF
-
/* general messages */
-#define MSG_DEBUG 0x0001
-#define MSG_PING 0x0002
-#define MSG_PONG 0x0003
-#define MSG_PROFILE 0x0004
-#define MSG_REQ_DEBUGLEVEL 0x0005
-#define MSG_DEBUGLEVEL 0x0006
-#define MSG_REQ_PROFILELEVEL 0x0007
-#define MSG_PROFILELEVEL 0x0008
-#define MSG_REQ_POOL_USAGE 0x0009
-#define MSG_POOL_USAGE 0x000A
+#define MSG_DEBUG 1
+#define MSG_PING 2
+#define MSG_PONG 3
+#define MSG_PROFILE 4
+#define MSG_REQ_DEBUGLEVEL 5
+#define MSG_DEBUGLEVEL 6
+#define MSG_REQ_PROFILELEVEL 7
+#define MSG_PROFILELEVEL 8
+#define MSG_REQ_POOL_USAGE 9
+#define MSG_POOL_USAGE 10
/* If dmalloc is included, set a steady-state mark */
-#define MSG_REQ_DMALLOC_MARK 0x000B
+#define MSG_REQ_DMALLOC_MARK 11
/* If dmalloc is included, dump to the dmalloc log a description of
* what has changed since the last MARK */
-#define MSG_REQ_DMALLOC_LOG_CHANGED 0x000C
+#define MSG_REQ_DMALLOC_LOG_CHANGED 12
-#define MSG_SHUTDOWN 0x000D
+#define MSG_SHUTDOWN 13
/* nmbd messages */
-#define MSG_FORCE_ELECTION 0x0101
-#define MSG_WINS_NEW_ENTRY 0x0102
-#define MSG_SEND_PACKET 0x0103
+#define MSG_FORCE_ELECTION 1001
+#define MSG_WINS_NEW_ENTRY 1002
+#define MSG_SEND_PACKET 1003
/* printing messages */
/* #define MSG_PRINTER_NOTIFY 2001*/ /* Obsolete */
-#define MSG_PRINTER_NOTIFY2 0x0202
+#define MSG_PRINTER_NOTIFY2 2002
-#define MSG_PRINTER_DRVUPGRADE 0x0203
-#define MSG_PRINTERDATA_INIT_RESET 0x0204
-#define MSG_PRINTER_UPDATE 0x0205
-#define MSG_PRINTER_MOD 0x0206
+#define MSG_PRINTER_DRVUPGRADE 2101
+#define MSG_PRINTERDATA_INIT_RESET 2102
+#define MSG_PRINTER_UPDATE 2103
+#define MSG_PRINTER_MOD 2104
/* smbd messages */
-#define MSG_SMB_CONF_UPDATED 0x0301
-#define MSG_SMB_FORCE_TDIS 0x0302
-#define MSG_SMB_SAM_SYNC 0x0303
-#define MSG_SMB_SAM_REPL 0x0304
-#define MSG_SMB_UNLOCK 0x0305
-#define MSG_SMB_BREAK_REQUEST 0x0306
-#define MSG_SMB_BREAK_RESPONSE 0x0307
-#define MSG_SMB_ASYNC_LEVEL2_BREAK 0x0308
-#define MSG_SMB_OPEN_RETRY 0x0309
-#define MSG_SMB_KERNEL_BREAK 0x030A
-#define MSG_SMB_FILE_RENAME 0x030B
-#define MSG_SMB_INJECT_FAULT 0x030C
-#define MSG_SMB_BLOCKING_LOCK_CANCEL 0x030D
-#define MSG_SMB_NOTIFY 0x030E
-#define MSG_SMB_STAT_CACHE_DELETE 0x030F
+#define MSG_SMB_CONF_UPDATED 3001
+#define MSG_SMB_FORCE_TDIS 3002
+#define MSG_SMB_SAM_SYNC 3003
+#define MSG_SMB_SAM_REPL 3004
+#define MSG_SMB_UNLOCK 3005
+#define MSG_SMB_BREAK_REQUEST 3006
+#define MSG_SMB_BREAK_RESPONSE 3007
+#define MSG_SMB_ASYNC_LEVEL2_BREAK 3008
+#define MSG_SMB_OPEN_RETRY 3009
+#define MSG_SMB_KERNEL_BREAK 3010
+#define MSG_SMB_FILE_RENAME 3011
+#define MSG_SMB_INJECT_FAULT 3012
+#define MSG_SMB_BLOCKING_LOCK_CANCEL 3013
+#define MSG_SMB_NOTIFY 3014
+#define MSG_SMB_STAT_CACHE_DELETE 3015
/*
* Samba4 compatibility
*/
-#define MSG_PVFS_NOTIFY 0x0310
-/*
- * cluster reconfigure events
- */
-#define MSG_SMB_BRL_VALIDATE 0x0311
-#define MSG_SMB_RELEASE_IP 0x0312
+#define MSG_PVFS_NOTIFY 3016
/* winbind messages */
-#define MSG_WINBIND_FINISHED 0x0401
-#define MSG_WINBIND_FORGET_STATE 0x0402
-#define MSG_WINBIND_ONLINE 0x0403
-#define MSG_WINBIND_OFFLINE 0x0404
-#define MSG_WINBIND_ONLINESTATUS 0x0405
-#define MSG_WINBIND_TRY_TO_GO_ONLINE 0x0406
-#define MSG_WINBIND_FAILED_TO_GO_ONLINE 0x0407
-
-/* event messages */
-#define MSG_DUMP_EVENT_LIST 0x0500
-
-/*
- * Special flags passed to message_send. Allocated from the top, lets see when
- * it collides with the message types in the lower 16 bits :-)
- */
-
-/*
- * Under high load, this message can be dropped. Use for notify-style
- * messages that are not critical for correct operation.
- */
-#define MSG_FLAG_LOWPRIORITY 0x80000000
-
+#define MSG_WINBIND_FINISHED 4001
+#define MSG_WINBIND_FORGET_STATE 4002
+#define MSG_WINBIND_ONLINE 4003
+#define MSG_WINBIND_OFFLINE 4004
+#define MSG_WINBIND_ONLINESTATUS 4005
+#define MSG_WINBIND_TRY_TO_GO_ONLINE 4006
+#define MSG_WINBIND_FAILED_TO_GO_ONLINE 4007
/* Flags to classify messages - used in message_send_all() */
/* Sender will filter by flag. */
-#define FLAG_MSG_GENERAL 0x0001
-#define FLAG_MSG_SMBD 0x0002
-#define FLAG_MSG_NMBD 0x0004
-#define FLAG_MSG_PRINT_NOTIFY 0x0008
-#define FLAG_MSG_PRINT_GENERAL 0x0010
-
-
-/*
- * Virtual Node Numbers are identifying a node within a cluster. Ctdbd sets
- * this, we retrieve our vnn from it.
- */
-
-#define NONCLUSTER_VNN (0xFFFFFFFF)
+#define FLAG_MSG_GENERAL 0x0001
+#define FLAG_MSG_SMBD 0x0002
+#define FLAG_MSG_NMBD 0x0004
+#define FLAG_MSG_PRINT_NOTIFY 0x0008
+#define FLAG_MSG_PRINT_GENERAL 0x0010
-/*
- * ctdb gives us 64-bit server ids for messaging_send. This is done to avoid
- * pid clashes and to be able to register for special messages like "all
- * smbds".
- *
- * Normal individual server id's have the upper 32 bits to 0, I picked "1" for
- * Samba, other subsystems might use something else.
- */
-
-#define MSG_SRVID_SAMBA 0x0000000100000000LL
-
-
-struct server_id {
+struct process_id {
pid_t pid;
-#ifdef CLUSTER_SUPPORT
- uint32 vnn;
-#endif
};
-
-
-struct messaging_context;
-struct messaging_rec;
-struct data_blob;
-
/*
- * struct messaging_context belongs to messages.c, but because we still have
- * messaging_dispatch, we need it here. Once we get rid of signals for
- * notifying processes, this will go.
+ * Samba4 API compatibility layer
*/
-struct messaging_context {
- struct server_id id;
- struct event_context *event_ctx;
- struct messaging_callback *callbacks;
-
- struct messaging_backend *local;
- struct messaging_backend *remote;
-};
-
-struct messaging_backend {
- NTSTATUS (*send_fn)(struct messaging_context *msg_ctx,
- struct server_id pid, int msg_type,
- const struct data_blob *data,
- struct messaging_backend *backend);
- void *private_data;
+struct server_id {
+ struct process_id id;
};
-NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx,
- TALLOC_CTX *mem_ctx,
- struct messaging_backend **presult);
-void message_dispatch(struct messaging_context *msg_ctx);
-
-NTSTATUS messaging_ctdbd_init(struct messaging_context *msg_ctx,
- TALLOC_CTX *mem_ctx,
- struct messaging_backend **presult);
-struct ctdbd_connection *messaging_ctdbd_connection(void);
-
-BOOL message_send_all(struct messaging_context *msg_ctx,
- int msg_type,
- const void *buf, size_t len,
- int *n_sent);
-struct event_context *messaging_event_context(struct messaging_context *msg_ctx);
-struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
- struct server_id server_id,
- struct event_context *ev);
-
-/*
- * re-init after a fork
- */
-NTSTATUS messaging_reinit(struct messaging_context *msg_ctx);
-
-NTSTATUS messaging_register(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- void (*fn)(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- struct data_blob *data));
-void messaging_deregister(struct messaging_context *ctx, uint32_t msg_type,
- void *private_data);
-NTSTATUS messaging_send(struct messaging_context *msg_ctx,
- struct server_id server,
- uint32_t msg_type, const struct data_blob *data);
-NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx,
- struct server_id server, uint32_t msg_type,
- const uint8 *buf, size_t len);
-void messaging_dispatch_rec(struct messaging_context *msg_ctx,
- struct messaging_rec *rec);
-
#endif
diff --git a/source/include/nt_status.h b/source/include/nt_status.h
index 4d083106d3e..471ac47927a 100644
--- a/source/include/nt_status.h
+++ b/source/include/nt_status.h
@@ -72,12 +72,6 @@ typedef uint32 WERROR;
}\
} while (0)
-#define W_ERROR_NOT_OK_RETURN(x) do { \
- if (!W_ERROR_IS_OK(x)) {\
- return x;\
- }\
-} while (0)
-
/* The top byte in an NTSTATUS code is used as a type field.
* Windows only uses value 0xC0 as an indicator for an NT error
* and 0x00 for success.
diff --git a/source/include/ntdomain.h b/source/include/ntdomain.h
index 2108520b157..6d8c4e62c65 100644
--- a/source/include/ntdomain.h
+++ b/source/include/ntdomain.h
@@ -234,9 +234,17 @@ typedef struct pipes_struct {
struct dcinfo *dc; /* Keeps the creds data from netlogon. */
/*
- * Credentials used for the pipe operations
+ * Windows user info.
+ */
+ fstring user_name;
+ fstring domain;
+ fstring wks;
+
+ /*
+ * Unix user name and credentials used when a pipe is authenticated.
*/
+ fstring pipe_user_name;
struct current_user pipe_user;
DATA_BLOB session_key;
@@ -257,7 +265,7 @@ typedef struct pipes_struct {
*/
BOOL bad_handle_fault_state;
-
+
/*
* Set to true when the backend does not support a call.
*/
diff --git a/source/include/nterr.h b/source/include/nterr.h
index e14f341de13..8a667707c8c 100644
--- a/source/include/nterr.h
+++ b/source/include/nterr.h
@@ -31,7 +31,7 @@
#define NT_STATUS_NO_MORE_ENTRIES NT_STATUS(0x8000001a)
/* Vista Status codes. */
-#define NT_STATUS_INACCESSIBLE_SYSTEM_SHORTCUT NT_STATUS(0x8000002d)
+#define STATUS_INACCESSIBLE_SYSTEM_SHORTCUT NT_STATUS(0x8000002d)
#define STATUS_MORE_ENTRIES NT_STATUS(0x0105)
#define STATUS_SOME_UNMAPPED NT_STATUS(0x0107)
diff --git a/source/include/ntioctl.h b/source/include/ntioctl.h
index b4b8169a517..9b748d38ed1 100644
--- a/source/include/ntioctl.h
+++ b/source/include/ntioctl.h
@@ -47,7 +47,7 @@
#define FSCTL_SET_REPARSE_POINT 0x000900A4
#define FSCTL_GET_REPARSE_POINT 0x000900A8
#define FSCTL_DELETE_REPARSE_POINT 0x000900AC
-#define FSCTL_CREATE_OR_GET_OBJECT_ID 0x000900C0
+#define FSCTL_0x000900C0 0x000900C0
#define FSCTL_SET_SPARSE 0x000900C4
#define FSCTL_SET_ZERO_DATA 0x000900C8
#define FSCTL_SET_ENCRYPTION 0x000900D7
@@ -65,7 +65,7 @@
#define FSCTL_DISMOUNT_VOLUME
#define FSCTL_GET_NTFS_FILE_RECORD
#define FSCTL_ALLOW_EXTENDED_DASD_IO
-#define FSCTL_RECALL_FILE 0x00090117
+#define FSCTL_RECALL_FILE
#endif
diff --git a/source/include/packet.h b/source/include/packet.h
deleted file mode 100644
index 9f364827051..00000000000
--- a/source/include/packet.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Packet handling
- Copyright (C) Volker Lendecke 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- * A packet context is a wrapper around a bidirectional file descriptor,
- * hiding the handling of individual requests.
- */
-
-struct packet_context;
-
-/*
- * Initialize a packet context. The fd is given to the packet context, meaning
- * that it is automatically closed when the packet context is freed.
- */
-struct packet_context *packet_init(TALLOC_CTX *mem_ctx, int fd);
-
-/*
- * Pull data from the fd
- */
-NTSTATUS packet_fd_read(struct packet_context *ctx);
-
-/*
- * Sync read, wait for the next chunk
- */
-NTSTATUS packet_fd_read_sync(struct packet_context *ctx);
-
-/*
- * Handle an incoming packet:
- * Return False if none is available
- * Otherwise return True and store the callback result in *status
- */
-BOOL packet_handler(struct packet_context *ctx,
- BOOL (*full_req)(const struct data_blob *data,
- size_t *length,
- void *private_data),
- NTSTATUS (*callback)(const struct data_blob *data,
- void *private_data),
- void *private_data,
- NTSTATUS *status);
-
-/*
- * How many bytes of outgoing data do we have pending?
- */
-size_t packet_outgoing_bytes(struct packet_context *ctx);
-
-/*
- * Push data to the fd
- */
-NTSTATUS packet_fd_write(struct packet_context *ctx);
-
-/*
- * Sync flush all outgoing bytes
- */
-NTSTATUS packet_flush(struct packet_context *ctx);
-
-/*
- * Send a list of DATA_BLOBs
- *
- * Example: packet_send(ctx, 2, data_blob_const(&size, sizeof(size)),
- * data_blob_const(buf, size));
- */
-NTSTATUS packet_send(struct packet_context *ctx, int num_blobs, ...);
-
-/*
- * Get the packet context's file descriptor
- */
-int packet_get_fd(struct packet_context *ctx);
diff --git a/source/include/passdb.h b/source/include/passdb.h
index c3af0f4f11e..10f77e1ed51 100644
--- a/source/include/passdb.h
+++ b/source/include/passdb.h
@@ -242,10 +242,9 @@ struct pdb_search {
* the pdb module. Remove the latter, this might happen more often. VL.
* changed to version 14 to move lookup_rids and lookup_names to return
* enum lsa_SidType rather than uint32.
- * Changed to 16 for access to the trusted domain passwords (obnox).
*/
-#define PASSDB_INTERFACE_VERSION 16
+#define PASSDB_INTERFACE_VERSION 15
struct pdb_methods
{
@@ -329,6 +328,9 @@ struct pdb_methods
TALLOC_CTX *mem_ctx,
uint32 group_rid, uint32 member_rid);
+ NTSTATUS (*find_alias)(struct pdb_methods *methods,
+ const char *name, DOM_SID *sid);
+
NTSTATUS (*create_alias)(struct pdb_methods *methods,
const char *name, uint32 *rid);
@@ -401,19 +403,6 @@ struct pdb_methods
BOOL (*rid_algorithm)(struct pdb_methods *methods);
BOOL (*new_rid)(struct pdb_methods *methods, uint32 *rid);
-
- BOOL (*get_trusteddom_pw)(struct pdb_methods *methods,
- const char *domain, char** pwd,
- DOM_SID *sid, time_t *pass_last_set_time);
- BOOL (*set_trusteddom_pw)(struct pdb_methods *methods,
- const char* domain, const char* pwd,
- const DOM_SID *sid);
- BOOL (*del_trusteddom_pw)(struct pdb_methods *methods,
- const char *domain);
- NTSTATUS (*enum_trusteddoms)(struct pdb_methods *methods,
- TALLOC_CTX *mem_ctx, uint32 *num_domains,
- struct trustdom_info ***domains);
-
void *private_data; /* Private data of some kind */
void (*free_private_data)(void **);
diff --git a/source/include/popt_common.h b/source/include/popt_common.h
index 9db5ecc3d13..4c3facb48f9 100644
--- a/source/include/popt_common.h
+++ b/source/include/popt_common.h
@@ -50,17 +50,6 @@ struct user_auth_info {
int signing_state;
};
-enum smb_server_mode {
- /* Daemonize and manage our own sockets */
- SERVER_MODE_DAEMON,
- /* Don't daemonize or manage sockets */
- SERVER_MODE_INETD,
- /* Don't daemonize, but do manage sockets */
- SERVER_MODE_FOREGROUND,
- /* Run in the foreground, log to stdout, don't fork children */
- SERVER_MODE_INTERACTIVE
-};
-
extern struct user_auth_info cmdline_auth_info;
#endif /* _POPT_COMMON_H */
diff --git a/source/include/privileges.h b/source/include/privileges.h
index 72b2c913245..eac42e0ba93 100644
--- a/source/include/privileges.h
+++ b/source/include/privileges.h
@@ -61,9 +61,7 @@ typedef struct {
#define SE_RESTORE { { 0x00000400, 0x00000000, 0x00000000, 0x00000000 } }
#define SE_TAKE_OWNERSHIP { { 0x00000800, 0x00000000, 0x00000000, 0x00000000 } }
-/* defined in lib/privilegs_basic.c */
-
-extern const SE_PRIV se_priv_all;
+/* defined in lib/privilegs.c */
extern const SE_PRIV se_priv_none;
extern const SE_PRIV se_machine_account;
diff --git a/source/include/reg_objects.h b/source/include/reg_objects.h
index b108d6d0824..1f819df999b 100644
--- a/source/include/reg_objects.h
+++ b/source/include/reg_objects.h
@@ -32,31 +32,6 @@ typedef struct {
uint8 *data_p;
} REGISTRY_VALUE;
-/*
- * A REG_SZ string is not necessarily NULL terminated. When retrieving it from
- * the net, we guarantee this however. A server might want to push it without
- * the terminator though.
- */
-
-struct registry_string {
- size_t len;
- char *str;
-};
-
-struct registry_value {
- enum winreg_Type type;
- union {
- uint32 dword;
- uint64 qword;
- struct registry_string sz;
- struct {
- uint32 num_strings;
- char **strings;
- } multi_sz;
- DATA_BLOB binary;
- } v;
-};
-
/* container for registry values */
typedef struct {
@@ -71,86 +46,5 @@ typedef struct {
char **subkeys;
} REGSUBKEY_CTR;
-/*
- *
- * Macros that used to reside in rpc_reg.h
- *
- */
-
-#define HKEY_CLASSES_ROOT 0x80000000
-#define HKEY_CURRENT_USER 0x80000001
-#define HKEY_LOCAL_MACHINE 0x80000002
-#define HKEY_USERS 0x80000003
-#define HKEY_PERFORMANCE_DATA 0x80000004
-
-#define KEY_HKLM "HKLM"
-#define KEY_HKU "HKU"
-#define KEY_HKCC "HKCC"
-#define KEY_HKCR "HKCR"
-#define KEY_HKPD "HKPD"
-#define KEY_HKPT "HKPT"
-#define KEY_HKPN "HKPN"
-#define KEY_HKCU "HKCU"
-#define KEY_HKDD "HKDD"
-#define KEY_SERVICES "HKLM\\SYSTEM\\CurrentControlSet\\Services"
-#define KEY_PRINTING "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print"
-#define KEY_PRINTING_2K "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers"
-#define KEY_PRINTING_PORTS "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports"
-#define KEY_EVENTLOG "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Eventlog"
-#define KEY_SHARES "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Shares"
-#define KEY_SMBCONF "HKLM\\SOFTWARE\\Samba\\smbconf"
-#define KEY_TREE_ROOT ""
-
-/*
- * Registry key types
- * Most keys are going to be GENERIC -- may need a better name?
- * HKPD and HKPT are used by reg_perfcount.c
- * they are special keys that contain performance data
- */
-#define REG_KEY_GENERIC 0
-#define REG_KEY_HKPD 1
-#define REG_KEY_HKPT 2
-
-/*
- * container for function pointers to enumeration routines
- * for virtual registry view
- */
-
-typedef struct {
- /* functions for enumerating subkeys and values */
- int (*fetch_subkeys)( const char *key, REGSUBKEY_CTR *subkeys);
- int (*fetch_values) ( const char *key, REGVAL_CTR *val );
- BOOL (*store_subkeys)( const char *key, REGSUBKEY_CTR *subkeys );
- BOOL (*store_values)( const char *key, REGVAL_CTR *val );
- BOOL (*reg_access_check)( const char *keyname, uint32 requested,
- uint32 *granted,
- const NT_USER_TOKEN *token );
- WERROR (*get_secdesc)(TALLOC_CTX *mem_ctx, const char *key,
- struct security_descriptor **psecdesc);
- WERROR (*set_secdesc)(const char *key,
- struct security_descriptor *sec_desc);
-} REGISTRY_OPS;
-
-typedef struct {
- const char *keyname; /* full path to name of key */
- REGISTRY_OPS *ops; /* registry function hooks */
-} REGISTRY_HOOK;
-
-
-/* structure to store the registry handles */
-
-typedef struct _RegistryKey {
- uint32 type;
- char *name; /* full name of registry key */
- uint32 access_granted;
- REGISTRY_HOOK *hook;
-} REGISTRY_KEY;
-
-struct registry_key {
- REGISTRY_KEY *key;
- REGSUBKEY_CTR *subkeys;
- REGVAL_CTR *values;
- struct nt_user_token *token;
-};
-
#endif /* _REG_OBJECTS_H */
+
diff --git a/source/include/rpc_client.h b/source/include/rpc_client.h
index 94803dbaea2..b05924e657d 100644
--- a/source/include/rpc_client.h
+++ b/source/include/rpc_client.h
@@ -23,15 +23,6 @@
/* autogenerated client stubs */
-#include "librpc/gen_ndr/cli_echo.h"
-#include "librpc/gen_ndr/cli_unixinfo.h"
-#include "librpc/gen_ndr/cli_epmapper.h"
-#include "librpc/gen_ndr/cli_dfs.h"
-#include "librpc/gen_ndr/cli_lsa.h"
-#include "librpc/gen_ndr/cli_srvsvc.h"
-#include "librpc/gen_ndr/cli_svcctl.h"
-#include "librpc/gen_ndr/cli_winreg.h"
-#include "librpc/gen_ndr/cli_initshutdown.h"
#include "librpc/gen_ndr/cli_wkssvc.h"
/* macro to expand cookie-cutter code in cli_xxx() using rpc_api_pipe_req() */
diff --git a/source/include/rpc_dfs.h b/source/include/rpc_dfs.h
new file mode 100644
index 00000000000..601d3d3b017
--- /dev/null
+++ b/source/include/rpc_dfs.h
@@ -0,0 +1,394 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * header auto-generated by pidl. DO NOT MODIFY!
+ */
+
+
+#ifndef _RPC_NETDFS_H
+#define _RPC_NETDFS_H
+
+#define DFS_GETMANAGERVERSION 0
+#define DFS_ADD 1
+#define DFS_REMOVE 2
+#define DFS_SETINFO 3
+#define DFS_GETINFO 4
+#define DFS_ENUM 5
+#define DFS_RENAME 6
+#define DFS_MOVE 7
+#define DFS_MANAGERGETCONFIGINFO 8
+#define DFS_MANAGERSENDSITEINFO 9
+#define DFS_ADDFTROOT 10
+#define DFS_REMOVEFTROOT 11
+#define DFS_ADDSTDROOT 12
+#define DFS_REMOVESTDROOT 13
+#define DFS_MANAGERINITIALIZE 14
+#define DFS_ADDSTDROOTFORCED 15
+#define DFS_GETDCADDRESS 16
+#define DFS_SETDCADDRESS 17
+#define DFS_FLUSHFTTABLE 18
+#define DFS_ADD2 19
+#define DFS_REMOVE2 20
+#define DFS_ENUMEX 21
+#define DFS_SETINFO2 22
+
+typedef struct netdfs_dfs_Info0 {
+ uint32 dummy;
+} NETDFS_DFS_INFO0;
+
+typedef struct netdfs_dfs_Info1 {
+ uint32 ptr0_path;
+ UNISTR2 path;
+} NETDFS_DFS_INFO1;
+
+typedef struct netdfs_dfs_Info2 {
+ uint32 ptr0_path;
+ UNISTR2 path;
+ uint32 ptr0_comment;
+ UNISTR2 comment;
+ uint32 state;
+ uint32 num_stores;
+} NETDFS_DFS_INFO2;
+
+typedef struct netdfs_dfs_StorageInfo {
+ uint32 state;
+ uint32 ptr0_server;
+ UNISTR2 server;
+ uint32 ptr0_share;
+ UNISTR2 share;
+} NETDFS_DFS_STORAGEINFO;
+
+typedef struct netdfs_dfs_Info3 {
+ uint32 ptr0_path;
+ UNISTR2 path;
+ uint32 ptr0_comment;
+ UNISTR2 comment;
+ uint32 state;
+ uint32 num_stores;
+ uint32 ptr0_stores;
+ uint32 size_stores;
+ NETDFS_DFS_STORAGEINFO *stores;
+} NETDFS_DFS_INFO3;
+
+typedef struct netdfs_dfs_Info4 {
+ uint32 ptr0_path;
+ UNISTR2 path;
+ uint32 ptr0_comment;
+ UNISTR2 comment;
+ uint32 state;
+ uint32 timeout;
+ struct GUID guid;
+ uint32 num_stores;
+ uint32 ptr0_stores;
+ uint32 size_stores;
+ NETDFS_DFS_STORAGEINFO *stores;
+} NETDFS_DFS_INFO4;
+
+typedef struct netdfs_dfs_Info100 {
+ uint32 ptr0_comment;
+ UNISTR2 comment;
+} NETDFS_DFS_INFO100;
+
+typedef struct netdfs_dfs_Info101 {
+ uint32 state;
+} NETDFS_DFS_INFO101;
+
+typedef struct netdfs_dfs_Info102 {
+ uint32 timeout;
+} NETDFS_DFS_INFO102;
+
+typedef struct netdfs_dfs_Info200 {
+ uint32 ptr0_dom_root;
+ UNISTR2 dom_root;
+} NETDFS_DFS_INFO200;
+
+typedef struct netdfs_dfs_Info300 {
+ uint32 flags;
+ uint32 ptr0_dom_root;
+ UNISTR2 dom_root;
+} NETDFS_DFS_INFO300;
+
+typedef struct netdfs_dfs_Info_ctr {
+ uint32 switch_value;
+ uint32 ptr0;
+ union netdfs_dfs_Info {
+ NETDFS_DFS_INFO0 info0;
+ NETDFS_DFS_INFO1 info1;
+ NETDFS_DFS_INFO2 info2;
+ NETDFS_DFS_INFO3 info3;
+ NETDFS_DFS_INFO4 info4;
+ NETDFS_DFS_INFO100 info100;
+ NETDFS_DFS_INFO101 info101;
+ NETDFS_DFS_INFO102 info102;
+ } u;
+} NETDFS_DFS_INFO_CTR;
+
+typedef struct netdfs_dfs_EnumArray1 {
+ uint32 count;
+ uint32 ptr0_s;
+ uint32 size_s;
+ NETDFS_DFS_INFO1 *s;
+} NETDFS_DFS_ENUMARRAY1;
+
+typedef struct netdfs_dfs_EnumArray2 {
+ uint32 count;
+ uint32 ptr0_s;
+ uint32 size_s;
+ NETDFS_DFS_INFO2 *s;
+} NETDFS_DFS_ENUMARRAY2;
+
+typedef struct netdfs_dfs_EnumArray3 {
+ uint32 count;
+ uint32 ptr0_s;
+ uint32 size_s;
+ NETDFS_DFS_INFO3 *s;
+} NETDFS_DFS_ENUMARRAY3;
+
+typedef struct netdfs_dfs_EnumArray4 {
+ uint32 count;
+ uint32 ptr0_s;
+ uint32 size_s;
+ NETDFS_DFS_INFO4 *s;
+} NETDFS_DFS_ENUMARRAY4;
+
+typedef struct netdfs_dfs_EnumArray200 {
+ uint32 count;
+ uint32 ptr0_s;
+ uint32 size_s;
+ NETDFS_DFS_INFO200 *s;
+} NETDFS_DFS_ENUMARRAY200;
+
+typedef struct netdfs_dfs_EnumArray300 {
+ uint32 count;
+ uint32 ptr0_s;
+ uint32 size_s;
+ NETDFS_DFS_INFO300 *s;
+} NETDFS_DFS_ENUMARRAY300;
+
+typedef struct netdfs_dfs_EnumInfo_ctr {
+ uint32 switch_value;
+ uint32 ptr0;
+ union netdfs_dfs_EnumInfo {
+ NETDFS_DFS_ENUMARRAY1 info1;
+ NETDFS_DFS_ENUMARRAY2 info2;
+ NETDFS_DFS_ENUMARRAY3 info3;
+ NETDFS_DFS_ENUMARRAY4 info4;
+ NETDFS_DFS_ENUMARRAY200 info200;
+ NETDFS_DFS_ENUMARRAY300 info300;
+ } u;
+} NETDFS_DFS_ENUMINFO_CTR;
+
+typedef struct netdfs_dfs_EnumStruct {
+ uint32 level;
+ NETDFS_DFS_ENUMINFO_CTR e;
+} NETDFS_DFS_ENUMSTRUCT;
+
+typedef struct netdfs_q_dfs_GetManagerVersion {
+ uint32 dummy;
+} NETDFS_Q_DFS_GETMANAGERVERSION;
+
+typedef struct netdfs_r_dfs_GetManagerVersion {
+ uint32 exist_flag;
+} NETDFS_R_DFS_GETMANAGERVERSION;
+
+typedef struct netdfs_q_dfs_Add {
+ UNISTR2 path;
+ UNISTR2 server;
+ uint32 ptr0_share;
+ UNISTR2 share;
+ uint32 ptr0_comment;
+ UNISTR2 comment;
+ uint32 flags;
+} NETDFS_Q_DFS_ADD;
+
+typedef struct netdfs_r_dfs_Add {
+ WERROR status;
+} NETDFS_R_DFS_ADD;
+
+typedef struct netdfs_q_dfs_Remove {
+ UNISTR2 path;
+ uint32 ptr0_server;
+ UNISTR2 server;
+ uint32 ptr0_share;
+ UNISTR2 share;
+} NETDFS_Q_DFS_REMOVE;
+
+typedef struct netdfs_r_dfs_Remove {
+ WERROR status;
+} NETDFS_R_DFS_REMOVE;
+
+typedef struct netdfs_q_dfs_SetInfo {
+ uint32 dummy;
+} NETDFS_Q_DFS_SETINFO;
+
+typedef struct netdfs_r_dfs_SetInfo {
+ WERROR status;
+} NETDFS_R_DFS_SETINFO;
+
+typedef struct netdfs_q_dfs_GetInfo {
+ UNISTR2 path;
+ uint32 ptr0_server;
+ UNISTR2 server;
+ uint32 ptr0_share;
+ UNISTR2 share;
+ uint32 level;
+} NETDFS_Q_DFS_GETINFO;
+
+typedef struct netdfs_r_dfs_GetInfo {
+ NETDFS_DFS_INFO_CTR info;
+ WERROR status;
+} NETDFS_R_DFS_GETINFO;
+
+typedef struct netdfs_q_dfs_Enum {
+ uint32 level;
+ uint32 bufsize;
+ uint32 ptr0_info;
+ NETDFS_DFS_ENUMSTRUCT info;
+ uint32 ptr0_total;
+ uint32 total;
+} NETDFS_Q_DFS_ENUM;
+
+typedef struct netdfs_r_dfs_Enum {
+ uint32 ptr0_info;
+ NETDFS_DFS_ENUMSTRUCT info;
+ uint32 ptr0_total;
+ uint32 total;
+ WERROR status;
+} NETDFS_R_DFS_ENUM;
+
+typedef struct netdfs_q_dfs_Rename {
+ uint32 dummy;
+} NETDFS_Q_DFS_RENAME;
+
+typedef struct netdfs_r_dfs_Rename {
+ WERROR status;
+} NETDFS_R_DFS_RENAME;
+
+typedef struct netdfs_q_dfs_Move {
+ uint32 dummy;
+} NETDFS_Q_DFS_MOVE;
+
+typedef struct netdfs_r_dfs_Move {
+ WERROR status;
+} NETDFS_R_DFS_MOVE;
+
+typedef struct netdfs_q_dfs_ManagerGetConfigInfo {
+ uint32 dummy;
+} NETDFS_Q_DFS_MANAGERGETCONFIGINFO;
+
+typedef struct netdfs_r_dfs_ManagerGetConfigInfo {
+ WERROR status;
+} NETDFS_R_DFS_MANAGERGETCONFIGINFO;
+
+typedef struct netdfs_q_dfs_ManagerSendSiteInfo {
+ uint32 dummy;
+} NETDFS_Q_DFS_MANAGERSENDSITEINFO;
+
+typedef struct netdfs_r_dfs_ManagerSendSiteInfo {
+ WERROR status;
+} NETDFS_R_DFS_MANAGERSENDSITEINFO;
+
+typedef struct netdfs_q_dfs_AddFtRoot {
+ uint32 dummy;
+} NETDFS_Q_DFS_ADDFTROOT;
+
+typedef struct netdfs_r_dfs_AddFtRoot {
+ WERROR status;
+} NETDFS_R_DFS_ADDFTROOT;
+
+typedef struct netdfs_q_dfs_RemoveFtRoot {
+ uint32 dummy;
+} NETDFS_Q_DFS_REMOVEFTROOT;
+
+typedef struct netdfs_r_dfs_RemoveFtRoot {
+ WERROR status;
+} NETDFS_R_DFS_REMOVEFTROOT;
+
+typedef struct netdfs_q_dfs_AddStdRoot {
+ uint32 dummy;
+} NETDFS_Q_DFS_ADDSTDROOT;
+
+typedef struct netdfs_r_dfs_AddStdRoot {
+ WERROR status;
+} NETDFS_R_DFS_ADDSTDROOT;
+
+typedef struct netdfs_q_dfs_RemoveStdRoot {
+ uint32 dummy;
+} NETDFS_Q_DFS_REMOVESTDROOT;
+
+typedef struct netdfs_r_dfs_RemoveStdRoot {
+ WERROR status;
+} NETDFS_R_DFS_REMOVESTDROOT;
+
+typedef struct netdfs_q_dfs_ManagerInitialize {
+ uint32 dummy;
+} NETDFS_Q_DFS_MANAGERINITIALIZE;
+
+typedef struct netdfs_r_dfs_ManagerInitialize {
+ WERROR status;
+} NETDFS_R_DFS_MANAGERINITIALIZE;
+
+typedef struct netdfs_q_dfs_AddStdRootForced {
+ uint32 dummy;
+} NETDFS_Q_DFS_ADDSTDROOTFORCED;
+
+typedef struct netdfs_r_dfs_AddStdRootForced {
+ WERROR status;
+} NETDFS_R_DFS_ADDSTDROOTFORCED;
+
+typedef struct netdfs_q_dfs_GetDcAddress {
+ uint32 dummy;
+} NETDFS_Q_DFS_GETDCADDRESS;
+
+typedef struct netdfs_r_dfs_GetDcAddress {
+ WERROR status;
+} NETDFS_R_DFS_GETDCADDRESS;
+
+typedef struct netdfs_q_dfs_SetDcAddress {
+ uint32 dummy;
+} NETDFS_Q_DFS_SETDCADDRESS;
+
+typedef struct netdfs_r_dfs_SetDcAddress {
+ WERROR status;
+} NETDFS_R_DFS_SETDCADDRESS;
+
+typedef struct netdfs_q_dfs_FlushFtTable {
+ uint32 dummy;
+} NETDFS_Q_DFS_FLUSHFTTABLE;
+
+typedef struct netdfs_r_dfs_FlushFtTable {
+ WERROR status;
+} NETDFS_R_DFS_FLUSHFTTABLE;
+
+typedef struct netdfs_q_dfs_Add2 {
+ uint32 dummy;
+} NETDFS_Q_DFS_ADD2;
+
+typedef struct netdfs_r_dfs_Add2 {
+ WERROR status;
+} NETDFS_R_DFS_ADD2;
+
+typedef struct netdfs_q_dfs_Remove2 {
+ uint32 dummy;
+} NETDFS_Q_DFS_REMOVE2;
+
+typedef struct netdfs_r_dfs_Remove2 {
+ WERROR status;
+} NETDFS_R_DFS_REMOVE2;
+
+typedef struct netdfs_q_dfs_EnumEx {
+ uint32 dummy;
+} NETDFS_Q_DFS_ENUMEX;
+
+typedef struct netdfs_r_dfs_EnumEx {
+ WERROR status;
+} NETDFS_R_DFS_ENUMEX;
+
+typedef struct netdfs_q_dfs_SetInfo2 {
+ uint32 dummy;
+} NETDFS_Q_DFS_SETINFO2;
+
+typedef struct netdfs_r_dfs_SetInfo2 {
+ WERROR status;
+} NETDFS_R_DFS_SETINFO2;
+
+#endif /* _RPC_NETDFS_H */
diff --git a/source/include/rpc_ds.h b/source/include/rpc_ds.h
index 05258fb306c..4ca49871f6d 100644
--- a/source/include/rpc_ds.h
+++ b/source/include/rpc_ds.h
@@ -30,6 +30,7 @@
#define DS_ENUM_DOM_TRUSTS 0x28
+
/* macros for RPC's */
/* DSROLE_PRIMARY_DOMAIN_INFO_BASIC */
@@ -55,6 +56,8 @@
#define DS_DOMAIN_FUCNTION_2003_MIXED 1
#define DS_DOMAIN_FUNCTION_2003 2
+
+
typedef struct
{
uint16 machine_role;
@@ -78,6 +81,7 @@ typedef struct
#define DsRolePrimaryDomainInfoBasic 1
+
/* DS_Q_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() request */
typedef struct
{
@@ -135,33 +139,15 @@ typedef struct {
} DS_DOMAIN_TRUSTS_CTR;
-/* Trust flags */
-
#define DS_DOMAIN_IN_FOREST 0x0001 /* domains in the forest to which
we belong; even different domain trees */
#define DS_DOMAIN_DIRECT_OUTBOUND 0x0002 /* trusted domains */
-#define DS_DOMAIN_TREE_ROOT 0x0004 /* root of a forest */
+#define DS_DOMAIN_TREE_ROOT 0x0004 /* root of our forest; also available in
+ DsRoleGetPrimaryDomainInfo() */
#define DS_DOMAIN_PRIMARY 0x0008 /* our domain */
#define DS_DOMAIN_NATIVE_MODE 0x0010 /* native mode AD servers */
#define DS_DOMAIN_DIRECT_INBOUND 0x0020 /* trusting domains */
-/* Trust types */
-
-#define DS_DOMAIN_TRUST_TYPE_DOWNLEVEL 0x00000001
-#define DS_DOMAIN_TRUST_TYPE_UPLEVEL 0x00000002
-
-/* Trust attributes */
-
-#define DS_DOMAIN_TRUST_ATTRIB_NON_TRANSITIVE 0x00000001
-#define DS_DOMAIN_TRUST_ATTRIB_UPLEVEL_ONLY 0x00000002
-#define DS_DOMAIN_TRUST_ATTRIB_QUARANTINED_DOMAIN 0x00000004
-#define DS_DOMAIN_TRUST_ATTRIB_FOREST_TRANSITIVE 0x00000008
-#define DS_DOMAIN_TRUST_ATTRIB_CROSS_ORG 0x00000010
-#define DS_DOMAIN_TRUST_ATTRIB_IN_FOREST 0x00000020
-#define DS_DOMAIN_TRUST_ATTRIB_EXTERNAL 0x00000040
-
-
-
/* DS_Q_ENUM_DOM_TRUSTS - DsEnumerateDomainTrusts() request */
typedef struct
{
diff --git a/source/include/rpc_echo.h b/source/include/rpc_echo.h
new file mode 100644
index 00000000000..6b4ea6abfba
--- /dev/null
+++ b/source/include/rpc_echo.h
@@ -0,0 +1,75 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ Samba rpcecho definitions.
+
+ Copyright (C) Tim Potter 2003
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef _RPC_ECHO_H
+#define _RPC_ECHO_H
+
+#define ECHO_ADD_ONE 0x00
+#define ECHO_DATA 0x01
+#define ECHO_SINK_DATA 0x02
+#define ECHO_SOURCE_DATA 0x03
+
+typedef struct echo_q_add_one
+{
+ uint32 request;
+} ECHO_Q_ADD_ONE;
+
+typedef struct echo_r_add_one
+{
+ uint32 response;
+} ECHO_R_ADD_ONE;
+
+typedef struct echo_q_echo_data
+{
+ uint32 size;
+ char *data;
+} ECHO_Q_ECHO_DATA;
+
+typedef struct echo_r_echo_data
+{
+ uint32 size;
+ char *data;
+} ECHO_R_ECHO_DATA;
+
+typedef struct echo_q_source_data
+{
+ uint32 size;
+} ECHO_Q_SOURCE_DATA;
+
+typedef struct echo_r_source_data
+{
+ uint32 size;
+ char *data;
+} ECHO_R_SOURCE_DATA;
+
+typedef struct echo_q_sink_data
+{
+ uint32 size;
+ char *data;
+} ECHO_Q_SINK_DATA;
+
+typedef struct echo_r_sink_data
+{
+ int dummy; /* unused */
+} ECHO_R_SINK_DATA;
+
+#endif
diff --git a/source/include/rpc_eventlog.h b/source/include/rpc_eventlog.h
index 547568e93bd..5bede97d1c9 100644
--- a/source/include/rpc_eventlog.h
+++ b/source/include/rpc_eventlog.h
@@ -31,10 +31,20 @@
#define EVENTLOG_READEVENTLOG 0x0a
/* Eventlog read flags */
-/* defined in librpc/gen_ndr/eventlog.h */
+
+#define EVENTLOG_SEQUENTIAL_READ 0x0001
+#define EVENTLOG_SEEK_READ 0x0002
+#define EVENTLOG_FORWARDS_READ 0x0004
+#define EVENTLOG_BACKWARDS_READ 0x0008
/* Event types */
-/* defined in librpc/gen_ndr/eventlog.h */
+
+#define EVENTLOG_SUCCESS 0x0000
+#define EVENTLOG_ERROR_TYPE 0x0001
+#define EVENTLOG_WARNING_TYPE 0x0002
+#define EVENTLOG_INFORMATION_TYPE 0x0004
+#define EVENTLOG_AUDIT_SUCCESS 0x0008
+#define EVENTLOG_AUDIT_FAILURE 0x0010
/* Defines for TDB keys */
#define EVT_OLDEST_ENTRY "INFO/oldest_entry"
@@ -84,6 +94,18 @@ typedef struct {
typedef struct {
POLICY_HND handle;
+} EVENTLOG_Q_CLOSE_EVENTLOG;
+
+typedef struct {
+ POLICY_HND handle;
+ NTSTATUS status;
+} EVENTLOG_R_CLOSE_EVENTLOG;
+
+
+/***********************************/
+
+typedef struct {
+ POLICY_HND handle;
} EVENTLOG_Q_GET_NUM_RECORDS;
typedef struct {
diff --git a/source/include/rpc_misc.h b/source/include/rpc_misc.h
index 62bef2cb380..7404f5669d2 100644
--- a/source/include/rpc_misc.h
+++ b/source/include/rpc_misc.h
@@ -93,6 +93,10 @@ enum unistr2_term_codes { UNI_FLAGS_NONE = 0, UNI_STR_TERMINATE = 1, UNI_MAXLEN_
**********************************************************************/
typedef struct policy_handle POLICY_HND;
+typedef struct {
+ uint32 ptr_hnd; /* pointer to enumeration handle */
+ uint32 handle; /* enumeration handle */
+} ENUM_HND;
#define OUR_HANDLE(hnd) (((hnd)==NULL) ? "NULL" :\
( IVAL((hnd)->uuid.node,2) == (uint32)sys_getpid() ? "OURS" : \
diff --git a/source/include/rpc_netlogon.h b/source/include/rpc_netlogon.h
index 940709346f1..324755a2659 100644
--- a/source/include/rpc_netlogon.h
+++ b/source/include/rpc_netlogon.h
@@ -32,7 +32,6 @@
#define NET_AUTH 0x05
#define NET_SRVPWSET 0x06
#define NET_SAM_DELTAS 0x07
-#define NET_GETDCNAME 0x0b
#define NET_LOGON_CTRL 0x0c
#define NET_GETANYDCNAME 0x0d
#define NET_AUTH2 0x0f
@@ -46,6 +45,11 @@
#define NET_DSR_GETDCNAMEEX2 0x22
#define NET_SAMLOGON_EX 0x27
+/* Secure Channel types. used in NetrServerAuthenticate negotiation */
+#define SEC_CHAN_WKSTA 2
+#define SEC_CHAN_DOMAIN 4
+#define SEC_CHAN_BDC 6
+
/* Returned delta types */
#define SAM_DELTA_DOMAIN_INFO 0x01
#define SAM_DELTA_GROUP_INFO 0x02
@@ -64,6 +68,11 @@
#define SAM_DELTA_DELETE_USER 0x15
#define SAM_DELTA_MODIFIED_COUNT 0x16
+/* SAM database types */
+#define SAM_DATABASE_DOMAIN 0x00 /* Domain users and groups */
+#define SAM_DATABASE_BUILTIN 0x01 /* BUILTIN users and groups */
+#define SAM_DATABASE_PRIVS 0x02 /* Privileges */
+
/* flags use when sending a NETLOGON_CONTROL request */
#define NETLOGON_CONTROL_SYNC 0x2
@@ -91,7 +100,6 @@
#define LOGON_RESOURCE_GROUPS 0x00000200
#define LOGON_PROFILE_PATH_RETURNED 0x00000400
#define LOGON_GRACE_LOGON 0x01000000
-#define LOGON_KRB5_FAIL_CLOCK_SKEW 0x02000000
#define SE_GROUP_MANDATORY 0x00000001
#define SE_GROUP_ENABLED_BY_DEFAULT 0x00000002
@@ -428,23 +436,6 @@ typedef struct net_r_getanydcname {
WERROR status;
} NET_R_GETANYDCNAME;
-
-/* NET_Q_GETDCNAME - Ask a DC for a trusted DC name */
-
-typedef struct net_q_getdcname {
- UNISTR2 uni_logon_server;
- uint32 ptr_domainname;
- UNISTR2 uni_domainname;
-} NET_Q_GETDCNAME;
-
-/* NET_R_GETDCNAME - Ask a DC for a trusted DC name */
-
-typedef struct net_r_getdcname {
- uint32 ptr_dcname;
- UNISTR2 uni_dcname;
- WERROR status;
-} NET_R_GETDCNAME;
-
/* NET_Q_TRUST_DOM_LIST - LSA Query Trusted Domains */
typedef struct net_q_trust_dom_info {
uint32 ptr; /* undocumented buffer pointer */
diff --git a/source/include/rpc_reg.h b/source/include/rpc_reg.h
new file mode 100644
index 00000000000..c454a1d6f94
--- /dev/null
+++ b/source/include/rpc_reg.h
@@ -0,0 +1,470 @@
+/*
+ Unix SMB/CIFS implementation.
+ SMB parameters and setup
+ Copyright (C) Andrew Tridgell 1992-1997.
+ Copyright (C) Luke Kenneth Casson Leighton 1996-1997.
+ Copyright (C) Paul Ashton 1997.
+ Copyright (C) Jeremy Cooper 2004.
+ Copyright (C) Gerald Carter 2002-2005.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef _RPC_REG_H /* _RPC_REG_H */
+#define _RPC_REG_H
+
+/* RPC opnum */
+
+#define REG_OPEN_HKCR 0x00
+#define REG_OPEN_HKLM 0x02
+#define REG_OPEN_HKPD 0x03
+#define REG_OPEN_HKU 0x04
+#define REG_CLOSE 0x05
+#define REG_CREATE_KEY_EX 0x06
+#define REG_DELETE_KEY 0x07
+#define REG_DELETE_VALUE 0x08
+#define REG_ENUM_KEY 0x09
+#define REG_ENUM_VALUE 0x0a
+#define REG_FLUSH_KEY 0x0b
+#define REG_GET_KEY_SEC 0x0c
+#define REG_OPEN_ENTRY 0x0f
+#define REG_QUERY_KEY 0x10
+#define REG_QUERY_VALUE 0x11
+#define REG_RESTORE_KEY 0x13
+#define REG_SAVE_KEY 0x14
+#define REG_SET_KEY_SEC 0x15
+#define REG_SET_VALUE 0x16
+#define REG_SHUTDOWN 0x18
+#define REG_ABORT_SHUTDOWN 0x19
+#define REG_OPEN_HKPT 0x20
+#define REG_GETVERSION 0x1a
+#define REG_SHUTDOWN_EX 0x1e
+
+
+#define HKEY_CLASSES_ROOT 0x80000000
+#define HKEY_CURRENT_USER 0x80000001
+#define HKEY_LOCAL_MACHINE 0x80000002
+#define HKEY_USERS 0x80000003
+#define HKEY_PERFORMANCE_DATA 0x80000004
+
+#define KEY_HKLM "HKLM"
+#define KEY_HKU "HKU"
+#define KEY_HKCR "HKCR"
+#define KEY_HKPD "HKPD"
+#define KEY_HKPT "HKPT"
+#define KEY_SERVICES "HKLM\\SYSTEM\\CurrentControlSet\\Services"
+#define KEY_PRINTING "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print"
+#define KEY_PRINTING_2K "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers"
+#define KEY_PRINTING_PORTS "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports"
+#define KEY_EVENTLOG "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Eventlog"
+#define KEY_SHARES "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Shares"
+#define KEY_TREE_ROOT ""
+
+/* Registry data types */
+
+#define REG_NONE 0
+#define REG_SZ 1
+#define REG_EXPAND_SZ 2
+#define REG_BINARY 3
+#define REG_DWORD 4
+#define REG_DWORD_LE 4 /* DWORD, little endian */
+#define REG_DWORD_BE 5 /* DWORD, big endian */
+#define REG_LINK 6
+#define REG_MULTI_SZ 7
+#define REG_RESOURCE_LIST 8
+#define REG_FULL_RESOURCE_DESCRIPTOR 9
+#define REG_RESOURCE_REQUIREMENTS_LIST 10
+
+/*
+ * Registry key types
+ * Most keys are going to be GENERIC -- may need a better name?
+ * HKPD and HKPT are used by reg_perfcount.c
+ * they are special keys that contain performance data
+ */
+#define REG_KEY_GENERIC 0
+#define REG_KEY_HKPD 1
+#define REG_KEY_HKPT 2
+
+/*
+ * container for function pointers to enumeration routines
+ * for virtual registry view
+ */
+
+typedef struct {
+ /* functions for enumerating subkeys and values */
+ int (*fetch_subkeys)( const char *key, REGSUBKEY_CTR *subkeys);
+ int (*fetch_values) ( const char *key, REGVAL_CTR *val );
+ BOOL (*store_subkeys)( const char *key, REGSUBKEY_CTR *subkeys );
+ BOOL (*store_values)( const char *key, REGVAL_CTR *val );
+ BOOL (*reg_access_check)( const char *keyname, uint32 requested, uint32 *granted, NT_USER_TOKEN *token );
+} REGISTRY_OPS;
+
+typedef struct {
+ const char *keyname; /* full path to name of key */
+ REGISTRY_OPS *ops; /* registry function hooks */
+} REGISTRY_HOOK;
+
+
+/* structure to store the registry handles */
+
+typedef struct _RegistryKey {
+ uint32 type;
+ char *name; /* full name of registry key */
+ uint32 access_granted;
+ REGISTRY_HOOK *hook;
+} REGISTRY_KEY;
+
+/*
+ * RPC REGISTRY STRUCTURES
+ */
+
+/***********************************************/
+
+typedef struct {
+ uint16 *server;
+ uint32 access;
+} REG_Q_OPEN_HIVE;
+
+typedef struct {
+ POLICY_HND pol;
+ WERROR status;
+} REG_R_OPEN_HIVE;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol;
+} REG_Q_FLUSH_KEY;
+
+typedef struct {
+ WERROR status;
+} REG_R_FLUSH_KEY;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND handle;
+ uint32 sec_info;
+ uint32 ptr;
+ BUFHDR hdr_sec;
+ SEC_DESC_BUF *data;
+} REG_Q_SET_KEY_SEC;
+
+typedef struct {
+ WERROR status;
+} REG_R_SET_KEY_SEC;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND handle;
+ uint32 sec_info;
+ uint32 ptr;
+ BUFHDR hdr_sec;
+ SEC_DESC_BUF *data;
+} REG_Q_GET_KEY_SEC;
+
+typedef struct {
+ uint32 sec_info;
+ uint32 ptr;
+ BUFHDR hdr_sec;
+ SEC_DESC_BUF *data;
+ WERROR status;
+} REG_R_GET_KEY_SEC;
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND handle;
+ UNISTR4 name;
+ uint32 type;
+ RPC_DATA_BLOB value;
+ uint32 size;
+} REG_Q_SET_VALUE;
+
+typedef struct {
+ WERROR status;
+} REG_R_SET_VALUE;
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol;
+ uint32 val_index;
+ UNISTR4 name;
+ uint32 *type;
+ REGVAL_BUFFER *value; /* value, in byte buffer */
+ uint32 *buffer_len;
+ uint32 *name_len;
+} REG_Q_ENUM_VALUE;
+
+typedef struct {
+ UNISTR4 name;
+ uint32 *type;
+ REGVAL_BUFFER *value;
+ uint32 *buffer_len1;
+ uint32 *buffer_len2;
+ WERROR status;
+} REG_R_ENUM_VALUE;
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND handle;
+ UNISTR4 name;
+ UNISTR4 key_class;
+ uint32 options;
+ uint32 access;
+
+ /* FIXME! collapse all this into one structure */
+ uint32 *sec_info;
+ uint32 ptr2;
+ BUFHDR hdr_sec;
+ uint32 ptr3;
+ SEC_DESC_BUF *data;
+
+ uint32 *disposition;
+} REG_Q_CREATE_KEY_EX;
+
+typedef struct {
+ POLICY_HND handle;
+ uint32 disposition;
+ WERROR status;
+} REG_R_CREATE_KEY_EX;
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND handle;
+ UNISTR4 name;
+} REG_Q_DELETE_KEY;
+
+typedef struct {
+ WERROR status;
+} REG_R_DELETE_KEY;
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND handle;
+ UNISTR4 name;
+} REG_Q_DELETE_VALUE;
+
+typedef struct {
+ WERROR status;
+} REG_R_DELETE_VALUE;
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol;
+ UNISTR4 key_class;
+} REG_Q_QUERY_KEY;
+
+typedef struct {
+ UNISTR4 key_class;
+ uint32 num_subkeys;
+ uint32 max_subkeylen;
+ uint32 reserved; /* 0x0000 0000 - according to MSDN (max_subkeysize?) */
+ uint32 num_values;
+ uint32 max_valnamelen;
+ uint32 max_valbufsize;
+ uint32 sec_desc; /* 0x0000 0078 */
+ NTTIME mod_time; /* modified time */
+ WERROR status;
+} REG_R_QUERY_KEY;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol;
+} REG_Q_GETVERSION;
+
+typedef struct {
+ uint32 win_version;
+ WERROR status;
+} REG_R_GETVERSION;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol;
+ UNISTR4 filename;
+ uint32 flags;
+} REG_Q_RESTORE_KEY;
+
+typedef struct {
+ WERROR status; /* return status */
+} REG_R_RESTORE_KEY;
+
+
+/***********************************************/
+
+
+/* I have no idea if this is correct since I
+ have not seen the full structure on the wire
+ as of yet */
+
+typedef struct {
+ uint32 max_len;
+ uint32 len;
+ SEC_DESC *secdesc;
+} REG_SEC_DESC_BUF;
+
+typedef struct {
+ uint32 size; /* size in bytes of security descriptor */
+ REG_SEC_DESC_BUF secdesc;
+ uint8 inherit; /* see MSDN for a description */
+} SECURITY_ATTRIBUTE;
+
+typedef struct {
+ POLICY_HND pol;
+ UNISTR4 filename;
+ SECURITY_ATTRIBUTE *sec_attr;
+} REG_Q_SAVE_KEY;
+
+typedef struct {
+ WERROR status; /* return status */
+} REG_R_SAVE_KEY;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol; /* policy handle */
+} REG_Q_CLOSE;
+
+typedef struct {
+ POLICY_HND pol;
+ WERROR status;
+} REG_R_CLOSE;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol;
+ uint32 key_index;
+ uint16 key_name_len;
+ uint16 unknown_1; /* 0x0414 */
+ uint32 ptr1;
+ uint32 unknown_2; /* 0x0000 020A */
+ uint8 pad1[8];
+ uint32 ptr2;
+ uint8 pad2[8];
+ uint32 ptr3;
+ NTTIME time;
+} REG_Q_ENUM_KEY;
+
+typedef struct {
+ UNISTR4 keyname;
+ UNISTR4 *classname;
+ NTTIME *time;
+ WERROR status; /* return status */
+} REG_R_ENUM_KEY;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol; /* policy handle */
+ UNISTR4 name;
+
+ uint32 ptr_reserved; /* pointer */
+
+ uint32 ptr_buf; /* the next three fields follow if ptr_buf != 0 */
+ uint32 ptr_bufsize;
+ uint32 bufsize;
+ uint32 buf_unk;
+
+ uint32 unk1;
+ uint32 ptr_buflen;
+ uint32 buflen;
+
+ uint32 ptr_buflen2;
+ uint32 buflen2;
+
+} REG_Q_QUERY_VALUE;
+
+typedef struct {
+ uint32 *type;
+ REGVAL_BUFFER *value; /* key value */
+ uint32 *buf_max_len;
+ uint32 *buf_len;
+ WERROR status; /* return status */
+} REG_R_QUERY_VALUE;
+
+
+/***********************************************/
+
+typedef struct {
+ POLICY_HND pol;
+ UNISTR4 name;
+ uint32 unknown_0; /* 32 bit unknown - 0x0000 0000 */
+ uint32 access;
+} REG_Q_OPEN_ENTRY;
+
+typedef struct {
+ POLICY_HND handle;
+ WERROR status;
+} REG_R_OPEN_ENTRY;
+
+/***********************************************/
+
+typedef struct {
+ uint16 *server;
+ UNISTR4 *message;
+ uint32 timeout; /* in seconds */
+ uint8 force; /* boolean: force shutdown */
+ uint8 reboot; /* boolean: reboot on shutdown */
+} REG_Q_SHUTDOWN;
+
+typedef struct {
+ WERROR status; /* return status */
+} REG_R_SHUTDOWN;
+
+/***********************************************/
+
+typedef struct {
+ uint16 *server;
+ UNISTR4 *message;
+ uint32 timeout; /* in seconds */
+ uint8 force; /* boolean: force shutdown */
+ uint8 reboot; /* boolean: reboot on shutdown */
+ uint32 reason; /* reason - must be defined code */
+} REG_Q_SHUTDOWN_EX;
+
+typedef struct {
+ WERROR status;
+} REG_R_SHUTDOWN_EX;
+
+/***********************************************/
+
+typedef struct {
+ uint16 *server;
+} REG_Q_ABORT_SHUTDOWN;
+
+typedef struct {
+ WERROR status;
+} REG_R_ABORT_SHUTDOWN;
+
+
+#endif /* _RPC_REG_H */
+
diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h
index d34ecdb5fbb..575cd78ef2f 100644
--- a/source/include/rpc_samr.h
+++ b/source/include/rpc_samr.h
@@ -4,7 +4,7 @@
Copyright (C) Andrew Tridgell 1992-2000
Copyright (C) Luke Kenneth Casson Leighton 1996-2000
Copyright (C) Paul Ashton 1997-2000
- Copyright (C) Jean François Micouleau 1998-2001
+ Copyright (C) Jean François Micouleau 1998-2001
Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2002
@@ -128,11 +128,11 @@ SamrTestPrivateFunctionsUser
#define SAMR_REMOVE_SID_FOREIGN_DOMAIN 0x2d
#define SAMR_QUERY_DOMAIN_INFO2 0x2e /* looks like an alias for SAMR_QUERY_DOMAIN_INFO */
#define SAMR_UNKNOWN_2f 0x2f
-#define SAMR_QUERY_DISPINFO2 0x30 /* Alias for SAMR_QUERY_DISPINFO
+#define SAMR_QUERY_DISPINFO3 0x30 /* Alias for SAMR_QUERY_DISPINFO
with info level 3 */
-#define SAMR_GET_DISPENUM_INDEX2 0x31
+#define SAMR_UNKNOWN_31 0x31
#define SAMR_CREATE_USER 0x32
-#define SAMR_QUERY_DISPINFO3 0x33 /* Alias for SAMR_QUERY_DISPINFO
+#define SAMR_QUERY_DISPINFO4 0x33 /* Alias for SAMR_QUERY_DISPINFO
with info level 4 */
#define SAMR_ADDMULTI_ALIASMEM 0x34
@@ -289,6 +289,7 @@ typedef struct sam_user_info_25
UNISTR2 uni_comment;
UNISTR2 uni_munged_dial ; /* munged path name and dial-back tel no */
LOGON_HRS logon_hrs;
+
} SAM_USER_INFO_25;
/* SAM_USER_INFO_26 */
diff --git a/source/include/rpc_secdes.h b/source/include/rpc_secdes.h
index 8396040a9b1..6bfddcef01f 100644
--- a/source/include/rpc_secdes.h
+++ b/source/include/rpc_secdes.h
@@ -38,7 +38,6 @@
#define SEC_RIGHTS_EXTENDED 0x100 /* change/reset password, receive/send as*/
#define SEC_RIGHTS_CHANGE_PASSWD SEC_RIGHTS_EXTENDED
#define SEC_RIGHTS_RESET_PASSWD SEC_RIGHTS_EXTENDED
-#define SEC_RIGHTS_APPLY_GROUP_POLICY SEC_RIGHTS_EXTENDED
#define SEC_RIGHTS_FULL_CTRL 0xf01ff
#define SEC_ACE_OBJECT_PRESENT 0x00000001 /* thanks for Jim McDonough <jmcd@us.ibm.com> */
@@ -76,7 +75,22 @@
typedef uint32 SEC_ACCESS;
/* SEC_ACE */
-typedef struct security_ace SEC_ACE;
+typedef struct security_ace_info {
+ uint8 type; /* xxxx_xxxx_ACE_TYPE - e.g allowed / denied etc */
+ uint8 flags; /* xxxx_INHERIT_xxxx - e.g OBJECT_INHERIT_ACE */
+ uint16 size;
+
+ SEC_ACCESS access_mask;
+
+ /* this stuff may be present when type is XXXX_TYPE_XXXX_OBJECT */
+ uint32 obj_flags; /* xxxx_ACE_OBJECT_xxxx e.g present/inherited present etc */
+ struct GUID obj_guid; /* object GUID */
+ struct GUID inh_guid; /* inherited object GUID */
+ /* eof object stuff */
+
+ DOM_SID trustee;
+
+} SEC_ACE;
#define SEC_ACE_HEADER_SIZE (2 * sizeof(uint8) + sizeof(uint16) + sizeof(uint32))
#ifndef ACL_REVISION
@@ -85,7 +99,14 @@ typedef struct security_ace SEC_ACE;
#ifndef _SEC_ACL
/* SEC_ACL */
-typedef struct security_acl SEC_ACL;
+typedef struct security_acl_info {
+ uint16 revision; /* 0x0003 */
+ uint16 size; /* size in bytes of the entire ACL structure */
+ uint32 num_aces; /* number of Access Control Entries */
+
+ SEC_ACE *aces;
+
+} SEC_ACL;
#define SEC_ACL_HEADER_SIZE (2 * sizeof(uint16) + sizeof(uint32))
#define _SEC_ACL
#endif
@@ -96,14 +117,35 @@ typedef struct security_acl SEC_ACL;
#ifndef _SEC_DESC
/* SEC_DESC */
-typedef struct security_descriptor SEC_DESC;
+typedef struct security_descriptor_info {
+ uint16 revision; /* 0x0001 */
+ uint16 type; /* SEC_DESC_xxxx flags */
+
+ uint32 off_owner_sid; /* offset to owner sid */
+ uint32 off_grp_sid ; /* offset to group sid */
+ uint32 off_sacl ; /* offset to system list of permissions */
+ uint32 off_dacl ; /* offset to list of permissions */
+
+ SEC_ACL *dacl; /* user ACL */
+ SEC_ACL *sacl; /* system ACL */
+ DOM_SID *owner_sid;
+ DOM_SID *group_sid;
+
+} SEC_DESC;
#define SEC_DESC_HEADER_SIZE (2 * sizeof(uint16) + 4 * sizeof(uint32))
#define _SEC_DESC
#endif
#ifndef _SEC_DESC_BUF
/* SEC_DESC_BUF */
-typedef struct sec_desc_buf SEC_DESC_BUF;
+typedef struct sec_desc_buf_info {
+ uint32 max_len;
+ uint32 ptr;
+ uint32 len;
+
+ SEC_DESC *sec;
+
+} SEC_DESC_BUF;
#define _SEC_DESC_BUF
#endif
diff --git a/source/include/rpc_shutdown.h b/source/include/rpc_shutdown.h
new file mode 100644
index 00000000000..a9d86aec26c
--- /dev/null
+++ b/source/include/rpc_shutdown.h
@@ -0,0 +1,75 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003.
+ Copyright (C) Gerald (Jerry) Carter 2005.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef _RPC_SHUTDOWN_H /* _RPC_SHUTDOWN_H */
+#define _RPC_SHUTDOWN_H
+
+
+/* opnums */
+
+#define SHUTDOWN_INIT 0x00
+#define SHUTDOWN_ABORT 0x01
+#define SHUTDOWN_INIT_EX 0x02
+
+
+/***********************************************/
+
+typedef struct {
+ uint16 *server;
+ UNISTR4 *message;
+ uint32 timeout; /* in seconds */
+ uint8 force; /* boolean: force shutdown */
+ uint8 reboot; /* boolean: reboot on shutdown */
+} SHUTDOWN_Q_INIT;
+
+typedef struct {
+ WERROR status; /* return status */
+} SHUTDOWN_R_INIT;
+
+/***********************************************/
+
+typedef struct {
+ uint16 *server;
+ UNISTR4 *message;
+ uint32 timeout; /* in seconds */
+ uint8 force; /* boolean: force shutdown */
+ uint8 reboot; /* boolean: reboot on shutdown */
+ uint32 reason; /* reason - must be defined code */
+} SHUTDOWN_Q_INIT_EX;
+
+typedef struct {
+ WERROR status;
+} SHUTDOWN_R_INIT_EX;
+
+/***********************************************/
+
+typedef struct {
+ uint16 *server;
+} SHUTDOWN_Q_ABORT;
+
+typedef struct {
+ WERROR status;
+} SHUTDOWN_R_ABORT;
+
+
+
+#endif /* _RPC_SHUTDOWN_H */
+
diff --git a/source/include/rpc_srvsvc.h b/source/include/rpc_srvsvc.h
new file mode 100644
index 00000000000..62acce58050
--- /dev/null
+++ b/source/include/rpc_srvsvc.h
@@ -0,0 +1,884 @@
+/*
+ Unix SMB/CIFS implementation.
+ SMB parameters and setup
+ Copyright (C) Andrew Tridgell 1992-1997
+ Copyright (C) Luke Kenneth Casson Leighton 1996-1997
+ Copyright (C) Paul Ashton 1997
+ Copyright (C) Nigel Williams 2001
+ Copyright (C) Gerald (Jerry) Carter 2006.
+
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef _RPC_SRVSVC_H /* _RPC_SRVSVC_H */
+#define _RPC_SRVSVC_H
+
+/* srvsvc pipe */
+#define SRV_NET_CONN_ENUM 0x08
+#define SRV_NET_FILE_ENUM 0x09
+#define SRV_NET_FILE_CLOSE 0x0b
+#define SRV_NET_SESS_ENUM 0x0c
+#define SRV_NET_SESS_DEL 0x0d
+#define SRV_NET_SHARE_ADD 0x0e
+#define SRV_NET_SHARE_ENUM_ALL 0x0f
+#define SRV_NET_SHARE_GET_INFO 0x10
+#define SRV_NET_SHARE_SET_INFO 0x11
+#define SRV_NET_SHARE_DEL 0x12
+#define SRV_NET_SHARE_DEL_STICKY 0x13
+#define SRV_NET_SRV_GET_INFO 0x15
+#define SRV_NET_SRV_SET_INFO 0x16
+#define SRV_NET_DISK_ENUM 0x17
+#define SRV_NET_REMOTE_TOD 0x1c
+#define SRV_NET_NAME_VALIDATE 0x21
+#define SRV_NET_SHARE_ENUM 0x24
+#define SRV_NET_FILE_QUERY_SECDESC 0x27
+#define SRV_NET_FILE_SET_SECDESC 0x28
+
+#define MAX_SERVER_DISK_ENTRIES 15
+
+typedef struct disk_info {
+ uint32 unknown;
+ UNISTR3 disk_name;
+} DISK_INFO;
+
+typedef struct disk_enum_container {
+ uint32 level;
+ uint32 entries_read;
+ uint32 unknown;
+ uint32 disk_info_ptr;
+ DISK_INFO *disk_info;
+} DISK_ENUM_CONTAINER;
+
+typedef struct net_srv_disk_enum {
+ uint32 ptr_srv_name; /* pointer (to server name?) */
+ UNISTR2 uni_srv_name; /* server name */
+
+ DISK_ENUM_CONTAINER disk_enum_ctr;
+
+ uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
+ uint32 total_entries; /* total number of entries */
+ ENUM_HND enum_hnd;
+ WERROR status; /* return status */
+} SRV_Q_NET_DISK_ENUM, SRV_R_NET_DISK_ENUM;
+
+/***************************/
+
+typedef struct {
+ UNISTR2 *servername;
+ UNISTR2 sharename;
+ uint32 type;
+ uint32 flags;
+ WERROR status;
+} SRV_Q_NET_NAME_VALIDATE;
+
+typedef struct {
+ WERROR status;
+} SRV_R_NET_NAME_VALIDATE;
+
+/***************************/
+
+/* 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
+
+typedef struct {
+ UNISTR2 *sharename;
+} SESS_INFO_0;
+
+typedef struct {
+ uint32 num_entries_read;
+ uint32 ptr_sess_info;
+ uint32 num_entries_read2;
+ SESS_INFO_0 info_0[MAX_SESS_ENTRIES];
+} SRV_SESS_INFO_0;
+
+typedef struct {
+ UNISTR2 *sharename;
+ UNISTR2 *username;
+ uint32 num_opens;
+ uint32 open_time;
+ uint32 idle_time;
+ uint32 user_flags;
+} SESS_INFO_1;
+
+typedef struct {
+ uint32 num_entries_read;
+ uint32 ptr_sess_info;
+ uint32 num_entries_read2;
+ SESS_INFO_1 info_1[MAX_SESS_ENTRIES];
+} SRV_SESS_INFO_1;
+
+typedef struct {
+ uint32 switch_value;
+ uint32 ptr_sess_ctr;
+ union {
+ SRV_SESS_INFO_0 info0;
+ SRV_SESS_INFO_1 info1;
+ } sess;
+
+} SRV_SESS_INFO_CTR;
+
+typedef struct {
+ UNISTR2 *servername;
+ UNISTR2 *qualifier;
+ UNISTR2 *username;
+ uint32 sess_level;
+ SRV_SESS_INFO_CTR *ctr;
+ uint32 preferred_len;
+ ENUM_HND enum_hnd;
+} SRV_Q_NET_SESS_ENUM;
+
+typedef struct {
+ uint32 sess_level;
+ SRV_SESS_INFO_CTR *ctr;
+ uint32 total_entries;
+ ENUM_HND enum_hnd;
+ WERROR status;
+} SRV_R_NET_SESS_ENUM;
+
+/***************************/
+
+/* SRV_Q_NET_SESS_DEL */
+typedef struct q_net_sess_del
+{
+ uint32 ptr_srv_name; /* pointer (to server name?) */
+ UNISTR2 uni_srv_name; /* server name */
+
+ uint32 ptr_cli_name; /* pointer (to qualifier name) */
+ UNISTR2 uni_cli_name; /* qualifier name "\\qualifier" */
+
+ uint32 ptr_user_name; /* pointer (to user name */
+ UNISTR2 uni_user_name; /* user name */
+
+} SRV_Q_NET_SESS_DEL;
+
+/* SRV_R_NET_SESS_DEL */
+typedef struct r_net_sess_del
+{
+ WERROR status; /* return status */
+
+} SRV_R_NET_SESS_DEL;
+
+/* CONN_INFO_0 (pointers to level 0 connection info strings) */
+typedef struct ptr_conn_info0
+{
+ uint32 id; /* connection id. */
+
+} CONN_INFO_0;
+
+/* oops - this is going to take up a *massive* amount of stack. */
+/* the UNISTR2s already have 1024 uint16 chars in them... */
+#define MAX_CONN_ENTRIES 32
+
+/* SRV_CONN_INFO_0 */
+typedef struct srv_conn_info_0_info
+{
+ uint32 num_entries_read; /* EntriesRead */
+ uint32 ptr_conn_info; /* Buffer */
+ uint32 num_entries_read2; /* EntriesRead */
+
+ CONN_INFO_0 info_0 [MAX_CONN_ENTRIES]; /* connection entry pointers */
+
+} SRV_CONN_INFO_0;
+
+/* CONN_INFO_1 (pointers to level 1 connection info strings) */
+typedef struct ptr_conn_info1
+{
+ uint32 id; /* connection id */
+ uint32 type; /* 0x3 */
+ uint32 num_opens;
+ uint32 num_users;
+ uint32 open_time;
+
+ uint32 ptr_usr_name; /* pointer to user name. */
+ uint32 ptr_net_name; /* pointer to network name (e.g IPC$). */
+
+} CONN_INFO_1;
+
+/* CONN_INFO_1_STR (level 1 connection info strings) */
+typedef struct str_conn_info1
+{
+ UNISTR2 uni_usr_name; /* unicode string of user */
+ UNISTR2 uni_net_name; /* unicode string of name */
+
+} CONN_INFO_1_STR;
+
+/* SRV_CONN_INFO_1 */
+typedef struct srv_conn_info_1_info
+{
+ uint32 num_entries_read; /* EntriesRead */
+ uint32 ptr_conn_info; /* Buffer */
+ uint32 num_entries_read2; /* EntriesRead */
+
+ CONN_INFO_1 info_1 [MAX_CONN_ENTRIES]; /* connection entry pointers */
+ CONN_INFO_1_STR info_1_str[MAX_CONN_ENTRIES]; /* connection entry strings */
+
+} SRV_CONN_INFO_1;
+
+/* SRV_CONN_INFO_CTR */
+typedef struct srv_conn_info_ctr_info
+{
+ uint32 switch_value; /* switch value */
+ uint32 ptr_conn_ctr; /* pointer to conn info union */
+ union
+ {
+ SRV_CONN_INFO_0 info0; /* connection info level 0 */
+ SRV_CONN_INFO_1 info1; /* connection info level 1 */
+
+ } conn;
+
+} SRV_CONN_INFO_CTR;
+
+
+/* SRV_Q_NET_CONN_ENUM */
+typedef struct q_net_conn_enum_info
+{
+ uint32 ptr_srv_name; /* pointer (to server name) */
+ UNISTR2 uni_srv_name; /* server name "\\server" */
+
+ uint32 ptr_qual_name; /* pointer (to qualifier name) */
+ UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
+
+ uint32 conn_level; /* connection level */
+
+ SRV_CONN_INFO_CTR *ctr;
+
+ uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
+ ENUM_HND enum_hnd;
+
+} SRV_Q_NET_CONN_ENUM;
+
+/* SRV_R_NET_CONN_ENUM */
+typedef struct r_net_conn_enum_info
+{
+ uint32 conn_level; /* share level */
+
+ SRV_CONN_INFO_CTR *ctr;
+
+ uint32 total_entries; /* total number of entries */
+ ENUM_HND enum_hnd;
+
+ WERROR status; /* return status */
+
+} SRV_R_NET_CONN_ENUM;
+
+/* SH_INFO_0 */
+typedef struct ptr_share_info0
+{
+ uint32 ptr_netname; /* pointer to net name. */
+} SH_INFO_0;
+
+/* SH_INFO_0_STR (level 0 share info strings) */
+typedef struct str_share_info0
+{
+ SH_INFO_0 *ptrs;
+
+ UNISTR2 uni_netname; /* unicode string of net name */
+
+} SH_INFO_0_STR;
+
+/* SRV_SHARE_INFO_0 */
+typedef struct share_info_0_info
+{
+ SH_INFO_0 info_0;
+ SH_INFO_0_STR info_0_str;
+
+} SRV_SHARE_INFO_0;
+
+/* SH_INFO_1 (pointers to level 1 share info strings) */
+typedef struct ptr_share_info1
+{
+ uint32 ptr_netname; /* pointer to net name. */
+ uint32 type; /* ipc, print, disk ... */
+ uint32 ptr_remark; /* pointer to comment. */
+
+} SH_INFO_1;
+
+/* SH_INFO_1_STR (level 1 share info strings) */
+typedef struct str_share_info1
+{
+ SH_INFO_1 *ptrs;
+
+ UNISTR2 uni_netname; /* unicode string of net name */
+ UNISTR2 uni_remark; /* unicode string of comment */
+
+} SH_INFO_1_STR;
+
+/* SRV_SHARE_INFO_1 */
+typedef struct share_info_1_info
+{
+ SH_INFO_1 info_1;
+ SH_INFO_1_STR info_1_str;
+
+} SRV_SHARE_INFO_1;
+
+/* SH_INFO_2 (pointers to level 2 share info strings) */
+typedef struct ptr_share_info2
+{
+ uint32 ptr_netname; /* pointer to net name. */
+ uint32 type; /* ipc, print, disk ... */
+ uint32 ptr_remark; /* pointer to comment. */
+ uint32 perms; /* permissions */
+ uint32 max_uses; /* maximum uses */
+ uint32 num_uses; /* current uses */
+ uint32 ptr_path; /* pointer to path name */
+ uint32 ptr_passwd; /* pointer to password */
+
+} SH_INFO_2;
+
+/* SH_INFO_2_STR (level 2 share info strings) */
+typedef struct str_share_info2
+{
+ SH_INFO_2 *ptrs;
+
+ UNISTR2 uni_netname; /* unicode string of net name (e.g NETLOGON) */
+ UNISTR2 uni_remark; /* unicode string of comment (e.g "Logon server share") */
+ UNISTR2 uni_path; /* unicode string of local path (e.g c:\winnt\system32\repl\import\scripts) */
+ UNISTR2 uni_passwd; /* unicode string of password - presumably for share level security (e.g NULL) */
+
+} SH_INFO_2_STR;
+
+/* SRV_SHARE_INFO_2 */
+typedef struct share_info_2_info
+{
+ SH_INFO_2 info_2;
+ SH_INFO_2_STR info_2_str;
+
+} SRV_SHARE_INFO_2;
+
+typedef struct ptr_share_info501
+{
+ uint32 ptr_netname; /* pointer to net name */
+ uint32 type; /* ipc, print, disk */
+ uint32 ptr_remark; /* pointer to comment */
+ uint32 csc_policy; /* client-side offline caching policy << 4 */
+} SH_INFO_501;
+
+typedef struct str_share_info501
+{
+ UNISTR2 uni_netname; /* unicode string of net name */
+ UNISTR2 uni_remark; /* unicode string of comment */
+} SH_INFO_501_STR;
+
+/* SRV_SHARE_INFO_501 */
+typedef struct share_info_501_info
+{
+ SH_INFO_501 info_501;
+ SH_INFO_501_STR info_501_str;
+} SRV_SHARE_INFO_501;
+
+/* SH_INFO_502 (pointers to level 502 share info strings) */
+typedef struct ptr_share_info502
+{
+ uint32 ptr_netname; /* pointer to net name. */
+ uint32 type; /* ipc, print, disk ... */
+ uint32 ptr_remark; /* pointer to comment. */
+ uint32 perms; /* permissions */
+ uint32 max_uses; /* maximum uses */
+ uint32 num_uses; /* current uses */
+ uint32 ptr_path; /* pointer to path name */
+ uint32 ptr_passwd; /* pointer to password */
+ uint32 reserved; /* this holds the space taken by the sd in the rpc packet */
+ uint32 reserved_offset; /* required for _post operation when marshalling */
+ uint32 sd_size; /* size of security descriptor */
+ uint32 ptr_sd; /* pointer to security descriptor */
+
+} SH_INFO_502;
+
+/* SH_INFO_502_STR (level 502 share info strings) */
+typedef struct str_share_info502
+{
+ SH_INFO_502 *ptrs;
+
+ UNISTR2 uni_netname; /* unicode string of net name (e.g NETLOGON) */
+ UNISTR2 uni_remark; /* unicode string of comment (e.g "Logon server share") */
+ UNISTR2 uni_path; /* unicode string of local path (e.g c:\winnt\system32\repl\import\scripts) */
+ UNISTR2 uni_passwd; /* unicode string of password - presumably for share level security (e.g NULL) */
+
+ uint32 reserved;
+ uint32 sd_size;
+ SEC_DESC *sd;
+
+} SH_INFO_502_STR;
+
+/* SRV_SHARE_INFO_502 */
+typedef struct share_info_502_info
+{
+ SH_INFO_502 info_502;
+ SH_INFO_502_STR info_502_str;
+
+} SRV_SHARE_INFO_502;
+
+typedef struct ptr_share_info1004
+{
+ uint32 ptr_remark;
+
+} SH_INFO_1004;
+
+typedef struct str_share_info1004
+{
+ SH_INFO_1004 *ptrs;
+
+ UNISTR2 uni_remark;
+
+} SH_INFO_1004_STR;
+
+typedef struct ptr_info_1004_info
+{
+ SH_INFO_1004 info_1004;
+ SH_INFO_1004_STR info_1004_str;
+} SRV_SHARE_INFO_1004;
+
+typedef struct share_info_1005_info
+{
+ uint32 share_info_flags;
+} SRV_SHARE_INFO_1005;
+
+typedef struct share_info_1006_info
+{
+ uint32 max_uses;
+} SRV_SHARE_INFO_1006;
+
+typedef struct ptr_share_info1007
+{
+ uint32 flags;
+ uint32 ptr_AlternateDirectoryName;
+
+} SH_INFO_1007;
+
+typedef struct str_share_info1007
+{
+ SH_INFO_1007 *ptrs;
+
+ UNISTR2 uni_AlternateDirectoryName;
+
+} SH_INFO_1007_STR;
+
+typedef struct ptr_info_1007_info
+{
+ SH_INFO_1007 info_1007;
+ SH_INFO_1007_STR info_1007_str;
+} SRV_SHARE_INFO_1007;
+
+/* SRV_SHARE_INFO_1501 */
+typedef struct share_info_1501_info
+{
+ SEC_DESC_BUF *sdb;
+} SRV_SHARE_INFO_1501;
+
+/* SRV_SHARE_INFO_CTR */
+typedef struct srv_share_info_ctr_info
+{
+ uint32 info_level;
+ uint32 switch_value;
+ uint32 ptr_share_info;
+
+ uint32 num_entries;
+ uint32 ptr_entries;
+ uint32 num_entries2;
+
+ union {
+ SRV_SHARE_INFO_0 *info0;
+ SRV_SHARE_INFO_1 *info1; /* share info level 1 */
+ SRV_SHARE_INFO_2 *info2; /* share info level 2 */
+ SRV_SHARE_INFO_501 *info501; /* share info level 501 */
+ SRV_SHARE_INFO_502 *info502; /* share info level 502 */
+ SRV_SHARE_INFO_1004 *info1004;
+ SRV_SHARE_INFO_1005 *info1005;
+ SRV_SHARE_INFO_1006 *info1006;
+ SRV_SHARE_INFO_1007 *info1007;
+ SRV_SHARE_INFO_1501 *info1501;
+ void *info;
+
+ } share;
+
+} SRV_SHARE_INFO_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 */
+
+ SRV_SHARE_INFO_CTR ctr; /* share info container */
+
+ uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
+
+ ENUM_HND enum_hnd;
+
+} SRV_Q_NET_SHARE_ENUM;
+
+
+/* SRV_R_NET_SHARE_ENUM */
+typedef struct r_net_share_enum_info
+{
+ SRV_SHARE_INFO_CTR ctr; /* share info container */
+
+ uint32 total_entries; /* total number of entries */
+ ENUM_HND enum_hnd;
+
+ WERROR status; /* return status */
+
+} SRV_R_NET_SHARE_ENUM;
+
+
+/* SRV_Q_NET_SHARE_GET_INFO */
+typedef struct q_net_share_get_info_info
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name;
+
+ UNISTR2 uni_share_name;
+ uint32 info_level;
+
+} SRV_Q_NET_SHARE_GET_INFO;
+
+/* SRV_SHARE_INFO */
+typedef struct srv_share_info {
+ uint32 switch_value;
+ uint32 ptr_share_ctr;
+
+ union {
+ SRV_SHARE_INFO_0 info0;
+ SRV_SHARE_INFO_1 info1;
+ SRV_SHARE_INFO_2 info2;
+ SRV_SHARE_INFO_501 info501;
+ SRV_SHARE_INFO_502 info502;
+ SRV_SHARE_INFO_1004 info1004;
+ SRV_SHARE_INFO_1005 info1005;
+ SRV_SHARE_INFO_1006 info1006;
+ SRV_SHARE_INFO_1007 info1007;
+ SRV_SHARE_INFO_1501 info1501;
+ } share;
+} SRV_SHARE_INFO;
+
+/* SRV_R_NET_SHARE_GET_INFO */
+typedef struct r_net_share_get_info_info
+{
+ SRV_SHARE_INFO info;
+ WERROR status;
+
+} SRV_R_NET_SHARE_GET_INFO;
+
+/* SRV_Q_NET_SHARE_SET_INFO */
+typedef struct q_net_share_set_info_info
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name;
+
+ UNISTR2 uni_share_name;
+ uint32 info_level;
+
+ SRV_SHARE_INFO info;
+
+ uint32 ptr_parm_error;
+ uint32 parm_error;
+
+} SRV_Q_NET_SHARE_SET_INFO;
+
+/* SRV_R_NET_SHARE_SET_INFO */
+typedef struct r_net_share_set_info
+{
+ uint32 ptr_parm_error;
+ uint32 parm_error;
+
+ WERROR status; /* return status */
+
+} SRV_R_NET_SHARE_SET_INFO;
+
+/* SRV_Q_NET_SHARE_ADD */
+typedef struct q_net_share_add
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name;
+
+ uint32 info_level;
+
+ SRV_SHARE_INFO info;
+
+ uint32 ptr_err_index; /* pointer to error index */
+ uint32 err_index; /* index in info to field in error */
+
+} SRV_Q_NET_SHARE_ADD;
+
+/* SRV_R_NET_SHARE_ADD */
+typedef struct r_net_share_add
+{
+
+ uint32 ptr_parm_error;
+ uint32 parm_error;
+
+ WERROR status; /* return status */
+
+} SRV_R_NET_SHARE_ADD;
+
+/* SRV_Q_NET_SHARE_DEL */
+typedef struct q_net_share_del
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name;
+ UNISTR2 uni_share_name;
+ uint32 reserved;
+
+} SRV_Q_NET_SHARE_DEL;
+
+/* SRV_R_NET_SHARE_DEL */
+typedef struct r_net_share_del
+{
+ WERROR status; /* return status */
+
+} SRV_R_NET_SHARE_DEL;
+
+/***************************/
+
+typedef struct {
+ uint32 id; /* file index */
+ uint32 perms; /* file permissions. don't know what format */
+ uint32 num_locks; /* file locks */
+ UNISTR2 *path; /* file name */
+ UNISTR2 *user; /* file owner */
+} FILE_INFO_3;
+
+typedef struct {
+ uint32 level; /* switch value */
+ uint32 ptr_file_info; /* pointer to file info union */
+
+ uint32 num_entries;
+ uint32 ptr_entries;
+ uint32 num_entries2;
+ union {
+ FILE_INFO_3 *info3;
+ } file;
+
+} SRV_FILE_INFO_CTR;
+
+typedef struct {
+ UNISTR2 *servername;
+ UNISTR2 *qualifier;
+ UNISTR2 *username;
+ uint32 level;
+ SRV_FILE_INFO_CTR ctr;
+ uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
+ ENUM_HND enum_hnd;
+} SRV_Q_NET_FILE_ENUM;
+
+typedef struct {
+ uint32 level;
+ SRV_FILE_INFO_CTR ctr;
+ uint32 total_entries;
+ ENUM_HND enum_hnd;
+ WERROR status;
+} SRV_R_NET_FILE_ENUM;
+
+/* SRV_INFO_100 */
+typedef struct srv_info_100_info
+{
+ uint32 platform_id; /* 0x500 */
+ uint32 ptr_name; /* pointer to server name */
+
+ UNISTR2 uni_name; /* server name "server" */
+
+} SRV_INFO_100;
+
+/* SRV_INFO_101 */
+typedef struct srv_info_101_info
+{
+ uint32 platform_id; /* 0x500 */
+ uint32 ptr_name; /* pointer to server name */
+ uint32 ver_major; /* 0x4 */
+ uint32 ver_minor; /* 0x2 */
+ uint32 srv_type; /* browse etc type */
+ uint32 ptr_comment; /* pointer to server comment */
+
+ UNISTR2 uni_name; /* server name "server" */
+ UNISTR2 uni_comment; /* server comment "samba x.x.x blah" */
+
+} SRV_INFO_101;
+
+/* SRV_INFO_102 */
+typedef struct srv_info_102_info
+{
+ uint32 platform_id; /* 0x500 */
+ uint32 ptr_name; /* pointer to server name */
+ uint32 ver_major; /* 0x4 */
+ uint32 ver_minor; /* 0x2 */
+ uint32 srv_type; /* browse etc type */
+ uint32 ptr_comment; /* pointer to server comment */
+ uint32 users; /* 0xffff ffff*/
+ uint32 disc; /* 0xf */
+ uint32 hidden; /* 0x0 */
+ uint32 announce; /* 240 */
+ uint32 ann_delta; /* 3000 */
+ uint32 licenses; /* 0 */
+ uint32 ptr_usr_path; /* pointer to user path */
+
+ UNISTR2 uni_name; /* server name "server" */
+ UNISTR2 uni_comment; /* server comment "samba x.x.x blah" */
+ UNISTR2 uni_usr_path; /* "c:\" (eh?) */
+
+} SRV_INFO_102;
+
+
+/* SRV_INFO_CTR */
+typedef struct srv_info_ctr_info
+{
+ uint32 switch_value; /* switch value */
+ uint32 ptr_srv_ctr; /* pointer to server info */
+ union
+ {
+ SRV_INFO_102 sv102; /* server info level 102 */
+ SRV_INFO_101 sv101; /* server info level 101 */
+ SRV_INFO_100 sv100; /* server info level 100 */
+
+ } srv;
+
+} SRV_INFO_CTR;
+
+/* SRV_Q_NET_SRV_GET_INFO */
+typedef struct q_net_srv_get_info
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name; /* "\\server" */
+ uint32 switch_value;
+
+} SRV_Q_NET_SRV_GET_INFO;
+
+/* SRV_R_NET_SRV_GET_INFO */
+typedef struct r_net_srv_get_info
+{
+ SRV_INFO_CTR *ctr;
+
+ WERROR status; /* return status */
+
+} SRV_R_NET_SRV_GET_INFO;
+
+/* SRV_Q_NET_SRV_SET_INFO */
+typedef struct q_net_srv_set_info
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name; /* "\\server" */
+ uint32 switch_value;
+
+ SRV_INFO_CTR *ctr;
+
+} SRV_Q_NET_SRV_SET_INFO;
+
+
+/* SRV_R_NET_SRV_SET_INFO */
+typedef struct r_net_srv_set_info
+{
+ uint32 switch_value; /* switch value */
+
+ WERROR status; /* return status */
+
+} SRV_R_NET_SRV_SET_INFO;
+
+/* SRV_Q_NET_REMOTE_TOD */
+typedef struct q_net_remote_tod
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name; /* "\\server" */
+
+} SRV_Q_NET_REMOTE_TOD;
+
+/* TIME_OF_DAY_INFO */
+typedef struct time_of_day_info
+{
+ uint32 elapsedt;
+ uint32 msecs;
+ uint32 hours;
+ uint32 mins;
+ uint32 secs;
+ uint32 hunds;
+ uint32 zone;
+ uint32 tintervals;
+ uint32 day;
+ uint32 month;
+ uint32 year;
+ uint32 weekday;
+
+} TIME_OF_DAY_INFO;
+
+/* SRV_R_NET_REMOTE_TOD */
+typedef struct r_net_remote_tod
+{
+ uint32 ptr_srv_tod; /* pointer to TOD */
+ TIME_OF_DAY_INFO *tod;
+
+ WERROR status; /* return status */
+
+} SRV_R_NET_REMOTE_TOD;
+
+/* SRV_Q_NET_FILE_QUERY_SECDESC */
+typedef struct q_net_file_query_secdesc
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name;
+ uint32 ptr_qual_name;
+ UNISTR2 uni_qual_name;
+ UNISTR2 uni_file_name;
+ uint32 unknown1;
+ uint32 unknown2;
+ uint32 unknown3;
+} SRV_Q_NET_FILE_QUERY_SECDESC;
+
+/* SRV_R_NET_FILE_QUERY_SECDESC */
+typedef struct r_net_file_query_secdesc
+{
+ uint32 ptr_response;
+ uint32 size_response;
+ uint32 ptr_secdesc;
+ uint32 size_secdesc;
+ SEC_DESC *sec_desc;
+ WERROR status;
+} SRV_R_NET_FILE_QUERY_SECDESC;
+
+/* SRV_Q_NET_FILE_SET_SECDESC */
+typedef struct q_net_file_set_secdesc
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name;
+ uint32 ptr_qual_name;
+ UNISTR2 uni_qual_name;
+ UNISTR2 uni_file_name;
+ uint32 sec_info;
+ uint32 size_set;
+ uint32 ptr_secdesc;
+ uint32 size_secdesc;
+ SEC_DESC *sec_desc;
+} SRV_Q_NET_FILE_SET_SECDESC;
+
+/* SRV_R_NET_FILE_SET_SECDESC */
+typedef struct r_net_file_set_secdesc
+{
+ WERROR status;
+} SRV_R_NET_FILE_SET_SECDESC;
+
+/***************************/
+
+typedef struct {
+ UNISTR2 *servername;
+ uint32 file_id;
+} SRV_Q_NET_FILE_CLOSE;
+
+typedef struct {
+ WERROR status;
+} SRV_R_NET_FILE_CLOSE;
+
+/***************************/
+
+#endif /* _RPC_SRVSVC_H */
diff --git a/source/include/rpc_svcctl.h b/source/include/rpc_svcctl.h
index f4bf509f7c2..8ca5e1772b8 100644
--- a/source/include/rpc_svcctl.h
+++ b/source/include/rpc_svcctl.h
@@ -202,6 +202,17 @@ typedef struct _ServiceInfo {
/**************************/
typedef struct {
+ POLICY_HND handle;
+} SVCCTL_Q_CLOSE_SERVICE;
+
+typedef struct {
+ POLICY_HND handle;
+ WERROR status;
+} SVCCTL_R_CLOSE_SERVICE;
+
+/**************************/
+
+typedef struct {
UNISTR2 *servername;
UNISTR2 *database;
uint32 access;
diff --git a/source/include/safe_string.h b/source/include/safe_string.h
index 3a732e11e1f..d278e29aca5 100644
--- a/source/include/safe_string.h
+++ b/source/include/safe_string.h
@@ -164,7 +164,7 @@ size_t __unsafe_string_function_usage_here_char__(void);
#define safe_strcpy(dest,src,maxlength) safe_strcpy_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE,dest,src,maxlength)
#define safe_strcat(dest,src,maxlength) safe_strcat_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE,dest,src,maxlength)
#define push_string(base_ptr, dest, src, dest_len, flags) push_string_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, base_ptr, dest, src, dest_len, flags)
-#define pull_string(base_ptr, smb_flags2, dest, src, dest_len, src_len, flags) pull_string_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, base_ptr, smb_flags2, dest, src, dest_len, src_len, flags)
+#define pull_string(base_ptr, dest, src, dest_len, src_len, flags) pull_string_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, base_ptr, dest, src, dest_len, src_len, flags)
#define clistr_push(cli, dest, src, dest_len, flags) clistr_push_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, cli, dest, src, dest_len, flags)
#define clistr_pull(cli, dest, src, dest_len, src_len, flags) clistr_pull_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, cli, dest, src, dest_len, src_len, flags)
#define srvstr_push(base_ptr, dest, src, dest_len, flags) srvstr_push_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, base_ptr, dest, src, dest_len, flags)
@@ -193,10 +193,10 @@ size_t __unsafe_string_function_usage_here_char__(void);
? __unsafe_string_function_usage_here_size_t__() \
: push_string_fn(fn_name, fn_line, base_ptr, dest, src, dest_len, flags))
-#define pull_string_fn2(fn_name, fn_line, base_ptr, smb_flags2, dest, src, dest_len, src_len, flags) \
+#define pull_string_fn2(fn_name, fn_line, base_ptr, dest, src, dest_len, src_len, flags) \
(CHECK_STRING_SIZE(dest, dest_len) \
? __unsafe_string_function_usage_here_size_t__() \
- : pull_string_fn(fn_name, fn_line, base_ptr, smb_flags2, dest, src, dest_len, src_len, flags))
+ : pull_string_fn(fn_name, fn_line, base_ptr, dest, src, dest_len, src_len, flags))
#define clistr_push_fn2(fn_name, fn_line, cli, dest, src, dest_len, flags) \
(CHECK_STRING_SIZE(dest, dest_len) \
diff --git a/source/include/session.h b/source/include/session.h
index 1220f66dc50..8c8faab5325 100644
--- a/source/include/session.h
+++ b/source/include/session.h
@@ -36,7 +36,7 @@ struct sessionid {
fstring remote_machine;
fstring id_str;
uint32 id_num;
- struct server_id pid;
+ uint32 pid;
fstring ip_addr;
time_t connect_start;
};
diff --git a/source/include/smb.h b/source/include/smb.h
index 95889f86e5d..3f2f2235f66 100644
--- a/source/include/smb.h
+++ b/source/include/smb.h
@@ -79,7 +79,6 @@
#define WRITE_ERROR 4 /* This error code can go into the client smb_rw_error. */
#define READ_BAD_SIG 5
#define DO_NOT_DO_TDIS 6 /* cli_close_connection() check for this when smbfs wants to keep tree connected */
-#define READ_BAD_DECRYPT 7
#define DIR_STRUCT_SIZE 43
@@ -187,10 +186,9 @@ typedef uint32 codepoint_t;
#define PIPE_NETDFS "\\PIPE\\netdfs"
#define PIPE_ECHO "\\PIPE\\rpcecho"
#define PIPE_SHUTDOWN "\\PIPE\\initshutdown"
-#define PIPE_EPMAPPER "\\PIPE\\epmapper"
+#define PIPE_EPM "\\PIPE\\epmapper"
#define PIPE_SVCCTL "\\PIPE\\svcctl"
#define PIPE_EVENTLOG "\\PIPE\\eventlog"
-#define PIPE_UNIXINFO "\\PIPE\\unixinfo"
#define PIPE_NETLOGON_PLAIN "\\NETLOGON"
@@ -203,14 +201,12 @@ typedef uint32 codepoint_t;
#define PI_WINREG 6
#define PI_SPOOLSS 7
#define PI_NETDFS 8
-#define PI_RPCECHO 9
-#define PI_INITSHUTDOWN 10
+#define PI_ECHO 9
+#define PI_SHUTDOWN 10
#define PI_SVCCTL 11
#define PI_EVENTLOG 12
-#define PI_UNIXINFO 13
-#define PI_NTSVCS 14
-#define PI_EPMAPPER 15
-#define PI_MAX_PIPES 16
+#define PI_NTSVCS 13
+#define PI_MAX_PIPES 14
/* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
typedef uint64_t NTTIME;
@@ -247,15 +243,26 @@ typedef uint64_t NTTIME;
#define SID_MAX_SIZE ((size_t)(8+(MAXSUBAUTHS*4)))
-#define LOOKUP_NAME_ISOLATED 0x00000001 /* Look up unqualified names */
-#define LOOKUP_NAME_REMOTE 0x00000002 /* Ask others */
-#define LOOKUP_NAME_GROUP 0x00000004 /* (unused) This is a NASTY hack for
- valid users = @foo where foo also
- exists in as user. */
-#define LOOKUP_NAME_EXPLICIT 0x00000008 /* Only include
- explicitly mapped names and not
- the Unix {User,Group} domain */
-#define LOOKUP_NAME_ALL (LOOKUP_NAME_ISOLATED|LOOKUP_NAME_REMOTE)
+/* SID Types */
+enum lsa_SidType {
+ SID_NAME_USE_NONE = 0,
+ SID_NAME_USER = 1, /* user */
+ SID_NAME_DOM_GRP, /* domain group */
+ SID_NAME_DOMAIN, /* domain sid */
+ SID_NAME_ALIAS, /* local group */
+ SID_NAME_WKN_GRP, /* well-known group */
+ SID_NAME_DELETED, /* deleted account: needed for c2 rating */
+ SID_NAME_INVALID, /* invalid account */
+ SID_NAME_UNKNOWN, /* unknown sid type */
+ SID_NAME_COMPUTER /* sid for a computer */
+};
+
+#define LOOKUP_NAME_ISOLATED 1 /* Look up unqualified names */
+#define LOOKUP_NAME_REMOTE 2 /* Ask others */
+#define LOOKUP_NAME_ALL (LOOKUP_NAME_ISOLATED|LOOKUP_NAME_REMOTE)
+
+#define LOOKUP_NAME_GROUP 4 /* (unused) This is a NASTY hack for valid users = @foo
+ * where foo also exists in as user. */
/**
* @brief Security Identifier
@@ -305,16 +312,7 @@ struct id_map {
#include "librpc/ndr/misc.h"
#include "librpc/ndr/security.h"
#include "librpc/ndr/libndr.h"
-#include "librpc/gen_ndr/unixinfo.h"
-#include "librpc/gen_ndr/lsa.h"
-#include "librpc/gen_ndr/dfs.h"
-#include "librpc/gen_ndr/initshutdown.h"
-#include "librpc/gen_ndr/winreg.h"
-#include "librpc/gen_ndr/eventlog.h"
-#include "librpc/gen_ndr/srvsvc.h"
#include "librpc/gen_ndr/wkssvc.h"
-#include "librpc/gen_ndr/echo.h"
-#include "librpc/gen_ndr/svcctl.h"
struct lsa_dom_info {
BOOL valid;
@@ -427,9 +425,10 @@ struct fd_handle {
* DELETE_ON_CLOSE is not stored in the share
* mode database.
*/
- unsigned long gen_id;
+ unsigned long file_id;
};
+struct messaging_context;
struct event_context;
struct fd_event;
struct timed_event;
@@ -491,7 +490,8 @@ typedef struct files_struct {
struct fd_handle *fh;
unsigned int num_smb_operations;
uint16 rap_print_jobid;
- struct file_id file_id;
+ SMB_DEV_T dev;
+ SMB_INO_T inode;
SMB_BIG_UINT initial_allocation_size; /* Faked up initial allocation on disk. */
mode_t mode;
uint16 file_pid;
@@ -520,6 +520,7 @@ typedef struct files_struct {
BOOL modified;
BOOL is_directory;
BOOL is_stat;
+ BOOL aio_write_behind;
BOOL lockdb_clean;
BOOL initial_delete_on_close; /* Only set at NTCreateX if file was created. */
BOOL posix_open;
@@ -535,14 +536,12 @@ typedef struct files_struct {
#include "sysquotas.h"
/* used to hold an arbitrary blob of data */
-typedef struct data_blob {
+typedef struct data_blob_ {
uint8 *data;
size_t length;
- void (*free)(struct data_blob *data_blob);
+ void (*free)(struct data_blob_ *data_blob);
} DATA_BLOB;
-extern const DATA_BLOB data_blob_null;
-
/*
* Structure used to keep directory state information around.
* Used in NT change-notify code.
@@ -601,6 +600,8 @@ struct trans_state {
/* Include VFS stuff */
+struct security_descriptor_info;
+
#include "smb_acls.h"
#include "vfs.h"
@@ -670,6 +671,7 @@ typedef struct connection_struct {
name_compare_entry *hide_list; /* Per-share list of files to return as hidden. */
name_compare_entry *veto_list; /* Per-share list of files to veto (never show). */
name_compare_entry *veto_oplock_list; /* Per-share list of files to refuse oplocks on. */
+ name_compare_entry *aio_write_behind_list; /* Per-share list of files to use aio write behind on. */
struct dfree_cached_info *dfree_info;
struct trans_state *pending_trans;
struct notify_context *notify_ctx;
@@ -682,13 +684,6 @@ struct current_user {
NT_USER_TOKEN *nt_user_token;
};
-struct smb_request {
- uint16 flags2;
- uint16 smbpid;
- uint16 mid;
- uint16 vuid;
-};
-
/* Defines for the sent_oplock_break field above. */
#define NO_BREAK_SENT 0
#define BREAK_TO_NONE_SENT 1
@@ -757,7 +752,7 @@ struct pending_message_list {
/* struct returned by get_share_modes */
struct share_mode_entry {
- struct server_id pid;
+ struct process_id pid;
uint16 op_mid;
uint16 op_type;
uint32 access_mask; /* NTCreateX access bits (FILE_READ_DATA etc.) */
@@ -767,7 +762,8 @@ struct share_mode_entry {
* NTCREATEX_OPTIONS_PRIVATE_DENY_FCB for
* smbstatus and swat */
struct timeval time;
- struct file_id id;
+ SMB_DEV_T dev;
+ SMB_INO_T inode;
unsigned long share_file_id;
uint32 uid; /* uid of file opener. */
uint16 flags; /* See SHARE_MODE_XX above. */
@@ -776,7 +772,7 @@ struct share_mode_entry {
/* oplock break message definition - linearization of share_mode_entry.
Offset Data length.
-0 struct server_id pid 4
+0 struct process_id pid 4
4 uint16 op_mid 2
6 uint16 op_type 2
8 uint32 access_mask 4
@@ -792,23 +788,19 @@ Offset Data length.
54
*/
-#ifdef CLUSTER_SUPPORT
-#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 58
-#else
#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 54
-#endif
struct share_mode_lock {
const char *servicepath; /* canonicalized. */
const char *filename;
- struct file_id id;
+ SMB_DEV_T dev;
+ SMB_INO_T ino;
int num_share_modes;
struct share_mode_entry *share_modes;
UNIX_USER_TOKEN *delete_token;
BOOL delete_on_close;
BOOL fresh;
BOOL modified;
- struct db_record *record;
};
/*
@@ -838,7 +830,7 @@ struct locking_data {
/* Used to store pipe open records for NetFileEnum() */
struct pipe_open_rec {
- struct server_id pid;
+ struct process_id pid;
uid_t uid;
int pnum;
fstring name;
@@ -885,14 +877,14 @@ struct pipe_open_rec {
/* key and data in the connections database - used in smbstatus and smbd */
struct connections_key {
- struct server_id pid;
+ struct process_id pid;
int cnum;
fstring name;
};
struct connections_data {
int magic;
- struct server_id pid;
+ struct process_id pid;
int cnum;
uid_t uid;
gid_t gid;
@@ -1766,9 +1758,9 @@ typedef struct user_struct {
gid_t gid; /* gid of a validated user */
userdom_struct user;
- const char *homedir;
- const char *unix_homedir;
- const char *logon_script;
+ char *homedir;
+ char *unix_homedir;
+ char *logon_script;
BOOL guest;
@@ -1899,7 +1891,6 @@ struct ea_list {
#define SAMBA_XATTR_DOS_ATTRIB "user.DOSATTRIB"
#define UUID_SIZE 16
-
#define UUID_FLAT_SIZE 16
typedef struct uuid_flat {
uint8 info[UUID_FLAT_SIZE];
@@ -1927,6 +1918,4 @@ enum usershare_err {
/* Different reasons for closing a file. */
enum file_close_type {NORMAL_CLOSE=0,SHUTDOWN_CLOSE,ERROR_CLOSE};
-#include "librpc/gen_ndr/epmapper.h"
-
#endif /* _SMB_H */
diff --git a/source/include/smb_launchd.h b/source/include/smb_launchd.h
deleted file mode 100644
index 2e758a4de16..00000000000
--- a/source/include/smb_launchd.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Launchd integration wrapper API
-
- Copyright (C) James Peach 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-struct smb_launch_info
-{
- int idle_timeout_secs;
- int num_sockets;
- int *socket_list;
-};
-
-/* Retrieve launchd configuration. Returns True if we are running under
- * launchd, False otherwise. NOTE this does not guarantee to provide a list of
- * sockets since this is a user configuration option.
- */
-BOOL smb_launchd_checkin(struct smb_launch_info *linfo);
-
-/* Retrieve launchd configuration. The variadic arguments are a list of
- * constant null-terminated strings. The strings are the names of the socket
- * dictionaries to retrieve sockets from. The list of names is terminated by a
- * NULL.
- */
-BOOL smb_launchd_checkin_names(struct smb_launch_info *linfo, ...);
-
-/* Free any data or state associated with a successful launchd checkin. */
-void smb_launchd_checkout(struct smb_launch_info *linfo);
diff --git a/source/include/smb_macros.h b/source/include/smb_macros.h
index 81d4dc06665..a16ea7500f2 100644
--- a/source/include/smb_macros.h
+++ b/source/include/smb_macros.h
@@ -49,13 +49,12 @@
/* assert macros */
#ifdef DEVELOPER
#define SMB_ASSERT(b) ( (b) ? (void)0 : \
- (DEBUG(0,("PANIC: assert failed at %s(%d): %s\n", \
- __FILE__, __LINE__, #b)), smb_panic("assert failed: " #b)))
+ (DEBUG(0,("PANIC: assert failed at %s(%d)\n", \
+ __FILE__, __LINE__)), smb_panic("assert failed")))
#else
/* redefine the assert macro for non-developer builds */
#define SMB_ASSERT(b) ( (b) ? (void)0 : \
- (DEBUG(0,("PANIC: assert failed at %s(%d): %s\n", \
- __FILE__, __LINE__, #b))))
+ (DEBUG(0,("PANIC: assert failed at %s(%d)\n", __FILE__, __LINE__))))
#endif
#define SMB_WARN(condition, message) \
@@ -163,15 +162,16 @@
#define HAS_CACHED_ERROR(fsp) ((fsp)->wbmpx_ptr && \
(fsp)->wbmpx_ptr->wr_discard)
/* Macro to turn the cached error into an error packet */
-#define CACHED_ERROR(fsp) cached_error_packet(inbuf,outbuf,fsp,__LINE__,__FILE__)
+#define CACHED_ERROR(fsp) cached_error_packet(outbuf,fsp,__LINE__,__FILE__)
-#define ERROR_DOS(class,code) error_packet(inbuf,outbuf,class,code,NT_STATUS_OK,__LINE__,__FILE__)
-#define ERROR_NT(status) error_packet(inbuf,outbuf,0,0,status,__LINE__,__FILE__)
-#define ERROR_FORCE_NT(status) error_packet(inbuf,outbuf,-1,-1,status,__LINE__,__FILE__)
-#define ERROR_BOTH(status,class,code) error_packet(inbuf,outbuf,class,code,status,__LINE__,__FILE__)
+#define ERROR_DOS(class,code) error_packet(outbuf,class,code,NT_STATUS_OK,__LINE__,__FILE__)
+#define ERROR_NT(status) error_packet(outbuf,0,0,status,__LINE__,__FILE__)
+#define ERROR_OPEN(status) error_open(outbuf,status,__LINE__,__FILE__)
+#define ERROR_FORCE_NT(status) error_packet(outbuf,-1,-1,status,__LINE__,__FILE__)
+#define ERROR_BOTH(status,class,code) error_packet(outbuf,class,code,status,__LINE__,__FILE__)
/* this is how errors are generated */
-#define UNIXERROR(defclass,deferror) unix_error_packet(inbuf,outbuf,defclass,deferror,NT_STATUS_OK,__LINE__,__FILE__)
+#define UNIXERROR(defclass,deferror) unix_error_packet(outbuf,defclass,deferror,NT_STATUS_OK,__LINE__,__FILE__)
/* these are the datagram types */
#define DGRAM_DIRECT_UNIQUE 0x10
@@ -192,10 +192,6 @@
#define _smb_setlen(buf,len) do { buf[0] = 0; buf[1] = (len&0x10000)>>16; \
buf[2] = (len&0xFF00)>>8; buf[3] = len&0xFF; } while (0)
-#define smb_len_large(buf) (PVAL(buf,3)|(PVAL(buf,2)<<8)|(PVAL(buf,1)<<16))
-#define _smb_setlen_large(buf,len) do { buf[0] = 0; buf[1] = (len&0xFF0000)>>16; \
- buf[2] = (len&0xFF00)>>8; buf[3] = len&0xFF; } while (0)
-
/*******************************************************************
find the difference in milliseconds between two struct timeval
values
@@ -362,4 +358,12 @@ do { \
#define ADD_TO_LARGE_ARRAY(mem_ctx, type, elem, array, num, size) \
add_to_large_array((mem_ctx), sizeof(type), &(elem), (void *)(array), (num), (size));
+#ifndef ISDOT
+#define ISDOT(p) (*(p) == '.' && *((p) + 1) == '\0')
+#endif /* ISDOT */
+
+#ifndef ISDOTDOT
+#define ISDOTDOT(p) (*(p) == '.' && *((p) + 1) == '.' && *((p) + 2) == '\0')
+#endif /* ISDOTDOT */
+
#endif /* _SMB_MACROS_H */
diff --git a/source/include/smb_share_modes.h b/source/include/smb_share_modes.h
index 937a39c97a5..5ed43bda336 100644
--- a/source/include/smb_share_modes.h
+++ b/source/include/smb_share_modes.h
@@ -51,7 +51,7 @@ struct smb_share_mode_entry {
uint32_t access_mask;
struct timeval open_time;
uint32_t file_id;
- struct server_id pid;
+ struct process_id pid;
};
/*
diff --git a/source/include/smbldap.h b/source/include/smbldap.h
index 67061fec86d..390b8f681a4 100644
--- a/source/include/smbldap.h
+++ b/source/include/smbldap.h
@@ -128,7 +128,6 @@ extern ATTRIB_MAP_ENTRY trustpw_attr_list[];
have to worry about LDAP structure types */
NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx,
- struct event_context *event_ctx,
const char *location,
struct smbldap_state **smbldap_state);
@@ -170,8 +169,7 @@ struct smbldap_state {
unsigned int num_failures;
time_t last_use;
- struct event_context *event_context;
- struct timed_event *idle_event;
+ smb_event_id_t event_id;
struct timeval last_rebind;
};
diff --git a/source/include/smbprofile.h b/source/include/smbprofile.h
index 7b04a185b4f..cc501739c16 100644
--- a/source/include/smbprofile.h
+++ b/source/include/smbprofile.h
@@ -144,10 +144,6 @@ enum profile_stats_values
#define syscall_fchown_count __profile_stats_value(PR_VALUE_SYSCALL_FCHOWN, count)
#define syscall_fchown_time __profile_stats_value(PR_VALUE_SYSCALL_FCHOWN, time)
- PR_VALUE_SYSCALL_LCHOWN,
-#define syscall_lchown_count __profile_stats_value(PR_VALUE_SYSCALL_LCHOWN, count)
-#define syscall_lchown_time __profile_stats_value(PR_VALUE_SYSCALL_LCHOWN, time)
-
PR_VALUE_SYSCALL_CHDIR,
#define syscall_chdir_count __profile_stats_value(PR_VALUE_SYSCALL_CHDIR, count)
#define syscall_chdir_time __profile_stats_value(PR_VALUE_SYSCALL_CHDIR, time)
diff --git a/source/include/srvstr.h b/source/include/srvstr.h
index 99a7407a6a2..1029df53aee 100644
--- a/source/include/srvstr.h
+++ b/source/include/srvstr.h
@@ -18,14 +18,14 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#define srvstr_pull(base_ptr, smb_flags2, dest, src, dest_len, src_len, flags) \
- pull_string(base_ptr, smb_flags2, dest, src, dest_len, src_len, flags)
+#define srvstr_pull(base_ptr, dest, src, dest_len, src_len, flags) \
+ pull_string(base_ptr, dest, src, dest_len, src_len, flags)
/* pull a string from the smb_buf part of a packet. In this case the
string can either be null terminated or it can be terminated by the
end of the smbbuf area
*/
-#define srvstr_pull_buf(inbuf, smb_flags2, dest, src, dest_len, flags) \
- pull_string(inbuf, smb_flags2, dest, src, dest_len, smb_bufrem(inbuf, src), flags)
+#define srvstr_pull_buf(inbuf, dest, src, dest_len, flags) \
+ pull_string(inbuf, dest, src, dest_len, smb_bufrem(inbuf, src), flags)
diff --git a/source/include/trans2.h b/source/include/trans2.h
index 8b31b431c7a..c7faf4f63f6 100644
--- a/source/include/trans2.h
+++ b/source/include/trans2.h
@@ -529,10 +529,7 @@ findfirst/findnext is SMB_FIND_FILE_UNIX_INFO2.
(chflags) and lsattr */
#define CIFS_UNIX_POSIX_PATHNAMES_CAP 0x10 /* Use POSIX pathnames on the wire. */
#define CIFS_UNIX_POSIX_PATH_OPERATIONS_CAP 0x20 /* We can cope with POSIX open/mkdir/unlink etc. */
-#define CIFS_UNIX_LARGE_READ_CAP 0x40 /* We can cope with 24 bit reads in readX. */
-#define CIFS_UNIX_LARGE_WRITE_CAP 0x80 /* We can cope with 24 bit writes in writeX. */
-#define CIFS_UNIX_TRANSPORT_ENCRYPTION_CAP 0x100 /* We can do SPNEGO negotiations for encryption. */
-#define CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP 0x200 /* We *must* SPNEGO negotiations for encryption. */
+
#define SMB_QUERY_POSIX_FS_INFO 0x201
@@ -554,21 +551,6 @@ findfirst/findnext is SMB_FIND_FILE_UNIX_INFO2.
(NB statfs field flags can come from FILE_SYSTEM_DEVICE_INFO call)
*/
-#define SMB_QUERY_POSIX_WHO_AM_I 0x202 /* QFS Info */
-/* returns:
- __u32 flags; 0 = Authenticated user 1 = GUEST
- __u32 mask; which flags bits server understands ie 0x0001
- __u64 unix_user_id;
- __u64 unix_user_gid;
- __u32 number_of_supplementary_gids; may be zero
- __u32 number_of_sids; may be zero
- __u32 length_of_sid_array; in bytes - may be zero
- __u32 pad; reserved - MBZ
- __u64 gid_array[0]; may be empty
- __u8 * psid_list may be empty
-*/
-
-
/* ... more as we think of them :-). */
/* SMB POSIX ACL definitions. */
@@ -655,27 +637,6 @@ enum smb_whoami_flags {
DOM_SID[] - list of SIDs (may be empty)
*/
-/*
- * The following trans2 is done between client and server
- * as a FSINFO call to set up the encryption state for transport
- * encryption.
- *
- * The request looks like :
- *
- * [data block] -> SPNEGO framed GSSAPI request.
- *
- * The reply looks like :
- *
- * [data block] -> SPNEGO framed GSSAPI reply - if error
- * is NT_STATUS_OK then we're done, if it's
- * NT_STATUS_MORE_PROCESSING_REQUIRED then the
- * client needs to keep going. If it's an
- * error it can be any NT_STATUS error.
- *
- */
-
-#define SMB_REQUEST_TRANSPORT_ENCRYPTION 0x203
-
/* The query/set info levels for POSIX ACLs. */
#define SMB_QUERY_POSIX_ACL 0x204
#define SMB_SET_POSIX_ACL 0x204
diff --git a/source/include/util_tdb.h b/source/include/util_tdb.h
index 5fd05f59fc5..a8def46e441 100644
--- a/source/include/util_tdb.h
+++ b/source/include/util_tdb.h
@@ -41,19 +41,9 @@ struct tdb_wrap {
struct tdb_wrap *next, *prev;
};
-struct tdb_validation_status {
- BOOL tdb_error;
- BOOL bad_freelist;
- BOOL bad_entry;
- BOOL unknown_key;
- BOOL success;
-};
-
-typedef int (*tdb_validate_data_func)(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state);
-
TDB_LIST_NODE *tdb_search_keys(struct tdb_context*, const char*);
void tdb_search_list_free(TDB_LIST_NODE*);
-int32 tdb_change_int32_atomic(struct tdb_context *tdb, const char *keystr, int32 *oldval, int32 change_val);
+int32_t tdb_change_int32_atomic(struct tdb_context *tdb, const char *keystr, int32_t *oldval, int32_t change_val);
int tdb_lock_bystring(struct tdb_context *tdb, const char *keyval);
int tdb_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval,
int timeout);
@@ -61,10 +51,10 @@ void tdb_unlock_bystring(struct tdb_context *tdb, const char *keyval);
int tdb_read_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval,
unsigned int timeout);
void tdb_read_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval);
-int32 tdb_fetch_int32(struct tdb_context *tdb, const char *keystr);
-int tdb_store_uint32(struct tdb_context *tdb, const char *keystr, uint32 value);
-int tdb_store_int32(struct tdb_context *tdb, const char *keystr, int32 v);
-int tdb_fetch_uint32(struct tdb_context *tdb, const char *keystr, uint32 *value);
+int32_t tdb_fetch_int32(struct tdb_context *tdb, const char *keystr);
+int tdb_store_uint32(struct tdb_context *tdb, const char *keystr, uint32_t value);
+int tdb_store_int32(struct tdb_context *tdb, const char *keystr, int32_t v);
+int tdb_fetch_uint32(struct tdb_context *tdb, const char *keystr, uint32_t *value);
int tdb_traverse_delete_fn(struct tdb_context *the_tdb, TDB_DATA key, TDB_DATA dbuf,
void *state);
int tdb_store_bystring(struct tdb_context *tdb, const char *keystr, TDB_DATA data, int flags);
@@ -72,14 +62,13 @@ TDB_DATA tdb_fetch_bystring(struct tdb_context *tdb, const char *keystr);
int tdb_delete_bystring(struct tdb_context *tdb, const char *keystr);
struct tdb_context *tdb_open_log(const char *name, int hash_size,
int tdb_flags, int open_flags, mode_t mode);
-int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...);
-size_t tdb_pack(uint8 *buf, int bufsize, const char *fmt, ...);
-TDB_DATA make_tdb_data(const uint8 *dptr, size_t dsize);
+int tdb_unpack(char *buf, int bufsize, const char *fmt, ...);
+size_t tdb_pack(char *buf, int bufsize, const char *fmt, ...);
+TDB_DATA make_tdb_data(const char *dptr, size_t dsize);
TDB_DATA string_tdb_data(const char *string);
-TDB_DATA string_term_tdb_data(const char *string);
int tdb_trans_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf,
int flag);
-BOOL tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr,
+int tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr,
uint32 *oldval, uint32 change_val);
int tdb_chainlock_with_timeout( TDB_CONTEXT *tdb, TDB_DATA key,
unsigned int timeout);
diff --git a/source/include/vfs.h b/source/include/vfs.h
index d968ba9d82a..29e96f6b506 100644
--- a/source/include/vfs.h
+++ b/source/include/vfs.h
@@ -70,9 +70,7 @@
/* Changed to version 20, use ntimes call instead of utime (greater
* timestamp resolition. JRA. */
/* Changed to version21 to add chflags operation -- jpeach */
-/* Changed to version22 to add lchown operation -- jra */
-/* Leave at 22 - not yet released. But change set_nt_acl to return an NTSTATUS. jra. */
-#define SMB_VFS_INTERFACE_VERSION 22
+#define SMB_VFS_INTERFACE_VERSION 21
/* to bug old modules which are trying to compile with the old functions */
@@ -93,7 +91,7 @@
struct vfs_handle_struct;
struct connection_struct;
struct files_struct;
-struct security_descriptor;
+struct security_descriptor_info;
struct vfs_statvfs_struct;
/*
@@ -147,7 +145,6 @@ typedef enum _vfs_op_type {
SMB_VFS_OP_FCHMOD,
SMB_VFS_OP_CHOWN,
SMB_VFS_OP_FCHOWN,
- SMB_VFS_OP_LCHOWN,
SMB_VFS_OP_CHDIR,
SMB_VFS_OP_GETWD,
SMB_VFS_OP_NTIMES,
@@ -274,7 +271,6 @@ struct vfs_ops {
int (*fchmod)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, mode_t mode);
int (*chown)(struct vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid);
int (*fchown)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, uid_t uid, gid_t gid);
- int (*lchown)(struct vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid);
int (*chdir)(struct vfs_handle_struct *handle, const char *path);
char *(*getwd)(struct vfs_handle_struct *handle, char *buf);
int (*ntimes)(struct vfs_handle_struct *handle, const char *path, const struct timespec ts[2]);
@@ -299,10 +295,10 @@ struct vfs_ops {
/* NT ACL operations. */
- size_t (*fget_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, uint32 security_info, struct security_descriptor **ppdesc);
- size_t (*get_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, const char *name, uint32 security_info, struct security_descriptor **ppdesc);
- NTSTATUS (*fset_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, uint32 security_info_sent, struct security_descriptor *psd);
- NTSTATUS (*set_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor *psd);
+ size_t (*fget_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, uint32 security_info, struct security_descriptor_info **ppdesc);
+ size_t (*get_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, const char *name, uint32 security_info, struct security_descriptor_info **ppdesc);
+ BOOL (*fset_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, uint32 security_info_sent, struct security_descriptor_info *psd);
+ BOOL (*set_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor_info *psd);
/* POSIX ACL operations. */
@@ -399,7 +395,6 @@ struct vfs_ops {
struct vfs_handle_struct *fchmod;
struct vfs_handle_struct *chown;
struct vfs_handle_struct *fchown;
- struct vfs_handle_struct *lchown;
struct vfs_handle_struct *chdir;
struct vfs_handle_struct *getwd;
struct vfs_handle_struct *ntimes;
diff --git a/source/include/vfs_macros.h b/source/include/vfs_macros.h
index 48321ddad05..18c8fef38c4 100644
--- a/source/include/vfs_macros.h
+++ b/source/include/vfs_macros.h
@@ -47,7 +47,7 @@
#define SMB_VFS_CLOSEDIR(conn, dir) ((conn)->vfs.ops.closedir((conn)->vfs.handles.closedir, dir))
/* File operations */
-#define SMB_VFS_OPEN(conn, fname, fsp, flags, mode) ((conn)->vfs.ops.open((conn)->vfs.handles.open, (fname), (fsp), (flags), (mode)))
+#define SMB_VFS_OPEN(conn, fname, fsp, flags, mode) (((conn)->vfs.ops.open)((conn)->vfs.handles.open, (fname), (fsp), (flags), (mode)))
#define SMB_VFS_CLOSE(fsp, fd) ((fsp)->conn->vfs.ops.close_fn((fsp)->conn->vfs.handles.close_hnd, (fsp), (fd)))
#define SMB_VFS_READ(fsp, fd, data, n) ((fsp)->conn->vfs.ops.read((fsp)->conn->vfs.handles.read, (fsp), (fd), (data), (n)))
#define SMB_VFS_PREAD(fsp, fd, data, n, off) ((fsp)->conn->vfs.ops.pread((fsp)->conn->vfs.handles.pread, (fsp), (fd), (data), (n), (off)))
@@ -65,7 +65,6 @@
#define SMB_VFS_FCHMOD(fsp, fd, mode) ((fsp)->conn->vfs.ops.fchmod((fsp)->conn->vfs.handles.fchmod, (fsp), (fd), (mode)))
#define SMB_VFS_CHOWN(conn, path, uid, gid) ((conn)->vfs.ops.chown((conn)->vfs.handles.chown, (path), (uid), (gid)))
#define SMB_VFS_FCHOWN(fsp, fd, uid, gid) ((fsp)->conn->vfs.ops.fchown((fsp)->conn->vfs.handles.fchown, (fsp), (fd), (uid), (gid)))
-#define SMB_VFS_LCHOWN(conn, path, uid, gid) ((conn)->vfs.ops.lchown((conn)->vfs.handles.lchown, (path), (uid), (gid)))
#define SMB_VFS_CHDIR(conn, path) ((conn)->vfs.ops.chdir((conn)->vfs.handles.chdir, (path)))
#define SMB_VFS_GETWD(conn, buf) ((conn)->vfs.ops.getwd((conn)->vfs.handles.getwd, (buf)))
#define SMB_VFS_NTIMES(conn, path, ts) ((conn)->vfs.ops.ntimes((conn)->vfs.handles.ntimes, (path), (ts)))
@@ -164,7 +163,7 @@
#define SMB_VFS_OPAQUE_CLOSEDIR(conn, dir) ((conn)->vfs_opaque.ops.closedir((conn)->vfs_opaque.handles.closedir, dir))
/* File operations */
-#define SMB_VFS_OPAQUE_OPEN(conn, fname, fsp, flags, mode) ((conn)->vfs_opaque.ops.open((conn)->vfs_opaque.handles.open, (fname), (fsp), (flags), (mode)))
+#define SMB_VFS_OPAQUE_OPEN(conn, fname, fsp, flags, mode) (((conn)->vfs_opaque.ops.open)((conn)->vfs_opaque.handles.open, (fname), (fsp), (flags), (mode)))
#define SMB_VFS_OPAQUE_CLOSE(fsp, fd) ((fsp)->conn->vfs_opaque.ops.close_fn((fsp)->conn->vfs_opaque.handles.close_hnd, (fsp), (fd)))
#define SMB_VFS_OPAQUE_READ(fsp, fd, data, n) ((fsp)->conn->vfs_opaque.ops.read((fsp)->conn->vfs_opaque.handles.read, (fsp), (fd), (data), (n)))
#define SMB_VFS_OPAQUE_PREAD(fsp, fd, data, n, off) ((fsp)->conn->vfs_opaque.ops.pread((fsp)->conn->vfs_opaque.handles.pread, (fsp), (fd), (data), (n), (off)))
@@ -182,7 +181,6 @@
#define SMB_VFS_OPAQUE_FCHMOD(fsp, fd, mode) ((fsp)->conn->vfs_opaque.ops.fchmod((fsp)->conn->vfs_opaque.handles.fchmod, (fsp), (fd), (mode)))
#define SMB_VFS_OPAQUE_CHOWN(conn, path, uid, gid) ((conn)->vfs_opaque.ops.chown((conn)->vfs_opaque.handles.chown, (path), (uid), (gid)))
#define SMB_VFS_OPAQUE_FCHOWN(fsp, fd, uid, gid) ((fsp)->conn->vfs_opaque.ops.fchown((fsp)->conn->vfs_opaque.handles.fchown, (fsp), (fd), (uid), (gid)))
-#define SMB_VFS_OPAQUE_LCHOWN(conn, path, uid, gid) ((conn)->vfs_opaque.ops.lchown((conn)->vfs_opaque.handles.lchown, (path), (uid), (gid)))
#define SMB_VFS_OPAQUE_CHDIR(conn, path) ((conn)->vfs_opaque.ops.chdir((conn)->vfs_opaque.handles.chdir, (path)))
#define SMB_VFS_OPAQUE_GETWD(conn, buf) ((conn)->vfs_opaque.ops.getwd((conn)->vfs_opaque.handles.getwd, (buf)))
#define SMB_VFS_OPAQUE_NTIMES(conn, path, ts) ((conn)->vfs_opaque.ops.ntimes((conn)->vfs_opaque.handles.ntimes, (path), (ts)))
@@ -282,7 +280,7 @@
#define SMB_VFS_NEXT_CLOSEDIR(handle, dir) ((handle)->vfs_next.ops.closedir((handle)->vfs_next.handles.closedir, dir))
/* File operations */
-#define SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode) ((handle)->vfs_next.ops.open((handle)->vfs_next.handles.open, (fname), (fsp), (flags), (mode)))
+#define SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode) (((handle)->vfs_next.ops.open)((handle)->vfs_next.handles.open, (fname), (fsp), (flags), (mode)))
#define SMB_VFS_NEXT_CLOSE(handle, fsp, fd) ((handle)->vfs_next.ops.close_fn((handle)->vfs_next.handles.close_hnd, (fsp), (fd)))
#define SMB_VFS_NEXT_READ(handle, fsp, fd, data, n) ((handle)->vfs_next.ops.read((handle)->vfs_next.handles.read, (fsp), (fd), (data), (n)))
#define SMB_VFS_NEXT_PREAD(handle, fsp, fd, data, n, off) ((handle)->vfs_next.ops.pread((handle)->vfs_next.handles.pread, (fsp), (fd), (data), (n), (off)))
@@ -300,7 +298,6 @@
#define SMB_VFS_NEXT_FCHMOD(handle, fsp, fd, mode) ((handle)->vfs_next.ops.fchmod((handle)->vfs_next.handles.fchmod, (fsp), (fd), (mode)))
#define SMB_VFS_NEXT_CHOWN(handle, path, uid, gid) ((handle)->vfs_next.ops.chown((handle)->vfs_next.handles.chown, (path), (uid), (gid)))
#define SMB_VFS_NEXT_FCHOWN(handle, fsp, fd, uid, gid) ((handle)->vfs_next.ops.fchown((handle)->vfs_next.handles.fchown, (fsp), (fd), (uid), (gid)))
-#define SMB_VFS_NEXT_LCHOWN(handle, path, uid, gid) ((handle)->vfs_next.ops.lchown((handle)->vfs_next.handles.lchown, (path), (uid), (gid)))
#define SMB_VFS_NEXT_CHDIR(handle, path) ((handle)->vfs_next.ops.chdir((handle)->vfs_next.handles.chdir, (path)))
#define SMB_VFS_NEXT_GETWD(handle, buf) ((handle)->vfs_next.ops.getwd((handle)->vfs_next.handles.getwd, (buf)))
#define SMB_VFS_NEXT_NTIMES(handle, path, ts) ((handle)->vfs_next.ops.ntimes((handle)->vfs_next.handles.ntimes, (path), (ts)))
diff --git a/source/iniparser/AUTHORS b/source/iniparser/AUTHORS
index f3dc8765748..86f842c50df 100644
--- a/source/iniparser/AUTHORS
+++ b/source/iniparser/AUTHORS
@@ -1,5 +1 @@
-Author for this package:
Nicolas Devillard <ndevilla@free.fr>
-
-Many thanks to the many people who contributed ideas, code, suggestions,
-corrections, enhancements.
diff --git a/source/iniparser/Makefile b/source/iniparser/Makefile
index bc5d61211ae..59793dbee19 100644
--- a/source/iniparser/Makefile
+++ b/source/iniparser/Makefile
@@ -4,16 +4,12 @@
# Compiler settings
CC = gcc
-CFLAGS = -O3 -fPIC
+CFLAGS = -O3
# Ar settings to build the library
AR = ar
ARFLAGS = rcv
-SHLD = ${CC} ${CFLAGS}
-LDSHFLAGS = -shared -Wl,-Bsymbolic -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib
-LDFLAGS = -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib
-
# Set RANLIB to ranlib on systems that require it (Sun OS < 4, Mac OSX)
# RANLIB = ranlib
RANLIB = true
@@ -38,21 +34,17 @@ SRCS = src/iniparser.c \
OBJS = $(SRCS:.c=.o)
-default: libiniparser.a libiniparser.so
+default: libiniparser.a
libiniparser.a: $(OBJS)
@($(AR) $(ARFLAGS) libiniparser.a $(OBJS))
@($(RANLIB) libiniparser.a)
-libiniparser.so: $(OBJS)
- @$(SHLD) $(LDSHFLAGS) -o $@.0 $(OBJS) $(LDFLAGS) \
- -Wl,-soname=`basename $@`.0
-
clean:
$(RM) $(OBJS)
veryclean:
- $(RM) $(OBJS) libiniparser.a libiniparser.so*
+ $(RM) $(OBJS) libiniparser.a
rm -rf ./html ; mkdir html
cd test ; $(MAKE) veryclean
diff --git a/source/iniparser/html/dir_000000.html b/source/iniparser/html/dir_000000.html
new file mode 100644
index 00000000000..9e4da6fc683
--- /dev/null
+++ b/source/iniparser/html/dir_000000.html
@@ -0,0 +1,27 @@
+<html>
+<head>
+ <meta name="author" content="ndevilla@free.fr">
+ <meta name="keywords" content="ini file, config file, parser, C library">
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
+<title>iniparser 2.x</title>
+</head>
+
+<body text="#000000" bgcolor="#ffffff">
+
+
+
+<!-- Generated by Doxygen 1.4.4 -->
+<div class="nav">
+<a class="el" href="dir_000000.html">src</a></div>
+<h1>src Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Files</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html">iniparser.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parser for ini files. <br></td></tr>
+
+<p>
+</table>
+
+</body>
+</html>
diff --git a/source/iniparser/html/dirs.html b/source/iniparser/html/dirs.html
new file mode 100644
index 00000000000..1671bd26b11
--- /dev/null
+++ b/source/iniparser/html/dirs.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+ <meta name="author" content="ndevilla@free.fr">
+ <meta name="keywords" content="ini file, config file, parser, C library">
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
+<title>iniparser 2.x</title>
+</head>
+
+<body text="#000000" bgcolor="#ffffff">
+
+
+
+<!-- Generated by Doxygen 1.4.4 -->
+<h1>iniparser Directories</h1>This directory hierarchy is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="dir_000000.html">src</a>
+</ul>
+
+</body>
+</html>
diff --git a/source/iniparser/html/doxygen.css b/source/iniparser/html/doxygen.css
index c7db1a8a04e..decae9e3941 100644
--- a/source/iniparser/html/doxygen.css
+++ b/source/iniparser/html/doxygen.css
@@ -17,8 +17,8 @@ H3 {
CAPTION { font-weight: bold }
DIV.qindex {
width: 100%;
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
text-align: center;
margin: 2px;
padding: 2px;
@@ -26,16 +26,16 @@ DIV.qindex {
}
DIV.nav {
width: 100%;
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.navtab {
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
text-align: center;
margin: 2px;
margin-right: 15px;
@@ -80,7 +80,7 @@ A.codeRef:visited { font-weight: normal; color: #0000FF}
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
.fragment {
- font-family: monospace, fixed;
+ font-family: Fixed, monospace;
font-size: 95%;
}
PRE.fragment {
@@ -96,7 +96,14 @@ PRE.fragment {
padding-bottom: 4px;
}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-
+TD.md { background-color: #F4F4FB; font-weight: bold; }
+TD.mdPrefix {
+ background-color: #F4F4FB;
+ color: #606060;
+ font-size: 80%;
+}
+TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader {
margin-left: 16px;
margin-top: 12px;
@@ -111,7 +118,7 @@ BODY {
margin-left: 20px;
}
TD.indexkey {
- background-color: #e8eef2;
+ background-color: #eeeeff;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
@@ -124,7 +131,7 @@ TD.indexkey {
border: 1px solid #CCCCCC;
}
TD.indexvalue {
- background-color: #e8eef2;
+ background-color: #eeeeff;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
@@ -149,6 +156,13 @@ SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
+.mdTable {
+ border: 1px solid #868686;
+ background-color: #F4F4FB;
+}
+.mdRow {
+ padding: 8px 10px;
+}
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
@@ -272,87 +286,24 @@ FORM.search {
INPUT.search { font-size: 75%;
color: #000080;
font-weight: normal;
- background-color: #e8eef2;
+ background-color: #eeeeff;
}
TD.tiny { font-size: 75%;
}
a {
- color: #1A41A8;
+ color: #252E78;
}
a:visited {
- color: #2A3798;
+ color: #3D2185;
}
.dirtab { padding: 4px;
border-collapse: collapse;
- border: 1px solid #84b0c7;
+ border: 1px solid #b0b0b0;
}
-TH.dirtab { background: #e8eef2;
+TH.dirtab { background: #eeeeff;
font-weight: bold;
}
HR { height: 1px;
border: none;
border-top: 1px solid black;
}
-
-/* Style for detailed member documentation */
-.memtemplate {
- font-size: 80%;
- color: #606060;
- font-weight: normal;
-}
-.memnav {
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-.memitem {
- padding: 4px;
- background-color: #eef3f5;
- border-width: 1px;
- border-style: solid;
- border-color: #dedeee;
- -moz-border-radius: 8px 8px 8px 8px;
-}
-.memname {
- white-space: nowrap;
- font-weight: bold;
-}
-.memdoc{
- padding-left: 10px;
-}
-.memproto {
- background-color: #d5e1e8;
- width: 100%;
- border-width: 1px;
- border-style: solid;
- border-color: #84b0c7;
- font-weight: bold;
- -moz-border-radius: 8px 8px 8px 8px;
-}
-.paramkey {
- text-align: right;
-}
-.paramtype {
- white-space: nowrap;
-}
-.paramname {
- color: #602020;
- font-style: italic;
- white-space: nowrap;
-}
-/* End Styling for detailed member documentation */
-
-/* for the tree view */
-.ftvtree {
- font-family: sans-serif;
- margin:0.5em;
-}
-.directory { font-size: 9pt; font-weight: bold; }
-.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
-.directory > h3 { margin-top: 0; }
-.directory p { margin: 0px; white-space: nowrap; }
-.directory div { display: none; margin: 0px; }
-.directory img { vertical-align: -30%; }
diff --git a/source/iniparser/html/globals_func.html b/source/iniparser/html/globals_func.html
index dc5c7126f05..3e398005f57 100644
--- a/source/iniparser/html/globals_func.html
+++ b/source/iniparser/html/globals_func.html
@@ -10,45 +10,26 @@
-<!-- Generated by Doxygen 1.5.1 -->
-<div class="tabs">
- <ul>
- <li><a href="globals.html"><span>All</span></a></li>
- <li id="current"><a href="globals_func.html"><span>Functions</span></a></li>
- </ul>
-</div>
-&nbsp;
+<!-- Generated by Doxygen 1.4.4 -->
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a></div>
+
<p>
<ul>
<li>iniparser_dump()
-: <a class="el" href="iniparser_8h.html#046436b3489cd8854ba8e29109250324">iniparser.h</a>
-<li>iniparser_dump_ini()
-: <a class="el" href="iniparser_8h.html#ece0e32de371c9e9592d8333f816dfac">iniparser.h</a>
-<li>iniparser_find_entry()
-: <a class="el" href="iniparser_8h.html#3d67c98bbc0cb5239f024ad54bdc63f1">iniparser.h</a>
-<li>iniparser_freedict()
-: <a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser.h</a>
-<li>iniparser_getboolean()
-: <a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser.h</a>
-<li>iniparser_getdouble()
-: <a class="el" href="iniparser_8h.html#480d35322f1252344cf2246ac21ee559">iniparser.h</a>
-<li>iniparser_getint()
-: <a class="el" href="iniparser_8h.html#694eb1110f4200db8648820a0bb405fa">iniparser.h</a>
-<li>iniparser_getnsec()
-: <a class="el" href="iniparser_8h.html#0b5d6cdc7587e2d27a30f5cdc4a91931">iniparser.h</a>
-<li>iniparser_getsecname()
-: <a class="el" href="iniparser_8h.html#393212be805f395bbfdeb1bafa8bb72a">iniparser.h</a>
-<li>iniparser_getstr()
-: <a class="el" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser.h</a>
-<li>iniparser_getstring()
-: <a class="el" href="iniparser_8h.html#7894f8480e1f254d4a1b4a31bdc51b46">iniparser.h</a>
-<li>iniparser_load()
-: <a class="el" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser.h</a>
-<li>iniparser_setstr()
-: <a class="el" href="iniparser_8h.html#605a88057bac4c3249513fc588421c32">iniparser.h</a>
-<li>iniparser_unset()
-: <a class="el" href="iniparser_8h.html#7b1a7f2492a35043867fa801b8f21e52">iniparser.h</a>
-</ul>
+: <a class="el" href="iniparser_8h.html#a3">iniparser.h</a><li>iniparser_dump_ini()
+: <a class="el" href="iniparser_8h.html#a2">iniparser.h</a><li>iniparser_find_entry()
+: <a class="el" href="iniparser_8h.html#a11">iniparser.h</a><li>iniparser_freedict()
+: <a class="el" href="iniparser_8h.html#a13">iniparser.h</a><li>iniparser_getboolean()
+: <a class="el" href="iniparser_8h.html#a8">iniparser.h</a><li>iniparser_getdouble()
+: <a class="el" href="iniparser_8h.html#a7">iniparser.h</a><li>iniparser_getint()
+: <a class="el" href="iniparser_8h.html#a6">iniparser.h</a><li>iniparser_getnsec()
+: <a class="el" href="iniparser_8h.html#a0">iniparser.h</a><li>iniparser_getsecname()
+: <a class="el" href="iniparser_8h.html#a1">iniparser.h</a><li>iniparser_getstr()
+: <a class="el" href="iniparser_8h.html#a4">iniparser.h</a><li>iniparser_getstring()
+: <a class="el" href="iniparser_8h.html#a5">iniparser.h</a><li>iniparser_load()
+: <a class="el" href="iniparser_8h.html#a12">iniparser.h</a><li>iniparser_setstr()
+: <a class="el" href="iniparser_8h.html#a9">iniparser.h</a><li>iniparser_unset()
+: <a class="el" href="iniparser_8h.html#a10">iniparser.h</a></ul>
</body>
</html>
diff --git a/source/iniparser/html/index.html b/source/iniparser/html/index.html
index a09575587d2..e0ca48b8723 100644
--- a/source/iniparser/html/index.html
+++ b/source/iniparser/html/index.html
@@ -10,8 +10,8 @@
-<!-- Generated by Doxygen 1.5.1 -->
-<h1>iniparser documentation</h1>
+<!-- Generated by Doxygen 1.4.4 -->
+<h1>iniparser documentation </h1>
<p>
<h3 align="center">2.x </h3><hr>
<h2><a class="anchor" name="welcome">
@@ -22,17 +22,14 @@ iniParser is a simple C library offering ini file parsing services. The library
What is an ini file?</a></h2>
An ini file is an ASCII file describing simple parameters (character strings, integers, floating-point values or booleans) in an explicit format, easy to use and modify for users.<p>
An ini file is segmented into Sections, declared by the following syntax:<p>
-<div class="fragment"><pre class="fragment">
- [Section Name]
+<div class="fragment"><pre class="fragment"> [Section Name]
</pre></div><p>
i.e. the section name enclosed in square brackets, alone on a line. Sections names are allowed to contain any character but square brackets or linefeeds. Slashes (/) are also reserved for hierarchical sections (see below).<p>
In any section are zero or more variables, declared with the following syntax:<p>
-<div class="fragment"><pre class="fragment">
- Key = value ; comment
+<div class="fragment"><pre class="fragment"> Key = value ; comment
</pre></div><p>
The key is any string (possibly containing blanks). The value is any character on the right side of the equal sign. Values can be given enclosed with quotes. If no quotes are present, the value is understood as containing all characters between the first and the last non-blank characters. The following declarations are identical:<p>
-<div class="fragment"><pre class="fragment">
- Hello = "this is a long string value" ; comment
+<div class="fragment"><pre class="fragment"> Hello = "this is a long string value" ; comment
Hello = this is a long string value ; comment
</pre></div><p>
The semicolon and comment at the end of the line are optional. If there is a comment, it starts from the first character after the semicolon up to the end of the line.<p>
@@ -49,7 +46,7 @@ Type 'make', that should do it.<p>
To use the library in your programs, add the following line on top of your module:<p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include "<a class="code" href="iniparser_8h.html">iniparser.h</a>"</span>
</pre></div><p>
-And link your program with the iniparser library by adding <code>-liniparser.a</code> to the compile line.<p>
+And link your program with the iniparser library by adding <code>-liniparser</code>.a to the compile line.<p>
See the file test/initest.c for an example.<p>
<hr>
<h2><a class="anchor" name="reference">
@@ -62,24 +59,22 @@ The library is completely documented in its header file. On-line documentation h
<h2><a class="anchor" name="usage">
Using the parser</a></h2>
Comments are discarded by the parser. Then sections are identified, and in each section a new entry is created for every keyword found. The keywords are stored with the following syntax:<p>
-<div class="fragment"><pre class="fragment">
- [Section]
+<div class="fragment"><pre class="fragment"> [Section]
Keyword = value ; comment
</pre></div><p>
is converted to the following key pair:<p>
-<div class="fragment"><pre class="fragment">
- ("section:keyword", "value")
+<div class="fragment"><pre class="fragment"> ("section:keyword", "value")
</pre></div><p>
This means that if you want to retrieve the value that was stored in the section called <code>Pizza</code>, in the keyword <code>Cheese</code>, you would make a request to the dictionary for <code>"pizza:cheese"</code>. All section and keyword names are converted to lowercase before storage in the structure. The value side is conserved as it has been parsed, though.<p>
-Section names are also stored in the structure. They are stored using as key the section name, and a NULL associated value. They can be queried through <a class="el" href="iniparser_8h.html#3d67c98bbc0cb5239f024ad54bdc63f1">iniparser_find_entry()</a>.<p>
-To launch the parser, simply use the function called <a class="el" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser_load()</a>, which takes an input file name and returns a newly allocated <em>dictionary</em> structure. This latter object should remain opaque to the user and only accessed through the following accessor functions:<p>
+Section names are also stored in the structure. They are stored using as key the section name, and a NULL associated value. They can be queried through <a class="el" href="iniparser_8h.html#a11">iniparser_find_entry()</a>.<p>
+To launch the parser, simply use the function called <a class="el" href="iniparser_8h.html#a12">iniparser_load()</a>, which takes an input file name and returns a newly allocated <em>dictionary</em> structure. This latter object should remain opaque to the user and only accessed through the following accessor functions:<p>
<ul>
-<li><a class="el" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr()</a></li><li><a class="el" href="iniparser_8h.html#694eb1110f4200db8648820a0bb405fa">iniparser_getint()</a></li><li><a class="el" href="iniparser_8h.html#480d35322f1252344cf2246ac21ee559">iniparser_getdouble()</a></li><li><a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser_getboolean()</a></li></ul>
+<li><a class="el" href="iniparser_8h.html#a4">iniparser_getstr()</a></li><li><a class="el" href="iniparser_8h.html#a6">iniparser_getint()</a></li><li><a class="el" href="iniparser_8h.html#a7">iniparser_getdouble()</a></li><li><a class="el" href="iniparser_8h.html#a8">iniparser_getboolean()</a></li></ul>
<p>
-Finally, discard this structure using <a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict()</a>.<p>
+Finally, discard this structure using <a class="el" href="iniparser_8h.html#a13">iniparser_freedict()</a>.<p>
All values parsed from the ini file are stored as strings. The getint, getdouble and getboolean accessors are just converting these strings to the requested type on the fly, but you could basically perform this conversion by yourself after having called the getstr accessor.<p>
-Notice that the <a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser_getboolean()</a> function will return an integer (0 or 1), trying to make sense of what was found in the file. Strings starting with "y", "Y", "t", "T" or "1" are considered true values (return 1), strings starting with "n", "N", "f", "F", "0" are considered false (return 0). This allows flexible handling of boolean answers.<p>
-If you want to add extra information into the structure that was not present in the ini file, you can use <a class="el" href="iniparser_8h.html#605a88057bac4c3249513fc588421c32">iniparser_setstr()</a> to insert a string.<p>
+Notice that the <a class="el" href="iniparser_8h.html#a8">iniparser_getboolean()</a> function will return an integer (0 or 1), trying to make sense of what was found in the file. Strings starting with "y", "Y", "t", "T" or "1" are considered true values (return 1), strings starting with "n", "N", "f", "F", "0" are considered false (return 0). This allows flexible handling of boolean answers.<p>
+If you want to add extra information into the structure that was not present in the ini file, you can use <a class="el" href="iniparser_8h.html#a9">iniparser_setstr()</a> to insert a string.<p>
<hr>
<h2><a class="anchor" name="implementation">
A word about the implementation</a></h2>
@@ -89,8 +84,7 @@ The dictionary structure is a pretty simple dictionary implementation which migh
Hierarchical ini files</a></h2>
ini files are nice to present informations to the user in a readable format, but lack a very useful feature: the possibility of organizing data in a hierarchical (tree-like) fashion. The following convention can be used to make ini files obtain this second dimension:<p>
A section depends on another section if it contains its name as a prefix, separated by slashes (/). For example: we have 2 main sections in the ini file. The first one is called <code>Pizza</code> and has two child subsections called <code>Cheese</code> and <code>Ham</code>. The second main section in the ini file is called <code>Wine</code> and has two child subsections called <code>Year</code> and <code>Grape</code>. As a tree, this could appear as:<p>
-<div class="fragment"><pre class="fragment">
- |
+<div class="fragment"><pre class="fragment"> |
+-- Pizza
| +-- Cheese
| +-- Ham
@@ -99,8 +93,7 @@ A section depends on another section if it contains its name as a prefix, separa
+--- Grape
</pre></div><p>
In an ini file, that would be converted to:<p>
-<div class="fragment"><pre class="fragment">
- [Pizza]
+<div class="fragment"><pre class="fragment"> [Pizza]
[Pizza/Cheese]
Name = Gorgonzola ;
@@ -123,16 +116,15 @@ This proposal is actually more related to the way people write ini files, more t
Accessing the above tree would give something like (error checking removed for clarity sake):<p>
<div class="fragment"><pre class="fragment"> dictionary * d ;
- d = <a class="code" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser_load</a>(<span class="stringliteral">"example.ini"</span>);
+ d = <a class="code" href="iniparser_8h.html#a12">iniparser_load</a>(<span class="stringliteral">"example.ini"</span>);
- printf(<span class="stringliteral">"cheese name is %s\n"</span>, <a class="code" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr</a>(d, <span class="stringliteral">"pizza/cheese:name"</span>));
- printf(<span class="stringliteral">"grape name is %s\n"</span>, <a class="code" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr</a>(d, <span class="stringliteral">"wine/grape:name"</span>));
+ printf(<span class="stringliteral">"cheese name is %s\n"</span>, <a class="code" href="iniparser_8h.html#a4">iniparser_getstr</a>(d, <span class="stringliteral">"pizza/cheese:name"</span>));
+ printf(<span class="stringliteral">"grape name is %s\n"</span>, <a class="code" href="iniparser_8h.html#a4">iniparser_getstr</a>(d, <span class="stringliteral">"wine/grape:name"</span>));
- <a class="code" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict</a>(d);
+ <a class="code" href="iniparser_8h.html#a13">iniparser_freedict</a>(d);
</pre></div><p>
The whole ini file above is represented in the dictionary as the following list of pairs:<p>
-<div class="fragment"><pre class="fragment">
- key value
+<div class="fragment"><pre class="fragment"> key value
"pizza" NULL
"pizza/cheese" NULL
diff --git a/source/iniparser/html/iniparser_8h.html b/source/iniparser/html/iniparser_8h.html
index 9a7d5ecbc34..3f0534f31ec 100644
--- a/source/iniparser/html/iniparser_8h.html
+++ b/source/iniparser/html/iniparser_8h.html
@@ -10,87 +10,97 @@
-<!-- Generated by Doxygen 1.5.1 -->
+<!-- Generated by Doxygen 1.4.4 -->
+<div class="nav">
+<a class="el" href="dir_000000.html">src</a></div>
<h1>iniparser.h File Reference</h1>Parser for ini files. <a href="#_details">More...</a>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#0b5d6cdc7587e2d27a30f5cdc4a91931">iniparser_getnsec</a> (dictionary *d)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a0">iniparser_getnsec</a> (dictionary *d)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of sections in a dictionary. <a href="#0b5d6cdc7587e2d27a30f5cdc4a91931"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#393212be805f395bbfdeb1bafa8bb72a">iniparser_getsecname</a> (dictionary *d, int n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of sections in a dictionary. <a href="#a0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a1">iniparser_getsecname</a> (dictionary *d, int n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get name for section n in a dictionary. <a href="#393212be805f395bbfdeb1bafa8bb72a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#ece0e32de371c9e9592d8333f816dfac">iniparser_dump_ini</a> (dictionary *d, FILE *f)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get name for section n in a dictionary. <a href="#a1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a2">iniparser_dump_ini</a> (dictionary *d, FILE *f)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save a dictionary to a loadable ini file. <a href="#ece0e32de371c9e9592d8333f816dfac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#046436b3489cd8854ba8e29109250324">iniparser_dump</a> (dictionary *d, FILE *f)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save a dictionary to a loadable ini file. <a href="#a2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a3">iniparser_dump</a> (dictionary *d, FILE *f)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump a dictionary to an opened file pointer. <a href="#046436b3489cd8854ba8e29109250324"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr</a> (dictionary *d, const char *key)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump a dictionary to an opened file pointer. <a href="#a3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a4">iniparser_getstr</a> (dictionary *d, char *key)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, return NULL if not found. <a href="#587eafb48937fdee8ae414ad7a666db8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#7894f8480e1f254d4a1b4a31bdc51b46">iniparser_getstring</a> (dictionary *d, const char *key, char *def)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, return NULL if not found. <a href="#a4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a5">iniparser_getstring</a> (dictionary *d, char *key, char *def)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key. <a href="#7894f8480e1f254d4a1b4a31bdc51b46"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#694eb1110f4200db8648820a0bb405fa">iniparser_getint</a> (dictionary *d, const char *key, int notfound)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key. <a href="#a5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a6">iniparser_getint</a> (dictionary *d, char *key, int notfound)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to an int. <a href="#694eb1110f4200db8648820a0bb405fa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#480d35322f1252344cf2246ac21ee559">iniparser_getdouble</a> (dictionary *d, char *key, double notfound)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to an int. <a href="#a6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a7">iniparser_getdouble</a> (dictionary *d, char *key, double notfound)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a double. <a href="#480d35322f1252344cf2246ac21ee559"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser_getboolean</a> (dictionary *d, const char *key, int notfound)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a double. <a href="#a7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a8">iniparser_getboolean</a> (dictionary *d, char *key, int notfound)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a boolean. <a href="#eb93c13fcbb75efaa396f53bfd73ff4d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#605a88057bac4c3249513fc588421c32">iniparser_setstr</a> (dictionary *ini, char *entry, char *val)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a boolean. <a href="#a8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a9">iniparser_setstr</a> (dictionary *ini, char *entry, char *val)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an entry in a dictionary. <a href="#605a88057bac4c3249513fc588421c32"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#7b1a7f2492a35043867fa801b8f21e52">iniparser_unset</a> (dictionary *ini, char *entry)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an entry in a dictionary. <a href="#a9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a10">iniparser_unset</a> (dictionary *ini, char *entry)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an entry in a dictionary. <a href="#7b1a7f2492a35043867fa801b8f21e52"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#3d67c98bbc0cb5239f024ad54bdc63f1">iniparser_find_entry</a> (dictionary *ini, char *entry)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an entry in a dictionary. <a href="#a10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a11">iniparser_find_entry</a> (dictionary *ini, char *entry)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds out if a given entry exists in a dictionary. <a href="#3d67c98bbc0cb5239f024ad54bdc63f1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">dictionary *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser_load</a> (const char *ininame)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds out if a given entry exists in a dictionary. <a href="#a11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">dictionary *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a12">iniparser_load</a> (char *ininame)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse an ini file and return an allocated dictionary object. <a href="#b0be559bfb769224b3f1b75e26242a67"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict</a> (dictionary *d)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse an ini file and return an allocated dictionary object. <a href="#a12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a13">iniparser_freedict</a> (dictionary *d)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all memory associated to an ini dictionary. <a href="#90549ee518523921886b74454ff872eb"></a><br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all memory associated to an ini dictionary. <a href="#a13"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Parser for ini files.
<p>
-<dl class="author" compact><dt><b>Author:</b></dt><dd>N. Devillard </dd></dl>
-<dl class="date" compact><dt><b>Date:</b></dt><dd>Mar 2000 </dd></dl>
-<dl class="version" compact><dt><b>Version:</b></dt><dd><dl class="rcs" compact><dt><b>Revision</b></dt><dd>1.23 </dd></dl>
+<dl compact><dt><b>Author:</b></dt><dd>N. Devillard </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>Mar 2000 </dd></dl>
+<dl compact><dt><b>Version:</b></dt><dd><dl compact><dt><b>Revision</b></dt><dd>1.20 </dd></dl>
</dd></dl>
<hr><h2>Function Documentation</h2>
-<a class="anchor" name="046436b3489cd8854ba8e29109250324"></a><!-- doxytag: member="iniparser.h::iniparser_dump" ref="046436b3489cd8854ba8e29109250324" args="(dictionary *d, FILE *f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+<a class="anchor" name="a3"></a><!-- doxytag: member="iniparser.h::iniparser_dump" ref="a3" args="(dictionary *d, FILE *f)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">void iniparser_dump </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">void iniparser_dump </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FILE *&nbsp;</td>
- <td class="paramname"> <em>f</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>FILE *&nbsp;</td>
+ <td class="mdname" nowrap> <em>f</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Dump a dictionary to an opened file pointer.
@@ -101,34 +111,42 @@ Dump a dictionary to an opened file pointer.
<tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>Opened file pointer to dump to. </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-This function prints out the contents of a dictionary, one element by line, onto the provided file pointer. It is OK to specify <code>stderr</code> or <code>stdout</code> as output files. This function is meant for debugging purposes mostly.
-</div>
-</div><p>
-<a class="anchor" name="ece0e32de371c9e9592d8333f816dfac"></a><!-- doxytag: member="iniparser.h::iniparser_dump_ini" ref="ece0e32de371c9e9592d8333f816dfac" args="(dictionary *d, FILE *f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+This function prints out the contents of a dictionary, one element by line, onto the provided file pointer. It is OK to specify <code>stderr</code> or <code>stdout</code> as output files. This function is meant for debugging purposes mostly. </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="iniparser.h::iniparser_dump_ini" ref="a2" args="(dictionary *d, FILE *f)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">void iniparser_dump_ini </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">void iniparser_dump_ini </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">FILE *&nbsp;</td>
- <td class="paramname"> <em>f</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>FILE *&nbsp;</td>
+ <td class="mdname" nowrap> <em>f</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Save a dictionary to a loadable ini file.
@@ -139,34 +157,42 @@ Save a dictionary to a loadable ini file.
<tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>Opened file pointer to dump to </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-This function dumps a given dictionary into a loadable ini file. It is Ok to specify <code>stderr</code> or <code>stdout</code> as output files.
-</div>
-</div><p>
-<a class="anchor" name="3d67c98bbc0cb5239f024ad54bdc63f1"></a><!-- doxytag: member="iniparser.h::iniparser_find_entry" ref="3d67c98bbc0cb5239f024ad54bdc63f1" args="(dictionary *ini, char *entry)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+This function dumps a given dictionary into a loadable ini file. It is Ok to specify <code>stderr</code> or <code>stdout</code> as output files. </td>
+ </tr>
+</table>
+<a class="anchor" name="a11"></a><!-- doxytag: member="iniparser.h::iniparser_find_entry" ref="a11" args="(dictionary *ini, char *entry)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">int iniparser_find_entry </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>ini</em>, </td>
+ <td class="md" nowrap valign="top">int iniparser_find_entry </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>ini</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>entry</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Finds out if a given entry exists in a dictionary.
@@ -177,25 +203,33 @@ Finds out if a given entry exists in a dictionary.
<tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>Name of the entry to look for </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>integer 1 if entry exists, 0 otherwise</dd></dl>
-Finds out if a given entry exists in the dictionary. Since sections are stored as keys with NULL associated values, this is the only way of querying for the presence of sections in a dictionary.
-</div>
-</div><p>
-<a class="anchor" name="90549ee518523921886b74454ff872eb"></a><!-- doxytag: member="iniparser.h::iniparser_freedict" ref="90549ee518523921886b74454ff872eb" args="(dictionary *d)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void iniparser_freedict </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td width="100%"></td>
+<dl compact><dt><b>Returns:</b></dt><dd>integer 1 if entry exists, 0 otherwise</dd></dl>
+Finds out if a given entry exists in the dictionary. Since sections are stored as keys with NULL associated values, this is the only way of querying for the presence of sections in a dictionary. </td>
+ </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="iniparser.h::iniparser_freedict" ref="a13" args="(dictionary *d)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void iniparser_freedict </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>d</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Free all memory associated to an ini dictionary.
@@ -205,40 +239,48 @@ Free all memory associated to an ini dictionary.
<tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>Dictionary to free </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-Free all memory associated to an ini dictionary. It is mandatory to call this function before the dictionary object gets out of the current context.
-</div>
-</div><p>
-<a class="anchor" name="eb93c13fcbb75efaa396f53bfd73ff4d"></a><!-- doxytag: member="iniparser.h::iniparser_getboolean" ref="eb93c13fcbb75efaa396f53bfd73ff4d" args="(dictionary *d, const char *key, int notfound)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+Free all memory associated to an ini dictionary. It is mandatory to call this function before the dictionary object gets out of the current context. </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="iniparser.h::iniparser_getboolean" ref="a8" args="(dictionary *d, char *key, int notfound)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">int iniparser_getboolean </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">int iniparser_getboolean </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>key</em>, </td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>notfound</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>notfound</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Get the string associated to a key, convert to a boolean.
@@ -250,7 +292,7 @@ Get the string associated to a key, convert to a boolean.
<tr><td valign="top"></td><td valign="top"><em>notfound</em>&nbsp;</td><td>Value to return in case of error </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned.<p>
A true boolean is found if one of the following is matched:<p>
<ul>
@@ -260,39 +302,47 @@ A false boolean is found if one of the following is matched:<p>
<ul>
<li>A string starting with 'n'</li><li>A string starting with 'N'</li><li>A string starting with 'f'</li><li>A string starting with 'F'</li><li>A string starting with '0'</li></ul>
<p>
-The notfound value returned if no boolean is identified, does not necessarily have to be 0 or 1.
-</div>
-</div><p>
-<a class="anchor" name="480d35322f1252344cf2246ac21ee559"></a><!-- doxytag: member="iniparser.h::iniparser_getdouble" ref="480d35322f1252344cf2246ac21ee559" args="(dictionary *d, char *key, double notfound)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+The notfound value returned if no boolean is identified, does not necessarily have to be 0 or 1. </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="iniparser.h::iniparser_getdouble" ref="a7" args="(dictionary *d, char *key, double notfound)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">double iniparser_getdouble </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">double iniparser_getdouble </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>key</em>, </td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">double&nbsp;</td>
- <td class="paramname"> <em>notfound</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>notfound</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Get the string associated to a key, convert to a double.
@@ -304,40 +354,48 @@ Get the string associated to a key, convert to a double.
<tr><td valign="top"></td><td valign="top"><em>notfound</em>&nbsp;</td><td>Value to return in case of error </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>double</dd></dl>
-This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned.
-</div>
-</div><p>
-<a class="anchor" name="694eb1110f4200db8648820a0bb405fa"></a><!-- doxytag: member="iniparser.h::iniparser_getint" ref="694eb1110f4200db8648820a0bb405fa" args="(dictionary *d, const char *key, int notfound)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+<dl compact><dt><b>Returns:</b></dt><dd>double</dd></dl>
+This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned. </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="iniparser.h::iniparser_getint" ref="a6" args="(dictionary *d, char *key, int notfound)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">int iniparser_getint </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">int iniparser_getint </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>key</em>, </td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>notfound</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>notfound</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Get the string associated to a key, convert to an int.
@@ -349,31 +407,33 @@ Get the string associated to a key, convert to an int.
<tr><td valign="top"></td><td valign="top"><em>notfound</em>&nbsp;</td><td>Value to return in case of error </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
-This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned.<p>
-Supported values for integers include the usual C notation so decimal, octal (starting with 0) and hexadecimal (starting with 0x) are supported. Examples:<p>
-<ul>
-<li>"42" -&gt; 42</li><li>"042" -&gt; 34 (octal -&gt; decimal)</li><li>"0x42" -&gt; 66 (hexa -&gt; decimal)</li></ul>
-<p>
-Warning: the conversion may overflow in various ways. Conversion is totally outsourced to strtol(), see the associated man page for overflow handling.<p>
-Credits: Thanks to A. Becker for suggesting strtol()
-</div>
-</div><p>
-<a class="anchor" name="0b5d6cdc7587e2d27a30f5cdc4a91931"></a><!-- doxytag: member="iniparser.h::iniparser_getnsec" ref="0b5d6cdc7587e2d27a30f5cdc4a91931" args="(dictionary *d)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int iniparser_getnsec </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td width="100%"></td>
+<dl compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
+This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned. </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="iniparser.h::iniparser_getnsec" ref="a0" args="(dictionary *d)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int iniparser_getnsec </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>d</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Get number of sections in a dictionary.
@@ -383,36 +443,44 @@ Get number of sections in a dictionary.
<tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>Dictionary to examine </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>int Number of sections found in dictionary</dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>int Number of sections found in dictionary</dd></dl>
This function returns the number of sections found in a dictionary. The test to recognize sections is done on the string stored in the dictionary: a section name is given as "section" whereas a key is stored as "section:key", thus the test looks for entries that do not contain a colon.<p>
This clearly fails in the case a section name contains a colon, but this should simply be avoided.<p>
-This function returns -1 in case of error.
-</div>
-</div><p>
-<a class="anchor" name="393212be805f395bbfdeb1bafa8bb72a"></a><!-- doxytag: member="iniparser.h::iniparser_getsecname" ref="393212be805f395bbfdeb1bafa8bb72a" args="(dictionary *d, int n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+This function returns -1 in case of error. </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="iniparser.h::iniparser_getsecname" ref="a1" args="(dictionary *d, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">char* iniparser_getsecname </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">char* iniparser_getsecname </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Get name for section n in a dictionary.
@@ -423,35 +491,43 @@ Get name for section n in a dictionary.
<tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>Section number (from 0 to nsec-1). </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to char string</dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Pointer to char string</dd></dl>
This function locates the n-th section in a dictionary and returns its name as a pointer to a string statically allocated inside the dictionary. Do not free or modify the returned string!<p>
-This function returns NULL in case of error.
-</div>
-</div><p>
-<a class="anchor" name="587eafb48937fdee8ae414ad7a666db8"></a><!-- doxytag: member="iniparser.h::iniparser_getstr" ref="587eafb48937fdee8ae414ad7a666db8" args="(dictionary *d, const char *key)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+This function returns NULL in case of error. </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="iniparser.h::iniparser_getstr" ref="a4" args="(dictionary *d, char *key)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">char* iniparser_getstr </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">char* iniparser_getstr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Get the string associated to a key, return NULL if not found.
@@ -462,41 +538,49 @@ Get the string associated to a key, return NULL if not found.
<tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Key string to look for </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string, or NULL.</dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string, or NULL.</dd></dl>
This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, NULL is returned. The returned char pointer is pointing to a string allocated in the dictionary, do not free or modify it.<p>
-This function is only provided for backwards compatibility with previous versions of iniparser. It is recommended to use <a class="el" href="iniparser_8h.html#7894f8480e1f254d4a1b4a31bdc51b46">iniparser_getstring()</a> instead.
-</div>
-</div><p>
-<a class="anchor" name="7894f8480e1f254d4a1b4a31bdc51b46"></a><!-- doxytag: member="iniparser.h::iniparser_getstring" ref="7894f8480e1f254d4a1b4a31bdc51b46" args="(dictionary *d, const char *key, char *def)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+This function is only provided for backwards compatibility with previous versions of iniparser. It is recommended to use <a class="el" href="iniparser_8h.html#a5">iniparser_getstring()</a> instead. </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="iniparser.h::iniparser_getstring" ref="a5" args="(dictionary *d, char *key, char *def)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">char* iniparser_getstring </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>d</em>, </td>
+ <td class="md" nowrap valign="top">char* iniparser_getstring </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>d</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>key</em>, </td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>def</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>def</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Get the string associated to a key.
@@ -508,25 +592,33 @@ Get the string associated to a key.
<tr><td valign="top"></td><td valign="top"><em>def</em>&nbsp;</td><td>Default value to return if key not found. </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string</dd></dl>
-This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the pointer passed as 'def' is returned. The returned char pointer is pointing to a string allocated in the dictionary, do not free or modify it.
-</div>
-</div><p>
-<a class="anchor" name="b0be559bfb769224b3f1b75e26242a67"></a><!-- doxytag: member="iniparser.h::iniparser_load" ref="b0be559bfb769224b3f1b75e26242a67" args="(const char *ininame)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">dictionary* iniparser_load </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>ininame</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td width="100%"></td>
+<dl compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string</dd></dl>
+This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the pointer passed as 'def' is returned. The returned char pointer is pointing to a string allocated in the dictionary, do not free or modify it. </td>
+ </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="iniparser.h::iniparser_load" ref="a12" args="(char *ininame)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">dictionary* iniparser_load </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>ininame</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Parse an ini file and return an allocated dictionary object.
@@ -536,41 +628,49 @@ Parse an ini file and return an allocated dictionary object.
<tr><td valign="top"></td><td valign="top"><em>ininame</em>&nbsp;</td><td>Name of the ini file to read. </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to newly allocated dictionary</dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Pointer to newly allocated dictionary</dd></dl>
This is the parser for ini files. This function is called, providing the name of the file to be read. It returns a dictionary object that should not be accessed directly, but through accessor functions instead.<p>
-The returned dictionary must be freed using <a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict()</a>.
-</div>
-</div><p>
-<a class="anchor" name="605a88057bac4c3249513fc588421c32"></a><!-- doxytag: member="iniparser.h::iniparser_setstr" ref="605a88057bac4c3249513fc588421c32" args="(dictionary *ini, char *entry, char *val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+The returned dictionary must be freed using <a class="el" href="iniparser_8h.html#a13">iniparser_freedict()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="iniparser.h::iniparser_setstr" ref="a9" args="(dictionary *ini, char *entry, char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">int iniparser_setstr </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>ini</em>, </td>
+ <td class="md" nowrap valign="top">int iniparser_setstr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>ini</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>entry</em>, </td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>entry</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Set an entry in a dictionary.
@@ -582,34 +682,42 @@ Set an entry in a dictionary.
<tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>New value to associate to the entry. </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>int 0 if Ok, -1 otherwise.</dd></dl>
-If the given entry can be found in the dictionary, it is modified to contain the provided value. If it cannot be found, -1 is returned. It is Ok to set val to NULL.
-</div>
-</div><p>
-<a class="anchor" name="7b1a7f2492a35043867fa801b8f21e52"></a><!-- doxytag: member="iniparser.h::iniparser_unset" ref="7b1a7f2492a35043867fa801b8f21e52" args="(dictionary *ini, char *entry)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
+<dl compact><dt><b>Returns:</b></dt><dd>int 0 if Ok, -1 otherwise.</dd></dl>
+If the given entry can be found in the dictionary, it is modified to contain the provided value. If it cannot be found, -1 is returned. It is Ok to set val to NULL. </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="iniparser.h::iniparser_unset" ref="a10" args="(dictionary *ini, char *entry)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="memname">void iniparser_unset </td>
- <td>(</td>
- <td class="paramtype">dictionary *&nbsp;</td>
- <td class="paramname"> <em>ini</em>, </td>
+ <td class="md" nowrap valign="top">void iniparser_unset </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
+ <td class="mdname" nowrap> <em>ini</em>, </td>
</tr>
<tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>entry</em></td>
</tr>
<tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
-</div>
-<div class="memdoc">
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
<p>
Delete an entry in a dictionary.
@@ -620,10 +728,10 @@ Delete an entry in a dictionary.
<tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>Entry to delete (entry name) </td></tr>
</table>
</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-If the given entry can be found, it is deleted from the dictionary.
-</div>
-</div><p>
+<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+If the given entry can be found, it is deleted from the dictionary. </td>
+ </tr>
+</table>
</body>
</html>
diff --git a/source/iniparser/html/iniparser_8main.html b/source/iniparser/html/iniparser_8main.html
index a00eed2f9eb..38a963bbc7f 100644
--- a/source/iniparser/html/iniparser_8main.html
+++ b/source/iniparser/html/iniparser_8main.html
@@ -10,7 +10,7 @@
-<!-- Generated by Doxygen 1.5.1 -->
+<!-- Generated by Doxygen 1.4.4 -->
<h1>iniparser.main File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
diff --git a/source/iniparser/html/tab_b.gif b/source/iniparser/html/tab_b.gif
deleted file mode 100644
index 0d623483ffd..00000000000
--- a/source/iniparser/html/tab_b.gif
+++ /dev/null
Binary files differ
diff --git a/source/iniparser/html/tab_l.gif b/source/iniparser/html/tab_l.gif
deleted file mode 100644
index 9b1e6337c92..00000000000
--- a/source/iniparser/html/tab_l.gif
+++ /dev/null
Binary files differ
diff --git a/source/iniparser/html/tab_r.gif b/source/iniparser/html/tab_r.gif
deleted file mode 100644
index ce9dd9f533c..00000000000
--- a/source/iniparser/html/tab_r.gif
+++ /dev/null
Binary files differ
diff --git a/source/iniparser/html/tabs.css b/source/iniparser/html/tabs.css
deleted file mode 100644
index a61552a67ad..00000000000
--- a/source/iniparser/html/tabs.css
+++ /dev/null
@@ -1,102 +0,0 @@
-/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
-
-DIV.tabs
-{
- float : left;
- width : 100%;
- background : url("tab_b.gif") repeat-x bottom;
- margin-bottom : 4px;
-}
-
-DIV.tabs UL
-{
- margin : 0px;
- padding-left : 10px;
- list-style : none;
-}
-
-DIV.tabs LI, DIV.tabs FORM
-{
- display : inline;
- margin : 0px;
- padding : 0px;
-}
-
-DIV.tabs FORM
-{
- float : right;
-}
-
-DIV.tabs A
-{
- float : left;
- background : url("tab_r.gif") no-repeat right top;
- border-bottom : 1px solid #84B0C7;
- font-size : x-small;
- font-weight : bold;
- text-decoration : none;
-}
-
-DIV.tabs A:hover
-{
- background-position: 100% -150px;
-}
-
-DIV.tabs A:link, DIV.tabs A:visited,
-DIV.tabs A:active, DIV.tabs A:hover
-{
- color: #1A419D;
-}
-
-DIV.tabs SPAN
-{
- float : left;
- display : block;
- background : url("tab_l.gif") no-repeat left top;
- padding : 5px 9px;
- white-space : nowrap;
-}
-
-DIV.tabs INPUT
-{
- float : right;
- display : inline;
- font-size : 1em;
-}
-
-DIV.tabs TD
-{
- font-size : x-small;
- font-weight : bold;
- text-decoration : none;
-}
-
-
-
-/* Commented Backslash Hack hides rule from IE5-Mac \*/
-DIV.tabs SPAN {float : none;}
-/* End IE5-Mac hack */
-
-DIV.tabs A:hover SPAN
-{
- background-position: 0% -150px;
-}
-
-DIV.tabs LI#current A
-{
- background-position: 100% -150px;
- border-width : 0px;
-}
-
-DIV.tabs LI#current SPAN
-{
- background-position: 0% -150px;
- padding-bottom : 6px;
-}
-
-DIV.nav
-{
- background : none;
- border : none;
- border-bottom : 1px solid #84B0C7;
-}
diff --git a/source/iniparser/src/dictionary.c b/source/iniparser/src/dictionary.c
index b9d426dc7e3..edbd6f9a353 100644
--- a/source/iniparser/src/dictionary.c
+++ b/source/iniparser/src/dictionary.c
@@ -4,7 +4,7 @@
@file dictionary.c
@author N. Devillard
@date Aug 2000
- @version $Revision: 1.25 $
+ @version $Revision: 1.23 $
@brief Implements a dictionary for string variables.
This module implements a simple dictionary object, i.e. a list
@@ -14,10 +14,10 @@
/*--------------------------------------------------------------------------*/
/*
- $Id: dictionary.c,v 1.25 2007-05-27 13:03:43 ndevilla Exp $
+ $Id: dictionary.c,v 1.23 2002/06/17 09:30:46 ndevilla Exp $
$Author: ndevilla $
- $Date: 2007-05-27 13:03:43 $
- $Revision: 1.25 $
+ $Date: 2002/06/17 09:30:46 $
+ $Revision: 1.23 $
*/
/*---------------------------------------------------------------------------
diff --git a/source/iniparser/src/dictionary.h b/source/iniparser/src/dictionary.h
index b332680b04c..dcab6e75117 100644
--- a/source/iniparser/src/dictionary.h
+++ b/source/iniparser/src/dictionary.h
@@ -14,9 +14,9 @@
/*--------------------------------------------------------------------------*/
/*
- $Id: dictionary.h,v 1.11 2002-06-17 09:30:46 ndevilla Exp $
+ $Id: dictionary.h,v 1.11 2002/06/17 09:30:46 ndevilla Exp $
$Author: ndevilla $
- $Date: 2002-06-17 09:30:46 $
+ $Date: 2002/06/17 09:30:46 $
$Revision: 1.11 $
*/
diff --git a/source/iniparser/src/iniparser.c b/source/iniparser/src/iniparser.c
index 09340876d8c..0cb452b2655 100644
--- a/source/iniparser/src/iniparser.c
+++ b/source/iniparser/src/iniparser.c
@@ -4,16 +4,16 @@
@file iniparser.c
@author N. Devillard
@date Mar 2000
- @version $Revision: 2.17 $
+ @version $Revision: 2.14 $
@brief Parser for ini files.
*/
/*--------------------------------------------------------------------------*/
/*
- $Id: iniparser.c,v 2.17 2007-05-27 13:03:43 ndevilla Exp $
+ $Id: iniparser.c,v 2.14 2002/12/12 10:49:01 ndevilla Exp $
$Author: ndevilla $
- $Date: 2007-05-27 13:03:43 $
- $Revision: 2.17 $
+ $Date: 2002/12/12 10:49:01 $
+ $Revision: 2.14 $
*/
/*---------------------------------------------------------------------------
@@ -280,20 +280,6 @@ char * iniparser_getstring(dictionary * d, const char * key, char * def)
This function queries a dictionary for a key. A key as read from an
ini file is given as "section:key". If the key cannot be found,
the notfound value is returned.
-
- Supported values for integers include the usual C notation
- so decimal, octal (starting with 0) and hexadecimal (starting with 0x)
- are supported. Examples:
-
- "42" -> 42
- "042" -> 34 (octal -> decimal)
- "0x42" -> 66 (hexa -> decimal)
-
- Warning: the conversion may overflow in various ways. Conversion is
- totally outsourced to strtol(), see the associated man page for overflow
- handling.
-
- Credits: Thanks to A. Becker for suggesting strtol()
*/
/*--------------------------------------------------------------------------*/
int iniparser_getint(dictionary * d, const char * key, int notfound)
@@ -302,7 +288,7 @@ int iniparser_getint(dictionary * d, const char * key, int notfound)
str = iniparser_getstring(d, key, INI_INVALID_KEY);
if (str==INI_INVALID_KEY) return notfound ;
- return (int)strtol(str, NULL, 0);
+ return atoi(str);
}
diff --git a/source/iniparser/src/iniparser.h b/source/iniparser/src/iniparser.h
index 5bbd9045cfc..2df8ffe8374 100644
--- a/source/iniparser/src/iniparser.h
+++ b/source/iniparser/src/iniparser.h
@@ -4,16 +4,16 @@
@file iniparser.h
@author N. Devillard
@date Mar 2000
- @version $Revision: 1.23 $
+ @version $Revision: 1.20 $
@brief Parser for ini files.
*/
/*--------------------------------------------------------------------------*/
/*
- $Id: iniparser.h,v 1.23 2006-09-27 11:03:35 ndevilla Exp $
+ $Id: iniparser.h,v 1.20 2005/08/19 17:23:21 ndevilla Exp $
$Author: ndevilla $
- $Date: 2006-09-27 11:03:35 $
- $Revision: 1.23 $
+ $Date: 2005/08/19 17:23:21 $
+ $Revision: 1.20 $
*/
#ifndef _INIPARSER_H_
@@ -154,20 +154,6 @@ char * iniparser_getstring(dictionary * d, const char * key, char * def);
This function queries a dictionary for a key. A key as read from an
ini file is given as "section:key". If the key cannot be found,
the notfound value is returned.
-
- Supported values for integers include the usual C notation
- so decimal, octal (starting with 0) and hexadecimal (starting with 0x)
- are supported. Examples:
-
- - "42" -> 42
- - "042" -> 34 (octal -> decimal)
- - "0x42" -> 66 (hexa -> decimal)
-
- Warning: the conversion may overflow in various ways. Conversion is
- totally outsourced to strtol(), see the associated man page for overflow
- handling.
-
- Credits: Thanks to A. Becker for suggesting strtol()
*/
/*--------------------------------------------------------------------------*/
int iniparser_getint(dictionary * d, const char * key, int notfound);
diff --git a/source/iniparser/src/strlib.c b/source/iniparser/src/strlib.c
index f0d85aea580..b954a36cf79 100644
--- a/source/iniparser/src/strlib.c
+++ b/source/iniparser/src/strlib.c
@@ -4,7 +4,7 @@
@file strlib.c
@author N. Devillard
@date Jan 2001
- @version $Revision: 1.9 $
+ @version $Revision: 1.8 $
@brief Various string handling routines to complement the C lib.
This modules adds a few complementary string routines usually missing
@@ -13,10 +13,10 @@
/*--------------------------------------------------------------------------*/
/*
- $Id: strlib.c,v 1.9 2006-09-27 11:04:11 ndevilla Exp $
+ $Id: strlib.c,v 1.8 2002/12/12 10:29:16 ndevilla Exp $
$Author: ndevilla $
- $Date: 2006-09-27 11:04:11 $
- $Revision: 1.9 $
+ $Date: 2002/12/12 10:29:16 $
+ $Revision: 1.8 $
*/
/*---------------------------------------------------------------------------
diff --git a/source/iniparser/src/strlib.h b/source/iniparser/src/strlib.h
index cd70a6287de..39ca26f1df0 100644
--- a/source/iniparser/src/strlib.h
+++ b/source/iniparser/src/strlib.h
@@ -4,7 +4,7 @@
@file strlib.h
@author N. Devillard
@date Jan 2001
- @version $Revision: 1.4 $
+ @version $Revision: 1.3 $
@brief Various string handling routines to complement the C lib.
This modules adds a few complementary string routines usually missing
@@ -13,10 +13,10 @@
/*--------------------------------------------------------------------------*/
/*
- $Id: strlib.h,v 1.4 2006-09-27 11:04:11 ndevilla Exp $
+ $Id: strlib.h,v 1.3 2001/10/19 08:31:41 ndevilla Exp $
$Author: ndevilla $
- $Date: 2006-09-27 11:04:11 $
- $Revision: 1.4 $
+ $Date: 2001/10/19 08:31:41 $
+ $Revision: 1.3 $
*/
#ifndef _STRLIB_H_
diff --git a/source/iniparser_build/dictionary.c b/source/iniparser_build/dictionary.c
deleted file mode 100644
index de98a4523f0..00000000000
--- a/source/iniparser_build/dictionary.c
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- for someplatforms it's needed to inject replace.h into
- the iniparser source code
- --metze
-*/
-#include "lib/replace/replace.h"
-#include "iniparser/src/dictionary.c"
diff --git a/source/iniparser_build/iniparser.c b/source/iniparser_build/iniparser.c
deleted file mode 100644
index 4974f373ee5..00000000000
--- a/source/iniparser_build/iniparser.c
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- for someplatforms it's needed to inject replace.h into
- the iniparser source code
- --metze
-*/
-#include "lib/replace/replace.h"
-#include "iniparser/src/iniparser.c"
diff --git a/source/iniparser_build/strlib.c b/source/iniparser_build/strlib.c
deleted file mode 100644
index 685ec8e04db..00000000000
--- a/source/iniparser_build/strlib.c
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- for someplatforms it's needed to inject replace.h into
- the iniparser source code
- --metze
-*/
-#include "lib/replace/replace.h"
-#include "iniparser/src/strlib.c"
diff --git a/source/intl/lang_tdb.c b/source/intl/lang_tdb.c
index c2def85d6e9..ddb3d4d65e3 100644
--- a/source/intl/lang_tdb.c
+++ b/source/intl/lang_tdb.c
@@ -32,7 +32,7 @@ static BOOL load_msg(const char *msg_file)
char **lines;
int num_lines, i;
char *msgid, *msgstr;
- TDB_DATA data;
+ TDB_DATA key, data;
lines = file_lines_load(msg_file, &num_lines,0);
@@ -63,8 +63,11 @@ static BOOL load_msg(const char *msg_file)
}
all_string_sub(msgid, "\\n", "\n", 0);
all_string_sub(msgstr, "\\n", "\n", 0);
- data = string_term_tdb_data(msgstr);
- tdb_store_bystring(tdb, msgid, data, 0);
+ key.dptr = msgid;
+ key.dsize = strlen(msgid)+1;
+ data.dptr = msgstr;
+ data.dsize = strlen(msgstr)+1;
+ tdb_store(tdb, key, data, 0);
msgid = NULL;
}
}
@@ -175,7 +178,7 @@ BOOL lang_tdb_init(const char *lang)
*/
const char *lang_msg(const char *msgid)
{
- TDB_DATA data;
+ TDB_DATA key, data;
const char *p;
char *q, *msgid_quoted;
int count;
@@ -211,7 +214,10 @@ const char *lang_msg(const char *msgid)
*q = 0;
- data = tdb_fetch_bystring(tdb, msgid_quoted);
+ key.dptr = (char *)msgid_quoted;
+ key.dsize = strlen(msgid_quoted)+1;
+
+ data = tdb_fetch(tdb, key);
free(msgid_quoted);
@@ -231,6 +237,32 @@ void lang_msg_free(const char *msgstr)
free((void *)msgstr);
}
+
+/*
+ when the _() translation macro is used there is no obvious place to free
+ the resulting string and there is no easy way to give a static pointer.
+ All we can do is rotate between some static buffers and hope a single d_printf()
+ doesn't have more calls to _() than the number of buffers
+*/
+const char *lang_msg_rotate(const char *msgid)
+{
+#define NUM_LANG_BUFS 16
+ char *msgstr;
+ static pstring bufs[NUM_LANG_BUFS];
+ static int next;
+
+ msgstr = (char *)lang_msg(msgid);
+ if (!msgstr) return msgid;
+
+ pstrcpy(bufs[next], msgstr);
+ msgstr = bufs[next];
+
+ next = (next+1) % NUM_LANG_BUFS;
+
+ return msgstr;
+}
+
+
/*
return the current language - needed for language file mappings
*/
diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c
index 5ca7f201c24..8d5fbc8118d 100644
--- a/source/lib/charcnv.c
+++ b/source/lib/charcnv.c
@@ -168,7 +168,7 @@ void init_iconv(void)
conv_handles[c1][c2] = smb_iconv_open(n2,n1);
if (!conv_handles[c1][c2]) {
DEBUG(0,("init_iconv: Conversion from %s to %s failed", n1, n2));
- smb_panic("init_iconv: conv_handle initialization failed");
+ smb_panic("init_iconv: conv_handle initialization failed.");
}
}
}
@@ -1376,24 +1376,16 @@ size_t push_string_fn(const char *function, unsigned int line, const void *base_
The resulting string in "dest" is always null terminated.
**/
-size_t pull_string_fn(const char *function, unsigned int line,
- const void *base_ptr, uint16 smb_flags2, char *dest,
- const void *src, size_t dest_len, size_t src_len,
- int flags)
+size_t pull_string_fn(const char *function, unsigned int line, const void *base_ptr, char *dest, const void *src, size_t dest_len, size_t src_len, int flags)
{
#ifdef DEVELOPER
if (dest_len != (size_t)-1)
clobber_region(function, line, dest, dest_len);
#endif
- if ((base_ptr == NULL) && ((flags & (STR_ASCII|STR_UNICODE)) == 0)) {
- smb_panic("No base ptr to get flg2 and neither ASCII nor "
- "UNICODE defined");
- }
-
if (!(flags & STR_ASCII) && \
((flags & STR_UNICODE || \
- (smb_flags2 & FLAGS2_UNICODE_STRINGS)))) {
+ (SVAL(base_ptr, smb_flg2) & FLAGS2_UNICODE_STRINGS)))) {
return pull_ucs2(base_ptr, dest, src, dest_len, src_len, flags);
}
return pull_ascii(dest, src, dest_len, src_len, flags);
diff --git a/source/lib/conn_tdb.c b/source/lib/conn_tdb.c
deleted file mode 100644
index 979f202df7f..00000000000
--- a/source/lib/conn_tdb.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Low-level connections.tdb access functions
- Copyright (C) Volker Lendecke 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-static struct db_context *connections_db_ctx(BOOL rw)
-{
- static struct db_context *db_ctx;
-
- if (db_ctx != NULL) {
- return db_ctx;
- }
-
- if (rw) {
- db_ctx = db_open(NULL, lock_path("connections.tdb"), 0,
- TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
- O_RDWR | O_CREAT, 0644);
- }
- else {
- db_ctx = db_open(NULL, lock_path("connections.tdb"), 0,
- TDB_DEFAULT, O_RDONLY, 0);
- }
-
- return db_ctx;
-}
-
-struct db_record *connections_fetch_record(TALLOC_CTX *mem_ctx,
- TDB_DATA key)
-{
- struct db_context *ctx = connections_db_ctx(True);
-
- if (ctx == NULL) {
- return NULL;
- }
-
- return ctx->fetch_locked(ctx, mem_ctx, key);
-}
-
-struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
- connection_struct *conn,
- const char *name)
-{
- struct connections_key ckey;
- TDB_DATA key;
-
- ZERO_STRUCT(ckey);
- ckey.pid = procid_self();
- ckey.cnum = conn ? conn->cnum : -1;
- strlcpy(ckey.name, name, sizeof(ckey.name));
-
- key.dsize = sizeof(ckey);
- key.dptr = (uint8 *)&ckey;
-
- return connections_fetch_record(mem_ctx, key);
-}
-
-struct conn_traverse_state {
- int (*fn)(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *data,
- void *private_data);
- void *private_data;
-};
-
-static int conn_traverse_fn(struct db_record *rec, void *private_data)
-{
- struct conn_traverse_state *state =
- (struct conn_traverse_state *)private_data;
-
- if ((rec->key.dsize != sizeof(struct connections_key))
- || (rec->value.dsize != sizeof(struct connections_data))) {
- return 0;
- }
-
- return state->fn(rec, (const struct connections_key *)rec->key.dptr,
- (const struct connections_data *)rec->value.dptr,
- state->private_data);
-}
-
-int connections_traverse(int (*fn)(struct db_record *rec,
- void *private_data),
- void *private_data)
-{
- struct db_context *ctx = connections_db_ctx(False);
-
- if (ctx == NULL) {
- return -1;
- }
-
- return ctx->traverse(ctx, fn, private_data);
-}
-
-int connections_forall(int (*fn)(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *data,
- void *private_data),
- void *private_data)
-{
- struct conn_traverse_state state;
-
- state.fn = fn;
- state.private_data = private_data;
-
- return connections_traverse(conn_traverse_fn, (void *)&state);
-}
-
-BOOL connections_init(BOOL rw)
-{
- return (connections_db_ctx(rw) != NULL);
-}
diff --git a/source/lib/ctdbd_conn.c b/source/lib/ctdbd_conn.c
deleted file mode 100644
index 8c1aab8f371..00000000000
--- a/source/lib/ctdbd_conn.c
+++ /dev/null
@@ -1,1167 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Samba internal messaging functions
- Copyright (C) 2007 by Volker Lendecke
- Copyright (C) 2007 by Andrew Tridgell
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#ifdef CLUSTER_SUPPORT
-
-#include "librpc/gen_ndr/messaging.h"
-#include "librpc/gen_ndr/ndr_messaging.h"
-
-/* paths to these include files come from --with-ctdb= in configure */
-#include "ctdb.h"
-#include "ctdb_private.h"
-
-struct ctdbd_connection {
- struct messaging_context *msg_ctx;
- uint32 reqid;
- uint32 our_vnn;
- uint64 rand_srvid;
- struct packet_context *pkt;
- struct fd_event *fde;
-
- void (*release_ip_handler)(const char *ip_addr, void *private_data);
- void *release_ip_priv;
-};
-
-static NTSTATUS ctdbd_control(struct ctdbd_connection *conn,
- uint32_t vnn, uint32 opcode,
- uint64_t srvid, TDB_DATA data,
- TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
- int *cstatus);
-
-/*
- * exit on fatal communications errors with the ctdbd daemon
- */
-static void cluster_fatal(const char *why)
-{
- DEBUG(0,("cluster fatal event: %s - exiting immediately\n", why));
- /* we don't use smb_panic() as we don't want to delay to write
- a core file. We need to release this process id immediately
- so that someone else can take over without getting sharing
- violations */
- _exit(0);
-}
-
-/*
- * Register a srvid with ctdbd
- */
-static NTSTATUS register_with_ctdbd(struct ctdbd_connection *conn,
- uint64_t srvid)
-{
-
- int cstatus;
- return ctdbd_control(conn, CTDB_CURRENT_NODE,
- CTDB_CONTROL_REGISTER_SRVID, srvid,
- tdb_null, NULL, NULL, &cstatus);
-}
-
-/*
- * get our vnn from the cluster
- */
-static NTSTATUS get_cluster_vnn(struct ctdbd_connection *conn, uint32 *vnn)
-{
- int32_t cstatus=-1;
- NTSTATUS status;
- status = ctdbd_control(conn,
- CTDB_CURRENT_NODE, CTDB_CONTROL_GET_VNN, 0,
- tdb_null, NULL, NULL, &cstatus);
- if (!NT_STATUS_IS_OK(status)) {
- cluster_fatal("ctdbd_control failed\n");
- }
- *vnn = (uint32_t)cstatus;
- return status;
-}
-
-uint32 ctdbd_vnn(const struct ctdbd_connection *conn)
-{
- return conn->our_vnn;
-}
-
-/*
- * Get us a ctdb connection
- */
-
-static NTSTATUS ctdbd_connect(TALLOC_CTX *mem_ctx,
- struct packet_context **presult)
-{
- struct packet_context *result;
- const char *sockname = lp_ctdbd_socket();
- struct sockaddr_un addr;
- int fd;
-
- if (!sockname || !*sockname) {
- sockname = CTDB_PATH;
- }
-
- fd = socket(AF_UNIX, SOCK_STREAM, 0);
- if (fd == -1) {
- DEBUG(3, ("Could not create socket: %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- ZERO_STRUCT(addr);
- addr.sun_family = AF_UNIX;
- strncpy(addr.sun_path, sockname, sizeof(addr.sun_path));
-
- if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
- DEBUG(0, ("connect(%s) failed: %s\n", sockname,
- strerror(errno)));
- close(fd);
- return map_nt_error_from_unix(errno);
- }
-
- if (!(result = packet_init(mem_ctx, fd))) {
- close(fd);
- return NT_STATUS_NO_MEMORY;
- }
-
- *presult = result;
- return NT_STATUS_OK;
-}
-
-/*
- * Do we have a complete ctdb packet in the queue?
- */
-
-static BOOL ctdb_req_complete(const struct data_blob *data,
- size_t *length,
- void *private_data)
-{
- uint32 msglen;
-
- if (data->length < sizeof(msglen)) {
- return False;
- }
-
- msglen = *((uint32 *)data->data);
-
- DEBUG(10, ("msglen = %d\n", msglen));
-
- if (msglen < sizeof(struct ctdb_req_header)) {
- DEBUG(0, ("Got invalid msglen: %d, expected at least %d for "
- "the req_header\n", msglen,
- sizeof(struct ctdb_req_header)));
- cluster_fatal("ctdbd protocol error\n");
- }
-
- if (data->length >= msglen) {
- *length = msglen;
- return True;
- }
-
- return False;
-}
-
-/*
- * State necessary to defer an incoming message while we are waiting for a
- * ctdb reply.
- */
-
-struct deferred_msg_state {
- struct messaging_context *msg_ctx;
- struct messaging_rec *rec;
-};
-
-/*
- * Timed event handler for the deferred message
- */
-
-static void deferred_message_dispatch(struct event_context *event_ctx,
- struct timed_event *te,
- const struct timeval *now,
- void *private_data)
-{
- struct deferred_msg_state *state = talloc_get_type_abort(
- private_data, struct deferred_msg_state);
-
- messaging_dispatch_rec(state->msg_ctx, state->rec);
- TALLOC_FREE(state);
- TALLOC_FREE(te);
-}
-
-struct req_pull_state {
- TALLOC_CTX *mem_ctx;
- DATA_BLOB req;
-};
-
-/*
- * Pull a ctdb request out of the incoming packet queue
- */
-
-static NTSTATUS ctdb_req_pull(const struct data_blob *data,
- void *private_data)
-{
- struct req_pull_state *state = (struct req_pull_state *)private_data;
-
- state->req = data_blob_talloc(state->mem_ctx, data->data,
- data->length);
- if (state->req.data == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
- return NT_STATUS_OK;
-}
-
-/*
- * Fetch a messaging_rec from an incoming ctdb style message
- */
-
-static struct messaging_rec *ctdb_pull_messaging_rec(TALLOC_CTX *mem_ctx,
- size_t overall_length,
- struct ctdb_req_message *msg)
-{
- struct messaging_rec *result;
- DATA_BLOB blob;
- NTSTATUS status;
-
- if ((overall_length < offsetof(struct ctdb_req_message, data))
- || (overall_length
- < offsetof(struct ctdb_req_message, data) + msg->datalen)) {
-
- cluster_fatal("got invalid msg length");
- }
-
- if (!(result = TALLOC_P(mem_ctx, struct messaging_rec))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- blob = data_blob_const(msg->data, msg->datalen);
-
- status = ndr_pull_struct_blob(
- &blob, result, result,
- (ndr_pull_flags_fn_t)ndr_pull_messaging_rec);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("ndr_pull_struct_blob failed: %s\n",
- nt_errstr(status)));
- TALLOC_FREE(result);
- return NULL;
- }
-
- return result;
-}
-
-/*
- * Read a full ctdbd request. If we have a messaging context, defer incoming
- * messages that might come in between.
- */
-
-static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid,
- TALLOC_CTX *mem_ctx, void *result)
-{
- struct ctdb_req_header *hdr;
- struct req_pull_state state;
- NTSTATUS status;
-
- again:
-
- status = packet_fd_read_sync(conn->pkt);
-
- if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_BUSY)) {
- /* EAGAIN */
- goto again;
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("packet_fd_read failed: %s\n", nt_errstr(status)));
- cluster_fatal("ctdbd died\n");
- }
-
- ZERO_STRUCT(state);
- state.mem_ctx = mem_ctx;
-
- if (!packet_handler(conn->pkt, ctdb_req_complete, ctdb_req_pull,
- &state, &status)) {
- /*
- * Not enough data
- */
- goto again;
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("Could not read packet: %s\n", nt_errstr(status)));
- cluster_fatal("ctdbd died\n");
- }
-
- hdr = (struct ctdb_req_header *)state.req.data;
-
- if (hdr->operation == CTDB_REQ_MESSAGE) {
- struct timed_event *evt;
- struct deferred_msg_state *msg_state;
- struct ctdb_req_message *msg = (struct ctdb_req_message *)hdr;
-
- if (conn->msg_ctx == NULL) {
- DEBUG(1, ("Got a message without having a msg ctx, "
- "dropping msg %llu\n", msg->srvid));
- goto again;
- }
-
- if ((conn->release_ip_handler != NULL)
- && (msg->srvid == CTDB_SRVID_RELEASE_IP)) {
- /* must be dispatched immediately */
- DEBUG(10, ("received CTDB_SRVID_RELEASE_IP\n"));
- conn->release_ip_handler((const char *)msg->data,
- conn->release_ip_priv);
- TALLOC_FREE(hdr);
- goto again;
- }
-
- if (!(msg_state = TALLOC_P(NULL, struct deferred_msg_state))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(hdr);
- goto again;
- }
-
- if (!(msg_state->rec = ctdb_pull_messaging_rec(
- msg_state, state.req.length, msg))) {
- DEBUG(0, ("ctdbd_pull_messaging_rec failed\n"));
- TALLOC_FREE(msg_state);
- TALLOC_FREE(hdr);
- goto again;
- }
-
- TALLOC_FREE(hdr);
-
- msg_state->msg_ctx = conn->msg_ctx;
-
- /*
- * We're waiting for a call reply, but an async message has
- * crossed. Defer dispatching to the toplevel event loop.
- */
- evt = event_add_timed(conn->msg_ctx->event_ctx,
- conn->msg_ctx->event_ctx,
- timeval_zero(),
- "deferred_message_dispatch",
- deferred_message_dispatch,
- msg_state);
- if (evt == NULL) {
- DEBUG(0, ("event_add_timed failed\n"));
- TALLOC_FREE(msg_state);
- TALLOC_FREE(hdr);
- goto again;
- }
-
- goto again;
- }
-
- if (hdr->reqid != reqid) {
- /* we got the wrong reply */
- DEBUG(0,("Discarding mismatched ctdb reqid %u should have "
- "been %u\n", hdr->reqid, reqid));
- TALLOC_FREE(hdr);
- goto again;
- }
-
- *((void **)result) = talloc_move(mem_ctx, &hdr);
-
- return NT_STATUS_OK;
-}
-
-/*
- * Get us a ctdbd connection
- */
-
-NTSTATUS ctdbd_init_connection(TALLOC_CTX *mem_ctx,
- struct ctdbd_connection **pconn)
-{
- struct ctdbd_connection *conn;
- NTSTATUS status;
-
- if (!(conn = TALLOC_ZERO_P(mem_ctx, struct ctdbd_connection))) {
- DEBUG(0, ("talloc failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- status = ctdbd_connect(conn, &conn->pkt);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("ctdbd_connect failed: %s\n", nt_errstr(status)));
- goto fail;
- }
-
- status = get_cluster_vnn(conn, &conn->our_vnn);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("get_cluster_vnn failed: %s\n", nt_errstr(status)));
- goto fail;
- }
-
- generate_random_buffer((unsigned char *)&conn->rand_srvid,
- sizeof(conn->rand_srvid));
-
- status = register_with_ctdbd(conn, conn->rand_srvid);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(5, ("Could not register random srvid: %s\n",
- nt_errstr(status)));
- goto fail;
- }
-
- *pconn = conn;
- return NT_STATUS_OK;
-
- fail:
- TALLOC_FREE(conn);
- return status;
-}
-
-/*
- * Get us a ctdbd connection and register us as a process
- */
-
-NTSTATUS ctdbd_messaging_connection(TALLOC_CTX *mem_ctx,
- struct ctdbd_connection **pconn)
-{
- struct ctdbd_connection *conn;
- NTSTATUS status;
-
- status = ctdbd_init_connection(mem_ctx, &conn);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- status = register_with_ctdbd(conn, (uint64_t)sys_getpid());
- if (!NT_STATUS_IS_OK(status)) {
- goto fail;
- }
-
- status = register_with_ctdbd(conn, MSG_SRVID_SAMBA);
- if (!NT_STATUS_IS_OK(status)) {
- goto fail;
- }
-
- *pconn = conn;
- return NT_STATUS_OK;
-
- fail:
- TALLOC_FREE(conn);
- return status;
-}
-
-/*
- * Packet handler to receive and handle a ctdb message
- */
-static NTSTATUS ctdb_handle_message(const struct data_blob *data,
- void *private_data)
-{
- struct ctdbd_connection *conn = talloc_get_type_abort(
- private_data, struct ctdbd_connection);
- struct ctdb_req_message *msg;
- struct messaging_rec *msg_rec;
-
- msg = (struct ctdb_req_message *)data->data;
-
- if (msg->hdr.operation != CTDB_REQ_MESSAGE) {
- DEBUG(0, ("Received async msg of type %u, discarding\n",
- msg->hdr.operation));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if ((conn->release_ip_handler != NULL)
- && (msg->srvid == CTDB_SRVID_RELEASE_IP)) {
- /* must be dispatched immediately */
- DEBUG(10, ("received CTDB_SRVID_RELEASE_IP\n"));
- conn->release_ip_handler((const char *)msg->data,
- conn->release_ip_priv);
- return NT_STATUS_OK;
- }
-
- SMB_ASSERT(conn->msg_ctx != NULL);
-
- if (msg->srvid == CTDB_SRVID_RECONFIGURE) {
- DEBUG(0,("Got cluster reconfigure message\n"));
- /*
- * when the cluster is reconfigured, we need to clean the brl
- * database
- */
- messaging_send(conn->msg_ctx, procid_self(),
- MSG_SMB_BRL_VALIDATE, &data_blob_null);
-
- /*
- * it's possible that we have just rejoined the cluster after
- * an outage. In that case our pending locks could have been
- * removed from the lockdb, so retry them once more
- */
- message_send_all(conn->msg_ctx, MSG_SMB_UNLOCK, NULL, 0, NULL);
-
- return NT_STATUS_OK;
-
- }
-
- /* only messages to our pid or the broadcast are valid here */
- if (msg->srvid != sys_getpid() && msg->srvid != MSG_SRVID_SAMBA) {
- DEBUG(0,("Got unexpected message with srvid=%llu\n",
- (unsigned long long)msg->srvid));
- return NT_STATUS_OK;
- }
-
- if (!(msg_rec = ctdb_pull_messaging_rec(NULL, data->length, msg))) {
- DEBUG(10, ("ctdb_pull_messaging_rec failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- messaging_dispatch_rec(conn->msg_ctx, msg_rec);
-
- TALLOC_FREE(msg_rec);
- return NT_STATUS_OK;
-}
-
-/*
- * The ctdbd socket is readable asynchronuously
- */
-
-static void ctdbd_socket_handler(struct event_context *event_ctx,
- struct fd_event *event,
- uint16 flags,
- void *private_data)
-{
- struct ctdbd_connection *conn = talloc_get_type_abort(
- private_data, struct ctdbd_connection);
-
- NTSTATUS status;
-
- status = packet_fd_read(conn->pkt);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("packet_fd_read failed: %s\n", nt_errstr(status)));
- cluster_fatal("ctdbd died\n");
- }
-
- while (packet_handler(conn->pkt, ctdb_req_complete,
- ctdb_handle_message, conn, &status)) {
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("could not handle incoming message: %s\n",
- nt_errstr(status)));
- }
- }
-}
-
-/*
- * Prepare a ctdbd connection to receive messages
- */
-
-NTSTATUS ctdbd_register_msg_ctx(struct ctdbd_connection *conn,
- struct messaging_context *msg_ctx)
-{
- SMB_ASSERT(conn->msg_ctx == NULL);
- SMB_ASSERT(conn->fde == NULL);
-
- if (!(conn->fde = event_add_fd(msg_ctx->event_ctx, conn,
- packet_get_fd(conn->pkt),
- EVENT_FD_READ,
- ctdbd_socket_handler,
- conn))) {
- DEBUG(0, ("event_add_fd failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- conn->msg_ctx = msg_ctx;
-
- return NT_STATUS_OK;
-}
-
-/*
- * Send a messaging message across a ctdbd
- */
-
-NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
- uint32 dst_vnn, uint64 dst_srvid,
- struct messaging_rec *msg)
-{
- struct ctdb_req_message r;
- TALLOC_CTX *mem_ctx;
- DATA_BLOB blob;
- NTSTATUS status;
-
- if (!(mem_ctx = talloc_init("ctdbd_messaging_send"))) {
- DEBUG(0, ("talloc failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- status = ndr_push_struct_blob(
- &blob, mem_ctx, msg,
- (ndr_push_flags_fn_t)ndr_push_messaging_rec);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("ndr_push_struct_blob failed: %s\n",
- nt_errstr(status)));
- goto fail;
- }
-
- r.hdr.length = offsetof(struct ctdb_req_message, data) + blob.length;
- r.hdr.ctdb_magic = CTDB_MAGIC;
- r.hdr.ctdb_version = CTDB_VERSION;
- r.hdr.generation = 1;
- r.hdr.operation = CTDB_REQ_MESSAGE;
- r.hdr.destnode = dst_vnn;
- r.hdr.srcnode = conn->our_vnn;
- r.hdr.reqid = 0;
- r.srvid = dst_srvid;
- r.datalen = blob.length;
-
- status = packet_send(
- conn->pkt, 2,
- data_blob_const(&r, offsetof(struct ctdb_req_message, data)),
- blob);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("packet_send failed: %s\n", nt_errstr(status)));
- goto fail;
- }
-
- status = packet_flush(conn->pkt);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("write to ctdbd failed: %s\n", nt_errstr(status)));
- cluster_fatal("cluster dispatch daemon msg write error\n");
- }
-
- status = NT_STATUS_OK;
- fail:
- TALLOC_FREE(mem_ctx);
- return status;
-}
-
-/*
- * send/recv a generic ctdb control message
- */
-static NTSTATUS ctdbd_control(struct ctdbd_connection *conn,
- uint32_t vnn, uint32 opcode,
- uint64_t srvid, TDB_DATA data,
- TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
- int *cstatus)
-{
- struct ctdb_req_control req;
- struct ctdb_reply_control *reply = NULL;
- struct ctdbd_connection *new_conn = NULL;
- NTSTATUS status;
-
- if (conn == NULL) {
- status = ctdbd_init_connection(NULL, &new_conn);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("Could not init temp connection: %s\n",
- nt_errstr(status)));
- goto fail;
- }
-
- conn = new_conn;
- }
-
- ZERO_STRUCT(req);
- req.hdr.length = offsetof(struct ctdb_req_control, data) + data.dsize;
- req.hdr.ctdb_magic = CTDB_MAGIC;
- req.hdr.ctdb_version = CTDB_VERSION;
- req.hdr.operation = CTDB_REQ_CONTROL;
- req.hdr.reqid = ++conn->reqid;
- req.hdr.destnode = vnn;
- req.opcode = opcode;
- req.srvid = srvid;
- req.datalen = data.dsize;
-
- status = packet_send(
- conn->pkt, 2,
- data_blob_const(&req, offsetof(struct ctdb_req_control, data)),
- data);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("packet_send failed: %s\n", nt_errstr(status)));
- goto fail;
- }
-
- status = packet_flush(conn->pkt);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("write to ctdbd failed: %s\n", nt_errstr(status)));
- cluster_fatal("cluster dispatch daemon control write error\n");
- }
-
- status = ctdb_read_req(conn, req.hdr.reqid, NULL, (void *)&reply);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("ctdb_read_req failed: %s\n", nt_errstr(status)));
- goto fail;
- }
-
- if (reply->hdr.operation != CTDB_REPLY_CONTROL) {
- DEBUG(0, ("received invalid reply\n"));
- goto fail;
- }
-
- if (outdata) {
- if (!(outdata->dptr = (uint8 *)talloc_memdup(
- mem_ctx, reply->data, reply->datalen))) {
- TALLOC_FREE(reply);
- return NT_STATUS_NO_MEMORY;
- }
- outdata->dsize = reply->datalen;
- }
- if (cstatus) {
- (*cstatus) = reply->status;
- }
-
- status = NT_STATUS_OK;
-
- fail:
- TALLOC_FREE(new_conn);
- TALLOC_FREE(reply);
- return status;
-}
-
-/*
- * see if a remote process exists
- */
-BOOL ctdbd_process_exists(struct ctdbd_connection *conn, uint32 vnn, pid_t pid)
-{
- NTSTATUS status;
- TDB_DATA data;
- int32_t cstatus;
-
- data.dptr = (uint8_t*)&pid;
- data.dsize = sizeof(pid);
-
- status = ctdbd_control(conn, vnn, CTDB_CONTROL_PROCESS_EXISTS, 0,
- data, NULL, NULL, &cstatus);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, (__location__ " ctdb_control for process_exists "
- "failed\n"));
- return False;
- }
-
- return cstatus == 0;
-}
-
-/*
- * Get a db path
- */
-char *ctdbd_dbpath(struct ctdbd_connection *conn,
- TALLOC_CTX *mem_ctx, uint32_t db_id)
-{
- NTSTATUS status;
- TDB_DATA data;
- int32_t cstatus;
-
- data.dptr = (uint8_t*)&db_id;
- data.dsize = sizeof(db_id);
-
- status = ctdbd_control(conn, CTDB_CURRENT_NODE,
- CTDB_CONTROL_GETDBPATH, 0, data,
- mem_ctx, &data, &cstatus);
- if (!NT_STATUS_IS_OK(status) || cstatus != 0) {
- DEBUG(0,(__location__ " ctdb_control for getdbpath failed\n"));
- return NULL;
- }
-
- return (char *)data.dptr;
-}
-
-/*
- * attach to a ctdb database
- */
-NTSTATUS ctdbd_db_attach(struct ctdbd_connection *conn,
- const char *name, uint32_t *db_id, int tdb_flags)
-{
- NTSTATUS status;
- TDB_DATA data;
- int32_t cstatus;
-
- data.dptr = (uint8_t*)name;
- data.dsize = strlen(name)+1;
-
- status = ctdbd_control(conn, CTDB_CURRENT_NODE,
- CTDB_CONTROL_DB_ATTACH, 0, data,
- NULL, &data, &cstatus);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, (__location__ " ctdb_control for db_attach "
- "failed: %s\n", nt_errstr(status)));
- return status;
- }
-
- if (cstatus != 0 || data.dsize != sizeof(uint32_t)) {
- DEBUG(0,(__location__ " ctdb_control for db_attach failed\n"));
- return NT_STATUS_INTERNAL_ERROR;
- }
-
- *db_id = *(uint32_t *)data.dptr;
- talloc_free(data.dptr);
-
- if (!(tdb_flags & TDB_SEQNUM)) {
- return NT_STATUS_OK;
- }
-
- data.dptr = (uint8_t *)db_id;
- data.dsize = sizeof(*db_id);
-
- status = ctdbd_control(conn, CTDB_CURRENT_NODE,
- CTDB_CONTROL_ENABLE_SEQNUM, 0, data,
- NULL, NULL, &cstatus);
- if (!NT_STATUS_IS_OK(status) || cstatus != 0) {
- DEBUG(0,(__location__ " ctdb_control for enable seqnum "
- "failed\n"));
- return NT_STATUS_IS_OK(status) ? NT_STATUS_INTERNAL_ERROR :
- status;
- }
-
- return NT_STATUS_OK;
-}
-
-/*
- * force the migration of a record to this node
- */
-NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32 db_id,
- TDB_DATA key)
-{
- struct ctdb_req_call req;
- struct ctdb_reply_call *reply;
- NTSTATUS status;
-
- ZERO_STRUCT(req);
-
- req.hdr.length = offsetof(struct ctdb_req_call, data) + key.dsize;
- req.hdr.ctdb_magic = CTDB_MAGIC;
- req.hdr.ctdb_version = CTDB_VERSION;
- req.hdr.operation = CTDB_REQ_CALL;
- req.hdr.reqid = ++conn->reqid;
- req.flags = CTDB_IMMEDIATE_MIGRATION;
- req.callid = CTDB_NULL_FUNC;
- req.db_id = db_id;
- req.keylen = key.dsize;
-
- status = packet_send(
- conn->pkt, 2,
- data_blob_const(&req, offsetof(struct ctdb_req_call, data)),
- key);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("packet_send failed: %s\n", nt_errstr(status)));
- return status;
- }
-
- status = packet_flush(conn->pkt);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("write to ctdbd failed: %s\n", nt_errstr(status)));
- cluster_fatal("cluster dispatch daemon control write error\n");
- }
-
- status = ctdb_read_req(conn, req.hdr.reqid, NULL, (void *)&reply);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("ctdb_read_req failed: %s\n", nt_errstr(status)));
- goto fail;
- }
-
- if (reply->hdr.operation != CTDB_REPLY_CALL) {
- DEBUG(0, ("received invalid reply\n"));
- status = NT_STATUS_INTERNAL_ERROR;
- goto fail;
- }
-
- status = NT_STATUS_OK;
- fail:
-
- TALLOC_FREE(reply);
- return status;
-}
-
-/*
- * remotely fetch a record without locking it or forcing a migration
- */
-NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32 db_id,
- TDB_DATA key, TALLOC_CTX *mem_ctx, TDB_DATA *data)
-{
- struct ctdb_req_call req;
- struct ctdb_reply_call *reply;
- NTSTATUS status;
-
- ZERO_STRUCT(req);
-
- req.hdr.length = offsetof(struct ctdb_req_call, data) + key.dsize;
- req.hdr.ctdb_magic = CTDB_MAGIC;
- req.hdr.ctdb_version = CTDB_VERSION;
- req.hdr.operation = CTDB_REQ_CALL;
- req.hdr.reqid = ++conn->reqid;
- req.flags = 0;
- req.callid = CTDB_FETCH_FUNC;
- req.db_id = db_id;
- req.keylen = key.dsize;
-
- status = packet_send(
- conn->pkt, 2,
- data_blob_const(&req, offsetof(struct ctdb_req_call, data)),
- key);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("packet_send failed: %s\n", nt_errstr(status)));
- return status;
- }
-
- status = packet_flush(conn->pkt);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("write to ctdbd failed: %s\n", nt_errstr(status)));
- cluster_fatal("cluster dispatch daemon control write error\n");
- }
-
- status = ctdb_read_req(conn, req.hdr.reqid, NULL, (void *)&reply);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("ctdb_read_req failed: %s\n", nt_errstr(status)));
- goto fail;
- }
-
- if (reply->hdr.operation != CTDB_REPLY_CALL) {
- DEBUG(0, ("received invalid reply\n"));
- status = NT_STATUS_INTERNAL_ERROR;
- goto fail;
- }
-
- data->dsize = reply->datalen;
- if (data->dsize == 0) {
- data->dptr = NULL;
- goto done;
- }
-
- data->dptr = (uint8 *)talloc_memdup(mem_ctx, &reply->data[0],
- reply->datalen);
- if (data->dptr == NULL) {
- DEBUG(0, ("talloc failed\n"));
- status = NT_STATUS_NO_MEMORY;
- goto fail;
- }
-
- done:
- status = NT_STATUS_OK;
- fail:
- TALLOC_FREE(reply);
- return status;
-}
-
-struct ctdbd_traverse_state {
- void (*fn)(TDB_DATA key, TDB_DATA data, void *private_data);
- void *private_data;
-};
-
-/*
- * Handle a traverse record coming in on the ctdbd connection
- */
-
-static NTSTATUS ctdb_traverse_handler(const struct data_blob *blob,
- void *private_data)
-{
- struct ctdbd_traverse_state *state =
- (struct ctdbd_traverse_state *)private_data;
-
- struct ctdb_req_message *m;
- struct ctdb_rec_data *d;
- TDB_DATA key, data;
-
- m = (struct ctdb_req_message *)blob->data;
-
- if (blob->length < sizeof(*m) || m->hdr.length != blob->length) {
- DEBUG(0, ("Got invalid message of length %d\n",
- (int)blob->length));
- return NT_STATUS_UNEXPECTED_IO_ERROR;
- }
-
- d = (struct ctdb_rec_data *)&m->data[0];
- if (m->datalen < sizeof(uint32_t) || m->datalen != d->length) {
- DEBUG(0, ("Got invalid traverse data of length %d\n",
- (int)m->datalen));
- return NT_STATUS_UNEXPECTED_IO_ERROR;
- }
-
- key.dsize = d->keylen;
- key.dptr = &d->data[0];
- data.dsize = d->datalen;
- data.dptr = &d->data[d->keylen];
-
- if (key.dsize == 0 && data.dsize == 0) {
- /* end of traverse */
- return NT_STATUS_END_OF_FILE;
- }
-
- if (data.dsize < sizeof(struct ctdb_ltdb_header)) {
- DEBUG(0, ("Got invalid ltdb header length %d\n",
- (int)data.dsize));
- return NT_STATUS_UNEXPECTED_IO_ERROR;
- }
- data.dsize -= sizeof(struct ctdb_ltdb_header);
- data.dptr += sizeof(struct ctdb_ltdb_header);
-
- if (state->fn) {
- state->fn(key, data, state->private_data);
- }
-
- return NT_STATUS_OK;
-}
-
-/*
- Traverse a ctdb database. This uses a kind-of hackish way to open a second
- connection to ctdbd to avoid the hairy recursive and async problems with
- everything in-line.
-*/
-
-NTSTATUS ctdbd_traverse(uint32 db_id,
- void (*fn)(TDB_DATA key, TDB_DATA data,
- void *private_data),
- void *private_data)
-{
- struct ctdbd_connection *conn;
- NTSTATUS status;
-
- TDB_DATA data;
- struct ctdb_traverse_start t;
- int cstatus;
- struct ctdbd_traverse_state state;
-
- status = ctdbd_init_connection(NULL, &conn);
-
- t.db_id = db_id;
- t.srvid = conn->rand_srvid;
- t.reqid = ++conn->reqid;
-
- data.dptr = (uint8_t *)&t;
- data.dsize = sizeof(t);
-
- status = ctdbd_control(conn, CTDB_CURRENT_NODE,
- CTDB_CONTROL_TRAVERSE_START, conn->rand_srvid,
- data, NULL, NULL, &cstatus);
-
- if (!NT_STATUS_IS_OK(status) || (cstatus != 0)) {
-
- DEBUG(0,("ctdbd_control failed: %s, %d\n", nt_errstr(status),
- cstatus));
-
- if (NT_STATUS_IS_OK(status)) {
- /*
- * We need a mapping here
- */
- status = NT_STATUS_UNSUCCESSFUL;
- }
- goto done;
- }
-
- state.fn = fn;
- state.private_data = private_data;
-
- while (True) {
-
- status = NT_STATUS_OK;
-
- if (packet_handler(conn->pkt, ctdb_req_complete,
- ctdb_traverse_handler, &state, &status)) {
-
- if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) {
- status = NT_STATUS_OK;
- break;
- }
-
- /*
- * There might be more in the queue
- */
- continue;
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- break;
- }
-
- status = packet_fd_read_sync(conn->pkt);
-
- if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) {
- status = NT_STATUS_OK;
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- cluster_fatal("ctdbd died\n");
- }
- }
-
- done:
- TALLOC_FREE(conn);
- return status;
-}
-
-/*
- * Register us as a server for a particular tcp connection
- */
-
-NTSTATUS ctdbd_register_ips(struct ctdbd_connection *conn,
- const struct sockaddr_in *server,
- const struct sockaddr_in *client,
- void (*release_ip_handler)(const char *ip_addr,
- void *private_data),
- void *private_data)
-{
- struct ctdb_control_tcp p;
- TDB_DATA data;
- NTSTATUS status;
-
- /*
- * Only one connection so far
- */
- SMB_ASSERT(conn->release_ip_handler == NULL);
-
- /*
- * We want to be told about IP releases
- */
-
- status = register_with_ctdbd(conn, CTDB_SRVID_RELEASE_IP);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- p.dest = *server;
- p.src = *client;
-
- /*
- * inform ctdb of our tcp connection, so if IP takeover happens ctdb
- * can send an extra ack to trigger a reset for our client, so it
- * immediately reconnects
- */
- data.dptr = (uint8_t *)&p;
- data.dsize = sizeof(p);
-
- return ctdbd_control(conn, CTDB_CURRENT_NODE,
- CTDB_CONTROL_TCP_CLIENT,
- CTDB_CTRL_FLAG_NOREPLY, data, NULL, NULL, NULL);
-}
-
-/*
- * We want to handle reconfigure events
- */
-NTSTATUS ctdbd_register_reconfigure(struct ctdbd_connection *conn)
-{
- return register_with_ctdbd(conn, CTDB_SRVID_RECONFIGURE);
-}
-
-#else
-
-NTSTATUS ctdbd_init_connection(TALLOC_CTX *mem_ctx,
- struct ctdbd_connection **pconn)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-#endif
diff --git a/source/lib/data_blob.c b/source/lib/data_blob.c
index ebe97230e40..e07247bc49e 100644
--- a/source/lib/data_blob.c
+++ b/source/lib/data_blob.c
@@ -21,8 +21,6 @@
#include "includes.h"
-const DATA_BLOB data_blob_null = { NULL, 0, NULL };
-
/*******************************************************************
Free() a data blob.
*******************************************************************/
@@ -74,11 +72,11 @@ DATA_BLOB data_blob_talloc(TALLOC_CTX *mem_ctx, const void *p, size_t length)
if (p) {
ret.data = (uint8 *)TALLOC_MEMDUP(mem_ctx, p, length);
if (ret.data == NULL)
- smb_panic("data_blob_talloc: TALLOC_MEMDUP failed");
+ smb_panic("data_blob_talloc: TALLOC_MEMDUP failed.\n");
} else {
ret.data = (uint8 *)TALLOC(mem_ctx, length);
if (ret.data == NULL)
- smb_panic("data_blob_talloc: TALLOC failed");
+ smb_panic("data_blob_talloc: talloc failed.\n");
}
ret.length = length;
diff --git a/source/lib/dbwrap.c b/source/lib/dbwrap.c
deleted file mode 100644
index c06cd4bb164..00000000000
--- a/source/lib/dbwrap.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Database interface wrapper
- Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2006
-
- Major code contributions from Aleksey Fedoseev (fedoseev@ru.ibm.com)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-/*
- * Fall back using fetch_locked if no genuine fetch operation is provided
- */
-
-static int dbwrap_fallback_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
- TDB_DATA key, TDB_DATA *data)
-{
- struct db_record *rec;
-
- if (!(rec = db->fetch_locked(db, mem_ctx, key))) {
- return -1;
- }
-
- data->dsize = rec->value.dsize;
- data->dptr = talloc_move(mem_ctx, &rec->value.dptr);
- TALLOC_FREE(rec);
- return 0;
-}
-
-struct db_context *db_open(TALLOC_CTX *mem_ctx,
- const char *name,
- int hash_size, int tdb_flags,
- int open_flags, mode_t mode)
-{
- struct db_context *result = NULL;
-
-#ifdef CLUSTER_SUPPORT
-
- if (lp_clustering()) {
- const char *partname;
- /* ctdb only wants the file part of the name */
- partname = strrchr(name, '/');
- if (partname) {
- partname++;
- } else {
- partname = name;
- }
- /* allow ctdb for individual databases to be disabled */
- if (lp_parm_bool(-1, "ctdb", partname, True)) {
- result = db_open_ctdb(mem_ctx, partname, hash_size,
- tdb_flags, open_flags, mode);
- if (result == NULL) {
- DEBUG(0,("failed to attach to ctdb %s\n",
- partname));
- smb_panic("failed to attach to a ctdb "
- "database");
- }
- }
- }
-
-#endif
-
- if (result == NULL) {
- result = db_open_tdb(mem_ctx, name, hash_size,
- tdb_flags, open_flags, mode);
- }
-
- if ((result != NULL) && (result->fetch == NULL)) {
- result->fetch = dbwrap_fallback_fetch;
- }
-
- return result;
-}
diff --git a/source/lib/dbwrap_ctdb.c b/source/lib/dbwrap_ctdb.c
deleted file mode 100644
index 124485e539c..00000000000
--- a/source/lib/dbwrap_ctdb.c
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Database interface wrapper around ctdbd
- Copyright (C) Volker Lendecke 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#ifdef CLUSTER_SUPPORT
-
-#include "ctdb.h"
-#include "ctdb_private.h"
-
-struct db_ctdb_ctx {
- struct tdb_wrap *wtdb;
- uint32 db_id;
- struct ctdbd_connection *conn;
-};
-
-struct db_ctdb_rec {
- struct db_ctdb_ctx *ctdb_ctx;
- struct ctdb_ltdb_header header;
-};
-
-static struct ctdbd_connection *db_ctdbd_conn(struct db_ctdb_ctx *ctx);
-
-static NTSTATUS db_ctdb_store(struct db_record *rec, TDB_DATA data, int flag)
-{
- struct db_ctdb_rec *crec = talloc_get_type_abort(
- rec->private_data, struct db_ctdb_rec);
- TDB_DATA cdata;
- int ret;
-
- cdata.dsize = sizeof(crec->header) + data.dsize;
-
- if (!(cdata.dptr = SMB_MALLOC_ARRAY(uint8, cdata.dsize))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- memcpy(cdata.dptr, &crec->header, sizeof(crec->header));
- memcpy(cdata.dptr + sizeof(crec->header), data.dptr, data.dsize);
-
- ret = tdb_store(crec->ctdb_ctx->wtdb->tdb, rec->key, cdata, TDB_REPLACE);
-
- SAFE_FREE(cdata.dptr);
-
- return (ret == 0) ? NT_STATUS_OK : NT_STATUS_INTERNAL_DB_CORRUPTION;
-}
-
-static NTSTATUS db_ctdb_delete(struct db_record *rec)
-{
- struct db_ctdb_rec *crec = talloc_get_type_abort(
- rec->private_data, struct db_ctdb_rec);
- TDB_DATA data;
- int ret;
-
- /*
- * We have to store the header with empty data. TODO: Fix the
- * tdb-level cleanup
- */
-
- data.dptr = (uint8 *)&crec->header;
- data.dsize = sizeof(crec->header);
-
- ret = tdb_store(crec->ctdb_ctx->wtdb->tdb, rec->key, data, TDB_REPLACE);
-
- return (ret == 0) ? NT_STATUS_OK : NT_STATUS_INTERNAL_DB_CORRUPTION;
-}
-
-static int db_ctdb_record_destr(struct db_record* data)
-{
- struct db_ctdb_rec *crec = talloc_get_type_abort(
- data->private_data, struct db_ctdb_rec);
-
- DEBUG(10, ("Unlocking key %s\n",
- hex_encode(data, (unsigned char *)data->key.dptr,
- data->key.dsize)));
-
- if (tdb_chainunlock(crec->ctdb_ctx->wtdb->tdb, data->key) != 0) {
- DEBUG(0, ("tdb_chainunlock failed\n"));
- return -1;
- }
-
- return 0;
-}
-
-static struct db_record *db_ctdb_fetch_locked(struct db_context *db,
- TALLOC_CTX *mem_ctx,
- TDB_DATA key)
-{
- struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_ctdb_ctx);
- struct db_record *result;
- struct db_ctdb_rec *crec;
- NTSTATUS status;
- TDB_DATA ctdb_data;
-
- if (!(result = talloc(mem_ctx, struct db_record))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- if (!(crec = TALLOC_ZERO_P(result, struct db_ctdb_rec))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- result->private_data = (void *)crec;
- crec->ctdb_ctx = ctx;
-
- result->key.dsize = key.dsize;
- result->key.dptr = (uint8 *)talloc_memdup(result, key.dptr, key.dsize);
- if (result->key.dptr == NULL) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- /*
- * Do a blocking lock on the record
- */
-again:
-
- DEBUG(10, ("Locking key %s\n",
- hex_encode(result, (unsigned char *)key.dptr,
- key.dsize)));
-
- if (tdb_chainlock(ctx->wtdb->tdb, key) != 0) {
- DEBUG(3, ("tdb_chainlock failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- result->store = db_ctdb_store;
- result->delete_rec = db_ctdb_delete;
- talloc_set_destructor(result, db_ctdb_record_destr);
-
- ctdb_data = tdb_fetch(ctx->wtdb->tdb, key);
-
- /*
- * See if we have a valid record and we are the dmaster. If so, we can
- * take the shortcut and just return it.
- */
-
- if ((ctdb_data.dptr == NULL) ||
- (ctdb_data.dsize < sizeof(struct ctdb_ltdb_header)) ||
- ((struct ctdb_ltdb_header *)ctdb_data.dptr)->dmaster != get_my_vnn()
-#if 0
- || (random() % 2 != 0)
-#endif
-) {
- SAFE_FREE(ctdb_data.dptr);
- tdb_chainunlock(ctx->wtdb->tdb, key);
- talloc_set_destructor(result, NULL);
-
- DEBUG(10, ("ctdb_data.dptr = %p, dmaster = %u (%u)\n",
- ctdb_data.dptr, ctdb_data.dptr ?
- ((struct ctdb_ltdb_header *)ctdb_data.dptr)->dmaster : -1,
- get_my_vnn()));
-
- status = ctdbd_migrate(db_ctdbd_conn(ctx), ctx->db_id, key);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(5, ("ctdb_migrate failed: %s\n",
- nt_errstr(status)));
- TALLOC_FREE(result);
- return NULL;
- }
- /* now its migrated, try again */
- goto again;
- }
-
- memcpy(&crec->header, ctdb_data.dptr, sizeof(crec->header));
-
- result->value.dsize = ctdb_data.dsize - sizeof(crec->header);
- result->value.dptr = NULL;
-
- if ((result->value.dsize != 0)
- && !(result->value.dptr = (uint8 *)talloc_memdup(
- result, ctdb_data.dptr + sizeof(crec->header),
- result->value.dsize))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- }
-
- SAFE_FREE(ctdb_data.dptr);
-
- return result;
-}
-
-/*
- fetch (unlocked, no migration) operation on ctdb
- */
-static int db_ctdb_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
- TDB_DATA key, TDB_DATA *data)
-{
- struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_ctdb_ctx);
- NTSTATUS status;
- TDB_DATA ctdb_data;
-
- /* try a direct fetch */
- ctdb_data = tdb_fetch(ctx->wtdb->tdb, key);
-
- /*
- * See if we have a valid record and we are the dmaster. If so, we can
- * take the shortcut and just return it.
- */
- if ((ctdb_data.dptr != NULL) &&
- (ctdb_data.dsize >= sizeof(struct ctdb_ltdb_header)) &&
- ((struct ctdb_ltdb_header *)ctdb_data.dptr)->dmaster == get_my_vnn()) {
- /* we are the dmaster - avoid the ctdb protocol op */
-
- data->dsize = ctdb_data.dsize - sizeof(struct ctdb_ltdb_header);
- if (data->dsize == 0) {
- SAFE_FREE(ctdb_data.dptr);
- data->dptr = NULL;
- return 0;
- }
-
- data->dptr = (uint8 *)talloc_memdup(
- mem_ctx, ctdb_data.dptr+sizeof(struct ctdb_ltdb_header),
- data->dsize);
-
- SAFE_FREE(ctdb_data.dptr);
-
- if (data->dptr == NULL) {
- return -1;
- }
- return 0;
- }
-
- SAFE_FREE(ctdb_data.dptr);
-
- /* we weren't able to get it locally - ask ctdb to fetch it for us */
- status = ctdbd_fetch(db_ctdbd_conn(ctx), ctx->db_id, key, mem_ctx,
- data);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(5, ("ctdbd_fetch failed: %s\n", nt_errstr(status)));
- return -1;
- }
-
- return 0;
-}
-
-struct traverse_state {
- struct db_context *db;
- int (*fn)(struct db_record *rec, void *private_data);
- void *private_data;
-};
-
-static void traverse_callback(TDB_DATA key, TDB_DATA data, void *private_data)
-{
- struct traverse_state *state = (struct traverse_state *)private_data;
- struct db_record *rec;
- TALLOC_CTX *tmp_ctx = talloc_new(state->db);
- /* we have to give them a locked record to prevent races */
- rec = db_ctdb_fetch_locked(state->db, tmp_ctx, key);
- if (rec && rec->value.dsize > 0) {
- state->fn(rec, state->private_data);
- }
- talloc_free(tmp_ctx);
-}
-
-static int db_ctdb_traverse(struct db_context *db,
- int (*fn)(struct db_record *rec,
- void *private_data),
- void *private_data)
-{
- struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_ctdb_ctx);
- struct traverse_state state;
-
- state.db = db;
- state.fn = fn;
- state.private_data = private_data;
-
- ctdbd_traverse(ctx->db_id, traverse_callback, &state);
- return 0;
-}
-
-static NTSTATUS db_ctdb_store_deny(struct db_record *rec, TDB_DATA data, int flag)
-{
- return NT_STATUS_MEDIA_WRITE_PROTECTED;
-}
-
-static NTSTATUS db_ctdb_delete_deny(struct db_record *rec)
-{
- return NT_STATUS_MEDIA_WRITE_PROTECTED;
-}
-
-static void traverse_read_callback(TDB_DATA key, TDB_DATA data, void *private_data)
-{
- struct traverse_state *state = (struct traverse_state *)private_data;
- struct db_record rec;
- rec.key = key;
- rec.value = data;
- rec.store = db_ctdb_store_deny;
- rec.delete_rec = db_ctdb_delete_deny;
- rec.private_data = state->db;
- state->fn(&rec, state->private_data);
-}
-
-static int db_ctdb_traverse_read(struct db_context *db,
- int (*fn)(struct db_record *rec,
- void *private_data),
- void *private_data)
-{
- struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_ctdb_ctx);
- struct traverse_state state;
-
- state.db = db;
- state.fn = fn;
- state.private_data = private_data;
-
- ctdbd_traverse(ctx->db_id, traverse_read_callback, &state);
- return 0;
-}
-
-static int db_ctdb_get_seqnum(struct db_context *db)
-{
- struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_ctdb_ctx);
- return tdb_get_seqnum(ctx->wtdb->tdb);
-}
-
-/*
- * Get the ctdbd connection for a database. If possible, re-use the messaging
- * ctdbd connection
- */
-static struct ctdbd_connection *db_ctdbd_conn(struct db_ctdb_ctx *ctx)
-{
- struct ctdbd_connection *result;
-
- result = messaging_ctdbd_connection();
-
- if (result != NULL) {
-
- if (ctx->conn == NULL) {
- /*
- * Someone has initialized messaging since we
- * initialized our own connection, we don't need it
- * anymore.
- */
- TALLOC_FREE(ctx->conn);
- }
-
- return result;
- }
-
- if (ctx->conn == NULL) {
- ctdbd_init_connection(ctx, &ctx->conn);
- set_my_vnn(ctdbd_vnn(ctx->conn));
- }
-
- return ctx->conn;
-}
-
-struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
- const char *name,
- int hash_size, int tdb_flags,
- int open_flags, mode_t mode)
-{
- struct db_context *result;
- struct db_ctdb_ctx *db_ctdb;
- char *db_path;
- NTSTATUS status;
-
- if (!lp_clustering()) {
- DEBUG(10, ("Clustering disabled -- no ctdb\n"));
- return NULL;
- }
-
- if (!(result = TALLOC_ZERO_P(mem_ctx, struct db_context))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- if (!(db_ctdb = TALLOC_P(result, struct db_ctdb_ctx))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- db_ctdb->conn = NULL;
-
- status = ctdbd_db_attach(db_ctdbd_conn(db_ctdb), name,
- &db_ctdb->db_id, tdb_flags);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("ctdbd_db_attach failed for %s: %s\n", name,
- nt_errstr(status)));
- TALLOC_FREE(result);
- return NULL;
- }
-
- db_path = ctdbd_dbpath(db_ctdbd_conn(db_ctdb), db_ctdb,
- db_ctdb->db_id);
-
- /* only pass through specific flags */
- tdb_flags &= TDB_SEQNUM;
-
- db_ctdb->wtdb = tdb_wrap_open(db_ctdb, db_path, hash_size, tdb_flags, O_RDWR, 0);
- if (db_ctdb->wtdb == NULL) {
- DEBUG(0, ("Could not open tdb %s: %s\n", db_path, strerror(errno)));
- TALLOC_FREE(result);
- return NULL;
- }
- talloc_free(db_path);
-
- result->private_data = (void *)db_ctdb;
- result->fetch_locked = db_ctdb_fetch_locked;
- result->fetch = db_ctdb_fetch;
- result->traverse = db_ctdb_traverse;
- result->traverse_read = db_ctdb_traverse_read;
- result->get_seqnum = db_ctdb_get_seqnum;
-
- DEBUG(3,("db_open_ctdb: opened database '%s' with dbid 0x%x\n",
- name, db_ctdb->db_id));
-
- return result;
-}
-
-#else
-
-struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
- const char *name,
- int hash_size, int tdb_flags,
- int open_flags, mode_t mode)
-{
- DEBUG(0, ("no clustering compiled in\n"));
- return NULL;
-}
-
-#endif
diff --git a/source/lib/dbwrap_file.c b/source/lib/dbwrap_file.c
deleted file mode 100644
index 0ac7586e48b..00000000000
--- a/source/lib/dbwrap_file.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Database interface using a file per record
- Copyright (C) Volker Lendecke 2005
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- * Be aware that this is just sample code that has not seen too much testing
- */
-
-#include "includes.h"
-
-struct db_file_ctx {
- const char *dirname;
-
- /* We only support one locked record at a time -- everything else
- * would lead to a potential deadlock anyway! */
- struct db_record *locked_record;
-};
-
-struct db_locked_file {
- int fd;
- uint8 hash;
- const char *name;
- const char *path;
- struct db_file_ctx *parent;
-};
-
-/* Copy from statcache.c... */
-
-static uint32 fsh(const uint8 *p, int len)
-{
- uint32 n = 0;
- int i;
- for (i=0; i<len; i++) {
- n = ((n << 5) + n) ^ (uint32)(p[i]);
- }
- return n;
-}
-
-static int db_locked_file_destr(struct db_locked_file *data)
-{
- if (data->parent != NULL) {
- data->parent->locked_record = NULL;
- }
-
- if (close(data->fd) != 0) {
- DEBUG(3, ("close failed: %s\n", strerror(errno)));
- return -1;
- }
-
- return 0;
-}
-
-static NTSTATUS db_file_store(struct db_record *rec, TDB_DATA data, int flag);
-static NTSTATUS db_file_delete(struct db_record *rec);
-
-static struct db_record *db_file_fetch_locked(struct db_context *db,
- TALLOC_CTX *mem_ctx,
- TDB_DATA key)
-{
- struct db_file_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_file_ctx);
- struct db_record *result;
- struct db_locked_file *file;
- struct flock fl;
- SMB_STRUCT_STAT statbuf;
- ssize_t nread;
- int ret;
-
- SMB_ASSERT(ctx->locked_record == NULL);
-
- again:
- if (!(result = TALLOC_P(mem_ctx, struct db_record))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- if (!(file = TALLOC_P(result, struct db_locked_file))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- result->private_data = file;
- result->store = db_file_store;
- result->delete_rec = db_file_delete;
-
- result->key.dsize = key.dsize;
- result->key.dptr = (uint8 *)talloc_memdup(result, key.dptr, key.dsize);
- if (result->key.dptr == NULL) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- /* Cut to 8 bits */
- file->hash = fsh(key.dptr, key.dsize);
- file->name = hex_encode(file, (unsigned char *)key.dptr, key.dsize);
- if (file->name == NULL) {
- DEBUG(0, ("hex_encode failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- file->path = talloc_asprintf(file, "%s/%2.2X/%s", ctx->dirname,
- file->hash, file->name);
- if (file->path == NULL) {
- DEBUG(0, ("talloc_asprintf failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- become_root();
- file->fd = open(file->path, O_RDWR|O_CREAT, 0644);
- unbecome_root();
-
- if (file->fd < 0) {
- DEBUG(3, ("Could not open/create %s: %s\n",
- file->path, strerror(errno)));
- TALLOC_FREE(result);
- return NULL;
- }
-
- talloc_set_destructor(file, db_locked_file_destr);
-
- fl.l_type = F_WRLCK;
- fl.l_whence = SEEK_SET;
- fl.l_start = 0;
- fl.l_len = 1;
- fl.l_pid = 0;
-
- do {
- ret = fcntl(file->fd, F_SETLKW, &fl);
- } while ((ret == -1) && (errno == EINTR));
-
- if (ret == -1) {
- DEBUG(3, ("Could not get lock on %s: %s\n",
- file->path, strerror(errno)));
- TALLOC_FREE(result);
- return NULL;
- }
-
- if (sys_fstat(file->fd, &statbuf) != 0) {
- DEBUG(3, ("Could not fstat %s: %s\n",
- file->path, strerror(errno)));
- TALLOC_FREE(result);
- return NULL;
- }
-
- if (statbuf.st_nlink == 0) {
- /* Someone has deleted it under the lock, retry */
- TALLOC_FREE(result);
- goto again;
- }
-
- result->value.dsize = 0;
- result->value.dptr = NULL;
-
- if (statbuf.st_size != 0) {
- result->value.dsize = statbuf.st_size;
- result->value.dptr = TALLOC_ARRAY(result, uint8,
- statbuf.st_size);
- if (result->value.dptr == NULL) {
- DEBUG(1, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- nread = read_data(file->fd, (char *)result->value.dptr,
- result->value.dsize);
- if (nread != result->value.dsize) {
- DEBUG(3, ("read_data failed: %s\n", strerror(errno)));
- TALLOC_FREE(result);
- return NULL;
- }
- }
-
- ctx->locked_record = result;
- file->parent = (struct db_file_ctx *)talloc_reference(file, ctx);
-
- return result;
-}
-
-static NTSTATUS db_file_store_root(int fd, TDB_DATA data)
-{
- if (sys_lseek(fd, 0, SEEK_SET) != 0) {
- DEBUG(0, ("sys_lseek failed: %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- if (write_data(fd, (char *)data.dptr, data.dsize) != data.dsize) {
- DEBUG(3, ("write_data failed: %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- if (sys_ftruncate(fd, data.dsize) != 0) {
- DEBUG(3, ("sys_ftruncate failed: %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS db_file_store(struct db_record *rec, TDB_DATA data, int flag)
-{
- struct db_locked_file *file =
- talloc_get_type_abort(rec->private_data,
- struct db_locked_file);
- NTSTATUS status;
-
- become_root();
- status = db_file_store_root(file->fd, data);
- unbecome_root();
-
- return status;
-}
-
-static NTSTATUS db_file_delete(struct db_record *rec)
-{
- struct db_locked_file *file =
- talloc_get_type_abort(rec->private_data,
- struct db_locked_file);
- int res;
-
- become_root();
- res = unlink(file->path);
- unbecome_root();
-
- if (res == -1) {
- DEBUG(3, ("unlink(%s) failed: %s\n", file->path,
- strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- return NT_STATUS_OK;
-}
-
-static int db_file_traverse(struct db_context *db,
- int (*fn)(struct db_record *rec,
- void *private_data),
- void *private_data)
-{
- struct db_file_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_file_ctx);
- TALLOC_CTX *mem_ctx = talloc_init("traversal %s\n", ctx->dirname);
-
- int i;
- int count = 0;
-
- for (i=0; i<256; i++) {
- const char *dirname = talloc_asprintf(mem_ctx, "%s/%2.2X",
- ctx->dirname, i);
- DIR *dir;
- struct dirent *dirent;
-
- if (dirname == NULL) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(mem_ctx);
- return -1;
- }
-
- dir = opendir(dirname);
- if (dir == NULL) {
- DEBUG(3, ("Could not open dir %s: %s\n", dirname,
- strerror(errno)));
- TALLOC_FREE(mem_ctx);
- return -1;
- }
-
- while ((dirent = readdir(dir)) != NULL) {
- DATA_BLOB keyblob;
- TDB_DATA key;
- struct db_record *rec;
-
- if ((dirent->d_name[0] == '.') &&
- ((dirent->d_name[1] == '\0') ||
- ((dirent->d_name[1] == '.') &&
- (dirent->d_name[2] == '\0')))) {
- continue;
- }
-
- keyblob = strhex_to_data_blob(mem_ctx, dirent->d_name);
- if (keyblob.data == NULL) {
- DEBUG(5, ("strhex_to_data_blob failed\n"));
- continue;
- }
-
- key.dptr = keyblob.data;
- key.dsize = keyblob.length;
-
- if ((ctx->locked_record != NULL) &&
- (key.dsize == ctx->locked_record->key.dsize) &&
- (memcmp(key.dptr, ctx->locked_record->key.dptr,
- key.dsize) == 0)) {
- count += 1;
- if (fn(ctx->locked_record,
- private_data) != 0) {
- TALLOC_FREE(mem_ctx);
- closedir(dir);
- return count;
- }
- }
-
- rec = db_file_fetch_locked(db, mem_ctx, key);
- if (rec == NULL) {
- /* Someone might have deleted it */
- continue;
- }
-
- if (rec->value.dptr == NULL) {
- TALLOC_FREE(rec);
- continue;
- }
-
- count += 1;
-
- if (fn(rec, private_data) != 0) {
- TALLOC_FREE(mem_ctx);
- closedir(dir);
- return count;
- }
- TALLOC_FREE(rec);
- }
-
- closedir(dir);
- }
-
- TALLOC_FREE(mem_ctx);
- return count;
-}
-
-struct db_context *db_open_file(TALLOC_CTX *mem_ctx,
- struct messaging_context *msg_ctx,
- const char *name,
- int hash_size, int tdb_flags,
- int open_flags, mode_t mode)
-{
- struct db_context *result = NULL;
- struct db_file_ctx *ctx;
-
- if (!(result = TALLOC_ZERO_P(mem_ctx, struct db_context))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- if (!(ctx = TALLOC_P(result, struct db_file_ctx))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- result->private_data = ctx;
- result->fetch_locked = db_file_fetch_locked;
- result->traverse = db_file_traverse;
- result->traverse_read = db_file_traverse;
-
- ctx->locked_record = NULL;
- if (!(ctx->dirname = talloc_strdup(ctx, name))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- if (open_flags & O_CREAT) {
- int ret, i;
-
- mode |= (mode & S_IRUSR) ? S_IXUSR : 0;
- mode |= (mode & S_IRGRP) ? S_IXGRP : 0;
- mode |= (mode & S_IROTH) ? S_IXOTH : 0;
-
- ret = mkdir(name, mode);
- if ((ret != 0) && (errno != EEXIST)) {
- DEBUG(5, ("mkdir(%s,%o) failed: %s\n", name, mode,
- strerror(errno)));
- TALLOC_FREE(result);
- return NULL;
- }
-
- for (i=0; i<256; i++) {
- char *path;
- path = talloc_asprintf(result, "%s/%2.2X", name, i);
- if (path == NULL) {
- DEBUG(0, ("asprintf failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
- ret = mkdir(path, mode);
- if ((ret != 0) && (errno != EEXIST)) {
- DEBUG(5, ("mkdir(%s,%o) failed: %s\n", path,
- mode, strerror(errno)));
- TALLOC_FREE(result);
- return NULL;
- }
- TALLOC_FREE(path);
- }
- }
-
- return result;
-}
diff --git a/source/lib/dbwrap_tdb.c b/source/lib/dbwrap_tdb.c
deleted file mode 100644
index 8997f9f040c..00000000000
--- a/source/lib/dbwrap_tdb.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Database interface wrapper around tdb
- Copyright (C) Volker Lendecke 2005-2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-struct db_tdb_ctx {
- struct tdb_wrap *wtdb;
-};
-
-static NTSTATUS db_tdb_store(struct db_record *rec, TDB_DATA data, int flag);
-static NTSTATUS db_tdb_delete(struct db_record *rec);
-
-static int db_tdb_record_destr(struct db_record* data)
-{
- struct db_tdb_ctx *ctx =
- talloc_get_type_abort(data->private_data, struct db_tdb_ctx);
-
- DEBUG(10, ("Unlocking key %s\n",
- hex_encode(data, (unsigned char *)data->key.dptr,
- data->key.dsize)));
-
- if (tdb_chainunlock(ctx->wtdb->tdb, data->key) != 0) {
- DEBUG(0, ("tdb_chainunlock failed\n"));
- return -1;
- }
- return 0;
-}
-
-static struct db_record *db_tdb_fetch_locked(struct db_context *db,
- TALLOC_CTX *mem_ctx, TDB_DATA key)
-{
- struct db_tdb_ctx *ctx = talloc_get_type_abort(db->private_data,
- struct db_tdb_ctx);
- struct db_record *result;
- TDB_DATA value;
-
- result = TALLOC_P(mem_ctx, struct db_record);
- if (result == NULL) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- result->key.dsize = key.dsize;
- result->key.dptr = (uint8 *)talloc_memdup(result, key.dptr, key.dsize);
- if (result->key.dptr == NULL) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- result->value.dptr = NULL;
- result->value.dsize = 0;
- result->private_data = talloc_reference(result, ctx);
- result->store = db_tdb_store;
- result->delete_rec = db_tdb_delete;
-
- {
- char *keystr = hex_encode(NULL, (unsigned char *)key.dptr,
- key.dsize);
- DEBUG(10, ("Locking key %s\n", keystr));
- TALLOC_FREE(keystr);
- }
-
- if (tdb_chainlock(ctx->wtdb->tdb, key) != 0) {
- DEBUG(3, ("tdb_chainlock failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- talloc_set_destructor(result, db_tdb_record_destr);
-
- value = tdb_fetch(ctx->wtdb->tdb, key);
-
- if (value.dptr == NULL) {
- return result;
- }
-
- result->value.dsize = value.dsize;
- result->value.dptr = (uint8 *)talloc_memdup(result, value.dptr,
- value.dsize);
- if (result->value.dptr == NULL) {
- DEBUG(3, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- SAFE_FREE(value.dptr);
-
- DEBUG(10, ("Allocated locked data 0x%p\n", result));
-
- return result;
-}
-
-static NTSTATUS db_tdb_store(struct db_record *rec, TDB_DATA data, int flag)
-{
- struct db_tdb_ctx *ctx = talloc_get_type_abort(rec->private_data,
- struct db_tdb_ctx);
-
- /*
- * This has a bug: We need to replace rec->value for correct
- * operation, but right now brlock and locking don't use the value
- * anymore after it was stored.
- */
-
- return (tdb_store(ctx->wtdb->tdb, rec->key, data, flag) == 0) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-static NTSTATUS db_tdb_delete(struct db_record *rec)
-{
- struct db_tdb_ctx *ctx = talloc_get_type_abort(rec->private_data,
- struct db_tdb_ctx);
- int res;
-
- res = tdb_delete(ctx->wtdb->tdb, rec->key);
-
- if (res == 0) {
- return NT_STATUS_OK;
- }
-
- return map_nt_error_from_tdb(tdb_error(ctx->wtdb->tdb));
-}
-
-struct db_tdb_traverse_ctx {
- struct db_context *db;
- int (*f)(struct db_record *rec, void *private_data);
- void *private_data;
-};
-
-static int db_tdb_traverse_func(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
- void *private_data)
-{
- struct db_tdb_traverse_ctx *ctx =
- (struct db_tdb_traverse_ctx *)private_data;
- struct db_record rec;
-
- rec.key = kbuf;
- rec.value = dbuf;
- rec.store = db_tdb_store;
- rec.delete_rec = db_tdb_delete;
- rec.private_data = ctx->db->private_data;
-
- return ctx->f(&rec, ctx->private_data);
-}
-
-static int db_tdb_traverse(struct db_context *db,
- int (*f)(struct db_record *rec, void *private_data),
- void *private_data)
-{
- struct db_tdb_ctx *db_ctx =
- talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
- struct db_tdb_traverse_ctx ctx;
-
- ctx.db = db;
- ctx.f = f;
- ctx.private_data = private_data;
- return tdb_traverse(db_ctx->wtdb->tdb, db_tdb_traverse_func, &ctx);
-}
-
-static NTSTATUS db_tdb_store_deny(struct db_record *rec, TDB_DATA data, int flag)
-{
- return NT_STATUS_MEDIA_WRITE_PROTECTED;
-}
-
-static NTSTATUS db_tdb_delete_deny(struct db_record *rec)
-{
- return NT_STATUS_MEDIA_WRITE_PROTECTED;
-}
-
-static int db_tdb_traverse_read_func(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
- void *private_data)
-{
- struct db_tdb_traverse_ctx *ctx =
- (struct db_tdb_traverse_ctx *)private_data;
- struct db_record rec;
-
- rec.key = kbuf;
- rec.value = dbuf;
- rec.store = db_tdb_store_deny;
- rec.delete_rec = db_tdb_delete_deny;
- rec.private_data = ctx->db->private_data;
-
- return ctx->f(&rec, ctx->private_data);
-}
-
-static int db_tdb_traverse_read(struct db_context *db,
- int (*f)(struct db_record *rec, void *private_data),
- void *private_data)
-{
- struct db_tdb_ctx *db_ctx =
- talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
- struct db_tdb_traverse_ctx ctx;
-
- ctx.db = db;
- ctx.f = f;
- ctx.private_data = private_data;
- return tdb_traverse_read(db_ctx->wtdb->tdb, db_tdb_traverse_read_func, &ctx);
-}
-
-static int db_tdb_get_seqnum(struct db_context *db)
-
-{
- struct db_tdb_ctx *db_ctx =
- talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
- return tdb_get_seqnum(db_ctx->wtdb->tdb);
-}
-
-struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
- const char *name,
- int hash_size, int tdb_flags,
- int open_flags, mode_t mode)
-{
- struct db_context *result = NULL;
- struct db_tdb_ctx *db_tdb;
-
- result = TALLOC_ZERO_P(mem_ctx, struct db_context);
- if (result == NULL) {
- DEBUG(0, ("talloc failed\n"));
- goto fail;
- }
-
- result->private_data = db_tdb = TALLOC_P(result, struct db_tdb_ctx);
- if (db_tdb == NULL) {
- DEBUG(0, ("talloc failed\n"));
- goto fail;
- }
-
- db_tdb->wtdb = tdb_wrap_open(db_tdb, name, hash_size, tdb_flags,
- open_flags, mode);
- if (db_tdb->wtdb == NULL) {
- DEBUG(3, ("Could not open tdb: %s\n", strerror(errno)));
- goto fail;
- }
-
- result->fetch_locked = db_tdb_fetch_locked;
- result->traverse = db_tdb_traverse;
- result->traverse_read = db_tdb_traverse_read;
- result->get_seqnum = db_tdb_get_seqnum;
- return result;
-
- fail:
- if (result != NULL) {
- TALLOC_FREE(result);
- }
- return NULL;
-}
diff --git a/source/lib/debug.c b/source/lib/debug.c
index 4bbbf88d0d2..62fda5741c9 100644
--- a/source/lib/debug.c
+++ b/source/lib/debug.c
@@ -471,16 +471,13 @@ BOOL debug_parse_levels(const char *params_str)
Receive a "set debug level" message.
****************************************************************************/
-static void debug_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void debug_message(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
- const char *params_str = (const char *)data->data;
+ const char *params_str = (const char *)buf;
/* Check, it's a proper string! */
- if (params_str[(data->length)-1] != '\0') {
+ if (params_str[len-1] != '\0') {
DEBUG(1, ("Invalid debug message from pid %u to pid %u\n",
(unsigned int)procid_to_pid(&src),
(unsigned int)getpid()));
@@ -495,14 +492,24 @@ static void debug_message(struct messaging_context *msg_ctx,
}
/****************************************************************************
+ Send a "set debug level" message.
+****************************************************************************/
+
+void debug_message_send(pid_t pid, const char *params_str)
+{
+ if (!params_str)
+ return;
+ message_send_pid(pid_to_procid(pid), MSG_DEBUG,
+ params_str, strlen(params_str) + 1,
+ False);
+}
+
+/****************************************************************************
Return current debug level.
****************************************************************************/
-static void debuglevel_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void debuglevel_message(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
char *message = debug_list_class_names_and_levels();
@@ -511,10 +518,9 @@ static void debuglevel_message(struct messaging_context *msg_ctx,
return;
}
- DEBUG(1,("INFO: Received REQ_DEBUGLEVEL message from PID %s\n",
- procid_str_static(&src)));
- messaging_send_buf(msg_ctx, src, MSG_DEBUGLEVEL,
- (uint8 *)message, strlen(message) + 1);
+ DEBUG(1,("INFO: Received REQ_DEBUGLEVEL message from PID %u\n",
+ (unsigned int)procid_to_pid(&src)));
+ message_send_pid(src, MSG_DEBUGLEVEL, message, strlen(message) + 1, True);
SAFE_FREE(message);
}
@@ -533,18 +539,14 @@ void debug_init(void)
initialised = True;
+ message_register(MSG_DEBUG, debug_message, NULL);
+ message_register(MSG_REQ_DEBUGLEVEL, debuglevel_message, NULL);
+
for(p = default_classname_table; *p; p++) {
debug_add_class(*p);
}
}
-void debug_register_msgs(struct messaging_context *msg_ctx)
-{
- messaging_register(msg_ctx, NULL, MSG_DEBUG, debug_message);
- messaging_register(msg_ctx, NULL, MSG_REQ_DEBUGLEVEL,
- debuglevel_message);
-}
-
/***************************************************************************
Get ready for syslog stuff
**************************************************************************/
@@ -979,7 +981,7 @@ BOOL dbghdr( int level, const char *file, const char *func, int line )
/* Print it all out at once to prevent split syslog output. */
if( lp_debug_prefix_timestamp() ) {
- (void)Debug1( "[%s, %2d%s] ",
+ (void)Debug1( "[%s, %d%s] ",
current_timestring(lp_debug_hires_timestamp()), level,
header_str);
} else {
diff --git a/source/lib/dmallocmsg.c b/source/lib/dmallocmsg.c
index 7e52e93a103..fed7bf59c52 100644
--- a/source/lib/dmallocmsg.c
+++ b/source/lib/dmallocmsg.c
@@ -35,11 +35,10 @@ static unsigned long our_dm_mark = 0;
* Respond to a POOL_USAGE message by sending back string form of memory
* usage stats.
**/
-static void msg_req_dmalloc_mark(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_req_dmalloc_mark(int UNUSED(msg_type),
+ struct process_id UNUSED(src_pid),
+ void *UNUSED(buf), size_t UNUSED(len),
+ void *private_data)
{
#ifdef ENABLE_DMALLOC
our_dm_mark = dmalloc_mark();
@@ -51,11 +50,10 @@ static void msg_req_dmalloc_mark(struct messaging_context *msg,
-static void msg_req_dmalloc_log_changed(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_req_dmalloc_log_changed(int UNUSED(msg_type),
+ struct process_id UNUSED(src_pid),
+ void *UNUSED(buf), size_t UNUSED(len),
+ void *private_data)
{
#ifdef ENABLE_DMALLOC
dmalloc_log_changed(our_dm_mark, True, True, True);
@@ -69,11 +67,10 @@ static void msg_req_dmalloc_log_changed(struct messaging_context *msg,
/**
* Register handler for MSG_REQ_POOL_USAGE
**/
-void register_dmalloc_msgs(struct messaging_context *msg_ctx)
+void register_dmalloc_msgs(void)
{
- messaging_register(msg_ctx, NULL, MSG_REQ_DMALLOC_MARK,
- msg_req_dmalloc_mark);
- messaging_register(msg_ctx, NULL, MSG_REQ_DMALLOC_LOG_CHANGED,
- msg_req_dmalloc_log_changed);
+ message_register(MSG_REQ_DMALLOC_MARK, msg_req_dmalloc_mark, NULL);
+ message_register(MSG_REQ_DMALLOC_LOG_CHANGED,
+ msg_req_dmalloc_log_changed, NULL);
DEBUG(2, ("Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED\n"));
}
diff --git a/source/lib/dummysmbd.c b/source/lib/dummysmbd.c
index ed64d9b7834..a291a5884d9 100644
--- a/source/lib/dummysmbd.c
+++ b/source/lib/dummysmbd.c
@@ -48,23 +48,3 @@ NTSTATUS can_delete_directory(struct connection_struct *conn,
return NT_STATUS_OK;
}
-NTSTATUS srv_decrypt_buffer(char *buf)
-{
- return NT_STATUS_OK;
-}
-
-NTSTATUS srv_encrypt_buffer(char *buffer, char **buf_out)
-{
- *buf_out = buffer;
- return NT_STATUS_OK;
-}
-
-void srv_free_enc_buffer(char *buf)
-{
- ;
-}
-
-BOOL srv_encryption_on(void)
-{
- return False;
-}
diff --git a/source/lib/errmap_unix.c b/source/lib/errmap_unix.c
deleted file mode 100644
index 8ec0e5facac..00000000000
--- a/source/lib/errmap_unix.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * map unix to NT errors, an excerpt of libsmb/errormap.c
- * Copyright (C) Andrew Tridgell 2001
- * Copyright (C) Andrew Bartlett 2001
- * Copyright (C) Tim Potter 2000
- * Copyright (C) Jeremy Allison 2007
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
-/* Mapping from Unix, to NT error numbers */
-
-const struct unix_error_map unix_dos_nt_errmap[] = {
- { EPERM, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED },
- { EACCES, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED },
- { ENOENT, ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND },
- { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_NOT_A_DIRECTORY },
- { EIO, ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR },
- { EBADF, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE },
- { EINVAL, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE },
- { EEXIST, ERRDOS, ERRfilexists, NT_STATUS_OBJECT_NAME_COLLISION},
- { ENFILE, ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES },
- { EMFILE, ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES },
- { ENOSPC, ERRHRD, ERRdiskfull, NT_STATUS_DISK_FULL },
- { ENOMEM, ERRDOS, ERRnomem, NT_STATUS_NO_MEMORY },
- { EISDIR, ERRDOS, ERRnoaccess, NT_STATUS_FILE_IS_A_DIRECTORY},
- { EMLINK, ERRDOS, ERRgeneral, NT_STATUS_TOO_MANY_LINKS },
- { EINTR, ERRHRD, ERRgeneral, NT_STATUS_RETRY },
-#ifdef EDQUOT
- { EDQUOT, ERRHRD, ERRdiskfull, NT_STATUS_DISK_FULL }, /* Windows apps need this, not NT_STATUS_QUOTA_EXCEEDED */
-#endif
-#ifdef ENOTEMPTY
- { ENOTEMPTY, ERRDOS, ERRnoaccess, NT_STATUS_DIRECTORY_NOT_EMPTY },
-#endif
-#ifdef EXDEV
- { EXDEV, ERRDOS, ERRdiffdevice, NT_STATUS_NOT_SAME_DEVICE },
-#endif
-#ifdef EROFS
- { EROFS, ERRHRD, ERRnowrite, NT_STATUS_ACCESS_DENIED },
-#endif
-#ifdef ENAMETOOLONG
- { ENAMETOOLONG, ERRDOS, 206, NT_STATUS_OBJECT_NAME_INVALID },
-#endif
-#ifdef EFBIG
- { EFBIG, ERRHRD, ERRdiskfull, NT_STATUS_DISK_FULL },
-#endif
-#ifdef ENOBUFS
- { ENOBUFS, ERRDOS, ERRnomem, NT_STATUS_INSUFFICIENT_RESOURCES },
-#endif
- { EAGAIN, ERRDOS, 111, NT_STATUS_NETWORK_BUSY },
-#ifdef EADDRINUSE
- { EADDRINUSE, ERRDOS, 52, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED},
-#endif
-#ifdef ENETUNREACH
- { ENETUNREACH, ERRHRD, ERRgeneral, NT_STATUS_NETWORK_UNREACHABLE},
-#endif
-#ifdef EHOSTUNREACH
- { EHOSTUNREACH, ERRHRD, ERRgeneral, NT_STATUS_HOST_UNREACHABLE},
-#endif
-#ifdef ECONNREFUSED
- { ECONNREFUSED, ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_REFUSED},
-#endif
-#ifdef ETIMEDOUT
- { ETIMEDOUT, ERRHRD, 121, NT_STATUS_IO_TIMEOUT},
-#endif
-#ifdef ECONNABORTED
- { ECONNABORTED, ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ABORTED},
-#endif
-#ifdef ENODEV
- { ENODEV, ERRDOS, 55, NT_STATUS_DEVICE_DOES_NOT_EXIST},
-#endif
-#ifdef EPIPE
- { EPIPE, ERRDOS, 109, NT_STATUS_PIPE_BROKEN},
-#endif
-#ifdef EWOULDBLOCK
- { EWOULDBLOCK, ERRDOS, 111, NT_STATUS_NETWORK_BUSY },
-#endif
-
- { 0, 0, 0, NT_STATUS_OK }
-};
-
-/*********************************************************************
- Map an NT error code from a Unix error code.
-*********************************************************************/
-
-NTSTATUS map_nt_error_from_unix(int unix_error)
-{
- int i = 0;
-
- if (unix_error == 0)
- return NT_STATUS_OK;
-
- /* Look through list */
- while(unix_dos_nt_errmap[i].unix_error != 0) {
- if (unix_dos_nt_errmap[i].unix_error == unix_error)
- return unix_dos_nt_errmap[i].nt_error;
- i++;
- }
-
- /* Default return */
- return NT_STATUS_ACCESS_DENIED;
-}
diff --git a/source/lib/events.c b/source/lib/events.c
index 314fa2d5386..a00db77b6be 100644
--- a/source/lib/events.c
+++ b/source/lib/events.c
@@ -185,27 +185,20 @@ void event_fd_set_not_readable(struct fd_event *fde)
fde->flags &= ~EVENT_FD_READ;
}
-/*
- * Return if there's something in the queue
- */
-
-BOOL event_add_to_select_args(struct event_context *event_ctx,
+void event_add_to_select_args(struct event_context *event_ctx,
const struct timeval *now,
fd_set *read_fds, fd_set *write_fds,
struct timeval *timeout, int *maxfd)
{
struct fd_event *fde;
struct timeval diff;
- BOOL ret = False;
for (fde = event_ctx->fd_events; fde; fde = fde->next) {
if (fde->flags & EVENT_FD_READ) {
FD_SET(fde->fd, read_fds);
- ret = True;
}
if (fde->flags & EVENT_FD_WRITE) {
FD_SET(fde->fd, write_fds);
- ret = True;
}
if ((fde->flags & (EVENT_FD_READ|EVENT_FD_WRITE))
@@ -215,28 +208,11 @@ BOOL event_add_to_select_args(struct event_context *event_ctx,
}
if (event_ctx->timed_events == NULL) {
- return ret;
+ return;
}
diff = timeval_until(now, &event_ctx->timed_events->when);
*timeout = timeval_min(timeout, &diff);
-
- return True;
-}
-
-BOOL events_pending(struct event_context *event_ctx)
-{
- struct fd_event *fde;
-
- if (event_ctx->timed_events != NULL) {
- return True;
- }
- for (fde = event_ctx->fd_events; fde; fde = fde->next) {
- if (fde->flags & (EVENT_FD_READ|EVENT_FD_WRITE)) {
- return True;
- }
- }
- return False;
}
BOOL run_events(struct event_context *event_ctx,
@@ -321,40 +297,6 @@ struct timeval *get_timed_events_timeout(struct event_context *event_ctx,
return to_ret;
}
-int event_loop_once(struct event_context *ev)
-{
- struct timeval now, to;
- fd_set r_fds, w_fds;
- int maxfd = 0;
- int ret;
-
- FD_ZERO(&r_fds);
- FD_ZERO(&w_fds);
-
- to.tv_sec = 9999; /* Max timeout */
- to.tv_usec = 0;
-
- GetTimeOfDay(&now);
-
- if (!event_add_to_select_args(ev, &now, &r_fds, &w_fds, &to, &maxfd)) {
- return -1;
- }
-
- if (timeval_is_zero(&to)) {
- run_events(ev, 0, NULL, NULL);
- return 0;
- }
-
- ret = sys_select(maxfd, &r_fds, &w_fds, NULL, &to);
-
- if (ret == -1 && errno != EINTR) {
- return -1;
- }
-
- run_events(ev, ret, &r_fds, &w_fds);
- return 0;
-}
-
struct event_context *event_context_init(TALLOC_CTX *mem_ctx)
{
return TALLOC_ZERO_P(NULL, struct event_context);
@@ -391,36 +333,3 @@ int cancel_named_event(struct event_context *event_ctx,
}
return 0;
}
-
-void dump_event_list(struct event_context *event_ctx)
-{
- struct timed_event *te;
- struct fd_event *fe;
- struct timeval evt, now;
-
- if (!event_ctx) {
- return;
- }
-
- now = timeval_current();
-
- DEBUG(10,("dump_event_list:\n"));
-
- for (te = event_ctx->timed_events; te; te = te->next) {
-
- evt = timeval_until(&now, &te->when);
-
- DEBUGADD(10,("Timed Event \"%s\" %lx handled in %d seconds\n",
- te->event_name,
- (unsigned long)te,
- (int)evt.tv_sec));
- }
-
- for (fe = event_ctx->fd_events; fe; fe = fe->next) {
-
- DEBUGADD(10,("FD Event %d %lx, flags: 0x%04x\n",
- fe->fd,
- (unsigned long)fe,
- fe->flags));
- }
-}
diff --git a/source/lib/file_id.c b/source/lib/file_id.c
deleted file mode 100644
index 18d3397bedc..00000000000
--- a/source/lib/file_id.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- file_id structure handling
-
- Copyright (C) Andrew Tridgell 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-/*
- return a file_id which gives a unique ID for a file given the device and
- inode numbers
- */
-struct file_id file_id_create(SMB_DEV_T dev, SMB_INO_T inode)
-{
- struct file_id key;
- /* the ZERO_STRUCT ensures padding doesn't break using the key as a
- * blob */
- ZERO_STRUCT(key);
- key.devid = dev;
- key.inode = inode;
- return key;
-}
-
-/*
- generate a file_id from a stat structure
- */
-struct file_id file_id_sbuf(const SMB_STRUCT_STAT *sbuf)
-{
- return file_id_create(sbuf->st_dev, sbuf->st_ino);
-}
-
-
-/*
- return True if two file_id structures are equal
- */
-BOOL file_id_equal(const struct file_id *id1, const struct file_id *id2)
-{
- return id1->inode == id2->inode && id1->devid == id2->devid;
-}
-
-/*
- a static string for a file_id structure
- */
-const char *file_id_static_string(const struct file_id *id)
-{
- static char buf[32];
- snprintf(buf, sizeof(buf), "%llx:%llx",
- (unsigned long long)id->devid,
- (unsigned long long)id->inode);
- return buf;
-}
-
-/*
- a 2nd static string for a file_id structure so we can print 2 at once
- */
-const char *file_id_static_string2(const struct file_id *id)
-{
- static char buf[32];
- snprintf(buf, sizeof(buf), "%llx:%llx",
- (unsigned long long)id->devid,
- (unsigned long long)id->inode);
- return buf;
-}
-
-/*
- push a 16 byte version of a file id into a buffer
- */
-void push_file_id_16(char *buf, const struct file_id *id)
-{
- SIVAL(buf, 0, id->devid&0xFFFFFFFF);
- SIVAL(buf, 4, id->devid>>32);
- SIVAL(buf, 8, id->inode&0xFFFFFFFF);
- SIVAL(buf, 12, id->inode>>32);
-}
-
-/*
- pul a 16 byte version of a file id from a buffer
- */
-void pull_file_id_16(char *buf, struct file_id *id)
-{
- ZERO_STRUCTP(id);
- id->devid = IVAL(buf, 0);
- id->devid |= ((uint64_t)IVAL(buf,4))<<32;
- id->inode = IVAL(buf, 8);
- id->inode |= ((uint64_t)IVAL(buf,12))<<32;
-}
diff --git a/source/lib/gencache.c b/source/lib/gencache.c
index af60ee1ff47..c58642553c0 100644
--- a/source/lib/gencache.c
+++ b/source/lib/gencache.c
@@ -114,7 +114,7 @@ BOOL gencache_shutdown(void)
BOOL gencache_set(const char *keystr, const char *value, time_t timeout)
{
int ret;
- TDB_DATA databuf;
+ TDB_DATA keybuf, databuf;
char* valstr = NULL;
/* fail completely if get null pointers passed */
@@ -130,13 +130,16 @@ BOOL gencache_set(const char *keystr, const char *value, time_t timeout)
if (!valstr)
return False;
- databuf = string_term_tdb_data(valstr);
+ keybuf.dptr = CONST_DISCARD(char *, keystr);
+ keybuf.dsize = strlen(keystr)+1;
+ databuf.dptr = valstr;
+ databuf.dsize = strlen(valstr)+1;
DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
- " %s (%d seconds %s)\n", keystr, value,ctime(&timeout),
+ " %s (%d seconds %s)\n", keybuf.dptr, value,ctime(&timeout),
(int)(timeout - time(NULL)),
timeout > time(NULL) ? "ahead" : "in the past"));
- ret = tdb_store_bystring(cache, keystr, databuf, 0);
+ ret = tdb_store(cache, keybuf, databuf, 0);
SAFE_FREE(valstr);
return ret == 0;
@@ -154,6 +157,7 @@ BOOL gencache_set(const char *keystr, const char *value, time_t timeout)
BOOL gencache_del(const char *keystr)
{
int ret;
+ TDB_DATA keybuf;
/* fail completely if get null pointers passed */
SMB_ASSERT(keystr);
@@ -164,8 +168,10 @@ BOOL gencache_del(const char *keystr)
return False;
}
+ keybuf.dptr = CONST_DISCARD(char *, keystr);
+ keybuf.dsize = strlen(keystr)+1;
DEBUG(10, ("Deleting cache entry (key = %s)\n", keystr));
- ret = tdb_delete_bystring(cache, keystr);
+ ret = tdb_delete(cache, keybuf);
return ret == 0;
}
@@ -186,7 +192,7 @@ BOOL gencache_del(const char *keystr)
BOOL gencache_get(const char *keystr, char **valstr, time_t *timeout)
{
- TDB_DATA databuf;
+ TDB_DATA keybuf, databuf;
time_t t;
char *endptr;
@@ -196,8 +202,10 @@ BOOL gencache_get(const char *keystr, char **valstr, time_t *timeout)
if (!gencache_init()) {
return False;
}
-
- databuf = tdb_fetch_bystring(cache, keystr);
+
+ keybuf.dptr = CONST_DISCARD(char *, keystr);
+ keybuf.dsize = strlen(keystr)+1;
+ databuf = tdb_fetch(cache, keybuf);
if (databuf.dptr == NULL) {
DEBUG(10, ("Cache entry with key = %s couldn't be found\n",
@@ -205,7 +213,7 @@ BOOL gencache_get(const char *keystr, char **valstr, time_t *timeout)
return False;
}
- t = strtol((const char *)databuf.dptr, &endptr, 10);
+ t = strtol(databuf.dptr, &endptr, 10);
if ((endptr == NULL) || (*endptr != '/')) {
DEBUG(2, ("Invalid gencache data format: %s\n", databuf.dptr));
@@ -220,7 +228,7 @@ BOOL gencache_get(const char *keystr, char **valstr, time_t *timeout)
if (t <= time(NULL)) {
/* We're expired, delete the entry */
- tdb_delete_bystring(cache, keystr);
+ tdb_delete(cache, keybuf);
SAFE_FREE(databuf.dptr);
return False;
@@ -279,7 +287,7 @@ void gencache_iterate(void (*fn)(const char* key, const char *value, time_t time
char *fmt;
/* ensure null termination of the key string */
- keystr = SMB_STRNDUP((const char *)node->node_key.dptr, node->node_key.dsize);
+ keystr = SMB_STRNDUP(node->node_key.dptr, node->node_key.dsize);
if (!keystr) {
break;
}
@@ -295,7 +303,7 @@ void gencache_iterate(void (*fn)(const char* key, const char *value, time_t time
node = node->next;
continue;
}
- entry = SMB_STRNDUP((const char *)databuf.dptr, databuf.dsize);
+ entry = SMB_STRNDUP(databuf.dptr, databuf.dsize);
if (!entry) {
SAFE_FREE(databuf.dptr);
SAFE_FREE(keystr);
diff --git a/source/lib/launchd.c b/source/lib/launchd.c
deleted file mode 100644
index 2c3f7cac89f..00000000000
--- a/source/lib/launchd.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Launchd integration wrapper API
-
- Copyright (C) 2007 James Peach
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "smb_launchd.h"
-
-/* launchd source code and documentation is available here:
- * http://launchd.macosforge.org/
- */
-
-#if defined(WITH_LAUNCHD_SUPPORT)
-
-#include <launch.h>
-#include <stdarg.h>
-
-typedef void (*launchd_iterator)(launch_data_t, const char*, void*);
-
-#define LAUNCHD_TRACE_LEVEL 10
-
- void smb_launchd_checkout(struct smb_launch_info *linfo)
-{
- talloc_free(linfo->socket_list);
-}
-
-static void pull_launch_sockets(launch_data_t key,
- const char *name,
- struct smb_launch_info *linfo)
-{
- launch_data_type_t type;
-
- type = launch_data_get_type(key);
- DEBUG(LAUNCHD_TRACE_LEVEL,
- ("Searching item name='%s' type=%d for sockets\n",
- name ? name : "", (int)type));
-
- switch (type) {
- case LAUNCH_DATA_FD:
- if (!linfo->socket_list) {
- /* We are counting the number of sockets. */
- linfo->num_sockets++;
- } else {
- /* We are collecting the socket fds. */
- int fd = launch_data_get_fd(key);
-
- linfo->socket_list[linfo->num_sockets] = fd;
- linfo->num_sockets++;
- DEBUG(LAUNCHD_TRACE_LEVEL,
- ("Added fd=%d to launchd set\n", fd));
- }
- return;
- case LAUNCH_DATA_ARRAY:
- {
- int i;
- launch_data_t item;
-
- for (i = 0; i < launch_data_array_get_count(key); ++i) {
- item = launch_data_array_get_index(key, i);
- pull_launch_sockets(item, name, linfo);
- }
- return;
- }
- case LAUNCH_DATA_DICTIONARY:
- launch_data_dict_iterate(key,
- (launchd_iterator)pull_launch_sockets, linfo);
- return;
- default:
- return;
- }
-}
-
- BOOL smb_launchd_checkin_names(struct smb_launch_info *linfo, ...)
-{
- launch_data_t msg;
- launch_data_t resp;
- launch_data_t item;
- BOOL is_launchd = False;
-
- ZERO_STRUCTP(linfo);
-
- msg = launch_data_new_string(LAUNCH_KEY_CHECKIN);
- resp = launch_msg(msg);
- if (resp == NULL) {
- /* IPC to launchd failed. */
- launch_data_free(msg);
- return is_launchd;
- }
-
- if (launch_data_get_type(resp) == LAUNCH_DATA_ERRNO) {
- errno = launch_data_get_errno(resp);
- goto done;
- }
-
- /* At this point, we know we are running under launchd. */
- linfo->idle_timeout_secs = 600;
- is_launchd = True;
-
- if ((item = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_TIMEOUT))) {
- linfo->idle_timeout_secs = launch_data_get_integer(item);
- }
-
- if ((item = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_SOCKETS))) {
- int count = 0;
- const char * sockname = NULL;
- launch_data_t sockdata;
- va_list args;
-
- /* Figure out the maximum number of sockets. */
- va_start(args, linfo);
- while ((sockname = va_arg(args, const char *))) {
- ++count;
- }
- va_end(args);
-
- DEBUG(LAUNCHD_TRACE_LEVEL, ("Found %d launchd sockets\n",
- linfo->num_sockets));
-
- if (launch_data_dict_get_count(item) < count) {
- DEBUG(0, ("%d launchd sockets requested, "
- "but only %d are available\n",
- count, launch_data_dict_get_count(item)));
- }
-
- linfo->socket_list = TALLOC_ARRAY(NULL, int, count);
- if (linfo->socket_list == NULL) {
- goto done;
- }
-
- linfo->num_sockets = 0;
- va_start(args, linfo);
- while ((sockname = va_arg(args, const char *))) {
- sockdata = launch_data_dict_lookup(item, sockname);
-
- pull_launch_sockets(sockdata, sockname, linfo);
- DEBUG(LAUNCHD_TRACE_LEVEL,
- ("Added launchd socket \"%s\"\n", sockname));
- }
-
- SMB_ASSERT(count >= linfo->num_sockets);
- }
-
-done:
- launch_data_free(msg);
- launch_data_free(resp);
- return is_launchd;
-}
-
- BOOL smb_launchd_checkin(struct smb_launch_info *linfo)
-{
- launch_data_t msg;
- launch_data_t resp;
- launch_data_t item;
- BOOL is_launchd = False;
-
- ZERO_STRUCTP(linfo);
-
- msg = launch_data_new_string(LAUNCH_KEY_CHECKIN);
- resp = launch_msg(msg);
- if (resp == NULL) {
- /* IPC to launchd failed. */
- launch_data_free(msg);
- return is_launchd;
- }
-
- if (launch_data_get_type(resp) == LAUNCH_DATA_ERRNO) {
- errno = launch_data_get_errno(resp);
- goto done;
- }
-
- /* At this point, we know we are running under launchd. */
- linfo->idle_timeout_secs = 600;
- is_launchd = True;
-
- if ((item = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_TIMEOUT))) {
- linfo->idle_timeout_secs = launch_data_get_integer(item);
- }
-
- if ((item = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_SOCKETS))) {
- int count;
-
- pull_launch_sockets(item, NULL, linfo);
- DEBUG(LAUNCHD_TRACE_LEVEL, ("Found %d launchd sockets\n",
- linfo->num_sockets));
-
- count = linfo->num_sockets;
- linfo->socket_list = TALLOC_ARRAY(NULL, int, count);
- if (linfo->socket_list == NULL) {
- goto done;
- }
-
- linfo->num_sockets = 0;
- pull_launch_sockets(item, NULL, linfo);
-
- DEBUG(LAUNCHD_TRACE_LEVEL, ("Added %d launchd sockets\n",
- linfo->num_sockets));
-
- SMB_ASSERT(count == linfo->num_sockets);
- }
-
-done:
- launch_data_free(msg);
- launch_data_free(resp);
- return is_launchd;
-}
-
-#else /* defined(WITH_LAUNCHD_SUPPORT) */
-
- BOOL smb_launchd_checkin(struct smb_launch_info * UNUSED(linfo))
-{
- ZERO_STRUCTP(linfo);
- return False;
-}
-
- BOOL smb_launchd_checkin_names(struct smb_launch_info * UNUSED(linfo), ...)
-{
- ZERO_STRUCTP(linfo);
- return False;
-}
-
- void smb_launchd_checkout(struct smb_launch_info * UNUSED(linfo))
-{
-}
-
-#endif /* defined(WITH_LAUNCHD_SUPPORT) */
-
diff --git a/source/lib/ldb/Doxyfile b/source/lib/ldb/Doxyfile
deleted file mode 100644
index 07b12b516a8..00000000000
--- a/source/lib/ldb/Doxyfile
+++ /dev/null
@@ -1,26 +0,0 @@
-PROJECT_NAME = LDB
-OUTPUT_DIRECTORY = apidocs
-REPEAT_BRIEF = YES
-OPTIMIZE_OUTPUT_FOR_C = YES
-SORT_MEMBER_DOCS = YES
-SORT_BRIEF_DOCS = NO
-GENERATE_TODOLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-SHOW_USED_FILES = NO
-SHOW_DIRECTORIES = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_NO_PARAMDOC = NO
-WARN_FORMAT = "$file:$line: $text"
-INPUT = include .
-FILE_PATTERNS = *.h *.dox
-EXCLUDE = include/config.h include/dlinklist.h \
- include/includes.h
-EXAMPLE_PATH = examples
-GENERATE_HTML = YES
-HTML_OUTPUT = html
-GENERATE_MAN = YES
-ALWAYS_DETAILED_SEC = YES
-JAVADOC_AUTOBRIEF = YES
diff --git a/source/lib/ldb/Makefile.in b/source/lib/ldb/Makefile.in
deleted file mode 100644
index a091b4832eb..00000000000
--- a/source/lib/ldb/Makefile.in
+++ /dev/null
@@ -1,173 +0,0 @@
-#!gmake
-#
-CC = @CC@
-GCOV = @GCOV@
-XSLTPROC = @XSLTPROC@
-DOXYGEN = @DOXYGEN@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-includedir = @includedir@
-libdir = @libdir@
-bindir = @bindir@
-mandir = @mandir@
-VPATH = @srcdir@:@tdbdir@:@tallocdir@:@libreplacedir@:@poptdir@
-srcdir = @srcdir@
-builddir = @builddir@
-SLAPD = @SLAPD@
-EXTRA_OBJ=@EXTRA_OBJ@
-TESTS=test-tdb.sh @TESTS@
-
-CFLAGS=-g -I$(srcdir)/include -Iinclude -I$(srcdir) -I$(srcdir)/.. \
- @POPT_CFLAGS@ -I@tallocdir@ -I@tdbdir@/include -I@libreplacedir@ \
- -DLIBDIR=\"$(libdir)\" -DSHLIBEXT=\"@SHLIBEXT@\" -DUSE_MMAP=1 @CFLAGS@
-
-LIB_FLAGS=@LDFLAGS@ -Llib -lldb @LIBS@ @POPT_LIBS@
-
-LDB_TDB_DIR=ldb_tdb
-LDB_TDB_OBJ=$(LDB_TDB_DIR)/ldb_tdb.o \
- $(LDB_TDB_DIR)/ldb_pack.o $(LDB_TDB_DIR)/ldb_search.o $(LDB_TDB_DIR)/ldb_index.o \
- $(LDB_TDB_DIR)/ldb_cache.o $(LDB_TDB_DIR)/ldb_tdb_wrap.o
-
-COMDIR=common
-COMMON_OBJ=$(COMDIR)/ldb.o $(COMDIR)/ldb_ldif.o \
- $(COMDIR)/ldb_parse.o $(COMDIR)/ldb_msg.o $(COMDIR)/ldb_utf8.o \
- $(COMDIR)/ldb_debug.o $(COMDIR)/ldb_modules.o \
- $(COMDIR)/ldb_dn.o $(COMDIR)/ldb_match.o $(COMDIR)/ldb_attributes.o \
- $(COMDIR)/attrib_handlers.o $(COMDIR)/ldb_controls.o $(COMDIR)/qsort.o
-
-MODDIR=modules
-MODULES_OBJ=$(MODDIR)/operational.o $(MODDIR)/rdn_name.o \
- $(MODDIR)/objectclass.o \
- $(MODDIR)/paged_results.o $(MODDIR)/sort.o $(MODDIR)/asq.o
-
-NSSDIR=nssldb
-NSS_OBJ= $(NSSDIR)/ldb-nss.o $(NSSDIR)/ldb-pwd.o $(NSSDIR)/ldb-grp.o
-NSS_LIB = lib/libnss_ldb.so.2
-
-OBJS = $(MODULES_OBJ) $(COMMON_OBJ) $(LDB_TDB_OBJ) @TDBOBJ@ @TALLOCOBJ@ @POPTOBJ@ @LIBREPLACEOBJ@ $(EXTRA_OBJ)
-
-LDB_LIB = lib/libldb.a
-
-BINS = bin/ldbadd bin/ldbsearch bin/ldbdel bin/ldbmodify bin/ldbedit bin/ldbrename bin/ldbtest bin/oLschema2ldif
-
-LIBS = $(LDB_LIB)
-
-EXAMPLES = examples/ldbreader examples/ldifreader
-
-DIRS = lib bin common ldb_tdb ldb_ldap ldb_sqlite3 modules tools examples
-
-default: all
-
-nss: nssdir all $(NSS_LIB)
-
-nssdir:
- @mkdir -p $(NSSDIR)
-
-all: showflags dirs $(OBJS) $(LDB_LIB) $(BINS) $(EXAMPLES) manpages
-
-showflags:
- @echo 'ldb will be compiled with flags:'
- @echo ' CFLAGS = $(CFLAGS)'
- @echo ' LIBS = $(LIBS)'
-
-.c.o:
- @echo Compiling $*.c
- @mkdir -p `dirname $@`
- @$(CC) $(CFLAGS) -c $< -o $@
-
-dirs:
- @mkdir -p $(DIRS)
-
-lib/libldb.a: $(OBJS)
- ar -rv $@ $(OBJS)
- @-ranlib $@
-
-lib/libnss_ldb.so.2: $(NSS_OBJ) $(LIBS)
- $(CC) -shared -Wl,-soname,libnss_ldb.so.2 -o lib/libnss_ldb.so.2 $(NSS_OBJ) $(OBJS) $(LIB_FLAGS)
-
-bin/ldbadd: tools/ldbadd.o tools/cmdline.o $(LIBS)
- $(CC) -o bin/ldbadd tools/ldbadd.o tools/cmdline.o $(LIB_FLAGS)
-
-bin/ldbsearch: tools/ldbsearch.o tools/cmdline.o $(LIBS)
- $(CC) -o bin/ldbsearch tools/ldbsearch.o tools/cmdline.o $(LIB_FLAGS)
-
-bin/ldbdel: tools/ldbdel.o tools/cmdline.o $(LIBS)
- $(CC) -o bin/ldbdel tools/ldbdel.o tools/cmdline.o $(LIB_FLAGS)
-
-bin/ldbmodify: tools/ldbmodify.o tools/cmdline.o $(LIBS)
- $(CC) -o bin/ldbmodify tools/ldbmodify.o tools/cmdline.o $(LIB_FLAGS)
-
-bin/ldbedit: tools/ldbedit.o tools/cmdline.o $(LIBS)
- $(CC) -o bin/ldbedit tools/ldbedit.o tools/cmdline.o $(LIB_FLAGS)
-
-bin/ldbrename: tools/ldbrename.o tools/cmdline.o $(LIBS)
- $(CC) -o bin/ldbrename tools/ldbrename.o tools/cmdline.o $(LIB_FLAGS)
-
-bin/ldbtest: tools/ldbtest.o tools/cmdline.o $(LIBS)
- $(CC) -o bin/ldbtest tools/ldbtest.o tools/cmdline.o $(LIB_FLAGS)
-
-bin/oLschema2ldif: tools/oLschema2ldif.o tools/cmdline.o tools/convert.o $(LIBS)
- $(CC) -o bin/oLschema2ldif tools/oLschema2ldif.o tools/cmdline.o tools/convert.o $(LIB_FLAGS)
-
-examples/ldbreader: examples/ldbreader.o $(LIBS)
- $(CC) -o examples/ldbreader examples/ldbreader.o $(LIB_FLAGS)
-
-examples/ldifreader: examples/ldifreader.o $(LIBS)
- $(CC) -o examples/ldifreader examples/ldifreader.o $(LIB_FLAGS)
-
-.SUFFIXES: .1 .1.xml .3 .3.xml .xml .html
-
-manpages:
- @$(srcdir)/docs/builddocs.sh "$(XSLTPROC)" "$(srcdir)"
-
-doxygen:
- test -z "$(DOXYGEN)" || (cd $(srcdir) && "$(DOXYGEN)")
-
-clean:
- rm -f *.o */*.o *.gcov */*.gc?? tdbtest.ldb*
- rm -f $(BINS) $(TDB_OBJ) $(TALLOC_OBJ) $(LDB_LIB) $(NSS_LIB)
- rm -f man/*.1 man/*.3 man/*.html
- rm -f $(EXAMPLES)
- rm -rf apidocs/
- rm -rf tests/schema/
-
-distclean: clean
- rm -f *~ */*~
- rm -rf bin lib
- rm -f config.log config.status config.cache include/config.h
- rm -f ldb.pc
- rm -f Makefile
-
-realdistclean: distclean
- rm -f configure.in include/config.h.in
-
-test: all
- for t in $(TESTS); do echo STARTING $${t}; $(srcdir)/tests/$${t} || exit 1; done
-
-valgrindtest: all
- for t in $(TESTS); do echo STARTING $${t}; VALGRIND="valgrind -q --db-attach=yes --num-callers=30" $(srcdir)/tests/$${t} || exit 1; done
-
-installcheck: install test
-
-install: all
- mkdir -p $(includedir) $(libdir)/pkgconfig $(libdir) $(bindir)
- cp $(srcdir)/include/ldb.h $(srcdir)/include/ldb_errors.h $(includedir)
- cp $(LDB_LIB) $(libdir)
- cp $(BINS) $(bindir)
- cp ldb.pc $(libdir)/pkgconfig
- $(srcdir)/docs/installdocs.sh $(mandir)
-
-gcov:
- $(GCOV) -po ldb_sqlite3 $(srcdir)/ldb_sqlite3/*.c 2| tee ldb_sqlite3.report.gcov
- $(GCOV) -po ldb_ldap $(srcdir)/ldb_ldap/*.c 2| tee ldb_ldap.report.gcov
- $(GCOV) -po ldb_tdb $(srcdir)/ldb_tdb/*.c 2| tee ldb_tdb.report.gcov
- $(GCOV) -po common $(srcdir)/common/*.c 2| tee common.report.gcov
- $(GCOV) -po modules $(srcdir)/modules/*.c 2| tee modules.report.gcov
- $(GCOV) -po tools $(srcdir)/tools/*.c 2| tee tools.report.gcov
-
-etags:
- etags `find $(srcdir) -name "*.[ch]"`
-
-ctags:
- ctags `find $(srcdir) -name "*.[ch]"`
diff --git a/source/lib/ldb/README_gcov.txt b/source/lib/ldb/README_gcov.txt
deleted file mode 100644
index 2abd9378f43..00000000000
--- a/source/lib/ldb/README_gcov.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Here is how to use gcov to test code coverage in ldb.
-
-Step 1: build ldb with gcov enabled
-
- make clean all WITH_GCOV=1
-
-Step 3: run the test suite
- make test-tdb
-
-Step 4: produce the gcov report
- make gcov
-
-Step 5: read the summary reports
- less *.report.gcov
-
-Step 6: examine the per-file reports
- less ldb_tdb\#ldb_tdb.c.gcov
-
-You can also combine steps 2 to 4 like this:
-
- make clean all test-tdb gcov WITH_GCOV=1
-
-Note that you should not expect 100% coverage, as some error paths
-(such as memory allocation failures) are very hard to trigger. There
-are ways of working around this, but they are quite tricky (they
-involve allocation wrappers that "fork and fail on malloc").
-
-The lines to look for in the per-file reports are the ones starting
-with "#####". Those are lines that are never executed.
diff --git a/source/lib/ldb/autogen.sh b/source/lib/ldb/autogen.sh
deleted file mode 100755
index 500cab87d50..00000000000
--- a/source/lib/ldb/autogen.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-rm -rf autom4te.cache
-rm -f configure config.h.in
-
-IPATHS="-I libreplace -I lib/replace -I ../libreplace -I ../replace"
-IPATHS="$IPATHS -I lib/talloc -I talloc -I ../talloc"
-IPATHS="$IPATHS -I lib/tdb -I tdb -I ../tdb"
-IPATHS="$IPATHS -I lib/popt -I popt -I ../popt"
-autoheader $IPATHS || exit 1
-autoconf $IPATHS || exit 1
-
-rm -rf autom4te.cache
-
-echo "Now run ./configure and then make."
-exit 0
-
diff --git a/source/lib/ldb/common/attrib_handlers.c b/source/lib/ldb/common/attrib_handlers.c
deleted file mode 100644
index 2b699aeaa81..00000000000
--- a/source/lib/ldb/common/attrib_handlers.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-/*
- attribute handlers for well known attribute types, selected by syntax OID
- see rfc2252
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "system/locale.h"
-
-/*
- default handler that just copies a ldb_val.
-*/
-int ldb_handler_copy(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- *out = ldb_val_dup(mem_ctx, in);
- if (in->length > 0 && out->data == NULL) {
- ldb_oom(ldb);
- return -1;
- }
- return 0;
-}
-
-/*
- a case folding copy handler, removing leading and trailing spaces and
- multiple internal spaces
-
- We exploit the fact that utf8 never uses the space octet except for
- the space itself
-*/
-static int ldb_handler_fold(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- char *s, *t;
- int l;
- if (!in || !out || !(in->data)) {
- return -1;
- }
-
- out->data = (uint8_t *)ldb_casefold(ldb, mem_ctx, (const char *)(in->data));
- if (out->data == NULL) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "ldb_handler_fold: unable to casefold string [%s]", in->data);
- return -1;
- }
-
- s = (char *)(out->data);
-
- /* remove trailing spaces if any */
- l = strlen(s);
- while (l > 0 && s[l - 1] == ' ') l--;
- s[l] = '\0';
-
- /* remove leading spaces if any */
- if (*s == ' ') {
- for (t = s; *s == ' '; s++) ;
-
- /* remove leading spaces by moving down the string */
- memmove(t, s, l);
-
- s = t;
- }
-
- /* check middle spaces */
- while ((t = strchr(s, ' ')) != NULL) {
- for (s = t; *s == ' '; s++) ;
-
- if ((s - t) > 1) {
- l = strlen(s);
-
- /* remove all spaces but one by moving down the string */
- memmove(t + 1, s, l);
- }
- }
-
- out->length = strlen((char *)out->data);
- return 0;
-}
-
-
-
-/*
- canonicalise a ldap Integer
- rfc2252 specifies it should be in decimal form
-*/
-static int ldb_canonicalise_Integer(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- char *end;
- long long i = strtoll((char *)in->data, &end, 0);
- if (*end != 0) {
- return -1;
- }
- out->data = (uint8_t *)talloc_asprintf(mem_ctx, "%lld", i);
- if (out->data == NULL) {
- return -1;
- }
- out->length = strlen((char *)out->data);
- return 0;
-}
-
-/*
- compare two Integers
-*/
-static int ldb_comparison_Integer(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- return strtoll((char *)v1->data, NULL, 0) - strtoll((char *)v2->data, NULL, 0);
-}
-
-/*
- compare two binary blobs
-*/
-int ldb_comparison_binary(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- if (v1->length != v2->length) {
- return v1->length - v2->length;
- }
- return memcmp(v1->data, v2->data, v1->length);
-}
-
-/*
- compare two case insensitive strings, ignoring multiple whitespaces
- and leading and trailing whitespaces
- see rfc2252 section 8.1
-
- try to optimize for the ascii case,
- but if we find out an utf8 codepoint revert to slower but correct function
-*/
-static int ldb_comparison_fold(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- const char *s1=(const char *)v1->data, *s2=(const char *)v2->data;
- const char *u1, *u2;
- char *b1, *b2;
- int ret;
- while (*s1 == ' ') s1++;
- while (*s2 == ' ') s2++;
- /* TODO: make utf8 safe, possibly with helper function from application */
- while (*s1 && *s2) {
- /* the first 127 (0x7F) chars are ascii and utf8 guarantes they
- * never appear in multibyte sequences */
- if (((unsigned char)s1[0]) & 0x80) goto utf8str;
- if (((unsigned char)s2[0]) & 0x80) goto utf8str;
- if (toupper((unsigned char)*s1) != toupper((unsigned char)*s2))
- break;
- if (*s1 == ' ') {
- while (s1[0] == s1[1]) s1++;
- while (s2[0] == s2[1]) s2++;
- }
- s1++; s2++;
- }
- if (! (*s1 && *s2)) {
- /* check for trailing spaces only if one of the pointers
- * has reached the end of the strings otherwise we
- * can mistakenly match.
- * ex. "domain users" <-> "domainUpdates"
- */
- while (*s1 == ' ') s1++;
- while (*s2 == ' ') s2++;
- }
- return (int)(toupper(*s1)) - (int)(toupper(*s2));
-
-utf8str:
- /* no need to recheck from the start, just from the first utf8 char found */
- b1 = ldb_casefold(ldb, mem_ctx, s1);
- b2 = ldb_casefold(ldb, mem_ctx, s2);
-
- if (b1 && b2) {
- /* Both strings converted correctly */
-
- u1 = b1;
- u2 = b2;
- } else {
- /* One of the strings was not UTF8, so we have no options but to do a binary compare */
-
- u1 = s1;
- u2 = s2;
- }
-
- while (*u1 & *u2) {
- if (*u1 != *u2)
- break;
- if (*u1 == ' ') {
- while (u1[0] == u1[1]) u1++;
- while (u2[0] == u2[1]) u2++;
- }
- u1++; u2++;
- }
- if (! (*u1 && *u2)) {
- while (*u1 == ' ') u1++;
- while (*u2 == ' ') u2++;
- }
- ret = (int)(*u1 - *u2);
-
- talloc_free(b1);
- talloc_free(b2);
-
- return ret;
-}
-
-/*
- canonicalise a attribute in DN format
-*/
-static int ldb_canonicalise_dn(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct ldb_dn *dn;
- int ret = -1;
-
- out->length = 0;
- out->data = NULL;
-
- dn = ldb_dn_explode_casefold(ldb, mem_ctx, (char *)in->data);
- if (dn == NULL) {
- return -1;
- }
-
- out->data = (uint8_t *)ldb_dn_linearize(mem_ctx, dn);
- if (out->data == NULL) {
- goto done;
- }
- out->length = strlen((char *)out->data);
-
- ret = 0;
-
-done:
- talloc_free(dn);
-
- return ret;
-}
-
-/*
- compare two dns
-*/
-static int ldb_comparison_dn(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- struct ldb_dn *dn1 = NULL, *dn2 = NULL;
- int ret;
-
- dn1 = ldb_dn_explode_casefold(ldb, mem_ctx, (char *)v1->data);
- if (dn1 == NULL) return -1;
-
- dn2 = ldb_dn_explode_casefold(ldb, mem_ctx, (char *)v2->data);
- if (dn2 == NULL) {
- talloc_free(dn1);
- return -1;
- }
-
- ret = ldb_dn_compare(ldb, dn1, dn2);
-
- talloc_free(dn1);
- talloc_free(dn2);
- return ret;
-}
-
-/*
- compare two objectclasses, looking at subclasses
-*/
-static int ldb_comparison_objectclass(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- int ret, i;
- const char **subclasses;
- ret = ldb_comparison_fold(ldb, mem_ctx, v1, v2);
- if (ret == 0) {
- return 0;
- }
- subclasses = ldb_subclass_list(ldb, (char *)v1->data);
- if (subclasses == NULL) {
- return ret;
- }
- for (i=0;subclasses[i];i++) {
- struct ldb_val vs;
- vs.data = discard_const_p(uint8_t, subclasses[i]);
- vs.length = strlen(subclasses[i]);
- if (ldb_comparison_objectclass(ldb, mem_ctx, &vs, v2) == 0) {
- return 0;
- }
- }
- return ret;
-}
-
-/*
- compare two utc time values. 1 second resolution
-*/
-static int ldb_comparison_utctime(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- time_t t1, t2;
- t1 = ldb_string_to_time((char *)v1->data);
- t2 = ldb_string_to_time((char *)v2->data);
- return (int)t2 - (int)t1;
-}
-
-/*
- canonicalise a utc time
-*/
-static int ldb_canonicalise_utctime(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- time_t t = ldb_string_to_time((char *)in->data);
- out->data = (uint8_t *)ldb_timestring(mem_ctx, t);
- if (out->data == NULL) {
- return -1;
- }
- out->length = strlen((char *)out->data);
- return 0;
-}
-
-/*
- table of standard attribute handlers
-*/
-static const struct ldb_attrib_handler ldb_standard_attribs[] = {
- {
- .attr = LDB_SYNTAX_INTEGER,
- .flags = 0,
- .ldif_read_fn = ldb_handler_copy,
- .ldif_write_fn = ldb_handler_copy,
- .canonicalise_fn = ldb_canonicalise_Integer,
- .comparison_fn = ldb_comparison_Integer
- },
- {
- .attr = LDB_SYNTAX_OCTET_STRING,
- .flags = 0,
- .ldif_read_fn = ldb_handler_copy,
- .ldif_write_fn = ldb_handler_copy,
- .canonicalise_fn = ldb_handler_copy,
- .comparison_fn = ldb_comparison_binary
- },
- {
- .attr = LDB_SYNTAX_DIRECTORY_STRING,
- .flags = 0,
- .ldif_read_fn = ldb_handler_copy,
- .ldif_write_fn = ldb_handler_copy,
- .canonicalise_fn = ldb_handler_fold,
- .comparison_fn = ldb_comparison_fold
- },
- {
- .attr = LDB_SYNTAX_DN,
- .flags = 0,
- .ldif_read_fn = ldb_handler_copy,
- .ldif_write_fn = ldb_handler_copy,
- .canonicalise_fn = ldb_canonicalise_dn,
- .comparison_fn = ldb_comparison_dn
- },
- {
- .attr = LDB_SYNTAX_OBJECTCLASS,
- .flags = 0,
- .ldif_read_fn = ldb_handler_copy,
- .ldif_write_fn = ldb_handler_copy,
- .canonicalise_fn = ldb_handler_fold,
- .comparison_fn = ldb_comparison_objectclass
- },
- {
- .attr = LDB_SYNTAX_UTC_TIME,
- .flags = 0,
- .ldif_read_fn = ldb_handler_copy,
- .ldif_write_fn = ldb_handler_copy,
- .canonicalise_fn = ldb_canonicalise_utctime,
- .comparison_fn = ldb_comparison_utctime
- }
-};
-
-
-/*
- return the attribute handlers for a given syntax name
-*/
-const struct ldb_attrib_handler *ldb_attrib_handler_syntax(struct ldb_context *ldb,
- const char *syntax)
-{
- int i;
- unsigned num_handlers = sizeof(ldb_standard_attribs)/sizeof(ldb_standard_attribs[0]);
- /* TODO: should be replaced with a binary search */
- for (i=0;i<num_handlers;i++) {
- if (strcmp(ldb_standard_attribs[i].attr, syntax) == 0) {
- return &ldb_standard_attribs[i];
- }
- }
- return NULL;
-}
-
diff --git a/source/lib/ldb/common/ldb.c b/source/lib/ldb/common/ldb.c
deleted file mode 100644
index 512ad84efa0..00000000000
--- a/source/lib/ldb/common/ldb.c
+++ /dev/null
@@ -1,1133 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
- Copyright (C) Simo Sorce 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb core API
- *
- * Description: core API routines interfacing to ldb backends
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/*
- initialise a ldb context
- The mem_ctx is optional
-*/
-struct ldb_context *ldb_init(void *mem_ctx)
-{
- struct ldb_context *ldb = talloc_zero(mem_ctx, struct ldb_context);
- int ret;
-
- ret = ldb_setup_wellknown_attributes(ldb);
- if (ret != 0) {
- talloc_free(ldb);
- return NULL;
- }
-
- ldb_set_utf8_default(ldb);
- ldb_set_create_perms(ldb, 0666);
-
- return ldb;
-}
-
-static struct ldb_backend {
- const char *name;
- ldb_connect_fn connect_fn;
- struct ldb_backend *prev, *next;
-} *ldb_backends = NULL;
-
-
-static ldb_connect_fn ldb_find_backend(const char *url)
-{
- struct ldb_backend *backend;
-
- for (backend = ldb_backends; backend; backend = backend->next) {
- if (strncmp(backend->name, url, strlen(backend->name)) == 0) {
- return backend->connect_fn;
- }
- }
-
- return NULL;
-}
-
-/*
- register a new ldb backend
-*/
-int ldb_register_backend(const char *url_prefix, ldb_connect_fn connectfn)
-{
- struct ldb_backend *backend = talloc(talloc_autofree_context(), struct ldb_backend);
-
- if (ldb_find_backend(url_prefix)) {
- return LDB_SUCCESS;
- }
-
- /* Maybe check for duplicity here later on? */
-
- backend->name = talloc_strdup(backend, url_prefix);
- backend->connect_fn = connectfn;
- DLIST_ADD(ldb_backends, backend);
-
- return LDB_SUCCESS;
-}
-
-/*
- Return the ldb module form of a database. The URL can either be one of the following forms
- ldb://path
- ldapi://path
-
- flags is made up of LDB_FLG_*
-
- the options are passed uninterpreted to the backend, and are
- backend specific.
-
- This allows modules to get at only the backend module, for example where a module
- may wish to direct certain requests at a particular backend.
-*/
-int ldb_connect_backend(struct ldb_context *ldb, const char *url, const char *options[],
- struct ldb_module **backend_module)
-{
- int ret;
- char *backend;
- ldb_connect_fn fn;
-
- if (strchr(url, ':') != NULL) {
- backend = talloc_strndup(ldb, url, strchr(url, ':')-url);
- } else {
- /* Default to tdb */
- backend = talloc_strdup(ldb, "tdb");
- }
-
- fn = ldb_find_backend(backend);
-
- if (fn == NULL) {
- if (ldb_try_load_dso(ldb, backend) == 0) {
- fn = ldb_find_backend(backend);
- }
- }
-
- talloc_free(backend);
-
- if (fn == NULL) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "Unable to find backend for '%s'\n", url);
- return LDB_ERR_OTHER;
- }
-
- ret = fn(ldb, url, ldb->flags, options, backend_module);
-
- if (ret != LDB_SUCCESS) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Failed to connect to '%s'\n", url);
- return ret;
- }
- return ret;
-}
-
-/*
- try to autodetect a basedn if none specified. This fixes one of my
- pet hates about ldapsearch, which is that you have to get a long,
- complex basedn right to make any use of it.
-*/
-static const struct ldb_dn *ldb_set_default_basedn(struct ldb_context *ldb)
-{
- TALLOC_CTX *tmp_ctx;
- int ret;
- static const char *attrs[] = { "defaultNamingContext", NULL };
- struct ldb_result *res;
- struct ldb_dn *basedn=NULL;
-
- basedn = (struct ldb_dn *)ldb_get_opaque(ldb, "default_baseDN");
- if (basedn) {
- return basedn;
- }
-
- tmp_ctx = talloc_new(ldb);
- ret = ldb_search(ldb, ldb_dn_new(tmp_ctx), LDB_SCOPE_BASE,
- "(objectClass=*)", attrs, &res);
- if (ret == LDB_SUCCESS) {
- if (res->count == 1) {
- basedn = ldb_msg_find_attr_as_dn(ldb, res->msgs[0], "defaultNamingContext");
- ldb_set_opaque(ldb, "default_baseDN", basedn);
- }
- talloc_free(res);
- }
-
- talloc_free(tmp_ctx);
- return basedn;
-}
-
-const struct ldb_dn *ldb_get_default_basedn(struct ldb_context *ldb)
-{
- return (const struct ldb_dn *)ldb_get_opaque(ldb, "default_baseDN");
-}
-
-/*
- connect to a database. The URL can either be one of the following forms
- ldb://path
- ldapi://path
-
- flags is made up of LDB_FLG_*
-
- the options are passed uninterpreted to the backend, and are
- backend specific
-*/
-int ldb_connect(struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[])
-{
- int ret;
-
- ldb->flags = flags;
-
- ret = ldb_connect_backend(ldb, url, options, &ldb->modules);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- if (ldb_load_modules(ldb, options) != LDB_SUCCESS) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "Unable to load modules for %s: %s\n",
- url, ldb_errstring(ldb));
- return LDB_ERR_OTHER;
- }
-
- /* TODO: get timeout from options if available there */
- ldb->default_timeout = 300; /* set default to 5 minutes */
-
- /* set the default base dn */
- ldb_set_default_basedn(ldb);
-
- return LDB_SUCCESS;
-}
-
-void ldb_set_errstring(struct ldb_context *ldb, const char *err_string)
-{
- if (ldb->err_string) {
- talloc_free(ldb->err_string);
- }
- ldb->err_string = talloc_strdup(ldb, err_string);
-}
-
-void ldb_asprintf_errstring(struct ldb_context *ldb, const char *format, ...)
-{
- va_list ap;
-
- if (ldb->err_string) {
- talloc_free(ldb->err_string);
- }
-
- va_start(ap, format);
- ldb->err_string = talloc_vasprintf(ldb, format, ap);
- va_end(ap);
-}
-
-void ldb_reset_err_string(struct ldb_context *ldb)
-{
- if (ldb->err_string) {
- talloc_free(ldb->err_string);
- ldb->err_string = NULL;
- }
-}
-
-#define FIRST_OP(ldb, op) do { \
- module = ldb->modules; \
- while (module && module->ops->op == NULL) module = module->next; \
- if (module == NULL) { \
- ldb_asprintf_errstring(ldb, "unable to find module or backend to handle operation: " #op); \
- return LDB_ERR_OPERATIONS_ERROR; \
- } \
-} while (0)
-
-/*
- start a transaction
-*/
-static int ldb_transaction_start_internal(struct ldb_context *ldb)
-{
- struct ldb_module *module;
- int status;
- FIRST_OP(ldb, start_transaction);
-
- ldb_reset_err_string(ldb);
-
- status = module->ops->start_transaction(module);
- if (status != LDB_SUCCESS) {
- if (ldb->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb,
- "ldb transaction start: %s (%d)",
- ldb_strerror(status),
- status);
- }
- }
- return status;
-}
-
-/*
- commit a transaction
-*/
-static int ldb_transaction_commit_internal(struct ldb_context *ldb)
-{
- struct ldb_module *module;
- int status;
- FIRST_OP(ldb, end_transaction);
-
- ldb_reset_err_string(ldb);
-
- status = module->ops->end_transaction(module);
- if (status != LDB_SUCCESS) {
- if (ldb->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb,
- "ldb transaction commit: %s (%d)",
- ldb_strerror(status),
- status);
- }
- }
- return status;
-}
-
-/*
- cancel a transaction
-*/
-static int ldb_transaction_cancel_internal(struct ldb_context *ldb)
-{
- struct ldb_module *module;
- int status;
- FIRST_OP(ldb, del_transaction);
-
- status = module->ops->del_transaction(module);
- if (status != LDB_SUCCESS) {
- if (ldb->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb,
- "ldb transaction cancel: %s (%d)",
- ldb_strerror(status),
- status);
- }
- }
- return status;
-}
-
-int ldb_transaction_start(struct ldb_context *ldb)
-{
- /* disable autotransactions */
- ldb->transaction_active++;
-
- return ldb_transaction_start_internal(ldb);
-}
-
-int ldb_transaction_commit(struct ldb_context *ldb)
-{
- /* renable autotransactions (when we reach 0) */
- if (ldb->transaction_active > 0)
- ldb->transaction_active--;
-
- return ldb_transaction_commit_internal(ldb);
-}
-
-int ldb_transaction_cancel(struct ldb_context *ldb)
-{
- /* renable autotransactions (when we reach 0) */
- if (ldb->transaction_active > 0)
- ldb->transaction_active--;
-
- return ldb_transaction_cancel_internal(ldb);
-}
-
-static int ldb_autotransaction_start(struct ldb_context *ldb)
-{
- /* explicit transaction active, ignore autotransaction request */
- if (ldb->transaction_active)
- return LDB_SUCCESS;
-
- return ldb_transaction_start_internal(ldb);
-}
-
-static int ldb_autotransaction_commit(struct ldb_context *ldb)
-{
- /* explicit transaction active, ignore autotransaction request */
- if (ldb->transaction_active)
- return LDB_SUCCESS;
-
- return ldb_transaction_commit_internal(ldb);
-}
-
-static int ldb_autotransaction_cancel(struct ldb_context *ldb)
-{
- /* explicit transaction active, ignore autotransaction request */
- if (ldb->transaction_active)
- return LDB_SUCCESS;
-
- return ldb_transaction_cancel_internal(ldb);
-}
-
-/* autostarts a transacion if none active */
-static int ldb_autotransaction_request(struct ldb_context *ldb, struct ldb_request *req)
-{
- int ret;
-
- ret = ldb_autotransaction_start(ldb);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- ret = ldb_request(ldb, req);
- if (ret == LDB_SUCCESS) {
- ret = ldb_wait(req->handle, LDB_WAIT_ALL);
- }
-
- if (ret == LDB_SUCCESS) {
- return ldb_autotransaction_commit(ldb);
- }
- ldb_autotransaction_cancel(ldb);
-
- if (ldb->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb, "%s (%d)", ldb_strerror(ret), ret);
- }
-
- return ret;
-}
-
-int ldb_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- if (!handle) {
- return LDB_SUCCESS;
- }
-
- return handle->module->ops->wait(handle, type);
-}
-
-/* set the specified timeout or, if timeout is 0 set the default timeout */
-/* timeout == -1 means no timeout */
-int ldb_set_timeout(struct ldb_context *ldb, struct ldb_request *req, int timeout)
-{
- if (req == NULL) return LDB_ERR_OPERATIONS_ERROR;
-
- if (timeout != 0) {
- req->timeout = timeout;
- } else {
- req->timeout = ldb->default_timeout;
- }
- req->starttime = time(NULL);
-
- return LDB_SUCCESS;
-}
-
-/* calculates the new timeout based on the previous starttime and timeout */
-int ldb_set_timeout_from_prev_req(struct ldb_context *ldb, struct ldb_request *oldreq, struct ldb_request *newreq)
-{
- time_t now;
-
- if (newreq == NULL) return LDB_ERR_OPERATIONS_ERROR;
-
- now = time(NULL);
-
- if (oldreq == NULL)
- return ldb_set_timeout(ldb, newreq, 0);
-
- if ((now - oldreq->starttime) > oldreq->timeout) {
- return LDB_ERR_TIME_LIMIT_EXCEEDED;
- }
- newreq->starttime = oldreq->starttime;
- newreq->timeout = oldreq->timeout - (now - oldreq->starttime);
-
- return LDB_SUCCESS;
-}
-
-
-/*
- set the permissions for new files to be passed to open() in
- backends that use local files
- */
-void ldb_set_create_perms(struct ldb_context *ldb, unsigned int perms)
-{
- ldb->create_perms = perms;
-}
-
-/*
- start an ldb request
- NOTE: the request must be a talloc context.
- returns LDB_ERR_* on errors.
-*/
-int ldb_request(struct ldb_context *ldb, struct ldb_request *req)
-{
- struct ldb_module *module;
- int ret;
-
- ldb_reset_err_string(ldb);
-
- /* call the first module in the chain */
- switch (req->operation) {
- case LDB_SEARCH:
- FIRST_OP(ldb, search);
- ret = module->ops->search(module, req);
- break;
- case LDB_ADD:
- FIRST_OP(ldb, add);
- ret = module->ops->add(module, req);
- break;
- case LDB_MODIFY:
- FIRST_OP(ldb, modify);
- ret = module->ops->modify(module, req);
- break;
- case LDB_DELETE:
- FIRST_OP(ldb, del);
- ret = module->ops->del(module, req);
- break;
- case LDB_RENAME:
- FIRST_OP(ldb, rename);
- ret = module->ops->rename(module, req);
- break;
- case LDB_SEQUENCE_NUMBER:
- FIRST_OP(ldb, sequence_number);
- ret = module->ops->sequence_number(module, req);
- break;
- default:
- FIRST_OP(ldb, request);
- ret = module->ops->request(module, req);
- break;
- }
-
- return ret;
-}
-
-/*
- search the database given a LDAP-like search expression
-
- returns an LDB error code
-
- Use talloc_free to free the ldb_message returned in 'res', if successful
-
-*/
-int ldb_search_default_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct ldb_result *res;
- int n;
-
- if (!context) {
- ldb_set_errstring(ldb, "NULL Context in callback");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- res = talloc_get_type(context, struct ldb_result);
-
- if (!res || !ares) {
- ldb_set_errstring(ldb, "NULL res or ares in callback");
- goto error;
- }
-
- switch (ares->type) {
- case LDB_REPLY_ENTRY:
- res->msgs = talloc_realloc(res, res->msgs, struct ldb_message *, res->count + 2);
- if (! res->msgs) {
- goto error;
- }
-
- res->msgs[res->count + 1] = NULL;
-
- res->msgs[res->count] = talloc_move(res->msgs, &ares->message);
- res->count++;
- break;
- case LDB_REPLY_REFERRAL:
- if (res->refs) {
- for (n = 0; res->refs[n]; n++) /*noop*/ ;
- } else {
- n = 0;
- }
-
- res->refs = talloc_realloc(res, res->refs, char *, n + 2);
- if (! res->refs) {
- goto error;
- }
-
- res->refs[n] = talloc_move(res->refs, &ares->referral);
- res->refs[n + 1] = NULL;
- case LDB_REPLY_EXTENDED:
- case LDB_REPLY_DONE:
- /* TODO: we should really support controls on entries and referrals too! */
- res->controls = talloc_move(res, &ares->controls);
- break;
- }
- talloc_free(ares);
- return LDB_SUCCESS;
-
-error:
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-int ldb_build_search_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_dn *base,
- enum ldb_scope scope,
- const char *expression,
- const char * const *attrs,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback)
-{
- struct ldb_request *req;
-
- *ret_req = NULL;
-
- req = talloc(mem_ctx, struct ldb_request);
- if (req == NULL) {
- ldb_set_errstring(ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_SEARCH;
- if (base == NULL) {
- req->op.search.base = ldb_dn_new(req);
- } else {
- req->op.search.base = base;
- }
- req->op.search.scope = scope;
-
- req->op.search.tree = ldb_parse_tree(req, expression);
- if (req->op.search.tree == NULL) {
- ldb_set_errstring(ldb, "Unable to parse search expression");
- talloc_free(req);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->op.search.attrs = attrs;
- req->controls = controls;
- req->context = context;
- req->callback = callback;
-
- *ret_req = req;
- return LDB_SUCCESS;
-}
-
-int ldb_build_add_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_message *message,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback)
-{
- struct ldb_request *req;
-
- *ret_req = NULL;
-
- req = talloc(mem_ctx, struct ldb_request);
- if (req == NULL) {
- ldb_set_errstring(ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_ADD;
- req->op.add.message = message;
- req->controls = controls;
- req->context = context;
- req->callback = callback;
-
- *ret_req = req;
-
- return LDB_SUCCESS;
-}
-
-int ldb_build_mod_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_message *message,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback)
-{
- struct ldb_request *req;
-
- *ret_req = NULL;
-
- req = talloc(mem_ctx, struct ldb_request);
- if (req == NULL) {
- ldb_set_errstring(ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_MODIFY;
- req->op.mod.message = message;
- req->controls = controls;
- req->context = context;
- req->callback = callback;
-
- *ret_req = req;
-
- return LDB_SUCCESS;
-}
-
-int ldb_build_del_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_dn *dn,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback)
-{
- struct ldb_request *req;
-
- *ret_req = NULL;
-
- req = talloc(mem_ctx, struct ldb_request);
- if (req == NULL) {
- ldb_set_errstring(ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_DELETE;
- req->op.del.dn = dn;
- req->controls = controls;
- req->context = context;
- req->callback = callback;
-
- *ret_req = req;
-
- return LDB_SUCCESS;
-}
-
-int ldb_build_rename_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_dn *olddn,
- const struct ldb_dn *newdn,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback)
-{
- struct ldb_request *req;
-
- *ret_req = NULL;
-
- req = talloc(mem_ctx, struct ldb_request);
- if (req == NULL) {
- ldb_set_errstring(ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_RENAME;
- req->op.rename.olddn = olddn;
- req->op.rename.newdn = newdn;
- req->controls = controls;
- req->context = context;
- req->callback = callback;
-
- *ret_req = req;
-
- return LDB_SUCCESS;
-}
-
-/*
- note that ldb_search() will automatically replace a NULL 'base' value with the
- defaultNamingContext from the rootDSE if available.
-*/
-int ldb_search(struct ldb_context *ldb,
- const struct ldb_dn *base,
- enum ldb_scope scope,
- const char *expression,
- const char * const *attrs,
- struct ldb_result **_res)
-{
- struct ldb_request *req;
- int ret;
- struct ldb_result *res;
-
- *_res = NULL;
-
- res = talloc_zero(ldb, struct ldb_result);
- if (!res) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldb_build_search_req(&req, ldb, ldb,
- base?base:ldb_get_default_basedn(ldb),
- scope,
- expression,
- attrs,
- NULL,
- res,
- ldb_search_default_callback);
-
- if (ret != LDB_SUCCESS) goto done;
-
- ldb_set_timeout(ldb, req, 0); /* use default timeout */
-
- ret = ldb_request(ldb, req);
-
- if (ret == LDB_SUCCESS) {
- ret = ldb_wait(req->handle, LDB_WAIT_ALL);
- }
-
- talloc_free(req);
-
-done:
- if (ret != LDB_SUCCESS) {
- talloc_free(res);
- }
-
- *_res = res;
- return ret;
-}
-
-/*
- a useful search function where you can easily define the expression and that
- takes a memory context where results are allocated
-*/
-
-int ldb_search_exp_fmt(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_result **result,
- struct ldb_dn *base, enum ldb_scope scope, const char * const *attrs,
- const char *exp_fmt, ...)
-{
- struct ldb_result *res;
- char *expression;
- va_list ap;
- int ret;
-
- res = NULL;
- *result = NULL;
-
- va_start(ap, exp_fmt);
- expression = talloc_vasprintf(mem_ctx, exp_fmt, ap);
- va_end(ap);
-
- if ( ! expression) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldb_search(ldb, base, scope, expression, attrs, &res);
-
- if (ret == LDB_SUCCESS) {
- talloc_steal(mem_ctx, res);
- *result = res;
- } else {
- talloc_free(res);
- }
-
- talloc_free(expression);
-
- return ret;
-}
-
-/*
- add a record to the database. Will fail if a record with the given class and key
- already exists
-*/
-int ldb_add(struct ldb_context *ldb,
- const struct ldb_message *message)
-{
- struct ldb_request *req;
- int ret;
-
- ret = ldb_msg_sanity_check(ldb, message);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- ret = ldb_build_add_req(&req, ldb, ldb,
- message,
- NULL,
- NULL,
- NULL);
-
- if (ret != LDB_SUCCESS) return ret;
-
- ldb_set_timeout(ldb, req, 0); /* use default timeout */
-
- /* do request and autostart a transaction */
- ret = ldb_autotransaction_request(ldb, req);
-
- talloc_free(req);
- return ret;
-}
-
-/*
- modify the specified attributes of a record
-*/
-int ldb_modify(struct ldb_context *ldb,
- const struct ldb_message *message)
-{
- struct ldb_request *req;
- int ret;
-
- ret = ldb_msg_sanity_check(ldb, message);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- ret = ldb_build_mod_req(&req, ldb, ldb,
- message,
- NULL,
- NULL,
- NULL);
-
- if (ret != LDB_SUCCESS) return ret;
-
- ldb_set_timeout(ldb, req, 0); /* use default timeout */
-
- /* do request and autostart a transaction */
- ret = ldb_autotransaction_request(ldb, req);
-
- talloc_free(req);
- return ret;
-}
-
-
-/*
- delete a record from the database
-*/
-int ldb_delete(struct ldb_context *ldb, const struct ldb_dn *dn)
-{
- struct ldb_request *req;
- int ret;
-
- ret = ldb_build_del_req(&req, ldb, ldb,
- dn,
- NULL,
- NULL,
- NULL);
-
- if (ret != LDB_SUCCESS) return ret;
-
- ldb_set_timeout(ldb, req, 0); /* use default timeout */
-
- /* do request and autostart a transaction */
- ret = ldb_autotransaction_request(ldb, req);
-
- talloc_free(req);
- return ret;
-}
-
-/*
- rename a record in the database
-*/
-int ldb_rename(struct ldb_context *ldb, const struct ldb_dn *olddn, const struct ldb_dn *newdn)
-{
- struct ldb_request *req;
- int ret;
-
- ret = ldb_build_rename_req(&req, ldb, ldb,
- olddn,
- newdn,
- NULL,
- NULL,
- NULL);
-
- if (ret != LDB_SUCCESS) return ret;
-
- ldb_set_timeout(ldb, req, 0); /* use default timeout */
-
- /* do request and autostart a transaction */
- ret = ldb_autotransaction_request(ldb, req);
-
- talloc_free(req);
- return ret;
-}
-
-
-/*
- return the global sequence number
-*/
-int ldb_sequence_number(struct ldb_context *ldb, enum ldb_sequence_type type, uint64_t *seq_num)
-{
- struct ldb_request *req;
- int ret;
-
- req = talloc(ldb, struct ldb_request);
- if (req == NULL) {
- ldb_set_errstring(ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_SEQUENCE_NUMBER;
- req->controls = NULL;
- req->context = NULL;
- req->callback = NULL;
- ldb_set_timeout(ldb, req, 0); /* use default timeout */
-
- req->op.seq_num.type = type;
- /* do request and autostart a transaction */
- ret = ldb_request(ldb, req);
-
- if (ret == LDB_SUCCESS) {
- *seq_num = req->op.seq_num.seq_num;
- }
-
- talloc_free(req);
- return ret;
-}
-
-
-
-/*
- return extended error information
-*/
-const char *ldb_errstring(struct ldb_context *ldb)
-{
- if (ldb->err_string) {
- return ldb->err_string;
- }
-
- return NULL;
-}
-
-/*
- return a string explaining what a ldb error constant meancs
-*/
-const char *ldb_strerror(int ldb_err)
-{
- switch (ldb_err) {
- case LDB_SUCCESS:
- return "Success";
- case LDB_ERR_OPERATIONS_ERROR:
- return "Operations error";
- case LDB_ERR_PROTOCOL_ERROR:
- return "Protocol error";
- case LDB_ERR_TIME_LIMIT_EXCEEDED:
- return "Time limit exceeded";
- case LDB_ERR_SIZE_LIMIT_EXCEEDED:
- return "Size limit exceeded";
- case LDB_ERR_COMPARE_FALSE:
- return "Compare false";
- case LDB_ERR_COMPARE_TRUE:
- return "Compare true";
- case LDB_ERR_AUTH_METHOD_NOT_SUPPORTED:
- return "Auth method not supported";
- case LDB_ERR_STRONG_AUTH_REQUIRED:
- return "Strong auth required";
-/* 9 RESERVED */
- case LDB_ERR_REFERRAL:
- return "Referral error";
- case LDB_ERR_ADMIN_LIMIT_EXCEEDED:
- return "Admin limit exceeded";
- case LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION:
- return "Unsupported critical extension";
- case LDB_ERR_CONFIDENTIALITY_REQUIRED:
- return "Confidentiality required";
- case LDB_ERR_SASL_BIND_IN_PROGRESS:
- return "SASL bind in progress";
- case LDB_ERR_NO_SUCH_ATTRIBUTE:
- return "No such attribute";
- case LDB_ERR_UNDEFINED_ATTRIBUTE_TYPE:
- return "Undefined attribute type";
- case LDB_ERR_INAPPROPRIATE_MATCHING:
- return "Inappropriate matching";
- case LDB_ERR_CONSTRAINT_VIOLATION:
- return "Constraint violation";
- case LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS:
- return "Attribute or value exists";
- case LDB_ERR_INVALID_ATTRIBUTE_SYNTAX:
- return "Invalid attribute syntax";
-/* 22-31 unused */
- case LDB_ERR_NO_SUCH_OBJECT:
- return "No such object";
- case LDB_ERR_ALIAS_PROBLEM:
- return "Alias problem";
- case LDB_ERR_INVALID_DN_SYNTAX:
- return "Invalid DN syntax";
-/* 35 RESERVED */
- case LDB_ERR_ALIAS_DEREFERENCING_PROBLEM:
- return "Alias dereferencing problem";
-/* 37-47 unused */
- case LDB_ERR_INAPPROPRIATE_AUTHENTICATION:
- return "Inappropriate authentication";
- case LDB_ERR_INVALID_CREDENTIALS:
- return "Invalid credentials";
- case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS:
- return "insufficient access rights";
- case LDB_ERR_BUSY:
- return "Busy";
- case LDB_ERR_UNAVAILABLE:
- return "Unavailable";
- case LDB_ERR_UNWILLING_TO_PERFORM:
- return "Unwilling to perform";
- case LDB_ERR_LOOP_DETECT:
- return "Loop detect";
-/* 55-63 unused */
- case LDB_ERR_NAMING_VIOLATION:
- return "Naming violation";
- case LDB_ERR_OBJECT_CLASS_VIOLATION:
- return "Object class violation";
- case LDB_ERR_NOT_ALLOWED_ON_NON_LEAF:
- return "Not allowed on non-leaf";
- case LDB_ERR_NOT_ALLOWED_ON_RDN:
- return "Not allowed on RDN";
- case LDB_ERR_ENTRY_ALREADY_EXISTS:
- return "Entry already exists";
- case LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED:
- return "Object class mods prohibited";
-/* 70 RESERVED FOR CLDAP */
- case LDB_ERR_AFFECTS_MULTIPLE_DSAS:
- return "Affects multiple DSAs";
-/* 72-79 unused */
- case LDB_ERR_OTHER:
- return "Other";
- }
-
- return "Unknown error";
-}
-
-/*
- set backend specific opaque parameters
-*/
-int ldb_set_opaque(struct ldb_context *ldb, const char *name, void *value)
-{
- struct ldb_opaque *o;
-
- /* allow updating an existing value */
- for (o=ldb->opaque;o;o=o->next) {
- if (strcmp(o->name, name) == 0) {
- o->value = value;
- return LDB_SUCCESS;
- }
- }
-
- o = talloc(ldb, struct ldb_opaque);
- if (o == NULL) {
- ldb_oom(ldb);
- return LDB_ERR_OTHER;
- }
- o->next = ldb->opaque;
- o->name = name;
- o->value = value;
- ldb->opaque = o;
- return LDB_SUCCESS;
-}
-
-/*
- get a previously set opaque value
-*/
-void *ldb_get_opaque(struct ldb_context *ldb, const char *name)
-{
- struct ldb_opaque *o;
- for (o=ldb->opaque;o;o=o->next) {
- if (strcmp(o->name, name) == 0) {
- return o->value;
- }
- }
- return NULL;
-}
diff --git a/source/lib/ldb/common/ldb_attributes.c b/source/lib/ldb/common/ldb_attributes.c
deleted file mode 100644
index 26c1aac5a58..00000000000
--- a/source/lib/ldb/common/ldb_attributes.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-/*
- register handlers for specific attributes and objectclass relationships
-
- this allows a backend to store its schema information in any format
- it likes (or to not have any schema information at all) while keeping the
- message matching logic generic
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/*
- add to the list of ldif handlers for this ldb context
-*/
-int ldb_set_attrib_handlers(struct ldb_context *ldb,
- const struct ldb_attrib_handler *handlers,
- unsigned num_handlers)
-{
- int i;
- struct ldb_attrib_handler *h;
- h = talloc_realloc(ldb, ldb->schema.attrib_handlers,
- struct ldb_attrib_handler,
- ldb->schema.num_attrib_handlers + num_handlers);
- if (h == NULL) {
- ldb_oom(ldb);
- return -1;
- }
- ldb->schema.attrib_handlers = h;
- memcpy(h + ldb->schema.num_attrib_handlers,
- handlers, sizeof(*h) * num_handlers);
- for (i=0;i<num_handlers;i++) {
- if (h[ldb->schema.num_attrib_handlers+i].flags & LDB_ATTR_FLAG_ALLOCATED) {
- h[ldb->schema.num_attrib_handlers+i].attr = talloc_strdup(ldb->schema.attrib_handlers,
- h[ldb->schema.num_attrib_handlers+i].attr);
- if (h[ldb->schema.num_attrib_handlers+i].attr == NULL) {
- ldb_oom(ldb);
- return -1;
- }
- }
- }
- ldb->schema.num_attrib_handlers += num_handlers;
- return 0;
-}
-
-
-/*
- default function for read/write/canonicalise
-*/
-static int ldb_default_copy(struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_val *in,
- struct ldb_val *out)
-{
- *out = ldb_val_dup(mem_ctx, in);
-
- if (out->data == NULL && in->data != NULL) {
- return -1;
- }
-
- return 0;
-}
-
-/*
- default function for comparison
-*/
-static int ldb_default_cmp(struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_val *v1,
- const struct ldb_val *v2)
-{
- if (v1->length != v2->length) {
- return v1->length - v2->length;
- }
- return memcmp(v1->data, v2->data, v1->length);
-}
-
-/*
- default handler function pointers
-*/
-static const struct ldb_attrib_handler ldb_default_attrib_handler = {
- .attr = NULL,
- .ldif_read_fn = ldb_default_copy,
- .ldif_write_fn = ldb_default_copy,
- .canonicalise_fn = ldb_default_copy,
- .comparison_fn = ldb_default_cmp,
-};
-
-/*
- return the attribute handlers for a given attribute
-*/
-const struct ldb_attrib_handler *ldb_attrib_handler(struct ldb_context *ldb,
- const char *attrib)
-{
- int i;
- const struct ldb_attrib_handler *def = &ldb_default_attrib_handler;
- /* TODO: should be replaced with a binary search, with a sort on add */
- for (i=0;i<ldb->schema.num_attrib_handlers;i++) {
- if (strcmp(ldb->schema.attrib_handlers[i].attr, "*") == 0) {
- def = &ldb->schema.attrib_handlers[i];
- }
- if (ldb_attr_cmp(attrib, ldb->schema.attrib_handlers[i].attr) == 0) {
- return &ldb->schema.attrib_handlers[i];
- }
- }
- return def;
-}
-
-
-/*
- add to the list of ldif handlers for this ldb context
-*/
-void ldb_remove_attrib_handler(struct ldb_context *ldb, const char *attrib)
-{
- const struct ldb_attrib_handler *h;
- int i;
- h = ldb_attrib_handler(ldb, attrib);
- if (h == &ldb_default_attrib_handler) {
- return;
- }
- if (h->flags & LDB_ATTR_FLAG_ALLOCATED) {
- talloc_free(discard_const_p(char, h->attr));
- }
- i = h - ldb->schema.attrib_handlers;
- if (i < ldb->schema.num_attrib_handlers - 1) {
- memmove(&ldb->schema.attrib_handlers[i],
- h+1, sizeof(*h) * (ldb->schema.num_attrib_handlers-(i+1)));
- }
- ldb->schema.num_attrib_handlers--;
-}
-
-/*
- setup a attribute handler using a standard syntax
-*/
-int ldb_set_attrib_handler_syntax(struct ldb_context *ldb,
- const char *attr, const char *syntax)
-{
- const struct ldb_attrib_handler *h = ldb_attrib_handler_syntax(ldb, syntax);
- struct ldb_attrib_handler h2;
- if (h == NULL) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Unknown syntax '%s'\n", syntax);
- return -1;
- }
- h2 = *h;
- h2.attr = attr;
- return ldb_set_attrib_handlers(ldb, &h2, 1);
-}
-
-/*
- setup the attribute handles for well known attributes
-*/
-int ldb_setup_wellknown_attributes(struct ldb_context *ldb)
-{
- const struct {
- const char *attr;
- const char *syntax;
- } wellknown[] = {
- { "dn", LDB_SYNTAX_DN },
- { "ncName", LDB_SYNTAX_DN },
- { "distinguishedName", LDB_SYNTAX_DN },
- { "cn", LDB_SYNTAX_DIRECTORY_STRING },
- { "dc", LDB_SYNTAX_DIRECTORY_STRING },
- { "ou", LDB_SYNTAX_DIRECTORY_STRING },
- { "objectClass", LDB_SYNTAX_OBJECTCLASS }
- };
- int i;
- for (i=0;i<ARRAY_SIZE(wellknown);i++) {
- if (ldb_set_attrib_handler_syntax(ldb, wellknown[i].attr,
- wellknown[i].syntax) != 0) {
- return -1;
- }
- }
- return 0;
-}
-
-
-/*
- return the list of subclasses for a class
-*/
-const char **ldb_subclass_list(struct ldb_context *ldb, const char *classname)
-{
- int i;
- for (i=0;i<ldb->schema.num_classes;i++) {
- if (ldb_attr_cmp(classname, ldb->schema.classes[i].name) == 0) {
- return (const char **)ldb->schema.classes[i].subclasses;
- }
- }
- return NULL;
-}
-
-
-/*
- add a new subclass
-*/
-static int ldb_subclass_new(struct ldb_context *ldb, const char *classname, const char *subclass)
-{
- struct ldb_subclass *s, *c;
- s = talloc_realloc(ldb, ldb->schema.classes, struct ldb_subclass, ldb->schema.num_classes+1);
- if (s == NULL) goto failed;
-
- ldb->schema.classes = s;
- c = &s[ldb->schema.num_classes];
- c->name = talloc_strdup(s, classname);
- if (c->name == NULL) goto failed;
-
- c->subclasses = talloc_array(s, char *, 2);
- if (c->subclasses == NULL) goto failed;
-
- c->subclasses[0] = talloc_strdup(c->subclasses, subclass);
- if (c->subclasses[0] == NULL) goto failed;
- c->subclasses[1] = NULL;
-
- ldb->schema.num_classes++;
-
- return 0;
-failed:
- ldb_oom(ldb);
- return -1;
-}
-
-/*
- add a subclass
-*/
-int ldb_subclass_add(struct ldb_context *ldb, const char *classname, const char *subclass)
-{
- int i, n;
- struct ldb_subclass *c;
- char **s;
-
- for (i=0;i<ldb->schema.num_classes;i++) {
- if (ldb_attr_cmp(classname, ldb->schema.classes[i].name) == 0) {
- break;
- }
- }
- if (i == ldb->schema.num_classes) {
- return ldb_subclass_new(ldb, classname, subclass);
- }
- c = &ldb->schema.classes[i];
-
- for (n=0;c->subclasses[n];n++) /* noop */;
-
- s = talloc_realloc(ldb->schema.classes, c->subclasses, char *, n+2);
- if (s == NULL) {
- ldb_oom(ldb);
- return -1;
- }
-
- c->subclasses = s;
- s[n] = talloc_strdup(s, subclass);
- if (s[n] == NULL) {
- ldb_oom(ldb);
- return -1;
- }
- s[n+1] = NULL;
-
- return 0;
-}
-
-/*
- remove a set of subclasses for a class
-*/
-void ldb_subclass_remove(struct ldb_context *ldb, const char *classname)
-{
- int i;
- struct ldb_subclass *c;
-
- for (i=0;i<ldb->schema.num_classes;i++) {
- if (ldb_attr_cmp(classname, ldb->schema.classes[i].name) == 0) {
- break;
- }
- }
- if (i == ldb->schema.num_classes) {
- return;
- }
-
- c = &ldb->schema.classes[i];
- talloc_free(c->name);
- talloc_free(c->subclasses);
- if (ldb->schema.num_classes-(i+1) > 0) {
- memmove(c, c+1, sizeof(*c) * (ldb->schema.num_classes-(i+1)));
- }
- ldb->schema.num_classes--;
- if (ldb->schema.num_classes == 0) {
- talloc_free(ldb->schema.classes);
- ldb->schema.classes = NULL;
- }
-}
diff --git a/source/lib/ldb/common/ldb_controls.c b/source/lib/ldb/common/ldb_controls.c
deleted file mode 100644
index d2729c82ab8..00000000000
--- a/source/lib/ldb/common/ldb_controls.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb_controls.c
- *
- * Component: ldb controls utility functions
- *
- * Description: helper functions for control modules
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/* check if a control with the specified "oid" exist and return it */
-/* returns NULL if not found */
-struct ldb_control *get_control_from_list(struct ldb_control **controls, const char *oid)
-{
- int i;
-
- /* check if there's a paged request control */
- if (controls != NULL) {
- for (i = 0; controls[i]; i++) {
- if (strcmp(oid, controls[i]->oid) == 0) {
- break;
- }
- }
-
- return controls[i];
- }
-
- return NULL;
-}
-
-/* saves the current controls list into the "saver" and replace the one in req with a new one excluding
-the "exclude" control */
-/* returns False on error */
-int save_controls(struct ldb_control *exclude, struct ldb_request *req, struct ldb_control ***saver)
-{
- struct ldb_control **lcs;
- int i, j;
-
- *saver = req->controls;
- for (i = 0; req->controls[i]; i++);
- if (i == 1) {
- req->controls = NULL;
- return 1;
- }
-
- lcs = talloc_array(req, struct ldb_control *, i);
- if (!lcs) {
- return 0;
- }
-
- for (i = 0, j = 0; (*saver)[i]; i++) {
- if (exclude == (*saver)[i]) continue;
- lcs[j] = (*saver)[i];
- j++;
- }
- lcs[j] = NULL;
-
- req->controls = lcs;
- return 1;
-}
-
-/* check if there's any control marked as critical in the list */
-/* return True if any, False if none */
-int check_critical_controls(struct ldb_control **controls)
-{
- int i;
-
- if (controls == NULL) {
- return 0;
- }
-
- for (i = 0; controls[i]; i++) {
- if (controls[i]->critical) {
- return 1;
- }
- }
-
- return 0;
-}
diff --git a/source/lib/ldb/common/ldb_debug.c b/source/lib/ldb/common/ldb_debug.c
deleted file mode 100644
index 2548a5495aa..00000000000
--- a/source/lib/ldb/common/ldb_debug.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb debug
- *
- * Description: functions for printing debug messages
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/*
- this allows the user to choose their own debug function
-*/
-int ldb_set_debug(struct ldb_context *ldb,
- void (*debug)(void *context, enum ldb_debug_level level,
- const char *fmt, va_list ap),
- void *context)
-{
- ldb->debug_ops.debug = debug;
- ldb->debug_ops.context = context;
- return 0;
-}
-
-/*
- debug function for ldb_set_debug_stderr
-*/
-static void ldb_debug_stderr(void *context, enum ldb_debug_level level,
- const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3,0);
-static void ldb_debug_stderr(void *context, enum ldb_debug_level level,
- const char *fmt, va_list ap)
-{
- if (level <= LDB_DEBUG_WARNING) {
- vfprintf(stderr, fmt, ap);
- }
-}
-
-/*
- convenience function to setup debug messages on stderr
- messages of level LDB_DEBUG_WARNING and higher are printed
-*/
-int ldb_set_debug_stderr(struct ldb_context *ldb)
-{
- return ldb_set_debug(ldb, ldb_debug_stderr, ldb);
-}
-
-/*
- log a message
-*/
-void ldb_debug(struct ldb_context *ldb, enum ldb_debug_level level, const char *fmt, ...)
-{
- va_list ap;
- if (ldb->debug_ops.debug == NULL) {
- ldb_set_debug_stderr(ldb);
- }
- va_start(ap, fmt);
- ldb->debug_ops.debug(ldb->debug_ops.context, level, fmt, ap);
- va_end(ap);
-}
-
-
-/*
- log a message, and set the ldb error string to the same message
-*/
-void ldb_debug_set(struct ldb_context *ldb, enum ldb_debug_level level,
- const char *fmt, ...)
-{
- va_list ap;
- char *msg;
- va_start(ap, fmt);
- msg = talloc_vasprintf(ldb, fmt, ap);
- va_end(ap);
- if (msg != NULL) {
- ldb_set_errstring(ldb, msg);
- ldb_debug(ldb, level, "%s", msg);
- }
- talloc_free(msg);
-}
-
diff --git a/source/lib/ldb/common/ldb_dn.c b/source/lib/ldb/common/ldb_dn.c
deleted file mode 100644
index 7a1d8a910b2..00000000000
--- a/source/lib/ldb/common/ldb_dn.c
+++ /dev/null
@@ -1,1028 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb dn explode and utility functions
- *
- * Description: - explode a dn into it's own basic elements
- * and put them in a structure
- * - manipulate ldb_dn structures
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#define LDB_DN_NULL_FAILED(x) if (!(x)) goto failed
-
-#define LDB_SPECIAL "@SPECIAL"
-
-/**
- internal ldb exploded dn structures
-*/
-struct ldb_dn_component {
- char *name;
- struct ldb_val value;
-};
-
-struct ldb_dn {
- int comp_num;
- struct ldb_dn_component *components;
-};
-
-int ldb_dn_is_special(const struct ldb_dn *dn)
-{
- if (dn == NULL || dn->comp_num != 1) return 0;
-
- return ! strcmp(dn->components[0].name, LDB_SPECIAL);
-}
-
-int ldb_dn_check_special(const struct ldb_dn *dn, const char *check)
-{
- if (dn == NULL || dn->comp_num != 1) return 0;
-
- return ! strcmp((char *)dn->components[0].value.data, check);
-}
-
-char *ldb_dn_escape_value(void *mem_ctx, struct ldb_val value)
-{
- const char *p, *s, *src;
- char *d, *dst;
- int len;
-
- if (!value.length)
- return NULL;
-
- p = s = src = (const char *)value.data;
- len = value.length;
-
- /* allocate destination string, it will be at most 3 times the source */
- dst = d = talloc_array(mem_ctx, char, len * 3 + 1);
- LDB_DN_NULL_FAILED(dst);
-
- while (p - src < len) {
-
- p += strcspn(p, ",=\n+<>#;\\\"");
-
- if (p - src == len) /* found no escapable chars */
- break;
-
- memcpy(d, s, p - s); /* copy the part of the string before the stop */
- d += (p - s); /* move to current position */
-
- if (*p) { /* it is a normal escapable character */
- *d++ = '\\';
- *d++ = *p++;
- } else { /* we have a zero byte in the string */
- strncpy(d, "\00", 3); /* escape the zero */
- d = d + 3;
- p++; /* skip the zero */
- }
- s = p; /* move forward */
- }
-
- /* copy the last part (with zero) and return */
- memcpy(d, s, &src[len] - s + 1);
-
- return dst;
-
-failed:
- talloc_free(dst);
- return NULL;
-}
-
-static struct ldb_val ldb_dn_unescape_value(void *mem_ctx, const char *src)
-{
- struct ldb_val value;
- unsigned x;
- char *p, *dst = NULL, *end;
-
- memset(&value, 0, sizeof(value));
-
- LDB_DN_NULL_FAILED(src);
-
- dst = p = (char *)talloc_memdup(mem_ctx, src, strlen(src) + 1);
- LDB_DN_NULL_FAILED(dst);
-
- end = &dst[strlen(dst)];
-
- while (*p) {
- p += strcspn(p, ",=\n+<>#;\\\"");
-
- if (*p == '\\') {
- if (strchr(",=\n+<>#;\\\"", p[1])) {
- memmove(p, p + 1, end - (p + 1) + 1);
- end--;
- p++;
- continue;
- }
-
- if (sscanf(p + 1, "%02x", &x) == 1) {
- *p = (unsigned char)x;
- memmove(p + 1, p + 3, end - (p + 3) + 1);
- end -= 2;
- p++;
- continue;
- }
- }
-
- /* a string with not escaped specials is invalid (tested) */
- if (*p != '\0') {
- goto failed;
- }
- }
-
- value.length = end - dst;
- value.data = (uint8_t *)dst;
- return value;
-
-failed:
- talloc_free(dst);
- return value;
-}
-
-/* check if the string contains quotes
- * skips leading and trailing spaces
- * - returns 0 if no quotes found
- * - returns 1 if quotes are found and put their position
- * in *quote_start and *quote_end parameters
- * - return -1 if there are open quotes
- */
-
-static int get_quotes_position(const char *source, int *quote_start, int *quote_end)
-{
- const char *p;
-
- if (source == NULL || quote_start == NULL || quote_end == NULL) return -1;
-
- p = source;
-
- /* check if there are quotes surrounding the value */
- p += strspn(p, " \n"); /* skip white spaces */
-
- if (*p == '\"') {
- *quote_start = p - source;
-
- p++;
- while (*p != '\"') {
- p = strchr(p, '\"');
- LDB_DN_NULL_FAILED(p);
-
- if (*(p - 1) == '\\')
- p++;
- }
-
- *quote_end = p - source;
- return 1;
- }
-
- return 0;
-
-failed:
- return -1;
-}
-
-static char *seek_to_separator(char *string, const char *separators)
-{
- char *p, *q;
- int ret, qs, qe, escaped;
-
- if (string == NULL || separators == NULL) return NULL;
-
- p = strchr(string, '=');
- LDB_DN_NULL_FAILED(p);
-
- p++;
-
- /* check if there are quotes surrounding the value */
-
- ret = get_quotes_position(p, &qs, &qe);
- if (ret == -1)
- return NULL;
-
- if (ret == 1) { /* quotes found */
-
- p += qe; /* positioning after quotes */
- p += strspn(p, " \n"); /* skip white spaces after the quote */
-
- if (strcspn(p, separators) != 0) /* if there are characters between quotes */
- return NULL; /* and separators, the dn is invalid */
-
- return p; /* return on the separator */
- }
-
- /* no quotes found seek to separators */
- q = p;
- do {
- escaped = 0;
- ret = strcspn(q, separators);
-
- if (q[ret - 1] == '\\') {
- escaped = 1;
- q = q + ret + 1;
- }
- } while (escaped);
-
- if (ret == 0 && p == q) /* no separators ?! bail out */
- return NULL;
-
- return q + ret;
-
-failed:
- return NULL;
-}
-
-static char *ldb_dn_trim_string(char *string, const char *edge)
-{
- char *s, *p;
-
- /* seek out edge from start of string */
- s = string + strspn(string, edge);
-
- /* backwards skip from end of string */
- p = &s[strlen(s) - 1];
- while (p > s && strchr(edge, *p)) {
- *p = '\0';
- p--;
- }
-
- return s;
-}
-
-/* we choosed to not support multpile valued components */
-static struct ldb_dn_component ldb_dn_explode_component(void *mem_ctx, char *raw_component)
-{
- struct ldb_dn_component dc;
- char *p;
- int ret, qs, qe;
-
- memset(&dc, 0, sizeof(dc));
-
- if (raw_component == NULL) {
- return dc;
- }
-
- /* find attribute type/value separator */
- p = strchr(raw_component, '=');
- LDB_DN_NULL_FAILED(p);
-
- *p++ = '\0'; /* terminate name and point to value */
-
- /* copy and trim name in the component */
- dc.name = talloc_strdup(mem_ctx, ldb_dn_trim_string(raw_component, " \n"));
- if (!dc.name)
- return dc;
-
- if (! ldb_valid_attr_name(dc.name)) {
- goto failed;
- }
-
- ret = get_quotes_position(p, &qs, &qe);
-
- switch (ret) {
- case 0: /* no quotes trim the string */
- p = ldb_dn_trim_string(p, " \n");
- dc.value = ldb_dn_unescape_value(mem_ctx, p);
- break;
-
- case 1: /* quotes found get the unquoted string */
- p[qe] = '\0';
- p = p + qs + 1;
- dc.value.length = strlen(p);
- dc.value.data = (uint8_t *)talloc_memdup(mem_ctx, p,
- dc.value.length + 1);
- break;
-
- default: /* mismatched quotes ot other error, bail out */
- goto failed;
- }
-
- if (dc.value.length == 0) {
- goto failed;
- }
-
- return dc;
-
-failed:
- talloc_free(dc.name);
- dc.name = NULL;
- return dc;
-}
-
-struct ldb_dn *ldb_dn_new(void *mem_ctx)
-{
- struct ldb_dn *edn;
-
- edn = talloc(mem_ctx, struct ldb_dn);
- LDB_DN_NULL_FAILED(edn);
-
- /* Initially there are no components */
- edn->comp_num = 0;
- edn->components = NULL;
-
- return edn;
-
-failed:
- return NULL;
-}
-
-/*
- explode a DN string into a ldb_dn structure
-*/
-struct ldb_dn *ldb_dn_explode(void *mem_ctx, const char *dn)
-{
- struct ldb_dn *edn; /* the exploded dn */
- char *pdn, *p;
-
- if (dn == NULL) return NULL;
-
- /* Allocate a structure to hold the exploded DN */
- edn = ldb_dn_new(mem_ctx);
- if (edn == NULL) {
- return NULL;
- }
-
- pdn = NULL;
-
- /* Empty DNs */
- if (dn[0] == '\0') {
- return edn;
- }
-
- /* Special DNs case */
- if (dn[0] == '@') {
- edn->comp_num = 1;
- edn->components = talloc(edn, struct ldb_dn_component);
- if (edn->components == NULL) goto failed;
- edn->components[0].name = talloc_strdup(edn->components, LDB_SPECIAL);
- if (edn->components[0].name == NULL) goto failed;
- edn->components[0].value.data = (uint8_t *)talloc_strdup(edn->components, dn);
- if (edn->components[0].value.data== NULL) goto failed;
- edn->components[0].value.length = strlen(dn);
- return edn;
- }
-
- pdn = p = talloc_strdup(edn, dn);
- LDB_DN_NULL_FAILED(pdn);
-
- /* get the components */
- do {
- char *t;
-
- /* terminate the current component and return pointer to the next one */
- t = seek_to_separator(p, ",;");
- LDB_DN_NULL_FAILED(t);
-
- if (*t) { /* here there is a separator */
- *t = '\0'; /*terminate */
- t++; /* a separtor means another component follows */
- }
-
- /* allocate space to hold the dn component */
- edn->components = talloc_realloc(edn, edn->components,
- struct ldb_dn_component,
- edn->comp_num + 1);
- if (edn->components == NULL)
- goto failed;
-
- /* store the exploded component in the main structure */
- edn->components[edn->comp_num] = ldb_dn_explode_component(edn, p);
- LDB_DN_NULL_FAILED(edn->components[edn->comp_num].name);
-
- edn->comp_num++;
-
- /* jump to the next component if any */
- p = t;
-
- } while(*p);
-
- talloc_free(pdn);
- return edn;
-
-failed:
- talloc_free(pdn);
- talloc_free(edn);
- return NULL;
-}
-
-struct ldb_dn *ldb_dn_explode_or_special(void *mem_ctx, const char *dn)
-{
- struct ldb_dn *edn; /* the exploded dn */
-
- if (dn == NULL) return NULL;
-
- if (strncasecmp(dn, "<GUID=", 6) == 0) {
- /* this is special DN returned when the
- * exploded_dn control is used
- */
-
- /* Allocate a structure to hold the exploded DN */
- if (!(edn = ldb_dn_new(mem_ctx))) {
- return NULL;
- }
-
- edn->comp_num = 1;
- edn->components = talloc(edn, struct ldb_dn_component);
- if (edn->components == NULL) goto failed;
- edn->components[0].name = talloc_strdup(edn->components, LDB_SPECIAL);
- if (edn->components[0].name == NULL) goto failed;
- edn->components[0].value.data = (uint8_t *)talloc_strdup(edn->components, dn);
- if (edn->components[0].value.data== NULL) goto failed;
- edn->components[0].value.length = strlen(dn);
- return edn;
-
- }
-
- return ldb_dn_explode(mem_ctx, dn);
-
-failed:
- talloc_free(edn);
- return NULL;
-}
-
-char *ldb_dn_linearize(void *mem_ctx, const struct ldb_dn *edn)
-{
- char *dn, *value;
- int i;
-
- if (edn == NULL) return NULL;
-
- /* Special DNs */
- if (ldb_dn_is_special(edn)) {
- dn = talloc_strdup(mem_ctx, (char *)edn->components[0].value.data);
- return dn;
- }
-
- dn = talloc_strdup(mem_ctx, "");
- LDB_DN_NULL_FAILED(dn);
-
- for (i = 0; i < edn->comp_num; i++) {
- value = ldb_dn_escape_value(dn, edn->components[i].value);
- LDB_DN_NULL_FAILED(value);
-
- if (i == 0) {
- dn = talloc_asprintf_append(dn, "%s=%s", edn->components[i].name, value);
- } else {
- dn = talloc_asprintf_append(dn, ",%s=%s", edn->components[i].name, value);
- }
- LDB_DN_NULL_FAILED(dn);
-
- talloc_free(value);
- }
-
- return dn;
-
-failed:
- talloc_free(dn);
- return NULL;
-}
-
-/* Determine if dn is below base, in the ldap tree. Used for
- * evaluating a subtree search.
- * 0 if they match, otherwise non-zero
- */
-
-int ldb_dn_compare_base(struct ldb_context *ldb,
- const struct ldb_dn *base,
- const struct ldb_dn *dn)
-{
- int ret;
- int n0, n1;
-
- if (base == NULL || base->comp_num == 0) return 0;
- if (dn == NULL || dn->comp_num == 0) return -1;
-
- /* if the base has more componts than the dn, then they differ */
- if (base->comp_num > dn->comp_num) {
- return (dn->comp_num - base->comp_num);
- }
-
- n0 = base->comp_num - 1;
- n1 = dn->comp_num - 1;
- while (n0 >= 0 && n1 >= 0) {
- const struct ldb_attrib_handler *h;
-
- /* compare names (attribute names are guaranteed to be ASCII only) */
- ret = ldb_attr_cmp(base->components[n0].name,
- dn->components[n1].name);
- if (ret) {
- return ret;
- }
-
- /* names match, compare values */
- h = ldb_attrib_handler(ldb, base->components[n0].name);
- ret = h->comparison_fn(ldb, ldb, &(base->components[n0].value),
- &(dn->components[n1].value));
- if (ret) {
- return ret;
- }
- n1--;
- n0--;
- }
-
- return 0;
-}
-
-/* compare DNs using casefolding compare functions.
-
- If they match, then return 0
- */
-
-int ldb_dn_compare(struct ldb_context *ldb,
- const struct ldb_dn *edn0,
- const struct ldb_dn *edn1)
-{
- if (edn0 == NULL || edn1 == NULL) return edn1 - edn0;
-
- if (edn0->comp_num != edn1->comp_num)
- return (edn1->comp_num - edn0->comp_num);
-
- return ldb_dn_compare_base(ldb, edn0, edn1);
-}
-
-int ldb_dn_cmp(struct ldb_context *ldb, const char *dn0, const char *dn1)
-{
- struct ldb_dn *edn0;
- struct ldb_dn *edn1;
- int ret;
-
- if (dn0 == NULL || dn1 == NULL) return dn1 - dn0;
-
- edn0 = ldb_dn_explode_casefold(ldb, ldb, dn0);
- if (edn0 == NULL) return 1;
-
- edn1 = ldb_dn_explode_casefold(ldb, ldb, dn1);
- if (edn1 == NULL) {
- talloc_free(edn0);
- return -1;
- }
-
- ret = ldb_dn_compare(ldb, edn0, edn1);
-
- talloc_free(edn0);
- talloc_free(edn1);
-
- return ret;
-}
-
-/*
- casefold a dn. We need to casefold the attribute names, and canonicalize
- attribute values of case insensitive attributes.
-*/
-struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn)
-{
- struct ldb_dn *cedn;
- int i, ret;
-
- if (edn == NULL) return NULL;
-
- cedn = ldb_dn_new(mem_ctx);
- if (!cedn) {
- return NULL;
- }
-
- cedn->comp_num = edn->comp_num;
- cedn->components = talloc_array(cedn, struct ldb_dn_component, edn->comp_num);
- if (!cedn->components) {
- talloc_free(cedn);
- return NULL;
- }
-
- for (i = 0; i < edn->comp_num; i++) {
- struct ldb_dn_component dc;
- const struct ldb_attrib_handler *h;
-
- memset(&dc, 0, sizeof(dc));
- dc.name = ldb_attr_casefold(cedn->components, edn->components[i].name);
- if (!dc.name) {
- talloc_free(cedn);
- return NULL;
- }
-
- h = ldb_attrib_handler(ldb, dc.name);
- ret = h->canonicalise_fn(ldb, cedn->components,
- &(edn->components[i].value),
- &(dc.value));
- if (ret != 0) {
- talloc_free(cedn);
- return NULL;
- }
-
- cedn->components[i] = dc;
- }
-
- return cedn;
-}
-
-struct ldb_dn *ldb_dn_explode_casefold(struct ldb_context *ldb, void *mem_ctx, const char *dn)
-{
- struct ldb_dn *edn, *cdn;
-
- if (dn == NULL) return NULL;
-
- edn = ldb_dn_explode(ldb, dn);
- if (edn == NULL) return NULL;
-
- cdn = ldb_dn_casefold(ldb, mem_ctx, edn);
-
- talloc_free(edn);
- return cdn;
-}
-
-char *ldb_dn_linearize_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn)
-{
- struct ldb_dn *cdn;
- char *dn;
-
- if (edn == NULL) return NULL;
-
- /* Special DNs */
- if (ldb_dn_is_special(edn)) {
- dn = talloc_strdup(mem_ctx, (char *)edn->components[0].value.data);
- return dn;
- }
-
- cdn = ldb_dn_casefold(ldb, mem_ctx, edn);
- if (cdn == NULL) return NULL;
-
- dn = ldb_dn_linearize(ldb, cdn);
- if (dn == NULL) {
- talloc_free(cdn);
- return NULL;
- }
-
- talloc_free(cdn);
- return dn;
-}
-
-static struct ldb_dn_component ldb_dn_copy_component(void *mem_ctx, struct ldb_dn_component *src)
-{
- struct ldb_dn_component dst;
-
- memset(&dst, 0, sizeof(dst));
-
- if (src == NULL) {
- return dst;
- }
-
- dst.value = ldb_val_dup(mem_ctx, &(src->value));
- if (dst.value.data == NULL) {
- return dst;
- }
-
- dst.name = talloc_strdup(mem_ctx, src->name);
- if (dst.name == NULL) {
- talloc_free(dst.value.data);
- dst.value.data = NULL;
- }
-
- return dst;
-}
-
-/* Copy a DN but replace the old with the new base DN. */
-struct ldb_dn *ldb_dn_copy_rebase(void *mem_ctx, const struct ldb_dn *old, const struct ldb_dn *old_base, const struct ldb_dn *new_base)
-{
- struct ldb_dn *new_dn;
- int i, offset;
-
- /* Perhaps we don't need to rebase at all? */
- if (!old_base || !new_base) {
- return ldb_dn_copy(mem_ctx, old);
- }
-
- offset = old->comp_num - old_base->comp_num;
- if (!(new_dn = ldb_dn_copy_partial(mem_ctx, new_base,
- offset + new_base->comp_num))) {
- return NULL;
- }
- for (i = 0; i < offset; i++) {
- new_dn->components[i] = ldb_dn_copy_component(new_dn->components, &(old->components[i]));
- }
-
- return new_dn;
-}
-
-/* copy specified number of elements of a dn into a new one
- element are copied from top level up to the unique rdn
- num_el may be greater than dn->comp_num (see ldb_dn_make_child)
-*/
-struct ldb_dn *ldb_dn_copy_partial(void *mem_ctx, const struct ldb_dn *dn, int num_el)
-{
- struct ldb_dn *newdn;
- int i, n, e;
-
- if (dn == NULL) return NULL;
- if (num_el <= 0) return NULL;
-
- newdn = ldb_dn_new(mem_ctx);
- LDB_DN_NULL_FAILED(newdn);
-
- newdn->comp_num = num_el;
- n = newdn->comp_num - 1;
- newdn->components = talloc_array(newdn, struct ldb_dn_component, newdn->comp_num);
- if (newdn->components == NULL) goto failed;
-
- if (dn->comp_num == 0) return newdn;
- e = dn->comp_num - 1;
-
- for (i = 0; i < newdn->comp_num; i++) {
- newdn->components[n - i] = ldb_dn_copy_component(newdn->components,
- &(dn->components[e - i]));
- if ((e - i) == 0) {
- return newdn;
- }
- }
-
- return newdn;
-
-failed:
- talloc_free(newdn);
- return NULL;
-}
-
-struct ldb_dn *ldb_dn_copy(void *mem_ctx, const struct ldb_dn *dn)
-{
- if (dn == NULL) return NULL;
- return ldb_dn_copy_partial(mem_ctx, dn, dn->comp_num);
-}
-
-struct ldb_dn *ldb_dn_get_parent(void *mem_ctx, const struct ldb_dn *dn)
-{
- if (dn == NULL) return NULL;
- return ldb_dn_copy_partial(mem_ctx, dn, dn->comp_num - 1);
-}
-
-struct ldb_dn_component *ldb_dn_build_component(void *mem_ctx, const char *attr,
- const char *val)
-{
- struct ldb_dn_component *dc;
-
- if (attr == NULL || val == NULL) return NULL;
-
- dc = talloc(mem_ctx, struct ldb_dn_component);
- if (dc == NULL) return NULL;
-
- dc->name = talloc_strdup(dc, attr);
- if (dc->name == NULL) {
- talloc_free(dc);
- return NULL;
- }
-
- dc->value.data = (uint8_t *)talloc_strdup(dc, val);
- if (dc->value.data == NULL) {
- talloc_free(dc);
- return NULL;
- }
-
- dc->value.length = strlen(val);
-
- return dc;
-}
-
-struct ldb_dn *ldb_dn_build_child(void *mem_ctx, const char *attr,
- const char * value,
- const struct ldb_dn *base)
-{
- struct ldb_dn *newdn;
- if (! ldb_valid_attr_name(attr)) return NULL;
- if (value == NULL || value == '\0') return NULL;
-
- if (base != NULL) {
- newdn = ldb_dn_copy_partial(mem_ctx, base, base->comp_num + 1);
- LDB_DN_NULL_FAILED(newdn);
- } else {
- newdn = ldb_dn_new(mem_ctx);
- LDB_DN_NULL_FAILED(newdn);
-
- newdn->comp_num = 1;
- newdn->components = talloc_array(newdn, struct ldb_dn_component, newdn->comp_num);
- LDB_DN_NULL_FAILED(newdn->components);
- }
-
- newdn->components[0].name = talloc_strdup(newdn->components, attr);
- LDB_DN_NULL_FAILED(newdn->components[0].name);
-
- newdn->components[0].value.data = (uint8_t *)talloc_strdup(newdn->components, value);
- LDB_DN_NULL_FAILED(newdn->components[0].value.data);
- newdn->components[0].value.length = strlen((char *)newdn->components[0].value.data);
-
- return newdn;
-
-failed:
- talloc_free(newdn);
- return NULL;
-
-}
-
-struct ldb_dn *ldb_dn_compose(void *mem_ctx, const struct ldb_dn *dn1, const struct ldb_dn *dn2)
-{
- int i;
- struct ldb_dn *newdn;
-
- if (dn2 == NULL && dn1 == NULL) {
- return NULL;
- }
-
- if (dn2 == NULL) {
- newdn = ldb_dn_new(mem_ctx);
- LDB_DN_NULL_FAILED(newdn);
-
- newdn->comp_num = dn1->comp_num;
- newdn->components = talloc_array(newdn, struct ldb_dn_component, newdn->comp_num);
- LDB_DN_NULL_FAILED(newdn->components);
- } else {
- int comp_num = dn2->comp_num;
- if (dn1 != NULL) comp_num += dn1->comp_num;
- newdn = ldb_dn_copy_partial(mem_ctx, dn2, comp_num);
- LDB_DN_NULL_FAILED(newdn);
- }
-
- if (dn1 == NULL) {
- return newdn;
- }
-
- for (i = 0; i < dn1->comp_num; i++) {
- newdn->components[i] = ldb_dn_copy_component(newdn->components,
- &(dn1->components[i]));
- if (newdn->components[i].value.data == NULL) {
- goto failed;
- }
- }
-
- return newdn;
-
-failed:
- talloc_free(newdn);
- return NULL;
-}
-
-struct ldb_dn *ldb_dn_string_compose(void *mem_ctx, const struct ldb_dn *base, const char *child_fmt, ...)
-{
- struct ldb_dn *dn, *dn1;
- char *child_str;
- va_list ap;
-
- if (child_fmt == NULL) return NULL;
-
- va_start(ap, child_fmt);
- child_str = talloc_vasprintf(mem_ctx, child_fmt, ap);
- va_end(ap);
-
- if (child_str == NULL) return NULL;
-
- dn1 = ldb_dn_explode(mem_ctx, child_str);
- dn = ldb_dn_compose(mem_ctx, dn1, base);
-
- talloc_free(child_str);
- talloc_free(dn1);
-
- return dn;
-}
-
-/* Create a 'canonical name' string from a DN:
-
- ie dc=samba,dc=org -> samba.org/
- uid=administrator,ou=users,dc=samba,dc=org = samba.org/users/administrator
-
- There are two formats, the EX format has the last / replaced with a newline (\n).
-
-*/
-static char *ldb_dn_canonical(void *mem_ctx, const struct ldb_dn *dn, int ex_format) {
- int i;
- char *cracked = NULL;
-
- /* Walk backwards down the DN, grabbing 'dc' components at first */
- for (i = dn->comp_num - 1 ; i >= 0; i--) {
- if (ldb_attr_cmp(dn->components[i].name, "dc") != 0) {
- break;
- }
- if (cracked) {
- cracked = talloc_asprintf(mem_ctx, "%s.%s",
- ldb_dn_escape_value(mem_ctx, dn->components[i].value),
- cracked);
- } else {
- cracked = ldb_dn_escape_value(mem_ctx, dn->components[i].value);
- }
- if (!cracked) {
- return NULL;
- }
- }
-
- /* Only domain components? Finish here */
- if (i < 0) {
- if (ex_format) {
- cracked = talloc_asprintf(mem_ctx, "%s\n", cracked);
- } else {
- cracked = talloc_asprintf(mem_ctx, "%s/", cracked);
- }
- return cracked;
- }
-
- /* Now walk backwards appending remaining components */
- for (; i > 0; i--) {
- cracked = talloc_asprintf(mem_ctx, "%s/%s", cracked,
- ldb_dn_escape_value(mem_ctx, dn->components[i].value));
- if (!cracked) {
- return NULL;
- }
- }
-
- /* Last one, possibly a newline for the 'ex' format */
- if (ex_format) {
- cracked = talloc_asprintf(mem_ctx, "%s\n%s", cracked,
- ldb_dn_escape_value(mem_ctx, dn->components[i].value));
- } else {
- cracked = talloc_asprintf(mem_ctx, "%s/%s", cracked,
- ldb_dn_escape_value(mem_ctx, dn->components[i].value));
- }
- return cracked;
-}
-
-/* Wrapper functions for the above, for the two different string formats */
-char *ldb_dn_canonical_string(void *mem_ctx, const struct ldb_dn *dn) {
- return ldb_dn_canonical(mem_ctx, dn, 0);
-
-}
-
-char *ldb_dn_canonical_ex_string(void *mem_ctx, const struct ldb_dn *dn) {
- return ldb_dn_canonical(mem_ctx, dn, 1);
-}
-
-int ldb_dn_get_comp_num(const struct ldb_dn *dn)
-{
- return dn->comp_num;
-}
-
-const char *ldb_dn_get_component_name(const struct ldb_dn *dn, unsigned int num)
-{
- if (num >= dn->comp_num) return NULL;
- return dn->components[num].name;
-}
-
-const struct ldb_val *ldb_dn_get_component_val(const struct ldb_dn *dn, unsigned int num)
-{
- if (num >= dn->comp_num) return NULL;
- return &dn->components[num].value;
-}
-
-const char *ldb_dn_get_rdn_name(const struct ldb_dn *dn) {
- if (dn->comp_num == 0) return NULL;
- return dn->components[0].name;
-}
-
-const struct ldb_val *ldb_dn_get_rdn_val(const struct ldb_dn *dn) {
- if (dn->comp_num == 0) return NULL;
- return &dn->components[0].value;
-}
-
-int ldb_dn_set_component(struct ldb_dn *dn, int num, const char *name, const struct ldb_val val)
-{
- char *n;
- struct ldb_val v;
-
- if (num >= dn->comp_num) {
- return LDB_ERR_OTHER;
- }
-
- n = talloc_strdup(dn, name);
- if ( ! n) {
- return LDB_ERR_OTHER;
- }
-
- v.length = val.length;
- v.data = (uint8_t *)talloc_memdup(dn, val.data, v.length+1);
- if ( ! v.data) {
- return LDB_ERR_OTHER;
- }
-
- talloc_free(dn->components[num].name);
- talloc_free(dn->components[num].value.data);
- dn->components[num].name = n;
- dn->components[num].value = v;
-
- return LDB_SUCCESS;
-}
diff --git a/source/lib/ldb/common/ldb_ldif.c b/source/lib/ldb/common/ldb_ldif.c
deleted file mode 100644
index 135ce9eecd9..00000000000
--- a/source/lib/ldb/common/ldb_ldif.c
+++ /dev/null
@@ -1,761 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldif routines
- *
- * Description: ldif pack/unpack routines
- *
- * Author: Andrew Tridgell
- */
-
-/*
- see RFC2849 for the LDIF format definition
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "system/locale.h"
-
-/*
-
-*/
-static int ldb_read_data_file(void *mem_ctx, struct ldb_val *value)
-{
- struct stat statbuf;
- char *buf;
- int count, size, bytes;
- int ret;
- int f;
- const char *fname = (const char *)value->data;
-
- if (strncmp(fname, "file://", 7) != 0) {
- return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
- }
- fname += 7;
-
- f = open(fname, O_RDONLY);
- if (f == -1) {
- return -1;
- }
-
- if (fstat(f, &statbuf) != 0) {
- ret = -1;
- goto done;
- }
-
- if (statbuf.st_size == 0) {
- ret = -1;
- goto done;
- }
-
- value->data = (uint8_t *)talloc_size(mem_ctx, statbuf.st_size + 1);
- if (value->data == NULL) {
- ret = -1;
- goto done;
- }
- value->data[statbuf.st_size] = 0;
-
- count = 0;
- size = statbuf.st_size;
- buf = (char *)value->data;
- while (count < statbuf.st_size) {
- bytes = read(f, buf, size);
- if (bytes == -1) {
- talloc_free(value->data);
- ret = -1;
- goto done;
- }
- count += bytes;
- buf += bytes;
- size -= bytes;
- }
-
- value->length = statbuf.st_size;
- ret = statbuf.st_size;
-
-done:
- close(f);
- return ret;
-}
-
-/*
- this base64 decoder was taken from jitterbug (written by tridge).
- we might need to replace it with a new version
-*/
-int ldb_base64_decode(char *s)
-{
- const char *b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- int bit_offset=0, byte_offset, idx, i, n;
- uint8_t *d = (uint8_t *)s;
- char *p=NULL;
-
- n=i=0;
-
- while (*s && (p=strchr(b64,*s))) {
- idx = (int)(p - b64);
- byte_offset = (i*6)/8;
- bit_offset = (i*6)%8;
- d[byte_offset] &= ~((1<<(8-bit_offset))-1);
- if (bit_offset < 3) {
- d[byte_offset] |= (idx << (2-bit_offset));
- n = byte_offset+1;
- } else {
- d[byte_offset] |= (idx >> (bit_offset-2));
- d[byte_offset+1] = 0;
- d[byte_offset+1] |= (idx << (8-(bit_offset-2))) & 0xFF;
- n = byte_offset+2;
- }
- s++; i++;
- }
- if (bit_offset >= 3) {
- n--;
- }
-
- if (*s && !p) {
- /* the only termination allowed */
- if (*s != '=') {
- return -1;
- }
- }
-
- /* null terminate */
- d[n] = 0;
- return n;
-}
-
-
-/*
- encode as base64
- caller frees
-*/
-char *ldb_base64_encode(void *mem_ctx, const char *buf, int len)
-{
- const char *b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- int bit_offset, byte_offset, idx, i;
- const uint8_t *d = (const uint8_t *)buf;
- int bytes = (len*8 + 5)/6, pad_bytes = (bytes % 4) ? 4 - (bytes % 4) : 0;
- char *out;
-
- out = talloc_array(mem_ctx, char, bytes+pad_bytes+1);
- if (!out) return NULL;
-
- for (i=0;i<bytes;i++) {
- byte_offset = (i*6)/8;
- bit_offset = (i*6)%8;
- if (bit_offset < 3) {
- idx = (d[byte_offset] >> (2-bit_offset)) & 0x3F;
- } else {
- idx = (d[byte_offset] << (bit_offset-2)) & 0x3F;
- if (byte_offset+1 < len) {
- idx |= (d[byte_offset+1] >> (8-(bit_offset-2)));
- }
- }
- out[i] = b64[idx];
- }
-
- for (;i<bytes+pad_bytes;i++)
- out[i] = '=';
- out[i] = 0;
-
- return out;
-}
-
-/*
- see if a buffer should be base64 encoded
-*/
-int ldb_should_b64_encode(const struct ldb_val *val)
-{
- unsigned int i;
- uint8_t *p = val->data;
-
- if (val->length == 0) {
- return 0;
- }
-
- if (p[0] == ' ' || p[0] == ':') {
- return 1;
- }
-
- for (i=0; i<val->length; i++) {
- if (!isprint(p[i]) || p[i] == '\n') {
- return 1;
- }
- }
- return 0;
-}
-
-/* this macro is used to handle the return checking on fprintf_fn() */
-#define CHECK_RET do { if (ret < 0) return ret; total += ret; } while (0)
-
-/*
- write a line folded string onto a file
-*/
-static int fold_string(int (*fprintf_fn)(void *, const char *, ...), void *private_data,
- const char *buf, size_t length, int start_pos)
-{
- unsigned int i;
- int total=0, ret;
-
- for (i=0;i<length;i++) {
- ret = fprintf_fn(private_data, "%c", buf[i]);
- CHECK_RET;
- if (i != (length-1) && (i + start_pos) % 77 == 0) {
- ret = fprintf_fn(private_data, "\n ");
- CHECK_RET;
- }
- }
-
- return total;
-}
-
-#undef CHECK_RET
-
-/*
- encode as base64 to a file
-*/
-static int base64_encode_f(struct ldb_context *ldb,
- int (*fprintf_fn)(void *, const char *, ...),
- void *private_data,
- const char *buf, int len, int start_pos)
-{
- char *b = ldb_base64_encode(ldb, buf, len);
- int ret;
-
- if (!b) {
- return -1;
- }
-
- ret = fold_string(fprintf_fn, private_data, b, strlen(b), start_pos);
-
- talloc_free(b);
- return ret;
-}
-
-
-static const struct {
- const char *name;
- enum ldb_changetype changetype;
-} ldb_changetypes[] = {
- {"add", LDB_CHANGETYPE_ADD},
- {"delete", LDB_CHANGETYPE_DELETE},
- {"modify", LDB_CHANGETYPE_MODIFY},
- {NULL, 0}
-};
-
-/* this macro is used to handle the return checking on fprintf_fn() */
-#define CHECK_RET do { if (ret < 0) { talloc_free(mem_ctx); return ret; } total += ret; } while (0)
-
-/*
- write to ldif, using a caller supplied write method
-*/
-int ldb_ldif_write(struct ldb_context *ldb,
- int (*fprintf_fn)(void *, const char *, ...),
- void *private_data,
- const struct ldb_ldif *ldif)
-{
- TALLOC_CTX *mem_ctx;
- unsigned int i, j;
- int total=0, ret;
- const struct ldb_message *msg;
-
- mem_ctx = talloc_named_const(NULL, 0, "ldb_ldif_write");
-
- msg = ldif->msg;
-
- ret = fprintf_fn(private_data, "dn: %s\n", ldb_dn_linearize(msg->dn, msg->dn));
- CHECK_RET;
-
- if (ldif->changetype != LDB_CHANGETYPE_NONE) {
- for (i=0;ldb_changetypes[i].name;i++) {
- if (ldb_changetypes[i].changetype == ldif->changetype) {
- break;
- }
- }
- if (!ldb_changetypes[i].name) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Error: Invalid ldif changetype %d\n",
- ldif->changetype);
- talloc_free(mem_ctx);
- return -1;
- }
- ret = fprintf_fn(private_data, "changetype: %s\n", ldb_changetypes[i].name);
- CHECK_RET;
- }
-
- for (i=0;i<msg->num_elements;i++) {
- const struct ldb_attrib_handler *h;
-
- h = ldb_attrib_handler(ldb, msg->elements[i].name);
-
- if (ldif->changetype == LDB_CHANGETYPE_MODIFY) {
- switch (msg->elements[i].flags & LDB_FLAG_MOD_MASK) {
- case LDB_FLAG_MOD_ADD:
- fprintf_fn(private_data, "add: %s\n",
- msg->elements[i].name);
- break;
- case LDB_FLAG_MOD_DELETE:
- fprintf_fn(private_data, "delete: %s\n",
- msg->elements[i].name);
- break;
- case LDB_FLAG_MOD_REPLACE:
- fprintf_fn(private_data, "replace: %s\n",
- msg->elements[i].name);
- break;
- }
- }
-
- for (j=0;j<msg->elements[i].num_values;j++) {
- struct ldb_val v;
- ret = h->ldif_write_fn(ldb, mem_ctx, &msg->elements[i].values[j], &v);
- CHECK_RET;
- if (ldb_should_b64_encode(&v)) {
- ret = fprintf_fn(private_data, "%s:: ",
- msg->elements[i].name);
- CHECK_RET;
- ret = base64_encode_f(ldb, fprintf_fn, private_data,
- (char *)v.data, v.length,
- strlen(msg->elements[i].name)+3);
- CHECK_RET;
- ret = fprintf_fn(private_data, "\n");
- CHECK_RET;
- } else {
- ret = fprintf_fn(private_data, "%s: ", msg->elements[i].name);
- CHECK_RET;
- ret = fold_string(fprintf_fn, private_data,
- (char *)v.data, v.length,
- strlen(msg->elements[i].name)+2);
- CHECK_RET;
- ret = fprintf_fn(private_data, "\n");
- CHECK_RET;
- }
- if (v.data != msg->elements[i].values[j].data) {
- talloc_free(v.data);
- }
- }
- if (ldif->changetype == LDB_CHANGETYPE_MODIFY) {
- fprintf_fn(private_data, "-\n");
- }
- }
- ret = fprintf_fn(private_data,"\n");
- CHECK_RET;
-
- return total;
-}
-
-#undef CHECK_RET
-
-
-/*
- pull a ldif chunk, which is defined as a piece of data ending in \n\n or EOF
- this routine removes any RFC2849 continuations and comments
-
- caller frees
-*/
-static char *next_chunk(struct ldb_context *ldb,
- int (*fgetc_fn)(void *), void *private_data)
-{
- size_t alloc_size=0, chunk_size = 0;
- char *chunk = NULL;
- int c;
- int in_comment = 0;
-
- while ((c = fgetc_fn(private_data)) != EOF) {
- if (chunk_size+1 >= alloc_size) {
- char *c2;
- alloc_size += 1024;
- c2 = talloc_realloc(ldb, chunk, char, alloc_size);
- if (!c2) {
- talloc_free(chunk);
- errno = ENOMEM;
- return NULL;
- }
- chunk = c2;
- }
-
- if (in_comment) {
- if (c == '\n') {
- in_comment = 0;
- }
- continue;
- }
-
- /* handle continuation lines - see RFC2849 */
- if (c == ' ' && chunk_size > 1 && chunk[chunk_size-1] == '\n') {
- chunk_size--;
- continue;
- }
-
- /* chunks are terminated by a double line-feed */
- if (c == '\n' && chunk_size > 0 && chunk[chunk_size-1] == '\n') {
- chunk[chunk_size-1] = 0;
- return chunk;
- }
-
- if (c == '#' && (chunk_size == 0 || chunk[chunk_size-1] == '\n')) {
- in_comment = 1;
- continue;
- }
-
- /* ignore leading blank lines */
- if (chunk_size == 0 && c == '\n') {
- continue;
- }
-
- chunk[chunk_size++] = c;
- }
-
- if (chunk) {
- chunk[chunk_size] = 0;
- }
-
- return chunk;
-}
-
-
-/* simple ldif attribute parser */
-static int next_attr(void *mem_ctx, char **s, const char **attr, struct ldb_val *value)
-{
- char *p;
- int base64_encoded = 0;
- int binary_file = 0;
-
- if (strncmp(*s, "-\n", 2) == 0) {
- value->length = 0;
- *attr = "-";
- *s += 2;
- return 0;
- }
-
- p = strchr(*s, ':');
- if (!p) {
- return -1;
- }
-
- *p++ = 0;
-
- if (*p == ':') {
- base64_encoded = 1;
- p++;
- }
-
- if (*p == '<') {
- binary_file = 1;
- p++;
- }
-
- *attr = *s;
-
- while (*p == ' ' || *p == '\t') {
- p++;
- }
-
- value->data = (uint8_t *)p;
-
- p = strchr(p, '\n');
-
- if (!p) {
- value->length = strlen((char *)value->data);
- *s = ((char *)value->data) + value->length;
- } else {
- value->length = p - (char *)value->data;
- *s = p+1;
- *p = 0;
- }
-
- if (base64_encoded) {
- int len = ldb_base64_decode((char *)value->data);
- if (len == -1) {
- /* it wasn't valid base64 data */
- return -1;
- }
- value->length = len;
- }
-
- if (binary_file) {
- int len = ldb_read_data_file(mem_ctx, value);
- if (len == -1) {
- /* an error occured hile trying to retrieve the file */
- return -1;
- }
- }
-
- return 0;
-}
-
-
-/*
- free a message from a ldif_read
-*/
-void ldb_ldif_read_free(struct ldb_context *ldb, struct ldb_ldif *ldif)
-{
- talloc_free(ldif);
-}
-
-/*
- read from a LDIF source, creating a ldb_message
-*/
-struct ldb_ldif *ldb_ldif_read(struct ldb_context *ldb,
- int (*fgetc_fn)(void *), void *private_data)
-{
- struct ldb_ldif *ldif;
- struct ldb_message *msg;
- const char *attr=NULL;
- char *chunk=NULL, *s;
- struct ldb_val value;
- unsigned flags = 0;
-
- value.data = NULL;
-
- ldif = talloc(ldb, struct ldb_ldif);
- if (!ldif) return NULL;
-
- ldif->msg = talloc(ldif, struct ldb_message);
- if (ldif->msg == NULL) {
- talloc_free(ldif);
- return NULL;
- }
-
- ldif->changetype = LDB_CHANGETYPE_NONE;
- msg = ldif->msg;
-
- msg->dn = NULL;
- msg->elements = NULL;
- msg->num_elements = 0;
- msg->private_data = NULL;
-
- chunk = next_chunk(ldb, fgetc_fn, private_data);
- if (!chunk) {
- goto failed;
- }
- talloc_steal(ldif, chunk);
-
- msg->private_data = chunk;
- s = chunk;
-
- if (next_attr(ldif, &s, &attr, &value) != 0) {
- goto failed;
- }
-
- /* first line must be a dn */
- if (ldb_attr_cmp(attr, "dn") != 0) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Error: First line of ldif must be a dn not '%s'\n",
- attr);
- goto failed;
- }
-
- msg->dn = ldb_dn_explode(msg, (char *)value.data);
-
- if (msg->dn == NULL) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Error: Unable to parse dn '%s'\n",
- value.data);
- goto failed;
- }
-
- while (next_attr(ldif, &s, &attr, &value) == 0) {
- const struct ldb_attrib_handler *h;
- struct ldb_message_element *el;
- int ret, empty = 0;
-
- if (ldb_attr_cmp(attr, "changetype") == 0) {
- int i;
- for (i=0;ldb_changetypes[i].name;i++) {
- if (ldb_attr_cmp((char *)value.data, ldb_changetypes[i].name) == 0) {
- ldif->changetype = ldb_changetypes[i].changetype;
- break;
- }
- }
- if (!ldb_changetypes[i].name) {
- ldb_debug(ldb, LDB_DEBUG_ERROR,
- "Error: Bad ldif changetype '%s'\n",(char *)value.data);
- }
- flags = 0;
- continue;
- }
-
- if (ldb_attr_cmp(attr, "add") == 0) {
- flags = LDB_FLAG_MOD_ADD;
- empty = 1;
- }
- if (ldb_attr_cmp(attr, "delete") == 0) {
- flags = LDB_FLAG_MOD_DELETE;
- empty = 1;
- }
- if (ldb_attr_cmp(attr, "replace") == 0) {
- flags = LDB_FLAG_MOD_REPLACE;
- empty = 1;
- }
- if (ldb_attr_cmp(attr, "-") == 0) {
- flags = 0;
- continue;
- }
-
- if (empty) {
- if (ldb_msg_add_empty(msg, (char *)value.data, flags, NULL) != 0) {
- goto failed;
- }
- continue;
- }
-
- el = &msg->elements[msg->num_elements-1];
-
- h = ldb_attrib_handler(ldb, attr);
-
- if (msg->num_elements > 0 && ldb_attr_cmp(attr, el->name) == 0 &&
- flags == el->flags) {
- /* its a continuation */
- el->values =
- talloc_realloc(msg->elements, el->values,
- struct ldb_val, el->num_values+1);
- if (!el->values) {
- goto failed;
- }
- ret = h->ldif_read_fn(ldb, ldif, &value, &el->values[el->num_values]);
- if (ret != 0) {
- goto failed;
- }
- if (value.length == 0) {
- ldb_debug(ldb, LDB_DEBUG_ERROR,
- "Error: Attribute value cannot be empty for attribute '%s'\n", el->name);
- goto failed;
- }
- if (value.data != el->values[el->num_values].data) {
- talloc_steal(el->values, el->values[el->num_values].data);
- }
- el->num_values++;
- } else {
- /* its a new attribute */
- msg->elements = talloc_realloc(ldif, msg->elements,
- struct ldb_message_element,
- msg->num_elements+1);
- if (!msg->elements) {
- goto failed;
- }
- el = &msg->elements[msg->num_elements];
- el->flags = flags;
- el->name = talloc_strdup(msg->elements, attr);
- el->values = talloc(msg->elements, struct ldb_val);
- if (!el->values || !el->name) {
- goto failed;
- }
- el->num_values = 1;
- ret = h->ldif_read_fn(ldb, ldif, &value, &el->values[0]);
- if (ret != 0) {
- goto failed;
- }
- if (value.data != el->values[0].data) {
- talloc_steal(el->values, el->values[0].data);
- }
- msg->num_elements++;
- }
- }
-
- return ldif;
-
-failed:
- talloc_free(ldif);
- return NULL;
-}
-
-
-
-/*
- a wrapper around ldif_read() for reading from FILE*
-*/
-struct ldif_read_file_state {
- FILE *f;
-};
-
-static int fgetc_file(void *private_data)
-{
- struct ldif_read_file_state *state =
- (struct ldif_read_file_state *)private_data;
- return fgetc(state->f);
-}
-
-struct ldb_ldif *ldb_ldif_read_file(struct ldb_context *ldb, FILE *f)
-{
- struct ldif_read_file_state state;
- state.f = f;
- return ldb_ldif_read(ldb, fgetc_file, &state);
-}
-
-
-/*
- a wrapper around ldif_read() for reading from const char*
-*/
-struct ldif_read_string_state {
- const char *s;
-};
-
-static int fgetc_string(void *private_data)
-{
- struct ldif_read_string_state *state =
- (struct ldif_read_string_state *)private_data;
- if (state->s[0] != 0) {
- return *state->s++;
- }
- return EOF;
-}
-
-struct ldb_ldif *ldb_ldif_read_string(struct ldb_context *ldb, const char **s)
-{
- struct ldif_read_string_state state;
- struct ldb_ldif *ldif;
- state.s = *s;
- ldif = ldb_ldif_read(ldb, fgetc_string, &state);
- *s = state.s;
- return ldif;
-}
-
-
-/*
- wrapper around ldif_write() for a file
-*/
-struct ldif_write_file_state {
- FILE *f;
-};
-
-static int fprintf_file(void *private_data, const char *fmt, ...) PRINTF_ATTRIBUTE(2, 3);
-
-static int fprintf_file(void *private_data, const char *fmt, ...)
-{
- struct ldif_write_file_state *state =
- (struct ldif_write_file_state *)private_data;
- int ret;
- va_list ap;
-
- va_start(ap, fmt);
- ret = vfprintf(state->f, fmt, ap);
- va_end(ap);
- return ret;
-}
-
-int ldb_ldif_write_file(struct ldb_context *ldb, FILE *f, const struct ldb_ldif *ldif)
-{
- struct ldif_write_file_state state;
- state.f = f;
- return ldb_ldif_write(ldb, fprintf_file, &state, ldif);
-}
diff --git a/source/lib/ldb/common/ldb_match.c b/source/lib/ldb/common/ldb_match.c
deleted file mode 100644
index 0cd220ad607..00000000000
--- a/source/lib/ldb/common/ldb_match.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004-2005
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb expression matching
- *
- * Description: ldb expression matching
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/*
- check if the scope matches in a search result
-*/
-static int ldb_match_scope(struct ldb_context *ldb,
- const struct ldb_dn *base,
- const struct ldb_dn *dn,
- enum ldb_scope scope)
-{
- int ret = 0;
-
- if (base == NULL || dn == NULL) {
- return 1;
- }
-
- switch (scope) {
- case LDB_SCOPE_BASE:
- if (ldb_dn_compare(ldb, base, dn) == 0) {
- ret = 1;
- }
- break;
-
- case LDB_SCOPE_ONELEVEL:
- if (ldb_dn_get_comp_num(dn) == (ldb_dn_get_comp_num(base) + 1)) {
- if (ldb_dn_compare_base(ldb, base, dn) == 0) {
- ret = 1;
- }
- }
- break;
-
- case LDB_SCOPE_SUBTREE:
- default:
- if (ldb_dn_compare_base(ldb, base, dn) == 0) {
- ret = 1;
- }
- break;
- }
-
- return ret;
-}
-
-
-/*
- match if node is present
-*/
-static int ldb_match_present(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- enum ldb_scope scope)
-{
- if (ldb_attr_dn(tree->u.present.attr) == 0) {
- return 1;
- }
-
- if (ldb_msg_find_element(msg, tree->u.present.attr)) {
- return 1;
- }
-
- return 0;
-}
-
-static int ldb_match_comparison(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- enum ldb_scope scope,
- enum ldb_parse_op comp_op)
-{
- unsigned int i;
- struct ldb_message_element *el;
- const struct ldb_attrib_handler *h;
- int ret;
-
- /* FIXME: APPROX comparison not handled yet */
- if (comp_op == LDB_OP_APPROX) return 0;
-
- el = ldb_msg_find_element(msg, tree->u.comparison.attr);
- if (el == NULL) {
- return 0;
- }
-
- h = ldb_attrib_handler(ldb, el->name);
-
- for (i = 0; i < el->num_values; i++) {
- ret = h->comparison_fn(ldb, ldb, &el->values[i], &tree->u.comparison.value);
-
- if (ret == 0) {
- return 1;
- }
- if (ret > 0 && comp_op == LDB_OP_GREATER) {
- return 1;
- }
- if (ret < 0 && comp_op == LDB_OP_LESS) {
- return 1;
- }
- }
-
- return 0;
-}
-
-/*
- match a simple leaf node
-*/
-static int ldb_match_equality(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- enum ldb_scope scope)
-{
- unsigned int i;
- struct ldb_message_element *el;
- const struct ldb_attrib_handler *h;
- struct ldb_dn *valuedn;
- int ret;
-
- if (ldb_attr_dn(tree->u.equality.attr) == 0) {
- valuedn = ldb_dn_explode_casefold(ldb, ldb,
- (char *)tree->u.equality.value.data);
- if (valuedn == NULL) {
- return 0;
- }
-
- ret = ldb_dn_compare(ldb, msg->dn, valuedn);
-
- talloc_free(valuedn);
-
- if (ret == 0) return 1;
- return 0;
- }
-
- /* TODO: handle the "*" case derived from an extended search
- operation without the attibute type defined */
- el = ldb_msg_find_element(msg, tree->u.equality.attr);
- if (el == NULL) {
- return 0;
- }
-
- h = ldb_attrib_handler(ldb, el->name);
-
- for (i=0;i<el->num_values;i++) {
- if (h->comparison_fn(ldb, ldb, &tree->u.equality.value,
- &el->values[i]) == 0) {
- return 1;
- }
- }
-
- return 0;
-}
-
-static int ldb_wildcard_compare(struct ldb_context *ldb,
- const struct ldb_parse_tree *tree,
- const struct ldb_val value)
-{
- const struct ldb_attrib_handler *h;
- struct ldb_val val;
- struct ldb_val cnk;
- struct ldb_val *chunk;
- char *p, *g;
- uint8_t *save_p = NULL;
- int c = 0;
-
- h = ldb_attrib_handler(ldb, tree->u.substring.attr);
-
- if(h->canonicalise_fn(ldb, ldb, &value, &val) != 0)
- return -1;
-
- save_p = val.data;
- cnk.data = NULL;
-
- if ( ! tree->u.substring.start_with_wildcard ) {
-
- chunk = tree->u.substring.chunks[c];
- if(h->canonicalise_fn(ldb, ldb, chunk, &cnk) != 0) goto failed;
-
- /* This deals with wildcard prefix searches on binary attributes (eg objectGUID) */
- if (cnk.length > val.length) {
- goto failed;
- }
- if (memcmp((char *)val.data, (char *)cnk.data, cnk.length) != 0) goto failed;
- val.length -= cnk.length;
- val.data += cnk.length;
- c++;
- talloc_free(cnk.data);
- cnk.data = NULL;
- }
-
- while (tree->u.substring.chunks[c]) {
-
- chunk = tree->u.substring.chunks[c];
- if(h->canonicalise_fn(ldb, ldb, chunk, &cnk) != 0) goto failed;
-
- /* FIXME: case of embedded nulls */
- p = strstr((char *)val.data, (char *)cnk.data);
- if (p == NULL) goto failed;
- if ( (! tree->u.substring.chunks[c + 1]) && (! tree->u.substring.end_with_wildcard) ) {
- do { /* greedy */
- g = strstr((char *)p + cnk.length, (char *)cnk.data);
- if (g) p = g;
- } while(g);
- }
- val.length = val.length - (p - (char *)(val.data)) - cnk.length;
- val.data = (uint8_t *)(p + cnk.length);
- c++;
- talloc_free(cnk.data);
- cnk.data = NULL;
- }
-
- if ( (! tree->u.substring.end_with_wildcard) && (*(val.data) != 0) ) goto failed; /* last chunk have not reached end of string */
- talloc_free(save_p);
- return 1;
-
-failed:
- talloc_free(save_p);
- talloc_free(cnk.data);
- return 0;
-}
-
-/*
- match a simple leaf node
-*/
-static int ldb_match_substring(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- enum ldb_scope scope)
-{
- unsigned int i;
- struct ldb_message_element *el;
-
- el = ldb_msg_find_element(msg, tree->u.substring.attr);
- if (el == NULL) {
- return 0;
- }
-
- for (i = 0; i < el->num_values; i++) {
- if (ldb_wildcard_compare(ldb, tree, el->values[i]) == 1) {
- return 1;
- }
- }
-
- return 0;
-}
-
-
-/*
- bitwise-and comparator
-*/
-static int ldb_comparator_and(const struct ldb_val *v1, const struct ldb_val *v2)
-{
- uint64_t i1, i2;
- i1 = strtoull((char *)v1->data, NULL, 0);
- i2 = strtoull((char *)v2->data, NULL, 0);
- return ((i1 & i2) == i2);
-}
-
-/*
- bitwise-or comparator
-*/
-static int ldb_comparator_or(const struct ldb_val *v1, const struct ldb_val *v2)
-{
- uint64_t i1, i2;
- i1 = strtoull((char *)v1->data, NULL, 0);
- i2 = strtoull((char *)v2->data, NULL, 0);
- return ((i1 & i2) != 0);
-}
-
-
-/*
- extended match, handles things like bitops
-*/
-static int ldb_match_extended(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- enum ldb_scope scope)
-{
- int i;
- const struct {
- const char *oid;
- int (*comparator)(const struct ldb_val *, const struct ldb_val *);
- } rules[] = {
- { LDB_OID_COMPARATOR_AND, ldb_comparator_and},
- { LDB_OID_COMPARATOR_OR, ldb_comparator_or}
- };
- int (*comp)(const struct ldb_val *, const struct ldb_val *) = NULL;
- struct ldb_message_element *el;
-
- if (tree->u.extended.dnAttributes) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "ldb: dnAttributes extended match not supported yet");
- return -1;
- }
- if (tree->u.extended.rule_id == NULL) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "ldb: no-rule extended matches not supported yet");
- return -1;
- }
- if (tree->u.extended.attr == NULL) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "ldb: no-attribute extended matches not supported yet");
- return -1;
- }
-
- for (i=0;i<ARRAY_SIZE(rules);i++) {
- if (strcmp(rules[i].oid, tree->u.extended.rule_id) == 0) {
- comp = rules[i].comparator;
- break;
- }
- }
- if (comp == NULL) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "ldb: unknown extended rule_id %s\n",
- tree->u.extended.rule_id);
- return -1;
- }
-
- /* find the message element */
- el = ldb_msg_find_element(msg, tree->u.extended.attr);
- if (el == NULL) {
- return 0;
- }
-
- for (i=0;i<el->num_values;i++) {
- int ret = comp(&el->values[i], &tree->u.extended.value);
- if (ret == -1 || ret == 1) return ret;
- }
-
- return 0;
-}
-
-/*
- return 0 if the given parse tree matches the given message. Assumes
- the message is in sorted order
-
- return 1 if it matches, and 0 if it doesn't match
-
- this is a recursive function, and does short-circuit evaluation
- */
-static int ldb_match_message(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- enum ldb_scope scope)
-{
- unsigned int i;
- int v;
-
- switch (tree->operation) {
- case LDB_OP_AND:
- for (i=0;i<tree->u.list.num_elements;i++) {
- v = ldb_match_message(ldb, msg, tree->u.list.elements[i], scope);
- if (!v) return 0;
- }
- return 1;
-
- case LDB_OP_OR:
- for (i=0;i<tree->u.list.num_elements;i++) {
- v = ldb_match_message(ldb, msg, tree->u.list.elements[i], scope);
- if (v) return 1;
- }
- return 0;
-
- case LDB_OP_NOT:
- return ! ldb_match_message(ldb, msg, tree->u.isnot.child, scope);
-
- case LDB_OP_EQUALITY:
- return ldb_match_equality(ldb, msg, tree, scope);
-
- case LDB_OP_SUBSTRING:
- return ldb_match_substring(ldb, msg, tree, scope);
-
- case LDB_OP_GREATER:
- return ldb_match_comparison(ldb, msg, tree, scope, LDB_OP_GREATER);
-
- case LDB_OP_LESS:
- return ldb_match_comparison(ldb, msg, tree, scope, LDB_OP_LESS);
-
- case LDB_OP_PRESENT:
- return ldb_match_present(ldb, msg, tree, scope);
-
- case LDB_OP_APPROX:
- return ldb_match_comparison(ldb, msg, tree, scope, LDB_OP_APPROX);
-
- case LDB_OP_EXTENDED:
- return ldb_match_extended(ldb, msg, tree, scope);
-
- }
-
- return 0;
-}
-
-int ldb_match_msg(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- const struct ldb_dn *base,
- enum ldb_scope scope)
-{
- if ( ! ldb_match_scope(ldb, base, msg->dn, scope) ) {
- return 0;
- }
-
- return ldb_match_message(ldb, msg, tree, scope);
-}
diff --git a/source/lib/ldb/common/ldb_modules.c b/source/lib/ldb/common/ldb_modules.c
deleted file mode 100644
index a6997b324a1..00000000000
--- a/source/lib/ldb/common/ldb_modules.c
+++ /dev/null
@@ -1,452 +0,0 @@
-
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb modules core
- *
- * Description: core modules routines
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#if (_SAMBA_BUILD_ >= 4)
-#include "build.h"
-#include "dynconfig.h"
-#endif
-
-#define LDB_MODULE_PREFIX "modules:"
-#define LDB_MODULE_PREFIX_LEN 8
-
-static char *ldb_modules_strdup_no_spaces(TALLOC_CTX *mem_ctx, const char *string)
-{
- int i, len;
- char *trimmed;
-
- trimmed = talloc_strdup(mem_ctx, string);
- if (!trimmed) {
- return NULL;
- }
-
- len = strlen(trimmed);
- for (i = 0; trimmed[i] != '\0'; i++) {
- switch (trimmed[i]) {
- case ' ':
- case '\t':
- case '\n':
- memmove(&trimmed[i], &trimmed[i + 1], len -i -1);
- break;
- }
- }
-
- return trimmed;
-}
-
-
-/* modules are called in inverse order on the stack.
- Lets place them as an admin would think the right order is.
- Modules order is important */
-const char **ldb_modules_list_from_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, const char *string)
-{
- char **modules = NULL;
- const char **m;
- char *modstr, *p;
- int i;
-
- /* spaces not admitted */
- modstr = ldb_modules_strdup_no_spaces(mem_ctx, string);
- if ( ! modstr) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "Out of Memory in ldb_modules_strdup_no_spaces()\n");
- return NULL;
- }
-
- modules = talloc_realloc(mem_ctx, modules, char *, 2);
- if ( ! modules ) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "Out of Memory in ldb_modules_list_from_string()\n");
- talloc_free(modstr);
- return NULL;
- }
- talloc_steal(modules, modstr);
-
- i = 0;
- /* The str*r*chr walks backwards: This is how we get the inverse order mentioned above */
- while ((p = strrchr(modstr, ',')) != NULL) {
- *p = '\0';
- p++;
- modules[i] = p;
-
- i++;
- modules = talloc_realloc(mem_ctx, modules, char *, i + 2);
- if ( ! modules ) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "Out of Memory in ldb_modules_list_from_string()\n");
- return NULL;
- }
-
- }
- modules[i] = modstr;
-
- modules[i + 1] = NULL;
-
- m = (const char **)modules;
-
- return m;
-}
-
-static struct ops_list_entry {
- const struct ldb_module_ops *ops;
- struct ops_list_entry *next;
-} *registered_modules = NULL;
-
-static const struct ldb_module_ops *ldb_find_module_ops(const char *name)
-{
- struct ops_list_entry *e;
-
- for (e = registered_modules; e; e = e->next) {
- if (strcmp(e->ops->name, name) == 0)
- return e->ops;
- }
-
- return NULL;
-}
-
-#ifndef STATIC_ldb_MODULES
-
-#ifdef HAVE_LDB_LDAP
-#define LDAP_INIT ldb_ldap_init,
-#else
-#define LDAP_INIT
-#endif
-
-#ifdef HAVE_LDB_SQLITE3
-#define SQLITE3_INIT ldb_sqlite3_init,
-#else
-#define SQLITE3_INIT
-#endif
-
-#define STATIC_ldb_MODULES \
- { \
- LDAP_INIT \
- SQLITE3_INIT \
- ldb_tdb_init, \
- ldb_operational_init, \
- ldb_rdn_name_init, \
- ldb_objectclass_init, \
- ldb_paged_results_init, \
- ldb_sort_init, \
- ldb_asq_init, \
- NULL \
- }
-#endif
-
-int ldb_global_init(void)
-{
- static int (*static_init_fns[])(void) = STATIC_ldb_MODULES;
-
- static int initialized = 0;
- int ret = 0, i;
-
- if (initialized)
- return 0;
-
- initialized = 1;
-
- for (i = 0; static_init_fns[i]; i++) {
- if (static_init_fns[i]() == -1)
- ret = -1;
- }
-
- return ret;
-}
-
-int ldb_register_module(const struct ldb_module_ops *ops)
-{
- struct ops_list_entry *entry = talloc(talloc_autofree_context(), struct ops_list_entry);
-
- if (ldb_find_module_ops(ops->name) != NULL)
- return -1;
-
- if (entry == NULL)
- return -1;
-
- entry->ops = ops;
- entry->next = registered_modules;
- registered_modules = entry;
-
- return 0;
-}
-
-int ldb_try_load_dso(struct ldb_context *ldb, const char *name)
-{
- char *path;
- void *handle;
- int (*init_fn) (void);
- char *modulesdir;
-
-#ifdef HAVE_DLOPEN
- if (getenv("LD_LDB_MODULE_PATH") != NULL) {
- modulesdir = talloc_strdup(ldb, getenv("LD_LDB_MODULE_PATH"));
- } else {
-#ifdef _SAMBA_BUILD_
- modulesdir = talloc_asprintf(ldb, "%s/ldb", dyn_MODULESDIR);
-#else
- modulesdir = talloc_strdup(ldb, MODULESDIR);
-#endif
- }
-
- path = talloc_asprintf(ldb, "%s/%s.%s", modulesdir, name, SHLIBEXT);
-
- talloc_free(modulesdir);
-
- ldb_debug(ldb, LDB_DEBUG_TRACE, "trying to load %s from %s\n", name, path);
-
- handle = dlopen(path, RTLD_NOW);
- if (handle == NULL) {
- ldb_debug(ldb, LDB_DEBUG_WARNING, "unable to load %s from %s: %s\n", name, path, dlerror());
- return -1;
- }
-
- init_fn = (int (*)(void))dlsym(handle, "init_module");
-
- if (init_fn == NULL) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "no symbol `init_module' found in %s: %s\n", path, dlerror());
- return -1;
- }
-
- talloc_free(path);
-
- return init_fn();
-#else
- ldb_debug(ldb, LDB_DEBUG_TRACE, "no dlopen() - not trying to load %s module\n", name);
- return -1;
-#endif
-}
-
-int ldb_load_modules_list(struct ldb_context *ldb, const char **module_list, struct ldb_module *backend, struct ldb_module **out)
-{
- struct ldb_module *module;
- int i;
-
- module = backend;
-
- for (i = 0; module_list[i] != NULL; i++) {
- struct ldb_module *current;
- const struct ldb_module_ops *ops;
-
- ops = ldb_find_module_ops(module_list[i]);
- if (ops == NULL) {
- if (ldb_try_load_dso(ldb, module_list[i]) == 0) {
- ops = ldb_find_module_ops(module_list[i]);
- }
- }
-
- if (ops == NULL) {
- ldb_debug(ldb, LDB_DEBUG_WARNING, "WARNING: Module [%s] not found\n",
- module_list[i]);
- continue;
- }
-
- current = talloc_zero(ldb, struct ldb_module);
- if (current == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- talloc_set_name(current, "ldb_module: %s", module_list[i]);
-
- current->ldb = ldb;
- current->ops = ops;
-
- DLIST_ADD(module, current);
- }
- *out = module;
- return LDB_SUCCESS;
-}
-
-int ldb_init_module_chain(struct ldb_context *ldb, struct ldb_module *module)
-{
- while (module && module->ops->init_context == NULL)
- module = module->next;
-
- if (module && module->ops->init_context &&
- module->ops->init_context(module) != LDB_SUCCESS) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "module initialization failed\n");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- return LDB_SUCCESS;
-}
-
-int ldb_load_modules(struct ldb_context *ldb, const char *options[])
-{
- const char **modules = NULL;
- int i;
- int ret;
- TALLOC_CTX *mem_ctx = talloc_new(ldb);
- if (!mem_ctx) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* find out which modules we are requested to activate */
-
- /* check if we have a custom module list passd as ldb option */
- if (options) {
- for (i = 0; options[i] != NULL; i++) {
- if (strncmp(options[i], LDB_MODULE_PREFIX, LDB_MODULE_PREFIX_LEN) == 0) {
- modules = ldb_modules_list_from_string(ldb, mem_ctx, &options[i][LDB_MODULE_PREFIX_LEN]);
- }
- }
- }
-
- /* if not overloaded by options and the backend is not ldap try to load the modules list from ldb */
- if ((modules == NULL) && (strcmp("ldap", ldb->modules->ops->name) != 0)) {
- const char * const attrs[] = { "@LIST" , NULL};
- struct ldb_result *res = NULL;
- struct ldb_dn *mods_dn;
-
- mods_dn = ldb_dn_explode(mem_ctx, "@MODULES");
- if (mods_dn == NULL) {
- talloc_free(mem_ctx);
- return -1;
- }
-
- ret = ldb_search(ldb, mods_dn, LDB_SCOPE_BASE, "", attrs, &res);
- talloc_steal(mods_dn, res);
- if (ret == LDB_SUCCESS && (res->count == 0 || res->msgs[0]->num_elements == 0)) {
- ldb_debug(ldb, LDB_DEBUG_TRACE, "no modules required by the db\n");
- } else {
- if (ret != LDB_SUCCESS) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "ldb error (%s) occurred searching for modules, bailing out\n", ldb_errstring(ldb));
- talloc_free(mem_ctx);
- return -1;
- }
- if (res->count > 1) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "Too many records found (%d), bailing out\n", res->count);
- talloc_free(mem_ctx);
- return -1;
- }
-
- modules = ldb_modules_list_from_string(ldb, mem_ctx,
- (const char *)res->msgs[0]->elements[0].values[0].data);
-
- }
-
- talloc_free(mods_dn);
- }
-
- if (modules != NULL) {
- ret = ldb_load_modules_list(ldb, modules, ldb->modules, &ldb->modules);
- talloc_free(modules);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- } else {
- ldb_debug(ldb, LDB_DEBUG_TRACE, "No modules specified for this database\n");
- }
-
- return ldb_init_module_chain(ldb, ldb->modules);
-}
-
-/*
- by using this we allow ldb modules to only implement the functions they care about,
- which makes writing a module simpler, and makes it more likely to keep working
- when ldb is extended
-*/
-#define FIND_OP(module, op) do { \
- struct ldb_context *ldb = module->ldb; \
- module = module->next; \
- while (module && module->ops->op == NULL) module = module->next; \
- if (module == NULL) { \
- ldb_asprintf_errstring(ldb, "Unable to find backend operation for " #op ); \
- return LDB_ERR_OPERATIONS_ERROR; \
- } \
-} while (0)
-
-
-/*
- helper functions to call the next module in chain
-*/
-
-int ldb_next_request(struct ldb_module *module, struct ldb_request *request)
-{
- switch (request->operation) {
- case LDB_SEARCH:
- FIND_OP(module, search);
- return module->ops->search(module, request);
- case LDB_ADD:
- FIND_OP(module, add);
- return module->ops->add(module, request);
- case LDB_MODIFY:
- FIND_OP(module, modify);
- return module->ops->modify(module, request);
- case LDB_DELETE:
- FIND_OP(module, del);
- return module->ops->del(module, request);
- case LDB_RENAME:
- FIND_OP(module, rename);
- return module->ops->rename(module, request);
- case LDB_SEQUENCE_NUMBER:
- FIND_OP(module, sequence_number);
- return module->ops->sequence_number(module, request);
- default:
- FIND_OP(module, request);
- return module->ops->request(module, request);
- }
-}
-
-int ldb_next_init(struct ldb_module *module)
-{
- /* init is different in that it is not an error if modules
- * do not require initialization */
-
- module = module->next;
-
- while (module && module->ops->init_context == NULL)
- module = module->next;
-
- if (module == NULL)
- return LDB_SUCCESS;
-
- return module->ops->init_context(module);
-}
-
-int ldb_next_start_trans(struct ldb_module *module)
-{
- FIND_OP(module, start_transaction);
- return module->ops->start_transaction(module);
-}
-
-int ldb_next_end_trans(struct ldb_module *module)
-{
- FIND_OP(module, end_transaction);
- return module->ops->end_transaction(module);
-}
-
-int ldb_next_del_trans(struct ldb_module *module)
-{
- FIND_OP(module, del_transaction);
- return module->ops->del_transaction(module);
-}
diff --git a/source/lib/ldb/common/ldb_msg.c b/source/lib/ldb/common/ldb_msg.c
deleted file mode 100644
index bf217d2787f..00000000000
--- a/source/lib/ldb/common/ldb_msg.c
+++ /dev/null
@@ -1,830 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb message component utility functions
- *
- * Description: functions for manipulating ldb_message structures
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-void ldb_dump_results(struct ldb_context *ldb, struct ldb_result *result, FILE *f);
-int ldb_msg_element_compare_name(struct ldb_message_element *el1,
- struct ldb_message_element *el2);
-
-/*
- create a new ldb_message in a given memory context (NULL for top level)
-*/
-struct ldb_message *ldb_msg_new(void *mem_ctx)
-{
- return talloc_zero(mem_ctx, struct ldb_message);
-}
-
-/*
- find an element in a message by attribute name
-*/
-struct ldb_message_element *ldb_msg_find_element(const struct ldb_message *msg,
- const char *attr_name)
-{
- unsigned int i;
- for (i=0;i<msg->num_elements;i++) {
- if (ldb_attr_cmp(msg->elements[i].name, attr_name) == 0) {
- return &msg->elements[i];
- }
- }
- return NULL;
-}
-
-/*
- see if two ldb_val structures contain exactly the same data
- return 1 for a match, 0 for a mis-match
-*/
-int ldb_val_equal_exact(const struct ldb_val *v1, const struct ldb_val *v2)
-{
- if (v1->length != v2->length) return 0;
-
- if (v1->length == 0) return 1;
-
- if (memcmp(v1->data, v2->data, v1->length) == 0) {
- return 1;
- }
-
- return 0;
-}
-
-/*
- find a value in an element
- assumes case sensitive comparison
-*/
-struct ldb_val *ldb_msg_find_val(const struct ldb_message_element *el,
- struct ldb_val *val)
-{
- unsigned int i;
- for (i=0;i<el->num_values;i++) {
- if (ldb_val_equal_exact(val, &el->values[i])) {
- return &el->values[i];
- }
- }
- return NULL;
-}
-
-/*
- duplicate a ldb_val structure
-*/
-struct ldb_val ldb_val_dup(void *mem_ctx, const struct ldb_val *v)
-{
- struct ldb_val v2;
- v2.length = v->length;
- if (v->data == NULL) {
- v2.data = NULL;
- return v2;
- }
-
- /* the +1 is to cope with buggy C library routines like strndup
- that look one byte beyond */
- v2.data = talloc_array(mem_ctx, uint8_t, v->length+1);
- if (!v2.data) {
- v2.length = 0;
- return v2;
- }
-
- memcpy(v2.data, v->data, v->length);
- ((char *)v2.data)[v->length] = 0;
- return v2;
-}
-
-/*
- add an empty element to a message
-*/
-int ldb_msg_add_empty( struct ldb_message *msg,
- const char *attr_name,
- int flags,
- struct ldb_message_element **return_el)
-{
- struct ldb_message_element *els;
-
- if (! ldb_valid_attr_name(attr_name)) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- els = talloc_realloc(msg, msg->elements,
- struct ldb_message_element, msg->num_elements+1);
- if (!els) {
- errno = ENOMEM;
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- els[msg->num_elements].values = NULL;
- els[msg->num_elements].num_values = 0;
- els[msg->num_elements].flags = flags;
- els[msg->num_elements].name = talloc_strdup(els, attr_name);
- if (!els[msg->num_elements].name) {
- errno = ENOMEM;
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->elements = els;
- msg->num_elements++;
-
- if (return_el) {
- *return_el = &els[msg->num_elements-1];
- }
-
- return LDB_SUCCESS;
-}
-
-/*
- add an empty element to a message
-*/
-int ldb_msg_add(struct ldb_message *msg,
- const struct ldb_message_element *el,
- int flags)
-{
- if (ldb_msg_add_empty(msg, el->name, flags, NULL) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->elements[msg->num_elements-1] = *el;
- msg->elements[msg->num_elements-1].flags = flags;
-
- return LDB_SUCCESS;
-}
-
-/*
- add a value to a message
-*/
-int ldb_msg_add_value(struct ldb_message *msg,
- const char *attr_name,
- const struct ldb_val *val,
- struct ldb_message_element **return_el)
-{
- struct ldb_message_element *el;
- struct ldb_val *vals;
- int ret;
-
- el = ldb_msg_find_element(msg, attr_name);
- if (!el) {
- ret = ldb_msg_add_empty(msg, attr_name, 0, &el);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- vals = talloc_realloc(msg, el->values, struct ldb_val, el->num_values+1);
- if (!vals) {
- errno = ENOMEM;
- return LDB_ERR_OPERATIONS_ERROR;
- }
- el->values = vals;
- el->values[el->num_values] = *val;
- el->num_values++;
-
- if (return_el) {
- *return_el = el;
- }
-
- return LDB_SUCCESS;
-}
-
-
-/*
- add a value to a message, stealing it into the 'right' place
-*/
-int ldb_msg_add_steal_value(struct ldb_message *msg,
- const char *attr_name,
- struct ldb_val *val)
-{
- int ret;
- struct ldb_message_element *el;
-
- ret = ldb_msg_add_value(msg, attr_name, val, &el);
- if (ret == LDB_SUCCESS) {
- talloc_steal(el->values, val->data);
- }
- return ret;
-}
-
-
-/*
- add a string element to a message
-*/
-int ldb_msg_add_string(struct ldb_message *msg,
- const char *attr_name, const char *str)
-{
- struct ldb_val val;
-
- val.data = discard_const_p(uint8_t, str);
- val.length = strlen(str);
-
- if (val.length == 0) {
- /* allow empty strings as non-existant attributes */
- return LDB_SUCCESS;
- }
-
- return ldb_msg_add_value(msg, attr_name, &val, NULL);
-}
-
-/*
- add a string element to a message, stealing it into the 'right' place
-*/
-int ldb_msg_add_steal_string(struct ldb_message *msg,
- const char *attr_name, char *str)
-{
- struct ldb_val val;
-
- val.data = (uint8_t *)str;
- val.length = strlen(str);
-
- return ldb_msg_add_steal_value(msg, attr_name, &val);
-}
-
-/*
- add a printf formatted element to a message
-*/
-int ldb_msg_add_fmt(struct ldb_message *msg,
- const char *attr_name, const char *fmt, ...)
-{
- struct ldb_val val;
- va_list ap;
- char *str;
-
- va_start(ap, fmt);
- str = talloc_vasprintf(msg, fmt, ap);
- va_end(ap);
-
- if (str == NULL) return LDB_ERR_OPERATIONS_ERROR;
-
- val.data = (uint8_t *)str;
- val.length = strlen(str);
-
- return ldb_msg_add_steal_value(msg, attr_name, &val);
-}
-
-/*
- compare two ldb_message_element structures
- assumes case senistive comparison
-*/
-int ldb_msg_element_compare(struct ldb_message_element *el1,
- struct ldb_message_element *el2)
-{
- unsigned int i;
-
- if (el1->num_values != el2->num_values) {
- return el1->num_values - el2->num_values;
- }
-
- for (i=0;i<el1->num_values;i++) {
- if (!ldb_msg_find_val(el2, &el1->values[i])) {
- return -1;
- }
- }
-
- return 0;
-}
-
-/*
- compare two ldb_message_element structures
- comparing by element name
-*/
-int ldb_msg_element_compare_name(struct ldb_message_element *el1,
- struct ldb_message_element *el2)
-{
- return ldb_attr_cmp(el1->name, el2->name);
-}
-
-/*
- convenience functions to return common types from a message
- these return the first value if the attribute is multi-valued
-*/
-const struct ldb_val *ldb_msg_find_ldb_val(const struct ldb_message *msg, const char *attr_name)
-{
- struct ldb_message_element *el = ldb_msg_find_element(msg, attr_name);
- if (!el || el->num_values == 0) {
- return NULL;
- }
- return &el->values[0];
-}
-
-int ldb_msg_find_attr_as_int(const struct ldb_message *msg,
- const char *attr_name,
- int default_value)
-{
- const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return default_value;
- }
- return strtol((const char *)v->data, NULL, 0);
-}
-
-unsigned int ldb_msg_find_attr_as_uint(const struct ldb_message *msg,
- const char *attr_name,
- unsigned int default_value)
-{
- const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return default_value;
- }
- return strtoul((const char *)v->data, NULL, 0);
-}
-
-int64_t ldb_msg_find_attr_as_int64(const struct ldb_message *msg,
- const char *attr_name,
- int64_t default_value)
-{
- const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return default_value;
- }
- return strtoll((const char *)v->data, NULL, 0);
-}
-
-uint64_t ldb_msg_find_attr_as_uint64(const struct ldb_message *msg,
- const char *attr_name,
- uint64_t default_value)
-{
- const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return default_value;
- }
- return strtoull((const char *)v->data, NULL, 0);
-}
-
-double ldb_msg_find_attr_as_double(const struct ldb_message *msg,
- const char *attr_name,
- double default_value)
-{
- const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return default_value;
- }
- return strtod((const char *)v->data, NULL);
-}
-
-int ldb_msg_find_attr_as_bool(const struct ldb_message *msg,
- const char *attr_name,
- int default_value)
-{
- const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return default_value;
- }
- if (strcasecmp((const char *)v->data, "FALSE") == 0) {
- return 0;
- }
- if (strcasecmp((const char *)v->data, "TRUE") == 0) {
- return 1;
- }
- return default_value;
-}
-
-const char *ldb_msg_find_attr_as_string(const struct ldb_message *msg,
- const char *attr_name,
- const char *default_value)
-{
- const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return default_value;
- }
- return (const char *)v->data;
-}
-
-struct ldb_dn *ldb_msg_find_attr_as_dn(void *mem_ctx,
- const struct ldb_message *msg,
- const char *attr_name)
-{
- const struct ldb_val *v;
-
- v = ldb_msg_find_ldb_val(msg, attr_name);
- if (!v || !v->data) {
- return NULL;
- }
- return ldb_dn_explode(mem_ctx, (const char *)v->data);
-}
-
-/*
- sort the elements of a message by name
-*/
-void ldb_msg_sort_elements(struct ldb_message *msg)
-{
- qsort(msg->elements, msg->num_elements, sizeof(struct ldb_message_element),
- (comparison_fn_t)ldb_msg_element_compare_name);
-}
-
-/*
- shallow copy a message - copying only the elements array so that the caller
- can safely add new elements without changing the message
-*/
-struct ldb_message *ldb_msg_copy_shallow(TALLOC_CTX *mem_ctx,
- const struct ldb_message *msg)
-{
- struct ldb_message *msg2;
- int i;
-
- msg2 = talloc(mem_ctx, struct ldb_message);
- if (msg2 == NULL) return NULL;
-
- *msg2 = *msg;
- msg2->private_data = NULL;
-
- msg2->elements = talloc_array(msg2, struct ldb_message_element,
- msg2->num_elements);
- if (msg2->elements == NULL) goto failed;
-
- for (i=0;i<msg2->num_elements;i++) {
- msg2->elements[i] = msg->elements[i];
- }
-
- return msg2;
-
-failed:
- talloc_free(msg2);
- return NULL;
-}
-
-
-/*
- copy a message, allocating new memory for all parts
-*/
-struct ldb_message *ldb_msg_copy(TALLOC_CTX *mem_ctx,
- const struct ldb_message *msg)
-{
- struct ldb_message *msg2;
- int i, j;
-
- msg2 = ldb_msg_copy_shallow(mem_ctx, msg);
- if (msg2 == NULL) return NULL;
-
- msg2->dn = ldb_dn_copy(msg2, msg2->dn);
- if (msg2->dn == NULL) goto failed;
-
- for (i=0;i<msg2->num_elements;i++) {
- struct ldb_message_element *el = &msg2->elements[i];
- struct ldb_val *values = el->values;
- el->name = talloc_strdup(msg2->elements, el->name);
- if (el->name == NULL) goto failed;
- el->values = talloc_array(msg2->elements, struct ldb_val, el->num_values);
- for (j=0;j<el->num_values;j++) {
- el->values[j] = ldb_val_dup(el->values, &values[j]);
- if (el->values[j].data == NULL && values[j].length != 0) {
- goto failed;
- }
- }
- }
-
- return msg2;
-
-failed:
- talloc_free(msg2);
- return NULL;
-}
-
-
-/*
- canonicalise a message, merging elements of the same name
-*/
-struct ldb_message *ldb_msg_canonicalize(struct ldb_context *ldb,
- const struct ldb_message *msg)
-{
- int i;
- struct ldb_message *msg2;
-
- msg2 = ldb_msg_copy(ldb, msg);
- if (msg2 == NULL) return NULL;
-
- ldb_msg_sort_elements(msg2);
-
- for (i=1;i<msg2->num_elements;i++) {
- struct ldb_message_element *el1 = &msg2->elements[i-1];
- struct ldb_message_element *el2 = &msg2->elements[i];
- if (ldb_msg_element_compare_name(el1, el2) == 0) {
- el1->values = talloc_realloc(msg2->elements, el1->values, struct ldb_val,
- el1->num_values + el2->num_values);
- if (el1->values == NULL) {
- return NULL;
- }
- memcpy(el1->values + el1->num_values,
- el2->values,
- sizeof(struct ldb_val) * el2->num_values);
- el1->num_values += el2->num_values;
- talloc_free(discard_const_p(char, el2->name));
- if (i+1<msg2->num_elements) {
- memmove(el2, el2+1, sizeof(struct ldb_message_element) *
- (msg2->num_elements - (i+1)));
- }
- msg2->num_elements--;
- i--;
- }
- }
-
- return msg2;
-}
-
-
-/*
- return a ldb_message representing the differences between msg1 and msg2. If you
- then use this in a ldb_modify() call it can be used to save edits to a message
-*/
-struct ldb_message *ldb_msg_diff(struct ldb_context *ldb,
- struct ldb_message *msg1,
- struct ldb_message *msg2)
-{
- struct ldb_message *mod;
- struct ldb_message_element *el;
- unsigned int i;
-
- mod = ldb_msg_new(ldb);
-
- mod->dn = msg1->dn;
- mod->num_elements = 0;
- mod->elements = NULL;
-
- msg2 = ldb_msg_canonicalize(ldb, msg2);
- if (msg2 == NULL) {
- return NULL;
- }
-
- /* look in msg2 to find elements that need to be added
- or modified */
- for (i=0;i<msg2->num_elements;i++) {
- el = ldb_msg_find_element(msg1, msg2->elements[i].name);
-
- if (el && ldb_msg_element_compare(el, &msg2->elements[i]) == 0) {
- continue;
- }
-
- if (ldb_msg_add(mod,
- &msg2->elements[i],
- el?LDB_FLAG_MOD_REPLACE:LDB_FLAG_MOD_ADD) != 0) {
- return NULL;
- }
- }
-
- /* look in msg1 to find elements that need to be deleted */
- for (i=0;i<msg1->num_elements;i++) {
- el = ldb_msg_find_element(msg2, msg1->elements[i].name);
- if (!el) {
- if (ldb_msg_add_empty(mod,
- msg1->elements[i].name,
- LDB_FLAG_MOD_DELETE, NULL) != 0) {
- return NULL;
- }
- }
- }
-
- return mod;
-}
-
-int ldb_msg_sanity_check(struct ldb_context *ldb,
- const struct ldb_message *msg)
-{
- int i, j;
-
- /* basic check on DN */
- if (msg->dn == NULL) {
- /* TODO: return also an error string */
- ldb_set_errstring(ldb, "ldb message lacks a DN!");
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- /* basic syntax checks */
- for (i = 0; i < msg->num_elements; i++) {
- for (j = 0; j < msg->elements[i].num_values; j++) {
- if (msg->elements[i].values[j].length == 0) {
- TALLOC_CTX *mem_ctx = talloc_new(ldb);
- /* an attribute cannot be empty */
- /* TODO: return also an error string */
- ldb_asprintf_errstring(ldb, "Element %s has empty attribute in ldb message (%s)!",
- msg->elements[i].name,
- ldb_dn_linearize(mem_ctx, msg->dn));
- talloc_free(mem_ctx);
- return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
- }
- }
- }
-
- return LDB_SUCCESS;
-}
-
-
-
-
-/*
- copy an attribute list. This only copies the array, not the elements
- (ie. the elements are left as the same pointers)
-*/
-const char **ldb_attr_list_copy(TALLOC_CTX *mem_ctx, const char * const *attrs)
-{
- const char **ret;
- int i;
- for (i=0;attrs[i];i++) /* noop */ ;
- ret = talloc_array(mem_ctx, const char *, i+1);
- if (ret == NULL) {
- return NULL;
- }
- for (i=0;attrs[i];i++) {
- ret[i] = attrs[i];
- }
- ret[i] = attrs[i];
- return ret;
-}
-
-
-/*
- copy an attribute list. This only copies the array, not the elements
- (ie. the elements are left as the same pointers). The new attribute is added to the list.
-*/
-const char **ldb_attr_list_copy_add(TALLOC_CTX *mem_ctx, const char * const *attrs, const char *new_attr)
-{
- const char **ret;
- int i;
- for (i=0;attrs[i];i++) /* noop */ ;
- ret = talloc_array(mem_ctx, const char *, i+2);
- if (ret == NULL) {
- return NULL;
- }
- for (i=0;attrs[i];i++) {
- ret[i] = attrs[i];
- }
- ret[i] = new_attr;
- ret[i+1] = NULL;
- return ret;
-}
-
-
-/*
- return 1 if an attribute is in a list of attributes, or 0 otherwise
-*/
-int ldb_attr_in_list(const char * const *attrs, const char *attr)
-{
- int i;
- for (i=0;attrs[i];i++) {
- if (ldb_attr_cmp(attrs[i], attr) == 0) {
- return 1;
- }
- }
- return 0;
-}
-
-
-/*
- rename the specified attribute in a search result
-*/
-int ldb_msg_rename_attr(struct ldb_message *msg, const char *attr, const char *replace)
-{
- struct ldb_message_element *el = ldb_msg_find_element(msg, attr);
- if (el == NULL) {
- return LDB_SUCCESS;
- }
- el->name = talloc_strdup(msg->elements, replace);
- if (el->name == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- return LDB_SUCCESS;
-}
-
-
-/*
- copy the specified attribute in a search result to a new attribute
-*/
-int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *replace)
-{
- struct ldb_message_element *el = ldb_msg_find_element(msg, attr);
- if (el == NULL) {
- return LDB_SUCCESS;
- }
- if (ldb_msg_add(msg, el, 0) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- return ldb_msg_rename_attr(msg, attr, replace);
-}
-
-
-/*
- remove the specified attribute in a search result
-*/
-void ldb_msg_remove_attr(struct ldb_message *msg, const char *attr)
-{
- struct ldb_message_element *el = ldb_msg_find_element(msg, attr);
- if (el) {
- int n = (el - msg->elements);
- if (n != msg->num_elements-1) {
- memmove(el, el+1, ((msg->num_elements-1) - n)*sizeof(*el));
- }
- msg->num_elements--;
- }
-}
-
-/*
- remove the specified element in a search result
-*/
-void ldb_msg_remove_element(struct ldb_message *msg, struct ldb_message_element *el)
-{
- int n = (el - msg->elements);
- if (n != msg->num_elements-1) {
- memmove(el, el+1, ((msg->num_elements-1) - n)*sizeof(*el));
- }
- msg->num_elements--;
-}
-
-/*
- return a LDAP formatted time string
-*/
-char *ldb_timestring(TALLOC_CTX *mem_ctx, time_t t)
-{
- struct tm *tm = gmtime(&t);
-
- if (!tm) {
- return NULL;
- }
-
- /* formatted like: 20040408072012.0Z */
- return talloc_asprintf(mem_ctx,
- "%04u%02u%02u%02u%02u%02u.0Z",
- tm->tm_year+1900, tm->tm_mon+1,
- tm->tm_mday, tm->tm_hour, tm->tm_min,
- tm->tm_sec);
-}
-
-
-/*
- convert a LDAP time string to a time_t. Return 0 if unable to convert
-*/
-time_t ldb_string_to_time(const char *s)
-{
- struct tm tm;
-
- if (s == NULL) return 0;
-
- memset(&tm, 0, sizeof(tm));
- if (sscanf(s, "%04u%02u%02u%02u%02u%02u",
- &tm.tm_year, &tm.tm_mon, &tm.tm_mday,
- &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
- return 0;
- }
- tm.tm_year -= 1900;
- tm.tm_mon -= 1;
-
- return timegm(&tm);
-}
-
-
-/*
- dump a set of results to a file. Useful from within gdb
-*/
-void ldb_dump_results(struct ldb_context *ldb, struct ldb_result *result, FILE *f)
-{
- int i;
-
- for (i = 0; i < result->count; i++) {
- struct ldb_ldif ldif;
- fprintf(f, "# record %d\n", i+1);
- ldif.changetype = LDB_CHANGETYPE_NONE;
- ldif.msg = result->msgs[i];
- ldb_ldif_write_file(ldb, f, &ldif);
- }
-}
-
-int ldb_msg_check_string_attribute(const struct ldb_message *msg, const char *name, const char *value)
-{
- struct ldb_message_element *el;
- struct ldb_val val;
-
- el = ldb_msg_find_element(msg, name);
- if (el == NULL)
- return 0;
-
- val.data = discard_const_p(uint8_t, value);
- val.length = strlen(value);
-
- if (ldb_msg_find_val(el, &val))
- return 1;
-
- return 0;
-}
diff --git a/source/lib/ldb/common/ldb_parse.c b/source/lib/ldb/common/ldb_parse.c
deleted file mode 100644
index 5c5709f929e..00000000000
--- a/source/lib/ldb/common/ldb_parse.c
+++ /dev/null
@@ -1,819 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb expression parsing
- *
- * Description: parse LDAP-like search expressions
- *
- * Author: Andrew Tridgell
- */
-
-/*
- TODO:
- - add RFC2254 binary string handling
- - possibly add ~=, <= and >= handling
- - expand the test suite
- - add better parse error handling
-
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "system/locale.h"
-
-struct ldb_val ldb_binary_decode(void *mem_ctx, const char *str);
-
-/*
-a filter is defined by:
- <filter> ::= '(' <filtercomp> ')'
- <filtercomp> ::= <and> | <or> | <not> | <simple>
- <and> ::= '&' <filterlist>
- <or> ::= '|' <filterlist>
- <not> ::= '!' <filter>
- <filterlist> ::= <filter> | <filter> <filterlist>
- <simple> ::= <attributetype> <filtertype> <attributevalue>
- <filtertype> ::= '=' | '~=' | '<=' | '>='
-*/
-
-/*
- decode a RFC2254 binary string representation of a buffer.
- Used in LDAP filters.
-*/
-struct ldb_val ldb_binary_decode(void *mem_ctx, const char *str)
-{
- int i, j;
- struct ldb_val ret;
- int slen = str?strlen(str):0;
-
- ret.data = (uint8_t *)talloc_size(mem_ctx, slen+1);
- ret.length = 0;
- if (ret.data == NULL) return ret;
-
- for (i=j=0;i<slen;i++) {
- if (str[i] == '\\') {
- unsigned c;
- if (sscanf(&str[i+1], "%02X", &c) != 1) {
- talloc_free(ret.data);
- memset(&ret, 0, sizeof(ret));
- return ret;
- }
- ((uint8_t *)ret.data)[j++] = c;
- i += 2;
- } else {
- ((uint8_t *)ret.data)[j++] = str[i];
- }
- }
- ret.length = j;
- ((uint8_t *)ret.data)[j] = 0;
-
- return ret;
-}
-
-
-/*
- encode a blob as a RFC2254 binary string, escaping any
- non-printable or '\' characters
-*/
-char *ldb_binary_encode(void *mem_ctx, struct ldb_val val)
-{
- int i;
- char *ret;
- int len = val.length;
- unsigned char *buf = val.data;
-
- for (i=0;i<val.length;i++) {
- if (!isprint(buf[i]) || strchr(" *()\\&|!\"", buf[i])) {
- len += 2;
- }
- }
- ret = talloc_array(mem_ctx, char, len+1);
- if (ret == NULL) return NULL;
-
- len = 0;
- for (i=0;i<val.length;i++) {
- if (!isprint(buf[i]) || strchr(" *()\\&|!\"", buf[i])) {
- snprintf(ret+len, 4, "\\%02X", buf[i]);
- len += 3;
- } else {
- ret[len++] = buf[i];
- }
- }
-
- ret[len] = 0;
-
- return ret;
-}
-
-/*
- encode a string as a RFC2254 binary string, escaping any
- non-printable or '\' characters. This routine is suitable for use
- in escaping user data in ldap filters.
-*/
-char *ldb_binary_encode_string(void *mem_ctx, const char *string)
-{
- struct ldb_val val;
- val.data = discard_const_p(uint8_t, string);
- val.length = strlen(string);
- return ldb_binary_encode(mem_ctx, val);
-}
-
-/* find the first matching wildcard */
-static char *ldb_parse_find_wildcard(char *value)
-{
- while (*value) {
- value = strpbrk(value, "\\*");
- if (value == NULL) return NULL;
-
- if (value[0] == '\\') {
- if (value[1] == '\0') return NULL;
- value += 2;
- continue;
- }
-
- if (value[0] == '*') return value;
- }
-
- return NULL;
-}
-
-/* return a NULL terminated list of binary strings representing the value
- chunks separated by wildcards that makes the value portion of the filter
-*/
-static struct ldb_val **ldb_wildcard_decode(void *mem_ctx, const char *string)
-{
- struct ldb_val **ret = NULL;
- int val = 0;
- char *wc, *str;
-
- wc = talloc_strdup(mem_ctx, string);
- if (wc == NULL) return NULL;
-
- while (wc && *wc) {
- str = wc;
- wc = ldb_parse_find_wildcard(str);
- if (wc && *wc) {
- if (wc == str) {
- wc++;
- continue;
- }
- *wc = 0;
- wc++;
- }
-
- ret = talloc_realloc(mem_ctx, ret, struct ldb_val *, val + 2);
- if (ret == NULL) return NULL;
-
- ret[val] = talloc(mem_ctx, struct ldb_val);
- if (ret[val] == NULL) return NULL;
-
- *(ret[val]) = ldb_binary_decode(mem_ctx, str);
- if ((ret[val])->data == NULL) return NULL;
-
- val++;
- }
-
- if (ret != NULL) {
- ret[val] = NULL;
- }
-
- return ret;
-}
-
-static struct ldb_parse_tree *ldb_parse_filter(void *mem_ctx, const char **s);
-
-
-/*
- parse an extended match
-
- possible forms:
- (attr:oid:=value)
- (attr:dn:oid:=value)
- (attr:dn:=value)
- (:dn:oid:=value)
-
- the ':dn' part sets the dnAttributes boolean if present
- the oid sets the rule_id string
-
-*/
-static struct ldb_parse_tree *ldb_parse_extended(struct ldb_parse_tree *ret,
- char *attr, char *value)
-{
- char *p1, *p2;
-
- ret->operation = LDB_OP_EXTENDED;
- ret->u.extended.value = ldb_binary_decode(ret, value);
- if (ret->u.extended.value.data == NULL) goto failed;
-
- p1 = strchr(attr, ':');
- if (p1 == NULL) goto failed;
- p2 = strchr(p1+1, ':');
-
- *p1 = 0;
- if (p2) *p2 = 0;
-
- ret->u.extended.attr = attr;
- if (strcmp(p1+1, "dn") == 0) {
- ret->u.extended.dnAttributes = 1;
- if (p2) {
- ret->u.extended.rule_id = talloc_strdup(ret, p2+1);
- if (ret->u.extended.rule_id == NULL) goto failed;
- } else {
- ret->u.extended.rule_id = NULL;
- }
- } else {
- ret->u.extended.dnAttributes = 0;
- ret->u.extended.rule_id = talloc_strdup(ret, p1+1);
- if (ret->u.extended.rule_id == NULL) goto failed;
- }
-
- return ret;
-
-failed:
- talloc_free(ret);
- return NULL;
-}
-
-static enum ldb_parse_op ldb_parse_filtertype(void *mem_ctx, char **type, char **value, const char **s)
-{
- enum ldb_parse_op filter = 0;
- char *name, *val, *k;
- const char *p = *s;
- const char *t, *t1;
-
- /* retrieve attributetype name */
- t = p;
-
- while ((isascii(*p) && isalnum((unsigned char)*p)) || (*p == '-')) { /* attribute names can only be alphanums */
- p++;
- }
-
- if (*p == ':') { /* but extended searches have : and . chars too */
- p = strstr(p, ":=");
- if (p == NULL) { /* malformed attribute name */
- return 0;
- }
- }
-
- t1 = p;
-
- while (isspace((unsigned char)*p)) p++;
-
- if (!strchr("=<>~:", *p)) {
- return 0;
- }
-
- /* save name */
- name = (char *)talloc_memdup(mem_ctx, t, t1 - t + 1);
- if (name == NULL) return 0;
- name[t1 - t] = '\0';
-
- /* retrieve filtertype */
-
- if (*p == '=') {
- filter = LDB_OP_EQUALITY;
- } else if (*(p + 1) == '=') {
- switch (*p) {
- case '<':
- filter = LDB_OP_LESS;
- p++;
- break;
- case '>':
- filter = LDB_OP_GREATER;
- p++;
- break;
- case '~':
- filter = LDB_OP_APPROX;
- p++;
- break;
- case ':':
- filter = LDB_OP_EXTENDED;
- p++;
- break;
- }
- }
- if (!filter) {
- talloc_free(name);
- return filter;
- }
- p++;
-
- while (isspace((unsigned char)*p)) p++;
-
- /* retieve value */
- t = p;
-
- while (*p && ((*p != ')') || ((*p == ')') && (*(p - 1) == '\\')))) p++;
-
- val = (char *)talloc_memdup(mem_ctx, t, p - t + 1);
- if (val == NULL) {
- talloc_free(name);
- return 0;
- }
- val[p - t] = '\0';
-
- k = &(val[p - t]);
-
- /* remove trailing spaces from value */
- while ((k > val) && (isspace((unsigned char)*(k - 1)))) k--;
- *k = '\0';
-
- *type = name;
- *value = val;
- *s = p;
- return filter;
-}
-
-/*
- <simple> ::= <attributetype> <filtertype> <attributevalue>
-*/
-static struct ldb_parse_tree *ldb_parse_simple(void *mem_ctx, const char **s)
-{
- char *attr, *value;
- struct ldb_parse_tree *ret;
- enum ldb_parse_op filtertype;
-
- ret = talloc(mem_ctx, struct ldb_parse_tree);
- if (!ret) {
- errno = ENOMEM;
- return NULL;
- }
-
- filtertype = ldb_parse_filtertype(ret, &attr, &value, s);
- if (!filtertype) {
- talloc_free(ret);
- return NULL;
- }
-
- switch (filtertype) {
-
- case LDB_OP_PRESENT:
- ret->operation = LDB_OP_PRESENT;
- ret->u.present.attr = attr;
- break;
-
- case LDB_OP_EQUALITY:
-
- if (strcmp(value, "*") == 0) {
- ret->operation = LDB_OP_PRESENT;
- ret->u.present.attr = attr;
- break;
- }
-
- if (ldb_parse_find_wildcard(value) != NULL) {
- ret->operation = LDB_OP_SUBSTRING;
- ret->u.substring.attr = attr;
- ret->u.substring.start_with_wildcard = 0;
- ret->u.substring.end_with_wildcard = 0;
- ret->u.substring.chunks = ldb_wildcard_decode(ret, value);
- if (ret->u.substring.chunks == NULL){
- talloc_free(ret);
- return NULL;
- }
- if (value[0] == '*')
- ret->u.substring.start_with_wildcard = 1;
- if (value[strlen(value) - 1] == '*')
- ret->u.substring.end_with_wildcard = 1;
- talloc_free(value);
-
- break;
- }
-
- ret->operation = LDB_OP_EQUALITY;
- ret->u.equality.attr = attr;
- ret->u.equality.value = ldb_binary_decode(ret, value);
- if (ret->u.equality.value.data == NULL) {
- talloc_free(ret);
- return NULL;
- }
- talloc_free(value);
- break;
-
- case LDB_OP_GREATER:
- ret->operation = LDB_OP_GREATER;
- ret->u.comparison.attr = attr;
- ret->u.comparison.value = ldb_binary_decode(ret, value);
- if (ret->u.comparison.value.data == NULL) {
- talloc_free(ret);
- return NULL;
- }
- talloc_free(value);
- break;
-
- case LDB_OP_LESS:
- ret->operation = LDB_OP_LESS;
- ret->u.comparison.attr = attr;
- ret->u.comparison.value = ldb_binary_decode(ret, value);
- if (ret->u.comparison.value.data == NULL) {
- talloc_free(ret);
- return NULL;
- }
- talloc_free(value);
- break;
-
- case LDB_OP_APPROX:
- ret->operation = LDB_OP_APPROX;
- ret->u.comparison.attr = attr;
- ret->u.comparison.value = ldb_binary_decode(ret, value);
- if (ret->u.comparison.value.data == NULL) {
- talloc_free(ret);
- return NULL;
- }
- talloc_free(value);
- break;
-
- case LDB_OP_EXTENDED:
-
- ret = ldb_parse_extended(ret, attr, value);
- break;
-
- default:
- talloc_free(ret);
- return NULL;
- }
-
- return ret;
-}
-
-
-/*
- parse a filterlist
- <and> ::= '&' <filterlist>
- <or> ::= '|' <filterlist>
- <filterlist> ::= <filter> | <filter> <filterlist>
-*/
-static struct ldb_parse_tree *ldb_parse_filterlist(void *mem_ctx, const char **s)
-{
- struct ldb_parse_tree *ret, *next;
- enum ldb_parse_op op;
- const char *p = *s;
-
- switch (*p) {
- case '&':
- op = LDB_OP_AND;
- break;
- case '|':
- op = LDB_OP_OR;
- break;
- default:
- return NULL;
- }
- p++;
-
- while (isspace((unsigned char)*p)) p++;
-
- ret = talloc(mem_ctx, struct ldb_parse_tree);
- if (!ret) {
- errno = ENOMEM;
- return NULL;
- }
-
- ret->operation = op;
- ret->u.list.num_elements = 1;
- ret->u.list.elements = talloc(ret, struct ldb_parse_tree *);
- if (!ret->u.list.elements) {
- errno = ENOMEM;
- talloc_free(ret);
- return NULL;
- }
-
- ret->u.list.elements[0] = ldb_parse_filter(ret->u.list.elements, &p);
- if (!ret->u.list.elements[0]) {
- talloc_free(ret);
- return NULL;
- }
-
- while (isspace((unsigned char)*p)) p++;
-
- while (*p && (next = ldb_parse_filter(ret->u.list.elements, &p))) {
- struct ldb_parse_tree **e;
- e = talloc_realloc(ret, ret->u.list.elements,
- struct ldb_parse_tree *,
- ret->u.list.num_elements + 1);
- if (!e) {
- errno = ENOMEM;
- talloc_free(ret);
- return NULL;
- }
- ret->u.list.elements = e;
- ret->u.list.elements[ret->u.list.num_elements] = next;
- ret->u.list.num_elements++;
- while (isspace((unsigned char)*p)) p++;
- }
-
- *s = p;
-
- return ret;
-}
-
-
-/*
- <not> ::= '!' <filter>
-*/
-static struct ldb_parse_tree *ldb_parse_not(void *mem_ctx, const char **s)
-{
- struct ldb_parse_tree *ret;
- const char *p = *s;
-
- if (*p != '!') {
- return NULL;
- }
- p++;
-
- ret = talloc(mem_ctx, struct ldb_parse_tree);
- if (!ret) {
- errno = ENOMEM;
- return NULL;
- }
-
- ret->operation = LDB_OP_NOT;
- ret->u.isnot.child = ldb_parse_filter(ret, &p);
- if (!ret->u.isnot.child) {
- talloc_free(ret);
- return NULL;
- }
-
- *s = p;
-
- return ret;
-}
-
-/*
- parse a filtercomp
- <filtercomp> ::= <and> | <or> | <not> | <simple>
-*/
-static struct ldb_parse_tree *ldb_parse_filtercomp(void *mem_ctx, const char **s)
-{
- struct ldb_parse_tree *ret;
- const char *p = *s;
-
- while (isspace((unsigned char)*p)) p++;
-
- switch (*p) {
- case '&':
- ret = ldb_parse_filterlist(mem_ctx, &p);
- break;
-
- case '|':
- ret = ldb_parse_filterlist(mem_ctx, &p);
- break;
-
- case '!':
- ret = ldb_parse_not(mem_ctx, &p);
- break;
-
- case '(':
- case ')':
- return NULL;
-
- default:
- ret = ldb_parse_simple(mem_ctx, &p);
-
- }
-
- *s = p;
- return ret;
-}
-
-
-/*
- <filter> ::= '(' <filtercomp> ')'
-*/
-static struct ldb_parse_tree *ldb_parse_filter(void *mem_ctx, const char **s)
-{
- struct ldb_parse_tree *ret;
- const char *p = *s;
-
- if (*p != '(') {
- return NULL;
- }
- p++;
-
- ret = ldb_parse_filtercomp(mem_ctx, &p);
-
- if (*p != ')') {
- return NULL;
- }
- p++;
-
- while (isspace((unsigned char)*p)) {
- p++;
- }
-
- *s = p;
-
- return ret;
-}
-
-
-/*
- main parser entry point. Takes a search string and returns a parse tree
-
- expression ::= <simple> | <filter>
-*/
-struct ldb_parse_tree *ldb_parse_tree(void *mem_ctx, const char *s)
-{
- if (s == NULL || *s == 0) {
- s = "(|(objectClass=*)(distinguishedName=*))";
- }
-
- while (isspace((unsigned char)*s)) s++;
-
- if (*s == '(') {
- return ldb_parse_filter(mem_ctx, &s);
- }
-
- return ldb_parse_simple(mem_ctx, &s);
-}
-
-
-/*
- construct a ldap parse filter given a parse tree
-*/
-char *ldb_filter_from_tree(void *mem_ctx, struct ldb_parse_tree *tree)
-{
- char *s, *s2, *ret;
- int i;
-
- if (tree == NULL) {
- return NULL;
- }
-
- switch (tree->operation) {
- case LDB_OP_AND:
- case LDB_OP_OR:
- ret = talloc_asprintf(mem_ctx, "(%c", tree->operation==LDB_OP_AND?'&':'|');
- if (ret == NULL) return NULL;
- for (i=0;i<tree->u.list.num_elements;i++) {
- s = ldb_filter_from_tree(mem_ctx, tree->u.list.elements[i]);
- if (s == NULL) {
- talloc_free(ret);
- return NULL;
- }
- s2 = talloc_asprintf_append(ret, "%s", s);
- talloc_free(s);
- if (s2 == NULL) {
- talloc_free(ret);
- return NULL;
- }
- ret = s2;
- }
- s = talloc_asprintf_append(ret, ")");
- if (s == NULL) {
- talloc_free(ret);
- return NULL;
- }
- return s;
- case LDB_OP_NOT:
- s = ldb_filter_from_tree(mem_ctx, tree->u.isnot.child);
- if (s == NULL) return NULL;
-
- ret = talloc_asprintf(mem_ctx, "(!%s)", s);
- talloc_free(s);
- return ret;
- case LDB_OP_EQUALITY:
- s = ldb_binary_encode(mem_ctx, tree->u.equality.value);
- if (s == NULL) return NULL;
- ret = talloc_asprintf(mem_ctx, "(%s=%s)",
- tree->u.equality.attr, s);
- talloc_free(s);
- return ret;
- case LDB_OP_SUBSTRING:
- ret = talloc_asprintf(mem_ctx, "(%s=%s", tree->u.substring.attr,
- tree->u.substring.start_with_wildcard?"*":"");
- if (ret == NULL) return NULL;
- for (i = 0; tree->u.substring.chunks[i]; i++) {
- s2 = ldb_binary_encode(mem_ctx, *(tree->u.substring.chunks[i]));
- if (s2 == NULL) {
- talloc_free(ret);
- return NULL;
- }
- if (tree->u.substring.chunks[i+1] ||
- tree->u.substring.end_with_wildcard) {
- s = talloc_asprintf_append(ret, "%s*", s2);
- } else {
- s = talloc_asprintf_append(ret, "%s", s2);
- }
- if (s == NULL) {
- talloc_free(ret);
- return NULL;
- }
- ret = s;
- }
- s = talloc_asprintf_append(ret, ")");
- if (s == NULL) {
- talloc_free(ret);
- return NULL;
- }
- ret = s;
- return ret;
- case LDB_OP_GREATER:
- s = ldb_binary_encode(mem_ctx, tree->u.equality.value);
- if (s == NULL) return NULL;
- ret = talloc_asprintf(mem_ctx, "(%s>=%s)",
- tree->u.equality.attr, s);
- talloc_free(s);
- return ret;
- case LDB_OP_LESS:
- s = ldb_binary_encode(mem_ctx, tree->u.equality.value);
- if (s == NULL) return NULL;
- ret = talloc_asprintf(mem_ctx, "(%s<=%s)",
- tree->u.equality.attr, s);
- talloc_free(s);
- return ret;
- case LDB_OP_PRESENT:
- ret = talloc_asprintf(mem_ctx, "(%s=*)", tree->u.present.attr);
- return ret;
- case LDB_OP_APPROX:
- s = ldb_binary_encode(mem_ctx, tree->u.equality.value);
- if (s == NULL) return NULL;
- ret = talloc_asprintf(mem_ctx, "(%s~=%s)",
- tree->u.equality.attr, s);
- talloc_free(s);
- return ret;
- case LDB_OP_EXTENDED:
- s = ldb_binary_encode(mem_ctx, tree->u.extended.value);
- if (s == NULL) return NULL;
- ret = talloc_asprintf(mem_ctx, "(%s%s%s%s:=%s)",
- tree->u.extended.attr?tree->u.extended.attr:"",
- tree->u.extended.dnAttributes?":dn":"",
- tree->u.extended.rule_id?":":"",
- tree->u.extended.rule_id?tree->u.extended.rule_id:"",
- s);
- talloc_free(s);
- return ret;
- }
-
- return NULL;
-}
-
-
-/*
- replace any occurances of an attribute name in the parse tree with a
- new name
-*/
-void ldb_parse_tree_attr_replace(struct ldb_parse_tree *tree,
- const char *attr,
- const char *replace)
-{
- int i;
- switch (tree->operation) {
- case LDB_OP_AND:
- case LDB_OP_OR:
- for (i=0;i<tree->u.list.num_elements;i++) {
- ldb_parse_tree_attr_replace(tree->u.list.elements[i],
- attr, replace);
- }
- break;
- case LDB_OP_NOT:
- ldb_parse_tree_attr_replace(tree->u.isnot.child, attr, replace);
- break;
- case LDB_OP_EQUALITY:
- case LDB_OP_GREATER:
- case LDB_OP_LESS:
- case LDB_OP_APPROX:
- if (ldb_attr_cmp(tree->u.equality.attr, attr) == 0) {
- tree->u.equality.attr = replace;
- }
- break;
- case LDB_OP_SUBSTRING:
- if (ldb_attr_cmp(tree->u.substring.attr, attr) == 0) {
- tree->u.substring.attr = replace;
- }
- break;
- case LDB_OP_PRESENT:
- if (ldb_attr_cmp(tree->u.present.attr, attr) == 0) {
- tree->u.present.attr = replace;
- }
- break;
- case LDB_OP_EXTENDED:
- if (tree->u.extended.attr &&
- ldb_attr_cmp(tree->u.extended.attr, attr) == 0) {
- tree->u.extended.attr = replace;
- }
- break;
- }
-}
diff --git a/source/lib/ldb/common/ldb_utf8.c b/source/lib/ldb/common/ldb_utf8.c
deleted file mode 100644
index 86ed40535a9..00000000000
--- a/source/lib/ldb/common/ldb_utf8.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb utf8 handling
- *
- * Description: case folding and case comparison for UTF8 strings
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "system/locale.h"
-
-
-/*
- this allow the user to pass in a caseless comparison
- function to handle utf8 caseless comparisons
- */
-void ldb_set_utf8_fns(struct ldb_context *ldb,
- void *context,
- char *(*casefold)(void *, void *, const char *))
-{
- if (context)
- ldb->utf8_fns.context = context;
- if (casefold)
- ldb->utf8_fns.casefold = casefold;
-}
-
-/*
- a simple case folding function
- NOTE: does not handle UTF8
-*/
-char *ldb_casefold_default(void *context, void *mem_ctx, const char *s)
-{
- int i;
- char *ret = talloc_strdup(mem_ctx, s);
- if (!s) {
- errno = ENOMEM;
- return NULL;
- }
- for (i=0;ret[i];i++) {
- ret[i] = toupper((unsigned char)ret[i]);
- }
- return ret;
-}
-
-void ldb_set_utf8_default(struct ldb_context *ldb)
-{
- ldb_set_utf8_fns(ldb, NULL, ldb_casefold_default);
-}
-
-char *ldb_casefold(struct ldb_context *ldb, void *mem_ctx, const char *s)
-{
- return ldb->utf8_fns.casefold(ldb->utf8_fns.context, mem_ctx, s);
-}
-
-/*
- check the attribute name is valid according to rfc2251
- returns 1 if the name is ok
- */
-
-int ldb_valid_attr_name(const char *s)
-{
- int i;
-
- if (!s || !s[0])
- return 0;
-
- /* handle special ldb_tdb wildcard */
- if (strcmp(s, "*") == 0) return 1;
-
- for (i = 0; s[i]; i++) {
- if (! isascii(s[i])) {
- return 0;
- }
- if (i == 0) { /* first char must be an alpha (or our special '@' identifier) */
- if (! (isalpha(s[i]) || (s[i] == '@'))) {
- return 0;
- }
- } else {
- if (! (isalnum(s[i]) || (s[i] == '-'))) {
- return 0;
- }
- }
- }
- return 1;
-}
-
-/*
- compare two attribute names
- attribute names are restricted by rfc2251 so using
- strcasecmp and toupper here is ok.
- return 0 for match
-*/
-int ldb_attr_cmp(const char *attr1, const char *attr2)
-{
- return strcasecmp(attr1, attr2);
-}
-
-char *ldb_attr_casefold(void *mem_ctx, const char *s)
-{
- int i;
- char *ret = talloc_strdup(mem_ctx, s);
- if (!ret) {
- errno = ENOMEM;
- return NULL;
- }
- for (i = 0; ret[i]; i++) {
- ret[i] = toupper((unsigned char)ret[i]);
- }
- return ret;
-}
-
-/*
- we accept either 'dn' or 'distinguishedName' for a distinguishedName
-*/
-int ldb_attr_dn(const char *attr)
-{
- if (ldb_attr_cmp(attr, "dn") == 0 ||
- ldb_attr_cmp(attr, "distinguishedName") == 0) {
- return 0;
- }
- return -1;
-}
diff --git a/source/lib/ldb/common/qsort.c b/source/lib/ldb/common/qsort.c
deleted file mode 100644
index ef7be2c14ec..00000000000
--- a/source/lib/ldb/common/qsort.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/* Copyright (C) 1991,1992,1996,1997,1999,2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Douglas C. Schmidt (schmidt@ics.uci.edu).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* If you consider tuning this algorithm, you should consult first:
- Engineering a sort function; Jon Bentley and M. Douglas McIlroy;
- Software - Practice and Experience; Vol. 23 (11), 1249-1265, 1993. */
-
-/* Modified to be used in samba4 by
- * Simo Sorce <idra@samba.org> 2005
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/* Byte-wise swap two items of size SIZE. */
-#define SWAP(a, b, size) \
- do \
- { \
- register size_t __size = (size); \
- register char *__a = (a), *__b = (b); \
- do \
- { \
- char __tmp = *__a; \
- *__a++ = *__b; \
- *__b++ = __tmp; \
- } while (--__size > 0); \
- } while (0)
-
-/* Discontinue quicksort algorithm when partition gets below this size.
- This particular magic number was chosen to work best on a Sun 4/260. */
-#define MAX_THRESH 4
-
-/* Stack node declarations used to store unfulfilled partition obligations. */
-typedef struct
- {
- char *lo;
- char *hi;
- } stack_node;
-
-/* The next 4 #defines implement a very fast in-line stack abstraction. */
-/* The stack needs log (total_elements) entries (we could even subtract
- log(MAX_THRESH)). Since total_elements has type size_t, we get as
- upper bound for log (total_elements):
- bits per byte (CHAR_BIT) * sizeof(size_t). */
-#ifndef CHAR_BIT
-#define CHAR_BIT 8
-#endif
-#define STACK_SIZE (CHAR_BIT * sizeof(size_t))
-#define PUSH(low, high) ((void) ((top->lo = (low)), (top->hi = (high)), ++top))
-#define POP(low, high) ((void) (--top, (low = top->lo), (high = top->hi)))
-#define STACK_NOT_EMPTY (stack < top)
-
-
-/* Order size using quicksort. This implementation incorporates
- four optimizations discussed in Sedgewick:
-
- 1. Non-recursive, using an explicit stack of pointer that store the
- next array partition to sort. To save time, this maximum amount
- of space required to store an array of SIZE_MAX is allocated on the
- stack. Assuming a 32-bit (64 bit) integer for size_t, this needs
- only 32 * sizeof(stack_node) == 256 bytes (for 64 bit: 1024 bytes).
- Pretty cheap, actually.
-
- 2. Chose the pivot element using a median-of-three decision tree.
- This reduces the probability of selecting a bad pivot value and
- eliminates certain extraneous comparisons.
-
- 3. Only quicksorts TOTAL_ELEMS / MAX_THRESH partitions, leaving
- insertion sort to order the MAX_THRESH items within each partition.
- This is a big win, since insertion sort is faster for small, mostly
- sorted array segments.
-
- 4. The larger of the two sub-partitions is always pushed onto the
- stack first, with the algorithm then concentrating on the
- smaller partition. This *guarantees* no more than log (total_elems)
- stack size is needed (actually O(1) in this case)! */
-
-void ldb_qsort (void *const pbase, size_t total_elems, size_t size,
- void *opaque, ldb_qsort_cmp_fn_t cmp)
-{
- register char *base_ptr = (char *) pbase;
-
- const size_t max_thresh = MAX_THRESH * size;
-
- if (total_elems == 0)
- /* Avoid lossage with unsigned arithmetic below. */
- return;
-
- if (total_elems > MAX_THRESH)
- {
- char *lo = base_ptr;
- char *hi = &lo[size * (total_elems - 1)];
- stack_node stack[STACK_SIZE];
- stack_node *top = stack;
-
- PUSH (NULL, NULL);
-
- while (STACK_NOT_EMPTY)
- {
- char *left_ptr;
- char *right_ptr;
-
- /* Select median value from among LO, MID, and HI. Rearrange
- LO and HI so the three values are sorted. This lowers the
- probability of picking a pathological pivot value and
- skips a comparison for both the LEFT_PTR and RIGHT_PTR in
- the while loops. */
-
- char *mid = lo + size * ((hi - lo) / size >> 1);
-
- if ((*cmp) ((void *) mid, (void *) lo, opaque) < 0)
- SWAP (mid, lo, size);
- if ((*cmp) ((void *) hi, (void *) mid, opaque) < 0)
- SWAP (mid, hi, size);
- else
- goto jump_over;
- if ((*cmp) ((void *) mid, (void *) lo, opaque) < 0)
- SWAP (mid, lo, size);
- jump_over:;
-
- left_ptr = lo + size;
- right_ptr = hi - size;
-
- /* Here's the famous ``collapse the walls'' section of quicksort.
- Gotta like those tight inner loops! They are the main reason
- that this algorithm runs much faster than others. */
- do
- {
- while ((*cmp) ((void *) left_ptr, (void *) mid, opaque) < 0)
- left_ptr += size;
-
- while ((*cmp) ((void *) mid, (void *) right_ptr, opaque) < 0)
- right_ptr -= size;
-
- if (left_ptr < right_ptr)
- {
- SWAP (left_ptr, right_ptr, size);
- if (mid == left_ptr)
- mid = right_ptr;
- else if (mid == right_ptr)
- mid = left_ptr;
- left_ptr += size;
- right_ptr -= size;
- }
- else if (left_ptr == right_ptr)
- {
- left_ptr += size;
- right_ptr -= size;
- break;
- }
- }
- while (left_ptr <= right_ptr);
-
- /* Set up pointers for next iteration. First determine whether
- left and right partitions are below the threshold size. If so,
- ignore one or both. Otherwise, push the larger partition's
- bounds on the stack and continue sorting the smaller one. */
-
- if ((size_t) (right_ptr - lo) <= max_thresh)
- {
- if ((size_t) (hi - left_ptr) <= max_thresh)
- /* Ignore both small partitions. */
- POP (lo, hi);
- else
- /* Ignore small left partition. */
- lo = left_ptr;
- }
- else if ((size_t) (hi - left_ptr) <= max_thresh)
- /* Ignore small right partition. */
- hi = right_ptr;
- else if ((right_ptr - lo) > (hi - left_ptr))
- {
- /* Push larger left partition indices. */
- PUSH (lo, right_ptr);
- lo = left_ptr;
- }
- else
- {
- /* Push larger right partition indices. */
- PUSH (left_ptr, hi);
- hi = right_ptr;
- }
- }
- }
-
- /* Once the BASE_PTR array is partially sorted by quicksort the rest
- is completely sorted using insertion sort, since this is efficient
- for partitions below MAX_THRESH size. BASE_PTR points to the beginning
- of the array to sort, and END_PTR points at the very last element in
- the array (*not* one beyond it!). */
-
-#define min(x, y) ((x) < (y) ? (x) : (y))
-
- {
- char *const end_ptr = &base_ptr[size * (total_elems - 1)];
- char *tmp_ptr = base_ptr;
- char *thresh = min(end_ptr, base_ptr + max_thresh);
- register char *run_ptr;
-
- /* Find smallest element in first threshold and place it at the
- array's beginning. This is the smallest array element,
- and the operation speeds up insertion sort's inner loop. */
-
- for (run_ptr = tmp_ptr + size; run_ptr <= thresh; run_ptr += size)
- if ((*cmp) ((void *) run_ptr, (void *) tmp_ptr, opaque) < 0)
- tmp_ptr = run_ptr;
-
- if (tmp_ptr != base_ptr)
- SWAP (tmp_ptr, base_ptr, size);
-
- /* Insertion sort, running from left-hand-side up to right-hand-side. */
-
- run_ptr = base_ptr + size;
- while ((run_ptr += size) <= end_ptr)
- {
- tmp_ptr = run_ptr - size;
- while ((*cmp) ((void *) run_ptr, (void *) tmp_ptr, opaque) < 0)
- tmp_ptr -= size;
-
- tmp_ptr += size;
- if (tmp_ptr != run_ptr)
- {
- char *trav;
-
- trav = run_ptr + size;
- while (--trav >= run_ptr)
- {
- char c = *trav;
- char *hi, *lo;
-
- for (hi = lo = trav; (lo -= size) >= tmp_ptr; hi = lo)
- *hi = *lo;
- *hi = c;
- }
- }
- }
- }
-}
diff --git a/source/lib/ldb/config.guess b/source/lib/ldb/config.guess
deleted file mode 100755
index ad5281e66e9..00000000000
--- a/source/lib/ldb/config.guess
+++ /dev/null
@@ -1,1466 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-08-03'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- x86:Interix*:[34]*)
- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- *86) UNAME_PROCESSOR=i686 ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/source/lib/ldb/config.mk b/source/lib/ldb/config.mk
deleted file mode 100644
index cd80adf7213..00000000000
--- a/source/lib/ldb/config.mk
+++ /dev/null
@@ -1,315 +0,0 @@
-################################################
-# Start MODULE ldb_asq
-[MODULE::ldb_asq]
-PRIVATE_DEPENDENCIES = LIBTALLOC
-INIT_FUNCTION = ldb_asq_init
-SUBSYSTEM = ldb
-OBJ_FILES = \
- modules/asq.o
-# End MODULE ldb_asq
-################################################
-
-################################################
-# Start MODULE ldb_server_sort
-[MODULE::ldb_server_sort]
-PRIVATE_DEPENDENCIES = LIBTALLOC
-INIT_FUNCTION = ldb_sort_init
-SUBSYSTEM = ldb
-OBJ_FILES = \
- modules/sort.o
-# End MODULE ldb_sort
-################################################
-
-################################################
-# Start MODULE ldb_paged_results
-[MODULE::ldb_paged_results]
-INIT_FUNCTION = ldb_paged_results_init
-PRIVATE_DEPENDENCIES = LIBTALLOC
-SUBSYSTEM = ldb
-OBJ_FILES = \
- modules/paged_results.o
-# End MODULE ldb_paged_results
-################################################
-
-################################################
-# Start MODULE ldb_paged_results
-[MODULE::ldb_paged_searches]
-INIT_FUNCTION = ldb_paged_searches_init
-PRIVATE_DEPENDENCIES = LIBTALLOC
-SUBSYSTEM = ldb
-OBJ_FILES = \
- modules/paged_searches.o
-# End MODULE ldb_paged_results
-################################################
-
-################################################
-# Start MODULE ldb_operational
-[MODULE::ldb_operational]
-SUBSYSTEM = ldb
-PRIVATE_DEPENDENCIES = LIBTALLOC
-INIT_FUNCTION = ldb_operational_init
-OBJ_FILES = \
- modules/operational.o
-# End MODULE ldb_operational
-################################################
-
-################################################
-# Start MODULE ldb_objectclass
-[MODULE::ldb_objectclass]
-INIT_FUNCTION = ldb_objectclass_init
-PRIVATE_DEPENDENCIES = LIBTALLOC
-SUBSYSTEM = ldb
-OBJ_FILES = \
- modules/objectclass.o
-# End MODULE ldb_objectclass
-################################################
-
-################################################
-# Start MODULE ldb_rdn_name
-[MODULE::ldb_rdn_name]
-SUBSYSTEM = ldb
-PRIVATE_DEPENDENCIES = LIBTALLOC
-INIT_FUNCTION = ldb_rdn_name_init
-OBJ_FILES = \
- modules/rdn_name.o
-# End MODULE ldb_rdn_name
-################################################
-
-################################################
-# Start MODULE ldb_ildap
-[MODULE::ldb_ildap]
-SUBSYSTEM = ldb
-PRIVATE_DEPENDENCIES = LIBTALLOC
-INIT_FUNCTION = ldb_ildap_init
-ALIASES = ldapi ldaps ldap
-OBJ_FILES = \
- ldb_ildap/ldb_ildap.o
-PUBLIC_DEPENDENCIES = \
- LIBCLI_LDAP
-# End MODULE ldb_ildap
-################################################
-
-################################################
-# Start MODULE ldb_map
-[MODULE::ldb_map]
-PRIVATE_DEPENDENCIES = LIBTALLOC
-SUBSYSTEM = ldb
-OBJ_FILES = \
- modules/ldb_map_inbound.o \
- modules/ldb_map_outbound.o \
- modules/ldb_map.o
-# End MODULE ldb_map
-################################################
-
-################################################
-# Start MODULE ldb_skel
-[MODULE::ldb_skel]
-SUBSYSTEM = ldb
-PRIVATE_DEPENDENCIES = LIBTALLOC
-INIT_FUNCTION = ldb_skel_init
-OBJ_FILES = modules/skel.o
-# End MODULE ldb_skel
-################################################
-
-################################################
-# Start MODULE ldb_sqlite3
-[MODULE::ldb_sqlite3]
-SUBSYSTEM = ldb
-PRIVATE_DEPENDENCIES = LIBTALLOC
-INIT_FUNCTION = ldb_sqlite3_init
-OBJ_FILES = \
- ldb_sqlite3/ldb_sqlite3.o
-PUBLIC_DEPENDENCIES = \
- SQLITE3 LIBTALLOC
-# End MODULE ldb_sqlite3
-################################################
-
-################################################
-# Start MODULE ldb_tdb
-[MODULE::ldb_tdb]
-SUBSYSTEM = ldb
-INIT_FUNCTION = ldb_tdb_init
-OBJ_FILES = \
- ldb_tdb/ldb_tdb.o \
- ldb_tdb/ldb_search.o \
- ldb_tdb/ldb_pack.o \
- ldb_tdb/ldb_index.o \
- ldb_tdb/ldb_cache.o \
- ldb_tdb/ldb_tdb_wrap.o
-PUBLIC_DEPENDENCIES = \
- LIBTDB LIBTALLOC
-# End MODULE ldb_tdb
-################################################
-
-./lib/ldb/common/ldb_modules.o: lib/ldb/common/ldb_modules.c Makefile
- @echo Compiling $<
- @$(CC) -Iinclude $(CFLAGS) -Ilib/replace -Ilib/talloc -Ilib/ldb $(PICFLAG) -DLDBMODULESDIR=\"$(MODULESDIR)/ldb\" -DSHLIBEXT=\"$(SHLIBEXT)\" -c $< -o $@
-
-################################################
-# Start SUBSYSTEM ldb
-[LIBRARY::ldb]
-VERSION = 0.0.1
-SO_VERSION = 0
-DESCRIPTION = LDAP-like embedded database library
-INIT_FUNCTION_TYPE = int (*) (void)
-OBJ_FILES = \
- common/ldb.o \
- common/ldb_ldif.o \
- common/ldb_parse.o \
- common/ldb_msg.o \
- common/ldb_utf8.o \
- common/ldb_debug.o \
- common/ldb_modules.o \
- common/ldb_match.o \
- common/ldb_attributes.o \
- common/attrib_handlers.o \
- common/ldb_dn.o \
- common/ldb_controls.o \
- common/qsort.o
-PUBLIC_DEPENDENCIES = \
- LIBTALLOC \
- DYNCONFIG \
- SOCKET_WRAPPER
-MANPAGE = man/ldb.3
-PUBLIC_HEADERS = include/ldb.h include/ldb_errors.h
-#
-# End SUBSYSTEM ldb
-################################################
-
-################################################
-# Start SUBSYSTEM LDBSAMBA
-[SUBSYSTEM::LDBSAMBA]
-PRIVATE_DEPENDENCIES = ldb
-PRIVATE_PROTO_HEADER = samba/ldif_handlers.h
-PUBLIC_DEPENDENCIES = LIBSECURITY SAMDB
-OBJ_FILES = \
- samba/ldif_handlers.o
-# End SUBSYSTEM LDBSAMBA
-################################################
-
-################################################
-# Start SUBSYSTEM LIBLDB_CMDLINE
-[SUBSYSTEM::LIBLDB_CMDLINE]
-OBJ_FILES= \
- tools/cmdline.o
-PUBLIC_DEPENDENCIES = ldb LIBSAMBA-UTIL LIBPOPT POPT_SAMBA POPT_CREDENTIALS
-PRIVATE_DEPENDENCIES = gensec
-# End SUBSYSTEM LIBLDB_CMDLINE
-################################################
-
-################################################
-# Start BINARY ldbadd
-[BINARY::ldbadd]
-INSTALLDIR = BINDIR
-OBJ_FILES = \
- tools/ldbadd.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE LIBCLI_RESOLVE
-MANPAGE = man/ldbadd.1
-# End BINARY ldbadd
-################################################
-
-################################################
-# Start BINARY ldbdel
-[BINARY::ldbdel]
-INSTALLDIR = BINDIR
-OBJ_FILES= \
- tools/ldbdel.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-MANPAGE = man/ldbdel.1
-# End BINARY ldbdel
-################################################
-
-################################################
-# Start BINARY ldbmodify
-[BINARY::ldbmodify]
-INSTALLDIR = BINDIR
-OBJ_FILES= \
- tools/ldbmodify.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-MANPAGE = man/ldbmodify.1
-# End BINARY ldbmodify
-################################################
-
-################################################
-# Start BINARY ldbsearch
-[BINARY::ldbsearch]
-INSTALLDIR = BINDIR
-OBJ_FILES= \
- tools/ldbsearch.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-MANPAGE = man/ldbsearch.1
-# End BINARY ldbsearch
-################################################
-
-################################################
-# Start BINARY ldbedit
-[BINARY::ldbedit]
-INSTALLDIR = BINDIR
-OBJ_FILES= \
- tools/ldbedit.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-MANPAGE = man/ldbedit.1
-# End BINARY ldbedit
-################################################
-
-################################################
-# Start BINARY ldbrename
-[BINARY::ldbrename]
-INSTALLDIR = BINDIR
-OBJ_FILES= \
- tools/ldbrename.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-MANPAGE = man/ldbrename.1
-# End BINARY ldbrename
-################################################
-
-################################################
-# Start BINARY ldbtest
-[BINARY::ldbtest]
-OBJ_FILES= \
- tools/ldbtest.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-# End BINARY ldbtest
-################################################
-
-################################################
-# Start BINARY oLschema2ldif
-[BINARY::oLschema2ldif]
-INSTALLDIR = BINDIR
-MANPAGE = man/oLschema2ldif.1
-OBJ_FILES= \
- tools/convert.o \
- tools/oLschema2ldif.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-# End BINARY oLschema2ldif
-################################################
-
-################################################
-# Start BINARY ad2oLschema
-[BINARY::ad2oLschema]
-INSTALLDIR = BINDIR
-MANPAGE = man/ad2oLschema.1
-OBJ_FILES= \
- tools/convert.o \
- tools/ad2oLschema.o
-PRIVATE_DEPENDENCIES = \
- LIBLDB_CMDLINE
-# End BINARY ad2oLschema
-################################################
-
-#######################
-# Start LIBRARY swig_ldb
-[LIBRARY::swig_ldb]
-PUBLIC_DEPENDENCIES = ldb DYNCONFIG
-LIBRARY_REALNAME = swig/_ldb.$(SHLIBEXT)
-OBJ_FILES = swig/ldb_wrap.o
-# End LIBRARY swig_ldb
-#######################
diff --git a/source/lib/ldb/config.sub b/source/lib/ldb/config.sub
deleted file mode 100755
index 1c366dfde9a..00000000000
--- a/source/lib/ldb/config.sub
+++ /dev/null
@@ -1,1579 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-07-08'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | ms1 \
- | msp430 \
- | ns16k | ns32k \
- | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m32c)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | ms1-* \
- | msp430-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
- m32c-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16c)
- basic_machine=cr16c-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/source/lib/ldb/configure.ac b/source/lib/ldb/configure.ac
deleted file mode 100644
index e1e9d49ceeb..00000000000
--- a/source/lib/ldb/configure.ac
+++ /dev/null
@@ -1,74 +0,0 @@
-AC_PREREQ(2.50)
-AC_DEFUN([AC_CHECK_LIB_EXT], [
- AC_CHECK_LIB([$1],[$3],[$4],[$5],[$7])
- ac_cv_lib_ext_$1_$3=$ac_cv_lib_$1_$3
-])
-AC_DEFUN([AC_CHECK_FUNC_EXT], [
- AC_CHECK_FUNC([$1],[$3],[$4])
- ac_cv_func_ext_$1=$ac_cv_func_$1
-])
-AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
-AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
-AC_DEFUN([SMB_EXT_LIB], [echo -n ""])
-AC_DEFUN([SMB_ENABLE], [echo -n ""])
-AC_INIT(include/ldb.h)
-AC_CONFIG_SRCDIR([common/ldb.c])
-
-AC_LIBREPLACE_ALL_CHECKS
-
-if test "$ac_cv_prog_gcc" = yes; then
- CFLAGS="$CFLAGS -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings"
-fi
-
-WITH_GCOV=0
-AC_ARG_ENABLE(gcov,
- AS_HELP_STRING([--enable-gcov],[enable GCOV code coverage tests]),
- [ WITH_GCOV=1])
-AC_SUBST(WITH_GCOV)
-if test x"$with_gcov_support" = x"yes"; then
- CFLAGS="$CFLAGS -ftest-coverage -fprofile-arcs"
- LIBS="$LIBS -lgcov"
-fi
-
-AC_PATH_PROG(XSLTPROC,xsltproc)
-AC_PATH_PROG(DOXYGEN,doxygen)
-AC_PATH_PROG(GCOV,gcov)
-AC_PATH_PROG(SLAPD,slapd)
-AC_CHECK_HEADERS(stdint.h dlfcn.h)
-AC_CONFIG_HEADER(include/config.h)
-AC_SEARCH_LIBS(dlopen, dl, AC_DEFINE(HAVE_DLOPEN, [1], [have dlopen]))
-
-SHLIBEXT="so" # Should be set based on OS later on
-AC_SUBST(SHLIBEXT)
-
-AC_DEFINE_UNQUOTED(MODULESDIR, LIBDIR "/ldb" , [Modules directory] )
-AC_SUBST(MODULESDIR)
-
-TESTS=""
-EXTRA_OBJ=""
-
-m4_include(libpopt.m4)
-m4_include(libtalloc.m4)
-m4_include(libtdb.m4)
-
-m4_include(ldap.m4)
-if test x"$with_ldap_support" = x"yes"; then
- LIBS="$LIBS -llber -lldap"
- CFLAGS="$CFLAGS -DHAVE_LDB_LDAP=1"
- EXTRA_OBJ="$EXTRA_OBJ ldb_ldap/ldb_ldap.o"
- TESTS="$TESTS test-ldap.sh"
-fi
-
-m4_include(sqlite3.m4)
-if test x"$with_sqlite3_support" = x"yes"; then
- LIBS="$LIBS -lsqlite3"
- CFLAGS="$CFLAGS -DHAVE_LDB_SQLITE3=1"
- EXTRA_OBJ="$EXTRA_OBJ ldb_sqlite3/ldb_sqlite3.o"
- TESTS="$TESTS test-sqlite3.sh"
-fi
-
-AC_SUBST(TESTS)
-AC_SUBST(EXTRA_OBJ)
-
-m4_include(libldb.m4)
-AC_OUTPUT(Makefile ldb.pc)
diff --git a/source/lib/ldb/docs/builddocs.sh b/source/lib/ldb/docs/builddocs.sh
deleted file mode 100755
index 449dcb26815..00000000000
--- a/source/lib/ldb/docs/builddocs.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-# build ldb docs
-# tridge@samba.org August 2006
-
-XSLTPROC="$1"
-SRCDIR="$2"
-
-if [ -z "$XSLTPROC" ] || [ ! -x "$XSLTPROC" ]; then
- echo "xsltproc not installed"
- exit 0
-fi
-
-MANXSL="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
-HTMLXSL="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"
-
-mkdir -p man
-
-for f in $SRCDIR/man/*.xml; do
- base=`basename $f .xml`
- out=man/"`basename $base`"
- if [ ! -f "$out" ] || [ "$f" -nt "$out" ]; then
- echo Processing manpage $f
- $XSLTPROC --nonet -o "$out" "$MANXSL" $f
- ret=$?
- if [ "$ret" = "4" ]; then
- echo "ignoring stylesheet error 4 for $MANXSL"
- exit 0
- fi
- if [ "$ret" != "0" ]; then
- echo "xsltproc failed with error $ret"
- exit $ret
- fi
- fi
-done
-
-for f in $SRCDIR/man/*.xml; do
- base=`basename $f .xml`
- out=man/"`basename $base`".html
- if [ ! -f "$out" ] || [ "$f" -nt "$out" ]; then
- echo Processing html $f
- $XSLTPROC --nonet -o "$out" "$HTMLXSL" $f
- ret=$?
- if [ "$ret" = "4" ]; then
- echo "ignoring stylesheet error 4 for $HTMLXSL"
- exit 0
- fi
- if [ "$ret" != "0" ]; then
- echo "xsltproc failed with error $ret"
- exit $ret
- fi
- fi
-done
diff --git a/source/lib/ldb/docs/design.txt b/source/lib/ldb/docs/design.txt
deleted file mode 100644
index 0bb278b5b42..00000000000
--- a/source/lib/ldb/docs/design.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-The list of indexed fields
---------------------------
-
-dn=@INDEXLIST
- list of field names that are indexed
-
- contains fields of type @IDXATTR which contain attriute names
- of indexed fields
-
-
-Data records
-------------
-
-for each user record in the db there is:
- main record
- key: DN=dn
- data: packed attribute/value list
-
- a index record for each indexed field in the record
-
-
-Index Records
--------------
-
-The index records contain the list of dn's that contain records
-matching the index key
-
-All index records are of the form:
- dn=@INDEX:field:value
-
-and contain fields of type @IDX which are the dns of the records
-that have that value for some attribute
-
-
-Search Expressions
-------------------
-
-Very similar to LDAP search expressions, but does not allow ~=, <= or >=
-
- attrib0 := (field=value)
- attrib := attrib0 | (attrib&&attrib) | (attrib||attrib) | !attrib
diff --git a/source/lib/ldb/docs/installdocs.sh b/source/lib/ldb/docs/installdocs.sh
deleted file mode 100755
index 6cc7b74ad51..00000000000
--- a/source/lib/ldb/docs/installdocs.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-# install ldb docs
-# tridge@samba.org August 2006
-
-MANDIR="$1"
-
-MAN1="`/bin/ls man/*.1`"
-MAN3="`/bin/ls man/*.3`"
-
-if [ -z "$MAN1" ] && [ -z "$MAN3" ]; then
- echo "No manpages have been built"
- exit 0
-fi
-
-mkdir -p "$MANDIR/man1" "$MANDIR/man3"
-cp $MAN1 "$MANDIR/man1/" || exit 1
-cp $MAN3 "$MANDIR/man3/" || exit 1
diff --git a/source/lib/ldb/examples.dox b/source/lib/ldb/examples.dox
deleted file mode 100644
index ef4b4f0a400..00000000000
--- a/source/lib/ldb/examples.dox
+++ /dev/null
@@ -1,16 +0,0 @@
-/** \example ldbreader.c
-
-The code below shows a simple LDB application.
-
-It lists / dumps the records in a LDB database to standard output.
-
-*/
-
-
-/** \example ldifreader.c
-
-The code below shows a simple LDB application.
-
-It lists / dumps the entries in an LDIF file to standard output.
-
-*/
diff --git a/source/lib/ldb/examples/ldbreader.c b/source/lib/ldb/examples/ldbreader.c
deleted file mode 100644
index 207c6c3d424..00000000000
--- a/source/lib/ldb/examples/ldbreader.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- example code for the ldb database library
-
- Copyright (C) Brad Hards (bradh@frogmouth.net) 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301 USA
-*/
-
-/** \example ldbreader.c
-
-The code below shows a simple LDB application.
-
-It lists / dumps the records in a LDB database to standard output.
-
-*/
-
-#include "includes.h"
-#include "ldb/include/ldb.h"
-#include "ldb/include/ldb_errors.h"
-
-/*
- ldb_ldif_write takes a function pointer to a custom output
- function. This version is about as simple as the output function can
- be. In a more complex example, you'd likely be doing something with
- the private data function (e.g. holding a file handle).
-*/
-static int vprintf_fn(void *private_data, const char *fmt, ...)
-{
- int retval;
- va_list ap;
-
- va_start(ap, fmt);
- /* We just write to standard output */
- retval = vprintf(fmt, ap);
- va_end(ap);
- /* Note that the function should return the number of
- bytes written, or a negative error code */
- return retval;
-}
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- const char *expression = "(dn=*)";
- struct ldb_result *resultMsg;
- int i;
-
- /*
- This is the always the first thing you want to do in an LDB
- application - initialise up the context structure.
-
- Note that you can use the context structure as a parent
- for talloc allocations as well
- */
- ldb = ldb_init(NULL);
-
- /*
- We now open the database. In this example we just hard code the connection path.
-
- Also note that the database is being opened read-only. This means that the
- call will fail unless the database already exists.
- */
- if (LDB_SUCCESS != ldb_connect(ldb, "tdb://tdbtest.ldb", LDB_FLG_RDONLY, NULL) ){
- printf("Problem on connection\n");
- exit(-1);
- }
-
- /*
- At this stage we have an open database, and can start using it. It is opened
- read-only, so a query is possible.
-
- We construct a search that just returns all the (sensible) contents. You can do
- quite fine grained results with the LDAP search syntax, however it is a bit
- confusing to start with. See RFC2254.
- */
- if (LDB_SUCCESS != ldb_search(ldb, NULL, LDB_SCOPE_DEFAULT,
- expression, NULL, &resultMsg) ) {
- printf("Problem in search\n");
- exit(-1);
- }
-
- printf("%i records returned\n", resultMsg->count);
-
- /*
- We can now iterate through the results, writing them out
- (to standard output) with our custom output routine as defined
- at the top of this file
- */
- for (i = 0; i < resultMsg->count; ++i) {
- struct ldb_ldif ldifMsg;
-
- printf("Message: %i\n", i+1);
-
- ldifMsg.changetype = LDB_CHANGETYPE_NONE;
- ldifMsg.msg = resultMsg->msgs[i];
- ldb_ldif_write(ldb, vprintf_fn, NULL, &ldifMsg);
- }
-
- /*
- There are two objects to clean up - the result from the
- ldb_search() query, and the original ldb context.
- */
- talloc_free(resultMsg);
-
- talloc_free(ldb);
-
- return 0;
-}
diff --git a/source/lib/ldb/examples/ldifreader.c b/source/lib/ldb/examples/ldifreader.c
deleted file mode 100644
index 3b8591e73fe..00000000000
--- a/source/lib/ldb/examples/ldifreader.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- example code for the ldb database library
-
- Copyright (C) Brad Hards (bradh@frogmouth.net) 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301 USA
-*/
-
-/** \example ldifreader.c
-
-The code below shows a simple LDB application.
-
-It lists / dumps the entries in an LDIF file to standard output.
-
-*/
-
-#include "includes.h"
-#include "ldb/include/ldb.h"
-#include "ldb/include/ldb_errors.h"
-
-/*
- ldb_ldif_write takes a function pointer to a custom output
- function. This version is about as simple as the output function can
- be. In a more complex example, you'd likely be doing something with
- the private data function (e.g. holding a file handle).
-*/
-static int vprintf_fn(void *private_data, const char *fmt, ...)
-{
- int retval;
- va_list ap;
-
- va_start(ap, fmt);
- /* We just write to standard output */
- retval = vprintf(fmt, ap);
- va_end(ap);
- /* Note that the function should return the number of
- bytes written, or a negative error code */
- return retval;
-}
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- FILE *fileStream;
- struct ldb_ldif *ldifMsg;
-
- if (argc != 2) {
- printf("Usage %s filename.ldif\n", argv[0]);
- exit(1);
- }
-
- /*
- This is the always the first thing you want to do in an LDB
- application - initialise up the context structure.
-
- Note that you can use the context structure as a parent
- for talloc allocations as well
- */
- ldb = ldb_init(NULL);
-
- fileStream = fopen(argv[1], "r");
- if (0 == fileStream) {
- perror(argv[1]);
- exit(1);
- }
-
- /*
- We now work through the filestream to get each entry.
- */
- while ( (ldifMsg = ldb_ldif_read_file(ldb, fileStream)) ) {
- /*
- Each message has a particular change type. For Add,
- Modify and Delete, this will also appear in the
- output listing (as changetype: add, changetype:
- modify or changetype:delete, respectively).
- */
- switch (ldifMsg->changetype) {
- case LDB_CHANGETYPE_NONE:
- printf("ChangeType: None\n");
- break;
- case LDB_CHANGETYPE_ADD:
- printf("ChangeType: Add\n");
- break;
- case LDB_CHANGETYPE_MODIFY:
- printf("ChangeType: Modify\n");
- break;
- case LDB_CHANGETYPE_DELETE:
- printf("ChangeType: Delete\n");
- break;
- default:
- printf("ChangeType: Unknown\n");
- }
-
- /*
- We can now write out the results, using our custom
- output routine as defined at the top of this file.
- */
- ldb_ldif_write(ldb, vprintf_fn, NULL, ldifMsg);
-
- /*
- Clean up the message
- */
- ldb_ldif_read_free(ldb, ldifMsg);
- }
-
- /*
- Clean up the context
- */
- talloc_free(ldb);
-
- return 0;
-}
diff --git a/source/lib/ldb/include/dlinklist.h b/source/lib/ldb/include/dlinklist.h
deleted file mode 100644
index 3779a4cc61c..00000000000
--- a/source/lib/ldb/include/dlinklist.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- some simple double linked list macros
- Copyright (C) Andrew Tridgell 1998
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/* To use these macros you must have a structure containing a next and
- prev pointer */
-
-
-/* hook into the front of the list */
-#define DLIST_ADD(list, p) \
-do { \
- if (!(list)) { \
- (list) = (p); \
- (p)->next = (p)->prev = NULL; \
- } else { \
- (list)->prev = (p); \
- (p)->next = (list); \
- (p)->prev = NULL; \
- (list) = (p); \
- }\
-} while (0)
-
-/* remove an element from a list - element doesn't have to be in list. */
-#ifndef DLIST_REMOVE
-#define DLIST_REMOVE(list, p) \
-do { \
- if ((p) == (list)) { \
- (list) = (p)->next; \
- if (list) (list)->prev = NULL; \
- } else { \
- if ((p)->prev) (p)->prev->next = (p)->next; \
- if ((p)->next) (p)->next->prev = (p)->prev; \
- } \
- if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
-} while (0)
-#endif
-
-/* promote an element to the top of the list */
-#define DLIST_PROMOTE(list, p) \
-do { \
- DLIST_REMOVE(list, p); \
- DLIST_ADD(list, p); \
-} while (0)
-
-/* hook into the end of the list - needs a tmp pointer */
-#define DLIST_ADD_END(list, p, type) \
-do { \
- if (!(list)) { \
- (list) = (p); \
- (p)->next = (p)->prev = NULL; \
- } else { \
- type tmp; \
- for (tmp = (list); tmp->next; tmp = tmp->next) ; \
- tmp->next = (p); \
- (p)->next = NULL; \
- (p)->prev = tmp; \
- } \
-} while (0)
-
-/* insert 'p' after the given element 'el' in a list. If el is NULL then
- this is the same as a DLIST_ADD() */
-#define DLIST_ADD_AFTER(list, p, el) \
-do { \
- if (!(list) || !(el)) { \
- DLIST_ADD(list, p); \
- } else { \
- p->prev = el; \
- p->next = el->next; \
- el->next = p; \
- if (p->next) p->next->prev = p; \
- }\
-} while (0)
-
-/* demote an element to the end of the list, needs a tmp pointer */
-#define DLIST_DEMOTE(list, p, tmp) \
-do { \
- DLIST_REMOVE(list, p); \
- DLIST_ADD_END(list, p, tmp); \
-} while (0)
-
-/* concatenate two lists - putting all elements of the 2nd list at the
- end of the first list */
-#define DLIST_CONCATENATE(list1, list2, type) \
-do { \
- if (!(list1)) { \
- (list1) = (list2); \
- } else { \
- type tmp; \
- for (tmp = (list1); tmp->next; tmp = tmp->next) ; \
- tmp->next = (list2); \
- if (list2) { \
- (list2)->prev = tmp; \
- } \
- } \
-} while (0)
diff --git a/source/lib/ldb/include/includes.h b/source/lib/ldb/include/includes.h
deleted file mode 100644
index e2bcca2b04b..00000000000
--- a/source/lib/ldb/include/includes.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _LDB_PRIVATE_INCLUDES_H_
-#define _LDB_PRIVATE_INCLUDES_H_
-/*
- a temporary includes file until I work on the ldb build system
-*/
-
-#if (_SAMBA_BUILD_ >= 4)
-/* tell ldb we have the internal ldap code */
-#define HAVE_ILDAP 1
-#endif
-
-#if (_SAMBA_BUILD_ <= 3)
-/* allow forbidden string functions - should be replaced with _m functions */
-#undef strcasecmp
-#undef strncasecmp
-#define dyn_MODULESDIR dyn_LIBDIR
-#endif
-
-#include "replace.h"
-#include "system/filesys.h"
-#include "system/network.h"
-#include "system/time.h"
-#include "talloc.h"
-#include "ldb.h"
-#include "ldb_errors.h"
-#include "ldb_private.h"
-#include "dlinklist.h"
-
-#endif /*_LDB_PRIVATE_INCLUDES_H_*/
diff --git a/source/lib/ldb/include/ldb.h b/source/lib/ldb/include/ldb.h
deleted file mode 100644
index f96b90a1b2d..00000000000
--- a/source/lib/ldb/include/ldb.h
+++ /dev/null
@@ -1,1561 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
- Copyright (C) Stefan Metzmacher 2004
- Copyright (C) Simo Sorce 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb header
- *
- * Description: defines for base ldb API
- *
- * Author: Andrew Tridgell
- * Author: Stefan Metzmacher
- */
-
-/**
- \file ldb.h Samba's ldb database
-
- This header file provides the main API for ldb.
-*/
-
-#ifndef _LDB_H_
-
-/*! \cond DOXYGEN_IGNORE */
-#define _LDB_H_ 1
-/*! \endcond */
-
-/*
- major restrictions as compared to normal LDAP:
-
- - no async calls.
- - each record must have a unique key field
- - the key must be representable as a NULL terminated C string and may not
- contain a comma or braces
-
- major restrictions as compared to tdb:
-
- - no explicit locking calls
- UPDATE: we have transactions now, better than locking --SSS.
-
-*/
-
-#ifndef ldb_val
-/**
- Result value
-
- An individual lump of data in a result comes in this format. The
- pointer will usually be to a UTF-8 string if the application is
- sensible, but it can be to anything you like, including binary data
- blobs of arbitrary size.
-
- \note the data is null (0x00) terminated, but the length does not
- include the terminator.
-*/
-struct ldb_val {
- uint8_t *data; /*!< result data */
- size_t length; /*!< length of data */
-};
-#endif
-
-/*! \cond DOXYGEN_IGNORE */
-#ifndef PRINTF_ATTRIBUTE
-#define PRINTF_ATTRIBUTE(a,b)
-#endif
-/*! \endcond */
-
-/* opaque ldb_dn structures, see ldb_dn.c for internals */
-struct ldb_dn_component;
-struct ldb_dn;
-
-/**
- There are a number of flags that are used with ldap_modify() in
- ldb_message_element.flags fields. The LDA_FLAGS_MOD_ADD,
- LDA_FLAGS_MOD_DELETE and LDA_FLAGS_MOD_REPLACE flags are used in
- ldap_modify() calls to specify whether attributes are being added,
- deleted or modified respectively.
-*/
-#define LDB_FLAG_MOD_MASK 0x3
-
-/**
- Flag value used in ldap_modify() to indicate that attributes are
- being added.
-
- \sa LDB_FLAG_MOD_MASK
-*/
-#define LDB_FLAG_MOD_ADD 1
-
-/**
- Flag value used in ldap_modify() to indicate that attributes are
- being replaced.
-
- \sa LDB_FLAG_MOD_MASK
-*/
-#define LDB_FLAG_MOD_REPLACE 2
-
-/**
- Flag value used in ldap_modify() to indicate that attributes are
- being deleted.
-
- \sa LDB_FLAG_MOD_MASK
-*/
-#define LDB_FLAG_MOD_DELETE 3
-
-/**
- OID for logic AND comaprison.
-
- This is the well known object ID for a logical AND comparitor.
-*/
-#define LDB_OID_COMPARATOR_AND "1.2.840.113556.1.4.803"
-
-/**
- OID for logic OR comparison.
-
- This is the well known object ID for a logical OR comparitor.
-*/
-#define LDB_OID_COMPARATOR_OR "1.2.840.113556.1.4.804"
-
-/**
- results are given back as arrays of ldb_message_element
-*/
-struct ldb_message_element {
- unsigned int flags;
- const char *name;
- unsigned int num_values;
- struct ldb_val *values;
-};
-
-
-/**
- a ldb_message represents all or part of a record. It can contain an arbitrary
- number of elements.
-*/
-struct ldb_message {
- struct ldb_dn *dn;
- unsigned int num_elements;
- struct ldb_message_element *elements;
- void *private_data; /* private to the backend */
-};
-
-enum ldb_changetype {
- LDB_CHANGETYPE_NONE=0,
- LDB_CHANGETYPE_ADD,
- LDB_CHANGETYPE_DELETE,
- LDB_CHANGETYPE_MODIFY
-};
-
-/**
- LDIF record
-
- This structure contains a LDIF record, as returned from ldif_read()
- and equivalent functions.
-*/
-struct ldb_ldif {
- enum ldb_changetype changetype; /*!< The type of change */
- struct ldb_message *msg; /*!< The changes */
-};
-
-enum ldb_scope {LDB_SCOPE_DEFAULT=-1,
- LDB_SCOPE_BASE=0,
- LDB_SCOPE_ONELEVEL=1,
- LDB_SCOPE_SUBTREE=2};
-
-struct ldb_context;
-
-/* debugging uses one of the following levels */
-enum ldb_debug_level {LDB_DEBUG_FATAL, LDB_DEBUG_ERROR,
- LDB_DEBUG_WARNING, LDB_DEBUG_TRACE};
-
-/**
- the user can optionally supply a debug function. The function
- is based on the vfprintf() style of interface, but with the addition
- of a severity level
-*/
-struct ldb_debug_ops {
- void (*debug)(void *context, enum ldb_debug_level level,
- const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3,0);
- void *context;
-};
-
-/**
- The user can optionally supply a custom utf8 functions,
- to handle comparisons and casefolding.
-*/
-struct ldb_utf8_fns {
- void *context;
- char *(*casefold)(void *context, void *mem_ctx, const char *s);
-};
-
-/**
- Flag value for database connection mode.
-
- If LDB_FLG_RDONLY is used in ldb_connect, then the database will be
- opened read-only, if possible.
-*/
-#define LDB_FLG_RDONLY 1
-
-/**
- Flag value for database connection mode.
-
- If LDB_FLG_NOSYNC is used in ldb_connect, then the database will be
- opened without synchronous operations, if possible.
-*/
-#define LDB_FLG_NOSYNC 2
-
-/**
- Flag value to specify autoreconnect mode.
-
- If LDB_FLG_RECONNECT is used in ldb_connect, then the backend will
- be opened in a way that makes it try to auto reconnect if the
- connection is dropped (actually make sense only with ldap).
-*/
-#define LDB_FLG_RECONNECT 4
-
-/**
- Flag to tell backends not to use mmap
-*/
-#define LDB_FLG_NOMMAP 8
-
-/*
- structures for ldb_parse_tree handling code
-*/
-enum ldb_parse_op { LDB_OP_AND=1, LDB_OP_OR=2, LDB_OP_NOT=3,
- LDB_OP_EQUALITY=4, LDB_OP_SUBSTRING=5,
- LDB_OP_GREATER=6, LDB_OP_LESS=7, LDB_OP_PRESENT=8,
- LDB_OP_APPROX=9, LDB_OP_EXTENDED=10 };
-
-struct ldb_parse_tree {
- enum ldb_parse_op operation;
- union {
- struct {
- struct ldb_parse_tree *child;
- } isnot;
- struct {
- const char *attr;
- struct ldb_val value;
- } equality;
- struct {
- const char *attr;
- int start_with_wildcard;
- int end_with_wildcard;
- struct ldb_val **chunks;
- } substring;
- struct {
- const char *attr;
- } present;
- struct {
- const char *attr;
- struct ldb_val value;
- } comparison;
- struct {
- const char *attr;
- int dnAttributes;
- char *rule_id;
- struct ldb_val value;
- } extended;
- struct {
- unsigned int num_elements;
- struct ldb_parse_tree **elements;
- } list;
- } u;
-};
-
-struct ldb_parse_tree *ldb_parse_tree(void *mem_ctx, const char *s);
-char *ldb_filter_from_tree(void *mem_ctx, struct ldb_parse_tree *tree);
-
-/**
- Encode a binary blob
-
- This function encodes a binary blob using the encoding rules in RFC
- 2254 (Section 4). This function also escapes any non-printable
- characters.
-
- \param ctx the memory context to allocate the return string in.
- \param val the (potentially) binary data to be encoded
-
- \return the encoded data as a null terminated string
-
- \sa <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a>.
-*/
-char *ldb_binary_encode(void *ctx, struct ldb_val val);
-
-/**
- Encode a string
-
- This function encodes a string using the encoding rules in RFC 2254
- (Section 4). This function also escapes any non-printable
- characters.
-
- \param mem_ctx the memory context to allocate the return string in.
- \param string the string to be encoded
-
- \return the encoded data as a null terminated string
-
- \sa <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a>.
-*/
-char *ldb_binary_encode_string(void *mem_ctx, const char *string);
-
-/*
- functions for controlling attribute handling
-*/
-typedef int (*ldb_attr_handler_t)(struct ldb_context *, void *mem_ctx, const struct ldb_val *, struct ldb_val *);
-typedef int (*ldb_attr_comparison_t)(struct ldb_context *, void *mem_ctx, const struct ldb_val *, const struct ldb_val *);
-
-/*
- attribute handler structure
-
- attr -> The attribute name
- flags -> LDB_ATTR_FLAG_*
- ldif_read_fn -> convert from ldif to binary format
- ldif_write_fn -> convert from binary to ldif format
- canonicalise_fn -> canonicalise a value, for use by indexing and dn construction
- comparison_fn -> compare two values
-*/
-
-struct ldb_attrib_handler {
-
- const char *attr;
- unsigned flags;
-
- ldb_attr_handler_t ldif_read_fn;
- ldb_attr_handler_t ldif_write_fn;
- ldb_attr_handler_t canonicalise_fn;
- ldb_attr_comparison_t comparison_fn;
-};
-
-/**
- The attribute is not returned by default
-*/
-#define LDB_ATTR_FLAG_HIDDEN (1<<0)
-
-/* the attribute handler name should be freed when released */
-#define LDB_ATTR_FLAG_ALLOCATED (1<<1)
-
-/**
- The attribute is constructed from other attributes
-*/
-#define LDB_ATTR_FLAG_CONSTRUCTED (1<<1)
-
-/**
- LDAP attribute syntax for a DN
-
- This is the well-known LDAP attribute syntax for a DN.
-
- See <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a>, Section 4.3.2
-*/
-#define LDB_SYNTAX_DN "1.3.6.1.4.1.1466.115.121.1.12"
-
-/**
- LDAP attribute syntax for a Directory String
-
- This is the well-known LDAP attribute syntax for a Directory String.
-
- \sa <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a>, Section 4.3.2
-*/
-#define LDB_SYNTAX_DIRECTORY_STRING "1.3.6.1.4.1.1466.115.121.1.15"
-
-/**
- LDAP attribute syntax for an integer
-
- This is the well-known LDAP attribute syntax for an integer.
-
- See <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a>, Section 4.3.2
-*/
-#define LDB_SYNTAX_INTEGER "1.3.6.1.4.1.1466.115.121.1.27"
-
-/**
- LDAP attribute syntax for an octet string
-
- This is the well-known LDAP attribute syntax for an octet string.
-
- See <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a>, Section 4.3.2
-*/
-#define LDB_SYNTAX_OCTET_STRING "1.3.6.1.4.1.1466.115.121.1.40"
-
-/**
- LDAP attribute syntax for UTC time.
-
- This is the well-known LDAP attribute syntax for a UTC time.
-
- See <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a>, Section 4.3.2
-*/
-#define LDB_SYNTAX_UTC_TIME "1.3.6.1.4.1.1466.115.121.1.53"
-
-#define LDB_SYNTAX_OBJECTCLASS "LDB_SYNTAX_OBJECTCLASS"
-
-/* sorting helpers */
-typedef int (*ldb_qsort_cmp_fn_t) (void *v1, void *v2, void *opaque);
-
-/**
- OID for the paged results control. This control is included in the
- searchRequest and searchResultDone messages as part of the controls
- field of the LDAPMessage, as defined in Section 4.1.12 of
- LDAP v3.
-
- \sa <a href="http://www.ietf.org/rfc/rfc2696.txt">RFC 2696</a>.
-*/
-#define LDB_CONTROL_PAGED_RESULTS_OID "1.2.840.113556.1.4.319"
-
-/**
- OID for specifying the returned elements of the ntSecurityDescriptor
-
- \sa <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/ldap_server_sd_flags_oid.asp">Microsoft documentation of this OID</a>
-*/
-#define LDB_CONTROL_SD_FLAGS_OID "1.2.840.113556.1.4.801"
-
-/**
- OID for specifying an advanced scope for the search (one partition)
-
- \sa <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/ldap_server_domain_scope_oid.asp">Microsoft documentation of this OID</a>
-*/
-#define LDB_CONTROL_DOMAIN_SCOPE_OID "1.2.840.113556.1.4.1339"
-
-/**
- OID for specifying an advanced scope for a search
-
- \sa <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/ldap_server_search_options_oid.asp">Microsoft documentation of this OID</a>
-*/
-#define LDB_CONTROL_SEARCH_OPTIONS_OID "1.2.840.113556.1.4.1340"
-
-/**
- OID for notification
-
- \sa <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/ldap_server_notification_oid.asp">Microsoft documentation of this OID</a>
-*/
-#define LDB_CONTROL_NOTIFICATION_OID "1.2.840.113556.1.4.528"
-
-/**
- OID for getting deleted objects
-
- \sa <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/ldap_server_show_deleted_oid.asp">Microsoft documentation of this OID</a>
-*/
-#define LDB_CONTROL_SHOW_DELETED_OID "1.2.840.113556.1.4.417"
-
-/**
- OID for extended DN
-
- \sa <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/ldap_server_extended_dn_oid.asp">Microsoft documentation of this OID</a>
-*/
-#define LDB_CONTROL_EXTENDED_DN_OID "1.2.840.113556.1.4.529"
-
-/**
- OID for LDAP server sort result extension.
-
- This control is included in the searchRequest message as part of
- the controls field of the LDAPMessage, as defined in Section 4.1.12
- of LDAP v3. The controlType is set to
- "1.2.840.113556.1.4.473". The criticality MAY be either TRUE or
- FALSE (where absent is also equivalent to FALSE) at the client's
- option.
-
- \sa <a href="http://www.ietf.org/rfc/rfc2891.txt">RFC 2891</a>.
-*/
-#define LDB_CONTROL_SERVER_SORT_OID "1.2.840.113556.1.4.473"
-
-/**
- OID for LDAP server sort result response extension.
-
- This control is included in the searchResultDone message as part of
- the controls field of the LDAPMessage, as defined in Section 4.1.12 of
- LDAP v3.
-
- \sa <a href="http://www.ietf.org/rfc/rfc2891.txt">RFC 2891</a>.
-*/
-#define LDB_CONTROL_SORT_RESP_OID "1.2.840.113556.1.4.474"
-
-/**
- OID for LDAP Attribute Scoped Query extension.
-
- This control is included in SearchRequest or SearchResponse
- messages as part of the controls field of the LDAPMessage.
-*/
-#define LDB_CONTROL_ASQ_OID "1.2.840.113556.1.4.1504"
-
-/**
- OID for LDAP Directory Sync extension.
-
- This control is included in SearchRequest or SearchResponse
- messages as part of the controls field of the LDAPMessage.
-*/
-#define LDB_CONTROL_DIRSYNC_OID "1.2.840.113556.1.4.841"
-
-
-/**
- OID for LDAP Virtual List View Request extension.
-
- This control is included in SearchRequest messages
- as part of the controls field of the LDAPMessage.
-*/
-#define LDB_CONTROL_VLV_REQ_OID "2.16.840.1.113730.3.4.9"
-
-/**
- OID for LDAP Virtual List View Response extension.
-
- This control is included in SearchResponse messages
- as part of the controls field of the LDAPMessage.
-*/
-#define LDB_CONTROL_VLV_RESP_OID "2.16.840.1.113730.3.4.10"
-
-/**
- OID to let modifies don't give an error when adding an existing
- attribute with the same value or deleting an nonexisting one attribute
-
- \sa <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/ldap_server_permissive_modify_oid.asp">Microsoft documentation of this OID</a>
-*/
-#define LDB_CONTROL_PERMISSIVE_MODIFY_OID "1.2.840.113556.1.4.1413"
-
-/**
- OID for LDAP Extended Operation START_TLS.
-
- This Extended operation is used to start a new TLS
- channel on top of a clear text channel.
-*/
-#define LDB_EXTENDED_START_TLS_OID "1.3.6.1.4.1.1466.20037"
-
-/**
- OID for LDAP Extended Operation START_TLS.
-
- This Extended operation is used to start a new TLS
- channel on top of a clear text channel.
-*/
-#define LDB_EXTENDED_DYNAMIC_OID "1.3.6.1.4.1.1466.101.119.1"
-
-/**
- OID for LDAP Extended Operation START_TLS.
-
- This Extended operation is used to start a new TLS
- channel on top of a clear text channel.
-*/
-#define LDB_EXTENDED_FAST_BIND_OID "1.2.840.113556.1.4.1781"
-
-struct ldb_sd_flags_control {
- /*
- * request the owner 0x00000001
- * request the group 0x00000002
- * request the DACL 0x00000004
- * request the SACL 0x00000008
- */
- unsigned secinfo_flags;
-};
-
-struct ldb_search_options_control {
- /*
- * DOMAIN_SCOPE 0x00000001
- * this limits the search to one partition,
- * and no referrals will be returned.
- * (Note this doesn't limit the entries by there
- * objectSid belonging to a domain! Builtin and Foreign Sids
- * are still returned)
- *
- * PHANTOM_ROOT 0x00000002
- * this search on the whole tree on a domain controller
- * over multiple partitions without referrals.
- * (This is the default behavior on the Global Catalog Port)
- */
- unsigned search_options;
-};
-
-struct ldb_paged_control {
- int size;
- int cookie_len;
- char *cookie;
-};
-
-struct ldb_extended_dn_control {
- int type;
-};
-
-struct ldb_server_sort_control {
- char *attributeName;
- char *orderingRule;
- int reverse;
-};
-
-struct ldb_sort_resp_control {
- int result;
- char *attr_desc;
-};
-
-struct ldb_asq_control {
- int request;
- char *source_attribute;
- int src_attr_len;
- int result;
-};
-
-struct ldb_dirsync_control {
- int flags;
- int max_attributes;
- int cookie_len;
- char *cookie;
-};
-
-struct ldb_vlv_req_control {
- int beforeCount;
- int afterCount;
- int type;
- union {
- struct {
- int offset;
- int contentCount;
- } byOffset;
- struct {
- int value_len;
- char *value;
- } gtOrEq;
- } match;
- int ctxid_len;
- char *contextId;
-};
-
-struct ldb_vlv_resp_control {
- int targetPosition;
- int contentCount;
- int vlv_result;
- int ctxid_len;
- char *contextId;
-};
-
-struct ldb_control {
- const char *oid;
- int critical;
- void *data;
-};
-
-enum ldb_request_type {
- LDB_SEARCH,
- LDB_ADD,
- LDB_MODIFY,
- LDB_DELETE,
- LDB_RENAME,
- LDB_EXTENDED,
- LDB_REQ_REGISTER_CONTROL,
- LDB_REQ_REGISTER_PARTITION,
- LDB_SEQUENCE_NUMBER
-};
-
-enum ldb_reply_type {
- LDB_REPLY_ENTRY,
- LDB_REPLY_REFERRAL,
- LDB_REPLY_EXTENDED,
- LDB_REPLY_DONE
-};
-
-enum ldb_wait_type {
- LDB_WAIT_ALL,
- LDB_WAIT_NONE
-};
-
-enum ldb_state {
- LDB_ASYNC_INIT,
- LDB_ASYNC_PENDING,
- LDB_ASYNC_DONE
-};
-
-struct ldb_result {
- unsigned int count;
- struct ldb_message **msgs;
- char **refs;
- struct ldb_control **controls;
-};
-
-struct ldb_extended {
- const char *oid;
- const char *value;
- int value_len;
-};
-
-struct ldb_reply {
- enum ldb_reply_type type;
- struct ldb_message *message;
- struct ldb_extended *response;
- char *referral;
- struct ldb_control **controls;
-};
-
-struct ldb_handle {
- int status;
- enum ldb_state state;
- void *private_data;
- struct ldb_module *module;
-};
-
-struct ldb_search {
- const struct ldb_dn *base;
- enum ldb_scope scope;
- const struct ldb_parse_tree *tree;
- const char * const *attrs;
- struct ldb_result *res;
-};
-
-struct ldb_add {
- const struct ldb_message *message;
-};
-
-struct ldb_modify {
- const struct ldb_message *message;
-};
-
-struct ldb_delete {
- const struct ldb_dn *dn;
-};
-
-struct ldb_rename {
- const struct ldb_dn *olddn;
- const struct ldb_dn *newdn;
-};
-
-struct ldb_register_control {
- const char *oid;
-};
-
-struct ldb_register_partition {
- const struct ldb_dn *dn;
-};
-
-struct ldb_sequence_number {
- enum ldb_sequence_type {
- LDB_SEQ_HIGHEST_SEQ,
- LDB_SEQ_HIGHEST_TIMESTAMP,
- LDB_SEQ_NEXT
- } type;
- uint64_t seq_num;
- uint32_t flags;
-};
-
-typedef int (*ldb_request_callback_t)(struct ldb_context *, void *, struct ldb_reply *);
-struct ldb_request {
-
- enum ldb_request_type operation;
-
- union {
- struct ldb_search search;
- struct ldb_add add;
- struct ldb_modify mod;
- struct ldb_delete del;
- struct ldb_rename rename;
- struct ldb_register_control reg_control;
- struct ldb_register_partition reg_partition;
- struct ldb_sequence_number seq_num;
- } op;
-
- struct ldb_control **controls;
-
- void *context;
- ldb_request_callback_t callback;
-
- int timeout;
- time_t starttime;
- struct ldb_handle *handle;
-};
-
-int ldb_request(struct ldb_context *ldb, struct ldb_request *request);
-
-int ldb_wait(struct ldb_handle *handle, enum ldb_wait_type type);
-
-int ldb_set_timeout(struct ldb_context *ldb, struct ldb_request *req, int timeout);
-int ldb_set_timeout_from_prev_req(struct ldb_context *ldb, struct ldb_request *oldreq, struct ldb_request *newreq);
-void ldb_set_create_perms(struct ldb_context *ldb, unsigned int perms);
-
-/**
- Initialise ldbs' global information
-
- This is required before any other LDB call
-
- \return 0 if initialisation succeeded, -1 otherwise
-*/
-int ldb_global_init(void);
-
-/**
- Initialise an ldb context
-
- This is required before any other LDB call.
-
- \param mem_ctx pointer to a talloc memory context. Pass NULL if there is
- no suitable context available.
-
- \return pointer to ldb_context that should be free'd (using talloc_free())
- at the end of the program.
-*/
-struct ldb_context *ldb_init(void *mem_ctx);
-
-/**
- Connect to a database.
-
- This is typically called soon after ldb_init(), and is required prior to
- any search or database modification operations.
-
- The URL can be one of the following forms:
- - tdb://path
- - ldapi://path
- - ldap://host
- - sqlite://path
-
- \param ldb the context associated with the database (from ldb_init())
- \param url the URL of the database to connect to, as noted above
- \param flags a combination of LDB_FLG_* to modify the connection behaviour
- \param options backend specific options - passed uninterpreted to the backend
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-
- \note It is an error to connect to a database that does not exist in readonly mode
- (that is, with LDB_FLG_RDONLY). However in read-write mode, the database will be
- created if it does not exist.
-*/
-int ldb_connect(struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[]);
-
-/*
- return an automatic baseDN from the defaultNamingContext of the rootDSE
- This value have been set in an opaque pointer at connection time
-*/
-const struct ldb_dn *ldb_get_default_basedn(struct ldb_context *ldb);
-
-
-/**
- The Default iasync search callback function
-
- \param ldb the context associated with the database (from ldb_init())
- \param context the callback context
- \param ares a single reply from the async core
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-
- \note this function expects the context to always be an struct ldb_result pointer
- AND a talloc context, this function will steal on the context each message
- from the ares reply passed on by the async core so that in the end all the
- messages will be in the context (ldb_result) memory tree.
- Freeing the passed context (ldb_result tree) will free all the resources
- (the request need to be freed separately and the result doe not depend on the
- request that can be freed as sson as the search request is finished)
-*/
-
-int ldb_search_default_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares);
-
-/**
- Helper function to build a search request
-
- \param ret_req the request structure is returned here (talloced on mem_ctx)
- \param ldb the context associated with the database (from ldb_init())
- \param mem_ctx a talloc emmory context (used as parent of ret_req)
- \param base the Base Distinguished Name for the query (use ldb_dn_new() for an empty one)
- \param scope the search scope for the query
- \param expression the search expression to use for this query
- \param attrs the search attributes for the query (pass NULL if none required)
- \param controls an array of controls
- \param context the callback function context
- \param the callback function to handle the async replies
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-*/
-
-int ldb_build_search_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_dn *base,
- enum ldb_scope scope,
- const char *expression,
- const char * const *attrs,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback);
-
-/**
- Helper function to build an add request
-
- \param ret_req the request structure is returned here (talloced on mem_ctx)
- \param ldb the context associated with the database (from ldb_init())
- \param mem_ctx a talloc emmory context (used as parent of ret_req)
- \param message contains the entry to be added
- \param controls an array of controls
- \param context the callback function context
- \param the callback function to handle the async replies
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-*/
-
-int ldb_build_add_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_message *message,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback);
-
-/**
- Helper function to build a modify request
-
- \param ret_req the request structure is returned here (talloced on mem_ctx)
- \param ldb the context associated with the database (from ldb_init())
- \param mem_ctx a talloc emmory context (used as parent of ret_req)
- \param message contains the entry to be modified
- \param controls an array of controls
- \param context the callback function context
- \param the callback function to handle the async replies
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-*/
-
-int ldb_build_mod_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_message *message,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback);
-
-/**
- Helper function to build a delete request
-
- \param ret_req the request structure is returned here (talloced on mem_ctx)
- \param ldb the context associated with the database (from ldb_init())
- \param mem_ctx a talloc emmory context (used as parent of ret_req)
- \param dn the DN to be deleted
- \param controls an array of controls
- \param context the callback function context
- \param the callback function to handle the async replies
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-*/
-
-int ldb_build_del_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_dn *dn,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback);
-
-/**
- Helper function to build a rename request
-
- \param ret_req the request structure is returned here (talloced on mem_ctx)
- \param ldb the context associated with the database (from ldb_init())
- \param mem_ctx a talloc emmory context (used as parent of ret_req)
- \param olddn the old DN
- \param newdn the new DN
- \param controls an array of controls
- \param context the callback function context
- \param the callback function to handle the async replies
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-*/
-
-int ldb_build_rename_req(struct ldb_request **ret_req,
- struct ldb_context *ldb,
- void *mem_ctx,
- const struct ldb_dn *olddn,
- const struct ldb_dn *newdn,
- struct ldb_control **controls,
- void *context,
- ldb_request_callback_t callback);
-
-/**
- Search the database
-
- This function searches the database, and returns
- records that match an LDAP-like search expression
-
- \param ldb the context associated with the database (from ldb_init())
- \param base the Base Distinguished Name for the query (use ldb_dn_new() for an empty one)
- \param scope the search scope for the query
- \param expression the search expression to use for this query
- \param attrs the search attributes for the query (pass NULL if none required)
- \param res the return result
-
- \return result code (LDB_SUCCESS on success, or a failure code)
-
- \note use talloc_free() to free the ldb_result returned
-*/
-int ldb_search(struct ldb_context *ldb,
- const struct ldb_dn *base,
- enum ldb_scope scope,
- const char *expression,
- const char * const *attrs, struct ldb_result **res);
-
-/*
- * a useful search function where you can easily define the expression and
- * that takes a memory context where results are allocated
-*/
-
-int ldb_search_exp_fmt(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
- struct ldb_result **result, struct ldb_dn *base,
- enum ldb_scope scope, const char * const *attrs,
- const char *exp_fmt, ...);
-
-/*
- like ldb_search() but takes a parse tree
-*/
-int ldb_search_bytree(struct ldb_context *ldb,
- const struct ldb_dn *base,
- enum ldb_scope scope,
- struct ldb_parse_tree *tree,
- const char * const *attrs, struct ldb_result **res);
-
-/**
- Add a record to the database.
-
- This function adds a record to the database. This function will fail
- if a record with the specified class and key already exists in the
- database.
-
- \param ldb the context associated with the database (from
- ldb_init())
- \param message the message containing the record to add.
-
- \return result code (LDB_SUCCESS if the record was added, otherwise
- a failure code)
-*/
-int ldb_add(struct ldb_context *ldb,
- const struct ldb_message *message);
-
-/**
- Modify the specified attributes of a record
-
- This function modifies a record that is in the database.
-
- \param ldb the context associated with the database (from
- ldb_init())
- \param message the message containing the changes required.
-
- \return result code (LDB_SUCCESS if the record was modified as
- requested, otherwise a failure code)
-*/
-int ldb_modify(struct ldb_context *ldb,
- const struct ldb_message *message);
-
-/**
- Rename a record in the database
-
- This function renames a record in the database.
-
- \param ldb the context associated with the database (from
- ldb_init())
- \param olddn the DN for the record to be renamed.
- \param newdn the new DN
-
- \return result code (LDB_SUCCESS if the record was renamed as
- requested, otherwise a failure code)
-*/
-int ldb_rename(struct ldb_context *ldb, const struct ldb_dn *olddn, const struct ldb_dn *newdn);
-
-/**
- Delete a record from the database
-
- This function deletes a record from the database.
-
- \param ldb the context associated with the database (from
- ldb_init())
- \param dn the DN for the record to be deleted.
-
- \return result code (LDB_SUCCESS if the record was deleted,
- otherwise a failure code)
-*/
-int ldb_delete(struct ldb_context *ldb, const struct ldb_dn *dn);
-
-/**
- start a transaction
-*/
-int ldb_transaction_start(struct ldb_context *ldb);
-
-/**
- commit a transaction
-*/
-int ldb_transaction_commit(struct ldb_context *ldb);
-
-/**
- cancel a transaction
-*/
-int ldb_transaction_cancel(struct ldb_context *ldb);
-
-
-/**
- return extended error information from the last call
-*/
-const char *ldb_errstring(struct ldb_context *ldb);
-
-/**
- return a string explaining what a ldb error constant meancs
-*/
-const char *ldb_strerror(int ldb_err);
-
-/**
- setup the default utf8 functions
- FIXME: these functions do not yet handle utf8
-*/
-void ldb_set_utf8_default(struct ldb_context *ldb);
-
-/**
- Casefold a string
-
- \param ldb the ldb context
- \param mem_ctx the memory context to allocate the result string
- memory from.
- \param s the string that is to be folded
- \return a copy of the string, converted to upper case
-
- \note The default function is not yet UTF8 aware. Provide your own
- set of functions through ldb_set_utf8_fns()
-*/
-char *ldb_casefold(struct ldb_context *ldb, void *mem_ctx, const char *s);
-
-/**
- Check the attribute name is valid according to rfc2251
- \param s tthe string to check
-
- \return 1 if the name is ok
-*/
-int ldb_valid_attr_name(const char *s);
-
-/*
- ldif manipulation functions
-*/
-/**
- Write an LDIF message
-
- This function writes an LDIF message using a caller supplied write
- function.
-
- \param ldb the ldb context (from ldb_init())
- \param fprintf_fn a function pointer for the write function. This must take
- a private data pointer, followed by a format string, and then a variable argument
- list.
- \param private_data pointer that will be provided back to the write
- function. This is useful for maintaining state or context.
- \param ldif the message to write out
-
- \return the total number of bytes written, or an error code as returned
- from the write function.
-
- \sa ldb_ldif_write_file for a more convenient way to write to a
- file stream.
-
- \sa ldb_ldif_read for the reader equivalent to this function.
-*/
-int ldb_ldif_write(struct ldb_context *ldb,
- int (*fprintf_fn)(void *, const char *, ...) PRINTF_ATTRIBUTE(2,3),
- void *private_data,
- const struct ldb_ldif *ldif);
-
-/**
- Clean up an LDIF message
-
- This function cleans up a LDIF message read using ldb_ldif_read()
- or related functions (such as ldb_ldif_read_string() and
- ldb_ldif_read_file().
-
- \param ldb the ldb context (from ldb_init())
- \param msg the message to clean up and free
-
-*/
-void ldb_ldif_read_free(struct ldb_context *ldb, struct ldb_ldif *msg);
-
-/**
- Read an LDIF message
-
- This function creates an LDIF message using a caller supplied read
- function.
-
- \param ldb the ldb context (from ldb_init())
- \param fgetc_fn a function pointer for the read function. This must
- take a private data pointer, and must return a pointer to an
- integer corresponding to the next byte read (or EOF if there is no
- more data to be read).
- \param private_data pointer that will be provided back to the read
- function. This is udeful for maintaining state or context.
-
- \return the LDIF message that has been read in
-
- \note You must free the LDIF message when no longer required, using
- ldb_ldif_read_free().
-
- \sa ldb_ldif_read_file for a more convenient way to read from a
- file stream.
-
- \sa ldb_ldif_read_string for a more convenient way to read from a
- string (char array).
-
- \sa ldb_ldif_write for the writer equivalent to this function.
-*/
-struct ldb_ldif *ldb_ldif_read(struct ldb_context *ldb,
- int (*fgetc_fn)(void *), void *private_data);
-
-/**
- Read an LDIF message from a file
-
- This function reads the next LDIF message from the contents of a
- file stream. If you want to get all of the LDIF messages, you will
- need to repeatedly call this function, until it returns NULL.
-
- \param ldb the ldb context (from ldb_init())
- \param f the file stream to read from (typically from fdopen())
-
- \sa ldb_ldif_read_string for an equivalent function that will read
- from a string (char array).
-
- \sa ldb_ldif_write_file for the writer equivalent to this function.
-
-*/
-struct ldb_ldif *ldb_ldif_read_file(struct ldb_context *ldb, FILE *f);
-
-/**
- Read an LDIF message from a string
-
- This function reads the next LDIF message from the contents of a char
- array. If you want to get all of the LDIF messages, you will need
- to repeatedly call this function, until it returns NULL.
-
- \param ldb the ldb context (from ldb_init())
- \param s pointer to the char array to read from
-
- \sa ldb_ldif_read_file for an equivalent function that will read
- from a file stream.
-
- \sa ldb_ldif_write for a more general (arbitrary read function)
- version of this function.
-*/
-struct ldb_ldif *ldb_ldif_read_string(struct ldb_context *ldb, const char **s);
-
-/**
- Write an LDIF message to a file
-
- \param ldb the ldb context (from ldb_init())
- \param f the file stream to write to (typically from fdopen())
- \param msg the message to write out
-
- \return the total number of bytes written, or a negative error code
-
- \sa ldb_ldif_read_file for the reader equivalent to this function.
-*/
-int ldb_ldif_write_file(struct ldb_context *ldb, FILE *f, const struct ldb_ldif *msg);
-
-/**
- Base64 encode a buffer
-
- \param mem_ctx the memory context that the result is allocated
- from.
- \param buf pointer to the array that is to be encoded
- \param len the number of elements in the array to be encoded
-
- \return pointer to an array containing the encoded data
-
- \note The caller is responsible for freeing the result
-*/
-char *ldb_base64_encode(void *mem_ctx, const char *buf, int len);
-
-/**
- Base64 decode a buffer
-
- This function decodes a base64 encoded string in place.
-
- \param s the string to decode.
-
- \return the length of the returned (decoded) string.
-
- \note the string is null terminated, but the null terminator is not
- included in the length.
-*/
-int ldb_base64_decode(char *s);
-
-int ldb_attrib_add_handlers(struct ldb_context *ldb,
- const struct ldb_attrib_handler *handlers,
- unsigned num_handlers);
-
-/* The following definitions come from lib/ldb/common/ldb_dn.c */
-
-int ldb_dn_is_special(const struct ldb_dn *dn);
-int ldb_dn_check_special(const struct ldb_dn *dn, const char *check);
-char *ldb_dn_escape_value(void *mem_ctx, struct ldb_val value);
-struct ldb_dn *ldb_dn_new(void *mem_ctx);
-struct ldb_dn *ldb_dn_explode(void *mem_ctx, const char *dn);
-struct ldb_dn *ldb_dn_explode_or_special(void *mem_ctx, const char *dn);
-char *ldb_dn_linearize(void *mem_ctx, const struct ldb_dn *edn);
-char *ldb_dn_linearize_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn);
-int ldb_dn_compare_base(struct ldb_context *ldb, const struct ldb_dn *base, const struct ldb_dn *dn);
-int ldb_dn_compare(struct ldb_context *ldb, const struct ldb_dn *edn0, const struct ldb_dn *edn1);
-struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn);
-struct ldb_dn *ldb_dn_explode_casefold(struct ldb_context *ldb, void *mem_ctx, const char *dn);
-struct ldb_dn *ldb_dn_copy_partial(void *mem_ctx, const struct ldb_dn *dn, int num_el);
-struct ldb_dn *ldb_dn_copy(void *mem_ctx, const struct ldb_dn *dn);
-struct ldb_dn *ldb_dn_copy_rebase(void *mem_ctx, const struct ldb_dn *old, const struct ldb_dn *old_base, const struct ldb_dn *new_base);
-struct ldb_dn *ldb_dn_get_parent(void *mem_ctx, const struct ldb_dn *dn);
-struct ldb_dn_component *ldb_dn_build_component(void *mem_ctx, const char *attr,
- const char *val);
-struct ldb_dn *ldb_dn_build_child(void *mem_ctx, const char *attr,
- const char * value,
- const struct ldb_dn *base);
-struct ldb_dn *ldb_dn_compose(void *mem_ctx, const struct ldb_dn *dn1, const struct ldb_dn *dn2);
-struct ldb_dn *ldb_dn_string_compose(void *mem_ctx, const struct ldb_dn *base, const char *child_fmt, ...) PRINTF_ATTRIBUTE(3,4);
-char *ldb_dn_canonical_string(void *mem_ctx, const struct ldb_dn *dn);
-char *ldb_dn_canonical_ex_string(void *mem_ctx, const struct ldb_dn *dn);
-int ldb_dn_get_comp_num(const struct ldb_dn *dn);
-const char *ldb_dn_get_component_name(const struct ldb_dn *dn, unsigned int num);
-const struct ldb_val *ldb_dn_get_component_val(const struct ldb_dn *dn, unsigned int num);
-const char *ldb_dn_get_rdn_name(const struct ldb_dn *dn);
-const struct ldb_val *ldb_dn_get_rdn_val(const struct ldb_dn *dn);
-int ldb_dn_set_component(struct ldb_dn *dn, int num, const char *name, const struct ldb_val val);
-
-
-
-/* useful functions for ldb_message structure manipulation */
-int ldb_dn_cmp(struct ldb_context *ldb, const char *dn1, const char *dn2);
-
-/**
- Compare two attributes
-
- This function compares to attribute names. Note that this is a
- case-insensitive comparison.
-
- \param attr1 the first attribute name to compare
- \param attr2 the second attribute name to compare
-
- \return 0 if the attribute names are the same, or only differ in
- case; non-zero if there are any differences
-*/
-int ldb_attr_cmp(const char *attr1, const char *attr2);
-char *ldb_attr_casefold(void *mem_ctx, const char *s);
-int ldb_attr_dn(const char *attr);
-
-/**
- Create an empty message
-
- \param mem_ctx the memory context to create in. You can pass NULL
- to get the top level context, however the ldb context (from
- ldb_init()) may be a better choice
-*/
-struct ldb_message *ldb_msg_new(void *mem_ctx);
-
-/**
- Find an element within an message
-*/
-struct ldb_message_element *ldb_msg_find_element(const struct ldb_message *msg,
- const char *attr_name);
-
-/**
- Compare two ldb_val values
-
- \param v1 first ldb_val structure to be tested
- \param v2 second ldb_val structure to be tested
-
- \return 1 for a match, 0 if there is any difference
-*/
-int ldb_val_equal_exact(const struct ldb_val *v1, const struct ldb_val *v2);
-
-/**
- find a value within an ldb_message_element
-
- \param el the element to search
- \param val the value to search for
-
- \note This search is case sensitive
-*/
-struct ldb_val *ldb_msg_find_val(const struct ldb_message_element *el,
- struct ldb_val *val);
-
-/**
- add a new empty element to a ldb_message
-*/
-int ldb_msg_add_empty(struct ldb_message *msg,
- const char *attr_name,
- int flags,
- struct ldb_message_element **return_el);
-
-/**
- add a element to a ldb_message
-*/
-int ldb_msg_add(struct ldb_message *msg,
- const struct ldb_message_element *el,
- int flags);
-int ldb_msg_add_value(struct ldb_message *msg,
- const char *attr_name,
- const struct ldb_val *val,
- struct ldb_message_element **return_el);
-int ldb_msg_add_steal_value(struct ldb_message *msg,
- const char *attr_name,
- struct ldb_val *val);
-int ldb_msg_add_steal_string(struct ldb_message *msg,
- const char *attr_name, char *str);
-int ldb_msg_add_string(struct ldb_message *msg,
- const char *attr_name, const char *str);
-int ldb_msg_add_fmt(struct ldb_message *msg,
- const char *attr_name, const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);
-
-/**
- compare two message elements - return 0 on match
-*/
-int ldb_msg_element_compare(struct ldb_message_element *el1,
- struct ldb_message_element *el2);
-
-/**
- Find elements in a message.
-
- This function finds elements and converts to a specific type, with
- a give default value if not found. Assumes that elements are
- single valued.
-*/
-const struct ldb_val *ldb_msg_find_ldb_val(const struct ldb_message *msg, const char *attr_name);
-int ldb_msg_find_attr_as_int(const struct ldb_message *msg,
- const char *attr_name,
- int default_value);
-unsigned int ldb_msg_find_attr_as_uint(const struct ldb_message *msg,
- const char *attr_name,
- unsigned int default_value);
-int64_t ldb_msg_find_attr_as_int64(const struct ldb_message *msg,
- const char *attr_name,
- int64_t default_value);
-uint64_t ldb_msg_find_attr_as_uint64(const struct ldb_message *msg,
- const char *attr_name,
- uint64_t default_value);
-double ldb_msg_find_attr_as_double(const struct ldb_message *msg,
- const char *attr_name,
- double default_value);
-int ldb_msg_find_attr_as_bool(const struct ldb_message *msg,
- const char *attr_name,
- int default_value);
-const char *ldb_msg_find_attr_as_string(const struct ldb_message *msg,
- const char *attr_name,
- const char *default_value);
-
-struct ldb_dn *ldb_msg_find_attr_as_dn(void *mem_ctx,
- const struct ldb_message *msg,
- const char *attr_name);
-
-void ldb_msg_sort_elements(struct ldb_message *msg);
-
-struct ldb_message *ldb_msg_copy_shallow(void *mem_ctx,
- const struct ldb_message *msg);
-struct ldb_message *ldb_msg_copy(void *mem_ctx,
- const struct ldb_message *msg);
-
-struct ldb_message *ldb_msg_canonicalize(struct ldb_context *ldb,
- const struct ldb_message *msg);
-
-
-struct ldb_message *ldb_msg_diff(struct ldb_context *ldb,
- struct ldb_message *msg1,
- struct ldb_message *msg2);
-
-int ldb_msg_check_string_attribute(const struct ldb_message *msg,
- const char *name,
- const char *value);
-
-/**
- Integrity check an ldb_message
-
- This function performs basic sanity / integrity checks on an
- ldb_message.
-
- \param msg the message to check
-
- \return LDB_SUCCESS if the message is OK, or a non-zero error code
- (one of LDB_ERR_INVALID_DN_SYNTAX, LDB_ERR_ENTRY_ALREADY_EXISTS or
- LDB_ERR_INVALID_ATTRIBUTE_SYNTAX) if there is a problem with a
- message.
-*/
-int ldb_msg_sanity_check(struct ldb_context *ldb,
- const struct ldb_message *msg);
-
-/**
- Duplicate an ldb_val structure
-
- This function copies an ldb value structure.
-
- \param mem_ctx the memory context that the duplicated value will be
- allocated from
- \param v the ldb_val to be duplicated.
-
- \return the duplicated ldb_val structure.
-*/
-struct ldb_val ldb_val_dup(void *mem_ctx, const struct ldb_val *v);
-
-/**
- this allows the user to set a debug function for error reporting
-*/
-int ldb_set_debug(struct ldb_context *ldb,
- void (*debug)(void *context, enum ldb_debug_level level,
- const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3,0),
- void *context);
-
-/**
- this allows the user to set custom utf8 function for error reporting
-*/
-void ldb_set_utf8_fns(struct ldb_context *ldb,
- void *context,
- char *(*casefold)(void *, void *, const char *));
-
-/**
- this sets up debug to print messages on stderr
-*/
-int ldb_set_debug_stderr(struct ldb_context *ldb);
-
-/* control backend specific opaque values */
-int ldb_set_opaque(struct ldb_context *ldb, const char *name, void *value);
-void *ldb_get_opaque(struct ldb_context *ldb, const char *name);
-
-const struct ldb_attrib_handler *ldb_attrib_handler(struct ldb_context *ldb,
- const char *attrib);
-
-
-const char **ldb_attr_list_copy(void *mem_ctx, const char * const *attrs);
-const char **ldb_attr_list_copy_add(void *mem_ctx, const char * const *attrs, const char *new_attr);
-int ldb_attr_in_list(const char * const *attrs, const char *attr);
-
-
-void ldb_parse_tree_attr_replace(struct ldb_parse_tree *tree,
- const char *attr,
- const char *replace);
-
-int ldb_msg_rename_attr(struct ldb_message *msg, const char *attr, const char *replace);
-int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *replace);
-void ldb_msg_remove_attr(struct ldb_message *msg, const char *attr);
-
-/**
- Convert a time structure to a string
-
- This function converts a time_t structure to an LDAP formatted time
- string.
-
- \param mem_ctx the memory context to allocate the return string in
- \param t the time structure to convert
-
- \return the formatted string, or NULL if the time structure could
- not be converted
-*/
-char *ldb_timestring(void *mem_ctx, time_t t);
-
-/**
- Convert a string to a time structure
-
- This function converts an LDAP formatted time string to a time_t
- structure.
-
- \param s the string to convert
-
- \return the time structure, or 0 if the string cannot be converted
-*/
-time_t ldb_string_to_time(const char *s);
-
-
-void ldb_qsort (void *const pbase, size_t total_elems, size_t size, void *opaque, ldb_qsort_cmp_fn_t cmp);
-#endif
diff --git a/source/lib/ldb/include/ldb_errors.h b/source/lib/ldb/include/ldb_errors.h
deleted file mode 100644
index 3b04c7c17f2..00000000000
--- a/source/lib/ldb/include/ldb_errors.h
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb header
- *
- * Description: defines error codes following RFC 2251 ldap error codes
- *
- * Author: Simo Sorce
- */
-
-#ifndef _LDB_ERRORS_H_
-
-/*! \cond DOXYGEN_IGNORE */
-#define _LDB_ERRORS_H_ 1
-/*! \endcond */
-
-/**
- \file ldb_errors.h
-
- This header provides a set of result codes for LDB function calls.
-
- Many LDB function calls return an integer value (int). As shown in
- the function documentation, those return values may indicate
- whether the function call worked correctly (in which case it
- returns LDB_SUCCESS) or some problem occurred (in which case some
- other value will be returned). As a special case,
- LDB_ERR_COMPARE_FALSE or LDB_ERR_COMPARE_TRUE may be returned,
- which does not indicate an error.
-
- \note Not all error codes make sense for LDB, however they are
- based on the LDAP error codes, and are kept for reference and to
- avoid overlap.
-
- \note Some of this documentation is based on information in
- the OpenLDAP documentation, as developed and maintained by the
- <a href="http://www.openldap.org/">The OpenLDAP Project</a>.
- */
-
-/**
- The function call succeeded.
-
- If a function returns LDB_SUCCESS, then that function, and the
- underlying transactions that may have been required, completed
- successfully.
-*/
-#define LDB_SUCCESS 0
-
-/**
- The function call failed for some non-specific reason.
-*/
-#define LDB_ERR_OPERATIONS_ERROR 1
-
-/**
- The function call failed because of a protocol violation.
-*/
-#define LDB_ERR_PROTOCOL_ERROR 2
-
-/**
- The function call failed because a time limit was exceeded.
-*/
-#define LDB_ERR_TIME_LIMIT_EXCEEDED 3
-
-/**
- The function call failed because a size limit was exceeded.
-*/
-#define LDB_ERR_SIZE_LIMIT_EXCEEDED 4
-
-/**
- The function was for value comparison, and the comparison operation
- returned false.
-
- \note This is a status value, and doesn't normally indicate an
- error.
-*/
-#define LDB_ERR_COMPARE_FALSE 5
-
-/**
- The function was for value comparison, and the comparison operation
- returned true.
-
- \note This is a status value, and doesn't normally indicate an
- error.
-*/
-#define LDB_ERR_COMPARE_TRUE 6
-
-/**
- The function used an authentication method that is not supported by
- the database.
-*/
-#define LDB_ERR_AUTH_METHOD_NOT_SUPPORTED 7
-
-/**
- The function call required a underlying operation that required
- strong authentication.
-
- This will normally only occur if you are using LDB with a LDAP
- backend.
-*/
-#define LDB_ERR_STRONG_AUTH_REQUIRED 8
-/* 9 RESERVED */
-
-/**
- The function resulted in a referral to another server.
-*/
-#define LDB_ERR_REFERRAL 10
-
-/**
- The function failed because an administrative / policy limit was
- exceeded.
-*/
-#define LDB_ERR_ADMIN_LIMIT_EXCEEDED 11
-
-/**
- The function required an extension or capability that the
- database cannot provide.
-*/
-#define LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION 12
-
-/**
- The function involved a transaction or database operation that
- could not be performed without a secure link.
-*/
-#define LDB_ERR_CONFIDENTIALITY_REQUIRED 13
-
-/**
- This is an intermediate result code for SASL bind operations that
- have more than one step.
-
- \note This is a result code that does not normally indicate an
- error has occurred.
-*/
-#define LDB_ERR_SASL_BIND_IN_PROGRESS 14
-
-/**
- The function referred to an attribute type that is not present in
- the entry.
-*/
-#define LDB_ERR_NO_SUCH_ATTRIBUTE 16
-
-/**
- The function referred to an attribute type that is invalid
-*/
-#define LDB_ERR_UNDEFINED_ATTRIBUTE_TYPE 17
-
-/**
- The function required a filter type that is not available for the
- specified attribute.
-*/
-#define LDB_ERR_INAPPROPRIATE_MATCHING 18
-
-/**
- The function would have violated an attribute constraint.
-*/
-#define LDB_ERR_CONSTRAINT_VIOLATION 19
-
-/**
- The function involved an attribute type or attribute value that
- already exists in the entry.
-*/
-#define LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS 20
-/**
- The function used an invalid (incorrect syntax) attribute value.
-*/
-#define LDB_ERR_INVALID_ATTRIBUTE_SYNTAX 21
-
-/* 22-31 unused */
-
-/**
- The function referred to an object that does not exist in the
- database.
-*/
-#define LDB_ERR_NO_SUCH_OBJECT 32
-
-/**
- The function referred to an alias which points to a non-existant
- object in the database.
-*/
-#define LDB_ERR_ALIAS_PROBLEM 33
-
-/**
- The function used a DN which was invalid (incorrect syntax).
-*/
-#define LDB_ERR_INVALID_DN_SYNTAX 34
-
-/* 35 RESERVED */
-
-/**
- The function required dereferencing of an alias, and something went
- wrong during the dereferencing process.
-*/
-#define LDB_ERR_ALIAS_DEREFERENCING_PROBLEM 36
-
-/* 37-47 unused */
-
-/**
- The function passed in the wrong authentication method.
-*/
-#define LDB_ERR_INAPPROPRIATE_AUTHENTICATION 48
-
-/**
- The function passed in or referenced incorrect credentials during
- authentication.
-*/
-#define LDB_ERR_INVALID_CREDENTIALS 49
-
-/**
- The function required access permissions that the user does not
- possess.
-*/
-#define LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS 50
-
-/**
- The function required a transaction or call that the database could
- not perform because it is busy.
-*/
-#define LDB_ERR_BUSY 51
-
-/**
- The function required a transaction or call to a database that is
- not available.
-*/
-#define LDB_ERR_UNAVAILABLE 52
-
-/**
- The function required a transaction or call to a database that the
- database declined to perform.
-*/
-#define LDB_ERR_UNWILLING_TO_PERFORM 53
-
-/**
- The function failed because it resulted in a loop being detected.
-*/
-#define LDB_ERR_LOOP_DETECT 54
-
-/* 55-63 unused */
-
-/**
- The function failed because it would have violated a naming rule.
-*/
-#define LDB_ERR_NAMING_VIOLATION 64
-
-/**
- The function failed because it would have violated the schema.
-*/
-#define LDB_ERR_OBJECT_CLASS_VIOLATION 65
-
-/**
- The function required an operation that is only allowed on leaf
- objects, but the object is not a leaf.
-*/
-#define LDB_ERR_NOT_ALLOWED_ON_NON_LEAF 66
-
-/**
- The function required an operation that cannot be performed on a
- Relative DN, but the object is a Relative DN.
-*/
-#define LDB_ERR_NOT_ALLOWED_ON_RDN 67
-
-/**
- The function failed because the entry already exists.
-*/
-#define LDB_ERR_ENTRY_ALREADY_EXISTS 68
-
-/**
- The function failed because modifications to an object class are
- not allowable.
-*/
-#define LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED 69
-
-/* 70 RESERVED FOR CLDAP */
-
-/**
- The function failed because it needed to be applied to multiple
- databases.
-*/
-#define LDB_ERR_AFFECTS_MULTIPLE_DSAS 71
-
-/* 72-79 unused */
-
-/**
- The function failed for unknown reasons.
-*/
-#define LDB_ERR_OTHER 80
-
-/* 81-90 RESERVED for APIs */
-
-#endif /* _LDB_ERRORS_H_ */
diff --git a/source/lib/ldb/include/ldb_private.h b/source/lib/ldb/include/ldb_private.h
deleted file mode 100644
index f4049188ad3..00000000000
--- a/source/lib/ldb/include/ldb_private.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
- Copyright (C) Stefan Metzmacher 2004
- Copyright (C) Simo Sorce 2004-2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb private header
- *
- * Description: defines internal ldb structures used by the subsystem and modules
- *
- * Author: Andrew Tridgell
- * Author: Stefan Metzmacher
- */
-
-#ifndef _LDB_PRIVATE_H_
-#define _LDB_PRIVATE_H_ 1
-
-struct ldb_context;
-
-struct ldb_module_ops;
-
-/* basic module structure */
-struct ldb_module {
- struct ldb_module *prev, *next;
- struct ldb_context *ldb;
- void *private_data;
- const struct ldb_module_ops *ops;
-};
-
-/*
- these function pointers define the operations that a ldb module must perform
- they correspond exactly to the ldb_*() interface
-*/
-struct ldb_module_ops {
- const char *name;
- int (*init_context) (struct ldb_module *);
- int (*search)(struct ldb_module *, struct ldb_request *); /* search */
- int (*add)(struct ldb_module *, struct ldb_request *); /* add */
- int (*modify)(struct ldb_module *, struct ldb_request *); /* modify */
- int (*del)(struct ldb_module *, struct ldb_request *); /* delete */
- int (*rename)(struct ldb_module *, struct ldb_request *); /* rename */
- int (*request)(struct ldb_module *, struct ldb_request *); /* match any other operation */
- int (*extended)(struct ldb_module *, struct ldb_request *); /* extended operations */
- int (*start_transaction)(struct ldb_module *);
- int (*end_transaction)(struct ldb_module *);
- int (*del_transaction)(struct ldb_module *);
- int (*wait)(struct ldb_handle *, enum ldb_wait_type);
- int (*sequence_number)(struct ldb_module *, struct ldb_request *);
-};
-
-typedef int (*ldb_connect_fn) (struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[],
- struct ldb_module **module);
-
-/*
- schema related information needed for matching rules
-*/
-struct ldb_schema {
- /* attribute handling table */
- unsigned num_attrib_handlers;
- struct ldb_attrib_handler *attrib_handlers;
-
- /* objectclass information */
- unsigned num_classes;
- struct ldb_subclass {
- char *name;
- char **subclasses;
- } *classes;
-};
-
-/*
- every ldb connection is started by establishing a ldb_context
-*/
-struct ldb_context {
- /* the operations provided by the backend */
- struct ldb_module *modules;
-
- /* debugging operations */
- struct ldb_debug_ops debug_ops;
-
- /* custom utf8 functions */
- struct ldb_utf8_fns utf8_fns;
-
- /* backend specific opaque parameters */
- struct ldb_opaque {
- struct ldb_opaque *next;
- const char *name;
- void *value;
- } *opaque;
-
- struct ldb_schema schema;
-
- char *err_string;
-
- int transaction_active;
-
- int default_timeout;
-
- unsigned int flags;
-
- unsigned int create_perms;
-};
-
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
-#endif
-
-/*
- simplify out of memory handling
-*/
-#define ldb_oom(ldb) ldb_debug_set(ldb, LDB_DEBUG_FATAL, "ldb out of memory at %s:%d\n", __FILE__, __LINE__)
-
-/* The following definitions come from lib/ldb/common/ldb.c */
-
-int ldb_connect_backend(struct ldb_context *ldb, const char *url, const char *options[],
- struct ldb_module **backend_module);
-
-/* The following definitions come from lib/ldb/common/ldb_modules.c */
-
-const char **ldb_modules_list_from_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, const char *string);
-int ldb_load_modules_list(struct ldb_context *ldb, const char **module_list, struct ldb_module *backend, struct ldb_module **out);
-int ldb_load_modules(struct ldb_context *ldb, const char *options[]);
-int ldb_init_module_chain(struct ldb_context *ldb, struct ldb_module *module);
-int ldb_next_request(struct ldb_module *module, struct ldb_request *request);
-int ldb_next_start_trans(struct ldb_module *module);
-int ldb_next_end_trans(struct ldb_module *module);
-int ldb_next_del_trans(struct ldb_module *module);
-int ldb_next_init(struct ldb_module *module);
-
-void ldb_set_errstring(struct ldb_context *ldb, const char *err_string);
-void ldb_asprintf_errstring(struct ldb_context *ldb, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
-void ldb_reset_err_string(struct ldb_context *ldb);
-
-int ldb_register_module(const struct ldb_module_ops *);
-int ldb_register_backend(const char *url_prefix, ldb_connect_fn);
-int ldb_try_load_dso(struct ldb_context *ldb, const char *name);
-
-/* The following definitions come from lib/ldb/common/ldb_debug.c */
-void ldb_debug(struct ldb_context *ldb, enum ldb_debug_level level, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);
-void ldb_debug_set(struct ldb_context *ldb, enum ldb_debug_level level,
- const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);
-
-/* The following definitions come from lib/ldb/common/ldb_ldif.c */
-int ldb_should_b64_encode(const struct ldb_val *val);
-
-int ldb_objectclass_init(void);
-int ldb_operational_init(void);
-int ldb_paged_results_init(void);
-int ldb_rdn_name_init(void);
-int ldb_schema_init(void);
-int ldb_asq_init(void);
-int ldb_sort_init(void);
-int ldb_ldap_init(void);
-int ldb_ildap_init(void);
-int ldb_tdb_init(void);
-int ldb_sqlite3_init(void);
-
-int ldb_match_msg(struct ldb_context *ldb,
- const struct ldb_message *msg,
- const struct ldb_parse_tree *tree,
- const struct ldb_dn *base,
- enum ldb_scope scope);
-
-void ldb_remove_attrib_handler(struct ldb_context *ldb, const char *attrib);
-const struct ldb_attrib_handler *ldb_attrib_handler_syntax(struct ldb_context *ldb,
- const char *syntax);
-int ldb_set_attrib_handlers(struct ldb_context *ldb,
- const struct ldb_attrib_handler *handlers,
- unsigned num_handlers);
-int ldb_setup_wellknown_attributes(struct ldb_context *ldb);
-int ldb_set_attrib_handler_syntax(struct ldb_context *ldb,
- const char *attr, const char *syntax);
-
-/* The following definitions come from lib/ldb/common/ldb_attributes.c */
-const char **ldb_subclass_list(struct ldb_context *ldb, const char *classname);
-void ldb_subclass_remove(struct ldb_context *ldb, const char *classname);
-int ldb_subclass_add(struct ldb_context *ldb, const char *classname, const char *subclass);
-
-int ldb_handler_copy(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out);
-int ldb_comparison_binary(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2);
-
-/* The following definitions come from lib/ldb/common/ldb_controls.c */
-struct ldb_control *get_control_from_list(struct ldb_control **controls, const char *oid);
-int save_controls(struct ldb_control *exclude, struct ldb_request *req, struct ldb_control ***saver);
-int check_critical_controls(struct ldb_control **controls);
-
-/* The following definitions come from lib/ldb/common/ldb_utf8.c */
-char *ldb_casefold_default(void *context, void *mem_ctx, const char *s);
-
-void ldb_msg_remove_element(struct ldb_message *msg, struct ldb_message_element *el);
-
-/**
- Obtain current/next database sequence number
-*/
-int ldb_sequence_number(struct ldb_context *ldb, enum ldb_sequence_type type, uint64_t *seq_num);
-
-#define LDB_SEQ_GLOBAL_SEQUENCE 0x01
-#define LDB_SEQ_TIMESTAMP_SEQUENCE 0x02
-
-
-#endif
diff --git a/source/lib/ldb/install-sh b/source/lib/ldb/install-sh
deleted file mode 100755
index 58719246f04..00000000000
--- a/source/lib/ldb/install-sh
+++ /dev/null
@@ -1,238 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/source/lib/ldb/ldap.m4 b/source/lib/ldb/ldap.m4
deleted file mode 100644
index 417083ed61c..00000000000
--- a/source/lib/ldb/ldap.m4
+++ /dev/null
@@ -1,90 +0,0 @@
-########################################################
-# Compile with LDAP support?
-
-LDAP_LIBS=""
-with_ldap_support=auto
-AC_MSG_CHECKING([for LDAP support])
-
-AC_ARG_WITH(ldap,
-AS_HELP_STRING([--with-ldap],[LDAP backend support (default=yes)]),
-[ case "$withval" in
- yes|no)
- with_ldap_support=$withval
- ;;
- esac ])
-
-AC_MSG_RESULT($with_ldap_support)
-
-if test x"$with_ldap_support" != x"no"; then
-
- ##################################################################
- # first test for ldap.h and lber.h
- # (ldap.h is required for this test)
- AC_CHECK_HEADERS(ldap.h lber.h)
-
- if test x"$ac_cv_header_ldap_h" != x"yes"; then
- if test x"$with_ldap_support" = x"yes"; then
- AC_MSG_ERROR(ldap.h is needed for LDAP support)
- else
- AC_MSG_WARN(ldap.h is needed for LDAP support)
- fi
-
- with_ldap_support=no
- fi
-fi
-
-if test x"$with_ldap_support" != x"no"; then
- ac_save_LIBS=$LIBS
-
- ##################################################################
- # we might need the lber lib on some systems. To avoid link errors
- # this test must be before the libldap test
- AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
-
- ########################################################
- # now see if we can find the ldap libs in standard paths
- AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
-
- AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
-
- ########################################################
- # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
- # Check found in pam_ldap 145.
- AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
-
- LIBS="$LIBS $LDAP_LIBS"
- AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
- AC_TRY_COMPILE([
- #include <lber.h>
- #include <ldap.h>],
- [ldap_set_rebind_proc(0, 0, 0);],
- [smb_ldap_cv_ldap_set_rebind_proc=3],
- [smb_ldap_cv_ldap_set_rebind_proc=2]
- )
- ])
-
- AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
-
- AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
-
- if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
- AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
- AC_DEFINE(HAVE_LDB_LDAP,1,[Whether ldb_ldap is available])
- with_ldap_support=yes
- AC_MSG_CHECKING(whether LDAP support is used)
- AC_MSG_RESULT(yes)
- SMB_ENABLE(LDAP,YES)
- else
- if test x"$with_ldap_support" = x"yes"; then
- AC_MSG_ERROR(libldap is needed for LDAP support)
- else
- AC_MSG_WARN(libldap is needed for LDAP support)
- fi
-
- LDAP_LIBS=""
- with_ldap_support=no
- fi
- LIBS=$ac_save_LIBS
-fi
-
-SMB_EXT_LIB(LDAP,[${LDAP_LIBS}],[${LDAP_CFLAGS}],[${LDAP_CPPFLAGS}],[${LDAP_LDFLAGS}])
diff --git a/source/lib/ldb/ldb.pc.in b/source/lib/ldb/ldb.pc.in
deleted file mode 100644
index 815d663a7c8..00000000000
--- a/source/lib/ldb/ldb.pc.in
+++ /dev/null
@@ -1,15 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-modulesdir=@modulesdir@
-
-Name: ldb
-Description: An LDAP-like embedded database
-Version: 4.0
-Requires.private: tdb
-Requires: talloc
-Libs: -L${libdir} -lldb
-Cflags: -I${includedir} @CFLAGS@
-Modulesdir: ${modulesdir}
-URL: http://ldb.samba.org/
diff --git a/source/lib/ldb/ldb_ildap/ldb_ildap.c b/source/lib/ldb/ldb_ildap/ldb_ildap.c
deleted file mode 100644
index 87f38b5fc78..00000000000
--- a/source/lib/ldb/ldb_ildap/ldb_ildap.c
+++ /dev/null
@@ -1,828 +0,0 @@
-/*
- ldb database library - ildap backend
-
- Copyright (C) Andrew Tridgell 2005
- Copyright (C) Simo Sorce 2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb_ildap
- *
- * Component: ldb ildap backend
- *
- * Description: This is a ldb backend for the internal ldap
- * client library in Samba4. By using this backend we are
- * independent of a system ldap library
- *
- * Author: Andrew Tridgell
- *
- * Modifications:
- *
- * - description: make the module use asyncronous calls
- * date: Feb 2006
- * author: Simo Sorce
- */
-
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "lib/events/events.h"
-#include "libcli/ldap/ldap.h"
-#include "libcli/ldap/ldap_client.h"
-#include "auth/auth.h"
-#include "auth/credentials/credentials.h"
-
-struct ildb_private {
- struct ldap_connection *ldap;
- struct ldb_context *ldb;
-};
-
-struct ildb_context {
- struct ldb_module *module;
- struct ldap_request *req;
- void *context;
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *);
-};
-
-/*
- convert a ldb_message structure to a list of ldap_mod structures
- ready for ildap_add() or ildap_modify()
-*/
-static struct ldap_mod **ildb_msg_to_mods(void *mem_ctx, int *num_mods,
- const struct ldb_message *msg, int use_flags)
-{
- struct ldap_mod **mods;
- unsigned int i;
- int n = 0;
-
- /* allocate maximum number of elements needed */
- mods = talloc_array(mem_ctx, struct ldap_mod *, msg->num_elements+1);
- if (!mods) {
- errno = ENOMEM;
- return NULL;
- }
- mods[0] = NULL;
-
- for (i = 0; i < msg->num_elements; i++) {
- const struct ldb_message_element *el = &msg->elements[i];
-
- mods[n] = talloc(mods, struct ldap_mod);
- if (!mods[n]) {
- goto failed;
- }
- mods[n + 1] = NULL;
- mods[n]->type = 0;
- mods[n]->attrib = *el;
- if (use_flags) {
- switch (el->flags & LDB_FLAG_MOD_MASK) {
- case LDB_FLAG_MOD_ADD:
- mods[n]->type = LDAP_MODIFY_ADD;
- break;
- case LDB_FLAG_MOD_DELETE:
- mods[n]->type = LDAP_MODIFY_DELETE;
- break;
- case LDB_FLAG_MOD_REPLACE:
- mods[n]->type = LDAP_MODIFY_REPLACE;
- break;
- }
- }
- n++;
- }
-
- *num_mods = n;
- return mods;
-
-failed:
- talloc_free(mods);
- return NULL;
-}
-
-
-/*
- map an ildap NTSTATUS to a ldb error code
-*/
-static int ildb_map_error(struct ildb_private *ildb, NTSTATUS status)
-{
- if (NT_STATUS_IS_OK(status)) {
- return LDB_SUCCESS;
- }
- ldb_set_errstring(ildb->ldb, ldap_errstr(ildb->ldap, status));
- if (NT_STATUS_IS_LDAP(status)) {
- return NT_STATUS_LDAP_CODE(status);
- }
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static void ildb_request_timeout(struct event_context *ev, struct timed_event *te,
- struct timeval t, void *private_data)
-{
- struct ldb_handle *handle = talloc_get_type(private_data, struct ldb_handle);
- struct ildb_context *ac = talloc_get_type(handle->private_data, struct ildb_context);
-
- if (ac->req->state == LDAP_REQUEST_PENDING) {
- DLIST_REMOVE(ac->req->conn->pending, ac->req);
- }
-
- handle->status = LDB_ERR_TIME_LIMIT_EXCEEDED;
-
- return;
-}
-
-static void ildb_callback(struct ldap_request *req)
-{
- struct ldb_handle *handle = talloc_get_type(req->async.private_data, struct ldb_handle);
- struct ildb_context *ac = talloc_get_type(handle->private_data, struct ildb_context);
- struct ildb_private *ildb = talloc_get_type(ac->module->private_data, struct ildb_private);
- NTSTATUS status;
- int i;
-
- handle->status = LDB_SUCCESS;
-
- if (!NT_STATUS_IS_OK(req->status)) {
- handle->status = ildb_map_error(ildb, req->status);
- return;
- }
-
- if (req->num_replies < 1) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return;
- }
-
- switch (req->type) {
-
- case LDAP_TAG_ModifyRequest:
- if (req->replies[0]->type != LDAP_TAG_ModifyResponse) {
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- return;
- }
- status = ldap_check_response(req->conn, &req->replies[0]->r.GeneralResult);
- handle->status = ildb_map_error(ildb, status);
- if (ac->callback && handle->status == LDB_SUCCESS) {
- /* FIXME: build a corresponding ares to pass on */
- handle->status = ac->callback(ac->module->ldb, ac->context, NULL);
- }
- handle->state = LDB_ASYNC_DONE;
- break;
-
- case LDAP_TAG_AddRequest:
- if (req->replies[0]->type != LDAP_TAG_AddResponse) {
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- return;
- }
- status = ldap_check_response(req->conn, &req->replies[0]->r.GeneralResult);
- handle->status = ildb_map_error(ildb, status);
- if (ac->callback && handle->status == LDB_SUCCESS) {
- /* FIXME: build a corresponding ares to pass on */
- handle->status = ac->callback(ac->module->ldb, ac->context, NULL);
- }
- handle->state = LDB_ASYNC_DONE;
- break;
-
- case LDAP_TAG_DelRequest:
- if (req->replies[0]->type != LDAP_TAG_DelResponse) {
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- return;
- }
- status = ldap_check_response(req->conn, &req->replies[0]->r.GeneralResult);
- handle->status = ildb_map_error(ildb, status);
- if (ac->callback && handle->status == LDB_SUCCESS) {
- /* FIXME: build a corresponding ares to pass on */
- handle->status = ac->callback(ac->module->ldb, ac->context, NULL);
- }
- handle->state = LDB_ASYNC_DONE;
- break;
-
- case LDAP_TAG_ModifyDNRequest:
- if (req->replies[0]->type != LDAP_TAG_ModifyDNResponse) {
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- return;
- }
- status = ldap_check_response(req->conn, &req->replies[0]->r.GeneralResult);
- handle->status = ildb_map_error(ildb, status);
- if (ac->callback && handle->status == LDB_SUCCESS) {
- /* FIXME: build a corresponding ares to pass on */
- handle->status = ac->callback(ac->module->ldb, ac->context, NULL);
- }
- handle->state = LDB_ASYNC_DONE;
- break;
-
- case LDAP_TAG_SearchRequest:
- /* loop over all messages */
- for (i = 0; i < req->num_replies; i++) {
- struct ldap_SearchResEntry *search;
- struct ldb_reply *ares = NULL;
- struct ldap_message *msg;
- int ret;
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return;
- }
-
- msg = req->replies[i];
- switch (msg->type) {
-
- case LDAP_TAG_SearchResultDone:
-
- status = ldap_check_response(req->conn, &msg->r.GeneralResult);
- if (!NT_STATUS_IS_OK(status)) {
- handle->status = ildb_map_error(ildb, status);
- return;
- }
-
- ares->controls = talloc_move(ares, &msg->controls);
- if (msg->r.SearchResultDone.resultcode) {
- if (msg->r.SearchResultDone.errormessage) {
- ldb_set_errstring(ac->module->ldb, msg->r.SearchResultDone.errormessage);
- }
- }
-
- handle->status = msg->r.SearchResultDone.resultcode;
- handle->state = LDB_ASYNC_DONE;
- ares->type = LDB_REPLY_DONE;
- break;
-
- case LDAP_TAG_SearchResultEntry:
-
-
- ares->message = ldb_msg_new(ares);
- if (!ares->message) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return;
- }
-
- search = &(msg->r.SearchResultEntry);
-
- ares->message->dn = ldb_dn_explode_or_special(ares->message, search->dn);
- if (ares->message->dn == NULL) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return;
- }
- ares->message->num_elements = search->num_attributes;
- ares->message->elements = talloc_move(ares->message,
- &search->attributes);
-
- handle->status = LDB_SUCCESS;
- handle->state = LDB_ASYNC_PENDING;
- ares->type = LDB_REPLY_ENTRY;
- break;
-
- case LDAP_TAG_SearchResultReference:
-
- ares->referral = talloc_strdup(ares, msg->r.SearchResultReference.referral);
-
- handle->status = LDB_SUCCESS;
- handle->state = LDB_ASYNC_PENDING;
- ares->type = LDB_REPLY_REFERRAL;
- break;
-
- default:
- /* TAG not handled, fail ! */
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- return;
- }
-
- ret = ac->callback(ac->module->ldb, ac->context, ares);
- if (ret) {
- handle->status = ret;
- }
- }
-
- talloc_free(req->replies);
- req->replies = NULL;
- req->num_replies = 0;
-
- break;
-
- default:
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- return;
- }
-}
-
-static struct ldb_handle *init_ildb_handle(struct ldb_module *module,
- void *context,
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *))
-{
- struct ildb_private *ildb = talloc_get_type(module->private_data, struct ildb_private);
- struct ildb_context *ildb_ac;
- struct ldb_handle *h;
-
- h = talloc_zero(ildb->ldap, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ildb_ac = talloc(h, struct ildb_context);
- if (ildb_ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ildb_ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ildb_ac->module = module;
- ildb_ac->context = context;
- ildb_ac->callback = callback;
-
- return h;
-}
-
-static int ildb_request_send(struct ldb_module *module, struct ldap_message *msg,
- void *context,
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *),
- int timeout,
- struct ldb_handle **handle)
-{
- struct ildb_private *ildb = talloc_get_type(module->private_data, struct ildb_private);
- struct ldb_handle *h = init_ildb_handle(module, context, callback);
- struct ildb_context *ildb_ac;
- struct ldap_request *req;
-
- if (!h) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ildb_ac = talloc_get_type(h->private_data, struct ildb_context);
-
- req = ldap_request_send(ildb->ldap, msg);
- if (req == NULL) {
- ldb_set_errstring(module->ldb, "async send request failed");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (!req->conn) {
- ldb_set_errstring(module->ldb, "connection to remote LDAP server dropped?");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- talloc_free(req->time_event);
- req->time_event = NULL;
- if (timeout) {
- req->time_event = event_add_timed(req->conn->event.event_ctx, h,
- timeval_current_ofs(timeout, 0),
- ildb_request_timeout, h);
- }
-
- req->async.fn = ildb_callback;
- req->async.private_data = (void *)h;
- ildb_ac->req = talloc_move(ildb_ac, &req);
-
- *handle = h;
- return LDB_SUCCESS;
-}
-
-static int ildb_request_noop(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_handle *h = init_ildb_handle(module, req->context, req->callback);
- struct ildb_context *ildb_ac;
- int ret = LDB_SUCCESS;
-
- if (!h) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ildb_ac = talloc_get_type(h->private_data, struct ildb_context);
-
- req->handle = h;
-
- if (ildb_ac->callback) {
- ret = ildb_ac->callback(module->ldb, ildb_ac->context, NULL);
- }
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/*
- search for matching records using an asynchronous function
- */
-static int ildb_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct ildb_private *ildb = talloc_get_type(module->private_data, struct ildb_private);
- struct ldap_message *msg;
- int n;
-
- req->handle = NULL;
-
- if (!req->callback || !req->context) {
- ldb_set_errstring(module->ldb, "Async interface called with NULL callback function or NULL context");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (req->op.search.tree == NULL) {
- ldb_set_errstring(module->ldb, "Invalid expression parse tree");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg = new_ldap_message(ildb);
- if (msg == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->type = LDAP_TAG_SearchRequest;
-
- if (req->op.search.base == NULL) {
- msg->r.SearchRequest.basedn = talloc_strdup(msg, "");
- } else {
- msg->r.SearchRequest.basedn = ldb_dn_linearize(msg, req->op.search.base);
- }
- if (msg->r.SearchRequest.basedn == NULL) {
- ldb_set_errstring(module->ldb, "Unable to determine baseDN");
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (req->op.search.scope == LDB_SCOPE_DEFAULT) {
- msg->r.SearchRequest.scope = LDB_SCOPE_SUBTREE;
- } else {
- msg->r.SearchRequest.scope = req->op.search.scope;
- }
-
- msg->r.SearchRequest.deref = LDAP_DEREFERENCE_NEVER;
- msg->r.SearchRequest.timelimit = 0;
- msg->r.SearchRequest.sizelimit = 0;
- msg->r.SearchRequest.attributesonly = 0;
- msg->r.SearchRequest.tree = discard_const_p(struct ldb_parse_tree, req->op.search.tree);
-
- for (n = 0; req->op.search.attrs && req->op.search.attrs[n]; n++) /* noop */ ;
- msg->r.SearchRequest.num_attributes = n;
- msg->r.SearchRequest.attributes = discard_const_p(char *, req->op.search.attrs),
-
- msg->controls = req->controls;
-
- return ildb_request_send(module, msg, req->context, req->callback, req->timeout, &(req->handle));
-}
-
-/*
- add a record
-*/
-static int ildb_add(struct ldb_module *module, struct ldb_request *req)
-{
- struct ildb_private *ildb = talloc_get_type(module->private_data, struct ildb_private);
- struct ldap_message *msg;
- struct ldap_mod **mods;
- int i,n;
-
- req->handle = NULL;
-
- /* ignore ltdb specials */
- if (ldb_dn_is_special(req->op.add.message->dn)) {
- return ildb_request_noop(module, req);
- }
-
- msg = new_ldap_message(ildb->ldap);
- if (msg == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->type = LDAP_TAG_AddRequest;
-
- msg->r.AddRequest.dn = ldb_dn_linearize(msg, req->op.add.message->dn);
- if (msg->r.AddRequest.dn == NULL) {
- talloc_free(msg);
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- mods = ildb_msg_to_mods(msg, &n, req->op.add.message, 0);
- if (mods == NULL) {
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->r.AddRequest.num_attributes = n;
- msg->r.AddRequest.attributes = talloc_array(msg, struct ldb_message_element, n);
- if (msg->r.AddRequest.attributes == NULL) {
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- for (i = 0; i < n; i++) {
- msg->r.AddRequest.attributes[i] = mods[i]->attrib;
- }
-
- return ildb_request_send(module, msg, req->context, req->callback, req->timeout, &(req->handle));
-}
-
-/*
- modify a record
-*/
-static int ildb_modify(struct ldb_module *module, struct ldb_request *req)
-{
- struct ildb_private *ildb = talloc_get_type(module->private_data, struct ildb_private);
- struct ldap_message *msg;
- struct ldap_mod **mods;
- int i,n;
-
- req->handle = NULL;
-
- /* ignore ltdb specials */
- if (ldb_dn_is_special(req->op.mod.message->dn)) {
- return ildb_request_noop(module, req);
- }
-
- msg = new_ldap_message(ildb->ldap);
- if (msg == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->type = LDAP_TAG_ModifyRequest;
-
- msg->r.ModifyRequest.dn = ldb_dn_linearize(msg, req->op.mod.message->dn);
- if (msg->r.ModifyRequest.dn == NULL) {
- talloc_free(msg);
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- mods = ildb_msg_to_mods(msg, &n, req->op.mod.message, 1);
- if (mods == NULL) {
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->r.ModifyRequest.num_mods = n;
- msg->r.ModifyRequest.mods = talloc_array(msg, struct ldap_mod, n);
- if (msg->r.ModifyRequest.mods == NULL) {
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- for (i = 0; i < n; i++) {
- msg->r.ModifyRequest.mods[i] = *mods[i];
- }
-
- return ildb_request_send(module, msg, req->context, req->callback, req->timeout, &(req->handle));
-}
-
-/*
- delete a record
-*/
-static int ildb_delete(struct ldb_module *module, struct ldb_request *req)
-{
- struct ildb_private *ildb = talloc_get_type(module->private_data, struct ildb_private);
- struct ldap_message *msg;
-
- req->handle = NULL;
-
- /* ignore ltdb specials */
- if (ldb_dn_is_special(req->op.del.dn)) {
- return ildb_request_noop(module, req);
- }
-
- msg = new_ldap_message(ildb->ldap);
- if (msg == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->type = LDAP_TAG_DelRequest;
-
- msg->r.DelRequest.dn = ldb_dn_linearize(msg, req->op.del.dn);
- if (msg->r.DelRequest.dn == NULL) {
- talloc_free(msg);
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- return ildb_request_send(module, msg, req->context, req->callback, req->timeout, &(req->handle));
-}
-
-/*
- rename a record
-*/
-static int ildb_rename(struct ldb_module *module, struct ldb_request *req)
-{
- struct ildb_private *ildb = talloc_get_type(module->private_data, struct ildb_private);
- struct ldap_message *msg;
-
- req->handle = NULL;
-
- /* ignore ltdb specials */
- if (ldb_dn_is_special(req->op.rename.olddn) || ldb_dn_is_special(req->op.rename.newdn)) {
- return ildb_request_noop(module, req);
- }
-
- msg = new_ldap_message(ildb->ldap);
- if (msg == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->type = LDAP_TAG_ModifyDNRequest;
- msg->r.ModifyDNRequest.dn = ldb_dn_linearize(msg, req->op.rename.olddn);
- if (msg->r.ModifyDNRequest.dn == NULL) {
- talloc_free(msg);
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- msg->r.ModifyDNRequest.newrdn =
- talloc_asprintf(msg, "%s=%s",
- ldb_dn_get_rdn_name(req->op.rename.newdn),
- ldb_dn_escape_value(msg, *ldb_dn_get_rdn_val(req->op.rename.newdn)));
- if (msg->r.ModifyDNRequest.newrdn == NULL) {
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->r.ModifyDNRequest.newsuperior =
- ldb_dn_linearize(msg,
- ldb_dn_get_parent(msg, req->op.rename.newdn));
- if (msg->r.ModifyDNRequest.newsuperior == NULL) {
- talloc_free(msg);
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- msg->r.ModifyDNRequest.deleteolddn = True;
-
- return ildb_request_send(module, msg, req->context, req->callback, req->timeout, &(req->handle));
-}
-
-static int ildb_start_trans(struct ldb_module *module)
-{
- /* TODO implement a local locking mechanism here */
-
- return LDB_SUCCESS;
-}
-
-static int ildb_end_trans(struct ldb_module *module)
-{
- /* TODO implement a local transaction mechanism here */
-
- return LDB_SUCCESS;
-}
-
-static int ildb_del_trans(struct ldb_module *module)
-{
- /* TODO implement a local locking mechanism here */
-
- return LDB_SUCCESS;
-}
-
-static int ildb_request(struct ldb_module *module, struct ldb_request *req)
-{
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static int ildb_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- struct ildb_context *ac = talloc_get_type(handle->private_data, struct ildb_context);
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- if (!ac) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- handle->state = LDB_ASYNC_INIT;
-
- switch(type) {
- case LDB_WAIT_NONE:
- if (event_loop_once(ac->req->conn->event.event_ctx) != 0) {
- return LDB_ERR_OTHER;
- }
- break;
- case LDB_WAIT_ALL:
- while (handle->status == LDB_SUCCESS && handle->state != LDB_ASYNC_DONE) {
- if (event_loop_once(ac->req->conn->event.event_ctx) != 0) {
- return LDB_ERR_OTHER;
- }
- }
- break;
- default:
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- return handle->status;
-}
-
-static const struct ldb_module_ops ildb_ops = {
- .name = "ldap",
- .search = ildb_search,
- .add = ildb_add,
- .modify = ildb_modify,
- .del = ildb_delete,
- .rename = ildb_rename,
- .request = ildb_request,
- .start_transaction = ildb_start_trans,
- .end_transaction = ildb_end_trans,
- .del_transaction = ildb_del_trans,
- .wait = ildb_wait
-};
-
-/*
- connect to the database
-*/
-static int ildb_connect(struct ldb_context *ldb, const char *url,
- unsigned int flags, const char *options[],
- struct ldb_module **module)
-{
- struct ildb_private *ildb = NULL;
- NTSTATUS status;
- struct cli_credentials *creds;
-
- ildb = talloc(ldb, struct ildb_private);
- if (!ildb) {
- ldb_oom(ldb);
- goto failed;
- }
-
- ildb->ldb = ldb;
-
- ildb->ldap = ldap4_new_connection(ildb, ldb_get_opaque(ldb, "EventContext"));
- if (!ildb->ldap) {
- ldb_oom(ldb);
- goto failed;
- }
-
- if (flags & LDB_FLG_RECONNECT) {
- ldap_set_reconn_params(ildb->ldap, 10);
- }
-
- status = ldap_connect(ildb->ldap, url);
- if (!NT_STATUS_IS_OK(status)) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Failed to connect to ldap URL '%s' - %s\n",
- url, ldap_errstr(ildb->ldap, status));
- goto failed;
- }
-
-
- *module = talloc(ldb, struct ldb_module);
- if (!module) {
- ldb_oom(ldb);
- talloc_free(ildb);
- return -1;
- }
- talloc_set_name_const(*module, "ldb_ildap backend");
- (*module)->ldb = ldb;
- (*module)->prev = (*module)->next = NULL;
- (*module)->private_data = ildb;
- (*module)->ops = &ildb_ops;
-
- /* caller can optionally setup credentials using the opaque token 'credentials' */
- creds = talloc_get_type(ldb_get_opaque(ldb, "credentials"), struct cli_credentials);
- if (creds == NULL) {
- struct auth_session_info *session_info = talloc_get_type(ldb_get_opaque(ldb, "sessionInfo"), struct auth_session_info);
- if (session_info) {
- creds = session_info->credentials;
- }
- }
-
- if (creds != NULL && cli_credentials_authentication_requested(creds)) {
- const char *bind_dn = cli_credentials_get_bind_dn(creds);
- if (bind_dn) {
- const char *password = cli_credentials_get_password(creds);
- status = ldap_bind_simple(ildb->ldap, bind_dn, password);
- if (!NT_STATUS_IS_OK(status)) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Failed to bind - %s\n",
- ldap_errstr(ildb->ldap, status));
- goto failed;
- }
- } else {
- status = ldap_bind_sasl(ildb->ldap, creds);
- if (!NT_STATUS_IS_OK(status)) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Failed to bind - %s\n",
- ldap_errstr(ildb->ldap, status));
- goto failed;
- }
- }
- }
-
- return 0;
-
-failed:
- talloc_free(ildb);
- return -1;
-}
-
-int ldb_ildap_init(void)
-{
- return ldb_register_backend("ldap", ildb_connect) +
- ldb_register_backend("ldapi", ildb_connect) +
- ldb_register_backend("ldaps", ildb_connect);
-}
diff --git a/source/lib/ldb/ldb_ldap/ldb_ldap.c b/source/lib/ldb/ldb_ldap/ldb_ldap.c
deleted file mode 100644
index c45fa108f2e..00000000000
--- a/source/lib/ldb/ldb_ldap/ldb_ldap.c
+++ /dev/null
@@ -1,847 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
- Copyright (C) Simo Sorce 2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb_ldap
- *
- * Component: ldb ldap backend
- *
- * Description: core files for LDAP backend
- *
- * Author: Andrew Tridgell
- *
- * Modifications:
- *
- * - description: make the module use asyncronous calls
- * date: Feb 2006
- * author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#define LDAP_DEPRECATED 1
-#include <ldap.h>
-
-struct lldb_private {
- LDAP *ldap;
-};
-
-struct lldb_context {
- struct ldb_module *module;
- int msgid;
- int timeout;
- time_t starttime;
- void *context;
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *);
-};
-
-static int lldb_ldap_to_ldb(int err) {
- /* Ldap errors and ldb errors are defined to the same values */
- return err;
-}
-
-static struct ldb_handle *init_handle(struct lldb_private *lldb, struct ldb_module *module,
- void *context,
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *),
- int timeout, time_t starttime)
-{
- struct lldb_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(lldb, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc(h, struct lldb_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->context = context;
- ac->callback = callback;
- ac->timeout = timeout;
- ac->starttime = starttime;
- ac->msgid = 0;
-
- return h;
-}
-/*
- convert a ldb_message structure to a list of LDAPMod structures
- ready for ldap_add() or ldap_modify()
-*/
-static LDAPMod **lldb_msg_to_mods(void *mem_ctx, const struct ldb_message *msg, int use_flags)
-{
- LDAPMod **mods;
- unsigned int i, j;
- int num_mods = 0;
-
- /* allocate maximum number of elements needed */
- mods = talloc_array(mem_ctx, LDAPMod *, msg->num_elements+1);
- if (!mods) {
- errno = ENOMEM;
- return NULL;
- }
- mods[0] = NULL;
-
- for (i=0;i<msg->num_elements;i++) {
- const struct ldb_message_element *el = &msg->elements[i];
-
- mods[num_mods] = talloc(mods, LDAPMod);
- if (!mods[num_mods]) {
- goto failed;
- }
- mods[num_mods+1] = NULL;
- mods[num_mods]->mod_op = LDAP_MOD_BVALUES;
- if (use_flags) {
- switch (el->flags & LDB_FLAG_MOD_MASK) {
- case LDB_FLAG_MOD_ADD:
- mods[num_mods]->mod_op |= LDAP_MOD_ADD;
- break;
- case LDB_FLAG_MOD_DELETE:
- mods[num_mods]->mod_op |= LDAP_MOD_DELETE;
- break;
- case LDB_FLAG_MOD_REPLACE:
- mods[num_mods]->mod_op |= LDAP_MOD_REPLACE;
- break;
- }
- }
- mods[num_mods]->mod_type = discard_const_p(char, el->name);
- mods[num_mods]->mod_vals.modv_bvals = talloc_array(mods[num_mods],
- struct berval *,
- 1+el->num_values);
- if (!mods[num_mods]->mod_vals.modv_bvals) {
- goto failed;
- }
-
- for (j=0;j<el->num_values;j++) {
- mods[num_mods]->mod_vals.modv_bvals[j] = talloc(mods[num_mods]->mod_vals.modv_bvals,
- struct berval);
- if (!mods[num_mods]->mod_vals.modv_bvals[j]) {
- goto failed;
- }
- mods[num_mods]->mod_vals.modv_bvals[j]->bv_val =
- (char *)el->values[j].data;
- mods[num_mods]->mod_vals.modv_bvals[j]->bv_len = el->values[j].length;
- }
- mods[num_mods]->mod_vals.modv_bvals[j] = NULL;
- num_mods++;
- }
-
- return mods;
-
-failed:
- talloc_free(mods);
- return NULL;
-}
-
-/*
- add a single set of ldap message values to a ldb_message
-*/
-static int lldb_add_msg_attr(struct ldb_context *ldb,
- struct ldb_message *msg,
- const char *attr, struct berval **bval)
-{
- int count, i;
- struct ldb_message_element *el;
-
- count = ldap_count_values_len(bval);
-
- if (count <= 0) {
- return -1;
- }
-
- el = talloc_realloc(msg, msg->elements, struct ldb_message_element,
- msg->num_elements + 1);
- if (!el) {
- errno = ENOMEM;
- return -1;
- }
-
- msg->elements = el;
-
- el = &msg->elements[msg->num_elements];
-
- el->name = talloc_strdup(msg->elements, attr);
- if (!el->name) {
- errno = ENOMEM;
- return -1;
- }
- el->flags = 0;
-
- el->num_values = 0;
- el->values = talloc_array(msg->elements, struct ldb_val, count);
- if (!el->values) {
- errno = ENOMEM;
- return -1;
- }
-
- for (i=0;i<count;i++) {
- /* we have to ensure this is null terminated so that
- ldb_msg_find_attr_as_string() can work */
- el->values[i].data =
- (uint8_t *)talloc_size(el->values, bval[i]->bv_len+1);
- if (!el->values[i].data) {
- errno = ENOMEM;
- return -1;
- }
- memcpy(el->values[i].data, bval[i]->bv_val, bval[i]->bv_len);
- el->values[i].data[bval[i]->bv_len] = 0;
- el->values[i].length = bval[i]->bv_len;
- el->num_values++;
- }
-
- msg->num_elements++;
-
- return 0;
-}
-
-/*
- search for matching records
-*/
-static int lldb_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct lldb_private *lldb = talloc_get_type(module->private_data, struct lldb_private);
- struct lldb_context *lldb_ac;
- struct timeval tv;
- int ldap_scope;
- char *search_base;
- char *expression;
- int ret;
-
- if (!req->callback || !req->context) {
- ldb_set_errstring(module->ldb, "Async interface called with NULL callback function or NULL context");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (req->op.search.tree == NULL) {
- ldb_set_errstring(module->ldb, "Invalid expression parse tree");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (req->controls != NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "Controls are not yet supported by ldb_ldap backend!\n");
- }
-
- req->handle = init_handle(lldb, module, req->context, req->callback, req->timeout, req->starttime);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- lldb_ac = talloc_get_type(req->handle->private_data, struct lldb_context);
-
- search_base = ldb_dn_linearize(lldb_ac, req->op.search.base);
- if (req->op.search.base == NULL) {
- search_base = talloc_strdup(lldb_ac, "");
- }
- if (search_base == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- expression = ldb_filter_from_tree(
- lldb_ac,
- discard_const_p(struct ldb_parse_tree, req->op.search.tree));
- if (expression == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- switch (req->op.search.scope) {
- case LDB_SCOPE_BASE:
- ldap_scope = LDAP_SCOPE_BASE;
- break;
- case LDB_SCOPE_ONELEVEL:
- ldap_scope = LDAP_SCOPE_ONELEVEL;
- break;
- default:
- ldap_scope = LDAP_SCOPE_SUBTREE;
- break;
- }
-
- tv.tv_sec = req->timeout;
- tv.tv_usec = 0;
-
- ret = ldap_search_ext(lldb->ldap, search_base, ldap_scope,
- expression,
- discard_const_p(char *, req->op.search.attrs),
- 0,
- NULL,
- NULL,
- &tv,
- LDAP_NO_LIMIT,
- &lldb_ac->msgid);
-
- if (ret != LDAP_SUCCESS) {
- ldb_set_errstring(module->ldb, ldap_err2string(ret));
- }
-
- return lldb_ldap_to_ldb(ret);
-}
-
-/*
- add a record
-*/
-static int lldb_add(struct ldb_module *module, struct ldb_request *req)
-{
- struct lldb_private *lldb = talloc_get_type(module->private_data, struct lldb_private);
- struct lldb_context *lldb_ac;
- LDAPMod **mods;
- char *dn;
- int ret;
-
- /* ltdb specials should not reach this point */
- if (ldb_dn_is_special(req->op.add.message->dn)) {
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- req->handle = init_handle(lldb, module, req->context, req->callback, req->timeout, req->starttime);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- lldb_ac = talloc_get_type(req->handle->private_data, struct lldb_context);
-
- mods = lldb_msg_to_mods(lldb_ac, req->op.add.message, 0);
- if (mods == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- dn = ldb_dn_linearize(lldb_ac, req->op.add.message->dn);
- if (dn == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldap_add_ext(lldb->ldap, dn, mods,
- NULL,
- NULL,
- &lldb_ac->msgid);
-
- if (ret != LDAP_SUCCESS) {
- ldb_set_errstring(module->ldb, ldap_err2string(ret));
- }
-
- return lldb_ldap_to_ldb(ret);
-}
-
-/*
- modify a record
-*/
-static int lldb_modify(struct ldb_module *module, struct ldb_request *req)
-{
- struct lldb_private *lldb = talloc_get_type(module->private_data, struct lldb_private);
- struct lldb_context *lldb_ac;
- LDAPMod **mods;
- char *dn;
- int ret;
-
- /* ltdb specials should not reach this point */
- if (ldb_dn_is_special(req->op.mod.message->dn)) {
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- req->handle = init_handle(lldb, module, req->context, req->callback, req->timeout, req->starttime);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- lldb_ac = talloc_get_type(req->handle->private_data, struct lldb_context);
-
- mods = lldb_msg_to_mods(lldb_ac, req->op.mod.message, 1);
- if (mods == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- dn = ldb_dn_linearize(lldb_ac, req->op.mod.message->dn);
- if (dn == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldap_modify_ext(lldb->ldap, dn, mods,
- NULL,
- NULL,
- &lldb_ac->msgid);
-
- if (ret != LDAP_SUCCESS) {
- ldb_set_errstring(module->ldb, ldap_err2string(ret));
- }
-
- return lldb_ldap_to_ldb(ret);
-}
-
-/*
- delete a record
-*/
-static int lldb_delete(struct ldb_module *module, struct ldb_request *req)
-{
- struct lldb_private *lldb = talloc_get_type(module->private_data, struct lldb_private);
- struct lldb_context *lldb_ac;
- char *dnstr;
- int ret;
-
- /* ltdb specials should not reach this point */
- if (ldb_dn_is_special(req->op.del.dn)) {
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- req->handle = init_handle(lldb, module, req->context, req->callback, req->timeout, req->starttime);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- lldb_ac = talloc_get_type(req->handle->private_data, struct lldb_context);
-
- dnstr = ldb_dn_linearize(lldb_ac, req->op.del.dn);
-
- ret = ldap_delete_ext(lldb->ldap, dnstr,
- NULL,
- NULL,
- &lldb_ac->msgid);
-
- if (ret != LDAP_SUCCESS) {
- ldb_set_errstring(module->ldb, ldap_err2string(ret));
- }
-
- return lldb_ldap_to_ldb(ret);
-}
-
-/*
- rename a record
-*/
-static int lldb_rename(struct ldb_module *module, struct ldb_request *req)
-{
- struct lldb_private *lldb = talloc_get_type(module->private_data, struct lldb_private);
- struct lldb_context *lldb_ac;
- char *old_dn;
- char *newrdn;
- char *parentdn;
- int ret;
-
- /* ltdb specials should not reach this point */
- if (ldb_dn_is_special(req->op.rename.olddn) || ldb_dn_is_special(req->op.rename.newdn)) {
- return LDB_ERR_INVALID_DN_SYNTAX;
- }
-
- req->handle = init_handle(lldb, module, req->context, req->callback, req->timeout, req->starttime);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- lldb_ac = talloc_get_type(req->handle->private_data, struct lldb_context);
-
- old_dn = ldb_dn_linearize(lldb_ac, req->op.rename.olddn);
- if (old_dn == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- newrdn = talloc_asprintf(lldb_ac, "%s=%s",
- ldb_dn_get_rdn_name(req->op.rename.newdn),
- ldb_dn_escape_value(lldb, *(ldb_dn_get_rdn_val(req->op.rename.newdn))));
- if (!newrdn) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- parentdn = ldb_dn_linearize(lldb_ac, ldb_dn_get_parent(lldb_ac, req->op.rename.newdn));
- if (!parentdn) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldap_rename(lldb->ldap, old_dn, newrdn, parentdn,
- 1, NULL, NULL,
- &lldb_ac->msgid);
-
- if (ret != LDAP_SUCCESS) {
- ldb_set_errstring(module->ldb, ldap_err2string(ret));
- }
-
- return lldb_ldap_to_ldb(ret);
-}
-
-static int lldb_parse_result(struct ldb_handle *handle, LDAPMessage *result)
-{
- struct lldb_context *ac = talloc_get_type(handle->private_data, struct lldb_context);
- struct lldb_private *lldb = talloc_get_type(ac->module->private_data, struct lldb_private);
- struct ldb_reply *ares = NULL;
- LDAPMessage *msg;
- int type;
- char *matcheddnp = NULL;
- char *errmsgp = NULL;
- char **referralsp = NULL;
- LDAPControl **serverctrlsp = NULL;
- int ret = LDB_SUCCESS;
-
- type = ldap_msgtype(result);
-
- handle->status = 0;
-
- switch (type) {
-
- case LDAP_RES_SEARCH_ENTRY:
- msg = ldap_first_entry(lldb->ldap, result);
- if (msg != NULL) {
- BerElement *berptr = NULL;
- char *attr, *dn;
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
-
- ares->message = ldb_msg_new(ares);
- if (!ares->message) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
-
- dn = ldap_get_dn(lldb->ldap, msg);
- if (!dn) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
- ares->message->dn = ldb_dn_explode_or_special(ares->message, dn);
- if (ares->message->dn == NULL) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
- ldap_memfree(dn);
-
- ares->message->num_elements = 0;
- ares->message->elements = NULL;
- ares->message->private_data = NULL;
-
- /* loop over all attributes */
- for (attr=ldap_first_attribute(lldb->ldap, msg, &berptr);
- attr;
- attr=ldap_next_attribute(lldb->ldap, msg, berptr)) {
- struct berval **bval;
- bval = ldap_get_values_len(lldb->ldap, msg, attr);
-
- if (bval) {
- lldb_add_msg_attr(ac->module->ldb, ares->message, attr, bval);
- ldap_value_free_len(bval);
- }
- }
- if (berptr) ber_free(berptr, 0);
-
-
- ares->type = LDB_REPLY_ENTRY;
- ret = ac->callback(ac->module->ldb, ac->context, ares);
- } else {
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- handle->state = LDB_ASYNC_DONE;
- }
- break;
-
- case LDAP_RES_SEARCH_REFERENCE:
- if (ldap_parse_result(lldb->ldap, result, &handle->status,
- &matcheddnp, &errmsgp,
- &referralsp, &serverctrlsp, 0) != LDAP_SUCCESS) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
- if (referralsp == NULL) {
- handle->status = LDB_ERR_PROTOCOL_ERROR;
- goto error;
- }
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
-
- ares->referral = talloc_strdup(ares, *referralsp);
- ares->type = LDB_REPLY_REFERRAL;
- ret = ac->callback(ac->module->ldb, ac->context, ares);
-
- break;
-
- case LDAP_RES_SEARCH_RESULT:
- if (ldap_parse_result(lldb->ldap, result, &handle->status,
- &matcheddnp, &errmsgp,
- &referralsp, &serverctrlsp, 0) != LDAP_SUCCESS) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
-
- if (serverctrlsp != NULL) {
- /* FIXME: transform the LDAPControl list into an ldb_control one */
- ares->controls = NULL;
- }
-
- ares->type = LDB_REPLY_DONE;
- handle->state = LDB_ASYNC_DONE;
- ret = ac->callback(ac->module->ldb, ac->context, ares);
-
- break;
-
- case LDAP_RES_MODIFY:
- case LDAP_RES_ADD:
- case LDAP_RES_DELETE:
- case LDAP_RES_MODDN:
- if (ldap_parse_result(lldb->ldap, result, &handle->status,
- &matcheddnp, &errmsgp,
- &referralsp, &serverctrlsp, 0) != LDAP_SUCCESS) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- goto error;
- }
- if (ac->callback && handle->status == LDB_SUCCESS) {
- ares = NULL; /* FIXME: build a corresponding ares to pass on */
- ret = ac->callback(ac->module->ldb, ac->context, ares);
- }
- handle->state = LDB_ASYNC_DONE;
- break;
-
- default:
- ret = LDB_ERR_PROTOCOL_ERROR;
- goto error;
- }
-
- if (matcheddnp) ldap_memfree(matcheddnp);
- if (errmsgp && *errmsgp) {
- ldb_set_errstring(ac->module->ldb, errmsgp);
- } else if (handle->status) {
- ldb_set_errstring(ac->module->ldb, ldap_err2string(handle->status));
- }
- if (errmsgp) {
- ldap_memfree(errmsgp);
- }
- if (referralsp) ldap_value_free(referralsp);
- if (serverctrlsp) ldap_controls_free(serverctrlsp);
-
- ldap_msgfree(result);
- return lldb_ldap_to_ldb(handle->status);
-
-error:
- handle->state = LDB_ASYNC_DONE;
- ldap_msgfree(result);
- return ret;
-}
-
-static int lldb_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- struct lldb_context *ac = talloc_get_type(handle->private_data, struct lldb_context);
- struct lldb_private *lldb = talloc_get_type(handle->module->private_data, struct lldb_private);
- struct timeval timeout;
- LDAPMessage *result;
- int ret, lret;
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- if (!ac || !ac->msgid) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- handle->state = LDB_ASYNC_PENDING;
- handle->status = LDB_SUCCESS;
-
- switch(type) {
- case LDB_WAIT_NONE:
-
- if ((ac->timeout != -1) &&
- ((ac->starttime + ac->timeout) > time(NULL))) {
- return LDB_ERR_TIME_LIMIT_EXCEEDED;
- }
-
- timeout.tv_sec = 0;
- timeout.tv_usec = 0;
-
- lret = ldap_result(lldb->ldap, ac->msgid, 0, &timeout, &result);
- if (lret == -1) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- if (lret == 0) {
- ret = LDB_SUCCESS;
- goto done;
- }
-
- return lldb_parse_result(handle, result);
-
- case LDB_WAIT_ALL:
- timeout.tv_usec = 0;
- ret = LDB_ERR_OPERATIONS_ERROR;
-
- while (handle->status == LDB_SUCCESS && handle->state != LDB_ASYNC_DONE) {
-
- if (ac->timeout == -1) {
- lret = ldap_result(lldb->ldap, ac->msgid, 0, NULL, &result);
- } else {
- timeout.tv_sec = ac->timeout - (time(NULL) - ac->starttime);
- if (timeout.tv_sec <= 0)
- return LDB_ERR_TIME_LIMIT_EXCEEDED;
- lret = ldap_result(lldb->ldap, ac->msgid, 0, &timeout, &result);
- }
- if (lret == -1) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- if (lret == 0) {
- return LDB_ERR_TIME_LIMIT_EXCEEDED;
- }
-
- ret = lldb_parse_result(handle, result);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- break;
-
- default:
- handle->state = LDB_ASYNC_DONE;
- ret = LDB_ERR_OPERATIONS_ERROR;
- }
-
-done:
- return ret;
-}
-
-static int lldb_start_trans(struct ldb_module *module)
-{
- /* TODO implement a local transaction mechanism here */
-
- return LDB_SUCCESS;
-}
-
-static int lldb_end_trans(struct ldb_module *module)
-{
- /* TODO implement a local transaction mechanism here */
-
- return LDB_SUCCESS;
-}
-
-static int lldb_del_trans(struct ldb_module *module)
-{
- /* TODO implement a local transaction mechanism here */
-
- return LDB_SUCCESS;
-}
-
-static int lldb_request(struct ldb_module *module, struct ldb_request *req)
-{
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static const struct ldb_module_ops lldb_ops = {
- .name = "ldap",
- .search = lldb_search,
- .add = lldb_add,
- .modify = lldb_modify,
- .del = lldb_delete,
- .rename = lldb_rename,
- .request = lldb_request,
- .start_transaction = lldb_start_trans,
- .end_transaction = lldb_end_trans,
- .del_transaction = lldb_del_trans,
- .wait = lldb_wait
-};
-
-
-static int lldb_destructor(struct lldb_private *lldb)
-{
- ldap_unbind(lldb->ldap);
- return 0;
-}
-
-/*
- connect to the database
-*/
-static int lldb_connect(struct ldb_context *ldb,
- const char *url,
- unsigned int flags,
- const char *options[],
- struct ldb_module **module)
-{
- struct lldb_private *lldb = NULL;
- int version = 3;
- int ret;
-
- lldb = talloc(ldb, struct lldb_private);
- if (!lldb) {
- ldb_oom(ldb);
- goto failed;
- }
-
- lldb->ldap = NULL;
-
- ret = ldap_initialize(&lldb->ldap, url);
- if (ret != LDAP_SUCCESS) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "ldap_initialize failed for URL '%s' - %s\n",
- url, ldap_err2string(ret));
- goto failed;
- }
-
- talloc_set_destructor(lldb, lldb_destructor);
-
- ret = ldap_set_option(lldb->ldap, LDAP_OPT_PROTOCOL_VERSION, &version);
- if (ret != LDAP_SUCCESS) {
- ldb_debug(ldb, LDB_DEBUG_FATAL, "ldap_set_option failed - %s\n",
- ldap_err2string(ret));
- goto failed;
- }
-
- *module = talloc(ldb, struct ldb_module);
- if (*module == NULL) {
- ldb_oom(ldb);
- talloc_free(lldb);
- return -1;
- }
- talloc_set_name_const(*module, "ldb_ldap backend");
- (*module)->ldb = ldb;
- (*module)->prev = (*module)->next = NULL;
- (*module)->private_data = lldb;
- (*module)->ops = &lldb_ops;
-
- return 0;
-
-failed:
- talloc_free(lldb);
- return -1;
-}
-
-int ldb_ldap_init(void)
-{
- return ldb_register_backend("ldap", lldb_connect) +
- ldb_register_backend("ldapi", lldb_connect) +
- ldb_register_backend("ldaps", lldb_connect);
-}
diff --git a/source/lib/ldb/ldb_sqlite3/README b/source/lib/ldb/ldb_sqlite3/README
deleted file mode 100644
index 6cda0a77595..00000000000
--- a/source/lib/ldb/ldb_sqlite3/README
+++ /dev/null
@@ -1,7 +0,0 @@
-trees.ps contains an explanation of the Genealogical Representation of Trees
-in Databases which is being used in ldb_sqlite3. Note that we use fgID
-representation with 4 bytes per level, so we can represent 6.5E+08 subclasses
-of any object class. This should be adequate for our purposes. :-)
-
-The following document is the primary basis for the schema currently being
-used here: http://www.research.ibm.com/journal/sj/392/shi.html
diff --git a/source/lib/ldb/ldb_sqlite3/base160.c b/source/lib/ldb/ldb_sqlite3/base160.c
deleted file mode 100644
index 4286979123b..00000000000
--- a/source/lib/ldb/ldb_sqlite3/base160.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- base160 code used by ldb_sqlite3
-
- Copyright (C) 2004 Derrell Lipman
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-
-/*
- * ldb_sqlite3_base160()
- *
- * Convert an integer value to a string containing the base 160 representation
- * of the integer. We always convert to a string representation that is 4
- * bytes in length, and we always null terminate.
- *
- * Parameters:
- * val --
- * The value to be converted
- *
- * result --
- * Buffer in which the result is to be placed
- *
- * Returns:
- * nothing
- */
-static unsigned char base160tab[161] =
-{
- 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , /* 0-9 */
- 58 , 59 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , /* : ; A-H */
- 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , /* I-R */
- 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 97 , 98 , /* S-Z , a-b */
- 99 , 100, 101, 102, 103, 104, 105, 106, 107, 108, /* c-l */
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, /* m-v */
- 119, 120, 121, 122, 160, 161, 162, 163, 164, 165, /* w-z, latin1 */
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, /* latin1 */
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, /* latin1 */
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, /* latin1 */
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, /* latin1 */
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, /* latin1 */
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, /* latin1 */
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, /* latin1 */
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, /* latin1 */
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, /* latin1 */
- '\0'
-};
-
-
-/*
- * lsqlite3_base160()
- *
- * Convert an unsigned long integer into a base160 representation of the
- * number.
- *
- * Parameters:
- * val --
- * value to be converted
- *
- * result --
- * character array, 5 bytes long, into which the base160 representation
- * will be placed. The result will be a four-digit representation of the
- * number (with leading zeros prepended as necessary), and null
- * terminated.
- *
- * Returns:
- * Nothing
- */
-void
-lsqlite3_base160(unsigned long val,
- unsigned char result[5])
-{
- int i;
-
- for (i = 3; i >= 0; i--) {
-
- result[i] = base160tab[val % 160];
- val /= 160;
- }
-
- result[4] = '\0';
-}
-
-
-/*
- * lsqlite3_base160Next()
- *
- * Retrieve the next-greater number in the base160 sequence for the terminal
- * tree node (the last four digits). Only one tree level (four digits) are
- * operated on.
- *
- * Parameters:
- * base160 -- a character array containing either an empty string (in which
- * case no operation is performed), or a string of base160 digits
- * with a length of a multiple of four digits.
- *
- * Upon return, the trailing four digits (one tree level) will
- * have been incremented by 1.
- *
- * Returns:
- * base160 -- the modified array
- */
-char *
-lsqlite3_base160Next(char base160[])
-{
- int i;
- int len;
- unsigned char * pTab;
- char * pBase160 = base160;
-
- /*
- * We need a minimum of four digits, and we will always get a multiple of
- * four digits.
- */
- if (len = strlen(pBase160)) >= 4)
- {
- pBase160 += strlen(pBase160) - 1;
-
- /* We only carry through four digits: one level in the tree */
- for (i = 0; i < 4; i++) {
-
- /* What base160 value does this digit have? */
- pTab = strchr(base160tab, *pBase160);
-
- /* Is there a carry? */
- if (pTab < base160tab + sizeof(base160tab) - 1) {
-
- /* Nope. Just increment this value and we're done. */
- *pBase160 = *++pTab;
- break;
- } else {
-
- /*
- * There's a carry. This value gets base160tab[0], we
- * decrement the buffer pointer to get the next higher-order
- * digit, and continue in the loop.
- */
- *pBase160-- = base160tab[0];
- }
- }
- }
-
- return base160;
-}
diff --git a/source/lib/ldb/ldb_sqlite3/ldb_sqlite3.c b/source/lib/ldb/ldb_sqlite3/ldb_sqlite3.c
deleted file mode 100644
index 4f9b0f6370f..00000000000
--- a/source/lib/ldb/ldb_sqlite3/ldb_sqlite3.c
+++ /dev/null
@@ -1,1912 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Derrell Lipman 2005
- Copyright (C) Simo Sorce 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb sqlite3 backend
- *
- * Description: core files for SQLITE3 backend
- *
- * Author: Derrell Lipman (based on Andrew Tridgell's LDAP backend)
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include <sqlite3.h>
-
-struct lsqlite3_private {
- int trans_count;
- char **options;
- sqlite3 *sqlite;
-};
-
-struct lsql_context {
- struct ldb_module *module;
-
- /* search stuff */
- long long current_eid;
- const char * const * attrs;
- struct ldb_reply *ares;
-
- /* async stuff */
- void *context;
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *);
-};
-
-static struct ldb_handle *init_handle(struct lsqlite3_private *lsqlite3,
- struct ldb_module *module,
- struct ldb_request *req)
-{
- struct lsql_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(lsqlite3, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc(h, struct lsql_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->context = req->context;
- ac->callback = req->callback;
-
- return h;
-}
-
-/*
- * Macros used throughout
- */
-
-#ifndef FALSE
-# define FALSE (0)
-# define TRUE (! FALSE)
-#endif
-
-#define RESULT_ATTR_TABLE "temp_result_attrs"
-
-//#define TEMPTAB /* for testing, create non-temporary table */
-#define TEMPTAB "TEMPORARY"
-
-/*
- * Static variables
- */
-sqlite3_stmt * stmtGetEID = NULL;
-
-static char *lsqlite3_tprintf(TALLOC_CTX *mem_ctx, const char *fmt, ...)
-{
- char *str, *ret;
- va_list ap;
-
- va_start(ap, fmt);
- str = sqlite3_vmprintf(fmt, ap);
- va_end(ap);
-
- if (str == NULL) return NULL;
-
- ret = talloc_strdup(mem_ctx, str);
- if (ret == NULL) {
- sqlite3_free(str);
- return NULL;
- }
-
- sqlite3_free(str);
- return ret;
-}
-
-static char base160tab[161] = {
- 48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 , /* 0-9 */
- 58 ,59 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 , /* : ; A-H */
- 73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 , /* I-R */
- 83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,97 ,98 , /* S-Z , a-b */
- 99 ,100,101,102,103,104,105,106,107,108, /* c-l */
- 109,110,111,112,113,114,115,116,117,118, /* m-v */
- 119,120,121,122,160,161,162,163,164,165, /* w-z, latin1 */
- 166,167,168,169,170,171,172,173,174,175, /* latin1 */
- 176,177,178,179,180,181,182,183,184,185, /* latin1 */
- 186,187,188,189,190,191,192,193,194,195, /* latin1 */
- 196,197,198,199,200,201,202,203,204,205, /* latin1 */
- 206,207,208,209,210,211,212,213,214,215, /* latin1 */
- 216,217,218,219,220,221,222,223,224,225, /* latin1 */
- 226,227,228,229,230,231,232,233,234,235, /* latin1 */
- 236,237,238,239,240,241,242,243,244,245, /* latin1 */
- 246,247,248,249,250,251,252,253,254,255, /* latin1 */
- '\0'
-};
-
-
-/*
- * base160()
- *
- * Convert an unsigned long integer into a base160 representation of the
- * number.
- *
- * Parameters:
- * val --
- * value to be converted
- *
- * result --
- * character array, 5 bytes long, into which the base160 representation
- * will be placed. The result will be a four-digit representation of the
- * number (with leading zeros prepended as necessary), and null
- * terminated.
- *
- * Returns:
- * Nothing
- */
-static void
-base160_sql(sqlite3_context * hContext,
- int argc,
- sqlite3_value ** argv)
-{
- int i;
- long long val;
- char result[5];
-
- val = sqlite3_value_int64(argv[0]);
-
- for (i = 3; i >= 0; i--) {
-
- result[i] = base160tab[val % 160];
- val /= 160;
- }
-
- result[4] = '\0';
-
- sqlite3_result_text(hContext, result, -1, SQLITE_TRANSIENT);
-}
-
-
-/*
- * base160next_sql()
- *
- * This function enhances sqlite by adding a "base160_next()" function which is
- * accessible via queries.
- *
- * Retrieve the next-greater number in the base160 sequence for the terminal
- * tree node (the last four digits). Only one tree level (four digits) is
- * operated on.
- *
- * Input:
- * A character string: either an empty string (in which case no operation is
- * performed), or a string of base160 digits with a length of a multiple of
- * four digits.
- *
- * Output:
- * Upon return, the trailing four digits (one tree level) will have been
- * incremented by 1.
- */
-static void
-base160next_sql(sqlite3_context * hContext,
- int argc,
- sqlite3_value ** argv)
-{
- int i;
- int len;
- char * pTab;
- char * pBase160 = strdup((const char *)sqlite3_value_text(argv[0]));
- char * pStart = pBase160;
-
- /*
- * We need a minimum of four digits, and we will always get a multiple
- * of four digits.
- */
- if (pBase160 != NULL &&
- (len = strlen(pBase160)) >= 4 &&
- len % 4 == 0) {
-
- if (pBase160 == NULL) {
-
- sqlite3_result_null(hContext);
- return;
- }
-
- pBase160 += strlen(pBase160) - 1;
-
- /* We only carry through four digits: one level in the tree */
- for (i = 0; i < 4; i++) {
-
- /* What base160 value does this digit have? */
- pTab = strchr(base160tab, *pBase160);
-
- /* Is there a carry? */
- if (pTab < base160tab + sizeof(base160tab) - 1) {
-
- /*
- * Nope. Just increment this value and we're
- * done.
- */
- *pBase160 = *++pTab;
- break;
- } else {
-
- /*
- * There's a carry. This value gets
- * base160tab[0], we decrement the buffer
- * pointer to get the next higher-order digit,
- * and continue in the loop.
- */
- *pBase160-- = base160tab[0];
- }
- }
-
- sqlite3_result_text(hContext,
- pStart,
- strlen(pStart),
- free);
- } else {
- sqlite3_result_value(hContext, argv[0]);
- if (pBase160 != NULL) {
- free(pBase160);
- }
- }
-}
-
-static char *parsetree_to_sql(struct ldb_module *module,
- void *mem_ctx,
- const struct ldb_parse_tree *t)
-{
- const struct ldb_attrib_handler *h;
- struct ldb_val value, subval;
- char *wild_card_string;
- char *child, *tmp;
- char *ret = NULL;
- char *attr;
- int i;
-
-
- switch(t->operation) {
- case LDB_OP_AND:
-
- tmp = parsetree_to_sql(module, mem_ctx, t->u.list.elements[0]);
- if (tmp == NULL) return NULL;
-
- for (i = 1; i < t->u.list.num_elements; i++) {
-
- child = parsetree_to_sql(module, mem_ctx, t->u.list.elements[i]);
- if (child == NULL) return NULL;
-
- tmp = talloc_asprintf_append(tmp, " INTERSECT %s ", child);
- if (tmp == NULL) return NULL;
- }
-
- ret = talloc_asprintf(mem_ctx, "SELECT * FROM ( %s )\n", tmp);
-
- return ret;
-
- case LDB_OP_OR:
-
- tmp = parsetree_to_sql(module, mem_ctx, t->u.list.elements[0]);
- if (tmp == NULL) return NULL;
-
- for (i = 1; i < t->u.list.num_elements; i++) {
-
- child = parsetree_to_sql(module, mem_ctx, t->u.list.elements[i]);
- if (child == NULL) return NULL;
-
- tmp = talloc_asprintf_append(tmp, " UNION %s ", child);
- if (tmp == NULL) return NULL;
- }
-
- return talloc_asprintf(mem_ctx, "SELECT * FROM ( %s ) ", tmp);
-
- case LDB_OP_NOT:
-
- child = parsetree_to_sql(module, mem_ctx, t->u.isnot.child);
- if (child == NULL) return NULL;
-
- return talloc_asprintf(mem_ctx,
- "SELECT eid FROM ldb_entry "
- "WHERE eid NOT IN ( %s ) ", child);
-
- case LDB_OP_EQUALITY:
- /*
- * For simple searches, we want to retrieve the list of EIDs that
- * match the criteria.
- */
- attr = ldb_attr_casefold(mem_ctx, t->u.equality.attr);
- if (attr == NULL) return NULL;
- h = ldb_attrib_handler(module->ldb, attr);
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, mem_ctx, &(t->u.equality.value), &value);
- if (value.data == NULL) {
- return NULL;
- }
-
- if (strcasecmp(t->u.equality.attr, "objectclass") == 0) {
- /*
- * For object classes, we want to search for all objectclasses
- * that are subclasses as well.
- */
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_attribute_values\n"
- "WHERE norm_attr_name = 'OBJECTCLASS' "
- "AND norm_attr_value IN\n"
- " (SELECT class_name FROM ldb_object_classes\n"
- " WHERE tree_key GLOB\n"
- " (SELECT tree_key FROM ldb_object_classes\n"
- " WHERE class_name = '%q'\n"
- " ) || '*'\n"
- " )\n", value.data);
-
- } else if (strcasecmp(t->u.equality.attr, "dn") == 0) {
- /* DN query is a special ldb case */
- char *cdn = ldb_dn_linearize_casefold(module->ldb,
- mem_ctx,
- ldb_dn_explode(module->ldb,
- (const char *)value.data));
-
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_entry "
- "WHERE norm_dn = '%q'", cdn);
-
- } else {
- /* A normal query. */
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_attribute_values "
- "WHERE norm_attr_name = '%q' "
- "AND norm_attr_value = '%q'",
- attr,
- value.data);
-
- }
-
- case LDB_OP_SUBSTRING:
-
- wild_card_string = talloc_strdup(mem_ctx,
- (t->u.substring.start_with_wildcard)?"*":"");
- if (wild_card_string == NULL) return NULL;
-
- for (i = 0; t->u.substring.chunks[i]; i++) {
- wild_card_string = talloc_asprintf_append(wild_card_string, "%s*",
- t->u.substring.chunks[i]->data);
- if (wild_card_string == NULL) return NULL;
- }
-
- if ( ! t->u.substring.end_with_wildcard ) {
- /* remove last wildcard */
- wild_card_string[strlen(wild_card_string) - 1] = '\0';
- }
-
- attr = ldb_attr_casefold(mem_ctx, t->u.substring.attr);
- if (attr == NULL) return NULL;
- h = ldb_attrib_handler(module->ldb, attr);
-
- subval.data = (void *)wild_card_string;
- subval.length = strlen(wild_card_string) + 1;
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, mem_ctx, &(subval), &value);
- if (value.data == NULL) {
- return NULL;
- }
-
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_attribute_values "
- "WHERE norm_attr_name = '%q' "
- "AND norm_attr_value GLOB '%q'",
- attr,
- value.data);
-
- case LDB_OP_GREATER:
- attr = ldb_attr_casefold(mem_ctx, t->u.equality.attr);
- if (attr == NULL) return NULL;
- h = ldb_attrib_handler(module->ldb, attr);
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, mem_ctx, &(t->u.equality.value), &value);
- if (value.data == NULL) {
- return NULL;
- }
-
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_attribute_values "
- "WHERE norm_attr_name = '%q' "
- "AND ldap_compare(norm_attr_value, '>=', '%q', '%q') ",
- attr,
- value.data,
- attr);
-
- case LDB_OP_LESS:
- attr = ldb_attr_casefold(mem_ctx, t->u.equality.attr);
- if (attr == NULL) return NULL;
- h = ldb_attrib_handler(module->ldb, attr);
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, mem_ctx, &(t->u.equality.value), &value);
- if (value.data == NULL) {
- return NULL;
- }
-
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_attribute_values "
- "WHERE norm_attr_name = '%q' "
- "AND ldap_compare(norm_attr_value, '<=', '%q', '%q') ",
- attr,
- value.data,
- attr);
-
- case LDB_OP_PRESENT:
- if (strcasecmp(t->u.present.attr, "dn") == 0) {
- return talloc_strdup(mem_ctx, "SELECT eid FROM ldb_entry");
- }
-
- attr = ldb_attr_casefold(mem_ctx, t->u.present.attr);
- if (attr == NULL) return NULL;
-
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_attribute_values "
- "WHERE norm_attr_name = '%q' ",
- attr);
-
- case LDB_OP_APPROX:
- attr = ldb_attr_casefold(mem_ctx, t->u.equality.attr);
- if (attr == NULL) return NULL;
- h = ldb_attrib_handler(module->ldb, attr);
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, mem_ctx, &(t->u.equality.value), &value);
- if (value.data == NULL) {
- return NULL;
- }
-
- return lsqlite3_tprintf(mem_ctx,
- "SELECT eid FROM ldb_attribute_values "
- "WHERE norm_attr_name = '%q' "
- "AND ldap_compare(norm_attr_value, '~%', 'q', '%q') ",
- attr,
- value.data,
- attr);
-
- case LDB_OP_EXTENDED:
-#warning "work out how to handle bitops"
- return NULL;
-
- default:
- break;
- };
-
- /* should never occur */
- abort();
- return NULL;
-}
-
-/*
- * query_int()
- *
- * This function is used for the common case of queries that return a single
- * integer value.
- *
- * NOTE: If more than one value is returned by the query, all but the first
- * one will be ignored.
- */
-static int
-query_int(const struct lsqlite3_private * lsqlite3,
- long long * pRet,
- const char * pSql,
- ...)
-{
- int ret;
- int bLoop;
- char * p;
- sqlite3_stmt * pStmt;
- va_list args;
-
- /* Begin access to variable argument list */
- va_start(args, pSql);
-
- /* Format the query */
- if ((p = sqlite3_vmprintf(pSql, args)) == NULL) {
- return SQLITE_NOMEM;
- }
-
- /*
- * Prepare and execute the SQL statement. Loop allows retrying on
- * certain errors, e.g. SQLITE_SCHEMA occurs if the schema changes,
- * requiring retrying the operation.
- */
- for (bLoop = TRUE; bLoop; ) {
-
- /* Compile the SQL statement into sqlite virtual machine */
- if ((ret = sqlite3_prepare(lsqlite3->sqlite,
- p,
- -1,
- &pStmt,
- NULL)) == SQLITE_SCHEMA) {
- if (stmtGetEID != NULL) {
- sqlite3_finalize(stmtGetEID);
- stmtGetEID = NULL;
- }
- continue;
- } else if (ret != SQLITE_OK) {
- break;
- }
-
- /* One row expected */
- if ((ret = sqlite3_step(pStmt)) == SQLITE_SCHEMA) {
- if (stmtGetEID != NULL) {
- sqlite3_finalize(stmtGetEID);
- stmtGetEID = NULL;
- }
- (void) sqlite3_finalize(pStmt);
- continue;
- } else if (ret != SQLITE_ROW) {
- (void) sqlite3_finalize(pStmt);
- break;
- }
-
- /* Get the value to be returned */
- *pRet = sqlite3_column_int64(pStmt, 0);
-
- /* Free the virtual machine */
- if ((ret = sqlite3_finalize(pStmt)) == SQLITE_SCHEMA) {
- if (stmtGetEID != NULL) {
- sqlite3_finalize(stmtGetEID);
- stmtGetEID = NULL;
- }
- continue;
- } else if (ret != SQLITE_OK) {
- (void) sqlite3_finalize(pStmt);
- break;
- }
-
- /*
- * Normal condition is only one time through loop. Loop is
- * rerun in error conditions, via "continue", above.
- */
- bLoop = FALSE;
- }
-
- /* All done with variable argument list */
- va_end(args);
-
-
- /* Free the memory we allocated for our query string */
- sqlite3_free(p);
-
- return ret;
-}
-
-/*
- * This is a bad hack to support ldap style comparisons whithin sqlite.
- * val is the attribute in the row currently under test
- * func is the desired test "<=" ">=" "~" ":"
- * cmp is the value to compare against (eg: "test")
- * attr is the attribute name the value of which we want to test
- */
-
-static void lsqlite3_compare(sqlite3_context *ctx, int argc,
- sqlite3_value **argv)
-{
- struct ldb_context *ldb = (struct ldb_context *)sqlite3_user_data(ctx);
- const char *val = (const char *)sqlite3_value_text(argv[0]);
- const char *func = (const char *)sqlite3_value_text(argv[1]);
- const char *cmp = (const char *)sqlite3_value_text(argv[2]);
- const char *attr = (const char *)sqlite3_value_text(argv[3]);
- const struct ldb_attrib_handler *h;
- struct ldb_val valX;
- struct ldb_val valY;
- int ret;
-
- switch (func[0]) {
- /* greater */
- case '>': /* >= */
- h = ldb_attrib_handler(ldb, attr);
- valX.data = (void *)cmp;
- valX.length = strlen(cmp);
- valY.data = (void *)val;
- valY.length = strlen(val);
- ret = h->comparison_fn(ldb, ldb, &valY, &valX);
- if (ret >= 0)
- sqlite3_result_int(ctx, 1);
- else
- sqlite3_result_int(ctx, 0);
- return;
-
- /* lesser */
- case '<': /* <= */
- h = ldb_attrib_handler(ldb, attr);
- valX.data = (void *)cmp;
- valX.length = strlen(cmp);
- valY.data = (void *)val;
- valY.length = strlen(val);
- ret = h->comparison_fn(ldb, ldb, &valY, &valX);
- if (ret <= 0)
- sqlite3_result_int(ctx, 1);
- else
- sqlite3_result_int(ctx, 0);
- return;
-
- /* approx */
- case '~':
- /* TODO */
- sqlite3_result_int(ctx, 0);
- return;
-
- /* bitops */
- case ':':
- /* TODO */
- sqlite3_result_int(ctx, 0);
- return;
-
- default:
- break;
- }
-
- sqlite3_result_error(ctx, "Value must start with a special operation char (<>~:)!", -1);
- return;
-}
-
-
-/* rename a record */
-static int lsqlite3_safe_rollback(sqlite3 *sqlite)
-{
- char *errmsg;
- int ret;
-
- /* execute */
- ret = sqlite3_exec(sqlite, "ROLLBACK;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3_safe_rollback: Error: %s\n", errmsg);
- free(errmsg);
- }
- return -1;
- }
-
- return 0;
-}
-
-/* return an eid as result */
-static int lsqlite3_eid_callback(void *result, int col_num, char **cols, char **names)
-{
- long long *eid = (long long *)result;
-
- if (col_num != 1) return SQLITE_ABORT;
- if (strcasecmp(names[0], "eid") != 0) return SQLITE_ABORT;
-
- *eid = atoll(cols[0]);
- return SQLITE_OK;
-}
-
-/*
- * add a single set of ldap message values to a ldb_message
- */
-static int lsqlite3_search_callback(void *result, int col_num, char **cols, char **names)
-{
- struct ldb_handle *handle = talloc_get_type(result, struct ldb_handle);
- struct lsql_context *ac = talloc_get_type(handle->private_data, struct lsql_context);
- struct ldb_message *msg;
- long long eid;
- int i;
-
- /* eid, dn, attr_name, attr_value */
- if (col_num != 4)
- return SQLITE_ABORT;
-
- eid = atoll(cols[0]);
-
- if (eid != ac->current_eid) { /* here begin a new entry */
-
- /* call the async callback for the last entry
- * except the first time */
- if (ac->current_eid != 0) {
- ac->ares->message = ldb_msg_canonicalize(ac->module->ldb, ac->ares->message);
- if (ac->ares->message == NULL)
- return SQLITE_ABORT;
-
- handle->status = ac->callback(ac->module->ldb, ac->context, ac->ares);
- if (handle->status != LDB_SUCCESS)
- return SQLITE_ABORT;
- }
-
- /* start over */
- ac->ares = talloc_zero(ac, struct ldb_reply);
- if (!ac->ares)
- return SQLITE_ABORT;
-
- ac->ares->message = ldb_msg_new(ac->ares);
- if (!ac->ares->message)
- return SQLITE_ABORT;
-
- ac->ares->type = LDB_REPLY_ENTRY;
- ac->current_eid = eid;
- }
-
- msg = ac->ares->message;
-
- if (msg->dn == NULL) {
- msg->dn = ldb_dn_explode(msg, cols[1]);
- if (msg->dn == NULL)
- return SQLITE_ABORT;
- }
-
- if (ac->attrs) {
- int found = 0;
- for (i = 0; ac->attrs[i]; i++) {
- if (strcasecmp(cols[2], ac->attrs[i]) == 0) {
- found = 1;
- break;
- }
- }
- if (!found) return SQLITE_OK;
- }
-
- if (ldb_msg_add_string(msg, cols[2], cols[3]) != 0) {
- return SQLITE_ABORT;
- }
-
- return SQLITE_OK;
-}
-
-
-/*
- * lsqlite3_get_eid()
- * lsqlite3_get_eid_ndn()
- *
- * These functions are used for the very common case of retrieving an EID value
- * given a (normalized) DN.
- */
-
-static long long lsqlite3_get_eid_ndn(sqlite3 *sqlite, void *mem_ctx, const char *norm_dn)
-{
- char *errmsg;
- char *query;
- long long eid = -1;
- long long ret;
-
- /* get object eid */
- query = lsqlite3_tprintf(mem_ctx, "SELECT eid "
- "FROM ldb_entry "
- "WHERE norm_dn = '%q';", norm_dn);
- if (query == NULL) return -1;
-
- ret = sqlite3_exec(sqlite, query, lsqlite3_eid_callback, &eid, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3_get_eid: Fatal Error: %s\n", errmsg);
- free(errmsg);
- }
- return -1;
- }
-
- return eid;
-}
-
-static long long lsqlite3_get_eid(struct ldb_module *module, const struct ldb_dn *dn)
-{
- TALLOC_CTX *local_ctx;
- struct lsqlite3_private *lsqlite3 = module->private_data;
- long long eid = -1;
- char *cdn;
-
- /* ignore ltdb specials */
- if (ldb_dn_is_special(dn)) {
- return -1;
- }
-
- /* create a local ctx */
- local_ctx = talloc_named(lsqlite3, 0, "lsqlite3_get_eid local context");
- if (local_ctx == NULL) {
- return -1;
- }
-
- cdn = ldb_dn_linearize(local_ctx, ldb_dn_casefold(module->ldb, local_ctx, dn));
- if (!cdn) goto done;
-
- eid = lsqlite3_get_eid_ndn(lsqlite3->sqlite, local_ctx, cdn);
-
-done:
- talloc_free(local_ctx);
- return eid;
-}
-
-/*
- * Interface functions referenced by lsqlite3_ops
- */
-
-/* search for matching records, by tree */
-int lsql_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct lsqlite3_private *lsqlite3 = talloc_get_type(module->private_data, struct lsqlite3_private);
- struct lsql_context *lsql_ac;
- char *norm_basedn;
- char *sqlfilter;
- char *errmsg;
- char *query = NULL;
- int ret;
-
- req->handle = init_handle(lsqlite3, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- lsql_ac = talloc_get_type(req->handle->private_data, struct lsql_context);
-
- if ((req->op.search.base == NULL || req->op.search.base->comp_num == 0) &&
- (req->op.search.scope == LDB_SCOPE_BASE || req->op.search.scope == LDB_SCOPE_ONELEVEL))
- return LDB_ERR_OPERATIONS_ERROR;
-
- if (req->op.search.base) {
- norm_basedn = ldb_dn_linearize(lsql_ac, ldb_dn_casefold(module->ldb, lsql_ac, req->op.search.base));
- if (norm_basedn == NULL) {
- ret = LDB_ERR_INVALID_DN_SYNTAX;
- goto failed;
- }
- } else norm_basedn = talloc_strdup(lsql_ac, "");
-
- /* Convert filter into a series of SQL conditions (constraints) */
- sqlfilter = parsetree_to_sql(module, lsql_ac, req->op.search.tree);
-
- switch(req->op.search.scope) {
- case LDB_SCOPE_DEFAULT:
- case LDB_SCOPE_SUBTREE:
- if (*norm_basedn != '\0') {
- query = lsqlite3_tprintf(lsql_ac,
- "SELECT entry.eid,\n"
- " entry.dn,\n"
- " av.attr_name,\n"
- " av.attr_value\n"
- " FROM ldb_entry AS entry\n"
-
- " LEFT OUTER JOIN ldb_attribute_values AS av\n"
- " ON av.eid = entry.eid\n"
-
- " WHERE entry.eid IN\n"
- " (SELECT DISTINCT ldb_entry.eid\n"
- " FROM ldb_entry\n"
- " WHERE (ldb_entry.norm_dn GLOB('*,%q')\n"
- " OR ldb_entry.norm_dn = '%q')\n"
- " AND ldb_entry.eid IN\n"
- " (%s)\n"
- " )\n"
-
- " ORDER BY entry.eid ASC;",
- norm_basedn,
- norm_basedn,
- sqlfilter);
- } else {
- query = lsqlite3_tprintf(lsql_ac,
- "SELECT entry.eid,\n"
- " entry.dn,\n"
- " av.attr_name,\n"
- " av.attr_value\n"
- " FROM ldb_entry AS entry\n"
-
- " LEFT OUTER JOIN ldb_attribute_values AS av\n"
- " ON av.eid = entry.eid\n"
-
- " WHERE entry.eid IN\n"
- " (SELECT DISTINCT ldb_entry.eid\n"
- " FROM ldb_entry\n"
- " WHERE ldb_entry.eid IN\n"
- " (%s)\n"
- " )\n"
-
- " ORDER BY entry.eid ASC;",
- sqlfilter);
- }
-
- break;
-
- case LDB_SCOPE_BASE:
- query = lsqlite3_tprintf(lsql_ac,
- "SELECT entry.eid,\n"
- " entry.dn,\n"
- " av.attr_name,\n"
- " av.attr_value\n"
- " FROM ldb_entry AS entry\n"
-
- " LEFT OUTER JOIN ldb_attribute_values AS av\n"
- " ON av.eid = entry.eid\n"
-
- " WHERE entry.eid IN\n"
- " (SELECT DISTINCT ldb_entry.eid\n"
- " FROM ldb_entry\n"
- " WHERE ldb_entry.norm_dn = '%q'\n"
- " AND ldb_entry.eid IN\n"
- " (%s)\n"
- " )\n"
-
- " ORDER BY entry.eid ASC;",
- norm_basedn,
- sqlfilter);
- break;
-
- case LDB_SCOPE_ONELEVEL:
- query = lsqlite3_tprintf(lsql_ac,
- "SELECT entry.eid,\n"
- " entry.dn,\n"
- " av.attr_name,\n"
- " av.attr_value\n"
- " FROM ldb_entry AS entry\n"
-
- " LEFT OUTER JOIN ldb_attribute_values AS av\n"
- " ON av.eid = entry.eid\n"
-
- " WHERE entry.eid IN\n"
- " (SELECT DISTINCT ldb_entry.eid\n"
- " FROM ldb_entry\n"
- " WHERE norm_dn GLOB('*,%q')\n"
- " AND NOT norm_dn GLOB('*,*,%q')\n"
- " AND ldb_entry.eid IN\n(%s)\n"
- " )\n"
-
- " ORDER BY entry.eid ASC;",
- norm_basedn,
- norm_basedn,
- sqlfilter);
- break;
- }
-
- if (query == NULL) {
- goto failed;
- }
-
- /* * /
- printf ("%s\n", query);
- / * */
-
- lsql_ac->current_eid = 0;
- lsql_ac->attrs = req->op.search.attrs;
- lsql_ac->ares = NULL;
-
- req->handle->state = LDB_ASYNC_PENDING;
-
- ret = sqlite3_exec(lsqlite3->sqlite, query, lsqlite3_search_callback, req->handle, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- goto failed;
- }
-
- /* complete the last message if any */
- if (lsql_ac->ares) {
- lsql_ac->ares->message = ldb_msg_canonicalize(module->ldb, lsql_ac->ares->message);
- if (lsql_ac->ares->message == NULL)
- goto failed;
-
- req->handle->status = lsql_ac->callback(module->ldb, lsql_ac->context, lsql_ac->ares);
- if (req->handle->status != LDB_SUCCESS)
- goto failed;
- }
-
- req->handle->state = LDB_ASYNC_DONE;
-
- return LDB_SUCCESS;
-
-failed:
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-/* add a record */
-static int lsql_add(struct ldb_module *module, struct ldb_request *req)
-{
- struct lsqlite3_private *lsqlite3 = talloc_get_type(module->private_data, struct lsqlite3_private);
- struct lsql_context *lsql_ac;
- struct ldb_message *msg = req->op.add.message;
- long long eid;
- char *dn, *ndn;
- char *errmsg;
- char *query;
- int i;
- int ret = LDB_SUCCESS;
-
- req->handle = init_handle(lsqlite3, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- lsql_ac = talloc_get_type(req->handle->private_data, struct lsql_context);
- req->handle->state = LDB_ASYNC_DONE;
- req->handle->status = LDB_SUCCESS;
-
- /* See if this is an ltdb special */
- if (ldb_dn_is_special(msg->dn)) {
- struct ldb_dn *c;
-
- c = ldb_dn_explode(lsql_ac, "@SUBCLASSES");
- if (ldb_dn_compare(module->ldb, msg->dn, c) == 0) {
-#warning "insert subclasses into object class tree"
- ret = LDB_ERR_UNWILLING_TO_PERFORM;
- goto done;
- }
-
-/*
- c = ldb_dn_explode(local_ctx, "@INDEXLIST");
- if (ldb_dn_compare(module->ldb, msg->dn, c) == 0) {
-#warning "should we handle indexes somehow ?"
- ret = LDB_ERR_UNWILLING_TO_PERFORM;
- goto done;
- }
-*/
- /* Others return an error */
- ret = LDB_ERR_UNWILLING_TO_PERFORM;
- goto done;
- }
-
- /* create linearized and normalized dns */
- dn = ldb_dn_linearize(lsql_ac, msg->dn);
- ndn = ldb_dn_linearize(lsql_ac, ldb_dn_casefold(module->ldb, lsql_ac, msg->dn));
- if (dn == NULL || ndn == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- query = lsqlite3_tprintf(lsql_ac,
- /* Add new entry */
- "INSERT OR ABORT INTO ldb_entry "
- "('dn', 'norm_dn') "
- "VALUES ('%q', '%q');",
- dn, ndn);
- if (query == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- ret = sqlite3_exec(lsqlite3->sqlite, query, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- eid = lsqlite3_get_eid_ndn(lsqlite3->sqlite, lsql_ac, ndn);
- if (eid == -1) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- for (i = 0; i < msg->num_elements; i++) {
- const struct ldb_message_element *el = &msg->elements[i];
- const struct ldb_attrib_handler *h;
- char *attr;
- int j;
-
- /* Get a case-folded copy of the attribute name */
- attr = ldb_attr_casefold(lsql_ac, el->name);
- if (attr == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- h = ldb_attrib_handler(module->ldb, el->name);
-
- /* For each value of the specified attribute name... */
- for (j = 0; j < el->num_values; j++) {
- struct ldb_val value;
- char *insert;
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, lsql_ac, &(el->values[j]), &value);
- if (value.data == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- insert = lsqlite3_tprintf(lsql_ac,
- "INSERT OR ROLLBACK INTO ldb_attribute_values "
- "('eid', 'attr_name', 'norm_attr_name',"
- " 'attr_value', 'norm_attr_value') "
- "VALUES ('%lld', '%q', '%q', '%q', '%q');",
- eid, el->name, attr,
- el->values[j].data, value.data);
- if (insert == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- ret = sqlite3_exec(lsqlite3->sqlite, insert, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- ret = LDB_ERR_OTHER;
- goto done;
- }
- }
- }
-
- if (lsql_ac->callback) {
- req->handle->status = lsql_ac->callback(module->ldb, lsql_ac->context, NULL);
- }
-
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/* modify a record */
-static int lsql_modify(struct ldb_module *module, struct ldb_request *req)
-{
- struct lsqlite3_private *lsqlite3 = talloc_get_type(module->private_data, struct lsqlite3_private);
- struct lsql_context *lsql_ac;
- struct ldb_message *msg = req->op.mod.message;
- long long eid;
- char *errmsg;
- int i;
- int ret = LDB_SUCCESS;
-
- req->handle = init_handle(lsqlite3, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- lsql_ac = talloc_get_type(req->handle->private_data, struct lsql_context);
- req->handle->state = LDB_ASYNC_DONE;
- req->handle->status = LDB_SUCCESS;
-
- /* See if this is an ltdb special */
- if (ldb_dn_is_special(msg->dn)) {
- struct ldb_dn *c;
-
- c = ldb_dn_explode(lsql_ac, "@SUBCLASSES");
- if (ldb_dn_compare(module->ldb, msg->dn, c) == 0) {
-#warning "modify subclasses into object class tree"
- ret = LDB_ERR_UNWILLING_TO_PERFORM;
- goto done;
- }
-
- /* Others return an error */
- ret = LDB_ERR_UNWILLING_TO_PERFORM;
- goto done;
- }
-
- eid = lsqlite3_get_eid(module, msg->dn);
- if (eid == -1) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- for (i = 0; i < msg->num_elements; i++) {
- const struct ldb_message_element *el = &msg->elements[i];
- const struct ldb_attrib_handler *h;
- int flags = el->flags & LDB_FLAG_MOD_MASK;
- char *attr;
- char *mod;
- int j;
-
- /* Get a case-folded copy of the attribute name */
- attr = ldb_attr_casefold(lsql_ac, el->name);
- if (attr == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- h = ldb_attrib_handler(module->ldb, el->name);
-
- switch (flags) {
-
- case LDB_FLAG_MOD_REPLACE:
-
- /* remove all attributes before adding the replacements */
- mod = lsqlite3_tprintf(lsql_ac,
- "DELETE FROM ldb_attribute_values "
- "WHERE eid = '%lld' "
- "AND norm_attr_name = '%q';",
- eid, attr);
- if (mod == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- ret = sqlite3_exec(lsqlite3->sqlite, mod, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- /* MISSING break is INTENTIONAL */
-
- case LDB_FLAG_MOD_ADD:
-#warning "We should throw an error if no value is provided!"
- /* For each value of the specified attribute name... */
- for (j = 0; j < el->num_values; j++) {
- struct ldb_val value;
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, lsql_ac, &(el->values[j]), &value);
- if (value.data == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- mod = lsqlite3_tprintf(lsql_ac,
- "INSERT OR ROLLBACK INTO ldb_attribute_values "
- "('eid', 'attr_name', 'norm_attr_name',"
- " 'attr_value', 'norm_attr_value') "
- "VALUES ('%lld', '%q', '%q', '%q', '%q');",
- eid, el->name, attr,
- el->values[j].data, value.data);
-
- if (mod == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- ret = sqlite3_exec(lsqlite3->sqlite, mod, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- ret = LDB_ERR_OTHER;
- goto done;
- }
- }
-
- break;
-
- case LDB_FLAG_MOD_DELETE:
-#warning "We should throw an error if the attribute we are trying to delete does not exist!"
- if (el->num_values == 0) {
- mod = lsqlite3_tprintf(lsql_ac,
- "DELETE FROM ldb_attribute_values "
- "WHERE eid = '%lld' "
- "AND norm_attr_name = '%q';",
- eid, attr);
- if (mod == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- ret = sqlite3_exec(lsqlite3->sqlite, mod, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- ret = LDB_ERR_OTHER;
- goto done;
- }
- }
-
- /* For each value of the specified attribute name... */
- for (j = 0; j < el->num_values; j++) {
- struct ldb_val value;
-
- /* Get a canonicalised copy of the data */
- h->canonicalise_fn(module->ldb, lsql_ac, &(el->values[j]), &value);
- if (value.data == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- mod = lsqlite3_tprintf(lsql_ac,
- "DELETE FROM ldb_attribute_values "
- "WHERE eid = '%lld' "
- "AND norm_attr_name = '%q' "
- "AND norm_attr_value = '%q';",
- eid, attr, value.data);
-
- if (mod == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- ret = sqlite3_exec(lsqlite3->sqlite, mod, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- ret = LDB_ERR_OTHER;
- goto done;
- }
- }
-
- break;
- }
- }
-
- if (lsql_ac->callback) {
- req->handle->status = lsql_ac->callback(module->ldb, lsql_ac->context, NULL);
- }
-
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/* delete a record */
-static int lsql_delete(struct ldb_module *module, struct ldb_request *req)
-{
- struct lsqlite3_private *lsqlite3 = talloc_get_type(module->private_data, struct lsqlite3_private);
- struct lsql_context *lsql_ac;
- long long eid;
- char *errmsg;
- char *query;
- int ret = LDB_SUCCESS;
-
-
- req->handle = init_handle(lsqlite3, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- lsql_ac = talloc_get_type(req->handle->private_data, struct lsql_context);
- req->handle->state = LDB_ASYNC_DONE;
- req->handle->status = LDB_SUCCESS;
-
- eid = lsqlite3_get_eid(module, req->op.del.dn);
- if (eid == -1) {
- goto done;
- }
-
- query = lsqlite3_tprintf(lsql_ac,
- /* Delete entry */
- "DELETE FROM ldb_entry WHERE eid = %lld; "
- /* Delete attributes */
- "DELETE FROM ldb_attribute_values WHERE eid = %lld; ",
- eid, eid);
- if (query == NULL) {
- ret = LDB_ERR_OTHER;
- goto done;
- }
-
- ret = sqlite3_exec(lsqlite3->sqlite, query, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- req->handle->status = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- if (lsql_ac->callback) {
- ret = lsql_ac->callback(module->ldb, lsql_ac->context, NULL);
- }
-
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/* rename a record */
-static int lsql_rename(struct ldb_module *module, struct ldb_request *req)
-{
- struct lsqlite3_private *lsqlite3 = talloc_get_type(module->private_data, struct lsqlite3_private);
- struct lsql_context *lsql_ac;
- char *new_dn, *new_cdn, *old_cdn;
- char *errmsg;
- char *query;
- int ret = LDB_SUCCESS;
-
- req->handle = init_handle(lsqlite3, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- lsql_ac = talloc_get_type(req->handle->private_data, struct lsql_context);
- req->handle->state = LDB_ASYNC_DONE;
- req->handle->status = LDB_SUCCESS;
-
- /* create linearized and normalized dns */
- old_cdn = ldb_dn_linearize(lsql_ac, ldb_dn_casefold(module->ldb, lsql_ac, req->op.rename.olddn));
- new_cdn = ldb_dn_linearize(lsql_ac, ldb_dn_casefold(module->ldb, lsql_ac, req->op.rename.newdn));
- new_dn = ldb_dn_linearize(lsql_ac, req->op.rename.newdn);
- if (old_cdn == NULL || new_cdn == NULL || new_dn == NULL) {
- goto done;
- }
-
- /* build the SQL query */
- query = lsqlite3_tprintf(lsql_ac,
- "UPDATE ldb_entry SET dn = '%q', norm_dn = '%q' "
- "WHERE norm_dn = '%q';",
- new_dn, new_cdn, old_cdn);
- if (query == NULL) {
- goto done;
- }
-
- /* execute */
- ret = sqlite3_exec(lsqlite3->sqlite, query, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- ldb_set_errstring(module->ldb, errmsg);
- free(errmsg);
- }
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- if (lsql_ac->callback) {
- ret = lsql_ac->callback(module->ldb, lsql_ac->context, NULL);
- }
-
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-static int lsql_start_trans(struct ldb_module * module)
-{
- int ret;
- char *errmsg;
- struct lsqlite3_private * lsqlite3 = module->private_data;
-
- if (lsqlite3->trans_count == 0) {
- ret = sqlite3_exec(lsqlite3->sqlite, "BEGIN IMMEDIATE;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3_start_trans: error: %s\n", errmsg);
- free(errmsg);
- }
- return -1;
- }
- };
-
- lsqlite3->trans_count++;
-
- return 0;
-}
-
-static int lsql_end_trans(struct ldb_module *module)
-{
- int ret;
- char *errmsg;
- struct lsqlite3_private *lsqlite3 = module->private_data;
-
- if (lsqlite3->trans_count > 0) {
- lsqlite3->trans_count--;
- } else return -1;
-
- if (lsqlite3->trans_count == 0) {
- ret = sqlite3_exec(lsqlite3->sqlite, "COMMIT;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3_end_trans: error: %s\n", errmsg);
- free(errmsg);
- }
- return -1;
- }
- }
-
- return 0;
-}
-
-static int lsql_del_trans(struct ldb_module *module)
-{
- struct lsqlite3_private *lsqlite3 = module->private_data;
-
- if (lsqlite3->trans_count > 0) {
- lsqlite3->trans_count--;
- } else return -1;
-
- if (lsqlite3->trans_count == 0) {
- return lsqlite3_safe_rollback(lsqlite3->sqlite);
- }
-
- return -1;
-}
-
-static int destructor(struct lsqlite3_private *lsqlite3)
-{
- if (lsqlite3->sqlite) {
- sqlite3_close(lsqlite3->sqlite);
- }
- return 0;
-}
-
-static int lsql_request(struct ldb_module *module, struct ldb_request *req)
-{
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static int lsql_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- return handle->status;
-}
-
-/*
- * Table of operations for the sqlite3 backend
- */
-static const struct ldb_module_ops lsqlite3_ops = {
- .name = "sqlite",
- .search = lsql_search,
- .add = lsql_add,
- .modify = lsql_modify,
- .del = lsql_delete,
- .rename = lsql_rename,
- .request = lsql_request,
- .start_transaction = lsql_start_trans,
- .end_transaction = lsql_end_trans,
- .del_transaction = lsql_del_trans,
- .wait = lsql_wait,
-};
-
-/*
- * Static functions
- */
-
-static int initialize(struct lsqlite3_private *lsqlite3,
- struct ldb_context *ldb, const char *url, int flags)
-{
- TALLOC_CTX *local_ctx;
- long long queryInt;
- int rollback = 0;
- char *errmsg;
- char *schema;
- int ret;
-
- /* create a local ctx */
- local_ctx = talloc_named(lsqlite3, 0, "lsqlite3_rename local context");
- if (local_ctx == NULL) {
- return -1;
- }
-
- schema = lsqlite3_tprintf(local_ctx,
-
-
- "CREATE TABLE ldb_info AS "
- " SELECT 'LDB' AS database_type,"
- " '1.0' AS version;"
-
- /*
- * The entry table holds the information about an entry.
- * This table is used to obtain the EID of the entry and to
- * support scope=one and scope=base. The parent and child
- * table is included in the entry table since all the other
- * attributes are dependent on EID.
- */
- "CREATE TABLE ldb_entry "
- "("
- " eid INTEGER PRIMARY KEY AUTOINCREMENT,"
- " dn TEXT UNIQUE NOT NULL,"
- " norm_dn TEXT UNIQUE NOT NULL"
- ");"
-
-
- "CREATE TABLE ldb_object_classes"
- "("
- " class_name TEXT PRIMARY KEY,"
- " parent_class_name TEXT,"
- " tree_key TEXT UNIQUE,"
- " max_child_num INTEGER DEFAULT 0"
- ");"
-
- /*
- * We keep a full listing of attribute/value pairs here
- */
- "CREATE TABLE ldb_attribute_values"
- "("
- " eid INTEGER REFERENCES ldb_entry,"
- " attr_name TEXT,"
- " norm_attr_name TEXT,"
- " attr_value TEXT,"
- " norm_attr_value TEXT "
- ");"
-
-
- /*
- * Indexes
- */
- "CREATE INDEX ldb_attribute_values_eid_idx "
- " ON ldb_attribute_values (eid);"
-
- "CREATE INDEX ldb_attribute_values_name_value_idx "
- " ON ldb_attribute_values (attr_name, norm_attr_value);"
-
-
-
- /*
- * Triggers
- */
-
- "CREATE TRIGGER ldb_object_classes_insert_tr"
- " AFTER INSERT"
- " ON ldb_object_classes"
- " FOR EACH ROW"
- " BEGIN"
- " UPDATE ldb_object_classes"
- " SET tree_key = COALESCE(tree_key, "
- " ("
- " SELECT tree_key || "
- " (SELECT base160(max_child_num + 1)"
- " FROM ldb_object_classes"
- " WHERE class_name = "
- " new.parent_class_name)"
- " FROM ldb_object_classes "
- " WHERE class_name = new.parent_class_name "
- " ));"
- " UPDATE ldb_object_classes "
- " SET max_child_num = max_child_num + 1"
- " WHERE class_name = new.parent_class_name;"
- " END;"
-
- /*
- * Table initialization
- */
-
- "INSERT INTO ldb_object_classes "
- " (class_name, tree_key) "
- " VALUES "
- " ('TOP', '0001');");
-
- /* Skip protocol indicator of url */
- if (strncmp(url, "sqlite3://", 10) != 0) {
- return SQLITE_MISUSE;
- }
-
- /* Update pointer to just after the protocol indicator */
- url += 10;
-
- /* Try to open the (possibly empty/non-existent) database */
- if ((ret = sqlite3_open(url, &lsqlite3->sqlite)) != SQLITE_OK) {
- return ret;
- }
-
- /* In case this is a new database, enable auto_vacuum */
- ret = sqlite3_exec(lsqlite3->sqlite, "PRAGMA auto_vacuum = 1;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3 initializaion error: %s\n", errmsg);
- free(errmsg);
- }
- goto failed;
- }
-
- if (flags & LDB_FLG_NOSYNC) {
- /* DANGEROUS */
- ret = sqlite3_exec(lsqlite3->sqlite, "PRAGMA synchronous = OFF;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3 initializaion error: %s\n", errmsg);
- free(errmsg);
- }
- goto failed;
- }
- }
-
- /* */
-
- /* Establish a busy timeout of 30 seconds */
- if ((ret = sqlite3_busy_timeout(lsqlite3->sqlite,
- 30000)) != SQLITE_OK) {
- return ret;
- }
-
- /* Create a function, callable from sql, to increment a tree_key */
- if ((ret =
- sqlite3_create_function(lsqlite3->sqlite,/* handle */
- "base160_next", /* function name */
- 1, /* number of args */
- SQLITE_ANY, /* preferred text type */
- NULL, /* user data */
- base160next_sql, /* called func */
- NULL, /* step func */
- NULL /* final func */
- )) != SQLITE_OK) {
- return ret;
- }
-
- /* Create a function, callable from sql, to convert int to base160 */
- if ((ret =
- sqlite3_create_function(lsqlite3->sqlite,/* handle */
- "base160", /* function name */
- 1, /* number of args */
- SQLITE_ANY, /* preferred text type */
- NULL, /* user data */
- base160_sql, /* called func */
- NULL, /* step func */
- NULL /* final func */
- )) != SQLITE_OK) {
- return ret;
- }
-
- /* Create a function, callable from sql, to perform various comparisons */
- if ((ret =
- sqlite3_create_function(lsqlite3->sqlite, /* handle */
- "ldap_compare", /* function name */
- 4, /* number of args */
- SQLITE_ANY, /* preferred text type */
- ldb , /* user data */
- lsqlite3_compare, /* called func */
- NULL, /* step func */
- NULL /* final func */
- )) != SQLITE_OK) {
- return ret;
- }
-
- /* Begin a transaction */
- ret = sqlite3_exec(lsqlite3->sqlite, "BEGIN EXCLUSIVE;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3: initialization error: %s\n", errmsg);
- free(errmsg);
- }
- goto failed;
- }
- rollback = 1;
-
- /* Determine if this is a new database. No tables means it is. */
- if (query_int(lsqlite3,
- &queryInt,
- "SELECT COUNT(*)\n"
- " FROM sqlite_master\n"
- " WHERE type = 'table';") != 0) {
- goto failed;
- }
-
- if (queryInt == 0) {
- /*
- * Create the database schema
- */
- ret = sqlite3_exec(lsqlite3->sqlite, schema, NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3 initializaion error: %s\n", errmsg);
- free(errmsg);
- }
- goto failed;
- }
- } else {
- /*
- * Ensure that the database we opened is one of ours
- */
- if (query_int(lsqlite3,
- &queryInt,
- "SELECT "
- " (SELECT COUNT(*) = 2"
- " FROM sqlite_master "
- " WHERE type = 'table' "
- " AND name IN "
- " ("
- " 'ldb_entry', "
- " 'ldb_object_classes' "
- " ) "
- " ) "
- " AND "
- " (SELECT 1 "
- " FROM ldb_info "
- " WHERE database_type = 'LDB' "
- " AND version = '1.0'"
- " );") != 0 ||
- queryInt != 1) {
-
- /* It's not one that we created. See ya! */
- goto failed;
- }
- }
-
- /* Commit the transaction */
- ret = sqlite3_exec(lsqlite3->sqlite, "COMMIT;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3: iniialization error: %s\n", errmsg);
- free(errmsg);
- }
- goto failed;
- }
-
- return SQLITE_OK;
-
-failed:
- if (rollback) lsqlite3_safe_rollback(lsqlite3->sqlite);
- sqlite3_close(lsqlite3->sqlite);
- return -1;
-}
-
-/*
- * connect to the database
- */
-static int lsqlite3_connect(struct ldb_context *ldb,
- const char *url,
- unsigned int flags,
- const char *options[],
- struct ldb_module **module)
-{
- int i;
- int ret;
- struct lsqlite3_private * lsqlite3 = NULL;
-
- lsqlite3 = talloc(ldb, struct lsqlite3_private);
- if (!lsqlite3) {
- goto failed;
- }
-
- lsqlite3->sqlite = NULL;
- lsqlite3->options = NULL;
- lsqlite3->trans_count = 0;
-
- ret = initialize(lsqlite3, ldb, url, flags);
- if (ret != SQLITE_OK) {
- goto failed;
- }
-
- talloc_set_destructor(lsqlite3, destructor);
-
-
-
- *module = talloc(ldb, struct ldb_module);
- if (!module) {
- ldb_oom(ldb);
- goto failed;
- }
- talloc_set_name_const(*module, "ldb_sqlite3 backend");
- (*module)->ldb = ldb;
- (*module)->prev = (*module)->next = NULL;
- (*module)->private_data = lsqlite3;
- (*module)->ops = &lsqlite3_ops;
-
- if (options) {
- /*
- * take a copy of the options array, so we don't have to rely
- * on the caller keeping it around (it might be dynamic)
- */
- for (i=0;options[i];i++) ;
-
- lsqlite3->options = talloc_array(lsqlite3, char *, i+1);
- if (!lsqlite3->options) {
- goto failed;
- }
-
- for (i=0;options[i];i++) {
-
- lsqlite3->options[i+1] = NULL;
- lsqlite3->options[i] =
- talloc_strdup(lsqlite3->options, options[i]);
- if (!lsqlite3->options[i]) {
- goto failed;
- }
- }
- }
-
- return 0;
-
-failed:
- if (lsqlite3->sqlite != NULL) {
- (void) sqlite3_close(lsqlite3->sqlite);
- }
- talloc_free(lsqlite3);
- return -1;
-}
-
-int ldb_sqlite3_init(void)
-{
- return ldb_register_backend("sqlite3", lsqlite3_connect);
-}
diff --git a/source/lib/ldb/ldb_sqlite3/schema b/source/lib/ldb/ldb_sqlite3/schema
deleted file mode 100644
index 08dc50de089..00000000000
--- a/source/lib/ldb/ldb_sqlite3/schema
+++ /dev/null
@@ -1,363 +0,0 @@
- -- ------------------------------------------------------
-
- PRAGMA auto_vacuum=1;
-
- -- ------------------------------------------------------
-
- BEGIN EXCLUSIVE;
-
- -- ------------------------------------------------------
-
- CREATE TABLE ldb_info AS
- SELECT 'LDB' AS database_type,
- '1.0' AS version;
-
- /*
- * Get the next USN value with:
- * BEGIN EXCLUSIVE;
- * UPDATE usn SET value = value + 1;
- * SELECT value FROM usn;
- * COMMIT;
- */
- CREATE TABLE usn
- (
- value INTEGER
- );
-
- CREATE TABLE ldb_object
- (
- /* tree_key is auto-generated by the insert trigger */
- tree_key TEXT PRIMARY KEY,
-
- parent_tree_key TEXT,
- dn TEXT,
-
- attr_name TEXT REFERENCES ldb_attributes,
- attr_value TEXT,
-
- /*
- * object_type can take on these values (to date):
- * 1: object is a node of a DN
- * 2: object is an attribute/value pair of its parent DN
- */
- object_type INTEGER,
-
- /*
- * if object_type is 1, the node can have children.
- * this tracks the maximum previously assigned child
- * number so we can generate a new unique tree key for
- * a new child object. note that this is always incremented,
- * so if children are deleted, this will not represent
- * the _number_ of children.
- */
- max_child_num INTEGER,
-
- /*
- * Automatically maintained meta-data (a gift for metze)
- */
- object_guid TEXT UNIQUE,
- timestamp INTEGER, -- originating_time
- invoke_id TEXT, -- GUID: originating_invocation_id
- usn INTEGER, -- hyper: originating_usn
-
- /* do not allow duplicate name/value pairs */
- UNIQUE (parent_tree_key, attr_name, attr_value, object_type)
- );
-
- CREATE TABLE ldb_attributes
- (
- attr_name TEXT PRIMARY KEY,
- parent_tree_key TEXT,
-
- objectclass_p BOOLEAN DEFAULT 0,
-
- case_insensitive_p BOOLEAN DEFAULT 0,
- wildcard_p BOOLEAN DEFAULT 0,
- hidden_p BOOLEAN DEFAULT 0,
- integer_p BOOLEAN DEFAULT 0,
-
- /* tree_key is auto-generated by the insert trigger */
- tree_key TEXT, -- null if not a object/sub class
- -- level 1 if an objectclass
- -- level 1-n if a subclass
- max_child_num INTEGER
- );
-
- -- ------------------------------------------------------
-
- CREATE INDEX ldb_object_dn_idx
- ON ldb_object (dn);
-
- CREATE INDEX ldb_attributes_tree_key_ids
- ON ldb_attributes (tree_key);
-
- -- ------------------------------------------------------
-
- /* Gifts for metze. Automatically updated meta-data */
- CREATE TRIGGER ldb_object_insert_tr
- AFTER INSERT
- ON ldb_object
- FOR EACH ROW
- BEGIN
- UPDATE ldb_object
- SET max_child_num = max_child_num + 1
- WHERE tree_key = new.parent_tree_key;
- UPDATE usn SET value = value + 1;
- UPDATE ldb_object
- SET tree_key =
- (SELECT
- new.tree_key ||
- base160(SELECT max_child_num
- FROM ldb_object
- WHERE tree_key =
- new.parent_tree_key));
- max_child_num = 0,
- object_guid = random_guid(),
- timestamp = strftime('%s', 'now'),
- usn = (SELECT value FROM usn);
- WHERE tree_key = new.tree_key;
- END;
-
- CREATE TRIGGER ldb_object_update_tr
- AFTER UPDATE
- ON ldb_object
- FOR EACH ROW
- BEGIN
- UPDATE usn SET value = value + 1;
- UPDATE ldb_object
- SET timestamp = strftime('%s', 'now'),
- usn = (SELECT value FROM usn);
- WHERE tree_key = new.tree_key;
- END;
-
- CREATE TRIGGER ldb_attributes_insert_tr
- AFTER INSERT
- ON ldb_attributes
- FOR EACH ROW
- BEGIN
- UPDATE ldb_attributes
- SET max_child_num = max_child_num + 1
- WHERE tree_key = new.parent_tree_key;
- UPDATE ldb_attributes
- SET tree_key =
- (SELECT
- new.tree_key ||
- base160(SELECT max_child_num
- FROM ldb_attributes
- WHERE tree_key =
- new.parent_tree_key));
- max_child_num = 0
- WHERE tree_key = new.tree_key;
- END;
-
-
- -- ------------------------------------------------------
-
- /* Initialize usn */
- INSERT INTO usn (value) VALUES (0);
-
- /* Create root object */
- INSERT INTO ldb_object
- (tree_key, parent_tree_key,
- dn,
- object_type, max_child_num)
- VALUES ('', NULL,
- '',
- 1, 0);
-
- /* We need an implicit "top" level object class */
- INSERT INTO ldb_attributes (attr_name,
- parent_tree_key)
- SELECT 'top', '';
-
- -- ------------------------------------------------------
-
- COMMIT;
-
- -- ------------------------------------------------------
-
-/*
- * dn: o=University of Michigan,c=US
- * objectclass: organization
- * objectclass: domainRelatedObject
- */
--- newDN
-BEGIN;
-
-INSERT OR IGNORE INTO ldb_object
- (parent_tree_key
- dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('',
- 'c=US',
- 'c', 'US', 1, 0);
-
-INSERT INTO ldb_object
- (parent_tree_key,
- dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('0001',
- 'o=University of Michigan,c=US',
- 'o', 'University of Michigan', 1, 0);
-
--- newObjectClass
-INSERT OR IGNORE INTO ldb_attributes
- (attr_name, parent_tree_key, objectclass_p)
- VALUES
- ('objectclass', '', 1);
-
-INSERT INTO ldb_object
- (parent_tree_key,
- dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001',
- NULL,
- 'objectclass', 'organization', 2, 0);
-
-INSERT OR IGNORE INTO ldb_attributes
- (attr_name, parent_tree_key, objectclass_p)
- VALUES
- ('objectclass', '', 1);
-
-INSERT INTO ldb_object
- (parent_tree_key,
- dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001',
- NULL,
- 'objectclass', 'domainRelatedObject', 2, 0);
-
-COMMIT;
-
-
-/*
- * dn: o=University of Michigan,c=US
- * l: Ann Arbor, Michigan
- * st: Michigan
- * o: University of Michigan
- * o: UMICH
- * seeAlso:
- * telephonenumber: +1 313 764-1817
- */
--- addAttrValuePair
-BEGIN;
-
-INSERT INTO ldb_object
- (parent_tree_key, dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001', NULL,
- 'l', 'Ann Arbor, Michigan', 2, 0);
-
-INSERT INTO ldb_object
- (parent_tree_key, dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001', NULL,
- 'st', 'Michigan', 2, 0);
-
-INSERT INTO ldb_object
- (parent_tree_key, dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001', NULL,
- 'o', 'University of Michigan', 2, 0);
-
-INSERT INTO ldb_object
- (parent_tree_key, dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001', NULL,
- 'o', 'UMICH', 2, 0);
-
-INSERT INTO ldb_object
- (parent_tree_key, dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001', NULL,
- 'seeAlso', '', 2, 0);
-
-INSERT INTO ldb_object
- (parent_tree_key, dn,
- attr_name, attr_value, object_type, max_child_num)
- VALUES ('00010001', NULL,
- 'telephonenumber', '+1 313 764-1817', 2, 0);
-
-COMMIT;
-
--- ----------------------------------------------------------------------
-
-/*
- * dn: @ATTRIBUTES
- * uid: CASE_INSENSITIVE WILDCARD
- * cn: CASE_INSENSITIVE
- * ou: CASE_INSENSITIVE
- * dn: CASE_INSENSITIVE
- */
--- newAttribute
-
-BEGIN;
-
-INSERT OR IGNORE INTO ldb_attributes
- (attr_name, parent_tree_key, objectclass_p)
- VALUES
- ('uid', '', 0);
-
-UPDATE ldb_attributes
- SET case_insensitive_p = 1,
- wildcard_p = 1,
- hidden_p = 0,
- integer_p = 0
- WHERE attr_name = 'uid'
-
-UPDATE ldb_attributes
- SET case_insensitive_p = 1,
- wildcard_p = 0,
- hidden_p = 0,
- integer_p = 0
- WHERE attr_name = 'cn'
-
-UPDATE ldb_attributes
- SET case_insensitive_p = 1,
- wildcard_p = 0,
- hidden_p = 0,
- integer_p = 0
- WHERE attr_name = 'ou'
-
-UPDATE ldb_attributes
- SET case_insensitive_p = 1,
- wildcard_p = 0,
- hidden_p = 0,
- integer_p = 0
- WHERE attr_name = 'dn'
-
--- ----------------------------------------------------------------------
-
-/*
- * dn: @SUBCLASSES
- * top: domain
- * top: person
- * domain: domainDNS
- * person: organizationalPerson
- * person: fooPerson
- * organizationalPerson: user
- * organizationalPerson: OpenLDAPperson
- * user: computer
- */
--- insertSubclass
-
-/* NOT YET UPDATED!!! *
-
-
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'domain', /* next_tree_key('top') */ '00010001';
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'person', /* next_tree_key('top') */ '00010002';
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'domainDNS', /* next_tree_key('domain') */ '000100010001';
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'organizationalPerson', /* next_tree_key('person') */ '000100020001';
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'fooPerson', /* next_tree_key('person') */ '000100020002';
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'user', /* next_tree_key('organizationalPerson') */ '0001000200010001';
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'OpenLDAPperson', /* next_tree_key('organizationPerson') */ '0001000200010002';
-INSERT OR REPLACE INTO ldb_object_classes (class_name, tree_key)
- SELECT 'computer', /* next_tree_key('user') */ '0001000200010001';
-
diff --git a/source/lib/ldb/ldb_sqlite3/trees.ps b/source/lib/ldb/ldb_sqlite3/trees.ps
deleted file mode 100644
index 433a064816c..00000000000
--- a/source/lib/ldb/ldb_sqlite3/trees.ps
+++ /dev/null
@@ -1,1760 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: trees.dvi
-%%Pages: 7
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -f trees.dvi
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 2000.05.06:2055
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 39158280 55380996 1000 600 600 (trees.dvi)
-@start
-%DVIPSBitmapFont: Fa cmr10 10 6
-/Fa 6 55 df<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B
-120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A2
-6C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40
-D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F
-A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2
-5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<15301578B3A6007FB812
-F8B912FCA26C17F8C80078C8FCB3A6153036367BAF41>43 D<EB03F8EB1FFF90387E0FC0
-9038F803E03901E000F0484813780007147C48487FA248C77EA2481580A3007EEC0FC0A6
-00FE15E0B3007E15C0A4007F141F6C1580A36C15006D5B000F143EA26C6C5B6C6C5B6C6C
-485A6C6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A>48 D<EB01C013031307131F
-13FFB5FCA2131F1200B3B3A8497E007FB512F0A31C3879B72A>I<EC3FC0903801FFF001
-0713FC90380FE03E90383F800790387E001F49EB3F804848137F485AA2485A000FEC3F00
-49131E001F91C7FCA2485AA3127F90C9FCEB01FC903807FF8039FF1E07E090383801F049
-6C7E01607F01E0137E497FA249148016C0151FA290C713E0A57EA56C7E16C0A2121FED3F
-807F000F15006C6C5B15FE6C6C5B6C6C485A3900FE07F090383FFFC06D90C7FCEB03FC23
-3A7DB72A>54 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmr7 7 3
-/Fb 3 55 df<EB3F803801FFF03803E0F83807803C48487E001E7F003E1480A2003C1307
-007C14C0A400FC14E0AE007C14C0A36CEB0F80A36CEB1F006C131E6C6C5A3803E0F86CB4
-5A38003F801B277EA521>48 D<13381378EA01F8121F12FE12E01200B3AB487EB512F8A2
-15267BA521>I<EB0FE0EB3FF8EBF81C3801E0063803C01F48485AEA0F005A121E003E13
-1E91C7FC5AA21304EB3FC038FCFFF038FDC078EB003CB4133E48131E141FA2481480A412
-7CA4003C1400123E001E131E143E6C133C6C6C5A3803C1F03801FFC06C6CC7FC19277DA5
-21>54 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmmi10 10 1
-/Fc 1 69 df<0103B7FC4916E018F8903B0007F80007FE4BEB00FFF03F80020FED1FC018
-0F4B15E0F007F0021F1503A24B15F81801143F19FC5DA2147FA292C8FCA25C18035CA213
-0119F84A1507A2130319F04A150FA2010717E0181F4A16C0A2010FEE3F80A24AED7F0018
-7E011F16FE4D5A4A5D4D5A013F4B5A4D5A4A4A5A057FC7FC017F15FEEE03FC91C7EA0FF0
-49EC7FC0B8C8FC16FC16C03E397DB845>68 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd ectt1000 10 73
-/Fd 73 126 df<D807801307D81FE0EB0F80151F487E486C133F1600007C5CD8FCFC137E
-EAF87C15FE5D14015DA21403D8FCFC5BEA7CF8007F13075D383FF00FD81FE05BA2380780
-1FC75B143F92C7FCA25C147E14FE5CA213015CA213035C13075CA2130F5C131FEC800FED
-3FC0013FEB7FE0140049EBFFF0017E13F9A2D9FE0113F801FC13F0A2120113F8120313F0
-15F90007010013F05B000F14FF49EB7FE0A20007EC3FC06C48EB0F0025417DB92C>37
-D<EA0F80EA1FE0EA3FF0127F13F8A213FCA2123F121F120FEA007CA313FC13F8A2120113
-F01203EA07E0A2EA0FC0EA3F80127FEAFF005A12F812700E1D71B22C>39
-D<143814FC13011303EB07F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F
-5B485AA2123F90C7FCA25A127EA312FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F
-12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB07F8EB03FC130113001438164272B92C>
-I<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0
-A214F01303A214F81301A314FC1300AC130114F8A3130314F0A2130714E0A2EB0FC0131F
-1480133F14005B13FE485A485A485A485AEA3FC0485A48C7FC5A5A1270164279B92C>I<
-EB0380497EA60020140800F8143E00FE14FE00FF13C1EBC7C7EBE7CF003FB512F8000F14
-E0000314806C140038007FFCA248B5FC481480000F14E0003F14F839FFE7CFFEEBC7C7EB
-07C100FE13C000F8143E0020140800001400A66D5A1F247AAA2C>I<147014F8AF003FB6
-12E0B712F8A4C700F8C7FCB0147025267DAB2C>I<EA0F80EA1FE0EA3FF0EA7FF8A213FC
-A3123F121F120F120013F8A21201EA03F01207EA1FE0EA7FC0EAFF80130012FC12700E17
-718A2C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>46
-D<1507ED0F80A2151F16005D153E157E157CA215FC5D14015D14035D14075D140F5D141F
-92C7FC5C143EA2147E147C14FC5C13015C13035C13075C130F5C131F91C8FC5B133EA213
-7E137C13FC5B12015B12035B12075B120F5B121F90C9FCA25A123E127E127C12FC5AA212
-7021417BB92C>I<EB03F8EB0FFE90383FFF80497F90B57E3901FE0FF03903F803F84848
-6C7EEBE0004848137EA248487FA248C7EA1F80A2003E140F007E15C0A3007C140700FC15
-E0AC6C140F007E15C0A46CEC1F80A36C6CEB3F00A26C6C137E6D13FE00075CEBF0016C6C
-485A3901FE0FF06CB55A6D5B6D5BD90FFEC7FCEB03F823357CB32C>I<1307497EA2131F
-A2133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14
-E01C3477B32C>I<EB0FF890387FFF8048B512E00007804814FC391FF80FFE393FE001FF
-903880007F48C7EA3F80007E141F00FE15C0150F6C15E01507A3127E123CC8FCA2150F16
-C0151F1680153F16005D15FE4A5A14034A5A4A5A4A5A4A5AECFF804948C7FC495A495A49
-5AEB3FE0EB7F8049C8FC485A4848EB03C04848EB07E0EA1FE0485A48B6FCB7FCA36C15C0
-23347CB32C>I<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090B512E015F881
-9038FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C127E
-B4FC150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C5C
-000114C06C6C90C7FCEB0FF823347CB22C>53 D<EC3FC0903801FFF801077F011F7F497F
-90387FE07F9039FF003F804848137FEA03F8485A5B000FEC3F004848131E4990C7FC123F
-90C9FCA25A127EEB03FE90381FFF80D8FC7F13E000FDB57EB67E9038FE07FC9038F001FE
-9038C0007F49EB3F8090C7121F16C048140F16E01507A3127EA47E150F6D14C0001F141F
-6D1480000F143F6DEB7F003907F801FE3903FE07FC6CB55A6C5C6D5B011F1380D907FCC7
-FC23357CB32C>I<1278B712C016E0A316C000FCC7EA3F80ED7F0015FE00785CC712014A
-5A4A5A5D140F5D4A5A143F92C7FC5C147E14FE5C13015CA2495AA213075CA3495AA4495A
-A5133F91C8FCAA131E23357CB32C>I<EA0F80EA1FC0EA3FE0EA7FF0A5EA3FE0EA1FC0EA
-0F80C7FCAEEA0F80EA1FE0EA3FF0EA7FF8A213FCA3123F121F120F120013F8A21201EA03
-F01207EA1FE0EA7FC0EAFF80130012FC12700E3071A32C>59 D<1502ED0F80151F157F15
-FF913803FE00EC0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390
-C8FCEA07FCEA1FF8EA3FE0EAFF8090C9FCA27FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE0
-6D7EEB07FC6D7E903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157F151F150FED
-0200212A7BAD2C>I<007FB612F0B712F8A36C15F0CAFCA8007FB612F0B712F8A36C15F0
-25127DA12C>I<122012F87EB4FC7FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07
-FC6D7E903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157FA215FF913803FE00EC
-0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1F
-F8EA3FE0EAFF8090C9FC12FC5A1220212A7BAD2C>I<14FE497EA4497FA214EFA2130781
-A214C7A2010F7FA314C390381F83F0A590383F01F8A490387E00FCA549137E90B512FEA3
-4880A29038F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC
-497E27347EB32C>65 D<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F015
-03A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001F
-E0ED07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612
-E016C0B712806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD49
-13FFEBFF813901FE007F4848131FD807F0130F1507485A491303485A150148C7FCA25A00
-7EEC00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C
-130716E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F001001380
-25357DB32C>I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED
-0FE0A2150716F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0
-153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0
-B712F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FC
-A5163C167EA8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803
-F0C7FCA716781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C
-7E26337EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC
-01497E4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE
-5AA8913803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D
-137F6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC2635
-7DB32C>I<D87FFEEBFFFCB54813FEA36C486C13FCD807E0EB0FC0B190B6FCA59038E000
-0FB3D87FFEEBFFFCB54813FEA36C486C13FC27337EB22C>I<007FB512F8B612FCA36C14
-F839000FC000B3B3A5007FB512F8B612FCA36C14F81E3379B22C>I<D87FFCEB7FF8486C
-EBFFFCA36C48EB7FF8D807C0EB1F80153FED7F00157E5D4A5A14034A5A5D4A5A4A5A143F
-4AC7FC147E5CEBC1F813C3EBC7FCA2EBCFFEEBDFBEEBFFBF141F01FE7F496C7E13F86E7E
-EBF00301E07FEBC001816E7EA2157E153E153F811680ED0FC0A2ED07E0D87FFCEB1FFC48
-6CEB3FFEA36C48EB1FFC27337EB22C>75 D<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0
-ED01F8A8007FB6FCB7FCA36C15F025337DB22C>I<D87FE0EB0FFC486CEB1FFEA26D133F
-007F15FC000F15E001BC137BA4019E13F3A3EB9F01A2018F13E3A21483A2018713C314C7
-A201831383A214EFA201811303A214FFEB80FEA3147C14381400ACD87FF0EB1FFC486CEB
-3FFEA36C48EB1FFC27337EB22C>I<D87FF0EB7FFC486CEBFFFEA27F007FEC7FFCD807FE
-EB07C013DEA213DF13CFA2148013C714C0A213C314E0A213C114F0A213C014F8A2147CA3
-143EA2141E141FA2140F1587A2140715C7A2140315E71401A215F71400A215FFD87FFC13
-7F487E153FA26C48EB1F8027337EB22C>I<EB7FFF0003B512E0000F14F848804880EBE0
-03EB800048C7127FA2007E80A300FE158048141FB3A86C143FA2007E1500A3007F5CA26C
-6C13FEEBF00790B5FC6C5C6C5C000314E0C66C90C7FC21357BB32C>I<007FB512C0B612
-F88115FF6C15802603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2
-ED0FE0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337E
-B22C>I<EB7FFF0003B512E0000F14F848804880EBF007EB800048C7127FA2007E80A300
-FE158048141FB3A7EB01F0EB03F800FE143F267E01FC1300A2EB00FE007F5C147FD83F80
-13FEEBF03F90B5FC6C5C6C5C000314E0C67E90380007F0A26E7EA26E7EA26E7EA2157FA2
-153E21407BB32C>I<387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151FA2
-6F7EA64B5AA2153F4BC7FCEC01FE140790B55A5D15E081819038E007FCEC01FE1400157F
-81A8160FEE1F80A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>I<90
-381FF80790B5EA0F804814CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE
-143F5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C
-14F06C6C7F01077F9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FC
-A56CEC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0
-D8700790C7FC23357CB32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC71400
-B3AF90383FFFFCA2497F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C
-13C03B03F00001F800B3AF6D130300015DA26D130700005D6D130F017F495A6D6C485AEC
-E0FF6DB5C7FC6D5B010313F86D5B9038003F802B3480B22C>I<D87FFCEB7FFC486CEBFF
-FEA36C48EB7FFCD80FC0EB07E06D130F000715C0A36D131F00031580A36D133F00011500
-A36D5B0000147EA4017E5BA46D485AA490381F83F0A4010F5B14C7A301075BA214EFA201
-035BA214FFA26D90C7FCA46D5A27347EB22C>I<D87FF0EB07FF486C491380A36C486D13
-00001FC8127CA46C6C5CA76C6C495AA4143E147FA33A03E0FF83E0A214F7A201E113C3A3
-000101E35BA201F113C701F313E7A314C1A200005DA201F713F71480A301FF13FF017F91
-C7FC4A7EA4013E133E29347FB22C>I<3A3FFF03FFE0484913F0148714076C6D13E03A01
-F800FE007F0000495A13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D
-90C7FCA26D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB
-7F01017E7FEBFE00497F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE
-6C15FC497E27337EB22C>I<D87FFCEB7FFC486CEBFFFEA36C48EB7FFCD807F0EB0FC015
-1F000315806D133F12016DEB7F0012006D137E017E13FE017F5BEB3F01EC81F8131FEC83
-F0EB0FC314C7903807E7E0A201035B14EF6DB45AA292C7FC7F5C147EB0903807FFE0497F
-A36D5B27337EB22C>I<387FFFFCB512FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC
-17416FB92C>91 D<127012F8A27E127C127E123E123F7EA27F120F7F12077F12037F1201
-7F12007F137C137E133EA2133F7F80130F80130780130380130180130080147C147E143E
-A2143F8081140F81140781140381140181140081157CA2157E153E153F811680150FA2ED
-070021417BB92C>I<387FFFFCB512FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC1741
-7DB92C>I<EB07C0EB1FF0EB7FFC48B5FC000714C0001F14F0397FFC7FFC39FFF01FFEEB
-C007EB0001007CEB007C003014181F0C7AAE2C>I<007FB6FCB71280A46C150021067B7D
-2C>I<1338137CEA01FC1203EA07F813F0EA0FC0EA1F80A2EA3F00123E127E127CA212FC
-5AA3EAFFC013E013F013F8A2127FA2123F13F0EA1FE0EA07C00E1D72B82C>I<3801FFF0
-000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFF
-FE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003
-383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>I<EA7FF048
-7EA3127F1201AAEC1FE0ECFFF801FB13FE90B6FC16809138F07FC09138801FE091380007
-F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F
-9138801FE09138E07FC091B51280160001FB5B01F813F83900F03FC027337FB22C>I<90
-3803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC
-5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A
-6C5C6C6C5B011F13E0010390C7FC21247AA32C>I<EC0FFE4A7EA380EC003FAAEB07F8EB
-3FFE90B512BF4814FF5A3807FC0F380FF00348487E497E48487F90C7FC007E80A212FE5A
-A87E007E5CA2007F5C6C7E5C6C6C5A380FF0073807FC1F6CB612FC6CECBFFE6C143FEB3F
-FC90390FF01FFC27337DB22C>I<EB03FE90381FFFC0017F13F048B57E48803907FE03FE
-390FF800FFD81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075AB7FCA416C000FC
-C9FC7E127EA2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001FF13FF000190B5
-12806C1500013F13FC010F13F00101138023247CA32C>I<ED03F8903907F80FFC90391F
-FE3FFE017FB6FC48B7FC48ECFE7F9038FC0FF82607F003133E3A0FE001FC1CD9C0001300
-001F8049137EA66D13FE000F5CEBE0016C6C485A3903FC0FF048B5FC5D481480D99FFEC7
-FCEB87F80180C8FCA37F6C7E90B512F06C14FE48ECFF804815E04815F03A3FC0001FF848
-C7EA03FC007E1400007C157C00FC157E48153EA46C157E007E15FCD87F801303D83FE0EB
-0FF8D81FFCEB7FF06CB612E0000315806C1500D8003F13F8010713C028387EA42C>103
-D<EA7FF0487EA3127F1201AAEC1FE0EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC0
-1F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029337FB22C>I<
-1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007F
-B512FCB612FEA36C14FC1F3479B32C>I<EA7FE0487EA3127F1201AA91381FFFF04A13F8
-A36E13F0913800FE004A5A4A5A4A5A4A5A4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE90B5
-FCA2EC9F80EC0FC001FE7FEBFC07496C7E496C7E811400157E811680151F3A7FFFC0FFFC
-B500E113FEA36C01C013FC27337EB22C>107 D<387FFFE0B57EA37EEA0003B3B3A5007F
-B61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD8
-7FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B3
-3B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397F
-F01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B
-5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>I<EB07FCEB1FFF017F
-13C048B512F048803907FC07FC390FF001FE48486C7E0180133F003F158090C7121F007E
-EC0FC0A348EC07E0A76C140F007E15C0A2007F141F6C15806D133F6C6CEB7F006D5B6C6C
-485A3907FC07FC6CB55A6C5C6C6C13C0011F90C7FCEB07FC23247CA32C>I<397FF01FE0
-39FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F8
-5BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE0
-9138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B2736
-7FA32C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814FF3807FE07380FF001
-48487E49137F4848133F90C7FC48141F127E150F5AA87E007E141FA26C143F7F6C6C137F
-6D13FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F890C7FCAD0203B5FC4A
-1480A36E140029367DA32C>I<D87FFEEB3FC0B53801FFF0020713F8021F13FC6C5B3900
-3F7FE1ECFF019138FC00F84A13704A13005CA25C5CA391C8FCAF007FB512E0B67EA36C5C
-26247EA32C>I<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB
-00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00
-FE0078147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8
-148039701FFC0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1
-ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE023
-2E7EAD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F39
-00FE03FF90B7FC6D15807F6D13CF902603FE07130029247FA32C>I<3A3FFF03FFF04801
-8713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E090380FCFC090
-3807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB0FC7EC83
-E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514FE6C15FC
-140127247EA32C>120 D<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0000F
-806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F815D
-A2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E147CA2
-14FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA07E0
-27367EA32C>I<15FF02071380141F147F91B512004913C04AC7FCEB03F85CB31307EB1F
-E013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13FF6E
-1380141F14070200130021417BB92C>123 D<127812FCB3B3B3A9127806416DB92C>I<EA
-7FC0EAFFF813FE6D7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13FF6E1380141F
-147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A49C8FC13F8EA7F
-C021417BB92C>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe ecti1000 10 33
-/Fe 33 122 df<EE3FFC4BB51280923907E007C092391F8001E0DB3F0013F0037E13034B
-1307A24A5A18E04A48EB038094C7FCA314075DA4140F5DA3010FB7FCA25F903A001F8000
-7EA217FE023F5C92C7FCA216015F5C147E16035FA214FE4A13075FA30101140F5F4AECC1
-C0A2161F1783010316805CA2EF870013074A5CEE0F8EEE079EEE03FC010FEC00F04A91C7
-FCA35C131FA2001C90CAFC127E5BEAFE3E133C137CEAF878EA78F0EA3FE0EA0F80344C82
-BA2F>28 D<150C151C153815F0EC01E0EC03C0EC0780EC0F00141E5C147C5C5C495A1303
-495A5C130F49C7FCA2133EA25BA25BA2485AA212035B12075BA2120F5BA2121FA290C8FC
-A25AA2123EA2127EA2127CA412FC5AAD1278A57EA3121C121EA2120E7EA26C7E6C7EA212
-001E5274BD22>40 D<140C140E80EC0380A2EC01C015E0A2140015F0A21578A4157C153C
-AB157CA715FCA215F8A21401A215F0A21403A215E0A21407A215C0140F1580A2141F1500
-A2143EA25CA25CA2495AA2495A5C1307495A91C7FC5B133E133C5B5B485A12035B48C8FC
-120E5A12785A12C01E527FBD22>I<4B7EA3150393C8FCA35D1506A3150E150CA3151C15
-18A315381530A31570B912E0A2C80060C8FC15E05DA314015DA3140392C9FCA35C1406A3
-140E140CA3141C1418A2333275AD40>43 D<EA03C0EA07F0120F121F13F8A313F0EA07B0
-EA003013701360A213E013C01201EA038013005A120E5A5A5A5A5A0D197A8819>I<120E
-EA3F80127F12FFA31300127E123C0909778819>46 D<0103B612FEEFFFC018F0903B0007
-F8000FF84BEB03FCEF00FE020F157FF03F804B141F19C0021F150F19E05D1807143F19F0
-5DA2147FA292C8FCA25C180F5CA2130119E04A151FA2130319C04A153FA201071780187F
-4A1600A2010F16FEA24A4A5A60011F15034D5A4A5D4D5A013F4B5A173F4A4AC7FC17FC01
-7FEC03F84C5A91C7EA1FC04949B45A007F90B548C8FCB712F016803C397CB83F>68
-D<0103B512F8A390390007F8005DA2140FA25DA2141FA25DA2143FA25DA2147FA292C7FC
-A25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA213
-7FA291C8FC497EB6FCA25C25397CB820>73 D<0107B512FCA25E9026000FF8C7FC5D5D14
-1FA25DA2143FA25DA2147FA292C8FCA25CA25CA21301A25CA21303A25CA21307A25CA213
-0F170C4A141CA2011F153C17384A1478A2013F157017F04A14E01601017F140317C091C7
-1207160F49EC1F80163F4914FF000102071300B8FCA25E2E397BB834>76
-D<ED03FE92383FFFC09238FC07F0913903E001F891390F80007C023FC77E027E8002F815
-804948EC0FC0EB07E04948EC07E0131F4A15F049C81203137E01FE16F8485AA2485AA248
-5AA2120F5B001F16075B123FA34848ED0FF0A448C9EA1FE0A3EF3FC0A21880177F18005F
-5F16015F6C4B5A4C5AA24C5A6C4B5A6D4A5A001F93C7FC6D147E000F5D6C6CEB03F06C6C
-495A6C6CEB0F806C6C013FC8FC90383F01FC90381FFFE0010190C9FC353D74BA40>79
-D<ED03FE92383FFFC09238FC07F0913903E001F891390FC0007C023FC77E027E804A1580
-D901F0EC0FC013074948EC07E0495A4A15F049C8FC49150301FE16F8485AA2485AA2485A
-A2120F491507121FA2485AA34848ED0FF0A448C9EA1FE0A3EF3FC0A21880177F4817005F
-5F16015F007F4B5A5F91380F800791393FE00FE06C903970601FC0902680E0305B261F81
-C049C7FC913880187ED80FC35C3A07E30019F00003EC1FE0D801FB14806CB46C48C8FC90
-263F81FC13186DB45A01010138133890C7003C1330177017F05FED3E03ED3F07EEFFC05F
-A294C7FC5E6F5A6F5AED07E0354B74BA40>81 D<92383FC00E913901FFF01C020713FC91
-391FC07E3C91393F001F7C027CEB0FF84A130749481303495A4948EB01F0A2495AA2011F
-15E091C7FCA34915C0A36E90C7FCA2806D7E14FCECFF806D13F015FE6D6D7E6D14E00100
-80023F7F14079138007FFC150F15031501A21500A2167C120EA3001E15FC5EA3003E4A5A
-A24B5AA2007F4A5A4B5A6D49C7FC6D133ED8F9F013FC39F8FC03F839F07FFFE0D8E01F13
-8026C003FCC8FC2F3D7ABA2F>83 D<0007B812E0A25AD9F800EB001F01C049EB07C0485A
-D900011403121E001C5C003C17801403123800785C00701607140700F01700485CA2140F
-C792C7FC5DA2141FA25DA2143FA25DA2147FA292C9FCA25CA25CA21301A25CA21303A25C
-A21307A25CA2130FA25CEB3FF0007FB512F8B6FCA2333971B83B>I<14F8EB07FE90381F
-871C90383E03FE137CEBF801120148486C5A485A120FEBC001001F5CA2EA3F801403007F
-5C1300A21407485C5AA2140F5D48ECC1C0A2141F15831680143F1587007C017F1300ECFF
-076C485B9038038F8E391F0F079E3907FE03FC3901F000F0222677A42A>97
-D<133FEA1FFFA3C67E137EA313FE5BA312015BA312035BA31207EBE0F8EBE7FE9038EF0F
-80390FFC07C013F89038F003E013E0D81FC013F0A21380A2123F1300A214075A127EA214
-0F12FE4814E0A2141F15C05AEC3F80A215005C147E5C387801F8007C5B383C03E0383E07
-C0381E1F80D80FFEC7FCEA01F01C3B77B926>I<147F903803FFC090380FC1E090381F00
-70017E13784913383901F801F83803F003120713E0120FD81FC013F091C7FC485AA2127F
-90C8FCA35A5AA45AA3153015381578007C14F0007EEB01E0003EEB03C0EC0F806CEB3E00
-380F81F83803FFE0C690C7FC1D2677A426>I<ED01F815FFA3150316F0A21507A216E0A2
-150FA216C0A2151FA21680A2153FA202F81300EB07FE90381F877F90383E03FF017C5BEB
-F80112013803F00048485B120FEBC001121F5DEA3F801403127F01005BA214075A485CA2
-140FA248ECC1C0A2141F15C3ED8380143F1587007C017F1300ECFF076C485B9038038F8E
-391F0F079E3907FE03FC3901F000F0253B77B92A>I<147F903803FFC090380FC1E09038
-3F00F0017E13785B485A485A485A120F4913F8001F14F0383F8001EC07E0EC1F80397F81
-FF00EBFFF8148090C8FC5A5AA55AA21530007C14381578007E14F0003EEB01E0EC03C06C
-EB0F806CEB3E00380781F83803FFE0C690C7FC1D2677A426>I<ED07C0ED1FF0ED3E38ED
-7C3CEDF8FC15F9140115F1020313F8EDF0F0160014075DA4140F5DA4141F5D010FB512C0
-5B16809039003F800092C7FCA45C147EA414FE5CA413015CA413035CA413075CA4130F5C
-A3131F5CA391C8FC5B121CEA7E3EA2EAFE3C137C1378EAF8F01278EA3FC0EA0F80264C82
-BA19>I<EC07C0EC3FF09138FC38E0903901F01FF0EB03E0903807C00FEB0F80011F1307
-D93F0013E05B017E130F13FE4914C01201151F1203491480A2153F1207491400A25DA249
-137EA215FEA25D00031301140314076C6C485A0000131FEB787BEB3FF390380FC3F0EB00
-031407A25DA2140F5D121C007E131F5D00FE49C7FC147E5C387801F8387C07E0381FFF80
-D803FEC8FC24367CA426>I<EB03F0EA01FFA3EA00075CA3130F5CA3131F5CA3133F91C8
-FCA35B90387E07F0EC1FFCEC783E9038FFE01F02C01380EC800F1400485A16C05B49EB1F
-8012035BA2153F000715005BA25D000F147E5B15FE5D121FD98001131C15F8163C003F01
-031338010013F0A216704814E0007E15F016E0EDE1C000FE903801E38048903800FF0000
-38143C263B7BB92A>I<EB01C0EB07E014F0130F14E01307EB038090C7FCAB13F0EA03FC
-EA071EEA0E1F121CA212385B1270A25BEAF07E12E013FEC65AA212015B1203A25B12075B
-A2000F13E013C013C1001F13C01381A2EB83801303EB0700A2130E6C5AEA07F8EA01E014
-3879B619>I<EB0FC0EA07FFA3EA001F1480A2133FA21400A25BA2137EA213FEA25BA212
-01A25BA21203A25BA21207A25BA2120FA25BA2121FA25BA2123FA290C7FCA25AA2EA7E0E
-A212FE131EEAFC1CA2133C133812F81378EA7870EA7CE0121FEA0F80123B79B915>108
-D<D801E001FEEB07F03C07F803FF801FFC3C0E3C0F07C0783E3C1E3E3C03E1E01F261C1F
-78D9F3C013803C383FF001F7800F02E01400007801C013FE007018C002805B4A4848EB1F
-80EAF07FD8E07E5CA200000207143F01FE1700495CA2030F5C0001177E495C18FE031F5C
-120349DA8001131C18F8033F153C00070403133849020013F0A24B1570000F17E049017E
-15F019E003FEECE1C0001FEE01E34949903800FF000007C70038143C3E2679A444>I<D8
-01E013FE3A07F803FF803A0E3C0F07C03A1E3E3C03E0261C1F787F39383FF00114E00078
-13C000708114804A485AEAF07FEAE07EA20000140701FE5C5BA2150F00015D5B151F5E12
-034990383F8380160316070007027F130049137EA2160E000F147C49141E161C5E001FEC
-3C7849EB1FE00007C7EA0780292679A42F>I<147F903803FFC090380FC1F090381F00F8
-017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F127F90C7FCA215FF5A
-4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F80003EEB3F00147E
-6C13F8380F83F03803FFC0C648C7FC202677A42A>I<9039078007C090391FE03FF09039
-3CF0787C903938F8E03E9038787FC00170497EECFF00D9F0FE148013E05CEA01E113C15C
-A2D80003143FA25CA20107147FA24A1400A2010F5C5E5C4B5A131F5EEC80035E013F495A
-6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F8001FEC9FCA25BA21201A25BA212
-03A25B1207B512C0A3293580A42A>I<3903C003F0390FF01FFC391E783C0F381C7C703A
-3C3EE03F8038383FC0EB7F800078150000701300151CD8F07E90C7FCEAE0FE5BA2120012
-015BA312035BA312075BA3120F5BA3121F5BA3123F90C9FC120E212679A423>114
-D<14FE903807FF8090380F83C090383E00E04913F00178137001F813F00001130313F0A2
-15E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F6D13807F010F13C01300143F141F14
-0F123E127E00FE1480A348EB1F0012E06C133E00705B6C5B381E03E06CB45AD801FEC7FC
-1C267AA422>I<EB0380EB07C0130FA4131F1480A3133F1400A35B137E007FB5FCA2B6FC
-3800FC00A312015BA312035BA312075BA3120F5BA3121FEB801CA2143C003F1338EB0078
-147014F014E0EB01C0EA3E03381F0780380F0F00EA07FCEA01F0183579B31C>I<01F013
-0ED803FC133FD8071EEB7F80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E14
-0000E08013FEC6485B150E12015B151E0003141C5BA2153C000714385B5DA35DA24A5A14
-0300035C6D48C7FC0001130E3800F83CEB7FF8EB0FC0212679A426>118
-D<903907E007C090391FF81FF89039787C383C9038F03E703A01E01EE0FE3803C01F0180
-13C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75AA2147EA214FEA25C
-A21301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC0380010F1307010E
-EB0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427>120
-D<13F0D803FCEB01C0D8071EEB03E0D80E1F1307121C123C0038140F4914C01270A24913
-1FD8F07E148012E013FEC648133F160012015B5D0003147E5BA215FE00075C5BA214015D
-A314035D14070003130FEBF01F3901F87FE038007FF7EB1FC7EB000F5DA2141F003F5C48
-133F92C7FC147E147C007E13FC387001F8EB03E06C485A383C1F80D80FFEC8FCEA03F023
-3679A428>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmsy10 10 1
-/Ff 1 16 df<EB1FF0EBFFFE487F000714C04814E04814F04814F8A24814FCA3B612FEA9
-6C14FCA36C14F8A26C14F06C14E06C14C0000114006C5BEB1FF01F1F7BA42A>15
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg ecbx1000 10 36
-/Fg 36 119 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF
-8049485A5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390
-C7FCB3ABB5D8FC3F13FFA4303A7EB935>28 D<B61280A819087F9620>45
-D<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D0D798C1B>I<141E143E
-14FE1307137FB5FCA3138FEA000FB3B3A5007FB61280A4213679B530>49
-D<EB0FFE90387FFFC048B512F0000714FC390FE03FFF261F800F1380263F000313C0D87F
-8014E0EBE00100FF6D13F07FA2ED7FF8A46C5A6C5A0006C7FCC8FCEDFFF0A216E05C16C0
-4A138016004A5A4A5AEC1FF05D4A5A4AC7FC14FE495AD903F01378495A495A495A49C712
-F8017C14F05B49130148B6FC5A5A5A5A5A4815E0B7FCA425367BB530>I<EC0FF8ECFFFE
-0103EBFF8090390FF80FC090393FE003E090397F8001F09038FF000F48EC1FF84848133F
-485A120F5B121FA2003FEC1FF0ED0FE0484890C7FCA31408EC7FF039FFF1FFFC01F313FF
-D9F78013809039FF007FC049EB3FE04914F0ED1FF85B16FCA34914FEA4127FA5123F16FC
-A26C7E16F8000F143F6D14F0000715E06C6CEB7FC03A01FF81FF806C90B51200013F13FC
-010F13F00101138027377CB530>54 D<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3F
-E0EA0F80C7FCABEA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D2579A41B
->58 D<B812C017FC17FF18C028007FF000037F04007F717E717E171F84A2717EA74D5AA2
-60173F4D5A4D5A4C13C0040F5B91B600FCC7FCA2EFFF8002F0C713F0EF3FF8717E717E71
-7E19807113C0A319E0A719C0A25F4D138019005FEF7FFE4C485AB912F018C095C7FC17F0
-3B397DB844>66 D<DB3FFCEB01C00203B5EAC003021FECF00791B6EAFC0F01039039FC00
-FF3F4901C0EB1FFFD91FFEC77E49481403D97FF080494880485B48177F4849153F4890C9
-FC181F485A180F123F5B1807127FA24993C7FC12FFAD127F7FF003C0123FA27F001F1707
-A26C6C1780180F6C6D16006C6D5D6C173E6C6D157ED97FF85D6D6C4A5A6DB44A5A010701
-C0EB0FE06D01FCEBFF80010090B548C7FC021F14F8020314E09126003FFEC8FC3A3B7BB9
-45>I<B87E17F817FF18C028007FF8000713F09338007FF8EF1FFE717E050313807113C0
-A27113E0F07FF0A2F03FF8A219FC181FA219FEA419FFAC19FEA419FC183FA219F8187F19
-F0F0FFE0A24D13C04D13804D1300EF1FFEEF7FFC933807FFF0B912C095C7FC17FC178040
-397DB849>I<B612FCA439007FF800B3B3ADB612FCA41E397DB824>73
-D<B7FCA426007FF8C9FCB3ACEF0780A5170F1800A35FA25FA25F5F5E5EEE0FFE167FB8FC
-A431397DB839>76 D<B500F80403B512F06E5EA26E5ED8007FF1E000A2D97BFF161EA201
-796D5DA201786D5DA26E6C5DA36E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C14
-1EA36E6D5BA26E6D5BA26F6C5BA26F6C485AA36F6C485AA26F6C485AA26F6C48C7FCA292
-3803FF1EA36F13BCA26F13F8A2705AA2705AA213FCB500FC6D4848B612F0A2EE0F80EE07
-0054397DB85B>I<B500FC0203B512F0A28080C66C6D90390003F0006F6E5A81017B7F13
-798101787F6E7E6E7E6E7F6E7FA26E7F6E7F6E7F6E7F6F7E153F826F13806F13C06F13E0
-6F13F06F13F88117FCEE7FFEEE3FFF7013817013C17013E18218F17013F97013FDEF7FFF
-8383A28383838383187FA2183F181F01FC160FB500FC150718031801A244397DB84B>I<
-EDFFF8020FEBFF80027F14F0903A01FFC01FFC010790380007FFD91FFC010113C0D93FF0
-6D6C7E49486E7E49486E7E48496E7E48834890C86C7EA248486F1380A248486F13C0A200
-3F18E0A348486F13F0A400FF18F8AC007F18F06D5DA3003F18E0A26D5D001F18C0A26C6C
-4B13806C18006E5C6C6D4A5A6C5F6C6D4A5A6D6C4A5AD93FFC49485A6DB401075B0107D9
-C01F90C7FC010190B512FC6D6C14F0020F1480020001F8C8FC3D3B7BB948>I<B8FC17F0
-17FEEFFF8028007FF8000F13C0040113E07013F0EF7FF8EF3FFCA2EF1FFEA218FFA818FE
-A2EF3FFCA2EF7FF8EFFFF04C13E0040F13C091B7120017FC17E002F8C9FCB3A4B612FCA4
-38397DB841>I<EDFFF8020FEBFF80027F14F0903A01FFE03FFC010790380007FFD91FFC
-010113C049486D7FD97FE0EC3FF049486E7E488348496E7E4890C86C7EA248486F1380A2
-001F18C04981003F18E0A3007F18F04981A300FF18F8AC007F18F0A36D5D003F18E0A36C
-6C4B13C0A2000FDA1FC014806C6C90267FF0071300EDFFF86C903A81F07C0FFE6C903AC3
-C01E1FFC6CDA800F5BD97FE3ECBFF0D93FF36DB45AD91FFF5D010701C091C7FC01019038
-F01FFC6D6CB500F01308020F6E131C0200EBF9FC92260001FE133C9438FF80FC18FF8219
-F8A28319F0A27113E0A27113C0711380711300EF01FC3E4A7BB948>I<D907FF130E013F
-EBE01E90B5EAF83E0003ECFE7E3A07FC01FFFE390FF0001F4848130F4848130349130100
-7F140090C8FC167E5A163EA27F161E7F7F6D91C7FC13FC387FFFE014FEECFFF06C14FE6F
-7E6C816C15F06C816C81C681133F010F801301D9000F1480EC007F030F13C01503818100
-F0157FA3163FA27E17807E167F6C16007E6D14FE01E0495A01F813039039FF801FF800FC
-90B512E0D8F83F5CD8F00749C7FC39E0007FF02A3B7BB935>83 D<B600FC011FB512C0A4
-26007FF8C8381FC000725AB3B3181F013F94C7FC8060011F163E6D6C157E187C6D6C15FC
-6D6D495A6D6DEB07F06D01F0EB1FE0DA7FFEEBFFC0021FB6C8FC02075C020014F0030F13
-80423A7DB849>85 D<B600F00103B512E0A4C601F0C83807F0006E5E017F5F6E150FA201
-3F5F6E151F011F94C7FC6E5D6D163E6F147E6D167CA26F14FC6D5E6F13016D5E6F13036D
-5E811707027F5D6F130F023F5D6F131F021F92C8FC815F6E143EEE807E6E147CEEC0FC6E
-5C16E016E16E5C16F36E5C16FF6F5BA36F5BA26F90C9FCA26F5AA36F5AA26F5AA26F5A43
-3A7EB848>I<B6D8E01FB500FC90383FFFFCA4000101F0C7D83FFCC8EA7E006C71153C17
-1F6E197C017F701578836E7014F8013F6F5E6E1801011F4B6D5CA26E18036D4B6D5CA26D
-6D496D495A173C6F170F6D037C6D91C7FCEF787F6F5F6D4B6C6C131E816D02016E5BEFE0
-1F03F8177C027F01036E13784D7E03FCEE80F8023F49486C5C15FE021F010FEDC1E04D7E
-03FF16C36E49EDE3C0041E7F049E15F76E01BC6D5C04FC15FF6E95C8FC4C80A26E5F4C14
-3F6E5F4C141FA2037F5E4C140FA26F486E5AA2031F5E93C812036F5E5E3A7EB863>I<13
-FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC00280EB
-3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE06E14
-C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A7EB9
-35>98 D<EE7F80ED7FFFA4150381AF903801FF81010F13F1013F13FD9038FFC07F0003EB
-001FD807FC1307000F8048487F5B123FA2485AA312FFAA127FA27F123FA26C6C5B000F5C
-6C6C5B6C6C4913C02701FF80FD13FE39007FFFF9011F13E1010113012F3A7DB935>100
-D<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC
-1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F
-6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025
-257DA42C>I<EC1FF0903801FFFC010713FF90391FF87F8090383FE0FFD9FFC113C0A248
-1381A24813016E1380A2ED3E0092C7FCA8B6FCA4000390C8FCB3ABB512FEA4223A7DB91D
->I<161FD907FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C13
-8F003F15CF4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907
-FE07FE48B512F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E0
-6C15F86C816C815A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C
-6C495AD81FF0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<
-EA01F0EA07FC487EA2487EA56C5AA26C5AEA01F0C8FCA913FF127FA412077EB3A9B512F8
-A4153B7DBA1B>105 D<13FFB5FCA412077EAF92380FFFE0A4923803FC0016F0ED0FE0ED
-1F804BC7FC157E5DEC03F8EC07E04A5A141FEC7FE04A7E8181A2ECCFFEEC0FFF496C7F80
-6E7F6E7F82157F6F7E6F7E82150F82B5D8F83F13F8A42D3A7EB932>107
-D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FED97FE0EB0FFC00FF902601
-FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00903887801F000749DA
-CF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB50083B512F0
-A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C0113800007
-13780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435>I<903801
-FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D7EA2003F81
-491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A6C
-6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9038FE03F000FFEB
-0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138807F80ED3F00150C92C7FC
-91C8FCB3A2B512FEA422257EA427>114 D<90383FF0383903FFFEF8000F13FF381FC00F
-383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C13FCECFF806C14C06C
-14F06C14F81203C614FC131F9038007FFE140700F0130114007E157E7E157C6C14FC6C14
-F8EB80019038F007F090B512C000F8140038E01FF81F257DA426>I<130FA55BA45BA25B
-5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80F014816CEBC3E09038
-3FFFC06D1380903803FE001D357EB425>I<B539F001FFF8A4000390C7EA1F00161E6E13
-3E6C153C6E137C6C15786E13F8017F5CECF001013F5C14F8011F495AA2ECFC07010F5CEC
-FE0F010791C7FC6E5A6D131E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA26E5AA22D25
-7EA432>118 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh ecrm1000 10 89
-/Fh 89 126 df<486C1360000314E039070001C0000EEB038048EB070000181306003813
-0E0030130C0070131C00601318A200E01338481330A400CEEB338039FF803FE001C013F0
-A3007F131FA2393F800FE0390E0003801C1981B91C>16 D<001C1307007FEB1FC039FF80
-3FE0A201C013F0A3007F131F001CEB073000001300A400011470491360A2000314E090C7
-12C048130100061480000E130348EB070048130E485B006013181C1980B91C>I<B81280
-A2290280962A>21 D<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F90
-3B1F8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8
-A32801F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>27
-D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B
-A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5
-12C0A32A3B7FBA2E>I<DA0FF0EB1FF0DA7FFEEBFFFC903B01F80F83F00F903C07E001CF
-C00380903C1F8000FF0001C090273F0007FE130F017E4948497EA2495CA248485C03076E
-5A03030203C7FC95C8FCA9F007E0BAFCA33C01F80003F0001F1807B3AA486C496C497E26
-7FFFE0B500C1B51280A3413B7FBA45>30 D<EB0380A3EB0FF0EB7FFE48B512803903F38F
-C03907C381E0390F8380F0D81F031338123E003C141C007C140C150E0078143E00F814FE
-1481A400FCEB80FC157800FE140012FF127F13C313E3EA3FFF6C7F14F86C13FE6CEBFF80
-000114C06C14E0013F13F01303ECBFF8148FEC83FC1481A2EC80FE157E123C12FF153EA4
-12FE00F8143C00E0147C12600070147815F8003814F0003C1381001EEB83E0000FEB87C0
-3907E39F803901FFFE006C5BEB1FE0EB0380A41F437BBD2A>36 D<141FEC7FC0903801F0
-E0903803C0600107137090380F803090381F00381518A25BA2133E133F15381530A21570
-5D5D140190381F838092CAFC1487148E02DC49B51280EB0FF85C4A9039003FF8000107ED
-0FC06E5D71C7FC6E140E010F150CD91DFC141C01391518D970FE143801E015302601C07F
-1470D803805D00076D6C5BD80F00EBC00148011F5C4890380FE003003E6E48C8FC007E90
-3807F8060203130E00FE6E5A6E6C5A1400ED7F706C4B13036F5A6F7E6C6C6D6C5B701306
-6C6C496C130E6DD979FE5B281FF001F07F133C3C07F80FE03FC0F86CB539800FFFF0C690
-26FE000313C0D91FF0D9007FC7FC393E7DBB41>38 D<121C127FEAFF80A213C0A3127F12
-1C1200A412011380A2120313005A1206120E5A5A5A12600A1979B917>I<146014E0EB01
-C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123E
-A35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E
-7FEB0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7EA26C7E
-6C7EA21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F
-80A31400A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A
-5A13527CBD20>I<1530B3A8B912FCA2C80030C8FCB3A836367BAF41>43
-D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A
-12600A19798817>I<B512FCA516057F941C>I<121C127FEAFF80A5EA7F00121C09097988
-17>I<1506A2150E150CA2151C151815381530A215701560A215E015C0A214011580A214
-0315005C1406A2140E140CA2141C1418A214381430A21470146014E05CA213015CA21303
-91C7FCA25B1306A2130E130C131C1318A213381330A213701360A213E05BA212015B1203
-90C8FCA25A1206A2120E120CA2121C1218A21238123012701260A212E05AA21F537BBD2A
->I<EB03F8EB1FFF90387E0FC09038F803E03901E000F0484813780007147C48487FA248
-C77EA2481580A3007EEC0FC0A500FE15E0B3007E15C0A4007F141F6C1580A36C1500A26C
-6C133EA26C6C5B6C6C5BEBF0013900F803E090387E0FC0D91FFFC7FCEB03F823397DB62A
->I<EB01C013031307131F13FFB5FCA2131F1200B3B3A7497E007FB512F0A31C3779B62A>
-I<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0001E6D7E001C6D7E486D7E5A6E7E1260
-12FE6CEC7F807FA56CC7FC121CC8FCEDFF00A25D14015D14035D4A5A4A5A5D4A5A4AC7FC
-147E5C495A14E0495A495A49C8FC011EEB01805B5B49130348481400485A485A90C75A48
-B6FC5A5A485CB6FCA321377CB62A>I<EB07F8EB3FFF90B512C03901F80FF03903C007F8
-48486C7E390E0001FEEA0F80391FE000FF7FA56C5A6C5AC7485AA25D14035D4A5A5DEC0F
-80027FC7FCEB1FFCECFF809038000FE06E7EEC01FC816E7EED7F80A216C0A2153F16E0A2
-121EEA7F80A2487EA316C0157F491480007EC7FC0070ECFF006C495A121E390F8003F839
-07F00FF00001B512C06C6C90C7FCEB0FF823397DB62A>I<1538A2157815F8A214011403
-1407A2140F141F141B14331473146314C313011483EB030313071306130C131C13181330
-1370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C73803F800AA
-4A7E0103B512F8A325387EB72A>I<0006140CD80780133C9038F003F890B5FC5D5D1580
-92C7FC14FC38067FE090C9FCAAEB07F8EB1FFE9038780F809038E007E03907C003F0496C
-7E130000066D7E81C8FC8181A21680A4121C127F5A7FA390C713005D12FC00605C12704A
-5A6C5C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE021397CB62A
->I<EC3FC0903801FFF0010713FC90380FE03E90383F800790387E001F49EB3F80484813
-7F485A12075B000FEC3F0049131E001F91C7FC5B123FA3127F90C9FCEB01FC903807FF80
-39FF1E07E090383801F0496C7E01607F01E0137E497F16805BED1FC0A390C713E0A57EA4
-7F123F16C0A2001FEC3F807F000F15006D5B000714FE6C6C5B6C6C485A3900FE07F09038
-7FFFC0011F90C7FCEB03FC23397DB62A>I<12301238123E003FB612E0A316C05A168016
-000070C712060060140E5D5D00E014304814705D5DC712014A5A4AC7FC1406140E5CA25C
-1478147014F05C1301A213035C1307A2130FA3131F5CA2133FA5137FA96DC8FC131E233A
-7BB72A>I<EB03F8EB1FFF017F13C09038FC07F03901E001F83903C0007C4848133C90C7
-123E48141E000E141F001E80A3121FA26D5B6D131E7FD80FF85B6D137C01FF13786C6D5A
-6CEBE3E0ECF780C601FFC7FC6D5A6D6C7E010F13E0013F7F01F97F3901E07FFE48486C7E
-380F800F48486C1380001E010113C0487F007C143F0078EC1FE0150F00F81407481403A2
-1501A36C15C0A200781403007C15806C14076CEC0F006C6C131ED807E0137C3903F803F0
-C6B55A013F1380D907FCC7FC23397DB62A>I<EB03F8EB1FFF017F13C03901FC07E04848
-6C7E3907E001F8000F6D7E4848137E5B003F80A248C71380A25AED1FC0A516E0A56C143F
-A36C7E157F121F6C6C13FF6C6C13DF000313013901F0039F3900FC0F1FD93FFC13C0EB07
-F090C7FCA2153F1680A216005D120F486C137E486C5BA24A5A4A5A49485A381F000F001C
-EB1F80260F807FC7FC3807FFFE000113F838003FC023397DB62A>I<121C127FEAFF80A5
-EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>I<121C127FEAFF80A5
-EA7F00121CC7FCB2121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A
-1206120E5A5A5A12600A3479A317>I<EF01C0EF0780EF1E0017F8EE03E0040FC7FC163C
-16F0ED03C0030FC8FC153CEC01F0EC07C0021EC9FC1478EB01E0EB0780011ECAFC13F8EA
-03E0000FCBFC123C12F0A2123C120FEA03E0EA00F8131EEB0780EB01E0EB0078141EEC07
-C0EC01F0EC003C150FED03C0ED00F0163C160FEE03E0EE00F8171EEF0780EF01C0322E79
-AB41>I<007FB812F8B912FCCCFCB0B912FC6C17F836147B9E41>I<12E01278121EEA07C0
-EA01F0EA003C130FEB03C0EB00F0143C140FEC03E0EC00F8151EED0780ED01E0ED007816
-1EEE07C0EE01F0EE003C170FEF03C0A2EF0F00173CEE01F0EE07C0041EC7FC1678ED01E0
-ED0780031EC8FC15F8EC03E0020FC9FC143C14F0EB03C0010FCAFC133CEA01F0EA07C000
-1ECBFC127812E0322E79AB41>I<EB3FE03801FFFE3907C03F80390E000FC0003CEB07F0
-00301303007014F8007C130100FE14FC7EA4127E003CEB03F8C7FCEC07F0A2EC0FE0EC1F
-80EC3F00147E147C5C495A5C495A5CA249C7FCA31306AA90C8FCA8130EEB3F80497EA56D
-5A010EC7FC1E3B7CBA27>I<1538A3157CA315FEA34A7EA34A6C7EA202077FEC063FA202
-0E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F1501A2D90180
-7F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E7EA3496E7E
-A213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65
-D<B712E016FC16FF0001903980007FC06C90C7EA1FE0707E707E707EA2707EA283A75F16
-035F4C5A4C5A4C5A4C5AEEFF8091B500FCC7FCA291C7EA7F80EE1FE0EE07F0707E707E83
-707EA21880177F18C0A7188017FFA24C13005F16034C5AEE1FF8486DEB7FF0B812C094C7
-FC16F832397DB83B>I<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03
-FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F48
-48150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A312
-3F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE0
-5C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D
-7BBA3C>I<B712C016F816FE000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E
-177FA2EF3F8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F
-18C0EF3F80A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397D
-B83F>I<B812FEA3000190388000076C90C8FC173F838383A383A31880170116C0A394C7
-FCA31501A21503150F91B5FCA3EC000F15031501A21500A21860A318E093C712C0A41701
-A3EF0380A21707A2170F173F177F486D903807FF00B9FCA333397EB838>I<B812F8A300
-01903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED0180A21700A4
-1503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612C0A32F397D
-B836>I<DBFF8013C0020FEBF001023F13FC9139FF803F03903A03FC000787D90FF0EB03
-CF4948EB00EF4948147F4948143F49C8121F485A4848150F48481507A248481503A2485A
-1701123F5B007F1600A448481600AB93B6FCA26C7E9338007FE0EF3FC0A2123F7F121FA2
-6C7EA26C7EA26C7E6C7E6C6C157F6D7E6D6C14FF6D6C14EFD90FF8EB03C7D903FEEB0783
-903A00FFC03F0191393FFFFC00020F01F0130002001380383D7CBA41>I<B648B512FEA3
-0001902680000313006C90C76C5AB3A491B6FCA391C71201B3A6486D497EB648B512FEA3
-37397DB83E>I<B612C0A3C6EBC0006D5AB3B3AD497EB612C0A31A397EB81E>I<013FB512
-E0A39039001FFC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C
-5C6C495A6C49C7FC380781FC3801FFF038007F80233B7DB82B>I<B649B5FCA300010180
-9038007FF06C90C8EA3F80053EC7FC173C17385F5F4C5A4C5A4CC8FC160E5E5E5E5E4B5A
-ED0780030EC9FC5D153E157E15FF5C4A7F4A6C7E140E4A6C7E4A6C7E14704A6C7E4A6C7E
-14804A6C7E6F7EA26F7F707EA2707E707EA2707EA2707E707EA2707E707F8484486D497F
-B6011FEBFF80A339397DB841>I<B612E0A3000101C0C8FC6C90C9FCB3AD1718A5173817
-30A31770A317F0A216011603160FEE1FE0486D13FFB8FCA32D397DB834>I<B5933807FF
-F86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3F815C3A2D9
-C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C1330A36E6C13
-60A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1FD8A3ED0FF0
-A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB84C>I<B59138
-07FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EBC7FCA2EBC3FEEBC1FF
-A201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED7FC016E0153FED1FF0ED0F
-F8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE0FFEA216071603A216
-011600A2177E486C153E487ED80FFC151EB500C0140EA2170637397DB83E>I<EC03FF02
-1F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE
-6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0A2001F17E049150F003F17F0
-A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F17F0A26C6CED1FE0A36C6CED
-3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F4A5A6D6C495A6D6C495AD907
-E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE0020390C8FC363D7BBA41>I<B712
-C016FC16FF0001D9800013C06C90C7EA1FE0707EEE03F883707EA2707EA21880A71800A2
-4C5AA24C5A5FEE0FF04C5AEEFF8091B548C7FC16F091CAFCB3A5487FB6FCA331397EB838
->I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F0
-49C76C7E01FE6E7E48486E7EA24848157F0007178049153F000F17C049151F001F17E0A2
-4848ED0FF0A3007F17F8A2491507A200FF17FCAC007F17F8A26D150FA2003F17F0A26C6C
-ED1FE0A36C6CED3FC00007027C14804AB4FC3C03F80383807F003B01FC0701C0FEEC0E00
-2600FE0CEBE1FC017FEC63F8D93F8CEB77F0D91FCCEB3FE0D907EE14806DB449C7FC0100
-D981FC130CEC1FFF0203131C91C7001E131C161F183CEF807CEFC0F8EE0FFFA318F08218
-E07013C07013809338007E00364B7BBA41>I<B612FEEDFFE016F8000190388007FE6C90
-C76C7EEE3FC0707E707E707EA2707EA283A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07
-FC91B512E05E9138000FF0ED03F8ED00FE82707E707EA2161F83A583A6F00180A217F816
-0F1803486D01071400B66D6C5A04011306933800FE0ECAEA3FFCEF07F0393B7DB83D>I<
-D90FF813C090383FFE0190B512813903F807E33907E000F74848137F4848133F48C7121F
-003E140F007E1407A2007C140312FC1501A36C1400A37E6D14006C7E7F13F86CB47E6C13
-F8ECFF806C14E06C14F86C14FEC680013F1480010714C0EB007F020713E0EC007FED3FF0
-151F150FED07F8A200C01403A21501A37EA216F07E15036C15E06C14076C15C06C140F6D
-EB1F80D8FBF0EB3F00D8F0FE13FE39E03FFFF8010F13E0D8C00190C7FC253D7CBA2E>I<
-003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000701770A300601730
-A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C>I<B6903807
-FFFEA3000101809038007FE06C90C8EA1F80EF0F001706B3B2170E6D150C80171C133F17
-186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB07806D6C49C7FC91387F807E91381FFF
-F8020713E09138007F80373B7DB83E>I<B500FC91387FFF80A30003018091380FFC006C
-90C8EA07E0715A6C705A6E1403017F93C7FCA280013F1506A26E140E011F150C80010F5D
-A28001075DA26E147001031560A26D6C5CA2806D4A5AA2ED8003027F91C8FCA291383FC0
-06A215E0021F5BA2EDF01C020F1318A26E6C5AA215FC02035BA2EDFEE002015BA26E6C5A
-A36FC9FCA3153EA2151CA3393B7EB83E>I<B5D8FC07B5D8F001B5FCA30007902780001F
-FEC7EA1FF86C48C7D80FF8EC07E000010307ED03C01B807F6C6F6C1500A26E5F017F6E6C
-1406A280013F4A6C5CA280011F4A6D5BEE067FA26D6C010E6D5BEE0C3FA26D6C011C6D5B
-EE181FA26D6C6F5BEE300FA26D6C6F485AEE6007A26D6C4CC7FC9338C003FCA203805D91
-3B7F818001FE06A203C1150EDA3FC3C7EAFF0CA203E3151CDA1FE6EC7F98A215F6DA0FFC
-EC3FF0A302075E4B141FA202035E4B140FA202015E4B1407A2020093C8FC4B80503B7EB8
-55>I<B500FE91383FFFE0A3000301E0913807FE00C649EC03F0017F6F5A606D6C5D6D6C
-140395C7FC6D6C1406A26D6C5C6D6C141C17186D6C143817306D6D5B6E6C13E05F91383F
-E0015F91381FF003DA0FF890C8FC1606913807FC0E160C913803FE1C913801FF185E6E13
-B016E0157F6F5AB3A24B7E023FB512C0A33B397FB83E>89 D<003FB7FCA39039FC0001FE
-01C0130349495A003EC7FC003C4A5A5E0038141F00784A5A12704B5A5E006014FF4A90C7
-FCA24A5A5DC712074A5AA24A5A5D143F4A5AA24A5A92C8FC5B495AA2495A5C130F4948EB
-0180A2495A5C137F495A16034890C7FC5B1203485AEE0700485A495C001F5D48485C5E48
-48495A49130FB8FCA329397BB833>I<EAFFFCA2EAFC00B3B3B3B3A7EAFFFCA20E5379BD
-17>I<EAFFFCA21200B3B3B3B3A712FFA20E537FBD17>93 D<007FB81280B912C0A26C17
-803204797041>95 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E13E06E
-7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F485A90
-C7FC160C12FEA31401A26C13036CEB077C903980063E18383FC01E3A0FE0781FF03A03FF
-F00FE03A007F8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038
-F1E03E9039F3801F809039F7000FC001FEEB07E049EB03F049EB01F85BED00FCA216FEA2
-167E167FAA167E16FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC09039C7801F
-00903881E07E903800FFF8C7EA1FC0283B7EB92E>I<EB03FC90381FFF8090387E03E039
-01F80070484813F83907E001FC380FC003A2EA1F80123F90380001F848EB00F01500A212
-7E12FEAA127E127FA26C14067F001F140E6D130C000F141C6C6C13386C6C13706C6C13E0
-39007C07C090381FFF00EB07F81F277DA525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8
-EB1FFF90387E078F9038F801EF3903F0007F4848133F4848131FA24848130F123F90C7FC
-5AA2127E12FEAA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A01F801
-CFFF39007C078F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF90387C0FC039
-01F803E03903F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F127E12FE
-A3B7FCA248C8FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D131CD801F0
-13386C6C137090387E03E090381FFF80903803FC0020277EA525>I<147E903803FF8090
-380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FC
-B3AB487E387FFFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C9039F81F70
-7C3901F00FE03903E007C03A07C003E010000FECF000A248486C7EA86C6C485AA200075C
-6C6C485A6D485A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512C015F86C
-14FE6CECFF804815C03A0F80007FE048C7EA0FF0003E140348140116F8481400A56C1401
-007C15F06CEC03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007FFFF00107
-90C7FC26387EA52A>I<EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039F1C01F80
-9039F3800FC0EBF70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A3293A7EB92E
->I<EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA487EB512C0
-A312387EB717>I<EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FFA31307
-1301B3B3A2123C127E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03F81549
-84B719>I<EA03F012FFA3120F1203B1913801FFFCA39138007FC01600157C15705D4A5A
-4A5A4AC7FC141E1438147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E
-7E811400157E157F811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012
-FFA3120F1203B3B3AD487EB512C0A3123A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB
-7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC
-49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445
->I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7E
-A25BA35BB3A3486C497EB500C1B51280A329257EA42E>I<EB03FE90380FFF8090383E03
-E09038F800F84848137C48487F48487F4848EB0F80001F15C090C712074815E0A2007EEC
-03F0A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F6C6CEB
-3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<3903F01F
-E000FFEB7FF89038F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F8
-49130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614
-C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>
-I<D903F813C090381FFE0190387E07819038FC01C33903F000E300071477484813374913
-3F001F141F485A150F48C7FCA312FEAA127FA37E6D131F121F6D133F120F6C6C137F6C6C
-13EF3901F801CF39007E078F90381FFE0FEB07F890C7FCABED1FE00203B5FCA328357DA4
-2C>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E0
-9038FC0080491300A45BB3A2487EB512F0A31C257EA421>I<EBFF03000313E7380F80FF
-381E003F487F487F00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13F86C7F00
-037FC67F01071380EB007F141F00C0EB0FC01407A26C1303A37E15806C13077EEC0F00B4
-131E38F3C07C38E1FFF038C03F801A277DA521>I<1318A51338A31378A313F812011203
-1207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFE
-EB01F81A347FB220>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407B3A4150FA3
-151F12016D133F0000EC77F86D9038E7FF8090383F03C790381FFF87903A03FC07E00029
-267EA42E>I<B538803FFEA33A0FF8000FF06C48EB07E00003EC03C06D148000011500A2
-6C6C1306A26D130E017E130CA26D5BA2EC8038011F1330A26D6C5AA214E001075BA29038
-03F180A3D901FBC7FCA214FF6D5AA2147CA31438A227257EA32C>I<B53A1FFFE03FFEA3
-260FF8009038000FF86C48017EEB03E018C00003023EEB0180A26C6C013FEB0300A36C6C
-EC8006156FA2017E9038EFC00C15C7171CD93F01EBE01815830281EBF038D91F83143015
-0102C3EBF87090260FC6001360A2D907E66D5A02EC137CA2D903FCEB7F804A133FA20101
-92C7FC4A7FA20100141E4A130E0260130C37257EA33C>I<B538807FFFA33A03FE003FF0
-0001EC1F80000092C7FC017E131C6D13186D6C5AECC070010F5B6D6C5AECF180EB03FB6D
-B4C8FC6D5AA2147F804A7E8114CF903801C7E090380383F090380703F8EB0601496C7E01
-1C137E49137F01787F496D7E486C80000FEC3FF0D8FFFE90B51280A329247FA32C>I<B5
-38803FFEA33A0FF8000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5BA213
-7F6D5BA26D6C5AA2ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF6D5A
-A2147CA31438A21430A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA701C
-6C5AEA1FF0EA0FC027357EA32C>I<003FB512FCA2EB8003D83E0013F8003CEB07F00038
-EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A495A
-A290387F000613FEA2485A485A0007140E5B4848130C4848131CA24848133C48C7127C48
-EB03FC90B5FCA21F247EA325>I<EC01F8140FEC3F80ECFC00495A495A495AA2130F5CB3
-A7131F5C133F49C7FC13FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE137F6D7E131F80
-130FB3A7801307A26D7E6D7E6D7EEC3F80EC0FF814011D537ABD2A>I<126012F0B3B3B3
-B3A91260045377BD17>I<12FCEAFFC0EA07F0EA01FCEA007E7F80131F80130FB3A78013
-07806D7E6D7EEB007EEC1FF0EC07F8EC1FF0EC7E00495A495A495A5C130F5CB3A7131F5C
-133F91C7FC137E485AEA07F0EAFFC000FCC8FC1D537ABD2A>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi ecbx1440 14.4 34
-/Fi 34 118 df<EE7FFC031FB57E4AB612E0020715F8023F9038C00FFC913AFFFC0001FE
-4901F0EB007F010701C0EB03FF4949497F4990C75A5B5C495A4D7F01FF6F5B5CA27190C7
-FC715AEF00F895C8FCAA0407B512C0BAFCA5C601F8C7120F83B3B3A6B6D8F807B612C0A5
-42547DD349>28 D<B712E0AB230B7F9F2C>45 D<151E153E15FE1403140F147FEB07FF00
-03B5FCB6FCA3EBF87FEAFC00C7FCB3B3B3A6007FB712FCA52E4E76CD42>49
-D<EC1FFE49B512F0010F14FC013FECFF804915E02701FF803F7F2703FC000713FCD807F0
-01017F48486D7FD81F806E138048C87E7013C0D87FE016E001F8806D16F000FF817F7013
-F8A56C5AA26C5A6C5AEA0380C914F05EA218E05E18C05E18804C13005F4C5A4C5A5F4B5B
-4B5B4B5B94C7FCED0FFC4B5A4B5AED7FC04B5A4A90C8FCEC03FC4A5A4A4814F84A5A4A5A
-4AC8FC02FEEC01F0495A495A495A5CD90F80140349C8FC013E1507017FB7FC90B812E05A
-5A5A5A5A5A5AB9FC18C0A4354E7ACD42>I<913807FFC0027F13FC0103B67E010F15E090
-261FF80313F890267FC0007F01FEC7EA3FFE48488148486E138013FE486C6C6D13C08048
-17E080A66C5B18C06C5B6C90C75AD80038168090C8FC4C1300A24C5A5F4C5A4B5B4B13C0
-030F5BDB7FFEC7FC91387FFFF816C016FCEEFF80DA000313E09238007FF8EE3FFE707E70
-138018C07013E018F07013F8A218FC82A218FEA3EA03C0EA0FF0EA3FFC487EA2B5FCA218
-FCA25E18F8A26C4816F0495C4916E0D83FE04A13C06C485CD80FF04A1380D807FE91387F
-FE003B03FFE003FFFC6C90B65A6C6C15E0010F92C7FC010114FCD9001F1380374F7BCD42
->I<17FC1601A216031607160FA2161F163F167FA216FF5D5DA25D5D5D167F153E157E15
-FC15F8EC01F01403EC07E015C0EC0F80141FEC3F00143E5C14FC495A5C495A1307495A5C
-49C7FC5B137E137C5B1201485A5B485A120F485A90C8FC123E127E5ABA1280A5C901FCC7
-FCAF021FB71280A5394F7CCE42>I<486C150601F0153E01FEEC01FED9FFF0133F91B65A
-5F5F5F5F5F94C7FC16FC5E16E093C8FC15FC01F0138091CAFCAC913807FF80023F13F891
-B512FE01F36E7E9026FFFC0113E09139E0007FF891C76C7E496E7E01F86E7E5B70138049
-16C0C9FC18E08218F0A418F8A31203EA0FE0EA3FF8487EA212FF7FA218F0A25B5E6C4816
-E05B01C016C06CC85A18806C6C4A13007FD80FF04A5A6C6CECFFFCD803FE4913F02701FF
-E00F5B6C6CB612806D92C7FC010F14F8010114C09026003FFCC8FC354F7ACD42>I<EA07
-E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E0C7FCB3A3EA07E0EA1F
-F8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E0103576B425>58
-D<932603FFF01407047F01FF5C0307B600E05B033F03F85B92B700FE5B02039126C003FF
-5B020F01F8C7EA3FC1023F01C0EC0FE391B5C80003B5FC4901FC814949814901E082011F
-498249498292CA7E4948834948835A4A83485B4885A2484984A2485B87A2485B87A25AA2
-98C8FC91CFFCA2B5FCAE7E067FB7128080A37E95C76C90C7FC807EA36C7FA26C7FA26C7F
-7E806C7F137F6D7E816D6D93B5FC01077F6D01F85D6D7F6D01FF5D023F01E0EC0FEF020F
-01FCEC3FE30203903AFFE001FF81020091B6C6FC033F03FC133F030703F0130FDB007F02
-801303040301F8CAFC595479D267>71 D<B81280A5D8000701F0C7FCB3B3B3B2B81280A5
-29527DD130>73 D<B812E0A5D8000F01E0CAFCB3B3A91AF8A419011AF0A51903A31907A2
-190F1AE0191FA2193F197F19FF60180760187F0503B5FCBB12C0A545527CD14F>76
-D<B600F84BB612FC818181A2D800076E91C7383FE00070EE0F80828214DF02CF7F02C77F
-8202C37F14C102C0806F7F836F7F816F7F6F7F83816F7F6F80707F8482707F707F707F84
-82707F7080717F8583717F717F85717F83717F7114801AC07213E0847213F07213F81AFC
-7213FE847213FF72148F1BCF7313EF857313FF85A285858585A286868686A286868686EB
-1FF0B600FE177F1B3F1B1F1B0FA25E527CD167>78 D<B912FCF0FFE019FE737E1AE0D800
-0F01E0C7003F7F060313FC06007F737E7313807313C07313E0851BF0A21BF885A21BFCA9
-1BF8A3611BF0A21BE04F13C0614F13804F13004F5A060713F8063F5B92B812C097C7FC19
-F8198003E0CBFCB3AEB712FEA54E527CD15A>80 D<93381FFF800303B512FC033FECFFC0
-92B712F00207D9F80113FE021F903AC0003FFF804A48C700077FDAFFF8020113F049496E
-7F49496F7E49496F7E49496F7E4990C96C7F4948707F4948707F01FF854849707F4A8248
-86A24849717E48864A83A2481B80A248497113C0A4481BE0A291CB7EA3B51AF0AF6C1BE0
-A36E5FA26C1BC0A36C1B806E5FA26C1B006E5F6C62A26C6DD903FC4A5A6CDB0FFF5D6E49
-EBC0016C4B01E05C6D6C90277E07F0035B6E9039F801F807902A3FFF01F000780F5B6D04
-7C5C6DD981E06D4890C7FC6D01E191381F7FFE010101F1EDFFF86DD9F9F06D5BDA3FFF16
-C06E6D013F5B02079027FE01FFFEC8FC020190B612F8DA003F4B141003071838DB001FEB
-83F893C7EA03FC1C7885726C14F8F2C003F2F01F97B512F084A31CE085A27314C01C8085
-1C00735B735B735B735B9638003FC0556A79D263>I<B912E018FF19F019FE737ED80007
-01F0C714E0060F7F060313FC06007F737E737F8587737FA28785A287A863A26163636163
-4F90C8FC4F5A4F5A06035B060F13E095B5128092B748C9FC19F019C019F09226F0000713
-FC050013FF063F7F727F727F727F727FA2727FA28486A886A71D707513F8A2851C017301
-C013F0A273EBE003B86C6D9038F007E0739038FC1FC0070190B51280736C1400080F5BCE
-13F85D537CD162>I<DA0FFE141C91B500F0133C010702FC137C011F02FF13FC017F15C1
-9026FFF00113E148903980001FFB4890C7EA07FFD807FC14014848804848153F171F4848
-150FA2007F1607491503A2170112FFA217007FA26D167CA27F7F6D93C7FC6C7E14C014F8
-ECFF806C14F8EDFFC06C15FC6CEDFF8017F06C16FC6C826C707E6C836D82011F82010782
-13016D6C81020781EC007F030380ED003F040314801600173F837113C0838312F883A383
-7EA319807EA26C5E19007F6D4B5A7F6D4B5A01FC4B5A6D151FD9FFC04A5AD97FF8ECFFE0
-28FE1FFF80075B010790B6C7FCD8FC0115FC486C6C14F048010F14C0489026007FFCC8FC
-3A5479D249>I<003FBB12FCA59126C0007FEB000301FCC7ED003FD87FF0F00FFE491807
-49180349180190C81600A2007E1A7EA3007C1A3EA500FC1A3F481A1FA6C91700B3B3AC49
-B912C0A550517BD05B>I<EC3FFE0107B512E0011F14FC017F14FF2701FFC00F13C02703
-FE00037F486C01007F6E6D7E486D80707EA2707EA3707F6C5B6C90C7FC6C5AC9FCA60307
-B5FC0203B6FC147F0103B7FC011FEBF00F017F1300EBFFFC000313F04813C0485B4890C7
-FC5A5B485AF081F012FF5BA35EA26D5C127F6D5C003F03F713C36DD901E314E06CD9C007
-14FF00079026F01F8114C06C90B5C61480C602FC6D1300011F01F0EB3FFC01010180EB07
-F03C387CB642>97 D<913803FFE0023F13FE91B67E010315E0010F9038003FF8D93FFCEB
-07FC4948497E4948131F4849497E485B485BA24890C7FC5A5B003F6F5A705A705A007F92
-C8FC5BA312FFAD127F7FA3123F7F6CEE0F80A26C6D141F18006C6D5C6C6D143E6C6D147E
-6C6D5C6D6C495A6DB4EB07F0010F9038C01FE06D90B5128001014AC7FCD9003F13F80203
-138031387CB63A>99 D<943803FF80040FB5FCA5EE003F170FB3A4913803FF80023F13F8
-49B512FE0107ECFF8F011F9038C03FEF90273FFE0007B5FCD97FF8130149487F48498048
-4980484980488291C8FC5A5B123FA2127F5BA312FFAD127FA37F123FA3121F7F6C5E6C6D
-5C5F6C6D91B5FC6C6D5B6C6D4914E0D97FFCD90FEFEBFF80D91FFFEB7F8F010790B5120F
-010114FC6D6C13E00207010049C7FC41547CD249>I<913807FF80027F13F849B512FE01
-076E7E011F010313E0903A3FFC007FF0D97FF06D7E49486D7E4849130F48496D7E488248
-90C77E1880485A82003F17C0A3485A18E082A212FFA290B8FCA401FCCAFCA6127FA37F12
-3FA2EF03E06C7E17076C17C06C6D140F18806C6D141F6C6DEC3F006C6D147ED97FFC495A
-D91FFFEB07F86D9038E03FF0010390B512C001005D023F01FCC7FC020113E033387CB63C
->I<ED1FF8913803FFFE020FEBFF80023F14C09139FFF83FE001039038E0FFF049138049
-010113F85BEB3FFEA2EB7FFCA26F13F0495AEE7FE0EE1F8093C7FCAEB712C0A5C601F8C8
-FCB3B3A7B612FEA52D547CD328>I<DA1FFE14FE49B539E007FF80010FDAFC1F13C0013F
-DAFF7F13E090267FF807EBFF072701FFE001EBF07F48497E484990387FF83F91C7003F14
-C048EEFC1F489338FE070049021F90C7FCA2003F82A9001F5EA26D143F6C5E6C5E6E137F
-6C6D495A6C6D485B6CD9F80713804890B6C8FCD803EF14FC01C114E02707C01FFEC9FC49
-CBFCA2487EA37FA27F13FC90B612FE6CEDFFF017FCEFFF806C8318F06C836C837F48B87E
-1207D80FFCC700037F4848EC003F4848150F48486F138083485A83A56D5D007F18006D5D
-003F5F6C6C4B5A01FE153FD807FFED7FF06C01C049485AC601FC011F1380013FB648C7FC
-010F15F8010115C0D9000F01F8C8FC3B4F7CB542>I<EB3FF8B5FCA51203C6FCB3A4EE1F
-FC93B57E030314E0030F14F892391FC07FFC92397E003FFE03F86D7EECF9F04B6D7FECFB
-C0ECFF8092C76C7FA25CA25CA45CB3ACB6D8F807B612C0A542537CD249>I<133FEBFFC0
-487F487FA2487FA66C5BA26C5B6C5B013FC7FC90C8FCAEEB1FF8B5FCA512017EB3B3A6B6
-12F0A51C547CD324>I<EB3FF8B5FCA51203C6FCB3B3B3B1B612F8A51D537CD224>108
-D<D93FF0D91FF84AB47EB591B56C010F13F8030302E0013F13FE030F6E90B6FCDB3F8090
-27F803F80F7F922A7E007FFC07E0077F000302F890283FFE0F80037FC6D9F1F0011F4948
-7EDAF3E0DAFF3E814B153CDAF7805D92C76C496D7F14FF4A5EA24A5EA34A5EB3ADB6D8F8
-0FB66CB612F8A565367BB56E>I<D93FF0EB1FFCB591B57E030314E0030F14F892391FC0
-7FFC92397E003FFE000302F86D7EC6EBF1F04B6D7FECF3C0ECF78092C76C7F14FF5CA25C
-A45CB3ACB6D8F807B612C0A542367CB549>I<913801FFC0023F13FE91B67E010315E001
-0F018013F8903A3FFC001FFED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F4883
-488349153F001F83A2003F8349151FA2007F83A400FF1880AC007F1800A3003F5F6D153F
-A2001F5FA26C6C4B5AA26C6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE
-6DB46CB45A010790B512F0010115C0D9003F49C8FC020313E039387CB642>I<D93FF8EB
-7FF0B50107B5FC031F14C0037F14F09126F9FF0013FCDAFFF8EB3FFF000302E0010F7FC6
-02806D7F92C76C7F4A824A804A6E7F85187F85A2183F85A4721380AD4E1300A44E5AA261
-18FF616E5C616E4A5B6E4A5B6F495B03E04990C7FC6FEB7FFE913AF9FE01FFF802F8B65A
-033F14C0030749C8FC030013E093CAFCB1B612F8A5414D7DB549>I<90393FF001FCB590
-380FFF804B13E0037F13F09238FE1FF89138F1F83F00019138F07FFC6CEBF3E015C0ECF7
-80A2ECFF00EE3FF84AEB1FF0EE0FE093C7FC5CA45CB3ABB612FEA52E367DB535>114
-D<903903FFC00E011FEBFC1E90B6127E000315FE3907FE003FD80FF0130F484813034848
-1301491300127F90C8127EA248153EA27FA27F01F091C7FC13FCEBFF806C13FEECFFF06C
-14FE6F7E6C15E06C816C15FC6C81C681133F010F15801301D9000F14C0EC003F030713E0
-150100F880167F6C153FA2161F7EA217C07E6D143F17807F6DEC7F0001F85C6DEB03FE90
-39FF801FFC486CB512F0D8F81F14C0D8F00791C7FC39E0007FF02B387CB634>I<147CA6
-14FCA41301A31303A21307A2130F131F133F137F13FF1203000F90B512FEB7FCA426007F
-FCC8FCB3A9EE0F80ABEE1F006D7EA2011F143E806D6D5A6DEBC1F86DEBFFF001005C023F
-1380DA03FEC7FC294D7ECB33>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607
-B3AE5FA35FA25F137F5F6D6C14F7DC01E713F06D6CD907C7EBFFC0903A0FFF801F876D90
-B51207010114FC6D6C13F0020701C091C7FC42377CB549>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj ecrm0900 9 5
-/Fj 5 109 df<123C127E12FFA4127E123C08087A8715>46 D<EB7F803803FFF0380F80
-FC381C003E003F133F6D6C7E6E7EA26E7EEA1F00C7FCA4EB01FF131FEBFF873803FC07EA
-0FF0EA1FC0EA3F80127F13004815C05AA3140FA26C131F6C133B3A3F8071F180391FC1E1
-FF2607FFC013003900FE003C22237DA126>97 D<EA03F012FFA312071203AEEC3F80ECFF
-E09038F3C0F89038F7007E01FE7F49EB1F8049EB0FC05BED07E016F0A2150316F8AA16F0
-150716E0A2ED0FC07F6DEB1F8001ECEB3F0001CF137C90388381F8903801FFE0C76CC7FC
-25357EB32B>I<EA03F012FFA312071203AEEC1FC0EC7FF09038F1E0FC9038F3807C9038
-F7007E13FE497FA25BA25BB3486CEB7F80B538C7FFFCA326347EB32B>104
-D<EA07E012FFA3120F1207B3B3A7EA0FF0B5FCA310347EB315>108
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk ecbx0900 9 7
-/Fk 7 117 df<ED1F80A24B7EA24B7EA34B7EA24A7FA34A7FA24A7F15CFA2020F7F1587
-021F801503023F80EC3E01A2027E80EC7C0002FC804A137FA20101814A133F0103814A13
-1FA249B67EA24981A290271F8000077F91C77EA24982013E80017E82017C80A201FC8249
-157FB500F0013FB512F0A43C347DB343>65 D<EB7FFE0003B512E04814F8390FF00FFC39
-1FF803FF806E138016C0157F6C5A6C5AEA0180C8FCEC7FFF010FB5FC90B6FC0003EBF07F
-000F1300EA1FF8485A485A485A5BA315FF7F007F5B6D4813E03A3FF80FBFFF000FB5121F
-0003EBFC0F39007FE00728217EA02B>97 D<EA01FC12FFA4120F1207ADEC0FF8EC7FFF01
-FDB512C09039FFF01FF09138800FF84A6C7E496D7E496D7EA2178081A217C0A91780A25D
-1700A26D495A6D495A6E485A9039F7E03FF001E1B512C0D9C07F90C7FC9038801FF02A34
-7DB331>I<903807FF80013F13F090B512FC3903FE01FE4848487EEA0FF8EA1FF0EA3FE0
-A2007F6D5A496C5A153000FF91C7FCA9127F7FA2003FEC07807F6C6C130F000FEC1F00D8
-07FE133E3903FF80FCC6EBFFF8013F13E0010790C7FC21217DA027>I<3901F81F8000FF
-EB7FF0ECFFF89038F9E3FC9038FBC7FE380FFF876C1307A213FEEC03FCEC01F8EC006049
-1300B1B512F0A41F217EA024>114 D<9038FFE1C0000713FF5A383F803F387E000F1407
-5A14037EA26C6CC7FC13FCEBFFE06C13FC806CEBFF80000F14C06C14E0C6FC010F13F0EB
-007F140F00F0130714037EA26C14E06C13076CEB0FC09038C01F8090B5120000F913FC38
-E03FE01C217DA023>I<133CA5137CA313FCA21201A212031207001FB51280B6FCA3D807
-FCC7FCB0EC03C0A79038FE078012033901FF0F006C13FEEB3FFCEB0FF01A2F7EAE22>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl ecrm1200 12 25
-/Fl 25 122 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113
-80120313005A1206120E5A5A5A12600B1D78891B>44 D<14FF010713E090381F81F89038
-3E007C01FC133F4848EB1F8049130F4848EB07C04848EB03E0A2000F15F0491301001F15
-F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FEA56D1301003F15FCA3001F15F8A2
-6C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F806C6CEB3F00013E137C90381F81
-F8903807FFE0010090C7FC28447CC131>48 D<EB03FE90381FFFC0017F13F03901F80FFC
-3903C001FE48486C7E000EC7EA7F8048EC3FC0ED1FE04815F00030140F007015F8006014
-07126CB415FC7F7F1503A46C4813076CC7FCC8FC16F8A2150F16F0151F16E0A2ED3FC0ED
-7F8016005D5D4A5A4A5A4A5A5D4A5A4A5A4AC7FC147C5C5C495A495A495A49C7120C131E
-5B013814185B5B485A4848143848C81230000E1570001FB612F0A25A5AB712E0A326427B
-C131>50 D<EC07FCEC3FFF91B512C0903903FC03E0903907E000F0D91FC0133849C71258
-017EEB01FC01FE1303491307485A485AA24848EB03F8000FEC01F092C7FC485AA3485AA3
-127FA29038007F80903801FFF090380780FC39FF0E003E49EB1F8049EB0FC049EB07E013
-6001E0EB03F04914F8150116FC5BED00FEA390C812FFA47EA57F123FA216FE121F15016D
-14FC120FED03F86C7EED07F06C6C14E06C6CEB0FC06C6CEB1F80017EEB3F0090383F80FE
-90380FFFF8010313E00100138028447CC131>54 D<16C04B7EA34B7EA34B7EA34B7EA3ED
-19FEA3ED30FFA203707FED607FA203E07FEDC03FA2020180ED801FA2DA03007F160FA202
-06801607A24A6D7EA34A6D7EA34A6D7EA20270810260147FA202E08191B7FCA249820280
-C7121FA249C87F170FA20106821707A2496F7EA3496F7EA3496F7EA201788313F8486C83
-D80FFF03037FB500E0027FEBFFC0A342477DC649>65 D<B8FC17E017FC00019039C00003
-FF6C6C4801007FEF3FC0717E717E717E84170384170184A760A21703601707604D5A4D5A
-EF7FC04DC7FCEE03FEEE3FF091B65A17FC0280C7B47EEF1FC0EF0FF0717E717E717E717E
-1980187F19C0A2183F19E0A8F07FC0A2198018FF4D1300A24D5AEF0FFC4D5AEF7FE04848
-6C903803FFC0B9C7FC17FC17C03B447CC345>I<B712FEEEFFE017F800019039C00007FE
-6C6C48903800FF80EF3FC0EF0FF0717E717EEF00FE8484F03F80F01FC0A2F00FE019F018
-0719F8A2180319FCA3F001FEA419FFAD19FEA3180319FCA319F8180719F0180F19E0A2F0
-1FC0F03F80A2F07F0018FE4D5A4D5AEF0FF0EF3FE0EFFF8048486C010790C7FCB812FC17
-E04CC8FC40447CC34A>68 D<B56C933807FFFC6E5EA20001F1FE0026006FE0EE1BF8A3D9
-67F01633A2D963F81663A3D961FC16C3A3D960FEED0183A2027FED0303A36E6C1406A36E
-6C140CA26E6C1418A36E6C1430A36E6C1460A26E6C14C0A36E6CEB0180A3037FEB0300A2
-92383F8006A36F6C5AA36F6C5AA26F6C5AA36F6C5AA36F6C5AA26FB45AA370C7FC13F0A2
-486C143ED80FFFEF0FFEB500F0011C0107B512FCA34E447BC359>77
-D<003FB912F8A3903BF0001FF8001F01806D481303003EC7150048187C0078183CA20070
-181CA30060180CA5481806A5C81600B3B3A54B7EED7FFE49B77EA33F447DC346>84
-D<B600C0010FB5FCA3000101E0C813F026007F80ED1F80F00F00A21806B3B3A7180E6D6C
-150CA2181C131F6E1518010F163818306D6C1570606D6C14016D6C5D6D6CEC0780027F4A
-C7FC6E6C131EDA1FE0137C913907FC03F00201B55A6E6C1380DB07FCC8FC40467CC349>
-I<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D7ED80FC0137E486C137F
-6D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00EA03FC48
-5A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF6D9038C7E0C0003F1301
-3A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C2B2E7CAC31>97
-D<EC7F80903803FFF090380FC07C90383F000F01FCEB03804848EB01C00003140F4848EB
-1FE049133F120F485AA2485AED1FC0007FEC070092C7FCA290C9FC5AAB7E7FA2123F1630
-7F001F15706C6C146016E06C6C14C06C6C13010001EC03806C6CEB0700013F131E90381F
-C078903807FFF001001380242E7DAC2B>99 D<167FED3FFFA315018182B3EC7F80903803
-FFF090380FC07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA2
-127FA290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C
-010E13C0013F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>I<EB01
-FE903807FFC090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C049130F
-121F484814E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F16306C
-7E1670000F15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E90381F80
-F8903803FFE0010090C7FC242E7DAC2B>I<EE0F80D901FCEB7FE0903A0FFF81F0F09039
-3F07E3819039FC01FF033A01F800FE014848017E13E00007027FC7FC497F000F8149131F
-001F81A9000F5D6D133F000792C7FC6D5B0003147E6C6C5B6D485A3903BF07E090380FFF
-80260701FCC8FC90CAFCA25AA37F6C7E7F90B512F86C14FF16E06C15F86C6C8048B67E3A
-07C0000FFF48481300003FC8EA3F80003E151F48ED0FC0A2481507A56C150F007C168000
-7E151F003E16006C153E6C6C5CD807E0495AD801F8EB07E0D8007FEB3F8090261FFFFEC7
-FC010113E02C427DAC31>103 D<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCADEA01FC
-12FFA3120712031201B3B0487EB512F8A315437DC21C>105 D<EA01FC12FFA312071203
-1201B3B3B3A5487EB512F8A315457DC41C>108 D<3901FC01FE00FF903807FFC091381E
-07F091383801F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8
-486CECFF80B5D8F83F13FEA32F2C7DAB36>110 D<EC7F80903803FFF090380FC0FC9038
-3E001F496D7E496D7E48486D7E48486D7E48486D7E000F81A24848147E003F157FA290C8
-7E481680A44816C0AA6C1680A26D147F003F1600A2001F157E6D14FE000F5D6D13010007
-5D6C6C495A6C6C495A6C6C495A013E49C7FC90381FC0FE903807FFF89038007F802A2E7D
-AC31>I<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0FF3803F9C000015B13FBEC00
-7E153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26>114
-D<90383FE0183901FFFC383907E01F78390F0003F8001E1301481300007C1478127800F8
-1438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF6C14C06C14E0C614F0
-011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C143C6C147C15786C14
-F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7DAC26>I<1306A5130E
-A4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4150CAA017E131C
-017F1318A26D133890381F8030ECC070903807E0E0903801FFC09038007F001E3E7EBC26
->I<D801FC147F00FFEC3FFFA300071401000380000181B3A85EA35DA212006D5B017E90
-38077F80017F010E13C06D011C13FE90380FC078903803FFF09026007F8013002F2D7DAB
-36>I<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E1200160C017F5CA2
-80013F5CA26E1370011F146080010F5CA2ECF00101075CA26D6C48C7FCA26E5A01011306
-A26D6C5AA214FF6E5AA215B8EC3FB015F06E5AA36E5AA26E5AA36EC8FC2E2C7EAA33>I<
-B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E0000150C6D141C6D1418A2
-6E1338013F1430A26D6C5BA26E13E0010F5CA26D6C485AA2ECF803010391C7FCA2903801
-FC06A2ECFE0E0100130CA2EC7F18A215B8EC3FB0A2EC1FE0A36E5AA26E5AA36EC8FCA214
-06A35CA25CA2123C007E5BB4FC5CA25CEAFE01387C0380D87007C9FCEA3C1EEA0FFCEA03
-F02E3F7EAA33>121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm ecbx1200 12 47
-/Fm 47 123 df<0118140C017C143E01FC147E48485C4848495A495C4848495A4848495A
-001F140F90C75B003E4AC7FCA2003C141E007C143E0078143CA200F8147CA2481478D8F1
-F014F8D8F7FCEB7BFEB46CEB7FFF6D1580028014C0A36C80A36C806C496C13806C486D13
-006C486D5AD801F0EB00F82A2283C427>16 D<D807C0EB03E0D81FF0EB0FF8486C497E48
-6C497E486C497E6D1580A3028014C0A36C806C80D81FF7EB0FFBD807C7EB03E3D80007EB
-0003010F1407A291C71380A249140F011E1500013E5CA249143E01FC147E49147C48485C
-4848495A000714034848495A4848495A90C75B000C0206C7FC2A2281C427>I<ED0FFF4A
-B512C0020F14F0027F80903A01FFF803FC499038C000FE010FEB00034948497E49485B5C
-495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280B9FCA5C69038E00003B3B0
-007FD9FFC1B6FCA538467EC53E>28 D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA
-3FF8EA1FF0EA07C00F0F788E1F>46 D<EC3FF849B5FC010F14E0013F14F890397FF01FFC
-9039FFC007FE4890380001FF48486D1380000716C049147F000F16E049143F001F16F0A2
-003F16F8A249141F007F16FCA600FF16FEB3A3007F16FCA56C6CEC3FF8A3001F16F0A200
-0F16E06D147F000716C06D14FF6C6C4913806C6D4813006C6D485A90397FF01FFC6DB55A
-010F14E0010314809026003FF8C7FC2F427CC038>48 D<EC03C01407141F147FEB03FF13
-3FB6FCA413C3EA0003B3B3ADB712FCA5264177C038>I<ECFFE0010F13FE013F6D7E90B6
-12E0000315F82607FC0313FE3A0FE0007FFFD81F806D138048C7000F13C0488001C015E0
-01F07F00FF6E13F07F17F881A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300
-A2ED1FFC4B5A5E4B5A4B5A4A90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A49
-4814F8D907E014F0495A495A49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17
-C0A42D417BC038>I<ECFFF0010713FF011F14C0017F14F049C66C7ED803F8EB3FFED807
-E06D7E81D80FF86D138013FE001F16C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A
-4B5A4A5B020F1380902607FFFEC7FC15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F
-13C017E0A26F13F0A217F8A3EA0FC0EA3FF0487EA2487EA217F0A25D17E06C5A494913C0
-5BD83F80491380D81FF0491300D80FFEEBFFFE6CB612F800015D6C6C14C0011F49C7FC01
-0113E02D427BC038>I<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715
-C7EC0F87EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B
-485A485A485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A53141
-7DC038>I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8
-FC01C0C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E
-01F06D13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317
-F05B5D6C4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEB
-FFFC6CB612F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0
-027F13FC49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE04849
-5A5A1400485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381F
-FF8000FF017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C0
-5B6F13E0A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D
-4913806C018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC903800
-3FF02D427BC038>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A248168000
-7EC8EA3F00007C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A
-5A14035D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A
-6D5A2F447AC238>I<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07
-C0C7FCAEEA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F2C78AB
-1F>58 D<1A60F101F01907191FF17FC0953801FF00F007FCF01FF0F07FC04D48C7FCEF07
-FCEF3FF0EFFFC0040390C8FCEE0FFCEE3FE0EEFF80DB03FEC9FCED0FF8ED3FE0EDFF80DA
-07FECAFCEC1FF8EC7FE0903801FF80D907FCCBFCEB1FF0EB7FC04848CCFCEA07FCEA1FF0
-EA7FC048CDFCA2EA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FC903801FF809038
-007FE0EC1FF8EC07FE913800FF80ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FFCEE03
-FF040013C0EF3FF0EF07FCEF01FF9438007FC0F01FF0F007FCF001FF9538007FC0F11FF0
-19071901F10060444277B957>60 D<126012F812FE6C7EEA3FE0EA0FF8EA03FEC66C7EEB
-3FE0EB0FF8EB03FE903800FFC0EC3FF0EC0FFCEC03FF9138007FC0ED1FF0ED07FCED01FF
-9238007FC0EE1FF0EE07FE933801FF809338007FE0EF1FF8EF03FE943800FF80F03FE0F0
-0FF8F003FE953800FF80F13FE0F10FF0A2F13FE0F1FF80953803FE00F00FF8F03FE0F0FF
-80DD03FEC7FCEF1FF8EF7FE0933801FF80DC07FEC8FCEE1FF0EE7FC04B48C9FCED07FCED
-1FF0ED7FC0DA03FFCAFCEC0FFCEC3FF0ECFFC0D903FECBFCEB0FF8EB3FE0EBFF80D803FE
-CCFCEA0FF8EA3FE0EAFF8048CDFC12F81260444277B957>62 D<923803FFF0037FEBFF80
-0203B612F0020F15FC913A3FFC000FFFDAFFC0010013C0D903FEC8EA1FF0D907F0ED03F8
-D91FC0ED00FE4948167F017ECAEA1F8049717E4848717E49DAFF8013034848010F01F06D
-7E4848013F01FC6D7E92B6FC4848489026C07F80137C49489026001FC0133C484948D907
-E0133E001E49486D6C131E003E49480101141F023F913800FFE0003C4A82007C017F1880
-007819074A5AA300F81AC04848491603AB6C6C7F12781B801A076E7E127C003C133F003E
-6E1700021F4A5C001E6D6C5B001F6D6C49EBF01E6C6D6C011F143E6D6CD9C07F6D5A6C6C
-6C90B5383FFFF8033FD9FC0F5B6C6C010FD9F0035B6C6C0100903980007F806D91CBFC6C
-7E137E6D7E6D6CEF7FC0D907F0EE03FFD903FE043F1300902600FFC0913803FFF8DA3FFC
-49B512C0020FB748C7FC020316E0DA007F02FCC8FC030349C9FC4A477AC557>64
-D<EE1F80A24C7EA24C7EA34C7EA24B7FA34B7FA24B7FA34B7F169F031F80161F82033F80
-ED3E07037E80157C8203FC804B7E02018115F0820203814B137F0207815D173F020F814B
-7F021F8292C77EA24A82023E80027E82027FB7FCA291B87EA2498302F0C8FCA20103834A
-157F0107834A153FA249488284011F8491C97E4984133E017E82B6020FB612F0A54C457C
-C455>I<B9FC18F018FE727E19E026003FFCC700077F05017F716C7E727E727EA2721380
-A37213C0A74E1380A24E1300A24E5A4E5A4E5A4D5B05075B94B5128091B700FCC7FC18F0
-18FF19E002FCC7000113F8716C7EF01FFE727E7213801AC07213E0A27213F0A31AF8A71A
-F0A2601AE0604E13C0604E138095B5120005075BBA12F86119C04EC7FC18E045447CC350
->I<DCFFF01470031F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F49
-49C7EA3F9F010701F0EC0FFF4901C0804990C87E4948814948814948167F4849163F4849
-161F5A4A160F485B19074890CAFC19035A5BA2007F1801A34994C7FC12FFAE127F7F1AF0
-A2123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6DEE0F806C6DEE1F006D6C5E6D
-6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE06D903AFFF001FF80023F90B6
-C7FC020715FC020115F0DA001F1480030001F8C8FC44467AC451>I<B9FC18F018FE727E
-19E026003FFEC7001F13F805017F9438003FFF060F7F727F727F727F84737E737EA2737E
-A2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B006162193F624F5A19FF624E5B06
-075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18F095C9FC4B447CC356>I<B7
-12E0A5D8001F90C7FCB3B3B3A4B712E0A523447DC32A>73 D<B500FE067FB512806E95B6
-FCA26F5EA2D8003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F1FA26E6C161EA2
-6E6C163CA36E6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6DEC0780A26F6CEC
-0F00A26F6C141EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485AA26F6D485AA370
-6C48C7FCA293383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2705BA2B6057FB6
-128071C7FCA2173E171C61447CC36A>77 D<923807FFC092B512FE0207ECFFC0021F15F0
-91267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E4948
-6F7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F049
-82003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19
-F0A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D
-6C4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C002
-004AC8FC030713C047467AC454>79 D<DAFFE0131C010701FE133C013F9038FF807C90B6
-EAE0FC4815F9489038801FFF3907FC00014848EB007F4848143F4848140F491407007F15
-035B1601160012FF177CA27FA26D153C7F7F6D92C7FC6C7EEBFFE014FE6CEBFFF015FF6C
-15E016FC6C816C6F7E6C826C826C6C81011F810107811300020F80140003077FED007F82
-040F1380828212F082A282A27EA218007EA26C5D6C5E6D14036D5D6D140701F84A5A01FF
-EC3FF002F8EBFFE0486CB65AD8FC1F92C7FCD8F80714FC48C614F0480107138031467AC4
-3E>83 D<007FBA12E0BB12F0A46C19E04406776757>95 D<903801FFE0011F13FE017F6D
-7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F0
-90C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0481380381FFE00485A5B
-127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF8
-6CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 D<EB7FC0B5FCA512037EB1ED0FF892
-B57E02C314E002CF14F89139DFC03FFC9139FF000FFE02FCEB03FF4A6D13804A15C04A6D
-13E05CEF7FF0A218F8173FA318FCAC18F8A2177F18F0A3EFFFE06E15C06E5B6E49138002
-7C491300496C495A903AFC1FC07FFC496CB512F0D9F00314C049C691C7FCC8EA1FF03646
-7DC43E>I<EC3FFC49B512C0010F14F0013F14FC90397FF003FE9039FFC001FF0003495A
-48494813805B120F485AA2485A6F1300007F6E5AED00784991C7FCA212FFAC6C7EA3123F
-6DEC03C0A26C6C1407000F16806D140F6C6DEB1F006C6D133E6C01F05B3A007FFC03F86D
-B55A010F14C0010391C7FC9038003FF82A2F7CAD32>I<EE03FEED07FFA5ED001F160FB1
-EC3FE0903803FFFC010FEBFF8F013F14CF9039FFF807FF48EBC00148903880007F4890C7
-123F4848141F49140F121F485AA3127F5BA212FFAC127FA37F123FA26C6C141FA26C6C14
-3F0007157F6C6C91B5FC6CD9C00314FC6C9038F01FEF6DB5128F011FEBFE0F010713F890
-26007FC0EBF80036467CC43E>I<EC3FF80103B57E010F14E0013F8090397FF83FF89039
-FFC007FC48496C7E48496C7E48486D1380485A001FED7FC05B003FED3FE0A2127F5B17F0
-161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F17F06C7E16016C6C15E06C6C14036C
-6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE011FB55A010714F0010114C0902600
-1FFEC7FC2C2F7DAD33>I<EDFF80020F13E0027F13F049B512F849EB8FFC90390FFE0FFE
-90381FFC1F14F8133FEB7FF0A2ED0FFCEBFFE0ED03F0ED00C01600ABB612F8A5C601E0C7
-FCB3B0007FEBFFE0A527467DC522>I<DAFFE0137E010F9039FE03FF80013FEBFF8F90B8
-12C048D9C07F133F489038001FF84848EB0FFC4848903907FE1F80001F9238FF0F00496D
-90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C495A6C6C495A6C9038C07FF04890B5
-5A1680D8078F49C8FC018013E0000F90CAFCA47F7F7F90B612C016FC6CEDFF8017E06C82
-6C16FC7E000382000F82D81FF0C77ED83FC014074848020113808248C9FC177FA46D15FF
-007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B07FFC001FFF0000190B612C06C6C92
-C7FC010F14F8D9007F90C8FC32427DAC38>I<EB7FC0B5FCA512037EB1ED07FE92383FFF
-8092B512E002C114F89139C7F03FFC9138CF801F9139DF000FFE14DE14FC4A6D7E5CA25C
-A35CB3A7B60083B512FEA537457CC43E>I<137C48B4FC4813804813C0A24813E0A56C13
-C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520>
-I<EB7FC0B5FCA512037EB3B3B3A3B61280A519457CC420>108 D<90277F8007FEEC0FFC
-B590263FFFC090387FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D
-8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7E
-A24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB59038
-3FFF8092B512E0028114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02
-F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>I<EC1FFC49B512C0010714F001
-1F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA3FE000078248486E7E49140F00
-1F82A2003F82491407007F82A400FF1780AA007F1700A46C6C4A5AA2001F5E6D141F000F
-5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7FC6DB55A010F14F8010114C090
-26001FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E02C314E002CF14F89139DFC03F
-FC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF
-3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07F
-FC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>I<DA3FE013
-1E902603FFFC133E010F01FF137E013F1480903AFFF80FE0FE489038E003F148EBC00148
-90388000FB4890C7127F49143F001F151F485A160F5B127FA3485AAC6C7EA46C7EA26C6C
-141F163F6C6C147F6C15FF6C6D5A6C9038E003EF6C9038F01FCF6DB5128F011FEBFE0F01
-0313F89038007FC091C7FCAD0307B512FCA536407CAC3B>I<90387F807FB53881FFE002
-8313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED
-01E092C7FCA35CB3A5B612E0A5272D7DAC2E>I<90391FFC038090B51287000314FF120F
-381FF003383FC00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387F
-FFF014FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000
-F0143FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A
-00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>I<EB01E0A51303A41307A2130FA2131F
-A2133F137F13FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C013
-7F150790393FF80F8090391FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C>I<
-D97FC049B4FCB50103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F7
-13FE9138F807E76DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E>I<B690
-3803FFFCA5000101E09038003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303
-010F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8
-F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B>
-I<B500FE90383FFFF0A5C601F0903803E0006D6C495A6D6C495A011F4AC7FC6E5B6D6C13
-7E6DEB807C6D6D5A6DEBC1F0EDE3E06DEBF7C06EB45A806E90C8FC5D6E7E6E7F6E7FA24A
-7F4A7F8291381F3FFCEC3E1F027C7F4A6C7E49486C7F01036D7F49487E02C08049486C7F
-49C76C7E013E6E7E017E141FB500E090B512FCA5362C7EAB3B>120
-D<001FB71280A49026FC001F130001E0495A5B49495A90C7485A48495B123E4A5B4A5B00
-3C495BA24A90C7FC4A5A4A5AC7FC4A5A495B495BA2495B499038800780491300A2495A49
-48130F49481400A2485B48495B485BA248495B4890C75A48485C15034848EB1FFEB7FCA4
-292C7DAB32>122 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn ecrm1728 17.28 8
-/Fn 8 117 df<B912F018FF19E019F8C601FCC8EA7FFED93FF892380FFF80011F04017F
-9538007FF0F11FF8737EF103FE737E737F747E747E747E1A0F87747E1A0387747EA27413
-80A2F37FC0A21CE01B3FA21CF0A21B1F1CF8A31CFCA21B0FA41CFEAF1CFCA51B1F1CF8A4
-F33FF0A21CE0A21B7F1CC01BFF1C80A2501300A2505A505AA2505A505A505A505A1AFF4F
-5B4F90C7FCF107FCF11FF8F17FF0953801FFC0013F04075BD9FFFCDB7FFEC8FCBA12F819
-E096C9FC18F0576278E167>68 D<BB12FCA4C601FCC8120FD93FF89238007FFE011F171F
-190719031900A21A7E1A3EA21A1EA21A1F86A486A6F20380A318E0A297C7FCA61701A417
-031707170F171F17FF91B7FCA402F8C7FC171F170F170717031701A41700A895C9FCB3A5
-80133F90B57EB712E0A4496278E158>70 D<EC3FE0903803FFFE010F6D7E90393FC03FE0
-90397C000FF801F0EB03FC48486D7E48486D7E48486E7E48C86C7E7F01F06E7E487E6D6E
-7EA3707EA36C5AEA03E0C9FCA6167FED7FFF020FB5FC91387FF807903801FF80903807FC
-00EB1FF0EB7FC0495AD803FEC7FC485A120F5B485A485AA24848EE01C0A312FF5BA2160F
-A3161F6D141B007F153B16736D17806C6C9138E1FC03001FEC03C16C6C903A0780FE0700
-D807FE49486C5A2701FF807CEB7FFE6C6CB4486D5A011F01E06D5A010390C7EA07E03A41
-79BF43>97 D<ED1FE0EDFFF8020313FE91380FF03F91391FC01F8091383F807F91397F00
-FFC014FE1301495A5C0107EC7F80A24948EB1E0093C7FCA2495AB3A5B712E0A426001FE0
-C8FCB3B3B0497EEB7FFC003FB512FEA42A657DE429>102 D<1378EA01FE487E487FA66C
-90C7FC6C5AEA007890C8FCB3A2EB0780EA0FFFB5FCA41203C6FCA2137FB3B3AC497E487F
-B61280A4195F7BDE25>105 D<010FEB07F8D80FFFEB1FFEB590387FFF809238F81FC091
-3801E03F913903C07FE00003EB0780C6EB0F00140E6D5A0218EB3FC00238EB1F800230EB
-0600027090C7FCA2146014E0A25CA55CB3B0497E4813F0B612F8A42B3F7BBE34>114
-D<9138FFC003010FEBF807017FEBFE0F3A01FF003F9FD803F0EB07DF48486DB4FCD80F80
-1300001F8148C8FC003E81007E81127C00FC81A4827EA27E7F6C7E6D91C7FC13F8EA3FFE
-381FFFE06C13FF15F0000314FE6C6E7E6C6C14E0011F14F801078001008002077FDA003F
-13801507030113C0ED007F00E0ED3FE0161F17F06C150F1607A36C1503A37EA26C16E016
-077E17C06D140F6D15806D141FD8FDF0EC3F00D8F8F8147E017C495A3AF01F801FF06DB5
-12C0D8E00391C7FC39C0007FF02C417CBF35>I<1470A714F0A51301A31303A21307A213
-0FA2131F133F137F13FF1203000F90B6FCB8FCA326000FF0C8FCB3AEEE01C0AE6D6CEB03
-80A316076D6C14005E6D6C130E6D6C131E6E6C5A91383FE0F86EB45A020713C0020090C7
-FC2A597ED734>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo ecbx1728 17.28 18
-/Fo 18 117 df<BB7E1AFCF2FFC01BF01BFED8000191C8001F6D7E070014E0081F7F0807
-13FC08017F747F093F7F757F757F757F757F757F757FA2767E1E80881EC0881EE0881EF0
-A2881EF8A31EFC88A31EFEA61EFFB01EFEA61EFCA2641EF8A31EF064A21EE0641EC0641E
-80521300A2525A515B515BA2515B515B093F5B515B504848C7FC08075B081F5B97B512E0
-070F1480BC48C8FC1BF81BC008FCC9FC1A8068627BE177>68 D<942603FFF8151C94B66C
-143C040F03F0147C047F03FC14FC0303B81301030FDAC00113C0033F01F8C7381FF00392
-B500C0913807F807020349C83801FE0F020F01F89238007F1F4A01E0EE3FBF4A49EE0FFF
-91B5CA7E494983494983494983495B4949187F4B183F491A1F495B90B5CC120FA2484919
-075A4A19035A4A19015AA24A19005AA348491A7CA35A9AC8FCA35CA2B5FCB07EA26E043F
-B81280A47E96C7000701FCC7FCA26C7FA37E80A27E807E807E6C7FA26D7F6D7F7F816D7F
-6D6D5F6D7F6D6D5F6D6D7E023F6D5E6E01F05E6E6DEEFE7F020301FF923801FC3F020002
-C0913807F80F033F01FC91381FF007030F903BFFE001FFC001030391B6EA8000DB007F4B
-C7123C040F03F8140C040003C091C8FC050301F8CBFC696677E37A>71
-D<BA12E0F1FF801AF81AFF1BC0D8000191C7000114F0DE000F13FC070313FF070080083F
-7F747F747F747F747FA2747F88A28986A389A865A35091C8FCA26462646462505B505B50
-138097B5C9FC070313FC070F5B4EB512C093B8CAFC1AF81AC01AF893C7000713FE06006D
-7E073F7F7313F007077F737F87737F85888688A2747FAA88A91F707614F8A286A2746D13
-011FF086746D13037614E0B800FE6EED07C0746CEBC00F759038F07F80090F90B5120009
-035CCF6C13F80A0313E06D647BE173>82 D<001FBD12F0A59126F8000191C7123F4801C0
-060713F849C71700491A7F01F01A1F491A0F491A07A2491A03A290C81801A2007EF300FC
-A4007C1C7CA7481C3EA5C91900B3B3B3A5023FB912F8A55F617AE06C>84
-D<913803FFF0027F13FF0103B612E0010F15F890263FFC0013FED97FC090381FFF8049C7
-6C7F4801C06D7F486D6D7F6E6D7F48836E7F84177F84A36C496E7FA26C5B6C5B013FC8FC
-90C9FCA75F0307B6FC4AB7FC141F91B5EAF03F0103EBFE00010F13F0013F1380D9FFFEC7
-FC485B485B485B485B485B485BA24890C8FC1A7CA2485AA35FA394B5FC7F6C5D6EEB03DF
-6CDB07CFEBC0F86C6DEB0F8F6C6DD91F07EBF3F06C01F8017E14FF6C9027FE01FC0314E0
-C690B5D8F00114C0013F9126C0007F1380010791C7383FFE009026003FF8EC07F846437B
-C14D>97 D<903807FF80B6FCA5C6FC7F7FB3A9933801FFE0041F13FE047FEBFFC00381B6
-12F0922687FC0113FC923A9FE0003FFEDBBF8090380FFF8003FEC76C7F4B6E7F4B6E7F4B
-6E7F4B824B157F4B82737EA21B80851BC0A31BE085A41BF0AE1BE0A44F13C0A31B80A24F
-1300A262197F6F5E6F4B5A4E5B6F4A5BDAFCF84A5BDAF87E4A5B4A6C4A90C7FC9126E01F
-C0EB7FFC913BC00FF803FFF8DA8003B612E091C71580013E023F01FCC8FC90C800031380
-4C657CE356>I<ED1FFF4AB512F8020F14FF027F15C0902701FFF80013F04901E0EB0FF8
-010F0180EB03FC4990C7EA0FFE49484A7E49485C4948168048495C5A5C5A485BA2487013
-005C48705A715AEF03F04893C8FC91CBFCA4B5FCAE7EA280A27EA36C7FF003E07E6E1507
-6C18C06E150F6C18806C6D151F6C6DED3F006D6C157E6D6C15FE6D6D495A6D6D495A6D01
-F0EB0FE0010101FEEB7FC06D6CB6C7FC021F14FC020314E09126001FFEC8FC3B437BC145
->I<ED3FFE0203B512E0021F14FC027F14FF902701FFF80F13C00107D9C0037F4990C77F
-49486E7E49486E7E49486E7E49486E7E5A48496E13805A4A16C0488219E0485B834818F0
-A34890C8FCA27113F8A3B5FCA391B8FCA491CBFCA67EA4807EA27E19F8806C17016C18F0
-806C17036C6DED07E06E16C06C170F6D6CED1F806D6CED3F006D6C6C14FE01076DEB03FC
-6D01F8EB0FF8010001FFEB7FE0023F90B51280020F4AC7FC020114F8DA000F13803D437C
-C146>101 D<EEFFE0031F13FC92B6FC02031580020F9038E03FC04A903800FFE091267F
-FE0113F04A485A49494813F84913F04913E0A25B15C05B7013F04913807013E09338007F
-80EF1E0094C7FCB1B8FCA5D8003F0180C8FCB3B3B2B712F8A535657CE42F>I<F13F8091
-2601FFF0903801FFE0021F01FF010713F091B6D8E01F13F801039238F87FCF010F903BC0
-7FFEFC0FFC903B1FFE000FFFF0D97FFC6DEBE01F49486D140F48496D13F01AF848496DEB
-F807489438FC01E096C7FC48496E7EA44883A96C5FA46C6D4A5AA26C5F6C6D495BA26C6D
-495B6D6C495B6D6C4990C8FC903A7FFFC07FFE017B90B512F801F015E0021F91C9FC0001
-010113F049CCFC1203A27FA37FA27F7F6D7E91B612FCEFFFE06C17FCF0FF806C18E0856D
-17FC6D836D837F017F188048BA12C000070180C712074848C96C13E04848160F48481603
-4982007F19F084485A197FA56D17FF007F19E0A26D5E6C6C4C13C0001F19806D5E6C6C4C
-1300000301C0ED3FFC6C01F0EDFFF826007FFC020313E090261FFFE0017F1380010790B6
-48C7FC010116F8D9001F1580DA007F01E0C8FC46607CC14D>I<EB0FE0EB3FF8497E497E
-487FA24880A76C91C7FCA26C5B6D5A6D5AEB0FE090C9FCB1903807FF80007FB5FCA5C6FC
-7F7FB3B3B0B712C0A522657CE42A>105 D<903807FF80B6FCA5C6FC7F7FB3B3B3B3AFB7
-12E0A523647CE32A>108 D<D90FFFEC7FF8B60103B5FC040F14E0043F80DC7F0113FC92
-2601F8007FC6DA03E06D7E6D49487F6D49488193C77E031E825D153803788003708215F0
-5DA35DA35DB3B3A2B7D8E03FB612F8A54D417BC056>110 D<92381FFF804AB512F8020F
-14FF023F15C09126FFFC0313F001039039E0007FFC490180EB1FFED91FFEC73807FF8049
-486E7F49486E7F49486E7F48496F7EA248496F7E4884A248496F7EA2481980A24819C091
-C97EA24819E0A5B518F0AD6C19E0A46C6D4B13C0A36C1980A26C6D4B1300A26C606E157F
-6C606C6D4B5A6C606D6C4A5B6D6C4A5B6D6C4A5B6D6C6C011F90C7FC010301E0EB7FFC6D
-9039FC03FFF86D6CB612E0020F92C8FC020114F8DA001F138044437CC14D>I<903B07FF
-8001FFE0B6011F13FE047FEBFFC00381B612F0922687FC0313FC923A9FE0007FFEC6DABF
-806D6C7E6D01FEC7000F7F6D496E7F4B824B6E7F4B6E7F4B804B82737EA21B80851BC0A2
-851BE0A4851BF0AE4F13E0A41BC061A21B80A24F1300A24F5AA26F4A5B6F4A5B626F4A5B
-6F4A5B03FE4A5B03BF027F90C7FCDB9FC0EBFFFC92268FF8075B0383B612E00380158004
-3F01FCC8FC0403138093CBFCB3A4B712E0A54C5D7CC056>I<D90FFFEB07F8B6EB3FFF4C
-13804BB512E0923903F83FF0923907E07FF8C691380F80FF6D020113FC6D131E153E153C
-1578A21570DBF00013F8EF7FF04BEB3FE0EF0F8094C7FC5DA65DB3B1B712F8A536417DC0
-3E>114 D<DA7FFC131C0107B5EAC03C011FECF0FC90B612FD489038C003FFD807FEC712
-7FD80FF8143F49140F4848140748481403A248481401A2160012FFA26D157CA27F7F7F6D
-92C7FCEBFF806C13F0ECFFC015FE6CECFFC016F86C15FE6C6F7E6C826C826C826C82013F
-81010F81010181EB003F02011580EC000F1500041F13C000F88182826C8182A26C167FA3
-7E18807F17FF6D16007F6D4A5A7F6D4A5A6DEC0FF86D6C495A3BFE1FF001FFE0486CB612
-80D8F8034AC7FC48C614F048010F90C8FC32437BC13D>I<EC07C0A6140FA5141FA3143F
-A2147FA214FF5BA25B5B5B5B137F48B5FC000F91B512F8B8FCA4D8001F01C0C7FCB3B017
-1FAD6D153E81A26D157C816D15F86D7F6D9038FC01F091397FFF07E06EEBFFC0020F1480
-0203EBFE009138003FF8305C7DDA3C>I E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 290 639 a Fo(Genealogical)56 b(Represen)l(tation)e(of)f(T)-13
-b(rees)52 b(in)g(Databases)1686 822 y Fn(First)46 b(Draft)1247
-1063 y Fm(Miguel)36 b(Sofer)i(<mig@utdt.edu>)1359 1179
-y Fl(Univ)m(ersidad)33 b(T)-8 b(orcuato)33 b(Di)f(T)-8
-b(ella)1728 1295 y(Buenos)33 b(Aires)1797 1411 y(Argen)m(tina)1746
-1606 y(Ma)m(y)h(6,)e(2000)1839 1905 y Fk(Abstract)441
-2035 y Fj(blah)25 b(blah)h(.)13 b(.)g(.)118 2310 y Fi(1)131
-b(In)l(tro)t(duction)118 2491 y Fh(T)-7 b(rees)28 b(are)h(a)g(v)n(ery)f
-(frequen)n(t)h(data)f(structure.)41 b(They)30 b(are)e(the)h(natural)g
-(represen)n(tation)e(for)i(instance)g(for)f(organiza-)118
-2591 y(tional)f(c)n(harts,)g(threaded)g(discussion)g(groups,)f(some)h
-(bills)g(of)h(materials,)e(.)14 b(.)g(.)243 2691 y(A)n(t)28
-b(least)f(t)n(w)n(o)f(alternativ)n(e)h(represen)n(tations)e(for)i
-(trees)g(in)h(RDBMs)g(are)e(kno)n(wn)h(and)h(used:)220
-2857 y(1.)41 b Fg(P)m(oin)m(ters:)k Fh(a)31 b(\034eld)h(in)h(the)f(c)n
-(hild)g(record)e(references)h(the)h(paren)n(t)f(no)r(de.)50
-b(This)32 b(seems)g(to)f(b)r(e)i(the)f(canonical)326
-2956 y(represen)n(tation.)38 b(Some)29 b(DB)g(engines)f(pro)n(vide)g
-(sp)r(ecial)g(SQL)g(extensions)g(to)h(simplify)g(tree)g(searc)n(hes;)e
-(Oracle)326 3056 y(tree)d(extensions)g(are)g(an)h(example)f(\(see)h
-(for)f(instance)g([1]\);)i(DB2's)f(WITH)g(can)f(b)r(e)i(used)e(for)h
-(this)g(purp)r(ose)f(to)r(o)326 3156 y(\(see)j([3],)g(pp)h(139-162\).)
-220 3322 y(2.)41 b Fg(Nested)35 b(Sets:)43 b Fh(t)n(w)n(o)30
-b(n)n(umeric)h(\034elds)g(in)g(ev)n(ery)f(no)r(de)h(record)f(co)r(de)h
-(the)g(tree)g(structure.)47 b(I)31 b(can't)g(pro)n(vide)f(a)326
-3421 y(b)r(etter)e(or)e(briefer)h(description)g(of)h(this)g(metho)r(d)g
-(than)f(the)h(four)f(articles)g([2].)118 3587 y(These)g(t)n(w)n(o)g
-(metho)r(ds)h(o\033er)f(di\033eren)n(t)h(adv)-5 b(an)n(tages)25
-b(and)j(disadv)-5 b(an)n(tages:)243 3753 y Ff(\017)41
-b Fh(P)n(oin)n(ters)30 b(are)g(extremely)g(e\036cien)n(t)h(for)f(no)r
-(de)h(insertion)f(and/or)g(deletion,)h(but)h(require)e(recursiv)n(e)f
-(table)i(ac-)326 3853 y(cesses)e(to)h(searc)n(h)f(the)h(tree)g(\(I)h
-(do)f(not)g(kno)n(w)f(the)i(implemen)n(tation)f(details)g(of)g(the)h
-(Oracle)e(tree)g(extensions,)326 3953 y(whic)n(h)e(as)g(far)g(as)g(I)g
-(kno)n(w)g(ma)n(y)g(solv)n(e)f(this)i(problem)f(in)n(ternally;)g(they)g
-(de\034nitely)h(solv)n(e)f(it)g(for)g(the)h(end)g(user\).)243
-4119 y Ff(\017)41 b Fh(Nested)30 b(sets)g(are)f(v)n(ery)f(e\036cien)n
-(t)i(for)g(tree)f(searc)n(hes,)g(but)i(are)e(rather)f(exp)r(ensiv)n(e)i
-(for)f(no)r(de)h(insertion)f(and/or)326 4218 y(deletion:)37
-b(they)27 b(require)g(up)r(dating)g(p)r(oten)n(tially)h(man)n(y)f(no)r
-(des.)243 4384 y(W)-7 b(e)30 b(prop)r(ose)f(here)h(a)g(di\033eren)n(t)h
-(represen)n(tation,)e(based)g(on)i(no)r(de)f(iden)n(ti\034ers)g(whic)n
-(h)g(are)f(\020genealogical)f(iden)n(ti-)118 4484 y(\034ers\021:)44
-b(they)32 b(con)n(tain)f(the)h(complete)f(genealogy)f(of)h(the)h(no)r
-(de,)h(i.e.,)g(the)f(list)g(of)g(ancestors)d(up)j(to)g(the)g(ro)r(ot)f
-(of)g(the)118 4584 y(tree.)243 4683 y(This)j(allo)n(ws)f(to)i(replace)e
-(man)n(y)h(searc)n(hes)f(in)h(database)g(tables)g(with)h(string)f(op)r
-(erations)f(on)h(the)h(index.)58 b(The)118 4783 y(result,)24
-b(as)f(explained)h(in)g(Section)g(3)f(is)h(that)g(tree)f(searc)n(hes)f
-(pro)r(ceed)h(at)h(\020nested)f(sets\021)30 b(sp)r(eed,)25
-b(while)f(no)r(de)g(insertions)118 4882 y(and)k(deletions)f(are)f(as)h
-(fast)h(as)f(with)h(p)r(oin)n(ters.)243 4982 y(The)i(ob)n(vious)f(do)n
-(wnside)h(of)h(the)g(metho)r(d)g(is)f(that)h(the)g(primary)f(k)n(ey)f
-(in)i(the)g(tree)f(needs)h(to)f(b)r(e)h(a)g(v)-5 b(ariable)29
-b(size)118 5082 y(text)j(\034eld,)h(and)f(that)g(the)g(iden)n
-(ti\034ers)f(ma)n(y)g(b)r(e)i(extremelly)e(long)g(for)g(deep)h(trees.)
-49 b(W)-7 b(e)32 b(will)g(pro)n(vide)e(estimates)i(of)118
-5181 y(the)c(size)f(required)g(as)g(a)g(function)h(of)g(the)f
-(magnitude)h(of)f(the)h(tree.)1987 5653 y(1)p eop
-%%Page: 2 2
-2 1 bop 118 291 a Fi(2)131 b(Genealogical)45 b(iden)l(ti\034ers)g(for)f
-(trees)118 489 y Fm(2.1)112 b(De\034nition)118 642 y
-Fh(W)-7 b(e)28 b(de\034ne)g Fe(gene)l(alo)l(gic)l(al)k(identi\034ers)j
-Fh(recursiv)n(ely)25 b(as)i(follo)n(ws:)326 808 y Fg(De\034nition:)59
-b Fe(The)42 b(gene)l(alo)l(gic)l(al)h(identi\034er)f(\(gID\))e(of)i(a)f
-(no)l(de)h(is)f(obtaine)l(d)h(by)g(app)l(ending)g(a)f(child)326
-908 y(identi\034er)30 b(to)g(the)g(gene)l(alo)l(gic)l(al)h
-(identi\034er)g(of)f(the)g(p)l(ar)l(ent)f(no)l(de.)243
-1074 y Fh(Remark)40 b(that)h(genealogical)e(iden)n(ti\034ers)i(are)f
-(rather)g(w)n(ell)h(kno)n(wn)f(and)h(used;)48 b(common)41
-b(examples)f(are)g(the)118 1174 y(\020path+\034le-name\021)33
-b(in)28 b(a)f(computer)g(\034le)h(system)f(and)h(the)f(URLs)h(within)g
-(a)f(WWW.)243 1273 y(The)d(name)g(\020genealogical)e(iden)n
-(ti\034er\021)30 b(is)24 b(suggested)g(b)n(y)g(the)g(fact)h(that)f(the)
-h(v)-5 b(alue)24 b(of)g(the)h(iden)n(ti\034er)f(con)n(tains)f(the)118
-1373 y(complete)30 b(genealogy)d(of)j(the)g(no)r(de:)41
-b(it)30 b(con)n(tains)e(as)h(a)h(substring)f(the)h(gID)f(of)h(its)g
-(father,)g(whic)n(h)f(in)h(turn)g(con)n(tains)118 1472
-y(as)d(a)g(substring)g(the)h(gID)g(of)f(the)h(grandfather,)e(.)14
-b(.)g(.)243 1572 y(The)27 b(ro)r(ot)g(no)r(de)h(of)f(the)h(tree)f(has)g
-(a)h(gID)f(with)h(v)-5 b(alue)28 b(\021)34 b(\(the)28
-b(empt)n(y)g(string\),)f(as)g(it)h(has)f(no)g(paren)n(t.)118
-1804 y Fm(2.2)112 b(Child)36 b(iden)m(ti\034ers)118 1958
-y Fh(The)26 b(ob)n(vious)e(c)n(hild)i(iden)n(ti\034er)g(is)f(a)h
-(zero-based)d(coun)n(ter:)35 b(iden)n(tify)26 b(the)h(c)n(hild)e(b)n(y)
-h(the)g(n)n(um)n(b)r(er)f(of)h(older)f(brethren)g(it)118
-2057 y(has.)243 2157 y(W)-7 b(e)25 b(could)f(represen)n(t)g(the)h(coun)
-n(ter)f(in)h(base)f(10;)h(this)g(ho)n(w)n(ev)n(er)e(is)i(extremely)f(w)
-n(asteful)g(of)h(resources.)34 b(It)25 b(is)g(m)n(uc)n(h)118
-2257 y(b)r(etter)33 b(to)f(represen)n(t)f(the)h(coun)n(ter)g(in)g(as)g
-(large)e(a)i(base)g(as)f(p)r(ossible:)46 b(in)n(terpret)32
-b(as)f(n)n(um)n(b)r(ers)h(a)g(set)g(of)g(c)n(haracters)118
-2356 y(larger)26 b(than)h({0,1,.)14 b(.)g(.)g(9}.)243
-2456 y(As)26 b(tree)f(op)r(erations)f(will)i(in)n(v)n(olv)n(e)f(string)
-g(op)r(erations)f(on)i(the)g(indices,)g(in)g(order)f(to)g(a)n(v)n(oid)g
-(a)g(\020quoting)g(hell\021)33 b(it)26 b(is)118 2555
-y(desirable)d(to)h(a)n(v)n(oid)e(using)h(an)n(y)g(c)n(haracter)f(with)i
-(a)g(sp)r(ecial)f(meaning)h(in)g(LIKE)g(expressions)e(or)g(regular)g
-(expressions;)118 2655 y(i.e.,)28 b(w)n(e)f(will)h(not)f(use)h(an)n(y)f
-(of)g(the)h(sym)n(b)r(ols)70 b Fd(.)44 b(*)f(^)g(\\)g([)g(])g({)h(})f
-(\()g(\))g(<)g(>)71 b Fh(?)37 b(|)28 b(&)f($)243 2755
-y(W)-7 b(e)28 b(prop)r(ose)e(to)h(reserv)n(e)f(also)g(/)i(as)f(a)g
-(separator)e(\(see)i(\020V)-7 b(ariable)27 b(Sized)g(gID\021)34
-b(b)r(elo)n(w\).)243 2854 y(If)g(w)n(e)f(limit)i(ourselv)n(es)d(to)i
-(ascii)f(c)n(haracters,)g(and)h(a)n(v)n(oid)e(to)i(b)r(e)g(safe)f(a)h
-(lot)g(of)g(other)f(c)n(haracters,)g(w)n(e)g(can)h(use)118
-2954 y(n)n(um)n(b)r(ers)27 b(in)h(base)f(64)g(b)n(y)g(represen)n(ting)
-243 3120 y Ff(\017)41 b Fh(0-9)26 b(with)i('0'-'9')f(\(dec)g(ascii)g
-(co)r(de)h(48-57\))243 3286 y Ff(\017)41 b Fh(10)26 b(with)i(':')37
-b(\(dec)28 b(ascii)f(co)r(de)h(58\))243 3452 y Ff(\017)41
-b Fh(11)26 b(with)i(';')g(\(dec)g(ascii)f(co)r(de)g(59\))243
-3618 y Ff(\017)41 b Fh(12-37)25 b(with)j('A'-'Z')g(\(dec)f(ascii)g(co)r
-(de)h(65-90\))243 3784 y Ff(\017)41 b Fh(38-63)25 b(with)j('a'-'z')f
-(\(dec)h(ascii)f(co)r(de)g(97-122\))118 3950 y(By)g(using)g(base)f(64,)
-h(up)g(to)h(4096)d(c)n(hildren)i(can)f(b)r(e)i(represen)n(ted)e(using)h
-(t)n(w)n(o)f(suc)n(h)h(digits,)g(up)h(to)f(262144)d(with)k(three)118
-4050 y(digits,)g(and)f(up)h(to)f(16777216)d(with)k(four)f(digits.)243
-4149 y(If)37 b(the)g(RDBMs)g(supp)r(orts)f(in)n(ternational)g(c)n
-(haracters,)h(it)g(is)g(p)r(ossible)f(to)h(further)f(increase)g(the)h
-(base;)k(as)36 b(an)118 4249 y(example,)30 b(b)n(y)f(using)g(the)h(95)f
-(additional)g(c)n(haracters)e(of)i(the)h(latin-1)f(c)n(haracter)e(set,)
-k(w)n(e)e(could)g(co)r(de)g(n)n(um)n(b)r(ers)g(in)h(a)118
-4349 y(base)f(up)g(to)g(160)f(\025)g(remark)g(that)h(ev)n(ery)f(single)
-h(digit)g(is)g(still)h(one)e(b)n(yte)h(in)h(this)f(represen)n(tation.)
-40 b(This)29 b(means)f(that)118 4448 y(w)n(e)f(expand)h(the)f(sym)n(b)r
-(ols)g(ab)r(o)n(v)n(e)f(b)n(y)i(represen)n(ting)243 4614
-y Ff(\017)41 b Fh(64-159)25 b(with)j(dec)f(latin1)g(co)r(de)h(160-255)
-243 4780 y(In)23 b(base)g(160,)g(up)g(to)h(25600)d(c)n(hildren)i(can)f
-(b)r(e)i(represen)n(ted)e(using)h(t)n(w)n(o)g(digits,)h(up)g(to)f
-(4096000)d(with)k(three)f(digits,)118 4880 y(and)28 b(up)f(to)h
-(6.5E+08)e(with)i(four)f(digits.)243 4980 y(Remark)g(that)h(base)f(con)
-n(v)n(ersions)f(only)h(need)i(to)e(b)r(e)i(p)r(erformed)e(at)h
-(insertion)g(time,)g(when)h(the)f(index)g(of)g(a)g(new)118
-5079 y(no)r(de)g(is)f(computed.)37 b(They)28 b(will)f(therefore)g(only)
-g(ha)n(v)n(e)f(an)i(impact)f(on)h(insertion)f(timings.)1987
-5653 y(2)p eop
-%%Page: 3 3
-3 2 bop 118 291 a Fm(2.3)112 b(Coun)m(ters:)50 b(\020delimited\021)44
-b(vs.)51 b(\020\034xed)38 b(size\021)118 444 y Fh(The)33
-b(standard)g(represen)n(tation)e(of)i(gID)h(uses)e(a)h(v)-5
-b(ariable)32 b(size)h(c)n(hild)h(iden)n(ti\034er,)g(and)f(delimiters)g
-(to)h(separate)d(the)118 543 y(gID)f(of)g(the)h(c)n(hild)f(no)r(de)g
-(from)f(the)i(gID)f(of)g(its)g(paren)n(t.)43 b(F)-7 b(or)30
-b(example,)g(w)n(e)g(can)f(represen)n(t)g(the)i(\034fth)g(c)n(hild)f
-(of)g(no)r(de)118 643 y('/23/27/1')24 b(as)j('/23/27/1/4'.)32
-b(Let)c(us)f(call)g(this)h(a)f Fg(vgID)h Fh(represen)n(tation)e(\(V)-7
-b(ariable)27 b(Size)h(Genealogical)d(ID\).)243 743 y(This)30
-b(represen)n(tation)f(allo)n(ws)f(for)i(an)n(y)g(n)n(um)n(b)r(er)g(of)g
-(c)n(hildren)g(of)h(a)f(no)r(de,)h(sub)5 b(ject)30 b(only)g(to)g(the)h
-(limitations)f(the)118 842 y(RDBMS)e(ma)n(y)f(ha)n(v)n(e)f(as)h(to)h
-(the)g(length)f(of)h(a)f(v)-5 b(ariable)27 b(sized)g(string.)243
-942 y(Alternativ)n(ely)-7 b(,)24 b(w)n(e)f(could)h(c)n(ho)r(ose)f(to)h
-(limit)g(from)g(the)g(outset)g(the)g(quan)n(tit)n(y)g(of)f(c)n(hildren)
-h(that)g(a)g(no)r(de)g(ma)n(y)f(ha)n(v)n(e;)118 1042
-y(this)28 b(limit)g(w)n(ould)f(dep)r(end)i(of)e(course)f(on)i(the)g
-(application.)36 b(Let)27 b(us)h(call)f(this)h(a)f Fg(fgID)h
-Fh(represen)n(tation.)243 1141 y(F)-7 b(or)25 b(example,)h(if)g(no)g
-(no)r(de)f(is)h(allo)n(w)n(ed)f(to)g(ha)n(v)n(e)g(more)g(than)h(25600)d
-(c)n(hildren,)j(w)n(e)g(could)f(represen)n(t)g(the)h(coun)n(ters)118
-1241 y(alw)n(a)n(ys)36 b(with)i(2)f(digits.)67 b(The)38
-b(no)r(de)f(whic)n(h)h(w)n(as)f(previously)f('/23/27/1/4')d(is)k(no)n
-(w)g('23270104'.)64 b(If)38 b(w)n(e)f(require)118 1340
-y(a)g(three)g(digit)h(represen)n(tation)d(of)i(no)r(des)g(\(up)h(to)f
-(ab)r(out)h(4)f(million)g(c)n(hildren\),)j(then)d(it)h(will)g(b)r(e)f
-(represen)n(ted)f(as)118 1440 y('023027001004'.)118 1672
-y Fm(2.4)112 b(Ordering)37 b(of)h(no)s(des)118 1825 y
-Fh(F)-7 b(or)35 b(some)g(applications)g(it)h(is)f(necessary)f(to)i
-(obtain)f(subtrees)g(ordered)f(according)g(to)i(some)f(sp)r(ecial)g
-(rules.)60 b(F)-7 b(or)118 1925 y(instance:)220 2090
-y(1.)41 b(the)34 b(complete)g(subtree)f(starting)g(at)h(a)f(no)r(de)h
-(is)g(listed)g(immediately)g(after)f(the)i(no)r(de)f(in)g(question)f
-(\(\020depth)326 2189 y(\034rst\021\))220 2354 y(2.)41
-b(no)r(des)27 b(with)h(a)f(common)g(paren)n(t)g(are)g(listed)g(c)n
-(hronologically)243 2519 y(F)-7 b(or)39 b(instance,)k(the)d(displa)n(y)
-f(of)h(an)f(organization)f(c)n(hart)h(is)g(usually)h(required)e(to)i
-(satisfy)g(at)f(least)h(the)g(\034rst)118 2619 y(condition.)h(In)29
-b(a)g(threaded)f(discussion)h(group)e(one)i(wishes)g(to)f(satisfy)h(b)r
-(oth)h(conditions)e(to)h(displa)n(y)f(the)h(messages)118
-2718 y(in)20 b(a)g(thread)g(\025)f(the)i(threads)e(themselv)n(es)h
-(\(i.e.,)i(c)n(hildren)e(of)g(the)g(ro)r(ot)f(no)r(de\))i(are)e
-(usually)g(listed)i(in)f(in)n(v)n(erse)f(c)n(hronolical)118
-2818 y(order.)243 2917 y(T)-7 b(o)35 b(mak)n(e)f(a)h(particular)f
-(ordering)g(e\036cien)n(t,)j(it)f(w)n(ould)f(b)r(e)h(a)f(nice)g
-(feature)g(if)h(it)g(could)f(b)r(e)h(made)f(to)g(coincide)118
-3017 y(with)28 b(a)f(lexicographic)f(ordering)f(of)j(the)g(indices)f
-(\025i.e.,)g(as)g(pro)r(duced)g(b)n(y)h(an)f(\020ORDER)h(BY)f(id)h
-(ASC\021)35 b(in)27 b(SQL.)h(The)118 3117 y(lexicographic)d(ordering)h
-(of)h(fgID)h(satis\034es)e(b)r(oth)i(conditions.)36 b(The)27
-b(lexicographic)f(ordering)f(of)i(vgID)g(as)g(describ)r(ed)118
-3216 y(ab)r(o)n(v)n(e)34 b(satis\034es)g(the)h(\034rst)g(requisite)f
-(if)i(the)f(separator)d(has)j(the)g(minimal)g(binary)g(represen)n
-(tation)e(of)i(all)f(allo)n(w)n(ed)118 3316 y(sym)n(b)r(ols)c(in)h(an)f
-(index)h(\025)f(this)h(is)g(wh)n(y)f(w)n(e)g(reserv)n(ed)f(/)h(for)g
-(the)i(separator.)43 b(But)31 b(the)g(second)f(prop)r(ert)n(y)g(is)g
-(missing:)118 3416 y(for)d(instance,)g(the)h(index)g('/1/10')d(is)j
-(lexicographically)d(b)r(efore)i('/1/2'.)243 3515 y(If)c(the)h(second)e
-(prop)r(ert)n(y)g(is)i(also)e(required)g(for)h(vgID,)g(w)n(e)f(can)h
-(sp)r(ecify)h(the)f(c)n(hild)h(iden)n(ti\034ers)e(with)i(coun)n(ters)e
-(built)118 3615 y(in)28 b(the)g(follo)n(wing)e(w)n(a)n(y:)36
-b(represen)n(t)26 b(a)h(n)n(um)n(b)r(er)h(b)n(y)f(a)g(string)g(of)g
-(digits,)h(where)243 3779 y Ff(\017)41 b Fh(the)25 b(\034rst)g(digit)h
-Fc(D)896 3791 y Fb(0)958 3779 y Fh(represen)n(ts)e(the)i(length)f(in)h
-(digits)f(of)g(the)h(decimal)f(expansion)f(of)i(the)f(n)n(um)n(b)r(er,)
-h(min)n(us)f(one)243 3945 y Ff(\017)41 b Fh(the)28 b(follo)n(wing)e
-Fa(\()p Fc(D)920 3957 y Fb(0)976 3945 y Fa(+)18 b(1\))27
-b Fh(digits)h(are)e(the)i(decimal)g(expansion)e(of)i(the)g(n)n(um)n(b)r
-(er)118 4109 y(Let)g(us)f(call)h(these)f(iden)n(ti\034ers)g
-Fg(m-vgID)p Fh(,)g(\020m\021)34 b(for)27 b(mo)r(di\034ed.)243
-4209 y(As)e(an)f(example,)h(the)g(no)r(de)g(whic)n(h)g(w)n(as)f
-(previously)f(represen)n(ted)h(b)n(y)g(/15/3/182)d(will,)k(after)g
-(this)g(mo)r(di\034cation,)118 4309 y(ha)n(v)n(e)h(the)i(index)g
-(/115/03/2182.)243 4408 y(The)37 b(lexicographic)f(ordering)g(of)i
-(m-vgID)f(is)h(the)g(desired)f(ordering)f(of)h(the)h(tree)g(no)r(des.)
-67 b(The)38 b(cost)f(of)g(this)118 4508 y(prop)r(ert)n(y)31
-b(is)i(that)f(\(a\))h(the)g(ID)f(are)g(no)n(w)g(longer,)g(\(b\))h(no)f
-(no)r(de)g(can)g(ha)n(v)n(e)g(more)f(than)i Fa(160)3106
-4478 y Fb(160)3240 4508 y Fh(c)n(hildren)f(\(actually)-7
-b(,)118 4607 y(this)32 b(is)g(a)f(non-issue\),)h(and)f(\(c\))h(the)g
-(index)g(structure)f(is)h(redundan)n(t,)g(some)f(formally)f(correct)h
-(indices)g(are)g(in)n(v)-5 b(alid)118 4707 y(\025e.g.,)24
-b(/316/013/11.)30 b(The)24 b(third)g(issue)g(can)g(b)r(e)g(addressed)f
-(b)n(y)g(k)n(eeping)g(a)h(strict)g(con)n(trol)e(on)i(the)g(generation)f
-(of)h(new)118 4807 y(indices)k(to)f(insure)g(that)h(all)f(indices)h
-(are)e(formally)h(correct.)243 4906 y(The)32 b(issue)f(of)h(the)g(rev)n
-(erse)e(c)n(hronological)f(indexing)j(of)f(threads)h(in)g(threaded)f
-(discussion)g(groups)g(can)g(b)r(e)h(ad-)118 5006 y(dressed)d(easily)f
-(enough)h(in)h(fgID:)f(coun)n(t)g(\020do)n(wn\021)36
-b(instead)29 b(of)g(\020up\021)36 b(the)30 b(c)n(hildren)f(of)g(the)h
-(ro)r(ot)e(no)r(de)i(\025)f(this)h(implies)118 5106 y(only)e(an)g
-(inconsequen)n(tial)f(mo)r(di\034cation)h(of)g(the)g(no)r(de)h
-(insertion)e(routine,)h(as)g(sho)n(wn)f(b)r(elo)n(w.)38
-b(The)29 b(problem)e(is)h(less)118 5205 y(trivial)i(with)g(vgID;)h(in)f
-(this)h(case,)f(ma)n(yb)r(e)f(a)h(thread)g(iden)n(ti\034er)g(should)g
-(b)r(e)h(k)n(ept)f(in)g(a)g(di\033eren)n(t)g(\034eld)h(-)f(i.e.,)h
-(repre-)118 5305 y(sen)n(ting)h(the)h(structure)f(as)g(a)h(forest)f
-(rather)f(than)i(a)f(tree,)i(where)e(the)h(thread_id)f(\034eld)h
-(selects)f(the)h(\020tree\021)38 b(in)33 b(the)118 5404
-y(forest.)1987 5653 y(3)p eop
-%%Page: 4 4
-4 3 bop 118 291 a Fi(3)131 b(T)-11 b(ree)45 b(op)t(erations)e(using)h
-(genealogical)g(indices)118 472 y Fh(In)32 b(this)f(section)g(w)n(e)g
-(sho)n(w)g(ho)n(w)g(to)g(implemen)n(t)h(v)-5 b(arious)30
-b(tree)h(op)r(erations)f(using)h(gID)g(as)g(the)h(primary)e(k)n(ey)h
-(in)g(the)118 572 y(no)r(de)d(table.)243 672 y(Some)h(implemen)n
-(tation)h(issues)g(are)f(relev)-5 b(an)n(t)29 b(here,)h(esp)r(ecially)f
-(concerning)g(the)h(utilisation)g(of)g(indices)g(b)n(y)f(the)118
-771 y(DB)f(engine.)243 871 y(W)-7 b(e)28 b(discuss)f(a)g(tree)g
-(represen)n(ted)f(in)i(a)f(table)h(of)f(the)h(form)326
-1034 y Fd(CREATE)41 b(TABLE)g(tree)h(\()456 1134 y(gid)304
-b(text)42 b(PRIMARY)f(KEY,)456 1234 y(nchildren)f(integer)h(DEFAULT)f
-(0,)456 1333 y(\\ldots)h(the)i(actual)e(node)h(data)326
-1433 y(\);)118 1597 y Fh(The)26 b(\034eld)g(\020nc)n(hildren\021)32
-b(is)26 b(a)f(coun)n(ter)g(for)g(the)i(n)n(um)n(b)r(er)e(of)h(c)n
-(hildren)f(that)h(the)h(no)r(de)f(has)f Fe(ever)35 b
-Fh(had;)27 b(w)n(e)e(assume)g(here)118 1696 y(it)j(is)g(not)f(up)r
-(dated)h(when)g(no)r(des)f(or)g(subtrees)g(are)f(deleted.)243
-1796 y(Section)h(4)g(pro)n(vides)f(a)i(complete)f(implemen)n(tation)h
-(of)f(these)h(op)r(erations)e(for)h(fgID)h(in)g(P)n(ostgreSQL.)118
-2028 y Fm(3.1)112 b(Computing)37 b(the)g(lev)m(el)f(of)h(a)h(no)s(de)
-118 2181 y Fg(Cost:)f Fe(string)30 b(op)l(er)l(ations)g(\(no)g(table)g
-(ac)l(c)l(ess\))243 2280 y Fh(This)d(is)h(a)f(pure)g(string)g(op)r
-(eration,)f(no)i(table)f(access)g(is)g(required.)243
-2460 y Ff(\017)41 b Fg(vgID:)27 b Fh(coun)n(t)h(the)g(n)n(um)n(b)r(er)f
-(of)g(separators)e(\('/'\))j(in)g(the)g(PK)243 2625 y
-Ff(\017)41 b Fg(fgID:)27 b Fh(coun)n(t)g(the)h(n)n(um)n(b)r(er)g(of)f
-(c)n(haracters)e(in)j(the)g(PK,)g(divide)g(b)n(y)f(the)h(\034xed)f
-(size)h(of)f(the)h(coun)n(ters.)118 2857 y Fm(3.2)112
-b(Selecting)36 b(or)h(deleting)f(a)i(subtree)118 3010
-y Fg(Cost:)f Fe(index)30 b(sc)l(an)g(of)g(the)g(tr)l(e)l(e)243
-3173 y Ff(\017)41 b Fg(vgID:)27 b Fh(The)h(subtree)f(ro)r(oted)g(at)g
-(/26/5/7)e(is)i(selected)g(b)n(y)508 3338 y Fd(...)43
-b(WHERE)e(id)i(LIKE)f('/26/5/7\045')d(AND)j(id)h(<)g('/26/5/70')243
-3503 y Ff(\017)e Fg(m-vgID:)26 b Fh(The)h(subtree)h(ro)r(oted)e(at)i
-(/126/05/07)22 b(is)28 b(selected)f(b)n(y)508 3668 y
-Fd(...)43 b(WHERE)e(id)i(LIKE)f('/126/06/07\045')243
-3833 y Ff(\017)f Fg(fgID:)27 b Fh(The)h(subtree)f(ro)r(oted)g(at)g
-(260507)e(is)i(selected)h(b)n(y)508 3997 y Fd(...)43
-b(WHERE)e(id)i(LIKE)f('260507\045')118 4229 y Fm(3.3)112
-b(Selecting)36 b(the)h(direct)f(c)m(hildren)g(of)i(a)g(no)s(de)118
-4382 y Fg(Cost:)f Fe(index)30 b(sc)l(an)g(of)g(the)g(tr)l(e)l(e)243
-4562 y Ff(\017)41 b Fg(vgID:)27 b Fh(The)h(direct)f(c)n(hildren)g(of)h
-(/26/5/7)c(are)j(selected)g(b)n(y)508 4727 y Fd(...)43
-b(WHERE)e(id)i(LIKE)f('/26/5/7/\045')d(AND)j(id)h(NOT)f(LIKE)g
-('26/5/7/\045/\045')243 4892 y Ff(\017)f Fg(m-vgID:)26
-b Fh(The)h(direct)h(c)n(hildren)f(of)g(/26/5/7)e(are)h(selected)i(b)n
-(y)508 5056 y Fd(...)43 b(WHERE)e(id)i(LIKE)f('/126/06/07/\045')37
-b(AND)43 b(id)f(NOT)h(LIKE)f('/126/05/07/\045/\045)o(')243
-5221 y Ff(\017)f Fg(fgID:)27 b Fh(The)h(direct)f(c)n(hildren)g(of)h
-(260507)c(are)j(selected)g(b)n(y)508 5386 y Fd(...)43
-b(WHERE)e(id)i(LIKE)f('260507\045')d(AND)k(char_length\(id\))37
-b(=)43 b(\(char_length\('26)o(05)o(07')o(\)+)o(2\))1987
-5653 y Fh(4)p eop
-%%Page: 5 5
-5 4 bop 118 291 a Fm(3.4)112 b(Inserting)37 b(a)h(no)s(de)g(or)f(a)h
-(subtree)118 444 y Fg(Cost:)f Fe(index)30 b(sc)l(an)g(of)g(the)g(tr)l
-(e)l(e)f(+)h(string)f(and)h(math)g(op)l(er)l(ations)243
-543 y Fh(Insertion)f(is)g(a)h(pro)r(cedural)e(op)r(eration.)42
-b(As)30 b(eac)n(h)f(RDBMS)h(has)f(a)h(di\033eren)n(t)f(w)n(a)n(y)g(of)g
-(de\034ning)h(pro)r(cedures,)f(w)n(e)118 643 y(will)f(just)g(describ)r
-(e)f(here)g(the)h(necessary)e(steps.)37 b(Examples)27
-b(for)g(P)n(ostgreSQL)f(are)h(pro)n(vided)f(in)i(4.)243
-743 y(In)22 b(order)f(to)h(insert)g(a)g(new)g(c)n(hild)h(of)f
-(\020daddy\021)28 b(\(either)23 b(one)f(of)g(/26/5/7,)e(/126/05/07)d
-(or)22 b(260507)d(in)k(the)f(examples)118 842 y(ab)r(o)n(v)n(e\))27
-b(y)n(ou)f(ha)n(v)n(e)h(to)220 1008 y(1.)41 b(add)27
-b(one)g(to)h(the)g(n)n(um)n(b)r(er)f(of)g(c)n(hildren)h(of)f
-(\020daddy\021)508 1174 y Fd(UPDATE)41 b(tree)h(SET)h(nchildren)c(=)k
-(\(nchildren)d(+)j(1\))g(WHERE)e(ID)i(=)g(``daddy'';)220
-1340 y Fh(2.)e(enco)r(de)27 b(the)h(n)n(um)n(b)r(er)f(of)g(c)n(hildren)
-g(of)h(\020daddy\021)33 b(in)28 b(base)f(160,)f(bring)h(it)h(to)f(the)h
-(correct)e(format)h(dep)r(ending)h(on)326 1440 y(the)c(v)-5
-b(arian)n(t)23 b(of)h(gID)g(\(pad)g(with)h(0)e(or)g(not,)i(prep)r(end)f
-(a)g(digit)g(coun)n(ter)f(or)g(not,)i(prep)r(end)f(/)g(or)f(not,)i
-(coun)n(t)e(do)n(wn)326 1540 y(or)j(up,)i(.)14 b(.)g(.)g(\))37
-b(and)28 b(app)r(end)f(it)h(to)g(daddy's)f(gID)g(to)h(obtain)f(the)h
-(new)g(no)r(de's)f(gID.)220 1706 y(3.)41 b(insert)27
-b(the)h(new)f(no)r(de)243 1872 y(When)35 b(inserting)g(a)f(subtree,)j
-(the)e(index)g(of)g(the)h(ro)r(ot)e(of)h(the)g(subtree)g(has)f(to)h(b)r
-(e)h(computed)f(as)f(ab)r(o)n(v)n(e,)i(and)118 1971 y(prep)r(ended)28
-b(to)f(the)h(index)g(of)f(eac)n(h)g(no)r(de)h(of)f(the)h(subtree)f(b)r
-(efore)h(insertion.)243 2071 y(Remark)e(that)i(only)f(the)h(paren)n(t)f
-(no)r(de)h(has)f(to)g(b)r(e)h(up)r(dated)g(on)f(insertion.)118
-2303 y Fm(3.5)112 b(Selecting)36 b(the)h(ancestors)h(of)g(a)g(no)s(de)
-118 2457 y Fg(Cost:)f Fe(index)30 b(sc)l(an)g(of)g(the)g(tr)l(e)l(e)243
-2556 y Fh(Y)-7 b(ou)27 b(can)g(sp)r(ecify)h(all)g(ancestors)d(of)j(a)f
-(no)r(de)h(in)f(a)h(single)f(SQL)g(statemen)n(t;)g(for)g(instance)h
-(for)f(vgID)326 2722 y Fd(...)42 b(WHERE)f('/25/6/7')f(LIKE)i(\(id)g
-(||)h('/\045'\))f(AND)g(id)h(<)g('/25/6/7')118 2888 y
-Fh(The)31 b(second)e(part)h(of)h(the)g(clause,)f(while)h(logically)e
-(redundan)n(t,)h(is)h(a)f(\020hin)n(t\021)37 b(to)30
-b(the)h(optimizer.)45 b(A)n(t)31 b(least)f(in)g(P)n(ost-)118
-2988 y(greSQL,)c(without)i(it)g(the)g(optimizer)f(will)h(c)n(ho)r(ose)e
-(a)i(sequen)n(tial)e(scan)h(of)h(the)g(table)f(and)h(disregard)d(the)j
-(index.)118 3220 y Fm(3.6)112 b(Selecting)36 b(all)g(lea)m(v)m(es)118
-3374 y Fg(Cost:)h Fe(sc)l(an)30 b(of)g(the)g(tr)l(e)l(e)243
-3473 y Fh(A)e(leaf)f(is)g(a)h(no)r(de)f(without)h(descendan)n(ts:)36
-b(it)28 b(has)f(0)g(c)n(hildren.)37 b(Hence)326 3639
-y Fd(...)42 b(WHERE)f(nchildren)f(=)j(0)118 3805 y Fh(If)28
-b(this)g(t)n(yp)r(e)g(of)f(query)g(is)h(often)f(necessary)-7
-b(,)26 b(y)n(ou)h(ma)n(y)g(b)r(e)h(w)n(ell)f(advised)g(to)g(k)n(eep)g
-(an)h(index)f(on)h(tree\(nc)n(hildren\).)118 4038 y Fm(3.7)112
-b(Determining)35 b(if)i(A)g(is)g(a)h(descendan)m(t)g(of)g(B)118
-4191 y Fg(Cost:)f Fe(string)30 b(op)l(er)l(ations,)h(no)f(table)g(ac)l
-(c)l(ess)243 4291 y Fh(This)d(is)h(a)f(pure)g(string)g(op)r(eration)f
-(on)i(the)g(indices,)f(no)g(table)h(access)e(is)i(necessary)-7
-b(.)118 4565 y Fi(4)131 b(Putting)45 b(it)f(all)h(together:)57
-b(a)44 b(P)l(ostgreSQL)f(implemen)l(tation)118 4747 y
-Fh(h)n(ttp://www.p)r(ostgresql.org/mhonarc/pgsq)o(l-sql/)o(20)o(00)o
-(-0)o(4/)o(msg0)o(02)o(67)o(.h)n(tml)243 4847 y(W)-7
-b(e)30 b(describ)r(e)g(here)g(a)g(small)f(pac)n(k)-5
-b(age)29 b(that)i(can)e(b)r(e)i(used)f(for)g(implemen)n(ting)g(gID)g
-(on)g(P)n(ostgreSQL.)f(It)i(can)e(b)r(e)118 4946 y(found)f(at)f(<h)n
-(ttp://...>)243 5046 y(The)21 b(pac)n(k)-5 b(age)21 b(uses)g(the)h(pro)
-r(cedural)e(language)h(PL/PGsql.)35 b(A)22 b(b)r(etter)g(implemen)n
-(tation)g(w)n(ould)f(probably)g(de\034ne)118 5145 y(the)28
-b(gID)g(as)f(new)g(P)n(ostgres)f(t)n(yp)r(es,)i(and)f(co)r(de)g(all)h
-(this)g(in)f(C.)243 5245 y(The)g(\034les)h(should)f(b)r(e)h(loaded)f
-(in)h(alphab)r(etical)f(order.)1987 5653 y(5)p eop
-%%Page: 6 6
-6 5 bop 118 291 a Fm(4.1)112 b(tree0_enco)s(ding.sql)118
-444 y Fh(This)28 b(\034le)f(de\034nes)h(and)f(p)r(opulates)h(the)f
-(table)h(_b160_digits)d(of)j(\020digits\021)33 b(in)28
-b(base)f(160,)326 604 y Fd(CREATE)41 b(TABLE)g(\\_b160\\_digits)d
-(\(deci)j(integer,)f(code)i(char\);)118 764 y Fh(and)28
-b(the)f(t)n(w)n(o)g(functions)326 924 y Fd(CREATE)41
-b(FUNCTION)f(\\_b160\\_encode\(i)o(nt)o(eg)o(er\))d(RETURNS)j(string)
-413 1024 y(AS)j('....')e(LANGUAGE)f('plpgsql';)326 1124
-y(CREATE)h(FUNCTION)f(\\_b160\\_encode\(i)o(nt)o(eg)o(er,)o(in)o(te)o
-(ger)o(\))d(RETURNS)k(string)413 1223 y(AS)i('....')e(LANGUAGE)f
-('plpgsql';)118 1384 y Fh(The)22 b(\034rst)h(function)f(returns)g(a)g
-(v)-5 b(ariable)21 b(size)h(enco)r(ding;)i(the)f(second)e(a)h(\034xed)h
-(size)f(enco)r(ding)g(\(the)h(second)e(parameter)118
-1483 y(is)g(the)h(size\),)g(and)f(raises)e(an)i(exception)g(if)h(the)f
-(n)n(um)n(b)r(er)g(is)g(to)r(o)g(large)e(to)i(b)r(e)h(represen)n(ted)e
-(with)h(the)h(requested)e(n)n(um)n(b)r(er)118 1583 y(of)28
-b(digits.)118 1814 y Fm(4.2)112 b(tree1_de\034ne.sql)118
-1967 y Fh(This)28 b(\034le)f(pro)n(vides)f(a)i(function)326
-2127 y Fd(CREATE)41 b(FUNCTION)f(_tree_create\(tex)o(t,)o(in)o(teg)o
-(er)o(,t)o(ext)o(,t)o(ex)o(t\))d(RETURNS)k(bpchar)413
-2227 y(AS)i('....')e(LANGUAGE)f('plpgsql';)118 2387 y
-Fh(that)e(creates)f(a)h(tree)f(infrastructure)g(of)h(either)g(fgID)g
-(or)f(vgID.)h(Assuming)f(y)n(ou)g(ha)n(v)n(e)g(a)h(table)f(\020m)n
-(ytable\021)44 b(with)118 2487 y(primary)26 b(k)n(ey)h(\020m)n
-(yid\021,)g(then)h(calling)326 2647 y Fd(SELECT)41 b(_tree_create\('m)o
-(yt)o(ree)o(',)o(2,')o(my)o(ta)o(ble)o(',)o('m)o(yid)o('\))o(;)118
-2807 y Fh(will)28 b(cause:)220 2967 y(1.)41 b(the)28
-b(creation)e(of)i(a)f(table)508 3131 y Fd(CREATE)41 b(TABLE)h
-(mytree_bkg\()683 3230 y(gid)g(text)g(PRIMARY)e(KEY,)683
-3330 y(nchildren)f(int,)683 3429 y(sid)j(integer)f(REFERENCES)e
-(mytable\(myid\))508 3529 y(\);)508 3629 y(CREATE)i(UNIQUE)g(INDEX)h
-(mytree_bkg_sid)37 b(ON)43 b(mytree_bkg\(sid\);)326 3792
-y Fh(for)27 b(the)h(tree)f(structure.)220 3955 y(2.)41
-b(the)28 b(creation)e(of)i(a)f(view)508 4118 y Fd(CREATE)41
-b(VIEW)h(mytree)f(AS)639 4218 y(SELECT)g(t.gid,n.*)900
-4317 y(FROM)h(mytable)f(n,)i(mytree_bkg)c(t)900 4417
-y(WHERE)j(t.sid=n.myid;)326 4580 y Fh(with:)35 b(a)23
-b(trigger)e(on)i(UPD)n(A)-7 b(TE)25 b(that)e(blo)r(c)n(ks)g(up)r
-(dating)g(the)h(gid)f(and)g(allo)n(ws)f(up)r(dating)h(the)g(no)r(de)h
-(data,)f(a)g(rule)326 4680 y(on)k(DELETE)i(that)f(deletes)f(the)h
-(corresp)r(onding)e(en)n(try)h(b)r(oth)h(in)g(m)n(ytree_bkg)d(and)j(m)n
-(ytable,)f(and)g(a)g(trigger)326 4779 y(ON)h(INSER)-7
-b(T)30 b(that)f(raises)e(an)h(exception)g(and)g(informs)h(the)f(user)g
-(to)h(use)f(the)h(insertion)f(function)h(describ)r(ed)326
-4879 y(b)r(elo)n(w.)220 5042 y(3.)41 b(t)n(w)n(o)26 b(insertion)h
-(functions)h(that)g(compute)g(automatically)e(the)i(gID)g(of)f(the)h
-(new)g(no)r(de:)425 5205 y Ff(\017)41 b Fh(a)27 b(function)i(m)n
-(ytree_insert\(text,text,in)n(teger,text\))d(for)h(insertion)g(sim)n
-(ultaneosly)f(in)i(b)r(oth)g(tables:)508 5305 y(m)n
-(ytree_insert\('2201','hello',0,'not)15 b(m)n(uc)n(h'\))j(inserts)g(a)g
-(new)g(c)n(hild)h(of)f(2201)f(with)h(data1='hello',)h(data2=0)508
-5404 y(and)28 b(data3='not)e(m)n(uc)n(h')1987 5653 y(6)p
-eop
-%%Page: 7 7
-7 6 bop 425 291 a Ff(\017)41 b Fh(a)27 b(function)i(m)n
-(ytree_insert_no)r(de\(text,in)n(teger\))c(for)i(insertion)g(in)h(m)n
-(ytree_bkg)508 390 y(m)n(ytree_insert\('2201',25\))c(inserts)j(in)h(m)n
-(ytree_bkg)e(a)h(new)h(c)n(hild)f(of)h(2201)d(with)j(sid=25)220
-556 y(4.)41 b(a)27 b(function)h(m)n(ytree_mo)n(v)n(e\(text,text\))e
-(that)i(mo)n(v)n(es)e(subtrees:)326 656 y(m)n(ytree_mo)n(v)n
-(e\('2201','23'\))d(mo)n(v)n(es)j(the)i(subtree)f(ro)r(oted)g(at)g
-(2201)f(to)h(a)h(place)f(b)r(elo)n(w)g(23)f(\(ma)n(yb)r(e)i(2307\))220
-822 y(5.)41 b(a)c(function)g(m)n(ytree_len\(\))g(that)h(returns)e(the)i
-(length)f(of)g(the)h(enco)r(dings)f(used)g(in)h(the)f(gID)g(\(2)h
-(here;)j(0)c(if)326 922 y(v)-5 b(ariable)26 b(size\).)118
-1196 y Fi(5)131 b(Non-tree)44 b(hierarc)l(hies)118 1378
-y Fh(sequence)22 b(as)f(id,)j(table)e(with)h(\(id,g-index\))f(with)g(p)
-r(ossibly)g(man)n(y)g(g-indices)f(for)h(eac)n(h)f(id)h(\(if)h(TOO)f
-(man)n(y)-7 b(,)23 b(bad)f(mo)r(del:)118 1478 y(list)28
-b(all)f(genealogies,)f(i.e.,)h(paths)h(from)f(the)h(ro)r(ot\))118
-1752 y Fi(References)160 1934 y Fh([1])41 b(Philip)28
-b(Greenspun,)g Fe(T)-6 b(r)l(e)l(es)29 b(in)h(Or)l(acle)g(SQL)p
-Fh(,)d(in)h Fg(SQL)k(for)g(W)-8 b(eb)31 b(Nerds)289 2033
-y Fh(<h)n(ttp://photo.net/sql/trees.h)n(tml>)160 2200
-y([2])41 b(Jo)r(e)27 b(Celk)n(o,)f Fe(SQL)j(for)i(Smarties)p
-Fh(,)d(in)g Fg(DBMS)j(Online)p Fh(,)26 b(Marc)n(h)h(to)g(June)h(1996)
-289 2299 y(<h)n(ttp://www.dbmsmag.com/9603d06.h)n(tml>)289
-2399 y(<h)n(ttp://www.dbmsmag.com/9604d06.h)n(tml>)289
-2498 y(<h)n(ttp://www.dbmsmag.com/9605d06.h)n(tml>)289
-2598 y(<h)n(ttp://www.dbmsmag.com/9606d06.h)n(tml>)160
-2764 y([3])41 b(Graeme)26 b(Birc)n(hall,)h Fg(DB2)32
-b(UDB)g(V6.1)f(SQL)h(Co)s(okb)s(o)s(ok)p Fh(,)289 2864
-y(<h)n(ttp://ourw)n(orld.compuserv)n(e.com/homepag)o(es/)o(Gra)o
-(eme_Bir)o(c)n(ha)o(ll/HTM_CO)o(OK)o(.HTM>)1987 5653
-y(7)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/source/lib/ldb/ldb_tdb/ldb_cache.c b/source/lib/ldb/ldb_tdb/ldb_cache.c
deleted file mode 100644
index c90885bfab8..00000000000
--- a/source/lib/ldb/ldb_tdb/ldb_cache.c
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb tdb cache functions
- *
- * Description: cache special records in a ldb/tdb
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/ldb_tdb/ldb_tdb.h"
-
-#define LTDB_FLAG_CASE_INSENSITIVE (1<<0)
-#define LTDB_FLAG_INTEGER (1<<1)
-#define LTDB_FLAG_HIDDEN (1<<2)
-#define LTDB_FLAG_OBJECTCLASS (1<<3)
-
-int ltdb_attribute_flags(struct ldb_module *module, const char *attr_name);
-
-/* valid attribute flags */
-static const struct {
- const char *name;
- int value;
-} ltdb_valid_attr_flags[] = {
- { "CASE_INSENSITIVE", LTDB_FLAG_CASE_INSENSITIVE },
- { "INTEGER", LTDB_FLAG_INTEGER },
- { "HIDDEN", LTDB_FLAG_HIDDEN },
- { "NONE", 0 },
- { NULL, 0 }
-};
-
-
-/*
- de-register any special handlers for @ATTRIBUTES
-*/
-static void ltdb_attributes_unload(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- struct ldb_message *msg;
- int i;
-
- if (ltdb->cache->attributes == NULL) {
- /* no previously loaded attributes */
- return;
- }
-
- msg = ltdb->cache->attributes;
- for (i=0;i<msg->num_elements;i++) {
- ldb_remove_attrib_handler(module->ldb, msg->elements[i].name);
- }
-
- talloc_free(ltdb->cache->attributes);
- ltdb->cache->attributes = NULL;
-}
-
-/*
- add up the attrib flags for a @ATTRIBUTES element
-*/
-static int ltdb_attributes_flags(struct ldb_message_element *el, unsigned *v)
-{
- int i;
- unsigned value = 0;
- for (i=0;i<el->num_values;i++) {
- int j;
- for (j=0;ltdb_valid_attr_flags[j].name;j++) {
- if (strcmp(ltdb_valid_attr_flags[j].name,
- (char *)el->values[i].data) == 0) {
- value |= ltdb_valid_attr_flags[j].value;
- break;
- }
- }
- if (ltdb_valid_attr_flags[j].name == NULL) {
- return -1;
- }
- }
- *v = value;
- return 0;
-}
-
-/*
- register any special handlers from @ATTRIBUTES
-*/
-static int ltdb_attributes_load(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- struct ldb_message *msg = ltdb->cache->attributes;
- struct ldb_dn *dn;
- int i;
-
- dn = ldb_dn_explode(module->ldb, LTDB_ATTRIBUTES);
- if (dn == NULL) goto failed;
-
- if (ltdb_search_dn1(module, dn, msg) == -1) {
- talloc_free(dn);
- goto failed;
- }
- talloc_free(dn);
- /* mapping these flags onto ldap 'syntaxes' isn't strictly correct,
- but its close enough for now */
- for (i=0;i<msg->num_elements;i++) {
- unsigned flags;
- const char *syntax;
- const struct ldb_attrib_handler *h;
- struct ldb_attrib_handler h2;
-
- if (ltdb_attributes_flags(&msg->elements[i], &flags) != 0) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "Invalid @ATTRIBUTES element for '%s'\n", msg->elements[i].name);
- goto failed;
- }
- switch (flags & ~LTDB_FLAG_HIDDEN) {
- case 0:
- syntax = LDB_SYNTAX_OCTET_STRING;
- break;
- case LTDB_FLAG_CASE_INSENSITIVE:
- syntax = LDB_SYNTAX_DIRECTORY_STRING;
- break;
- case LTDB_FLAG_INTEGER:
- syntax = LDB_SYNTAX_INTEGER;
- break;
- default:
- ldb_debug(module->ldb, LDB_DEBUG_ERROR,
- "Invalid flag combination 0x%x for '%s' in @ATTRIBUTES\n",
- flags, msg->elements[i].name);
- goto failed;
- }
-
- h = ldb_attrib_handler_syntax(module->ldb, syntax);
- if (h == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR,
- "Invalid attribute syntax '%s' for '%s' in @ATTRIBUTES\n",
- syntax, msg->elements[i].name);
- goto failed;
- }
- h2 = *h;
- h2.attr = msg->elements[i].name;
- h2.flags |= LDB_ATTR_FLAG_ALLOCATED;
- if (ldb_set_attrib_handlers(module->ldb, &h2, 1) != 0) {
- goto failed;
- }
- }
-
- return 0;
-failed:
- return -1;
-}
-
-
-/*
- register any subclasses from @SUBCLASSES
-*/
-static int ltdb_subclasses_load(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- struct ldb_message *msg = ltdb->cache->subclasses;
- struct ldb_dn *dn;
- int i, j;
-
- dn = ldb_dn_explode(module->ldb, LTDB_SUBCLASSES);
- if (dn == NULL) goto failed;
-
- if (ltdb_search_dn1(module, dn, msg) == -1) {
- talloc_free(dn);
- goto failed;
- }
- talloc_free(dn);
-
- for (i=0;i<msg->num_elements;i++) {
- struct ldb_message_element *el = &msg->elements[i];
- for (j=0;j<el->num_values;j++) {
- if (ldb_subclass_add(module->ldb, el->name,
- (char *)el->values[j].data) != 0) {
- goto failed;
- }
- }
- }
-
- return 0;
-failed:
- return -1;
-}
-
-
-/*
- de-register any @SUBCLASSES
-*/
-static void ltdb_subclasses_unload(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- struct ldb_message *msg;
- int i;
-
- if (ltdb->cache->subclasses == NULL) {
- /* no previously loaded subclasses */
- return;
- }
-
- msg = ltdb->cache->subclasses;
- for (i=0;i<msg->num_elements;i++) {
- ldb_subclass_remove(module->ldb, msg->elements[i].name);
- }
-
- talloc_free(ltdb->cache->subclasses);
- ltdb->cache->subclasses = NULL;
-}
-
-
-/*
- initialise the baseinfo record
-*/
-static int ltdb_baseinfo_init(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- struct ldb_message *msg;
- struct ldb_message_element el;
- struct ldb_val val;
- int ret;
- /* the initial sequence number must be different from the one
- set in ltdb_cache_free(). Thanks to Jon for pointing this
- out. */
- const char *initial_sequence_number = "1";
-
- ltdb->sequence_number = atof(initial_sequence_number);
-
- msg = talloc(ltdb, struct ldb_message);
- if (msg == NULL) {
- goto failed;
- }
-
- msg->num_elements = 1;
- msg->elements = &el;
- msg->dn = ldb_dn_explode(msg, LTDB_BASEINFO);
- if (!msg->dn) {
- goto failed;
- }
- el.name = talloc_strdup(msg, LTDB_SEQUENCE_NUMBER);
- if (!el.name) {
- goto failed;
- }
- el.values = &val;
- el.num_values = 1;
- el.flags = 0;
- val.data = (uint8_t *)talloc_strdup(msg, initial_sequence_number);
- if (!val.data) {
- goto failed;
- }
- val.length = 1;
-
- ret = ltdb_store(module, msg, TDB_INSERT);
-
- talloc_free(msg);
-
- return ret;
-
-failed:
- talloc_free(msg);
- errno = ENOMEM;
- return -1;
-}
-
-/*
- free any cache records
- */
-static void ltdb_cache_free(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
-
- ltdb->sequence_number = 0;
- talloc_free(ltdb->cache);
- ltdb->cache = NULL;
-}
-
-/*
- force a cache reload
-*/
-int ltdb_cache_reload(struct ldb_module *module)
-{
- ltdb_attributes_unload(module);
- ltdb_subclasses_unload(module);
- ltdb_cache_free(module);
- return ltdb_cache_load(module);
-}
-
-/*
- load the cache records
-*/
-int ltdb_cache_load(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- struct ldb_dn *baseinfo_dn = NULL;
- struct ldb_dn *indexlist_dn = NULL;
- uint64_t seq;
- struct ldb_message *baseinfo = NULL;
-
- /* a very fast check to avoid extra database reads */
- if (ltdb->cache != NULL &&
- tdb_get_seqnum(ltdb->tdb) == ltdb->tdb_seqnum) {
- return 0;
- }
-
- if (ltdb->cache == NULL) {
- ltdb->cache = talloc_zero(ltdb, struct ltdb_cache);
- if (ltdb->cache == NULL) goto failed;
- ltdb->cache->indexlist = talloc_zero(ltdb->cache, struct ldb_message);
- ltdb->cache->subclasses = talloc_zero(ltdb->cache, struct ldb_message);
- ltdb->cache->attributes = talloc_zero(ltdb->cache, struct ldb_message);
- if (ltdb->cache->indexlist == NULL ||
- ltdb->cache->subclasses == NULL ||
- ltdb->cache->attributes == NULL) {
- goto failed;
- }
- }
-
- baseinfo = talloc(ltdb->cache, struct ldb_message);
- if (baseinfo == NULL) goto failed;
-
- baseinfo_dn = ldb_dn_explode(module->ldb, LTDB_BASEINFO);
- if (baseinfo_dn == NULL) goto failed;
-
- if (ltdb_search_dn1(module, baseinfo_dn, baseinfo) == -1) {
- goto failed;
- }
-
- /* possibly initialise the baseinfo */
- if (!baseinfo->dn) {
- if (ltdb_baseinfo_init(module) != 0) {
- goto failed;
- }
- if (ltdb_search_dn1(module, baseinfo_dn, baseinfo) != 1) {
- goto failed;
- }
- }
-
- ltdb->tdb_seqnum = tdb_get_seqnum(ltdb->tdb);
-
- /* if the current internal sequence number is the same as the one
- in the database then assume the rest of the cache is OK */
- seq = ldb_msg_find_attr_as_uint64(baseinfo, LTDB_SEQUENCE_NUMBER, 0);
- if (seq == ltdb->sequence_number) {
- goto done;
- }
- ltdb->sequence_number = seq;
-
- talloc_free(ltdb->cache->last_attribute.name);
- memset(&ltdb->cache->last_attribute, 0, sizeof(ltdb->cache->last_attribute));
-
- ltdb_attributes_unload(module);
- ltdb_subclasses_unload(module);
-
- talloc_free(ltdb->cache->indexlist);
- talloc_free(ltdb->cache->subclasses);
-
- ltdb->cache->indexlist = talloc_zero(ltdb->cache, struct ldb_message);
- ltdb->cache->subclasses = talloc_zero(ltdb->cache, struct ldb_message);
- ltdb->cache->attributes = talloc_zero(ltdb->cache, struct ldb_message);
- if (ltdb->cache->indexlist == NULL ||
- ltdb->cache->subclasses == NULL ||
- ltdb->cache->attributes == NULL) {
- goto failed;
- }
-
- indexlist_dn = ldb_dn_explode(module->ldb, LTDB_INDEXLIST);
- if (indexlist_dn == NULL) goto failed;
-
- if (ltdb_search_dn1(module, indexlist_dn, ltdb->cache->indexlist) == -1) {
- goto failed;
- }
-
- if (ltdb_attributes_load(module) == -1) {
- goto failed;
- }
- if (ltdb_subclasses_load(module) == -1) {
- goto failed;
- }
-
-done:
- talloc_free(baseinfo);
- talloc_free(baseinfo_dn);
- talloc_free(indexlist_dn);
- return 0;
-
-failed:
- talloc_free(baseinfo);
- talloc_free(baseinfo_dn);
- talloc_free(indexlist_dn);
- return -1;
-}
-
-
-/*
- increase the sequence number to indicate a database change
-*/
-int ltdb_increase_sequence_number(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- struct ldb_message *msg;
- struct ldb_message_element el[2];
- struct ldb_val val;
- struct ldb_val val_time;
- time_t t = time(NULL);
- char *s = NULL;
- int ret;
-
- msg = talloc(ltdb, struct ldb_message);
- if (msg == NULL) {
- errno = ENOMEM;
- return -1;
- }
-
- s = talloc_asprintf(msg, "%llu", ltdb->sequence_number+1);
- if (!s) {
- errno = ENOMEM;
- return -1;
- }
-
- msg->num_elements = ARRAY_SIZE(el);
- msg->elements = el;
- msg->dn = ldb_dn_explode(msg, LTDB_BASEINFO);
- if (msg->dn == NULL) {
- talloc_free(msg);
- errno = ENOMEM;
- return -1;
- }
- el[0].name = talloc_strdup(msg, LTDB_SEQUENCE_NUMBER);
- if (el[0].name == NULL) {
- talloc_free(msg);
- errno = ENOMEM;
- return -1;
- }
- el[0].values = &val;
- el[0].num_values = 1;
- el[0].flags = LDB_FLAG_MOD_REPLACE;
- val.data = (uint8_t *)s;
- val.length = strlen(s);
-
- el[1].name = talloc_strdup(msg, LTDB_MOD_TIMESTAMP);
- if (el[1].name == NULL) {
- talloc_free(msg);
- errno = ENOMEM;
- return -1;
- }
- el[1].values = &val_time;
- el[1].num_values = 1;
- el[1].flags = LDB_FLAG_MOD_REPLACE;
-
- s = ldb_timestring(msg, t);
- if (s == NULL) {
- return -1;
- }
-
- val_time.data = (uint8_t *)s;
- val_time.length = strlen(s);
-
- ret = ltdb_modify_internal(module, msg);
-
- talloc_free(msg);
-
- if (ret == 0) {
- ltdb->sequence_number += 1;
- }
-
- return ret;
-}
-
-
-/*
- return the attribute flags from the @ATTRIBUTES record
- for the given attribute
-*/
-int ltdb_attribute_flags(struct ldb_module *module, const char *attr_name)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- const struct ldb_message_element *attr_el;
- int i, j, ret=0;
-
- if (ltdb->cache->last_attribute.name &&
- ldb_attr_cmp(ltdb->cache->last_attribute.name, attr_name) == 0) {
- return ltdb->cache->last_attribute.flags;
- }
-
- /* objectclass is a special default case */
- if (ldb_attr_cmp(attr_name, LTDB_OBJECTCLASS) == 0) {
- ret = LTDB_FLAG_OBJECTCLASS | LTDB_FLAG_CASE_INSENSITIVE;
- }
-
- attr_el = ldb_msg_find_element(ltdb->cache->attributes, attr_name);
-
- if (!attr_el) {
- /* check if theres a wildcard attribute */
- attr_el = ldb_msg_find_element(ltdb->cache->attributes, "*");
-
- if (!attr_el) {
- return ret;
- }
- }
-
- for (i = 0; i < attr_el->num_values; i++) {
- for (j=0; ltdb_valid_attr_flags[j].name; j++) {
- if (strcmp(ltdb_valid_attr_flags[j].name,
- (char *)attr_el->values[i].data) == 0) {
- ret |= ltdb_valid_attr_flags[j].value;
- }
- }
- }
-
- talloc_free(ltdb->cache->last_attribute.name);
-
- ltdb->cache->last_attribute.name = talloc_strdup(ltdb->cache, attr_name);
- ltdb->cache->last_attribute.flags = ret;
-
- return ret;
-}
-
-int ltdb_check_at_attributes_values(const struct ldb_val *value)
-{
- int i;
-
- for (i = 0; ltdb_valid_attr_flags[i].name != NULL; i++) {
- if ((strcmp(ltdb_valid_attr_flags[i].name, (char *)value->data) == 0)) {
- return 0;
- }
- }
-
- return -1;
-}
-
diff --git a/source/lib/ldb/ldb_tdb/ldb_index.c b/source/lib/ldb/ldb_tdb/ldb_index.c
deleted file mode 100644
index 672bc1f6259..00000000000
--- a/source/lib/ldb/ldb_tdb/ldb_index.c
+++ /dev/null
@@ -1,1179 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb tdb backend - indexing
- *
- * Description: indexing routines for ldb tdb backend
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/ldb_tdb/ldb_tdb.h"
-
-/*
- find an element in a list, using the given comparison function and
- assuming that the list is already sorted using comp_fn
-
- return -1 if not found, or the index of the first occurance of needle if found
-*/
-static int ldb_list_find(const void *needle,
- const void *base, size_t nmemb, size_t size,
- comparison_fn_t comp_fn)
-{
- const char *base_p = (const char *)base;
- size_t min_i, max_i, test_i;
-
- if (nmemb == 0) {
- return -1;
- }
-
- min_i = 0;
- max_i = nmemb-1;
-
- while (min_i < max_i) {
- int r;
-
- test_i = (min_i + max_i) / 2;
- /* the following cast looks strange, but is
- correct. The key to understanding it is that base_p
- is a pointer to an array of pointers, so we have to
- dereference it after casting to void **. The strange
- const in the middle gives us the right type of pointer
- after the dereference (tridge) */
- r = comp_fn(needle, *(void * const *)(base_p + (size * test_i)));
- if (r == 0) {
- /* scan back for first element */
- while (test_i > 0 &&
- comp_fn(needle, *(void * const *)(base_p + (size * (test_i-1)))) == 0) {
- test_i--;
- }
- return test_i;
- }
- if (r < 0) {
- if (test_i == 0) {
- return -1;
- }
- max_i = test_i - 1;
- }
- if (r > 0) {
- min_i = test_i + 1;
- }
- }
-
- if (comp_fn(needle, *(void * const *)(base_p + (size * min_i))) == 0) {
- return min_i;
- }
-
- return -1;
-}
-
-struct dn_list {
- unsigned int count;
- char **dn;
-};
-
-/*
- return the dn key to be used for an index
- caller frees
-*/
-static struct ldb_dn *ldb_dn_key(struct ldb_context *ldb,
- const char *attr, const struct ldb_val *value)
-{
- struct ldb_dn *ret;
- char *dn;
- struct ldb_val v;
- const struct ldb_attrib_handler *h;
- char *attr_folded;
-
- attr_folded = ldb_attr_casefold(ldb, attr);
- if (!attr_folded) {
- return NULL;
- }
-
- h = ldb_attrib_handler(ldb, attr);
- if (h->canonicalise_fn(ldb, ldb, value, &v) != 0) {
- /* canonicalisation can be refused. For example,
- a attribute that takes wildcards will refuse to canonicalise
- if the value contains a wildcard */
- talloc_free(attr_folded);
- return NULL;
- }
- if (ldb_should_b64_encode(&v)) {
- char *vstr = ldb_base64_encode(ldb, (char *)v.data, v.length);
- if (!vstr) return NULL;
- dn = talloc_asprintf(ldb, "%s:%s::%s", LTDB_INDEX, attr_folded, vstr);
- talloc_free(vstr);
- if (v.data != value->data) {
- talloc_free(v.data);
- }
- talloc_free(attr_folded);
- if (dn == NULL) return NULL;
- goto done;
- }
-
- dn = talloc_asprintf(ldb, "%s:%s:%.*s",
- LTDB_INDEX, attr_folded, (int)v.length, (char *)v.data);
-
- if (v.data != value->data) {
- talloc_free(v.data);
- }
- talloc_free(attr_folded);
-
-done:
- ret = ldb_dn_explode(ldb, dn);
- talloc_free(dn);
- return ret;
-}
-
-/*
- see if a attribute value is in the list of indexed attributes
-*/
-static int ldb_msg_find_idx(const struct ldb_message *msg, const char *attr,
- unsigned int *v_idx, const char *key)
-{
- unsigned int i, j;
- for (i=0;i<msg->num_elements;i++) {
- if (ldb_attr_cmp(msg->elements[i].name, key) == 0) {
- const struct ldb_message_element *el =
- &msg->elements[i];
- for (j=0;j<el->num_values;j++) {
- if (ldb_attr_cmp((char *)el->values[j].data, attr) == 0) {
- if (v_idx) {
- *v_idx = j;
- }
- return i;
- }
- }
- }
- }
- return -1;
-}
-
-/* used in sorting dn lists */
-static int list_cmp(const char **s1, const char **s2)
-{
- return strcmp(*s1, *s2);
-}
-
-/*
- return a list of dn's that might match a simple indexed search or
- */
-static int ltdb_index_dn_simple(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list)
-{
- struct ldb_context *ldb = module->ldb;
- struct ldb_dn *dn;
- int ret;
- unsigned int i, j;
- struct ldb_message *msg;
-
- list->count = 0;
- list->dn = NULL;
-
- /* if the attribute isn't in the list of indexed attributes then
- this node needs a full search */
- if (ldb_msg_find_idx(index_list, tree->u.equality.attr, NULL, LTDB_IDXATTR) == -1) {
- return -1;
- }
-
- /* the attribute is indexed. Pull the list of DNs that match the
- search criterion */
- dn = ldb_dn_key(ldb, tree->u.equality.attr, &tree->u.equality.value);
- if (!dn) return -1;
-
- msg = talloc(list, struct ldb_message);
- if (msg == NULL) {
- return -1;
- }
-
- ret = ltdb_search_dn1(module, dn, msg);
- talloc_free(dn);
- if (ret == 0 || ret == -1) {
- return ret;
- }
-
- for (i=0;i<msg->num_elements;i++) {
- struct ldb_message_element *el;
-
- if (strcmp(msg->elements[i].name, LTDB_IDX) != 0) {
- continue;
- }
-
- el = &msg->elements[i];
-
- list->dn = talloc_array(list, char *, el->num_values);
- if (!list->dn) {
- talloc_free(msg);
- return -1;
- }
-
- for (j=0;j<el->num_values;j++) {
- list->dn[list->count] =
- talloc_strdup(list->dn, (char *)el->values[j].data);
- if (!list->dn[list->count]) {
- talloc_free(msg);
- return -1;
- }
- list->count++;
- }
- }
-
- talloc_free(msg);
-
- if (list->count > 1) {
- qsort(list->dn, list->count, sizeof(char *), (comparison_fn_t) list_cmp);
- }
-
- return 1;
-}
-
-
-static int list_union(struct ldb_context *, struct dn_list *, const struct dn_list *);
-
-/*
- return a list of dn's that might match a simple indexed search on
- the special objectclass attribute
- */
-static int ltdb_index_dn_objectclass(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list)
-{
- struct ldb_context *ldb = module->ldb;
- unsigned int i;
- int ret;
- const char *target = (const char *)tree->u.equality.value.data;
- const char **subclasses;
-
- list->count = 0;
- list->dn = NULL;
-
- ret = ltdb_index_dn_simple(module, tree, index_list, list);
-
- subclasses = ldb_subclass_list(module->ldb, target);
-
- if (subclasses == NULL) {
- return ret;
- }
-
- for (i=0;subclasses[i];i++) {
- struct ldb_parse_tree tree2;
- struct dn_list *list2;
- tree2.operation = LDB_OP_EQUALITY;
- tree2.u.equality.attr = LTDB_OBJECTCLASS;
- if (!tree2.u.equality.attr) {
- return -1;
- }
- tree2.u.equality.value.data =
- (uint8_t *)talloc_strdup(list, subclasses[i]);
- if (tree2.u.equality.value.data == NULL) {
- return -1;
- }
- tree2.u.equality.value.length = strlen(subclasses[i]);
- list2 = talloc(list, struct dn_list);
- if (list2 == NULL) {
- talloc_free(tree2.u.equality.value.data);
- return -1;
- }
- if (ltdb_index_dn_objectclass(module, &tree2,
- index_list, list2) == 1) {
- if (list->count == 0) {
- *list = *list2;
- ret = 1;
- } else {
- list_union(ldb, list, list2);
- talloc_free(list2);
- }
- }
- talloc_free(tree2.u.equality.value.data);
- }
-
- return ret;
-}
-
-/*
- return a list of dn's that might match a leaf indexed search
- */
-static int ltdb_index_dn_leaf(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list)
-{
- if (ldb_attr_cmp(tree->u.equality.attr, LTDB_OBJECTCLASS) == 0) {
- return ltdb_index_dn_objectclass(module, tree, index_list, list);
- }
- if (ldb_attr_dn(tree->u.equality.attr) == 0) {
- list->dn = talloc_array(list, char *, 1);
- if (list->dn == NULL) {
- ldb_oom(module->ldb);
- return -1;
- }
- list->dn[0] = talloc_strdup(list->dn, (char *)tree->u.equality.value.data);
- if (list->dn[0] == NULL) {
- ldb_oom(module->ldb);
- return -1;
- }
- list->count = 1;
- return 1;
- }
- return ltdb_index_dn_simple(module, tree, index_list, list);
-}
-
-
-/*
- list intersection
- list = list & list2
- relies on the lists being sorted
-*/
-static int list_intersect(struct ldb_context *ldb,
- struct dn_list *list, const struct dn_list *list2)
-{
- struct dn_list *list3;
- unsigned int i;
-
- if (list->count == 0 || list2->count == 0) {
- /* 0 & X == 0 */
- return 0;
- }
-
- list3 = talloc(ldb, struct dn_list);
- if (list3 == NULL) {
- return -1;
- }
-
- list3->dn = talloc_array(list3, char *, list->count);
- if (!list3->dn) {
- talloc_free(list3);
- return -1;
- }
- list3->count = 0;
-
- for (i=0;i<list->count;i++) {
- if (ldb_list_find(list->dn[i], list2->dn, list2->count,
- sizeof(char *), (comparison_fn_t)strcmp) != -1) {
- list3->dn[list3->count] = talloc_move(list3->dn, &list->dn[i]);
- list3->count++;
- } else {
- talloc_free(list->dn[i]);
- }
- }
-
- talloc_free(list->dn);
- list->dn = talloc_move(list, &list3->dn);
- list->count = list3->count;
- talloc_free(list3);
-
- return 0;
-}
-
-
-/*
- list union
- list = list | list2
- relies on the lists being sorted
-*/
-static int list_union(struct ldb_context *ldb,
- struct dn_list *list, const struct dn_list *list2)
-{
- unsigned int i;
- char **d;
- unsigned int count = list->count;
-
- if (list->count == 0 && list2->count == 0) {
- /* 0 | 0 == 0 */
- return 0;
- }
-
- d = talloc_realloc(list, list->dn, char *, list->count + list2->count);
- if (!d) {
- return -1;
- }
- list->dn = d;
-
- for (i=0;i<list2->count;i++) {
- if (ldb_list_find(list2->dn[i], list->dn, count,
- sizeof(char *), (comparison_fn_t)strcmp) == -1) {
- list->dn[list->count] = talloc_strdup(list->dn, list2->dn[i]);
- if (!list->dn[list->count]) {
- return -1;
- }
- list->count++;
- }
- }
-
- if (list->count != count) {
- qsort(list->dn, list->count, sizeof(char *), (comparison_fn_t)list_cmp);
- }
-
- return 0;
-}
-
-static int ltdb_index_dn(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list);
-
-
-/*
- OR two index results
- */
-static int ltdb_index_dn_or(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list)
-{
- struct ldb_context *ldb = module->ldb;
- unsigned int i;
- int ret;
-
- ret = -1;
- list->dn = NULL;
- list->count = 0;
-
- for (i=0;i<tree->u.list.num_elements;i++) {
- struct dn_list *list2;
- int v;
-
- list2 = talloc(module, struct dn_list);
- if (list2 == NULL) {
- return -1;
- }
-
- v = ltdb_index_dn(module, tree->u.list.elements[i], index_list, list2);
-
- if (v == 0) {
- /* 0 || X == X */
- if (ret == -1) {
- ret = 0;
- }
- talloc_free(list2);
- continue;
- }
-
- if (v == -1) {
- /* 1 || X == 1 */
- talloc_free(list->dn);
- talloc_free(list2);
- return -1;
- }
-
- if (ret == -1) {
- ret = 1;
- list->dn = talloc_move(list, &list2->dn);
- list->count = list2->count;
- } else {
- if (list_union(ldb, list, list2) == -1) {
- talloc_free(list2);
- return -1;
- }
- ret = 1;
- }
- talloc_free(list2);
- }
-
- if (list->count == 0) {
- return 0;
- }
-
- return ret;
-}
-
-
-/*
- NOT an index results
- */
-static int ltdb_index_dn_not(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list)
-{
- /* the only way to do an indexed not would be if we could
- negate the not via another not or if we knew the total
- number of database elements so we could know that the
- existing expression covered the whole database.
-
- instead, we just give up, and rely on a full index scan
- (unless an outer & manages to reduce the list)
- */
- return -1;
-}
-
-/*
- AND two index results
- */
-static int ltdb_index_dn_and(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list)
-{
- struct ldb_context *ldb = module->ldb;
- unsigned int i;
- int ret;
-
- ret = -1;
- list->dn = NULL;
- list->count = 0;
-
- for (i=0;i<tree->u.list.num_elements;i++) {
- struct dn_list *list2;
- int v;
-
- list2 = talloc(module, struct dn_list);
- if (list2 == NULL) {
- return -1;
- }
-
- v = ltdb_index_dn(module, tree->u.list.elements[i], index_list, list2);
-
- if (v == 0) {
- /* 0 && X == 0 */
- talloc_free(list->dn);
- talloc_free(list2);
- return 0;
- }
-
- if (v == -1) {
- talloc_free(list2);
- continue;
- }
-
- if (ret == -1) {
- ret = 1;
- talloc_free(list->dn);
- list->dn = talloc_move(list, &list2->dn);
- list->count = list2->count;
- } else {
- if (list_intersect(ldb, list, list2) == -1) {
- talloc_free(list2);
- return -1;
- }
- }
-
- talloc_free(list2);
-
- if (list->count == 0) {
- talloc_free(list->dn);
- return 0;
- }
- }
-
- return ret;
-}
-
-/*
- return a list of dn's that might match a indexed search or
- -1 if an error. return 0 for no matches, or 1 for matches
- */
-static int ltdb_index_dn(struct ldb_module *module,
- const struct ldb_parse_tree *tree,
- const struct ldb_message *index_list,
- struct dn_list *list)
-{
- int ret = -1;
-
- switch (tree->operation) {
- case LDB_OP_AND:
- ret = ltdb_index_dn_and(module, tree, index_list, list);
- break;
-
- case LDB_OP_OR:
- ret = ltdb_index_dn_or(module, tree, index_list, list);
- break;
-
- case LDB_OP_NOT:
- ret = ltdb_index_dn_not(module, tree, index_list, list);
- break;
-
- case LDB_OP_EQUALITY:
- ret = ltdb_index_dn_leaf(module, tree, index_list, list);
- break;
-
- case LDB_OP_SUBSTRING:
- case LDB_OP_GREATER:
- case LDB_OP_LESS:
- case LDB_OP_PRESENT:
- case LDB_OP_APPROX:
- case LDB_OP_EXTENDED:
- /* we can't index with fancy bitops yet */
- ret = -1;
- break;
- }
-
- return ret;
-}
-
-/*
- filter a candidate dn_list from an indexed search into a set of results
- extracting just the given attributes
-*/
-static int ltdb_index_filter(const struct dn_list *dn_list,
- struct ldb_handle *handle)
-{
- struct ltdb_context *ac = talloc_get_type(handle->private_data, struct ltdb_context);
- struct ldb_reply *ares = NULL;
- unsigned int i;
-
- if (!ac) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- for (i = 0; i < dn_list->count; i++) {
- struct ldb_dn *dn;
- int ret;
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- handle->state = LDB_ASYNC_DONE;
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ares->message = ldb_msg_new(ares);
- if (!ares->message) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- handle->state = LDB_ASYNC_DONE;
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
-
- dn = ldb_dn_explode(ares->message, dn_list->dn[i]);
- if (dn == NULL) {
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ltdb_search_dn1(ac->module, dn, ares->message);
- talloc_free(dn);
- if (ret == 0) {
- /* the record has disappeared? yes, this can happen */
- talloc_free(ares);
- continue;
- }
-
- if (ret == -1) {
- /* an internal error */
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (!ldb_match_msg(ac->module->ldb, ares->message, ac->tree, ac->base, ac->scope)) {
- talloc_free(ares);
- continue;
- }
-
- /* filter the attributes that the user wants */
- ret = ltdb_filter_attrs(ares->message, ac->attrs);
-
- if (ret == -1) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- handle->state = LDB_ASYNC_DONE;
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ares->type = LDB_REPLY_ENTRY;
- handle->state = LDB_ASYNC_PENDING;
- handle->status = ac->callback(ac->module->ldb, ac->context, ares);
-
- if (handle->status != LDB_SUCCESS) {
- handle->state = LDB_ASYNC_DONE;
- return handle->status;
- }
- }
-
- return LDB_SUCCESS;
-}
-
-/*
- search the database with a LDAP-like expression using indexes
- returns -1 if an indexed search is not possible, in which
- case the caller should call ltdb_search_full()
-*/
-int ltdb_search_indexed(struct ldb_handle *handle)
-{
- struct ltdb_context *ac;
- struct ltdb_private *ltdb;
- struct dn_list *dn_list;
- int ret;
-
- if (!(ac = talloc_get_type(handle->private_data,
- struct ltdb_context)) ||
- !(ltdb = talloc_get_type(ac->module->private_data,
- struct ltdb_private))) {
- return -1;
- }
-
- if (ltdb->cache->indexlist->num_elements == 0 &&
- ac->scope != LDB_SCOPE_BASE) {
- /* no index list? must do full search */
- return -1;
- }
-
- dn_list = talloc(handle, struct dn_list);
- if (dn_list == NULL) {
- return -1;
- }
-
- if (ac->scope == LDB_SCOPE_BASE) {
- /* with BASE searches only one DN can match */
- dn_list->dn = talloc_array(dn_list, char *, 1);
- if (dn_list->dn == NULL) {
- ldb_oom(ac->module->ldb);
- return -1;
- }
- dn_list->dn[0] = ldb_dn_linearize(dn_list, ac->base);
- if (dn_list->dn[0] == NULL) {
- ldb_oom(ac->module->ldb);
- return -1;
- }
- dn_list->count = 1;
- ret = 1;
- } else {
- ret = ltdb_index_dn(ac->module, ac->tree, ltdb->cache->indexlist, dn_list);
- }
-
- if (ret == 1) {
- /* we've got a candidate list - now filter by the full tree
- and extract the needed attributes */
- ret = ltdb_index_filter(dn_list, handle);
- handle->status = ret;
- handle->state = LDB_ASYNC_DONE;
- }
-
- talloc_free(dn_list);
-
- return ret;
-}
-
-/*
- add a index element where this is the first indexed DN for this value
-*/
-static int ltdb_index_add1_new(struct ldb_context *ldb,
- struct ldb_message *msg,
- struct ldb_message_element *el,
- const char *dn)
-{
- struct ldb_message_element *el2;
-
- /* add another entry */
- el2 = talloc_realloc(msg, msg->elements,
- struct ldb_message_element, msg->num_elements+1);
- if (!el2) {
- return -1;
- }
-
- msg->elements = el2;
- msg->elements[msg->num_elements].name = talloc_strdup(msg->elements, LTDB_IDX);
- if (!msg->elements[msg->num_elements].name) {
- return -1;
- }
- msg->elements[msg->num_elements].num_values = 0;
- msg->elements[msg->num_elements].values = talloc(msg->elements, struct ldb_val);
- if (!msg->elements[msg->num_elements].values) {
- return -1;
- }
- msg->elements[msg->num_elements].values[0].length = strlen(dn);
- msg->elements[msg->num_elements].values[0].data = discard_const_p(uint8_t, dn);
- msg->elements[msg->num_elements].num_values = 1;
- msg->num_elements++;
-
- return 0;
-}
-
-
-/*
- add a index element where this is not the first indexed DN for this
- value
-*/
-static int ltdb_index_add1_add(struct ldb_context *ldb,
- struct ldb_message *msg,
- struct ldb_message_element *el,
- int idx,
- const char *dn)
-{
- struct ldb_val *v2;
- unsigned int i;
-
- /* for multi-valued attributes we can end up with repeats */
- for (i=0;i<msg->elements[idx].num_values;i++) {
- if (strcmp(dn, (char *)msg->elements[idx].values[i].data) == 0) {
- return 0;
- }
- }
-
- v2 = talloc_realloc(msg->elements, msg->elements[idx].values,
- struct ldb_val,
- msg->elements[idx].num_values+1);
- if (!v2) {
- return -1;
- }
- msg->elements[idx].values = v2;
-
- msg->elements[idx].values[msg->elements[idx].num_values].length = strlen(dn);
- msg->elements[idx].values[msg->elements[idx].num_values].data = discard_const_p(uint8_t, dn);
- msg->elements[idx].num_values++;
-
- return 0;
-}
-
-/*
- add an index entry for one message element
-*/
-static int ltdb_index_add1(struct ldb_module *module, const char *dn,
- struct ldb_message_element *el, int v_idx)
-{
- struct ldb_context *ldb = module->ldb;
- struct ldb_message *msg;
- struct ldb_dn *dn_key;
- int ret;
- unsigned int i;
-
- msg = talloc(module, struct ldb_message);
- if (msg == NULL) {
- errno = ENOMEM;
- return -1;
- }
-
- dn_key = ldb_dn_key(ldb, el->name, &el->values[v_idx]);
- if (!dn_key) {
- talloc_free(msg);
- errno = ENOMEM;
- return -1;
- }
- talloc_steal(msg, dn_key);
-
- ret = ltdb_search_dn1(module, dn_key, msg);
- if (ret == -1) {
- talloc_free(msg);
- return -1;
- }
-
- if (ret == 0) {
- msg->dn = dn_key;
- msg->num_elements = 0;
- msg->elements = NULL;
- }
-
- for (i=0;i<msg->num_elements;i++) {
- if (strcmp(LTDB_IDX, msg->elements[i].name) == 0) {
- break;
- }
- }
-
- if (i == msg->num_elements) {
- ret = ltdb_index_add1_new(ldb, msg, el, dn);
- } else {
- ret = ltdb_index_add1_add(ldb, msg, el, i, dn);
- }
-
- if (ret == 0) {
- ret = ltdb_store(module, msg, TDB_REPLACE);
- }
-
- talloc_free(msg);
-
- return ret;
-}
-
-static int ltdb_index_add0(struct ldb_module *module, const char *dn,
- struct ldb_message_element *elements, int num_el)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- int ret;
- unsigned int i, j;
-
- if (dn[0] == '@') {
- return 0;
- }
-
- if (ltdb->cache->indexlist->num_elements == 0) {
- /* no indexed fields */
- return 0;
- }
-
- for (i = 0; i < num_el; i++) {
- ret = ldb_msg_find_idx(ltdb->cache->indexlist, elements[i].name,
- NULL, LTDB_IDXATTR);
- if (ret == -1) {
- continue;
- }
- for (j = 0; j < elements[i].num_values; j++) {
- ret = ltdb_index_add1(module, dn, &elements[i], j);
- if (ret == -1) {
- return -1;
- }
- }
- }
-
- return 0;
-}
-
-/*
- add the index entries for a new record
- return -1 on failure
-*/
-int ltdb_index_add(struct ldb_module *module, const struct ldb_message *msg)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- char *dn;
- int ret;
-
- dn = ldb_dn_linearize(ltdb, msg->dn);
- if (dn == NULL) {
- return -1;
- }
-
- ret = ltdb_index_add0(module, dn, msg->elements, msg->num_elements);
-
- talloc_free(dn);
-
- return ret;
-}
-
-
-/*
- delete an index entry for one message element
-*/
-int ltdb_index_del_value(struct ldb_module *module, const char *dn,
- struct ldb_message_element *el, int v_idx)
-{
- struct ldb_context *ldb = module->ldb;
- struct ldb_message *msg;
- struct ldb_dn *dn_key;
- int ret, i;
- unsigned int j;
-
- if (dn[0] == '@') {
- return 0;
- }
-
- dn_key = ldb_dn_key(ldb, el->name, &el->values[v_idx]);
- if (!dn_key) {
- return -1;
- }
-
- msg = talloc(dn_key, struct ldb_message);
- if (msg == NULL) {
- talloc_free(dn_key);
- return -1;
- }
-
- ret = ltdb_search_dn1(module, dn_key, msg);
- if (ret == -1) {
- talloc_free(dn_key);
- return -1;
- }
-
- if (ret == 0) {
- /* it wasn't indexed. Did we have an earlier error? If we did then
- its gone now */
- talloc_free(dn_key);
- return 0;
- }
-
- i = ldb_msg_find_idx(msg, dn, &j, LTDB_IDX);
- if (i == -1) {
- ldb_debug(ldb, LDB_DEBUG_ERROR,
- "ERROR: dn %s not found in %s\n", dn,
- ldb_dn_linearize(dn_key, dn_key));
- /* it ain't there. hmmm */
- talloc_free(dn_key);
- return 0;
- }
-
- if (j != msg->elements[i].num_values - 1) {
- memmove(&msg->elements[i].values[j],
- &msg->elements[i].values[j+1],
- (msg->elements[i].num_values-(j+1)) *
- sizeof(msg->elements[i].values[0]));
- }
- msg->elements[i].num_values--;
-
- if (msg->elements[i].num_values == 0) {
- ret = ltdb_delete_noindex(module, dn_key);
- } else {
- ret = ltdb_store(module, msg, TDB_REPLACE);
- }
-
- talloc_free(dn_key);
-
- return ret;
-}
-
-/*
- delete the index entries for a record
- return -1 on failure
-*/
-int ltdb_index_del(struct ldb_module *module, const struct ldb_message *msg)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- int ret;
- char *dn;
- unsigned int i, j;
-
- /* find the list of indexed fields */
- if (ltdb->cache->indexlist->num_elements == 0) {
- /* no indexed fields */
- return 0;
- }
-
- if (ldb_dn_is_special(msg->dn)) {
- return 0;
- }
-
- dn = ldb_dn_linearize(ltdb, msg->dn);
- if (dn == NULL) {
- return -1;
- }
-
- for (i = 0; i < msg->num_elements; i++) {
- ret = ldb_msg_find_idx(ltdb->cache->indexlist, msg->elements[i].name,
- NULL, LTDB_IDXATTR);
- if (ret == -1) {
- continue;
- }
- for (j = 0; j < msg->elements[i].num_values; j++) {
- ret = ltdb_index_del_value(module, dn, &msg->elements[i], j);
- if (ret == -1) {
- talloc_free(dn);
- return -1;
- }
- }
- }
-
- talloc_free(dn);
- return 0;
-}
-
-
-/*
- traversal function that deletes all @INDEX records
-*/
-static int delete_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void *state)
-{
- const char *dn = "DN=" LTDB_INDEX ":";
- if (strncmp((char *)key.dptr, dn, strlen(dn)) == 0) {
- return tdb_delete(tdb, key);
- }
- return 0;
-}
-
-/*
- traversal function that adds @INDEX records during a re index
-*/
-static int re_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void *state)
-{
- struct ldb_module *module = (struct ldb_module *)state;
- struct ldb_message *msg;
- char *dn = NULL;
- int ret;
- TDB_DATA key2;
-
- if (strncmp((char *)key.dptr, "DN=@", 4) == 0 ||
- strncmp((char *)key.dptr, "DN=", 3) != 0) {
- return 0;
- }
-
- msg = talloc(module, struct ldb_message);
- if (msg == NULL) {
- return -1;
- }
-
- ret = ltdb_unpack_data(module, &data, msg);
- if (ret != 0) {
- talloc_free(msg);
- return -1;
- }
-
- /* check if the DN key has changed, perhaps due to the
- case insensitivity of an element changing */
- key2 = ltdb_key(module, msg->dn);
- if (key2.dptr == NULL) {
- /* probably a corrupt record ... darn */
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "Invalid DN in re_index: %s\n",
- ldb_dn_linearize(msg, msg->dn));
- talloc_free(msg);
- return 0;
- }
- if (strcmp((char *)key2.dptr, (char *)key.dptr) != 0) {
- tdb_delete(tdb, key);
- tdb_store(tdb, key2, data, 0);
- }
- talloc_free(key2.dptr);
-
- if (msg->dn == NULL) {
- dn = (char *)key.dptr + 3;
- } else {
- if (!(dn = ldb_dn_linearize(msg->dn, msg->dn))) {
- talloc_free(msg);
- return -1;
- }
- }
-
- ret = ltdb_index_add0(module, dn, msg->elements, msg->num_elements);
-
- talloc_free(msg);
-
- return ret;
-}
-
-/*
- force a complete reindex of the database
-*/
-int ltdb_reindex(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- int ret;
-
- if (ltdb_cache_reload(module) != 0) {
- return -1;
- }
-
- /* first traverse the database deleting any @INDEX records */
- ret = tdb_traverse(ltdb->tdb, delete_index, NULL);
- if (ret == -1) {
- return -1;
- }
-
- /* now traverse adding any indexes for normal LDB records */
- ret = tdb_traverse(ltdb->tdb, re_index, module);
- if (ret == -1) {
- return -1;
- }
-
- return 0;
-}
diff --git a/source/lib/ldb/ldb_tdb/ldb_pack.c b/source/lib/ldb/ldb_tdb/ldb_pack.c
deleted file mode 100644
index 45fcf354a5e..00000000000
--- a/source/lib/ldb/ldb_tdb/ldb_pack.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb pack/unpack
- *
- * Description: pack/unpack routines for ldb messages as key/value blobs
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/ldb_tdb/ldb_tdb.h"
-
-/* change this if the data format ever changes */
-#define LTDB_PACKING_FORMAT 0x26011967
-
-/* old packing formats */
-#define LTDB_PACKING_FORMAT_NODN 0x26011966
-
-/* use a portable integer format */
-static void put_uint32(uint8_t *p, int ofs, unsigned int val)
-{
- p += ofs;
- p[0] = val&0xFF;
- p[1] = (val>>8) & 0xFF;
- p[2] = (val>>16) & 0xFF;
- p[3] = (val>>24) & 0xFF;
-}
-
-static unsigned int pull_uint32(uint8_t *p, int ofs)
-{
- p += ofs;
- return p[0] | (p[1]<<8) | (p[2]<<16) | (p[3]<<24);
-}
-
-static int attribute_storable_values(const struct ldb_message_element *el)
-{
- if (el->num_values == 0) return 0;
-
- if (ldb_attr_cmp(el->name, "dn") == 0) return 0;
-
- if (ldb_attr_cmp(el->name, "distinguishedName") == 0) return 0;
-
- return el->num_values;
-}
-
-/*
- pack a ldb message into a linear buffer in a TDB_DATA
-
- note that this routine avoids saving elements with zero values,
- as these are equivalent to having no element
-
- caller frees the data buffer after use
-*/
-int ltdb_pack_data(struct ldb_module *module,
- const struct ldb_message *message,
- struct TDB_DATA *data)
-{
- struct ldb_context *ldb = module->ldb;
- unsigned int i, j, real_elements=0;
- size_t size;
- char *dn;
- uint8_t *p;
- size_t len;
-
- dn = ldb_dn_linearize(ldb, message->dn);
- if (dn == NULL) {
- errno = ENOMEM;
- return -1;
- }
-
- /* work out how big it needs to be */
- size = 8;
-
- size += 1 + strlen(dn);
-
- for (i=0;i<message->num_elements;i++) {
- if (attribute_storable_values(&message->elements[i]) == 0) {
- continue;
- }
-
- real_elements++;
-
- size += 1 + strlen(message->elements[i].name) + 4;
- for (j=0;j<message->elements[i].num_values;j++) {
- size += 4 + message->elements[i].values[j].length + 1;
- }
- }
-
- /* allocate it */
- data->dptr = talloc_array(ldb, uint8_t, size);
- if (!data->dptr) {
- talloc_free(dn);
- errno = ENOMEM;
- return -1;
- }
- data->dsize = size;
-
- p = (uint8_t *)data->dptr;
- put_uint32(p, 0, LTDB_PACKING_FORMAT);
- put_uint32(p, 4, real_elements);
- p += 8;
-
- /* the dn needs to be packed so we can be case preserving
- while hashing on a case folded dn */
- len = strlen(dn);
- memcpy(p, dn, len+1);
- p += len + 1;
-
- for (i=0;i<message->num_elements;i++) {
- if (attribute_storable_values(&message->elements[i]) == 0) {
- continue;
- }
- len = strlen(message->elements[i].name);
- memcpy(p, message->elements[i].name, len+1);
- p += len + 1;
- put_uint32(p, 0, message->elements[i].num_values);
- p += 4;
- for (j=0;j<message->elements[i].num_values;j++) {
- put_uint32(p, 0, message->elements[i].values[j].length);
- memcpy(p+4, message->elements[i].values[j].data,
- message->elements[i].values[j].length);
- p[4+message->elements[i].values[j].length] = 0;
- p += 4 + message->elements[i].values[j].length + 1;
- }
- }
-
- talloc_free(dn);
- return 0;
-}
-
-/*
- unpack a ldb message from a linear buffer in TDB_DATA
-
- Free with ltdb_unpack_data_free()
-*/
-int ltdb_unpack_data(struct ldb_module *module,
- const struct TDB_DATA *data,
- struct ldb_message *message)
-{
- struct ldb_context *ldb = module->ldb;
- uint8_t *p;
- unsigned int remaining;
- unsigned int i, j;
- unsigned format;
- size_t len;
-
- message->elements = NULL;
-
- p = (uint8_t *)data->dptr;
- if (data->dsize < 8) {
- errno = EIO;
- goto failed;
- }
-
- format = pull_uint32(p, 0);
- message->num_elements = pull_uint32(p, 4);
- p += 8;
-
- remaining = data->dsize - 8;
-
- switch (format) {
- case LTDB_PACKING_FORMAT_NODN:
- message->dn = NULL;
- break;
-
- case LTDB_PACKING_FORMAT:
- len = strnlen((char *)p, remaining);
- if (len == remaining) {
- errno = EIO;
- goto failed;
- }
- message->dn = ldb_dn_explode(message, (char *)p);
- if (message->dn == NULL) {
- errno = ENOMEM;
- goto failed;
- }
- remaining -= len + 1;
- p += len + 1;
- break;
-
- default:
- errno = EIO;
- goto failed;
- }
-
- if (message->num_elements == 0) {
- message->elements = NULL;
- return 0;
- }
-
- if (message->num_elements > remaining / 6) {
- errno = EIO;
- goto failed;
- }
-
- message->elements = talloc_array(message, struct ldb_message_element, message->num_elements);
- if (!message->elements) {
- errno = ENOMEM;
- goto failed;
- }
-
- memset(message->elements, 0,
- message->num_elements * sizeof(struct ldb_message_element));
-
- for (i=0;i<message->num_elements;i++) {
- if (remaining < 10) {
- errno = EIO;
- goto failed;
- }
- len = strnlen((char *)p, remaining-6);
- if (len == remaining-6) {
- errno = EIO;
- goto failed;
- }
- message->elements[i].flags = 0;
- message->elements[i].name = talloc_strndup(message->elements, (char *)p, len);
- if (message->elements[i].name == NULL) {
- errno = ENOMEM;
- goto failed;
- }
- remaining -= len + 1;
- p += len + 1;
- message->elements[i].num_values = pull_uint32(p, 0);
- message->elements[i].values = NULL;
- if (message->elements[i].num_values != 0) {
- message->elements[i].values = talloc_array(message->elements,
- struct ldb_val,
- message->elements[i].num_values);
- if (!message->elements[i].values) {
- errno = ENOMEM;
- goto failed;
- }
- }
- p += 4;
- remaining -= 4;
- for (j=0;j<message->elements[i].num_values;j++) {
- len = pull_uint32(p, 0);
- if (len > remaining-5) {
- errno = EIO;
- goto failed;
- }
-
- message->elements[i].values[j].length = len;
- message->elements[i].values[j].data = (uint8_t *)talloc_size(message->elements[i].values, len+1);
- if (message->elements[i].values[j].data == NULL) {
- errno = ENOMEM;
- goto failed;
- }
- memcpy(message->elements[i].values[j].data, p+4, len);
- message->elements[i].values[j].data[len] = 0;
-
- remaining -= len+4+1;
- p += len+4+1;
- }
- }
-
- if (remaining != 0) {
- ldb_debug(ldb, LDB_DEBUG_ERROR,
- "Error: %d bytes unread in ltdb_unpack_data\n", remaining);
- }
-
- return 0;
-
-failed:
- talloc_free(message->elements);
- return -1;
-}
diff --git a/source/lib/ldb/ldb_tdb/ldb_search.c b/source/lib/ldb/ldb_tdb/ldb_search.c
deleted file mode 100644
index 7a6fe263fdd..00000000000
--- a/source/lib/ldb/ldb_tdb/ldb_search.c
+++ /dev/null
@@ -1,528 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb search functions
- *
- * Description: functions to search ldb+tdb databases
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/ldb_tdb/ldb_tdb.h"
-
-/*
- add one element to a message
-*/
-static int msg_add_element(struct ldb_message *ret,
- const struct ldb_message_element *el,
- int check_duplicates)
-{
- unsigned int i;
- struct ldb_message_element *e2, *elnew;
-
- if (check_duplicates && ldb_msg_find_element(ret, el->name)) {
- /* its already there */
- return 0;
- }
-
- e2 = talloc_realloc(ret, ret->elements, struct ldb_message_element, ret->num_elements+1);
- if (!e2) {
- return -1;
- }
- ret->elements = e2;
-
- elnew = &e2[ret->num_elements];
-
- elnew->name = talloc_strdup(ret->elements, el->name);
- if (!elnew->name) {
- return -1;
- }
-
- if (el->num_values) {
- elnew->values = talloc_array(ret->elements, struct ldb_val, el->num_values);
- if (!elnew->values) {
- return -1;
- }
- } else {
- elnew->values = NULL;
- }
-
- for (i=0;i<el->num_values;i++) {
- elnew->values[i] = ldb_val_dup(elnew->values, &el->values[i]);
- if (elnew->values[i].length != el->values[i].length) {
- return -1;
- }
- }
-
- elnew->num_values = el->num_values;
-
- ret->num_elements++;
-
- return 0;
-}
-
-/*
- add the special distinguishedName element
-*/
-static int msg_add_distinguished_name(struct ldb_message *msg)
-{
- struct ldb_message_element el;
- struct ldb_val val;
- int ret;
-
- el.flags = 0;
- el.name = "distinguishedName";
- el.num_values = 1;
- el.values = &val;
- val.data = (uint8_t *)ldb_dn_linearize(msg, msg->dn);
- val.length = strlen((char *)val.data);
-
- ret = msg_add_element(msg, &el, 1);
- return ret;
-}
-
-/*
- add all elements from one message into another
- */
-static int msg_add_all_elements(struct ldb_module *module, struct ldb_message *ret,
- const struct ldb_message *msg)
-{
- struct ldb_context *ldb = module->ldb;
- unsigned int i;
- int check_duplicates = (ret->num_elements != 0);
-
- if (msg_add_distinguished_name(ret) != 0) {
- return -1;
- }
-
- for (i=0;i<msg->num_elements;i++) {
- const struct ldb_attrib_handler *h;
- h = ldb_attrib_handler(ldb, msg->elements[i].name);
- if (h->flags & LDB_ATTR_FLAG_HIDDEN) {
- continue;
- }
- if (msg_add_element(ret, &msg->elements[i],
- check_duplicates) != 0) {
- return -1;
- }
- }
-
- return 0;
-}
-
-
-/*
- pull the specified list of attributes from a message
- */
-static struct ldb_message *ltdb_pull_attrs(struct ldb_module *module,
- TALLOC_CTX *mem_ctx,
- const struct ldb_message *msg,
- const char * const *attrs)
-{
- struct ldb_message *ret;
- int i;
-
- ret = talloc(mem_ctx, struct ldb_message);
- if (!ret) {
- return NULL;
- }
-
- ret->dn = ldb_dn_copy(ret, msg->dn);
- if (!ret->dn) {
- talloc_free(ret);
- return NULL;
- }
-
- ret->num_elements = 0;
- ret->elements = NULL;
-
- if (!attrs) {
- if (msg_add_all_elements(module, ret, msg) != 0) {
- talloc_free(ret);
- return NULL;
- }
- return ret;
- }
-
- for (i=0;attrs[i];i++) {
- struct ldb_message_element *el;
-
- if (strcmp(attrs[i], "*") == 0) {
- if (msg_add_all_elements(module, ret, msg) != 0) {
- talloc_free(ret);
- return NULL;
- }
- continue;
- }
-
- if (ldb_attr_cmp(attrs[i], "distinguishedName") == 0) {
- if (msg_add_distinguished_name(ret) != 0) {
- return NULL;
- }
- continue;
- }
-
- el = ldb_msg_find_element(msg, attrs[i]);
- if (!el) {
- continue;
- }
- if (msg_add_element(ret, el, 1) != 0) {
- talloc_free(ret);
- return NULL;
- }
- }
-
- return ret;
-}
-
-
-/*
- search the database for a single simple dn, returning all attributes
- in a single message
-
- return 1 on success, 0 on record-not-found and -1 on error
-*/
-int ltdb_search_dn1(struct ldb_module *module, const struct ldb_dn *dn, struct ldb_message *msg)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- int ret;
- TDB_DATA tdb_key, tdb_data;
-
- memset(msg, 0, sizeof(*msg));
-
- /* form the key */
- tdb_key = ltdb_key(module, dn);
- if (!tdb_key.dptr) {
- return -1;
- }
-
- tdb_data = tdb_fetch(ltdb->tdb, tdb_key);
- talloc_free(tdb_key.dptr);
- if (!tdb_data.dptr) {
- return 0;
- }
-
- msg->num_elements = 0;
- msg->elements = NULL;
-
- ret = ltdb_unpack_data(module, &tdb_data, msg);
- free(tdb_data.dptr);
- if (ret == -1) {
- return -1;
- }
-
- if (!msg->dn) {
- msg->dn = ldb_dn_copy(msg, dn);
- }
- if (!msg->dn) {
- return -1;
- }
-
- return 1;
-}
-
-/*
- lock the database for read - use by ltdb_search
-*/
-static int ltdb_lock_read(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- return tdb_lockall_read(ltdb->tdb);
-}
-
-/*
- unlock the database after a ltdb_lock_read()
-*/
-static int ltdb_unlock_read(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- (struct ltdb_private *)module->private_data;
- return tdb_unlockall_read(ltdb->tdb);
-}
-
-/*
- add a set of attributes from a record to a set of results
- return 0 on success, -1 on failure
-*/
-int ltdb_add_attr_results(struct ldb_module *module,
- TALLOC_CTX *mem_ctx,
- struct ldb_message *msg,
- const char * const attrs[],
- unsigned int *count,
- struct ldb_message ***res)
-{
- struct ldb_message *msg2;
- struct ldb_message **res2;
-
- /* pull the attributes that the user wants */
- msg2 = ltdb_pull_attrs(module, mem_ctx, msg, attrs);
- if (!msg2) {
- return -1;
- }
-
- /* add to the results list */
- res2 = talloc_realloc(mem_ctx, *res, struct ldb_message *, (*count)+2);
- if (!res2) {
- talloc_free(msg2);
- return -1;
- }
-
- (*res) = res2;
-
- (*res)[*count] = talloc_move(*res, &msg2);
- (*res)[(*count)+1] = NULL;
- (*count)++;
-
- return 0;
-}
-
-
-
-/*
- filter the specified list of attributes from a message
- removing not requested attrs.
- */
-int ltdb_filter_attrs(struct ldb_message *msg, const char * const *attrs)
-{
- int i, keep_all = 0;
-
- if (attrs) {
- /* check for special attrs */
- for (i = 0; attrs[i]; i++) {
- if (strcmp(attrs[i], "*") == 0) {
- keep_all = 1;
- break;
- }
-
- if (ldb_attr_cmp(attrs[i], "distinguishedName") == 0) {
- if (msg_add_distinguished_name(msg) != 0) {
- return -1;
- }
- }
- }
- } else {
- keep_all = 1;
- }
-
- if (keep_all) {
- if (msg_add_distinguished_name(msg) != 0) {
- return -1;
- }
- return 0;
- }
-
- for (i = 0; i < msg->num_elements; i++) {
- int j, found;
-
- for (j = 0, found = 0; attrs[j]; j++) {
- if (ldb_attr_cmp(msg->elements[i].name, attrs[j]) == 0) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- ldb_msg_remove_attr(msg, msg->elements[i].name);
- i--;
- }
- }
-
- return 0;
-}
-
-/*
- search function for a non-indexed search
- */
-static int search_func(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void *state)
-{
- struct ldb_handle *handle = talloc_get_type(state, struct ldb_handle);
- struct ltdb_context *ac = talloc_get_type(handle->private_data, struct ltdb_context);
- struct ldb_reply *ares = NULL;
- int ret;
-
- if (key.dsize < 4 ||
- strncmp((char *)key.dptr, "DN=", 3) != 0) {
- return 0;
- }
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- handle->state = LDB_ASYNC_DONE;
- return -1;
- }
-
- ares->message = ldb_msg_new(ares);
- if (!ares->message) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- handle->state = LDB_ASYNC_DONE;
- talloc_free(ares);
- return -1;
- }
-
- /* unpack the record */
- ret = ltdb_unpack_data(ac->module, &data, ares->message);
- if (ret == -1) {
- talloc_free(ares);
- return -1;
- }
-
- if (!ares->message->dn) {
- ares->message->dn = ldb_dn_explode(ares->message, (char *)key.dptr + 3);
- if (ares->message->dn == NULL) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- handle->state = LDB_ASYNC_DONE;
- talloc_free(ares);
- return -1;
- }
- }
-
- /* see if it matches the given expression */
- if (!ldb_match_msg(ac->module->ldb, ares->message, ac->tree,
- ac->base, ac->scope)) {
- talloc_free(ares);
- return 0;
- }
-
- /* filter the attributes that the user wants */
- ret = ltdb_filter_attrs(ares->message, ac->attrs);
-
- if (ret == -1) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- handle->state = LDB_ASYNC_DONE;
- talloc_free(ares);
- return -1;
- }
-
- ares->type = LDB_REPLY_ENTRY;
- handle->state = LDB_ASYNC_PENDING;
- handle->status = ac->callback(ac->module->ldb, ac->context, ares);
-
- if (handle->status != LDB_SUCCESS) {
- /* don't try to free ares here, the callback is in charge of that */
- return -1;
- }
-
- return 0;
-}
-
-
-/*
- search the database with a LDAP-like expression.
- this is the "full search" non-indexed variant
-*/
-static int ltdb_search_full(struct ldb_handle *handle)
-{
- struct ltdb_context *ac = talloc_get_type(handle->private_data, struct ltdb_context);
- struct ltdb_private *ltdb = talloc_get_type(ac->module->private_data, struct ltdb_private);
- int ret;
-
- ret = tdb_traverse_read(ltdb->tdb, search_func, handle);
-
- if (ret == -1) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- }
-
- handle->state = LDB_ASYNC_DONE;
- return LDB_SUCCESS;
-}
-
-/*
- search the database with a LDAP-like expression.
- choses a search method
-*/
-int ltdb_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct ltdb_private *ltdb = talloc_get_type(module->private_data, struct ltdb_private);
- struct ltdb_context *ltdb_ac;
- struct ldb_reply *ares;
- int ret;
-
- if ((req->op.search.base == NULL || ldb_dn_get_comp_num(req->op.search.base) == 0) &&
- (req->op.search.scope == LDB_SCOPE_BASE || req->op.search.scope == LDB_SCOPE_ONELEVEL))
- return LDB_ERR_OPERATIONS_ERROR;
-
- if (ltdb_lock_read(module) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (ltdb_cache_load(module) != 0) {
- ltdb_unlock_read(module);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (req->op.search.tree == NULL) {
- ltdb_unlock_read(module);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->handle = init_ltdb_handle(ltdb, module, req);
- if (req->handle == NULL) {
- ltdb_unlock_read(module);
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ltdb_ac = talloc_get_type(req->handle->private_data, struct ltdb_context);
-
- ltdb_ac->tree = req->op.search.tree;
- ltdb_ac->scope = req->op.search.scope;
- ltdb_ac->base = req->op.search.base;
- ltdb_ac->attrs = req->op.search.attrs;
-
- ret = ltdb_search_indexed(req->handle);
- if (ret == -1) {
- ret = ltdb_search_full(req->handle);
- }
- if (ret != LDB_SUCCESS) {
- ldb_set_errstring(module->ldb, "Indexed and full searches both failed!\n");
- req->handle->state = LDB_ASYNC_DONE;
- req->handle->status = ret;
- }
-
- /* Finally send an LDB_REPLY_DONE packet when searching is finished */
-
- ares = talloc_zero(req, struct ldb_reply);
- if (!ares) {
- ltdb_unlock_read(module);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->handle->state = LDB_ASYNC_DONE;
- ares->type = LDB_REPLY_DONE;
-
- ret = req->callback(module->ldb, req->context, ares);
- req->handle->status = ret;
-
- ltdb_unlock_read(module);
-
- return LDB_SUCCESS;
-}
-
diff --git a/source/lib/ldb/ldb_tdb/ldb_tdb.c b/source/lib/ldb/ldb_tdb/ldb_tdb.c
deleted file mode 100644
index 8b53982fdb3..00000000000
--- a/source/lib/ldb/ldb_tdb/ldb_tdb.c
+++ /dev/null
@@ -1,1085 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
- Copyright (C) Stefan Metzmacher 2004
- Copyright (C) Simo Sorce 2006
-
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb_tdb
- *
- * Component: ldb tdb backend
- *
- * Description: core functions for tdb backend
- *
- * Author: Andrew Tridgell
- * Author: Stefan Metzmacher
- *
- * Modifications:
- *
- * - description: make the module use asyncronous calls
- * date: Feb 2006
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/ldb_tdb/ldb_tdb.h"
-
-int ltdb_check_special_dn(struct ldb_module *module, const struct ldb_message *msg);
-
-/*
- map a tdb error code to a ldb error code
-*/
-static int ltdb_err_map(enum TDB_ERROR tdb_code)
-{
- switch (tdb_code) {
- case TDB_SUCCESS:
- return LDB_SUCCESS;
- case TDB_ERR_CORRUPT:
- case TDB_ERR_OOM:
- case TDB_ERR_EINVAL:
- return LDB_ERR_OPERATIONS_ERROR;
- case TDB_ERR_IO:
- return LDB_ERR_PROTOCOL_ERROR;
- case TDB_ERR_LOCK:
- case TDB_ERR_NOLOCK:
- return LDB_ERR_BUSY;
- case TDB_ERR_LOCK_TIMEOUT:
- return LDB_ERR_TIME_LIMIT_EXCEEDED;
- case TDB_ERR_EXISTS:
- return LDB_ERR_ENTRY_ALREADY_EXISTS;
- case TDB_ERR_NOEXIST:
- return LDB_ERR_NO_SUCH_OBJECT;
- case TDB_ERR_RDONLY:
- return LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS;
- }
- return LDB_ERR_OTHER;
-}
-
-
-struct ldb_handle *init_ltdb_handle(struct ltdb_private *ltdb, struct ldb_module *module,
- struct ldb_request *req)
-{
- struct ltdb_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(req, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc_zero(h, struct ltdb_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->context = req->context;
- ac->callback = req->callback;
-
- return h;
-}
-
-/*
- form a TDB_DATA for a record key
- caller frees
-
- note that the key for a record can depend on whether the
- dn refers to a case sensitive index record or not
-*/
-struct TDB_DATA ltdb_key(struct ldb_module *module, const struct ldb_dn *dn)
-{
- struct ldb_context *ldb = module->ldb;
- TDB_DATA key;
- char *key_str = NULL;
- char *dn_folded = NULL;
-
- /*
- most DNs are case insensitive. The exception is index DNs for
- case sensitive attributes
-
- there are 3 cases dealt with in this code:
-
- 1) if the dn doesn't start with @ then uppercase the attribute
- names and the attributes values of case insensitive attributes
- 2) if the dn starts with @ then leave it alone - the indexing code handles
- the rest
- */
-
- dn_folded = ldb_dn_linearize_casefold(ldb, ldb, dn);
- if (!dn_folded) {
- goto failed;
- }
-
- key_str = talloc_asprintf(ldb, "DN=%s", dn_folded);
-
- talloc_free(dn_folded);
-
- if (!key_str) {
- goto failed;
- }
-
- key.dptr = (uint8_t *)key_str;
- key.dsize = strlen(key_str) + 1;
-
- return key;
-
-failed:
- errno = ENOMEM;
- key.dptr = NULL;
- key.dsize = 0;
- return key;
-}
-
-/*
- check special dn's have valid attributes
- currently only @ATTRIBUTES is checked
-*/
-int ltdb_check_special_dn(struct ldb_module *module, const struct ldb_message *msg)
-{
- int i, j;
-
- if (! ldb_dn_is_special(msg->dn) ||
- ! ldb_dn_check_special(msg->dn, LTDB_ATTRIBUTES)) {
- return 0;
- }
-
- /* we have @ATTRIBUTES, let's check attributes are fine */
- /* should we check that we deny multivalued attributes ? */
- for (i = 0; i < msg->num_elements; i++) {
- for (j = 0; j < msg->elements[i].num_values; j++) {
- if (ltdb_check_at_attributes_values(&msg->elements[i].values[j]) != 0) {
- ldb_set_errstring(module->ldb, "Invalid attribute value in an @ATTRIBUTES entry");
- return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
- }
- }
- }
-
- return 0;
-}
-
-
-/*
- we've made a modification to a dn - possibly reindex and
- update sequence number
-*/
-static int ltdb_modified(struct ldb_module *module, const struct ldb_dn *dn)
-{
- int ret = 0;
-
- if (ldb_dn_is_special(dn) &&
- (ldb_dn_check_special(dn, LTDB_INDEXLIST) ||
- ldb_dn_check_special(dn, LTDB_ATTRIBUTES)) ) {
- ret = ltdb_reindex(module);
- }
-
- if (ret == 0 &&
- !(ldb_dn_is_special(dn) &&
- ldb_dn_check_special(dn, LTDB_BASEINFO)) ) {
- ret = ltdb_increase_sequence_number(module);
- }
-
- return ret;
-}
-
-/*
- store a record into the db
-*/
-int ltdb_store(struct ldb_module *module, const struct ldb_message *msg, int flgs)
-{
- struct ltdb_private *ltdb =
- talloc_get_type(module->private_data, struct ltdb_private);
- TDB_DATA tdb_key, tdb_data;
- int ret;
-
- tdb_key = ltdb_key(module, msg->dn);
- if (!tdb_key.dptr) {
- return LDB_ERR_OTHER;
- }
-
- ret = ltdb_pack_data(module, msg, &tdb_data);
- if (ret == -1) {
- talloc_free(tdb_key.dptr);
- return LDB_ERR_OTHER;
- }
-
- ret = tdb_store(ltdb->tdb, tdb_key, tdb_data, flgs);
- if (ret == -1) {
- ret = ltdb_err_map(tdb_error(ltdb->tdb));
- goto done;
- }
-
- ret = ltdb_index_add(module, msg);
- if (ret == -1) {
- tdb_delete(ltdb->tdb, tdb_key);
- }
-
-done:
- talloc_free(tdb_key.dptr);
- talloc_free(tdb_data.dptr);
-
- return ret;
-}
-
-
-static int ltdb_add_internal(struct ldb_module *module, const struct ldb_message *msg)
-{
- int ret;
-
- ret = ltdb_check_special_dn(module, msg);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- if (ltdb_cache_load(module) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ltdb_store(module, msg, TDB_INSERT);
-
- if (ret == LDB_ERR_ENTRY_ALREADY_EXISTS) {
- char *dn;
-
- dn = ldb_dn_linearize(module, msg->dn);
- if (!dn) {
- return ret;
- }
- ldb_asprintf_errstring(module->ldb, "Entry %s already exists", dn);
- talloc_free(dn);
- return ret;
- }
-
- if (ret == LDB_SUCCESS) {
- ret = ltdb_modified(module, msg->dn);
- if (ret != LDB_SUCCESS) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- }
-
- return ret;
-}
-
-/*
- add a record to the database
-*/
-static int ltdb_add(struct ldb_module *module, struct ldb_request *req)
-{
- struct ltdb_private *ltdb = talloc_get_type(module->private_data, struct ltdb_private);
- struct ltdb_context *ltdb_ac;
- int tret, ret = LDB_SUCCESS;
-
- if (req->controls != NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "Controls should not reach the ldb_tdb backend!\n");
- if (check_critical_controls(req->controls)) {
- return LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION;
- }
- }
-
- req->handle = init_ltdb_handle(ltdb, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ltdb_ac = talloc_get_type(req->handle->private_data, struct ltdb_context);
-
- tret = ltdb_add_internal(module, req->op.add.message);
- if (tret != LDB_SUCCESS) {
- req->handle->status = tret;
- goto done;
- }
-
- if (ltdb_ac->callback) {
- ret = ltdb_ac->callback(module->ldb, ltdb_ac->context, NULL);
- }
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/*
- delete a record from the database, not updating indexes (used for deleting
- index records)
-*/
-int ltdb_delete_noindex(struct ldb_module *module, const struct ldb_dn *dn)
-{
- struct ltdb_private *ltdb =
- talloc_get_type(module->private_data, struct ltdb_private);
- TDB_DATA tdb_key;
- int ret;
-
- tdb_key = ltdb_key(module, dn);
- if (!tdb_key.dptr) {
- return LDB_ERR_OTHER;
- }
-
- ret = tdb_delete(ltdb->tdb, tdb_key);
- talloc_free(tdb_key.dptr);
-
- if (ret != 0) {
- ret = ltdb_err_map(tdb_error(ltdb->tdb));
- }
-
- return ret;
-}
-
-static int ltdb_delete_internal(struct ldb_module *module, const struct ldb_dn *dn)
-{
- struct ldb_message *msg;
- int ret;
-
- msg = talloc(module, struct ldb_message);
- if (msg == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* in case any attribute of the message was indexed, we need
- to fetch the old record */
- ret = ltdb_search_dn1(module, dn, msg);
- if (ret != 1) {
- /* not finding the old record is an error */
- talloc_free(msg);
- return LDB_ERR_NO_SUCH_OBJECT;
- }
-
- ret = ltdb_delete_noindex(module, dn);
- if (ret != LDB_SUCCESS) {
- talloc_free(msg);
- return LDB_ERR_NO_SUCH_OBJECT;
- }
-
- /* remove any indexed attributes */
- ret = ltdb_index_del(module, msg);
- if (ret != LDB_SUCCESS) {
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ltdb_modified(module, dn);
- if (ret != LDB_SUCCESS) {
- talloc_free(msg);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- talloc_free(msg);
- return LDB_SUCCESS;
-}
-
-/*
- delete a record from the database
-*/
-static int ltdb_delete(struct ldb_module *module, struct ldb_request *req)
-{
- struct ltdb_private *ltdb = talloc_get_type(module->private_data, struct ltdb_private);
- struct ltdb_context *ltdb_ac;
- int tret, ret = LDB_SUCCESS;
-
- if (req->controls != NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "Controls should not reach the ldb_tdb backend!\n");
- if (check_critical_controls(req->controls)) {
- return LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION;
- }
- }
-
- req->handle = NULL;
-
- if (ltdb_cache_load(module) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->handle = init_ltdb_handle(ltdb, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ltdb_ac = talloc_get_type(req->handle->private_data, struct ltdb_context);
-
- tret = ltdb_delete_internal(module, req->op.del.dn);
- if (tret != LDB_SUCCESS) {
- req->handle->status = tret;
- goto done;
- }
-
- if (ltdb_ac->callback) {
- ret = ltdb_ac->callback(module->ldb, ltdb_ac->context, NULL);
- }
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/*
- find an element by attribute name. At the moment this does a linear search, it should
- be re-coded to use a binary search once all places that modify records guarantee
- sorted order
-
- return the index of the first matching element if found, otherwise -1
-*/
-static int find_element(const struct ldb_message *msg, const char *name)
-{
- unsigned int i;
- for (i=0;i<msg->num_elements;i++) {
- if (ldb_attr_cmp(msg->elements[i].name, name) == 0) {
- return i;
- }
- }
- return -1;
-}
-
-
-/*
- add an element to an existing record. Assumes a elements array that we
- can call re-alloc on, and assumed that we can re-use the data pointers from the
- passed in additional values. Use with care!
-
- returns 0 on success, -1 on failure (and sets errno)
-*/
-static int msg_add_element(struct ldb_context *ldb,
- struct ldb_message *msg, struct ldb_message_element *el)
-{
- struct ldb_message_element *e2;
- unsigned int i;
-
- e2 = talloc_realloc(msg, msg->elements, struct ldb_message_element,
- msg->num_elements+1);
- if (!e2) {
- errno = ENOMEM;
- return -1;
- }
-
- msg->elements = e2;
-
- e2 = &msg->elements[msg->num_elements];
-
- e2->name = el->name;
- e2->flags = el->flags;
- e2->values = NULL;
- if (el->num_values != 0) {
- e2->values = talloc_array(msg->elements, struct ldb_val, el->num_values);
- if (!e2->values) {
- errno = ENOMEM;
- return -1;
- }
- }
- for (i=0;i<el->num_values;i++) {
- e2->values[i] = el->values[i];
- }
- e2->num_values = el->num_values;
-
- msg->num_elements++;
-
- return 0;
-}
-
-/*
- delete all elements having a specified attribute name
-*/
-static int msg_delete_attribute(struct ldb_module *module,
- struct ldb_context *ldb,
- struct ldb_message *msg, const char *name)
-{
- char *dn;
- unsigned int i, j;
-
- dn = ldb_dn_linearize(ldb, msg->dn);
- if (dn == NULL) {
- return -1;
- }
-
- for (i=0;i<msg->num_elements;i++) {
- if (ldb_attr_cmp(msg->elements[i].name, name) == 0) {
- for (j=0;j<msg->elements[i].num_values;j++) {
- ltdb_index_del_value(module, dn, &msg->elements[i], j);
- }
- talloc_free(msg->elements[i].values);
- if (msg->num_elements > (i+1)) {
- memmove(&msg->elements[i],
- &msg->elements[i+1],
- sizeof(struct ldb_message_element)*
- (msg->num_elements - (i+1)));
- }
- msg->num_elements--;
- i--;
- msg->elements = talloc_realloc(msg, msg->elements,
- struct ldb_message_element,
- msg->num_elements);
- }
- }
-
- talloc_free(dn);
- return 0;
-}
-
-/*
- delete all elements matching an attribute name/value
-
- return 0 on success, -1 on failure
-*/
-static int msg_delete_element(struct ldb_module *module,
- struct ldb_message *msg,
- const char *name,
- const struct ldb_val *val)
-{
- struct ldb_context *ldb = module->ldb;
- unsigned int i;
- int found;
- struct ldb_message_element *el;
- const struct ldb_attrib_handler *h;
-
- found = find_element(msg, name);
- if (found == -1) {
- return -1;
- }
-
- el = &msg->elements[found];
-
- h = ldb_attrib_handler(ldb, el->name);
-
- for (i=0;i<el->num_values;i++) {
- if (h->comparison_fn(ldb, ldb, &el->values[i], val) == 0) {
- if (i<el->num_values-1) {
- memmove(&el->values[i], &el->values[i+1],
- sizeof(el->values[i])*(el->num_values-(i+1)));
- }
- el->num_values--;
- if (el->num_values == 0) {
- return msg_delete_attribute(module, ldb, msg, name);
- }
- return 0;
- }
- }
-
- return -1;
-}
-
-
-/*
- modify a record - internal interface
-
- yuck - this is O(n^2). Luckily n is usually small so we probably
- get away with it, but if we ever have really large attribute lists
- then we'll need to look at this again
-*/
-int ltdb_modify_internal(struct ldb_module *module, const struct ldb_message *msg)
-{
- struct ldb_context *ldb = module->ldb;
- struct ltdb_private *ltdb =
- talloc_get_type(module->private_data, struct ltdb_private);
- TDB_DATA tdb_key, tdb_data;
- struct ldb_message *msg2;
- unsigned i, j;
- int ret;
-
- tdb_key = ltdb_key(module, msg->dn);
- if (!tdb_key.dptr) {
- return LDB_ERR_OTHER;
- }
-
- tdb_data = tdb_fetch(ltdb->tdb, tdb_key);
- if (!tdb_data.dptr) {
- talloc_free(tdb_key.dptr);
- return ltdb_err_map(tdb_error(ltdb->tdb));
- }
-
- msg2 = talloc(tdb_key.dptr, struct ldb_message);
- if (msg2 == NULL) {
- talloc_free(tdb_key.dptr);
- return LDB_ERR_OTHER;
- }
-
- ret = ltdb_unpack_data(module, &tdb_data, msg2);
- if (ret == -1) {
- ret = LDB_ERR_OTHER;
- goto failed;
- }
-
- if (!msg2->dn) {
- msg2->dn = msg->dn;
- }
-
- for (i=0;i<msg->num_elements;i++) {
- struct ldb_message_element *el = &msg->elements[i];
- struct ldb_message_element *el2;
- struct ldb_val *vals;
- char *dn;
-
- switch (msg->elements[i].flags & LDB_FLAG_MOD_MASK) {
-
- case LDB_FLAG_MOD_ADD:
- /* add this element to the message. fail if it
- already exists */
- ret = find_element(msg2, el->name);
-
- if (ret == -1) {
- if (msg_add_element(ldb, msg2, el) != 0) {
- ret = LDB_ERR_OTHER;
- goto failed;
- }
- continue;
- }
-
- el2 = &msg2->elements[ret];
-
- /* An attribute with this name already exists, add all
- * values if they don't already exist. */
-
- for (j=0;j<el->num_values;j++) {
- if (ldb_msg_find_val(el2, &el->values[j])) {
- ldb_set_errstring(module->ldb, "Type or value exists");
- ret = LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS;
- goto failed;
- }
- }
-
- vals = talloc_realloc(msg2->elements, el2->values, struct ldb_val,
- el2->num_values + el->num_values);
-
- if (vals == NULL) {
- ret = LDB_ERR_OTHER;
- goto failed;
- }
-
- for (j=0;j<el->num_values;j++) {
- vals[el2->num_values + j] =
- ldb_val_dup(vals, &el->values[j]);
- }
-
- el2->values = vals;
- el2->num_values += el->num_values;
-
- break;
-
- case LDB_FLAG_MOD_REPLACE:
- /* replace all elements of this attribute name with the elements
- listed. The attribute not existing is not an error */
- msg_delete_attribute(module, ldb, msg2, msg->elements[i].name);
-
- /* add the replacement element, if not empty */
- if (msg->elements[i].num_values != 0 &&
- msg_add_element(ldb, msg2, &msg->elements[i]) != 0) {
- ret = LDB_ERR_OTHER;
- goto failed;
- }
- break;
-
- case LDB_FLAG_MOD_DELETE:
-
- dn = ldb_dn_linearize(msg2, msg->dn);
- if (dn == NULL) {
- ret = LDB_ERR_OTHER;
- goto failed;
- }
-
- /* we could be being asked to delete all
- values or just some values */
- if (msg->elements[i].num_values == 0) {
- if (msg_delete_attribute(module, ldb, msg2,
- msg->elements[i].name) != 0) {
- ldb_asprintf_errstring(module->ldb, "No such attribute: %s for delete on %s", msg->elements[i].name, dn);
- ret = LDB_ERR_NO_SUCH_ATTRIBUTE;
- goto failed;
- }
- break;
- }
- for (j=0;j<msg->elements[i].num_values;j++) {
- if (msg_delete_element(module,
- msg2,
- msg->elements[i].name,
- &msg->elements[i].values[j]) != 0) {
- ldb_asprintf_errstring(module->ldb, "No matching attribute value when deleting attribute: %s on %s", msg->elements[i].name, dn);
- ret = LDB_ERR_NO_SUCH_ATTRIBUTE;
- goto failed;
- }
- if (ltdb_index_del_value(module, dn, &msg->elements[i], j) != 0) {
- ret = LDB_ERR_OTHER;
- goto failed;
- }
- }
- break;
- default:
- ldb_asprintf_errstring(module->ldb, "Invalid ldb_modify flags on %s: 0x%x",
- msg->elements[i].name,
- msg->elements[i].flags & LDB_FLAG_MOD_MASK);
- ret = LDB_ERR_PROTOCOL_ERROR;
- goto failed;
- }
- }
-
- /* we've made all the mods - save the modified record back into the database */
- ret = ltdb_store(module, msg2, TDB_MODIFY);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
-
- if (ltdb_modified(module, msg->dn) != LDB_SUCCESS) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto failed;
- }
-
- talloc_free(tdb_key.dptr);
- free(tdb_data.dptr);
- return ret;
-
-failed:
- talloc_free(tdb_key.dptr);
- free(tdb_data.dptr);
- return ret;
-}
-
-/*
- modify a record
-*/
-static int ltdb_modify(struct ldb_module *module, struct ldb_request *req)
-{
- struct ltdb_private *ltdb = talloc_get_type(module->private_data, struct ltdb_private);
- struct ltdb_context *ltdb_ac;
- int tret, ret = LDB_SUCCESS;
-
- if (req->controls != NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "Controls should not reach the ldb_tdb backend!\n");
- if (check_critical_controls(req->controls)) {
- return LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION;
- }
- }
-
- req->handle = NULL;
-
- req->handle = init_ltdb_handle(ltdb, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ltdb_ac = talloc_get_type(req->handle->private_data, struct ltdb_context);
-
- tret = ltdb_check_special_dn(module, req->op.mod.message);
- if (tret != LDB_SUCCESS) {
- req->handle->status = tret;
- goto done;
- }
-
- if (ltdb_cache_load(module) != 0) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- tret = ltdb_modify_internal(module, req->op.mod.message);
- if (tret != LDB_SUCCESS) {
- req->handle->status = tret;
- goto done;
- }
-
- if (ltdb_ac->callback) {
- ret = ltdb_ac->callback(module->ldb, ltdb_ac->context, NULL);
- }
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/*
- rename a record
-*/
-static int ltdb_rename(struct ldb_module *module, struct ldb_request *req)
-{
- struct ltdb_private *ltdb = talloc_get_type(module->private_data, struct ltdb_private);
- struct ltdb_context *ltdb_ac;
- struct ldb_message *msg;
- int tret, ret = LDB_SUCCESS;
-
- if (req->controls != NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "Controls should not reach the ldb_tdb backend!\n");
- if (check_critical_controls(req->controls)) {
- return LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION;
- }
- }
-
- req->handle = NULL;
-
- if (ltdb_cache_load(module) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->handle = init_ltdb_handle(ltdb, module, req);
- if (req->handle == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ltdb_ac = talloc_get_type(req->handle->private_data, struct ltdb_context);
-
- msg = talloc(ltdb_ac, struct ldb_message);
- if (msg == NULL) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- /* in case any attribute of the message was indexed, we need
- to fetch the old record */
- tret = ltdb_search_dn1(module, req->op.rename.olddn, msg);
- if (tret != 1) {
- /* not finding the old record is an error */
- req->handle->status = LDB_ERR_NO_SUCH_OBJECT;
- goto done;
- }
-
- msg->dn = ldb_dn_copy(msg, req->op.rename.newdn);
- if (!msg->dn) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- tret = ltdb_add_internal(module, msg);
- if (tret != LDB_SUCCESS) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- tret = ltdb_delete_internal(module, req->op.rename.olddn);
- if (tret != LDB_SUCCESS) {
- ltdb_delete_internal(module, req->op.rename.newdn);
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- if (ltdb_ac->callback) {
- ret = ltdb_ac->callback(module->ldb, ltdb_ac->context, NULL);
- }
-done:
- req->handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-static int ltdb_start_trans(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- talloc_get_type(module->private_data, struct ltdb_private);
-
- if (tdb_transaction_start(ltdb->tdb) != 0) {
- return ltdb_err_map(tdb_error(ltdb->tdb));
- }
-
- return LDB_SUCCESS;
-}
-
-static int ltdb_end_trans(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- talloc_get_type(module->private_data, struct ltdb_private);
-
- if (tdb_transaction_commit(ltdb->tdb) != 0) {
- return ltdb_err_map(tdb_error(ltdb->tdb));
- }
-
- return LDB_SUCCESS;
-}
-
-static int ltdb_del_trans(struct ldb_module *module)
-{
- struct ltdb_private *ltdb =
- talloc_get_type(module->private_data, struct ltdb_private);
-
- if (tdb_transaction_cancel(ltdb->tdb) != 0) {
- return ltdb_err_map(tdb_error(ltdb->tdb));
- }
-
- return LDB_SUCCESS;
-}
-
-static int ltdb_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- return handle->status;
-}
-
-static int ltdb_request(struct ldb_module *module, struct ldb_request *req)
-{
- /* check for oustanding critical controls and return an error if found */
- if (req->controls != NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "Controls should not reach the ldb_tdb backend!\n");
- if (check_critical_controls(req->controls)) {
- return LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION;
- }
- }
-
- /* search, add, modify, delete, rename are handled by their own, no other op supported */
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-/*
- return sequenceNumber from @BASEINFO
-*/
-static int ltdb_sequence_number(struct ldb_module *module, struct ldb_request *req)
-{
- TALLOC_CTX *tmp_ctx = talloc_new(req);
- struct ldb_message *msg = NULL;
- struct ldb_dn *dn = ldb_dn_explode(tmp_ctx, LTDB_BASEINFO);
- int tret;
-
- if (tmp_ctx == NULL) {
- talloc_free(tmp_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg = talloc(tmp_ctx, struct ldb_message);
- if (msg == NULL) {
- talloc_free(tmp_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->op.seq_num.flags = 0;
-
- tret = ltdb_search_dn1(module, dn, msg);
- if (tret != 1) {
- talloc_free(tmp_ctx);
- req->op.seq_num.seq_num = 0;
- /* zero is as good as anything when we don't know */
- return LDB_SUCCESS;
- }
-
- switch (req->op.seq_num.type) {
- case LDB_SEQ_HIGHEST_SEQ:
- req->op.seq_num.seq_num = ldb_msg_find_attr_as_uint64(msg, LTDB_SEQUENCE_NUMBER, 0);
- break;
- case LDB_SEQ_NEXT:
- req->op.seq_num.seq_num = ldb_msg_find_attr_as_uint64(msg, LTDB_SEQUENCE_NUMBER, 0);
- req->op.seq_num.seq_num++;
- break;
- case LDB_SEQ_HIGHEST_TIMESTAMP:
- {
- const char *date = ldb_msg_find_attr_as_string(msg, LTDB_MOD_TIMESTAMP, NULL);
- if (date) {
- req->op.seq_num.seq_num = ldb_string_to_time(date);
- } else {
- req->op.seq_num.seq_num = 0;
- /* zero is as good as anything when we don't know */
- }
- break;
- }
- }
- talloc_free(tmp_ctx);
- return LDB_SUCCESS;
-}
-
-static const struct ldb_module_ops ltdb_ops = {
- .name = "tdb",
- .search = ltdb_search,
- .add = ltdb_add,
- .modify = ltdb_modify,
- .del = ltdb_delete,
- .rename = ltdb_rename,
- .request = ltdb_request,
- .start_transaction = ltdb_start_trans,
- .end_transaction = ltdb_end_trans,
- .del_transaction = ltdb_del_trans,
- .wait = ltdb_wait,
- .sequence_number = ltdb_sequence_number
-};
-
-/*
- connect to the database
-*/
-static int ltdb_connect(struct ldb_context *ldb, const char *url,
- unsigned int flags, const char *options[],
- struct ldb_module **module)
-{
- const char *path;
- int tdb_flags, open_flags;
- struct ltdb_private *ltdb;
-
- /* parse the url */
- if (strchr(url, ':')) {
- if (strncmp(url, "tdb://", 6) != 0) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Invalid tdb URL '%s'", url);
- return -1;
- }
- path = url+6;
- } else {
- path = url;
- }
-
- tdb_flags = TDB_DEFAULT | TDB_SEQNUM;
-
- /* check for the 'nosync' option */
- if (flags & LDB_FLG_NOSYNC) {
- tdb_flags |= TDB_NOSYNC;
- }
-
- /* and nommap option */
- if (flags & LDB_FLG_NOMMAP) {
- tdb_flags |= TDB_NOMMAP;
- }
-
- if (flags & LDB_FLG_RDONLY) {
- open_flags = O_RDONLY;
- } else {
- open_flags = O_CREAT | O_RDWR;
- }
-
- ltdb = talloc_zero(ldb, struct ltdb_private);
- if (!ltdb) {
- ldb_oom(ldb);
- return -1;
- }
-
- /* note that we use quite a large default hash size */
- ltdb->tdb = ltdb_wrap_open(ltdb, path, 10000,
- tdb_flags, open_flags,
- ldb->create_perms, ldb);
- if (!ltdb->tdb) {
- ldb_debug(ldb, LDB_DEBUG_ERROR, "Unable to open tdb '%s'\n", path);
- talloc_free(ltdb);
- return -1;
- }
-
- ltdb->sequence_number = 0;
-
- *module = talloc(ldb, struct ldb_module);
- if (!module) {
- ldb_oom(ldb);
- talloc_free(ltdb);
- return -1;
- }
- talloc_set_name_const(*module, "ldb_tdb backend");
- (*module)->ldb = ldb;
- (*module)->prev = (*module)->next = NULL;
- (*module)->private_data = ltdb;
- (*module)->ops = &ltdb_ops;
-
- if (ltdb_cache_load(*module) != 0) {
- talloc_free(*module);
- talloc_free(ltdb);
- return -1;
- }
-
- return 0;
-}
-
-int ldb_tdb_init(void)
-{
- return ldb_register_backend("tdb", ltdb_connect);
-}
diff --git a/source/lib/ldb/ldb_tdb/ldb_tdb.h b/source/lib/ldb/ldb_tdb/ldb_tdb.h
deleted file mode 100644
index 42f3dc24212..00000000000
--- a/source/lib/ldb/ldb_tdb/ldb_tdb.h
+++ /dev/null
@@ -1,129 +0,0 @@
-
-#ifdef _SAMBA_BUILD_
-#include "system/filesys.h"
-#endif
-
-#if (_SAMBA_BUILD_ >= 4)
-#include "lib/tdb/include/tdb.h"
-#elif defined(_SAMBA_BUILD_)
-#include "tdb/include/tdb.h"
-#else
-#include "tdb.h"
-#endif
-
-/* this private structure is used by the ltdb backend in the
- ldb_context */
-struct ltdb_private {
- TDB_CONTEXT *tdb;
- unsigned int connect_flags;
-
- /* a double is used for portability and ease of string
- handling. It has plenty of digits of precision */
- unsigned long long sequence_number;
-
- /* the low level tdb seqnum - used to avoid loading BASEINFO when
- possible */
- int tdb_seqnum;
-
- struct ltdb_cache {
- struct ldb_message *indexlist;
- struct ldb_message *attributes;
- struct ldb_message *subclasses;
-
- struct {
- char *name;
- int flags;
- } last_attribute;
- } *cache;
-};
-
-/*
- the async local context
- holds also internal search state during a full db search
-*/
-struct ltdb_context {
- struct ldb_module *module;
-
- /* search stuff */
- const struct ldb_parse_tree *tree;
- const struct ldb_dn *base;
- enum ldb_scope scope;
- const char * const *attrs;
-
- /* async stuff */
- void *context;
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *);
-};
-
-/* special record types */
-#define LTDB_INDEX "@INDEX"
-#define LTDB_INDEXLIST "@INDEXLIST"
-#define LTDB_IDX "@IDX"
-#define LTDB_IDXATTR "@IDXATTR"
-#define LTDB_BASEINFO "@BASEINFO"
-#define LTDB_ATTRIBUTES "@ATTRIBUTES"
-#define LTDB_SUBCLASSES "@SUBCLASSES"
-
-/* special attribute types */
-#define LTDB_SEQUENCE_NUMBER "sequenceNumber"
-#define LTDB_MOD_TIMESTAMP "whenChanged"
-#define LTDB_OBJECTCLASS "objectClass"
-
-/* The following definitions come from lib/ldb/ldb_tdb/ldb_cache.c */
-
-int ltdb_cache_reload(struct ldb_module *module);
-int ltdb_cache_load(struct ldb_module *module);
-int ltdb_increase_sequence_number(struct ldb_module *module);
-int ltdb_check_at_attributes_values(const struct ldb_val *value);
-
-/* The following definitions come from lib/ldb/ldb_tdb/ldb_index.c */
-
-struct ldb_parse_tree;
-
-int ltdb_search_indexed(struct ldb_handle *handle);
-int ltdb_index_add(struct ldb_module *module, const struct ldb_message *msg);
-int ltdb_index_del(struct ldb_module *module, const struct ldb_message *msg);
-int ltdb_reindex(struct ldb_module *module);
-
-/* The following definitions come from lib/ldb/ldb_tdb/ldb_pack.c */
-
-int ltdb_pack_data(struct ldb_module *module,
- const struct ldb_message *message,
- struct TDB_DATA *data);
-void ltdb_unpack_data_free(struct ldb_module *module,
- struct ldb_message *message);
-int ltdb_unpack_data(struct ldb_module *module,
- const struct TDB_DATA *data,
- struct ldb_message *message);
-
-/* The following definitions come from lib/ldb/ldb_tdb/ldb_search.c */
-
-int ltdb_has_wildcard(struct ldb_module *module, const char *attr_name,
- const struct ldb_val *val);
-void ltdb_search_dn1_free(struct ldb_module *module, struct ldb_message *msg);
-int ltdb_search_dn1(struct ldb_module *module, const struct ldb_dn *dn, struct ldb_message *msg);
-int ltdb_add_attr_results(struct ldb_module *module,
- TALLOC_CTX *mem_ctx,
- struct ldb_message *msg,
- const char * const attrs[],
- unsigned int *count,
- struct ldb_message ***res);
-int ltdb_filter_attrs(struct ldb_message *msg, const char * const *attrs);
-int ltdb_search(struct ldb_module *module, struct ldb_request *req);
-
-/* The following definitions come from lib/ldb/ldb_tdb/ldb_tdb.c */
-struct ldb_handle *init_ltdb_handle(struct ltdb_private *ltdb, struct ldb_module *module,
- struct ldb_request *req);
-struct TDB_DATA ltdb_key(struct ldb_module *module, const struct ldb_dn *dn);
-int ltdb_store(struct ldb_module *module, const struct ldb_message *msg, int flgs);
-int ltdb_delete_noindex(struct ldb_module *module, const struct ldb_dn *dn);
-int ltdb_modify_internal(struct ldb_module *module, const struct ldb_message *msg);
-
-int ltdb_index_del_value(struct ldb_module *module, const char *dn,
- struct ldb_message_element *el, int v_idx);
-
-struct tdb_context *ltdb_wrap_open(TALLOC_CTX *mem_ctx,
- const char *path, int hash_size, int tdb_flags,
- int open_flags, mode_t mode,
- struct ldb_context *ldb);
-
diff --git a/source/lib/ldb/ldb_tdb/ldb_tdb_wrap.c b/source/lib/ldb/ldb_tdb/ldb_tdb_wrap.c
deleted file mode 100644
index 03c9ae85b25..00000000000
--- a/source/lib/ldb/ldb_tdb/ldb_tdb_wrap.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/ldb_tdb/ldb_tdb.h"
-
-/*
- the purpose of this code is to work around the braindead posix locking
- rules, to allow us to have a ldb open more than once while allowing
- locking to work
-*/
-
-struct ltdb_wrap {
- struct ltdb_wrap *next, *prev;
- struct tdb_context *tdb;
- dev_t device;
- ino_t inode;
-};
-
-static struct ltdb_wrap *tdb_list;
-
-/* destroy the last connection to a tdb */
-static int ltdb_wrap_destructor(struct ltdb_wrap *w)
-{
- tdb_close(w->tdb);
- if (w->next) {
- w->next->prev = w->prev;
- }
- if (w->prev) {
- w->prev->next = w->next;
- }
- if (w == tdb_list) {
- tdb_list = w->next;
- }
- return 0;
-}
-
-static void ltdb_log_fn(struct tdb_context *tdb, enum tdb_debug_level level, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);
-static void ltdb_log_fn(struct tdb_context *tdb, enum tdb_debug_level level, const char *fmt, ...)
-{
- va_list ap;
- const char *name = tdb_name(tdb);
- struct ldb_context *ldb = talloc_get_type(tdb_get_logging_private(tdb), struct ldb_context);
- enum ldb_debug_level ldb_level;
- char *message;
- va_start(ap, fmt);
- message = talloc_vasprintf(ldb, fmt, ap);
- va_end(ap);
-
- switch (level) {
- case TDB_DEBUG_FATAL:
- ldb_level = LDB_DEBUG_FATAL;
- break;
- case TDB_DEBUG_ERROR:
- ldb_level = LDB_DEBUG_ERROR;
- break;
- case TDB_DEBUG_WARNING:
- ldb_level = LDB_DEBUG_WARNING;
- break;
- case TDB_DEBUG_TRACE:
- ldb_level = LDB_DEBUG_TRACE;
- break;
- default:
- ldb_level = LDB_DEBUG_FATAL;
- }
-
- ldb_debug(ldb, ldb_level, "ltdb: tdb(%s): %s", name, message);
- talloc_free(message);
-}
-
-/*
- wrapped connection to a tdb database. The caller should _not_ free
- this as it is not a talloc structure (as tdb does not use talloc
- yet). It will auto-close when the caller frees the mem_ctx that is
- passed to this call
- */
-struct tdb_context *ltdb_wrap_open(TALLOC_CTX *mem_ctx,
- const char *path, int hash_size,
- int tdb_flags,
- int open_flags, mode_t mode,
- struct ldb_context *ldb)
-{
- struct ltdb_wrap *w;
- struct stat st;
- struct tdb_logging_context log_ctx;
-
- log_ctx.log_fn = ltdb_log_fn;
- log_ctx.log_private = ldb;
-
- if (stat(path, &st) == 0) {
- for (w=tdb_list;w;w=w->next) {
- if (st.st_dev == w->device && st.st_ino == w->inode) {
- if (!talloc_reference(mem_ctx, w)) {
- return NULL;
- }
- return w->tdb;
- }
- }
- }
-
- w = talloc(mem_ctx, struct ltdb_wrap);
- if (w == NULL) {
- return NULL;
- }
-
- w->tdb = tdb_open_ex(path, hash_size, tdb_flags, open_flags, mode, &log_ctx, NULL);
- if (w->tdb == NULL) {
- talloc_free(w);
- return NULL;
- }
-
- if (fstat(tdb_fd(w->tdb), &st) != 0) {
- tdb_close(w->tdb);
- talloc_free(w);
- return NULL;
- }
-
- w->device = st.st_dev;
- w->inode = st.st_ino;
-
- talloc_set_destructor(w, ltdb_wrap_destructor);
-
- w->next = tdb_list;
- w->prev = NULL;
- if (tdb_list) {
- tdb_list->prev = w;
- }
- tdb_list = w;
-
- return w->tdb;
-}
-
diff --git a/source/lib/ldb/libldb.m4 b/source/lib/ldb/libldb.m4
deleted file mode 100644
index 845563b4a18..00000000000
--- a/source/lib/ldb/libldb.m4
+++ /dev/null
@@ -1,33 +0,0 @@
-SMB_ENABLE(ldb_sqlite3,$with_sqlite3_support)
-
-AC_MSG_CHECKING([for Python])
-
-PYTHON=
-
-AC_ARG_WITH(python,
-[ --with-python=PYTHONNAME build Python libraries],
-[ case "${withval-python}" in
- yes)
- PYTHON=python
- ;;
- no)
- PYTHON=
- ;;
- *)
- PYTHON=${withval-python}
- ;;
- esac ])
-
-if test x"$PYTHON" != "x"; then
- incdir=`python -c 'import sys; print "%s/include/python%d.%d" % (sys.prefix, sys.version_info[[0]], sys.version_info[[1]])'`
- CPPFLAGS="$CPPFLAGS -I $incdir"
-fi
-
-if test x"$PYTHON" != "x"; then
- AC_MSG_RESULT([${withval-python}])
-else
- AC_MSG_RESULT(no)
- SMB_ENABLE(swig_ldb, NO)
-fi
-
-AC_SUBST(PYTHON)
diff --git a/source/lib/ldb/mainpage.dox b/source/lib/ldb/mainpage.dox
deleted file mode 100644
index bbd8d9c5025..00000000000
--- a/source/lib/ldb/mainpage.dox
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
-
-\mainpage ldb
-
-\section Overview
-
-ldb is a LDAP-like embedded database. It is not at all LDAP standards
-compliant, so if you want a standards compliant database then please
-see the excellent <a href="http://www.openldap.org/">OpenLDAP</a>
-project.<p>
-
-What ldb does is provide a fast database with an LDAP-like API
-designed to be used within an application. In some ways it can be seen
-as a intermediate solution between key-value pair databases and a real
-LDAP database.<p>
-
-ldb is the database engine used in Samba4.
-
-\section Features
-
-The main features that separate ldb from other solutions are:
- - Safe multi-reader, multi-writer, using byte range locking
- - LDAP-like API
- - fast operation
- - choice of local tdb, local sqlite3 or remote LDAP backends
- - integration with <a href="http://talloc.samba.org">talloc</a>
- - schema-less operation, for trivial setup
- - modules for extensions (such as schema support)
- - easy setup of indexes and attribute properties
- - ldbedit tool for database editing (reminiscent of 'vipw')
- - ldif for import/export
-
-\section Documentation
-
-ldb has limited programmer and administrator documentation:
- - a list of <a href="globals_func.html">functions</a>
- - a list of <a href="examples.html">examples</a>
- - a list of <a href="annotated.html">data structures</a>
- - a list of <a href="globals_defs.html">constants</a>
-
-If you need more information than is presented in this document, you
-may wish to look at the source code, especially the source code in the
-<a href="http://samba.org/ftp/unpacked/samba4/source/lib/ldb/tools/">tools directory</a>.
-
-ldb makes use of the LDAP Data Interchange Format (LDIF), which is
-documented in <a href="http://www.ietf.org/rfc/rfc2849.txt">RFC
-2849</a>.
-
-\section Support
-
-ldb does not currently have its own mailing list or bug tracking
-system. For now, please use the <a
-href="https://lists.samba.org/mailman/listinfo/samba-technical">samba-technical</a>
-mailing list, and the <a href="http://bugzilla.samba.org/">Samba
-bugzilla</a> bug tracking system.
-
-\section Download
-
-You can download the latest release either via rsync or anonymous
-svn. To fetch via svn use the following commands:
-
-\verbatim
- svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/ldb ldb
- svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/tdb tdb
- svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/talloc talloc
-\endverbatim
-
-To fetch via rsync use these commands:
-
-\verbatim
- rsync -Pavz samba.org::ftp/unpacked/samba4/source/lib/ldb .
- rsync -Pavz samba.org::ftp/unpacked/samba4/source/lib/tdb .
- rsync -Pavz samba.org::ftp/unpacked/samba4/source/lib/talloc .
-\endverbatim
-
-\section Credits
-
-ldb is another product of the prolific <a href="http://samba.org/~tridge/">Andrew Tridgell</a>.
-
-*/
diff --git a/source/lib/ldb/man/ad2oLschema.1.xml b/source/lib/ldb/man/ad2oLschema.1.xml
deleted file mode 100644
index 6ae89964775..00000000000
--- a/source/lib/ldb/man/ad2oLschema.1.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ad2oLschema.1">
-
-<refmeta>
- <refentrytitle>ad2oLschema</refentrytitle>
- <manvolnum>1</manvolnum>
-</refmeta>
-
-
-<refnamediv>
- <refname>ad2oLschema</refname>
- <refpurpose>Converts AC-like LDAP schemas to OpenLDAP
- compatible schema files</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>ad2oLschema</command>
- <arg choice="opt">-I INPUT-FILE</arg>
- <arg choice="opt">-O OUTPUT-FILE</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>ad2oLschema is a simple tool that converts AD-like LDIF
- schema files into OpenLDAP schema files.</para>
-</refsect1>
-
-
-<refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-H url</term>
- <listitem><para>URL to an LDB or LDAP server with an AD schema to read. </para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-I input-file</term> <listitem><para>AD schema
- to read. If neither this nor -H is specified, the
- schema file will be read from standard input.
- </para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-O output-file</term>
- <listitem><para>File to write OpenLDAP version of schema to.
- </para></listitem>
- </varlistentry>
- </variablelist>
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
-</refsect1>
-
-<refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbmodify, ldbdel, ldif(5)</para>
-
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para> ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- ad2oLschema was written by <ulink
- url="http://samba.org/~abartlet/">Andrew Bartlett</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
-</refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/man/ldb.3.xml b/source/lib/ldb/man/ldb.3.xml
deleted file mode 100644
index 19d9a89e102..00000000000
--- a/source/lib/ldb/man/ldb.3.xml
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ldb.3">
-
-<refmeta>
- <refentrytitle>ldb</refentrytitle>
- <manvolnum>3</manvolnum>
-</refmeta>
-
-<refnamediv>
- <refname>ldb</refname>
- <refclass>The Samba Project</refclass>
- <refpurpose>A light-weight database library</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <synopsis>#include &lt;ldb.h&gt;</synopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>description</title>
-
- <para>
-ldb is a light weight embedded database library and API. With a
-programming interface that is very similar to LDAP, ldb can store its
-data either in a tdb(3) database or in a real LDAP database.
- </para>
-
- <para>
-When used with the tdb backend ldb does not require any database
-daemon. Instead, ldb function calls are processed immediately by the
-ldb library, which does IO directly on the database, while allowing
-multiple readers/writers using operating system byte range locks. This
-leads to an API with very low overheads, often resulting in speeds of
-more than 10x what can be achieved with a more traditional LDAP
-architecture.
- </para>
-
- <para>
-In a taxonomy of databases ldb would sit half way between key/value
-pair databases (such as berkley db or tdb) and a full LDAP
-database. With a structured attribute oriented API like LDAP and good
-indexing capabilities, ldb can be used for quite sophisticated
-applications that need a light weight database, without the
-administrative overhead of a full LDAP installation.
- </para>
-
- <para>
-Included with ldb are a number of useful command line tools for
-manipulating a ldb database. These tools are similar in style to the
-equivalent ldap command line tools.
- </para>
-
- <para>
-In its default mode of operation with a tdb backend, ldb can also be
-seen as a "schema-less LDAP". By default ldb does not require a
-schema, which greatly reduces the complexity of getting started with
-ldb databases. As the complexity of you application grows you can take
-advantage of some of the optional schema-like attributes that ldb
-offers, or you can migrate to using the full LDAP api while keeping
-your exiting ldb code.
- </para>
-
- <para>
-If you are new to ldb, then I suggest starting with the manual pages
-for ldbsearch(1) and ldbedit(1), and experimenting with a local
-database. Then I suggest you look at the ldb_connect(3) and
-ldb_search(3) manual pages.
- </para>
-</refsect1>
-
-<refsect1>
- <title>TOOLS</title>
-
- <itemizedlist>
- <listitem><para>
- <application>ldbsearch(1)</application>
- - command line ldb search utility
- </para></listitem>
-
- <listitem><para>
- <application>ldbedit(1)</application>
- - edit all or part of a ldb database using your favourite editor
- </para></listitem>
-
- <listitem><para>
- <application>ldbadd(1)</application>
- - add records to a ldb database using LDIF formatted input
- </para></listitem>
-
- <listitem><para>
- <application>ldbdel(1)</application>
- - delete records from a ldb database
- </para></listitem>
-
- <listitem><para>
- <application>ldbmodify(1)</application>
- - modify records in a ldb database using LDIF formatted input
- </para></listitem>
- </itemizedlist>
-</refsect1>
-
-<refsect1>
- <title>FUNCTIONS</title>
-
- <itemizedlist>
- <listitem><para>
- <function>ldb_connect(3)</function>
- - connect to a ldb backend
- </para></listitem>
-
- <listitem><para>
- <function>ldb_search(3)</function>
- - perform a database search
- </para></listitem>
-
- <listitem><para>
- <function>ldb_add(3)</function>
- - add a record to the database
- </para></listitem>
-
- <listitem><para>
- <function>ldb_delete(3)</function>
- - delete a record from the database
- </para></listitem>
-
- <listitem><para>
- <function>ldb_modify(3)</function>
- - modify a record in the database
- </para></listitem>
-
- <listitem><para>
- <function>ldb_errstring(3)</function>
- - retrieve extended error information from the last operation
- </para></listitem>
-
- <listitem><para>
- <function>ldb_ldif_write(3)</function>
- - write a LDIF formatted message
- </para></listitem>
-
- <listitem><para>
- <function>ldb_ldif_write_file(3)</function>
- - write a LDIF formatted message to a file
- </para></listitem>
-
- <listitem><para>
- <function>ldb_ldif_read(3)</function>
- - read a LDIF formatted message
- </para></listitem>
-
- <listitem><para>
- <function>ldb_ldif_read_free(3)</function>
- - free the result of a ldb_ldif_read()
- </para></listitem>
-
- <listitem><para>
- <function>ldb_ldif_read_file(3)</function>
- - read a LDIF message from a file
- </para></listitem>
-
- <listitem><para>
- <function>ldb_ldif_read_string(3)</function>
- - read a LDIF message from a string
- </para></listitem>
-
- <listitem><para>
- <function>ldb_msg_find_element(3)</function>
- - find an element in a ldb_message
- </para></listitem>
-
- <listitem><para>
- <function>ldb_val_equal_exact(3)</function>
- - compare two ldb_val structures
- </para></listitem>
-
- <listitem><para>
- <function>ldb_msg_find_val(3)</function>
- - find an element by value
- </para></listitem>
-
- <listitem><para>
- <function>ldb_msg_add_empty(3)</function>
- - add an empty message element to a ldb_message
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_msg_add(3)</function>
- - add a non-empty message element to a ldb_message
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_msg_element_compare(3)</function>
- - compare two ldb_message_element structures
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_msg_find_int(3)</function>
- - return an integer value from a ldb_message
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_msg_find_uint(3)</function>
- - return an unsigned integer value from a ldb_message
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_msg_find_double(3)</function>
- - return a double value from a ldb_message
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_msg_find_string(3)</function>
- - return a string value from a ldb_message
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_set_alloc(3)</function>
- - set the memory allocation function to be used by ldb
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_set_debug(3)</function>
- - set a debug handler to be used by ldb
- </para></listitem>
-
-
- <listitem><para>
- <function>ldb_set_debug_stderr(3)</function>
- - set a debug handler for stderr output
- </para></listitem>
- </itemizedlist>
-</refsect1>
-
-<refsect1>
- <title>Author</title>
-
- <para>
- ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
- <para>
-ldb is released under the GNU Lesser General Public License version 2
-or later. Please see the file COPYING for license details.
- </para>
-</refsect1>
-</refentry>
diff --git a/source/lib/ldb/man/ldbadd.1.xml b/source/lib/ldb/man/ldbadd.1.xml
deleted file mode 100644
index 7ad0f835d0f..00000000000
--- a/source/lib/ldb/man/ldbadd.1.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ldbadd.1">
-
-<refmeta>
- <refentrytitle>ldbadd</refentrytitle>
- <manvolnum>1</manvolnum>
-</refmeta>
-
-
-<refnamediv>
- <refname>ldbadd</refname>
- <refpurpose>Command-line utility for adding records to an LDB</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>ldbadd</command>
- <arg choice="opt">-h</arg>
- <arg choice="opt">-H LDB-URL</arg>
- <arg choice="opt">ldif-file1</arg>
- <arg choice="opt">ldif-file2</arg>
- <arg choice="opt">...</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>ldbadd adds records to an ldb(7) database. It reads
- the ldif(5) files specified on the command line and adds
- the records from these files to the LDB database, which is specified
- by the -H option or the LDB_URL environment variable.
- </para>
-
- <para>If - is specified as a ldb file, the ldif input is read from
- standard input.</para>
-
-</refsect1>
-
-
-<refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-h</term>
- <listitem><para>
- Show list of available options.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-H &lt;ldb-url&gt;</term>
- <listitem><para>
- LDB URL to connect to. See ldb(7) for details.
- </para></listitem>
- </varlistentry>
-
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>ENVIRONMENT</title>
-
- <variablelist>
- <varlistentry><term>LDB_URL</term>
- <listitem><para>LDB URL to connect to (can be overrided by using the
- -H command-line option.)</para></listitem>
- </varlistentry>
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
-</refsect1>
-
-<refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbmodify, ldbdel, ldif(5)</para>
-
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para> ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
- <para>This manpage was written by Jelmer Vernooij.</para>
-
-</refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/man/ldbdel.1.xml b/source/lib/ldb/man/ldbdel.1.xml
deleted file mode 100644
index 7dfc7366f6b..00000000000
--- a/source/lib/ldb/man/ldbdel.1.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ldbdel.1">
-
-<refmeta>
- <refentrytitle>ldbdel</refentrytitle>
- <manvolnum>1</manvolnum>
-</refmeta>
-
-
-<refnamediv>
- <refname>ldbdel</refname>
- <refpurpose>Command-line program for deleting LDB records</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>ldbdel</command>
- <arg choice="opt">-h</arg>
- <arg choice="opt">-H LDB-URL</arg>
- <arg choice="opt">dn</arg>
- <arg choice="opt">...</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>ldbdel deletes records from an ldb(7) database.
- It deletes the records identified by the dn's specified
- on the command-line. </para>
-
- <para>ldbdel uses either the database that is specified with
- the -H option or the database specified by the LDB_URL environment
- variable.</para>
-
-</refsect1>
-
-
-<refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-h</term>
- <listitem><para>
- Show list of available options.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-H &lt;ldb-url&gt;</term>
- <listitem><para>
- LDB URL to connect to. See ldb(7) for details.
- </para></listitem>
- </varlistentry>
-
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>ENVIRONMENT</title>
-
- <variablelist>
- <varlistentry><term>LDB_URL</term>
- <listitem><para>LDB URL to connect to (can be overrided by using the
- -H command-line option.)</para></listitem>
- </varlistentry>
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
-</refsect1>
-
-<refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbmodify, ldbadd, ldif(5)</para>
-
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para> ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
- <para>ldbdel was written by Andrew Tridgell.</para>
-
- <para>This manpage was written by Jelmer Vernooij.</para>
-
-</refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/man/ldbedit.1.xml b/source/lib/ldb/man/ldbedit.1.xml
deleted file mode 100644
index 15c69b1b255..00000000000
--- a/source/lib/ldb/man/ldbedit.1.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ldbedit.1">
-
- <refmeta>
- <refentrytitle>ldbedit</refentrytitle>
- <manvolnum>1</manvolnum>
- </refmeta>
-
-
- <refnamediv>
- <refname>ldbedit</refname>
- <refpurpose>Edit LDB databases using your preferred editor</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
- <cmdsynopsis>
- <command>ldbedit</command>
- <arg choice="opt">-?</arg>
- <arg choice="opt">--usage</arg>
- <arg choice="opt">-s base|one|sub</arg>
- <arg choice="opt">-b basedn</arg>
- <arg choice="opt">-a</arg>
- <arg choice="opt">-e editor</arg>
- <arg choice="opt">-H LDB-URL</arg>
- <arg choice="opt">expression</arg>
- <arg rep="repeat" choice="opt">attributes</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>ldbedit is a utility that allows you to edit LDB entries (in
- tdb files, sqlite files or LDAP servers) using your preferred editor.
- ldbedit generates an LDIF file based on your query, allows you to edit
- the LDIF, and then merges that LDIF back into the LDB backend.
- </para>
-
-</refsect1>
-
-
- <refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-?</term>
- <term>--help</term>
- <listitem>
- <para>
- Show list of available options, and a phrase describing what that option
- does.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>--usage</term>
- <listitem>
- <para>
- Show list of available options. This is similar to the help option,
- however it does not provide any description, and is hence shorter.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-H &lt;ldb-url&gt;</term>
- <listitem>
- <para>
- LDB URL to connect to. For a tdb database,
- this will be of the form
- tdb://<replaceable>filename</replaceable>.
- For a LDAP connection over unix domain
- sockets, this will be of the form
- ldapi://<replaceable>socket</replaceable>. For
- a (potentially remote) LDAP connection over
- TCP, this will be of the form
- ldap://<replaceable>hostname</replaceable>. For
- an SQLite database, this will be of the form
- sqlite://<replaceable>filename</replaceable>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-s one|sub|base</term>
- <listitem><para>Search scope to use. One-level, subtree or base.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-a</term>
- <term>-all</term>
- <listitem>
- <para>Edit all records. This allows you to
- apply the same change to a number of records
- at once. You probably want to combine this
- with an expression of the form
- "objectclass=*".
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-e editor</term>
- <term>--editor editor</term>
- <listitem>
- <para>Specify the editor that should be used (overrides
- the VISUAL and EDITOR environment
- variables). If this option is not used, and
- neither VISUAL nor EDITOR environment variables
- are set, then the vi editor will be used.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-b basedn</term>
- <listitem><para>Specify Base Distinguished Name to use.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-v</term>
- <term>--verbose</term>
- <listitem>
- <para>Make ldbedit more verbose about the
- operations that are being performed. Without
- this option, ldbedit will only provide a
- summary change line.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- </refsect1>
-
- <refsect1>
- <title>ENVIRONMENT</title>
-
- <variablelist>
- <varlistentry>
- <term>LDB_URL</term>
- <listitem>
- <para>LDB URL to connect to. This can be
- overridden by using the -H command-line option.)
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>VISUAL and EDITOR</term>
- <listitem>
- <para>
- Environment variables used to determine what
- editor to use. VISUAL takes precedence over
- EDITOR, and both are overridden by the
- -e command-line option.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </refsect1>
-
- <refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
- </refsect1>
-
- <refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbmodify(1), ldbdel(1), ldif(5), vi(1)</para>
-
- </refsect1>
-
- <refsect1>
- <title>AUTHOR</title>
-
- <para>
- ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- </para>
-
- <para>
- If you wish to report a problem or make a suggestion then please see
- the <ulink url="http://ldb.samba.org/"/> web site for
- current contact and maintainer information.
- </para>
-
- <para>
- This manpage was written by Jelmer Vernooij and updated
- by Brad Hards.
- </para>
-
- </refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/man/ldbmodify.1.xml b/source/lib/ldb/man/ldbmodify.1.xml
deleted file mode 100644
index bc196477857..00000000000
--- a/source/lib/ldb/man/ldbmodify.1.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ldbmodify.1">
-
-<refmeta>
- <refentrytitle>ldbmodify</refentrytitle>
- <manvolnum>1</manvolnum>
-</refmeta>
-
-
-<refnamediv>
- <refname>ldbmodify</refname>
- <refpurpose>Modify records in a LDB database</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>ldbmodify</command>
- <arg choice="opt">-H LDB-URL</arg>
- <arg choice="opt">ldif-file</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>
- ldbmodify changes, adds and deletes records in a LDB database.
- The changes that should be made to the LDB database are read from
- the specified LDIF-file. If - is specified as the filename, input is read from stdin.
- </para>
-
- <para>For now, see ldapmodify(1) for details on the LDIF file format.</para>
-
-</refsect1>
-
-
-<refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-H &lt;ldb-url&gt;</term>
- <listitem><para>
- LDB URL to connect to. See ldb(7) for details.
- </para></listitem>
- </varlistentry>
- </variablelist>
-</refsect1>
-
-<refsect1>
- <title>ENVIRONMENT</title>
-
- <variablelist>
- <varlistentry><term>LDB_URL</term>
- <listitem><para>LDB URL to connect to (can be overrided by using the
- -H command-line option.)</para></listitem>
- </varlistentry>
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
-</refsect1>
-
-<refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbedit</para>
-
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para> ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
- <para>This manpage was written by Jelmer Vernooij.</para>
-
-</refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/man/ldbrename.1.xml b/source/lib/ldb/man/ldbrename.1.xml
deleted file mode 100644
index 391ec84ccc3..00000000000
--- a/source/lib/ldb/man/ldbrename.1.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ldbrename.1">
-
-<refmeta>
- <refentrytitle>ldbrename</refentrytitle>
- <manvolnum>1</manvolnum>
-</refmeta>
-
-
-<refnamediv>
- <refname>ldbrename</refname>
- <refpurpose>Edit LDB databases using your favorite editor</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>ldbrename</command>
- <arg choice="opt">-h</arg>
- <arg choice="opt">-o options</arg>
- <arg choice="req">olddn</arg>
- <arg choice="req">newdb</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>ldbrename is a utility that allows you to rename trees in
- an LDB database based by DN. This utility takes
- two arguments: the original
- DN name of the top element and the DN to change it to.
- </para>
-
-</refsect1>
-
-
-<refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-h</term>
- <listitem><para>
- Show list of available options.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-H &lt;ldb-url&gt;</term>
- <listitem><para>
- LDB URL to connect to. See ldb(7) for details.
- </para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-o options</term>
- <listitem><para>Extra ldb options, such as
- modules.</para></listitem>
- </varlistentry>
-
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>ENVIRONMENT</title>
-
- <variablelist>
- <varlistentry><term>LDB_URL</term>
- <listitem><para>LDB URL to connect to (can be overrided by using the
- -H command-line option.)</para></listitem>
- </varlistentry>
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
-</refsect1>
-
-<refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbmodify, ldbdel, ldif(5)</para>
-
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para> ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
- <para>This manpage was written by Jelmer Vernooij.</para>
-
-</refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/man/ldbsearch.1.xml b/source/lib/ldb/man/ldbsearch.1.xml
deleted file mode 100644
index ed3749b9207..00000000000
--- a/source/lib/ldb/man/ldbsearch.1.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="ldbsearch.1">
-
-<refmeta>
- <refentrytitle>ldbsearch</refentrytitle>
- <manvolnum>1</manvolnum>
-</refmeta>
-
-
-<refnamediv>
- <refname>ldbsearch</refname>
- <refpurpose>Search for records in a LDB database</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>ldbsearch</command>
- <arg choice="opt">-h</arg>
- <arg choice="opt">-s base|one|sub</arg>
- <arg choice="opt">-b basedn</arg>
- <arg chioce="opt">-i</arg>
- <arg choice="opt">-H LDB-URL</arg>
- <arg choice="opt">expression</arg>
- <arg choice="opt">attributes</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>ldbsearch searches a LDB database for records matching the
- specified expression (see the ldapsearch(1) manpage for
- a description of the expression format). For each
- record, the specified attributes are printed.
- </para>
-
-</refsect1>
-
-
-<refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-h</term>
- <listitem><para>
- Show list of available options.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-H &lt;ldb-url&gt;</term>
- <listitem><para>
- LDB URL to connect to. See ldb(7) for details.
- </para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-s one|sub|base</term>
- <listitem><para>Search scope to use. One-level, subtree or base.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-i</term>
- <listitem><para>Read search expressions from stdin. </para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-b basedn</term>
- <listitem><para>Specify Base DN to use.</para></listitem>
- </varlistentry>
-
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>ENVIRONMENT</title>
-
- <variablelist>
- <varlistentry><term>LDB_URL</term>
- <listitem><para>LDB URL to connect to (can be overrided by using the
- -H command-line option.)</para></listitem>
- </varlistentry>
- </variablelist>
-
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
-</refsect1>
-
-<refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbedit(1)</para>
-
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para> ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
- <para>This manpage was written by Jelmer Vernooij.</para>
-
-</refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/man/oLschema2ldif.1.xml b/source/lib/ldb/man/oLschema2ldif.1.xml
deleted file mode 100644
index b1e681be4e4..00000000000
--- a/source/lib/ldb/man/oLschema2ldif.1.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<refentry id="oLschema2ldif.1">
-
-<refmeta>
- <refentrytitle>oLschema2ldif</refentrytitle>
- <manvolnum>1</manvolnum>
-</refmeta>
-
-
-<refnamediv>
- <refname>oLschema2ldif</refname>
- <refpurpose>Converts LDAP schema's to LDB-compatible LDIF</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>oLschema2ldif</command>
- <arg choice="opt">-I INPUT-FILE</arg>
- <arg choice="opt">-O OUTPUT-FILE</arg>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>oLschema2ldif is a simple tool that converts standard OpenLDAP schema files to a LDIF format that is understood by LDB.</para>
-</refsect1>
-
-
-<refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term>-I input-file</term>
- <listitem><para>OpenLDAP schema to read. If none are specified,
-the schema file will be read from standard input.
- </para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term>-O output-file</term>
- <listitem><para>File to write ldif version of schema to.
- </para></listitem>
- </varlistentry>
- </variablelist>
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 4.0 of the Samba suite.</para>
-</refsect1>
-
-<refsect1>
- <title>SEE ALSO</title>
-
- <para>ldb(7), ldbmodify, ldbdel, ldif(5)</para>
-
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para> ldb was written by
- <ulink url="http://samba.org/~tridge/">Andrew Tridgell</ulink>.
- oLschema2ldif was written by <ulink url="mailto:idra@samba.org">Simo Sorce</ulink>.
- </para>
-
- <para>
-If you wish to report a problem or make a suggestion then please see
-the <ulink url="http://ldb.samba.org/"/> web site for
-current contact and maintainer information.
- </para>
-
-</refsect1>
-
-</refentry>
diff --git a/source/lib/ldb/modules/asq.c b/source/lib/ldb/modules/asq.c
deleted file mode 100644
index 7d232023033..00000000000
--- a/source/lib/ldb/modules/asq.c
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb attribute scoped query control module
- *
- * Description: this module searches all the the objects pointed
- * by the DNs contained in the references attribute
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-struct asq_context {
-
- enum {ASQ_SEARCH_BASE, ASQ_SEARCH_MULTI} step;
-
- struct ldb_module *module;
- void *up_context;
- int (*up_callback)(struct ldb_context *, void *, struct ldb_reply *);
-
- const char * const *req_attrs;
- char *req_attribute;
- enum {
- ASQ_CTRL_SUCCESS = 0,
- ASQ_CTRL_INVALID_ATTRIBUTE_SYNTAX = 21,
- ASQ_CTRL_UNWILLING_TO_PERFORM = 53,
- ASQ_CTRL_AFFECTS_MULTIPLE_DSA = 71
- } asq_ret;
-
- struct ldb_request *base_req;
- struct ldb_reply *base_res;
-
- struct ldb_request **reqs;
- int num_reqs;
- int cur_req;
-
- struct ldb_control **controls;
-};
-
-static struct ldb_handle *init_handle(void *mem_ctx, struct ldb_module *module,
- void *context,
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *))
-{
- struct asq_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(mem_ctx, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc_zero(h, struct asq_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->up_context = context;
- ac->up_callback = callback;
-
- return h;
-}
-
-static int asq_terminate(struct ldb_handle *handle)
-{
- struct asq_context *ac;
- struct ldb_reply *ares;
- struct ldb_asq_control *asq;
- int i;
-
- ac = talloc_get_type(handle->private_data, struct asq_context);
- if (ac == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- handle->status = LDB_SUCCESS;
- handle->state = LDB_ASYNC_DONE;
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (ares == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
-
- ares->type = LDB_REPLY_DONE;
-
- if (ac->controls) {
- for (i = 0; ac->controls[i]; i++);
- ares->controls = talloc_move(ares, &ac->controls);
- } else {
- i = 0;
- }
-
- ares->controls = talloc_realloc(ares, ares->controls, struct ldb_control *, i + 2);
-
- if (ares->controls == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
-
- ares->controls[i] = talloc(ares->controls, struct ldb_control);
- if (ares->controls[i] == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
-
- ares->controls[i]->oid = LDB_CONTROL_ASQ_OID;
- ares->controls[i]->critical = 0;
-
- asq = talloc_zero(ares->controls[i], struct ldb_asq_control);
- if (asq == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
-
- asq->result = ac->asq_ret;
-
- ares->controls[i]->data = asq;
-
- ares->controls[i + 1] = NULL;
-
- ac->up_callback(ac->module->ldb, ac->up_context, ares);
-
- return LDB_SUCCESS;
-}
-
-static int asq_base_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct asq_context *ac;
-
- if (!context || !ares) {
- ldb_set_errstring(ldb, "NULL Context or Result in callback");
- goto error;
- }
-
- if (!(ac = talloc_get_type(context, struct asq_context))) {
- goto error;
- }
-
- /* we are interested only in the single reply (base search) we receive here */
- if (ares->type == LDB_REPLY_ENTRY) {
- ac->base_res = talloc_move(ac, &ares);
- } else {
- talloc_free(ares);
- }
-
- return LDB_SUCCESS;
-error:
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static int asq_reqs_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct asq_context *ac;
-
- if (!context || !ares) {
- ldb_set_errstring(ldb, "NULL Context or Result in callback");
- goto error;
- }
-
- if (!(ac = talloc_get_type(context, struct asq_context))) {
- goto error;
- }
-
- /* we are interested only in the single reply (base search) we receive here */
- if (ares->type == LDB_REPLY_ENTRY) {
-
- /* pass the message up to the original callback as we
- * do not have to elaborate on it any further */
- return ac->up_callback(ac->module->ldb, ac->up_context, ares);
-
- } else { /* ignore any REFERRAL or DONE reply */
- talloc_free(ares);
- }
-
- return LDB_SUCCESS;
-error:
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static int asq_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_control *control;
- struct ldb_asq_control *asq_ctrl;
- struct asq_context *ac;
- struct ldb_handle *h;
- char **base_attrs;
- int ret;
-
- /* check if there's a paged request control */
- control = get_control_from_list(req->controls, LDB_CONTROL_ASQ_OID);
- if (control == NULL) {
- /* not found go on */
- return ldb_next_request(module, req);
- }
-
- req->handle = NULL;
-
- if (!req->callback || !req->context) {
- ldb_set_errstring(module->ldb,
- "Async interface called with NULL callback function or NULL context");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- asq_ctrl = talloc_get_type(control->data, struct ldb_asq_control);
- if (!asq_ctrl) {
- return LDB_ERR_PROTOCOL_ERROR;
- }
-
- h = init_handle(req, module, req->context, req->callback);
- if (!h) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- if (!(ac = talloc_get_type(h->private_data, struct asq_context))) {
-
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->handle = h;
-
- /* check the search is well formed */
- if (req->op.search.scope != LDB_SCOPE_BASE) {
- ac->asq_ret = ASQ_CTRL_UNWILLING_TO_PERFORM;
- return asq_terminate(h);
- }
-
- ac->req_attrs = req->op.search.attrs;
- ac->req_attribute = talloc_strdup(ac, asq_ctrl->source_attribute);
- if (ac->req_attribute == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
-
- /* get the object to retrieve the DNs to search */
- ac->base_req = talloc_zero(req, struct ldb_request);
- if (ac->base_req == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
- ac->base_req->operation = req->operation;
- ac->base_req->op.search.base = req->op.search.base;
- ac->base_req->op.search.scope = LDB_SCOPE_BASE;
- ac->base_req->op.search.tree = req->op.search.tree;
- base_attrs = talloc_array(ac->base_req, char *, 2);
- if (base_attrs == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
- base_attrs[0] = talloc_strdup(base_attrs, asq_ctrl->source_attribute);
- if (base_attrs[0] == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
- base_attrs[1] = NULL;
- ac->base_req->op.search.attrs = (const char * const *)base_attrs;
-
- ac->base_req->context = ac;
- ac->base_req->callback = asq_base_callback;
- ldb_set_timeout_from_prev_req(module->ldb, req, ac->base_req);
-
- ac->step = ASQ_SEARCH_BASE;
-
- ret = ldb_request(module->ldb, ac->base_req);
-
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- return LDB_SUCCESS;
-}
-
-static int asq_requests(struct ldb_handle *handle) {
- struct asq_context *ac;
- struct ldb_message_element *el;
- int i;
-
- if (!(ac = talloc_get_type(handle->private_data,
- struct asq_context))) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* look up the DNs */
- if (ac->base_res == NULL) {
- return LDB_ERR_NO_SUCH_OBJECT;
- }
- el = ldb_msg_find_element(ac->base_res->message, ac->req_attribute);
- /* no values found */
- if (el == NULL) {
- ac->asq_ret = ASQ_CTRL_SUCCESS;
- return asq_terminate(handle);
- }
-
- /* build up the requests call chain */
- ac->num_reqs = el->num_values;
- ac->cur_req = 0;
- ac->reqs = talloc_array(ac, struct ldb_request *, ac->num_reqs);
- if (ac->reqs == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- for (i = 0; i < el->num_values; i++) {
-
- ac->reqs[i] = talloc_zero(ac->reqs, struct ldb_request);
- if (ac->reqs[i] == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
- ac->reqs[i]->operation = LDB_SEARCH;
- ac->reqs[i]->op.search.base = ldb_dn_explode(ac->reqs[i], (const char *)el->values[i].data);
- if (ac->reqs[i]->op.search.base == NULL) {
- ac->asq_ret = ASQ_CTRL_INVALID_ATTRIBUTE_SYNTAX;
- return asq_terminate(handle);
- }
- ac->reqs[i]->op.search.scope = LDB_SCOPE_BASE;
- ac->reqs[i]->op.search.tree = ac->base_req->op.search.tree;
- ac->reqs[i]->op.search.attrs = ac->req_attrs;
-
- ac->reqs[i]->context = ac;
- ac->reqs[i]->callback = asq_reqs_callback;
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->base_req, ac->reqs[i]);
- }
-
- ac->step = ASQ_SEARCH_MULTI;
-
- return LDB_SUCCESS;
-}
-
-static int asq_wait_none(struct ldb_handle *handle)
-{
- struct asq_context *ac;
- int ret;
-
- if (!handle || !handle->private_data) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- handle->state = LDB_ASYNC_PENDING;
- handle->status = LDB_SUCCESS;
-
- if (!(ac = talloc_get_type(handle->private_data,
- struct asq_context))) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- switch (ac->step) {
- case ASQ_SEARCH_BASE:
- ret = ldb_wait(ac->base_req->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
-
- if (ac->base_req->handle->status != LDB_SUCCESS) {
- handle->status = ac->base_req->handle->status;
- goto done;
- }
- if (ac->base_req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- ret = asq_requests(handle);
-
- /* no break nor return,
- * the set of requests is performed in ASQ_SEARCH_MULTI
- */
-
- case ASQ_SEARCH_MULTI:
-
- if (ac->reqs[ac->cur_req]->handle == NULL) {
- ret = ldb_request(ac->module->ldb, ac->reqs[ac->cur_req]);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- ret = ldb_wait(ac->reqs[ac->cur_req]->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (ac->reqs[ac->cur_req]->handle->status != LDB_SUCCESS) {
- handle->status = ac->reqs[ac->cur_req]->handle->status;
- }
-
- if (ac->reqs[ac->cur_req]->handle->state == LDB_ASYNC_DONE) {
- ac->cur_req++;
- }
-
- if (ac->cur_req < ac->num_reqs) {
- return LDB_SUCCESS;
- }
-
- return asq_terminate(handle);
-
- default:
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- ret = LDB_SUCCESS;
-
-done:
- handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-static int asq_wait_all(struct ldb_handle *handle)
-{
- int ret;
-
- while (handle->state != LDB_ASYNC_DONE) {
- ret = asq_wait_none(handle);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- return handle->status;
-}
-
-static int asq_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- if (type == LDB_WAIT_ALL) {
- return asq_wait_all(handle);
- } else {
- return asq_wait_none(handle);
- }
-}
-
-static int asq_init(struct ldb_module *module)
-{
- struct ldb_request *req;
- int ret;
-
- req = talloc_zero(module, struct ldb_request);
- if (req == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "asq: Out of memory!\n");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_REQ_REGISTER_CONTROL;
- req->op.reg_control.oid = LDB_CONTROL_ASQ_OID;
-
- ret = ldb_request(module->ldb, req);
- if (ret != LDB_SUCCESS) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "asq: Unable to register control with rootdse!\n");
- }
-
- return ldb_next_init(module);
-}
-
-
-static const struct ldb_module_ops asq_ops = {
- .name = "asq",
- .search = asq_search,
- .wait = asq_wait,
- .init_context = asq_init
-};
-
-int ldb_asq_init(void)
-{
- return ldb_register_module(&asq_ops);
-}
diff --git a/source/lib/ldb/modules/ldb_map.c b/source/lib/ldb/modules/ldb_map.c
deleted file mode 100644
index bbd7b9603de..00000000000
--- a/source/lib/ldb/modules/ldb_map.c
+++ /dev/null
@@ -1,1338 +0,0 @@
-/*
- ldb database mapping module
-
- Copyright (C) Jelmer Vernooij 2005
- Copyright (C) Martin Kuehl <mkhl@samba.org> 2006
-
- * NOTICE: this module is NOT released under the GNU LGPL license as
- * other ldb code. This module is release under the GNU GPL v2 or
- * later license.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb ldb_map module
- *
- * Description: Map portions of data into a different format on a
- * remote partition.
- *
- * Author: Jelmer Vernooij, Martin Kuehl
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/modules/ldb_map.h"
-#include "ldb/modules/ldb_map_private.h"
-
-/* Description of the provided ldb requests:
- - special attribute 'isMapped'
-
- - search:
- - if parse tree can be split
- - search remote records w/ remote attrs and parse tree
- - otherwise
- - enumerate all remote records
- - for each remote result
- - map remote result to local message
- - search local result
- - is present
- - merge local into remote result
- - run callback on merged result
- - otherwise
- - run callback on remote result
-
- - add:
- - split message into local and remote part
- - if local message is not empty
- - add isMapped to local message
- - add local message
- - add remote message
-
- - modify:
- - split message into local and remote part
- - if local message is not empty
- - add isMapped to local message
- - search for local record
- - if present
- - modify local record
- - otherwise
- - add local message
- - modify remote record
-
- - delete:
- - search for local record
- - if present
- - delete local record
- - delete remote record
-
- - rename:
- - search for local record
- - if present
- - rename local record
- - modify local isMapped
- - rename remote record
-*/
-
-
-
-/* Private data structures
- * ======================= */
-
-/* Global private data */
-/* Extract mappings from private data. */
-const struct ldb_map_context *map_get_context(struct ldb_module *module)
-{
- const struct map_private *data = talloc_get_type(module->private_data, struct map_private);
- return data->context;
-}
-
-/* Create a generic request context. */
-static struct map_context *map_init_context(struct ldb_handle *h, struct ldb_request *req)
-{
- struct map_context *ac;
-
- ac = talloc_zero(h, struct map_context);
- if (ac == NULL) {
- map_oom(h->module);
- return NULL;
- }
-
- ac->module = h->module;
- ac->orig_req = req;
-
- return ac;
-}
-
-/* Create a search request context. */
-struct map_search_context *map_init_search_context(struct map_context *ac, struct ldb_reply *ares)
-{
- struct map_search_context *sc;
-
- sc = talloc_zero(ac, struct map_search_context);
- if (sc == NULL) {
- map_oom(ac->module);
- return NULL;
- }
-
- sc->ac = ac;
- sc->local_res = NULL;
- sc->remote_res = ares;
-
- return sc;
-}
-
-/* Create a request context and handle. */
-struct ldb_handle *map_init_handle(struct ldb_request *req, struct ldb_module *module)
-{
- struct map_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(req, struct ldb_handle);
- if (h == NULL) {
- map_oom(module);
- return NULL;
- }
-
- h->module = module;
-
- ac = map_init_context(h, req);
- if (ac == NULL) {
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- return h;
-}
-
-
-/* Dealing with DNs for different partitions
- * ========================================= */
-
-/* Check whether any data should be stored in the local partition. */
-BOOL map_check_local_db(struct ldb_module *module)
-{
- const struct ldb_map_context *data = map_get_context(module);
-
- if (!data->remote_base_dn || !data->local_base_dn) {
- return False;
- }
-
- return True;
-}
-
-/* Copy a DN with the base DN of the local partition. */
-static struct ldb_dn *ldb_dn_rebase_local(void *mem_ctx, const struct ldb_map_context *data, const struct ldb_dn *dn)
-{
- return ldb_dn_copy_rebase(mem_ctx, dn, data->remote_base_dn, data->local_base_dn);
-}
-
-/* Copy a DN with the base DN of the remote partition. */
-static struct ldb_dn *ldb_dn_rebase_remote(void *mem_ctx, const struct ldb_map_context *data, const struct ldb_dn *dn)
-{
- return ldb_dn_copy_rebase(mem_ctx, dn, data->local_base_dn, data->remote_base_dn);
-}
-
-/* Run a request and make sure it targets the remote partition. */
-/* TODO: free old DNs and messages? */
-int ldb_next_remote_request(struct ldb_module *module, struct ldb_request *request)
-{
- const struct ldb_map_context *data = map_get_context(module);
- struct ldb_message *msg;
-
- switch (request->operation) {
- case LDB_SEARCH:
- if (request->op.search.base) {
- request->op.search.base = ldb_dn_rebase_remote(request, data, request->op.search.base);
- } else {
- request->op.search.base = data->remote_base_dn;
- /* TODO: adjust scope? */
- }
- break;
-
- case LDB_ADD:
- msg = ldb_msg_copy_shallow(request, request->op.add.message);
- msg->dn = ldb_dn_rebase_remote(msg, data, msg->dn);
- request->op.add.message = msg;
- break;
-
- case LDB_MODIFY:
- msg = ldb_msg_copy_shallow(request, request->op.mod.message);
- msg->dn = ldb_dn_rebase_remote(msg, data, msg->dn);
- request->op.mod.message = msg;
- break;
-
- case LDB_DELETE:
- request->op.del.dn = ldb_dn_rebase_remote(request, data, request->op.del.dn);
- break;
-
- case LDB_RENAME:
- request->op.rename.olddn = ldb_dn_rebase_remote(request, data, request->op.rename.olddn);
- request->op.rename.newdn = ldb_dn_rebase_remote(request, data, request->op.rename.newdn);
- break;
-
- default:
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "Invalid remote request!\n");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- return ldb_next_request(module, request);
-}
-
-
-/* Finding mappings for attributes and objectClasses
- * ================================================= */
-
-/* Find an objectClass mapping by the local name. */
-static const struct ldb_map_objectclass *map_objectclass_find_local(const struct ldb_map_context *data, const char *name)
-{
- int i;
-
- for (i = 0; data->objectclass_maps && data->objectclass_maps[i].local_name; i++) {
- if (ldb_attr_cmp(data->objectclass_maps[i].local_name, name) == 0) {
- return &data->objectclass_maps[i];
- }
- }
-
- return NULL;
-}
-
-/* Find an objectClass mapping by the remote name. */
-static const struct ldb_map_objectclass *map_objectclass_find_remote(const struct ldb_map_context *data, const char *name)
-{
- int i;
-
- for (i = 0; data->objectclass_maps && data->objectclass_maps[i].remote_name; i++) {
- if (ldb_attr_cmp(data->objectclass_maps[i].remote_name, name) == 0) {
- return &data->objectclass_maps[i];
- }
- }
-
- return NULL;
-}
-
-/* Find an attribute mapping by the local name. */
-const struct ldb_map_attribute *map_attr_find_local(const struct ldb_map_context *data, const char *name)
-{
- int i;
-
- for (i = 0; data->attribute_maps[i].local_name; i++) {
- if (ldb_attr_cmp(data->attribute_maps[i].local_name, name) == 0) {
- return &data->attribute_maps[i];
- }
- }
- for (i = 0; data->attribute_maps[i].local_name; i++) {
- if (ldb_attr_cmp(data->attribute_maps[i].local_name, "*") == 0) {
- return &data->attribute_maps[i];
- }
- }
-
- return NULL;
-}
-
-/* Find an attribute mapping by the remote name. */
-const struct ldb_map_attribute *map_attr_find_remote(const struct ldb_map_context *data, const char *name)
-{
- const struct ldb_map_attribute *map;
- const struct ldb_map_attribute *wildcard = NULL;
- int i, j;
-
- for (i = 0; data->attribute_maps[i].local_name; i++) {
- map = &data->attribute_maps[i];
- if (ldb_attr_cmp(map->local_name, "*") == 0) {
- wildcard = &data->attribute_maps[i];
- }
-
- switch (map->type) {
- case MAP_IGNORE:
- break;
-
- case MAP_KEEP:
- if (ldb_attr_cmp(map->local_name, name) == 0) {
- return map;
- }
- break;
-
- case MAP_RENAME:
- case MAP_CONVERT:
- if (ldb_attr_cmp(map->u.rename.remote_name, name) == 0) {
- return map;
- }
- break;
-
- case MAP_GENERATE:
- for (j = 0; map->u.generate.remote_names && map->u.generate.remote_names[j]; j++) {
- if (ldb_attr_cmp(map->u.generate.remote_names[j], name) == 0) {
- return map;
- }
- }
- break;
- }
- }
-
- /* We didn't find it, so return the wildcard record if one was configured */
- return wildcard;
-}
-
-
-/* Mapping attributes
- * ================== */
-
-/* Check whether an attribute will be mapped into the remote partition. */
-BOOL map_attr_check_remote(const struct ldb_map_context *data, const char *attr)
-{
- const struct ldb_map_attribute *map = map_attr_find_local(data, attr);
-
- if (map == NULL) {
- return False;
- }
- if (map->type == MAP_IGNORE) {
- return False;
- }
-
- return True;
-}
-
-/* Map an attribute name into the remote partition. */
-const char *map_attr_map_local(void *mem_ctx, const struct ldb_map_attribute *map, const char *attr)
-{
- if (map == NULL) {
- return talloc_strdup(mem_ctx, attr);
- }
-
- switch (map->type) {
- case MAP_KEEP:
- return talloc_strdup(mem_ctx, attr);
-
- case MAP_RENAME:
- case MAP_CONVERT:
- return talloc_strdup(mem_ctx, map->u.rename.remote_name);
-
- default:
- return NULL;
- }
-}
-
-/* Map an attribute name back into the local partition. */
-const char *map_attr_map_remote(void *mem_ctx, const struct ldb_map_attribute *map, const char *attr)
-{
- if (map == NULL) {
- return talloc_strdup(mem_ctx, attr);
- }
-
- if (map->type == MAP_KEEP) {
- return talloc_strdup(mem_ctx, attr);
- }
-
- return talloc_strdup(mem_ctx, map->local_name);
-}
-
-
-/* Merge two lists of attributes into a single one. */
-int map_attrs_merge(struct ldb_module *module, void *mem_ctx,
- const char ***attrs, const char * const *more_attrs)
-{
- int i, j, k;
-
- for (i = 0; *attrs && (*attrs)[i]; i++) /* noop */ ;
- for (j = 0; more_attrs && more_attrs[j]; j++) /* noop */ ;
-
- *attrs = talloc_realloc(mem_ctx, *attrs, const char *, i+j+1);
- if (*attrs == NULL) {
- map_oom(module);
- return -1;
- }
-
- for (k = 0; k < j; k++) {
- (*attrs)[i + k] = more_attrs[k];
- }
-
- (*attrs)[i+k] = NULL;
-
- return 0;
-}
-
-/* Mapping ldb values
- * ================== */
-
-/* Map an ldb value into the remote partition. */
-struct ldb_val ldb_val_map_local(struct ldb_module *module, void *mem_ctx,
- const struct ldb_map_attribute *map, const struct ldb_val *val)
-{
- if (map && (map->type == MAP_CONVERT) && (map->u.convert.convert_local)) {
- return map->u.convert.convert_local(module, mem_ctx, val);
- }
-
- return ldb_val_dup(mem_ctx, val);
-}
-
-/* Map an ldb value back into the local partition. */
-struct ldb_val ldb_val_map_remote(struct ldb_module *module, void *mem_ctx,
- const struct ldb_map_attribute *map, const struct ldb_val *val)
-{
- if (map && (map->type == MAP_CONVERT) && (map->u.convert.convert_remote)) {
- return map->u.convert.convert_remote(module, mem_ctx, val);
- }
-
- return ldb_val_dup(mem_ctx, val);
-}
-
-
-/* Mapping DNs
- * =========== */
-
-/* Check whether a DN is below the local baseDN. */
-BOOL ldb_dn_check_local(struct ldb_module *module, const struct ldb_dn *dn)
-{
- const struct ldb_map_context *data = map_get_context(module);
-
- if (!data->local_base_dn) {
- return True;
- }
-
- return ldb_dn_compare_base(module->ldb, data->local_base_dn, dn) == 0;
-}
-
-/* Map a DN into the remote partition. */
-struct ldb_dn *ldb_dn_map_local(struct ldb_module *module, void *mem_ctx, const struct ldb_dn *dn)
-{
- const struct ldb_map_context *data = map_get_context(module);
- struct ldb_dn *newdn;
- const struct ldb_map_attribute *map;
- enum ldb_map_attr_type map_type;
- const char *name;
- struct ldb_val value;
- int i, ret;
-
- if (dn == NULL) {
- return NULL;
- }
-
- newdn = ldb_dn_copy(mem_ctx, dn);
- if (newdn == NULL) {
- map_oom(module);
- return NULL;
- }
-
- /* For each RDN, map the component name and possibly the value */
- for (i = 0; i < ldb_dn_get_comp_num(newdn); i++) {
- map = map_attr_find_local(data, ldb_dn_get_component_name(dn, i));
-
- /* Unknown attribute - leave this RDN as is and hope the best... */
- if (map == NULL) {
- map_type = MAP_KEEP;
- } else {
- map_type = map->type;
- }
-
- switch (map_type) {
- case MAP_IGNORE:
- case MAP_GENERATE:
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "MAP_IGNORE/MAP_GENERATE attribute '%s' "
- "used in DN!\n", ldb_dn_get_component_name(dn, i));
- goto failed;
-
- case MAP_CONVERT:
- if (map->u.convert.convert_local == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "'convert_local' not set for attribute '%s' "
- "used in DN!\n", ldb_dn_get_component_name(dn, i));
- goto failed;
- }
- /* fall through */
- case MAP_KEEP:
- case MAP_RENAME:
- name = map_attr_map_local(newdn, map, ldb_dn_get_component_name(dn, i));
- if (name == NULL) goto failed;
-
- value = ldb_val_map_local(module, newdn, map, ldb_dn_get_component_val(dn, i));
- if (value.data == NULL) goto failed;
-
- ret = ldb_dn_set_component(newdn, i, name, value);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
-
- break;
- }
- }
-
- return newdn;
-
-failed:
- talloc_free(newdn);
- return NULL;
-}
-
-/* Map a DN into the local partition. */
-struct ldb_dn *ldb_dn_map_remote(struct ldb_module *module, void *mem_ctx, const struct ldb_dn *dn)
-{
- const struct ldb_map_context *data = map_get_context(module);
- struct ldb_dn *newdn;
- const struct ldb_map_attribute *map;
- enum ldb_map_attr_type map_type;
- const char *name;
- struct ldb_val value;
- int i, ret;
-
- if (dn == NULL) {
- return NULL;
- }
-
- newdn = ldb_dn_copy(mem_ctx, dn);
- if (newdn == NULL) {
- map_oom(module);
- return NULL;
- }
-
- /* For each RDN, map the component name and possibly the value */
- for (i = 0; i < ldb_dn_get_comp_num(newdn); i++) {
- map = map_attr_find_remote(data, ldb_dn_get_component_name(dn, i));
-
- /* Unknown attribute - leave this RDN as is and hope the best... */
- if (map == NULL) {
- map_type = MAP_KEEP;
- } else {
- map_type = map->type;
- }
-
- switch (map_type) {
- case MAP_IGNORE:
- case MAP_GENERATE:
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "MAP_IGNORE/MAP_GENERATE attribute '%s' "
- "used in DN!\n", ldb_dn_get_component_name(dn, i));
- goto failed;
-
- case MAP_CONVERT:
- if (map->u.convert.convert_remote == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "'convert_remote' not set for attribute '%s' "
- "used in DN!\n", ldb_dn_get_component_name(dn, i));
- goto failed;
- }
- /* fall through */
- case MAP_KEEP:
- case MAP_RENAME:
- name = map_attr_map_remote(newdn, map, ldb_dn_get_component_name(dn, i));
- if (name == NULL) goto failed;
-
- value = ldb_val_map_remote(module, newdn, map, ldb_dn_get_component_val(dn, i));
- if (value.data == NULL) goto failed;
-
- ret = ldb_dn_set_component(newdn, i, name, value);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
-
- break;
- }
- }
-
- return newdn;
-
-failed:
- talloc_free(newdn);
- return NULL;
-}
-
-/* Map a DN and its base into the local partition. */
-/* TODO: This should not be required with GUIDs. */
-struct ldb_dn *ldb_dn_map_rebase_remote(struct ldb_module *module, void *mem_ctx, const struct ldb_dn *dn)
-{
- const struct ldb_map_context *data = map_get_context(module);
- struct ldb_dn *dn1, *dn2;
-
- dn1 = ldb_dn_rebase_local(mem_ctx, data, dn);
- dn2 = ldb_dn_map_remote(module, mem_ctx, dn1);
-
- talloc_free(dn1);
- return dn2;
-}
-
-
-/* Converting DNs and objectClasses (as ldb values)
- * ================================================ */
-
-/* Map a DN contained in an ldb value into the remote partition. */
-static struct ldb_val ldb_dn_convert_local(struct ldb_module *module, void *mem_ctx, const struct ldb_val *val)
-{
- struct ldb_dn *dn, *newdn;
- struct ldb_val newval;
-
- dn = ldb_dn_explode(mem_ctx, (char *)val->data);
- newdn = ldb_dn_map_local(module, mem_ctx, dn);
- talloc_free(dn);
-
- newval.length = 0;
- newval.data = (uint8_t *)ldb_dn_linearize(mem_ctx, newdn);
- if (newval.data) {
- newval.length = strlen((char *)newval.data);
- }
- talloc_free(newdn);
-
- return newval;
-}
-
-/* Map a DN contained in an ldb value into the local partition. */
-static struct ldb_val ldb_dn_convert_remote(struct ldb_module *module, void *mem_ctx, const struct ldb_val *val)
-{
- struct ldb_dn *dn, *newdn;
- struct ldb_val newval;
-
- dn = ldb_dn_explode(mem_ctx, (char *)val->data);
- newdn = ldb_dn_map_remote(module, mem_ctx, dn);
- talloc_free(dn);
-
- newval.length = 0;
- newval.data = (uint8_t *)ldb_dn_linearize(mem_ctx, newdn);
- if (newval.data) {
- newval.length = strlen((char *)newval.data);
- }
- talloc_free(newdn);
-
- return newval;
-}
-
-/* Map an objectClass into the remote partition. */
-static struct ldb_val map_objectclass_convert_local(struct ldb_module *module, void *mem_ctx, const struct ldb_val *val)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const char *name = (char *)val->data;
- const struct ldb_map_objectclass *map = map_objectclass_find_local(data, name);
- struct ldb_val newval;
-
- if (map) {
- newval.data = (uint8_t*)talloc_strdup(mem_ctx, map->remote_name);
- newval.length = strlen((char *)newval.data);
- return newval;
- }
-
- return ldb_val_dup(mem_ctx, val);
-}
-
-/* Generate a remote message with a mapped objectClass. */
-static void map_objectclass_generate_remote(struct ldb_module *module, const char *local_attr, const struct ldb_message *old, struct ldb_message *remote, struct ldb_message *local)
-{
- struct ldb_message_element *el, *oc;
- struct ldb_val val;
- BOOL found_extensibleObject = False;
- int i;
-
- /* Find old local objectClass */
- oc = ldb_msg_find_element(old, "objectClass");
- if (oc == NULL) {
- return;
- }
-
- /* Prepare new element */
- el = talloc_zero(remote, struct ldb_message_element);
- if (el == NULL) {
- ldb_oom(module->ldb);
- return; /* TODO: fail? */
- }
-
- /* Copy local objectClass element, reverse space for an extra value */
- el->num_values = oc->num_values + 1;
- el->values = talloc_array(el, struct ldb_val, el->num_values);
- if (el->values == NULL) {
- talloc_free(el);
- ldb_oom(module->ldb);
- return; /* TODO: fail? */
- }
-
- /* Copy local element name "objectClass" */
- el->name = talloc_strdup(el, local_attr);
-
- /* Convert all local objectClasses */
- for (i = 0; i < el->num_values - 1; i++) {
- el->values[i] = map_objectclass_convert_local(module, el->values, &oc->values[i]);
- if (ldb_attr_cmp((char *)el->values[i].data, "extensibleObject") == 0) {
- found_extensibleObject = True;
- }
- }
-
- if (!found_extensibleObject) {
- val.data = (uint8_t *)talloc_strdup(el->values, "extensibleObject");
- val.length = strlen((char *)val.data);
-
- /* Append additional objectClass "extensibleObject" */
- el->values[i] = val;
- } else {
- el->num_values--;
- }
-
- /* Add new objectClass to remote message */
- ldb_msg_add(remote, el, 0);
-}
-
-/* Map an objectClass into the local partition. */
-static struct ldb_val map_objectclass_convert_remote(struct ldb_module *module, void *mem_ctx, const struct ldb_val *val)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const char *name = (char *)val->data;
- const struct ldb_map_objectclass *map = map_objectclass_find_remote(data, name);
- struct ldb_val newval;
-
- if (map) {
- newval.data = (uint8_t*)talloc_strdup(mem_ctx, map->local_name);
- newval.length = strlen((char *)newval.data);
- return newval;
- }
-
- return ldb_val_dup(mem_ctx, val);
-}
-
-/* Generate a local message with a mapped objectClass. */
-static struct ldb_message_element *map_objectclass_generate_local(struct ldb_module *module, void *mem_ctx, const char *local_attr, const struct ldb_message *remote)
-{
- struct ldb_message_element *el, *oc;
- struct ldb_val val;
- int i;
-
- /* Find old remote objectClass */
- oc = ldb_msg_find_element(remote, "objectClass");
- if (oc == NULL) {
- return NULL;
- }
-
- /* Prepare new element */
- el = talloc_zero(mem_ctx, struct ldb_message_element);
- if (el == NULL) {
- ldb_oom(module->ldb);
- return NULL;
- }
-
- /* Copy remote objectClass element */
- el->num_values = oc->num_values;
- el->values = talloc_array(el, struct ldb_val, el->num_values);
- if (el->values == NULL) {
- talloc_free(el);
- ldb_oom(module->ldb);
- return NULL;
- }
-
- /* Copy remote element name "objectClass" */
- el->name = talloc_strdup(el, local_attr);
-
- /* Convert all remote objectClasses */
- for (i = 0; i < el->num_values; i++) {
- el->values[i] = map_objectclass_convert_remote(module, el->values, &oc->values[i]);
- }
-
- val.data = (uint8_t *)talloc_strdup(el->values, "extensibleObject");
- val.length = strlen((char *)val.data);
-
- /* Remove last value if it was "extensibleObject" */
- if (ldb_val_equal_exact(&val, &el->values[i-1])) {
- el->num_values--;
- el->values = talloc_realloc(el, el->values, struct ldb_val, el->num_values);
- if (el->values == NULL) {
- talloc_free(el);
- ldb_oom(module->ldb);
- return NULL;
- }
- }
-
- return el;
-}
-
-/* Mappings for searches on objectClass= assuming a one-to-one
- * mapping. Needed because this is a generate operator for the
- * add/modify code */
-static int map_objectclass_convert_operator(struct ldb_module *module, void *mem_ctx,
- struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
-
- static const struct ldb_map_attribute objectclass_map = {
- .local_name = "objectClass",
- .type = MAP_CONVERT,
- .u = {
- .convert = {
- .remote_name = "objectClass",
- .convert_local = map_objectclass_convert_local,
- .convert_remote = map_objectclass_convert_remote,
- },
- },
- };
-
- return map_subtree_collect_remote_simple(module, mem_ctx, new, tree, &objectclass_map);
-}
-
-/* Auxiliary request construction
- * ============================== */
-
-/* Store the DN of a single search result in context. */
-static int map_search_self_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct map_context *ac;
-
- if (context == NULL || ares == NULL) {
- ldb_set_errstring(ldb, talloc_asprintf(ldb, "NULL Context or Result in callback"));
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac = talloc_get_type(context, struct map_context);
-
- /* We are interested only in the single reply */
- if (ares->type != LDB_REPLY_ENTRY) {
- talloc_free(ares);
- return LDB_SUCCESS;
- }
-
- /* We have already found a remote DN */
- if (ac->local_dn) {
- ldb_set_errstring(ldb, talloc_asprintf(ldb, "Too many results to base search"));
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Store local DN */
- ac->local_dn = ares->message->dn;
-
- return LDB_SUCCESS;
-}
-
-/* Build a request to search a record by its DN. */
-struct ldb_request *map_search_base_req(struct map_context *ac, const struct ldb_dn *dn, const char * const *attrs, const struct ldb_parse_tree *tree, void *context, ldb_search_callback callback)
-{
- struct ldb_request *req;
-
- req = talloc_zero(ac, struct ldb_request);
- if (req == NULL) {
- map_oom(ac->module);
- return NULL;
- }
-
- req->operation = LDB_SEARCH;
- req->op.search.base = dn;
- req->op.search.scope = LDB_SCOPE_BASE;
- req->op.search.attrs = attrs;
-
- if (tree) {
- req->op.search.tree = tree;
- } else {
- req->op.search.tree = ldb_parse_tree(req, NULL);
- if (req->op.search.tree == NULL) {
- talloc_free(req);
- return NULL;
- }
- }
-
- req->controls = NULL;
- req->context = context;
- req->callback = callback;
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, req);
-
- return req;
-}
-
-/* Build a request to search the local record by its DN. */
-struct ldb_request *map_search_self_req(struct map_context *ac, const struct ldb_dn *dn)
-{
- /* attrs[] is returned from this function in
- * ac->search_req->op.search.attrs, so it must be static, as
- * otherwise the compiler can put it on the stack */
- static const char * const attrs[] = { IS_MAPPED, NULL };
- struct ldb_parse_tree *tree;
-
- /* Limit search to records with 'IS_MAPPED' present */
- /* TODO: `tree = ldb_parse_tree(ac, IS_MAPPED);' won't do. */
- tree = talloc_zero(ac, struct ldb_parse_tree);
- if (tree == NULL) {
- map_oom(ac->module);
- return NULL;
- }
-
- tree->operation = LDB_OP_PRESENT;
- tree->u.present.attr = talloc_strdup(tree, IS_MAPPED);
-
- return map_search_base_req(ac, dn, attrs, tree, ac, map_search_self_callback);
-}
-
-/* Build a request to update the 'IS_MAPPED' attribute */
-struct ldb_request *map_build_fixup_req(struct map_context *ac, const struct ldb_dn *olddn, const struct ldb_dn *newdn)
-{
- struct ldb_request *req;
- struct ldb_message *msg;
- const char *dn;
-
- /* Prepare request */
- req = talloc_zero(ac, struct ldb_request);
- if (req == NULL) {
- map_oom(ac->module);
- return NULL;
- }
-
- /* Prepare message */
- msg = ldb_msg_new(req);
- if (msg == NULL) {
- map_oom(ac->module);
- goto failed;
- }
-
- /* Update local 'IS_MAPPED' to the new remote DN */
- msg->dn = discard_const_p(struct ldb_dn, olddn);
- dn = ldb_dn_linearize(msg, newdn);
- if (dn == NULL) {
- goto failed;
- }
- if (ldb_msg_add_empty(msg, IS_MAPPED, LDB_FLAG_MOD_REPLACE, NULL) != 0) {
- goto failed;
- }
- if (ldb_msg_add_string(msg, IS_MAPPED, dn) != 0) {
- goto failed;
- }
-
- req->operation = LDB_MODIFY;
- req->op.mod.message = msg;
- req->controls = NULL;
- req->handle = NULL;
- req->context = NULL;
- req->callback = NULL;
-
- return req;
-
-failed:
- talloc_free(req);
- return NULL;
-}
-
-
-/* Asynchronous call structure
- * =========================== */
-
-/* Figure out which request is currently pending. */
-static struct ldb_request *map_get_req(struct map_context *ac)
-{
- switch (ac->step) {
- case MAP_SEARCH_SELF_MODIFY:
- case MAP_SEARCH_SELF_DELETE:
- case MAP_SEARCH_SELF_RENAME:
- return ac->search_req;
-
- case MAP_ADD_REMOTE:
- case MAP_MODIFY_REMOTE:
- case MAP_DELETE_REMOTE:
- case MAP_RENAME_REMOTE:
- return ac->remote_req;
-
- case MAP_RENAME_FIXUP:
- return ac->down_req;
-
- case MAP_ADD_LOCAL:
- case MAP_MODIFY_LOCAL:
- case MAP_DELETE_LOCAL:
- case MAP_RENAME_LOCAL:
- return ac->local_req;
-
- case MAP_SEARCH_REMOTE:
- /* Can't happen */
- break;
- }
-
- return NULL; /* unreachable; silences a warning */
-}
-
-typedef int (*map_next_function)(struct ldb_handle *handle);
-
-/* Figure out the next request to run. */
-static map_next_function map_get_next(struct map_context *ac)
-{
- switch (ac->step) {
- case MAP_SEARCH_REMOTE:
- return NULL;
-
- case MAP_ADD_LOCAL:
- return map_add_do_remote;
- case MAP_ADD_REMOTE:
- return NULL;
-
- case MAP_SEARCH_SELF_MODIFY:
- return map_modify_do_local;
- case MAP_MODIFY_LOCAL:
- return map_modify_do_remote;
- case MAP_MODIFY_REMOTE:
- return NULL;
-
- case MAP_SEARCH_SELF_DELETE:
- return map_delete_do_local;
- case MAP_DELETE_LOCAL:
- return map_delete_do_remote;
- case MAP_DELETE_REMOTE:
- return NULL;
-
- case MAP_SEARCH_SELF_RENAME:
- return map_rename_do_local;
- case MAP_RENAME_LOCAL:
- return map_rename_do_fixup;
- case MAP_RENAME_FIXUP:
- return map_rename_do_remote;
- case MAP_RENAME_REMOTE:
- return NULL;
- }
-
- return NULL; /* unreachable; silences a warning */
-}
-
-/* Wait for the current pending request to finish and continue with the next. */
-static int map_wait_next(struct ldb_handle *handle)
-{
- struct map_context *ac;
- struct ldb_request *req;
- map_next_function next;
- int ret;
-
- if (handle == NULL || handle->private_data == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- handle->state = LDB_ASYNC_PENDING;
- handle->status = LDB_SUCCESS;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- if (ac->step == MAP_SEARCH_REMOTE) {
- int i;
- for (i = 0; i < ac->num_searches; i++) {
- req = ac->search_reqs[i];
- ret = ldb_wait(req->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (req->handle->status != LDB_SUCCESS) {
- handle->status = req->handle->status;
- goto done;
- }
- if (req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
- }
- } else {
-
- req = map_get_req(ac);
-
- ret = ldb_wait(req->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (req->handle->status != LDB_SUCCESS) {
- handle->status = req->handle->status;
- goto done;
- }
- if (req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- next = map_get_next(ac);
- if (next) {
- return next(handle);
- }
- }
-
- ret = LDB_SUCCESS;
-
-done:
- handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-/* Wait for all current pending requests to finish. */
-static int map_wait_all(struct ldb_handle *handle)
-{
- int ret;
-
- while (handle->state != LDB_ASYNC_DONE) {
- ret = map_wait_next(handle);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- return handle->status;
-}
-
-/* Wait for pending requests to finish. */
-static int map_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- if (type == LDB_WAIT_ALL) {
- return map_wait_all(handle);
- } else {
- return map_wait_next(handle);
- }
-}
-
-
-/* Module initialization
- * ===================== */
-
-/* Provided module operations */
-static const struct ldb_module_ops map_ops = {
- .name = "ldb_map",
- .add = map_add,
- .modify = map_modify,
- .del = map_delete,
- .rename = map_rename,
- .search = map_search,
- .wait = map_wait,
-};
-
-/* Builtin mappings for DNs and objectClasses */
-static const struct ldb_map_attribute builtin_attribute_maps[] = {
- {
- .local_name = "dn",
- .type = MAP_CONVERT,
- .u = {
- .convert = {
- .remote_name = "dn",
- .convert_local = ldb_dn_convert_local,
- .convert_remote = ldb_dn_convert_remote,
- },
- },
- },
- {
- .local_name = "objectClass",
- .type = MAP_GENERATE,
- .convert_operator = map_objectclass_convert_operator,
- .u = {
- .generate = {
- .remote_names = { "objectClass", NULL },
- .generate_local = map_objectclass_generate_local,
- .generate_remote = map_objectclass_generate_remote,
- },
- },
- },
- {
- .local_name = NULL,
- }
-};
-
-/* Find the special 'MAP_DN_NAME' record and store local and remote
- * base DNs in private data. */
-static int map_init_dns(struct ldb_module *module, struct ldb_map_context *data, const char *name)
-{
- static const char * const attrs[] = { MAP_DN_FROM, MAP_DN_TO, NULL };
- struct ldb_dn *dn;
- struct ldb_message *msg;
- struct ldb_result *res;
- int ret;
-
- if (!name) {
- data->local_base_dn = NULL;
- data->remote_base_dn = NULL;
- return LDB_SUCCESS;
- }
-
- dn = ldb_dn_string_compose(data, NULL, "%s=%s", MAP_DN_NAME, name);
- if (dn == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "Failed to construct '%s' DN!\n", MAP_DN_NAME);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldb_search(module->ldb, dn, LDB_SCOPE_BASE, NULL, attrs, &res);
- talloc_free(dn);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- if (res->count == 0) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "No results for '%s=%s'!\n", MAP_DN_NAME, name);
- talloc_free(res);
- return LDB_ERR_CONSTRAINT_VIOLATION;
- }
- if (res->count > 1) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "Too many results for '%s=%s'!\n", MAP_DN_NAME, name);
- talloc_free(res);
- return LDB_ERR_CONSTRAINT_VIOLATION;
- }
-
- msg = res->msgs[0];
- data->local_base_dn = ldb_msg_find_attr_as_dn(data, msg, MAP_DN_FROM);
- data->remote_base_dn = ldb_msg_find_attr_as_dn(data, msg, MAP_DN_TO);
- talloc_free(res);
-
- return LDB_SUCCESS;
-}
-
-/* Store attribute maps and objectClass maps in private data. */
-static int map_init_maps(struct ldb_module *module, struct ldb_map_context *data,
- const struct ldb_map_attribute *attrs,
- const struct ldb_map_objectclass *ocls,
- const char * const *wildcard_attributes)
-{
- int i, j, last;
- last = 0;
-
- /* Count specified attribute maps */
- for (i = 0; attrs[i].local_name; i++) /* noop */ ;
- /* Count built-in attribute maps */
- for (j = 0; builtin_attribute_maps[j].local_name; j++) /* noop */ ;
-
- /* Store list of attribute maps */
- data->attribute_maps = talloc_array(data, struct ldb_map_attribute, i+j+1);
- if (data->attribute_maps == NULL) {
- map_oom(module);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Specified ones go first */
- for (i = 0; attrs[i].local_name; i++) {
- data->attribute_maps[last] = attrs[i];
- last++;
- }
-
- /* Built-in ones go last */
- for (i = 0; builtin_attribute_maps[i].local_name; i++) {
- data->attribute_maps[last] = builtin_attribute_maps[i];
- last++;
- }
-
- /* Ensure 'local_name == NULL' for the last entry */
- memset(&data->attribute_maps[last], 0, sizeof(struct ldb_map_attribute));
-
- /* Store list of objectClass maps */
- data->objectclass_maps = ocls;
-
- data->wildcard_attributes = wildcard_attributes;
-
- return LDB_SUCCESS;
-}
-
-/* Copy the list of provided module operations. */
-_PUBLIC_ struct ldb_module_ops ldb_map_get_ops(void)
-{
- return map_ops;
-}
-
-/* Initialize global private data. */
-_PUBLIC_ int ldb_map_init(struct ldb_module *module, const struct ldb_map_attribute *attrs,
- const struct ldb_map_objectclass *ocls,
- const char * const *wildcard_attributes,
- const char *name)
-{
- struct map_private *data;
- int ret;
-
- /* Prepare private data */
- data = talloc_zero(module, struct map_private);
- if (data == NULL) {
- map_oom(module);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- module->private_data = data;
-
- data->context = talloc_zero(data, struct ldb_map_context);
- if (!data->context) {
- map_oom(module);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Store local and remote baseDNs */
- ret = map_init_dns(module, data->context, name);
- if (ret != LDB_SUCCESS) {
- talloc_free(data);
- return ret;
- }
-
- /* Store list of attribute and objectClass maps */
- ret = map_init_maps(module, data->context, attrs, ocls, wildcard_attributes);
- if (ret != LDB_SUCCESS) {
- talloc_free(data);
- return ret;
- }
-
- return LDB_SUCCESS;
-}
-
-/* Usage note for initialization of this module:
- *
- * ldb_map is meant to be used from a different module that sets up
- * the mappings and gets registered in ldb.
- *
- * 'ldb_map_init' initializes the private data of this module and
- * stores the attribute and objectClass maps in there. It also looks
- * up the '@MAP' special DN so requests can be redirected to the
- * remote partition.
- *
- * This function should be called from the 'init_context' op of the
- * module using ldb_map.
- *
- * 'ldb_map_get_ops' returns a copy of ldb_maps module operations.
- *
- * It should be called from the initialize function of the using
- * module, which should then override the 'init_context' op with a
- * function making the appropriate calls to 'ldb_map_init'.
- */
diff --git a/source/lib/ldb/modules/ldb_map.h b/source/lib/ldb/modules/ldb_map.h
deleted file mode 100644
index c5c455bcb25..00000000000
--- a/source/lib/ldb/modules/ldb_map.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- ldb database mapping module
-
- Copyright (C) Jelmer Vernooij 2005
- Copyright (C) Martin Kuehl <mkhl@samba.org> 2006
-
- * NOTICE: this module is NOT released under the GNU LGPL license as
- * other ldb code. This module is release under the GNU GPL v2 or
- * later license.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef __LDB_MAP_H__
-#define __LDB_MAP_H__
-
-/* ldb_map is a skeleton LDB module that can be used for any other modules
- * that need to map attributes.
- *
- * The term 'remote' in this header refers to the connection where the
- * original schema is used on while 'local' means the local connection
- * that any upper layers will use.
- *
- * All local attributes will have to have a definition. Not all remote
- * attributes need a definition as LDB is a lot less strict than LDAP
- * (in other words, sending unknown attributes to an LDAP server hurts us,
- * while returning too many attributes in ldb_search() doesn't)
- */
-
-
-/* Name of the internal attribute pointing from the local to the
- * remote part of a record */
-#define IS_MAPPED "isMapped"
-
-
-struct ldb_map_context;
-
-/* convert a local ldb_val to a remote ldb_val */
-typedef struct ldb_val (*ldb_map_convert_func) (struct ldb_module *module, void *mem_ctx, const struct ldb_val *val);
-
-#define LDB_MAP_MAX_REMOTE_NAMES 10
-
-/* map from local to remote attribute */
-struct ldb_map_attribute {
- const char *local_name; /* local name */
-
- enum ldb_map_attr_type {
- MAP_IGNORE, /* Ignore this local attribute. Doesn't exist remotely. */
- MAP_KEEP, /* Keep as is. Same name locally and remotely. */
- MAP_RENAME, /* Simply rename the attribute. Name changes, data is the same */
- MAP_CONVERT, /* Rename + convert data */
- MAP_GENERATE /* Use generate function for generating new name/data.
- Used for generating attributes based on
- multiple remote attributes. */
- } type;
-
- /* if set, will be called for search expressions that contain this attribute */
- int (*convert_operator)(struct ldb_module *, TALLOC_CTX *ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *);
-
- union {
- struct {
- const char *remote_name;
- } rename;
-
- struct {
- const char *remote_name;
-
- /* Convert local to remote data */
- ldb_map_convert_func convert_local;
-
- /* Convert remote to local data */
- /* an entry can have convert_remote set to NULL, as long as there as an entry with the same local_name
- * that is non-NULL before it. */
- ldb_map_convert_func convert_remote;
- } convert;
-
- struct {
- /* Generate the local attribute from remote message */
- struct ldb_message_element *(*generate_local)(struct ldb_module *, TALLOC_CTX *mem_ctx, const char *remote_attr, const struct ldb_message *remote);
-
- /* Update remote message with information from local message */
- void (*generate_remote)(struct ldb_module *, const char *local_attr, const struct ldb_message *old, struct ldb_message *remote, struct ldb_message *local);
-
- /* Name(s) for this attribute on the remote server. This is an array since
- * one local attribute's data can be split up into several attributes
- * remotely */
- const char *remote_names[LDB_MAP_MAX_REMOTE_NAMES];
-
- /* Names of additional remote attributes
- * required for the generation. NULL
- * indicates that `local_attr' suffices. */
- /*
-#define LDB_MAP_MAX_SELF_ATTRIBUTES 10
- const char *self_attrs[LDB_MAP_MAX_SELF_ATTRIBUTES];
- */
- } generate;
- } u;
-};
-
-
-#define LDB_MAP_MAX_SUBCLASSES 10
-#define LDB_MAP_MAX_MUSTS 10
-#define LDB_MAP_MAX_MAYS 50
-
-/* map from local to remote objectClass */
-struct ldb_map_objectclass {
- const char *local_name;
- const char *remote_name;
- const char *base_classes[LDB_MAP_MAX_SUBCLASSES];
- const char *musts[LDB_MAP_MAX_MUSTS];
- const char *mays[LDB_MAP_MAX_MAYS];
-};
-
-
-/* private context data */
-struct ldb_map_context {
- struct ldb_map_attribute *attribute_maps;
- /* NOTE: Always declare base classes first here */
- const struct ldb_map_objectclass *objectclass_maps;
-
- /* Remote (often operational) attributes that should be added
- * to any wildcard search */
- const char * const *wildcard_attributes;
-
- /* struct ldb_context *mapped_ldb; */
- const struct ldb_dn *local_base_dn;
- const struct ldb_dn *remote_base_dn;
-};
-
-/* Global private data */
-struct map_private {
- void *caller_private;
- struct ldb_map_context *context;
-};
-
-/* Initialize global private data. */
-int ldb_map_init(struct ldb_module *module, const struct ldb_map_attribute *attrs,
- const struct ldb_map_objectclass *ocls,
- const char * const *wildcard_attributes,
- const char *name);
-
-/* get copy of map_ops */
-struct ldb_module_ops
-ldb_map_get_ops(void);
-
-#endif /* __LDB_MAP_H__ */
diff --git a/source/lib/ldb/modules/ldb_map_inbound.c b/source/lib/ldb/modules/ldb_map_inbound.c
deleted file mode 100644
index 38454b2b116..00000000000
--- a/source/lib/ldb/modules/ldb_map_inbound.c
+++ /dev/null
@@ -1,724 +0,0 @@
-/*
- ldb database mapping module
-
- Copyright (C) Jelmer Vernooij 2005
- Copyright (C) Martin Kuehl <mkhl@samba.org> 2006
-
- * NOTICE: this module is NOT released under the GNU LGPL license as
- * other ldb code. This module is release under the GNU GPL v2 or
- * later license.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/modules/ldb_map.h"
-#include "ldb/modules/ldb_map_private.h"
-
-
-/* Mapping message elements
- * ======================== */
-
-/* Map a message element into the remote partition. */
-static struct ldb_message_element *ldb_msg_el_map_local(struct ldb_module *module, void *mem_ctx, const struct ldb_map_attribute *map, const struct ldb_message_element *old)
-{
- struct ldb_message_element *el;
- int i;
-
- el = talloc_zero(mem_ctx, struct ldb_message_element);
- if (el == NULL) {
- map_oom(module);
- return NULL;
- }
-
- el->num_values = old->num_values;
- el->values = talloc_array(el, struct ldb_val, el->num_values);
- if (el->values == NULL) {
- talloc_free(el);
- map_oom(module);
- return NULL;
- }
-
- el->name = map_attr_map_local(el, map, old->name);
-
- for (i = 0; i < el->num_values; i++) {
- el->values[i] = ldb_val_map_local(module, el->values, map, &old->values[i]);
- }
-
- return el;
-}
-
-/* Add a message element either to a local or to a remote message,
- * depending on whether it goes into the local or remote partition. */
-static int ldb_msg_el_partition(struct ldb_module *module, struct ldb_message *local, struct ldb_message *remote, const struct ldb_message *msg, const char *attr_name, /* const char * const names[], */ const struct ldb_message_element *old)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const struct ldb_map_attribute *map = map_attr_find_local(data, attr_name);
- struct ldb_message_element *el=NULL;
-
- /* Unknown attribute: ignore */
- if (map == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "ldb_map: "
- "Not mapping attribute '%s': no mapping found\n",
- old->name);
- goto local;
- }
-
- switch (map->type) {
- case MAP_IGNORE:
- goto local;
-
- case MAP_CONVERT:
- if (map->u.convert.convert_local == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "ldb_map: "
- "Not mapping attribute '%s': "
- "'convert_local' not set\n",
- map->local_name);
- goto local;
- }
- /* fall through */
- case MAP_KEEP:
- case MAP_RENAME:
- el = ldb_msg_el_map_local(module, remote, map, old);
- break;
-
- case MAP_GENERATE:
- if (map->u.generate.generate_remote == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "ldb_map: "
- "Not mapping attribute '%s': "
- "'generate_remote' not set\n",
- map->local_name);
- goto local;
- }
-
- /* TODO: if this attr requires context:
- * make sure all context attrs are mappable (in 'names')
- * make sure all context attrs have already been mapped?
- * maybe postpone generation until they have been mapped?
- */
-
- map->u.generate.generate_remote(module, map->local_name, msg, remote, local);
- return 0;
- }
-
- if (el == NULL) {
- return -1;
- }
-
- return ldb_msg_add(remote, el, old->flags);
-
-local:
- el = talloc(local, struct ldb_message_element);
- if (el == NULL) {
- map_oom(module);
- return -1;
- }
-
- *el = *old; /* copy the old element */
-
- return ldb_msg_add(local, el, old->flags);
-}
-
-/* Mapping messages
- * ================ */
-
-/* Check whether a message will be (partially) mapped into the remote partition. */
-static BOOL ldb_msg_check_remote(struct ldb_module *module, const struct ldb_message *msg)
-{
- const struct ldb_map_context *data = map_get_context(module);
- BOOL ret;
- int i;
-
- for (i = 0; i < msg->num_elements; i++) {
- ret = map_attr_check_remote(data, msg->elements[i].name);
- if (ret) {
- return ret;
- }
- }
-
- return False;
-}
-
-/* Split message elements that stay in the local partition from those
- * that are mapped into the remote partition. */
-static int ldb_msg_partition(struct ldb_module *module, struct ldb_message *local, struct ldb_message *remote, const struct ldb_message *msg)
-{
- /* const char * const names[]; */
- int i, ret;
-
- for (i = 0; i < msg->num_elements; i++) {
- /* Skip 'IS_MAPPED' */
- if (ldb_attr_cmp(msg->elements[i].name, IS_MAPPED) == 0) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "ldb_map: "
- "Skipping attribute '%s'\n",
- msg->elements[i].name);
- continue;
- }
-
- ret = ldb_msg_el_partition(module, local, remote, msg, msg->elements[i].name, &msg->elements[i]);
- if (ret) {
- return ret;
- }
- }
-
- return 0;
-}
-
-
-/* Inbound requests: add, modify, rename, delete
- * ============================================= */
-
-/* Add the remote record. */
-int map_add_do_remote(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->remote_req);
-
- ac->step = MAP_ADD_REMOTE;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_remote_request(ac->module, ac->remote_req);
-}
-
-/* Add the local record. */
-int map_add_do_local(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->local_req);
-
- ac->step = MAP_ADD_LOCAL;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_request(ac->module, ac->local_req);
-}
-
-/* Add a record. */
-int map_add(struct ldb_module *module, struct ldb_request *req)
-{
- const struct ldb_message *msg = req->op.add.message;
- struct ldb_handle *h;
- struct map_context *ac;
- struct ldb_message *local, *remote;
- const char *dn;
-
- /* Do not manipulate our control entries */
- if (ldb_dn_is_special(msg->dn)) {
- return ldb_next_request(module, req);
- }
-
- /* No mapping requested (perhaps no DN mapping specified), skip to next module */
- if (!ldb_dn_check_local(module, msg->dn)) {
- return ldb_next_request(module, req);
- }
-
- /* No mapping needed, fail */
- if (!ldb_msg_check_remote(module, msg)) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Prepare context and handle */
- h = map_init_handle(req, module);
- if (h == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct map_context);
-
- /* Prepare the local operation */
- ac->local_req = talloc(ac, struct ldb_request);
- if (ac->local_req == NULL) {
- goto oom;
- }
-
- *(ac->local_req) = *req; /* copy the request */
-
- ac->local_req->context = NULL;
- ac->local_req->callback = NULL;
-
- /* Prepare the remote operation */
- ac->remote_req = talloc(ac, struct ldb_request);
- if (ac->remote_req == NULL) {
- goto oom;
- }
-
- *(ac->remote_req) = *req; /* copy the request */
-
- ac->remote_req->context = NULL;
- ac->remote_req->callback = NULL;
-
- /* Prepare the local message */
- local = ldb_msg_new(ac->local_req);
- if (local == NULL) {
- goto oom;
- }
- local->dn = msg->dn;
-
- /* Prepare the remote message */
- remote = ldb_msg_new(ac->remote_req);
- if (remote == NULL) {
- goto oom;
- }
- remote->dn = ldb_dn_map_local(ac->module, remote, msg->dn);
-
- /* Split local from remote message */
- ldb_msg_partition(module, local, remote, msg);
- ac->local_req->op.add.message = local;
- ac->remote_req->op.add.message = remote;
-
- if ((local->num_elements == 0) || (!map_check_local_db(ac->module))) {
- /* No local data or db, just run the remote request */
- talloc_free(ac->local_req);
- req->handle = h; /* return our own handle to deal with this call */
- return map_add_do_remote(h);
- }
-
- /* Store remote DN in 'IS_MAPPED' */
- /* TODO: use GUIDs here instead */
- dn = ldb_dn_linearize(local, remote->dn);
- if (ldb_msg_add_string(local, IS_MAPPED, dn) != 0) {
- goto failed;
- }
-
- req->handle = h; /* return our own handle to deal with this call */
- return map_add_do_local(h);
-
-oom:
- map_oom(module);
-failed:
- talloc_free(h);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-/* Modify the remote record. */
-int map_modify_do_remote(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->remote_req);
-
- ac->step = MAP_MODIFY_REMOTE;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_remote_request(ac->module, ac->remote_req);
-}
-
-/* Modify the local record. */
-int map_modify_do_local(struct ldb_handle *handle)
-{
- struct map_context *ac;
- struct ldb_message *msg;
- char *dn;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- if (ac->local_dn == NULL) {
- /* No local record present, add it instead */
- msg = discard_const_p(struct ldb_message, ac->local_req->op.mod.message);
-
- /* Add local 'IS_MAPPED' */
- /* TODO: use GUIDs here instead */
- dn = ldb_dn_linearize(msg, ac->remote_req->op.mod.message->dn);
- if (ldb_msg_add_empty(msg, IS_MAPPED, LDB_FLAG_MOD_ADD, NULL) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- if (ldb_msg_add_string(msg, IS_MAPPED, dn) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Turn request into 'add' */
- ac->local_req->operation = LDB_ADD;
- ac->local_req->op.add.message = msg;
- /* TODO: Could I just leave msg in there? I think so,
- * but it looks clearer this way. */
- }
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->local_req);
-
- ac->step = MAP_MODIFY_LOCAL;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_request(ac->module, ac->local_req);
-}
-
-/* Modify a record. */
-int map_modify(struct ldb_module *module, struct ldb_request *req)
-{
- const struct ldb_message *msg = req->op.mod.message;
- struct ldb_handle *h;
- struct map_context *ac;
- struct ldb_message *local, *remote;
-
- /* Do not manipulate our control entries */
- if (ldb_dn_is_special(msg->dn)) {
- return ldb_next_request(module, req);
- }
-
- /* No mapping requested (perhaps no DN mapping specified), skip to next module */
- if (!ldb_dn_check_local(module, msg->dn)) {
- return ldb_next_request(module, req);
- }
-
- /* No mapping needed, skip to next module */
- /* TODO: What if the remote part exists, the local doesn't,
- * and this request wants to modify local data and thus
- * add the local record? */
- if (!ldb_msg_check_remote(module, msg)) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Prepare context and handle */
- h = map_init_handle(req, module);
- if (h == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct map_context);
-
- /* Prepare the local operation */
- ac->local_req = talloc(ac, struct ldb_request);
- if (ac->local_req == NULL) {
- goto oom;
- }
-
- *(ac->local_req) = *req; /* copy the request */
-
- ac->local_req->context = NULL;
- ac->local_req->callback = NULL;
-
- /* Prepare the remote operation */
- ac->remote_req = talloc(ac, struct ldb_request);
- if (ac->remote_req == NULL) {
- goto oom;
- }
-
- *(ac->remote_req) = *req; /* copy the request */
-
- ac->remote_req->context = NULL;
- ac->remote_req->callback = NULL;
-
- /* Prepare the local message */
- local = ldb_msg_new(ac->local_req);
- if (local == NULL) {
- goto oom;
- }
- local->dn = msg->dn;
-
- /* Prepare the remote message */
- remote = ldb_msg_new(ac->remote_req);
- if (remote == NULL) {
- goto oom;
- }
- remote->dn = ldb_dn_map_local(ac->module, remote, msg->dn);
-
- /* Split local from remote message */
- ldb_msg_partition(module, local, remote, msg);
- ac->local_req->op.mod.message = local;
- ac->remote_req->op.mod.message = remote;
-
- if ((local->num_elements == 0) || (!map_check_local_db(ac->module))) {
- /* No local data or db, just run the remote request */
- talloc_free(ac->local_req);
- req->handle = h; /* return our own handle to deal with this call */
- return map_modify_do_remote(h);
- }
-
- /* prepare the search operation */
- ac->search_req = map_search_self_req(ac, msg->dn);
- if (ac->search_req == NULL) {
- goto failed;
- }
-
- ac->step = MAP_SEARCH_SELF_MODIFY;
-
- req->handle = h; /* return our own handle to deal with this call */
- return ldb_next_request(module, ac->search_req);
-
-oom:
- map_oom(module);
-failed:
- talloc_free(h);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-/* Delete the remote record. */
-int map_delete_do_remote(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->remote_req);
-
- ac->step = MAP_DELETE_REMOTE;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_remote_request(ac->module, ac->remote_req);
-}
-
-/* Delete the local record. */
-int map_delete_do_local(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- /* No local record, continue remotely */
- if (ac->local_dn == NULL) {
- return map_delete_do_remote(handle);
- }
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->local_req);
-
- ac->step = MAP_DELETE_LOCAL;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_request(ac->module, ac->local_req);
-}
-
-/* Delete a record. */
-int map_delete(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_handle *h;
- struct map_context *ac;
-
- /* Do not manipulate our control entries */
- if (ldb_dn_is_special(req->op.del.dn)) {
- return ldb_next_request(module, req);
- }
-
- /* No mapping requested (perhaps no DN mapping specified), skip to next module */
- if (!ldb_dn_check_local(module, req->op.del.dn)) {
- return ldb_next_request(module, req);
- }
-
- /* Prepare context and handle */
- h = map_init_handle(req, module);
- if (h == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct map_context);
-
- /* Prepare the local operation */
- ac->local_req = talloc(ac, struct ldb_request);
- if (ac->local_req == NULL) {
- goto oom;
- }
-
- *(ac->local_req) = *req; /* copy the request */
- ac->local_req->op.del.dn = req->op.del.dn;
-
- ac->local_req->context = NULL;
- ac->local_req->callback = NULL;
-
- /* Prepare the remote operation */
- ac->remote_req = talloc(ac, struct ldb_request);
- if (ac->remote_req == NULL) {
- goto oom;
- }
-
- *(ac->remote_req) = *req; /* copy the request */
- ac->remote_req->op.del.dn = ldb_dn_map_local(module, ac->remote_req, req->op.del.dn);
-
- /* No local db, just run the remote request */
- if (!map_check_local_db(ac->module)) {
- req->handle = h; /* return our own handle to deal with this call */
- return map_delete_do_remote(h);
- }
-
- ac->remote_req->context = NULL;
- ac->remote_req->callback = NULL;
-
- /* Prepare the search operation */
- ac->search_req = map_search_self_req(ac, req->op.del.dn);
- if (ac->search_req == NULL) {
- goto failed;
- }
-
- req->handle = h; /* return our own handle to deal with this call */
-
- ac->step = MAP_SEARCH_SELF_DELETE;
-
- return ldb_next_request(module, ac->search_req);
-
-oom:
- map_oom(module);
-failed:
- talloc_free(h);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-/* Rename the remote record. */
-int map_rename_do_remote(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->remote_req);
-
- ac->step = MAP_RENAME_REMOTE;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_remote_request(ac->module, ac->remote_req);
-}
-
-/* Update the local 'IS_MAPPED' attribute. */
-int map_rename_do_fixup(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->down_req);
-
- ac->step = MAP_RENAME_FIXUP;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_request(ac->module, ac->down_req);
-}
-
-/* Rename the local record. */
-int map_rename_do_local(struct ldb_handle *handle)
-{
- struct map_context *ac;
-
- ac = talloc_get_type(handle->private_data, struct map_context);
-
- /* No local record, continue remotely */
- if (ac->local_dn == NULL) {
- return map_rename_do_remote(handle);
- }
-
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->local_req);
-
- ac->step = MAP_RENAME_LOCAL;
-
- handle->state = LDB_ASYNC_INIT;
- handle->status = LDB_SUCCESS;
-
- return ldb_next_request(ac->module, ac->local_req);
-}
-
-/* Rename a record. */
-int map_rename(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_handle *h;
- struct map_context *ac;
-
- /* Do not manipulate our control entries */
- if (ldb_dn_is_special(req->op.rename.olddn)) {
- return ldb_next_request(module, req);
- }
-
- /* No mapping requested (perhaps no DN mapping specified), skip to next module */
- if ((!ldb_dn_check_local(module, req->op.rename.olddn)) &&
- (!ldb_dn_check_local(module, req->op.rename.newdn))) {
- return ldb_next_request(module, req);
- }
-
- /* Rename into/out of the mapped partition requested, bail out */
- if (!ldb_dn_check_local(module, req->op.rename.olddn) ||
- !ldb_dn_check_local(module, req->op.rename.newdn)) {
- return LDB_ERR_AFFECTS_MULTIPLE_DSAS;
- }
-
- /* Prepare context and handle */
- h = map_init_handle(req, module);
- if (h == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct map_context);
-
- /* Prepare the local operation */
- ac->local_req = talloc(ac, struct ldb_request);
- if (ac->local_req == NULL) {
- goto oom;
- }
-
- *(ac->local_req) = *req; /* copy the request */
- ac->local_req->op.rename.olddn = req->op.rename.olddn;
- ac->local_req->op.rename.newdn = req->op.rename.newdn;
-
- ac->local_req->context = NULL;
- ac->local_req->callback = NULL;
-
- /* Prepare the remote operation */
- ac->remote_req = talloc(ac, struct ldb_request);
- if (ac->remote_req == NULL) {
- goto oom;
- }
-
- *(ac->remote_req) = *req; /* copy the request */
- ac->remote_req->op.rename.olddn = ldb_dn_map_local(module, ac->remote_req, req->op.rename.olddn);
- ac->remote_req->op.rename.newdn = ldb_dn_map_local(module, ac->remote_req, req->op.rename.newdn);
-
- ac->remote_req->context = NULL;
- ac->remote_req->callback = NULL;
-
- /* No local db, just run the remote request */
- if (!map_check_local_db(ac->module)) {
- req->handle = h; /* return our own handle to deal with this call */
- return map_rename_do_remote(h);
- }
-
- /* Prepare the fixup operation */
- /* TODO: use GUIDs here instead -- or skip it when GUIDs are used. */
- ac->down_req = map_build_fixup_req(ac, req->op.rename.newdn, ac->remote_req->op.rename.newdn);
- if (ac->down_req == NULL) {
- goto failed;
- }
-
- /* Prepare the search operation */
- ac->search_req = map_search_self_req(ac, req->op.rename.olddn);
- if (ac->search_req == NULL) {
- goto failed;
- }
-
- req->handle = h; /* return our own handle to deal with this call */
-
- ac->step = MAP_SEARCH_SELF_RENAME;
-
- return ldb_next_request(module, ac->search_req);
-
-oom:
- map_oom(module);
-failed:
- talloc_free(h);
- return LDB_ERR_OPERATIONS_ERROR;
-}
diff --git a/source/lib/ldb/modules/ldb_map_outbound.c b/source/lib/ldb/modules/ldb_map_outbound.c
deleted file mode 100644
index 6305e6666fe..00000000000
--- a/source/lib/ldb/modules/ldb_map_outbound.c
+++ /dev/null
@@ -1,1286 +0,0 @@
-/*
- ldb database mapping module
-
- Copyright (C) Jelmer Vernooij 2005
- Copyright (C) Martin Kuehl <mkhl@samba.org> 2006
- Copyright (C) Andrew Bartlett <abartlet@samba.org> 2006
-
- * NOTICE: this module is NOT released under the GNU LGPL license as
- * other ldb code. This module is release under the GNU GPL v2 or
- * later license.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "ldb/modules/ldb_map.h"
-#include "ldb/modules/ldb_map_private.h"
-
-
-/* Mapping attributes
- * ================== */
-
-/* Select attributes that stay in the local partition. */
-static const char **map_attrs_select_local(struct ldb_module *module, void *mem_ctx, const char * const *attrs)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const char **result;
- int i, last;
-
- if (attrs == NULL)
- return NULL;
-
- last = 0;
- result = talloc_array(mem_ctx, const char *, 1);
- if (result == NULL) {
- goto failed;
- }
- result[0] = NULL;
-
- for (i = 0; attrs[i]; i++) {
- /* Wildcards and ignored attributes are kept locally */
- if ((ldb_attr_cmp(attrs[i], "*") == 0) ||
- (!map_attr_check_remote(data, attrs[i]))) {
- result = talloc_realloc(mem_ctx, result, const char *, last+2);
- if (result == NULL) {
- goto failed;
- }
-
- result[last] = talloc_strdup(result, attrs[i]);
- result[last+1] = NULL;
- last++;
- }
- }
-
- return result;
-
-failed:
- talloc_free(result);
- map_oom(module);
- return NULL;
-}
-
-/* Collect attributes that are mapped into the remote partition. */
-static const char **map_attrs_collect_remote(struct ldb_module *module, void *mem_ctx,
- const char * const *attrs)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const char **result;
- const struct ldb_map_attribute *map;
- const char *name=NULL;
- int i, j, last;
- int ret;
-
- last = 0;
- result = talloc_array(mem_ctx, const char *, 1);
- if (result == NULL) {
- goto failed;
- }
- result[0] = NULL;
-
- for (i = 0; attrs[i]; i++) {
- /* Wildcards are kept remotely, too */
- if (ldb_attr_cmp(attrs[i], "*") == 0) {
- const char **new_attrs = NULL;
- ret = map_attrs_merge(module, mem_ctx, &new_attrs, attrs);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
- ret = map_attrs_merge(module, mem_ctx, &new_attrs, data->wildcard_attributes);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
-
- attrs = new_attrs;
- break;
- }
- }
-
- for (i = 0; attrs[i]; i++) {
- /* Wildcards are kept remotely, too */
- if (ldb_attr_cmp(attrs[i], "*") == 0) {
- /* Add all 'include in wildcard' attributes */
- name = attrs[i];
- goto named;
- }
-
- /* Add remote names of mapped attrs */
- map = map_attr_find_local(data, attrs[i]);
- if (map == NULL) {
- continue;
- }
-
- switch (map->type) {
- case MAP_IGNORE:
- continue;
-
- case MAP_KEEP:
- name = attrs[i];
- goto named;
-
- case MAP_RENAME:
- case MAP_CONVERT:
- name = map->u.rename.remote_name;
- goto named;
-
- case MAP_GENERATE:
- /* Add all remote names of "generate" attrs */
- for (j = 0; map->u.generate.remote_names[j]; j++) {
- result = talloc_realloc(mem_ctx, result, const char *, last+2);
- if (result == NULL) {
- goto failed;
- }
-
- result[last] = talloc_strdup(result, map->u.generate.remote_names[j]);
- result[last+1] = NULL;
- last++;
- }
- continue;
- }
-
- named: /* We found a single remote name, add that */
- result = talloc_realloc(mem_ctx, result, const char *, last+2);
- if (result == NULL) {
- goto failed;
- }
-
- result[last] = talloc_strdup(result, name);
- result[last+1] = NULL;
- last++;
- }
-
- return result;
-
-failed:
- talloc_free(result);
- map_oom(module);
- return NULL;
-}
-
-/* Split attributes that stay in the local partition from those that
- * are mapped into the remote partition. */
-static int map_attrs_partition(struct ldb_module *module, void *mem_ctx, const char ***local_attrs, const char ***remote_attrs, const char * const *attrs)
-{
- *local_attrs = map_attrs_select_local(module, mem_ctx, attrs);
- *remote_attrs = map_attrs_collect_remote(module, mem_ctx, attrs);
-
- return 0;
-}
-
-/* Mapping message elements
- * ======================== */
-
-/* Add an element to a message, overwriting any old identically named elements. */
-static int ldb_msg_replace(struct ldb_message *msg, const struct ldb_message_element *el)
-{
- struct ldb_message_element *old;
-
- old = ldb_msg_find_element(msg, el->name);
-
- /* no local result, add as new element */
- if (old == NULL) {
- if (ldb_msg_add_empty(msg, el->name, 0, &old) != 0) {
- return -1;
- }
- talloc_free(old->name);
- }
-
- /* copy new element */
- *old = *el;
-
- /* and make sure we reference the contents */
- if (!talloc_reference(msg->elements, el->name)) {
- return -1;
- }
- if (!talloc_reference(msg->elements, el->values)) {
- return -1;
- }
-
- return 0;
-}
-
-/* Map a message element back into the local partition. */
-static struct ldb_message_element *ldb_msg_el_map_remote(struct ldb_module *module,
- void *mem_ctx,
- const struct ldb_map_attribute *map,
- const char *attr_name,
- const struct ldb_message_element *old)
-{
- struct ldb_message_element *el;
- int i;
-
- el = talloc_zero(mem_ctx, struct ldb_message_element);
- if (el == NULL) {
- map_oom(module);
- return NULL;
- }
-
- el->num_values = old->num_values;
- el->values = talloc_array(el, struct ldb_val, el->num_values);
- if (el->values == NULL) {
- talloc_free(el);
- map_oom(module);
- return NULL;
- }
-
- el->name = talloc_strdup(el, attr_name);
- if (el->name == NULL) {
- talloc_free(el);
- map_oom(module);
- return NULL;
- }
-
- for (i = 0; i < el->num_values; i++) {
- el->values[i] = ldb_val_map_remote(module, el->values, map, &old->values[i]);
- }
-
- return el;
-}
-
-/* Merge a remote message element into a local message. */
-static int ldb_msg_el_merge(struct ldb_module *module, struct ldb_message *local,
- struct ldb_message *remote, const char *attr_name)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const struct ldb_map_attribute *map;
- struct ldb_message_element *old, *el=NULL;
- const char *remote_name = NULL;
-
- /* We handle wildcards in ldb_msg_el_merge_wildcard */
- if (ldb_attr_cmp(attr_name, "*") == 0) {
- return 0;
- }
-
- map = map_attr_find_local(data, attr_name);
-
- /* Unknown attribute in remote message:
- * skip, attribute was probably auto-generated */
- if (map == NULL) {
- return 0;
- }
-
- switch (map->type) {
- case MAP_IGNORE:
- break;
- case MAP_CONVERT:
- remote_name = map->u.convert.remote_name;
- break;
- case MAP_KEEP:
- remote_name = attr_name;
- break;
- case MAP_RENAME:
- remote_name = map->u.rename.remote_name;
- break;
- case MAP_GENERATE:
- break;
- }
-
- switch (map->type) {
- case MAP_IGNORE:
- return 0;
-
- case MAP_CONVERT:
- if (map->u.convert.convert_remote == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "Skipping attribute '%s': "
- "'convert_remote' not set\n",
- attr_name);
- return 0;
- }
- /* fall through */
- case MAP_KEEP:
- case MAP_RENAME:
- old = ldb_msg_find_element(remote, remote_name);
- if (old) {
- el = ldb_msg_el_map_remote(module, local, map, attr_name, old);
- } else {
- return LDB_ERR_NO_SUCH_ATTRIBUTE;
- }
- break;
-
- case MAP_GENERATE:
- if (map->u.generate.generate_local == NULL) {
- ldb_debug(module->ldb, LDB_DEBUG_ERROR, "ldb_map: "
- "Skipping attribute '%s': "
- "'generate_local' not set\n",
- attr_name);
- return 0;
- }
-
- el = map->u.generate.generate_local(module, local, attr_name, remote);
- if (!el) {
- /* Generation failure is probably due to lack of source attributes */
- return LDB_ERR_NO_SUCH_ATTRIBUTE;
- }
- break;
- }
-
- if (el == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- return ldb_msg_replace(local, el);
-}
-
-/* Handle wildcard parts of merging a remote message element into a local message. */
-static int ldb_msg_el_merge_wildcard(struct ldb_module *module, struct ldb_message *local,
- struct ldb_message *remote)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const struct ldb_map_attribute *map = map_attr_find_local(data, "*");
- struct ldb_message_element *el=NULL;
- int i, ret;
-
- /* Perhaps we have a mapping for "*" */
- if (map && map->type == MAP_KEEP) {
- /* We copy everything over, and hope that anything with a
- more specific rule is overwritten */
- for (i = 0; i < remote->num_elements; i++) {
- el = ldb_msg_el_map_remote(module, local, map, remote->elements[i].name,
- &remote->elements[i]);
- if (el == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldb_msg_replace(local, el);
- if (ret) {
- return ret;
- }
- }
- }
-
- /* Now walk the list of possible mappings, and apply each */
- for (i = 0; data->attribute_maps[i].local_name; i++) {
- ret = ldb_msg_el_merge(module, local, remote,
- data->attribute_maps[i].local_name);
- if (ret == LDB_ERR_NO_SUCH_ATTRIBUTE) {
- continue;
- } else if (ret) {
- return ret;
- } else {
- continue;
- }
- }
-
- return 0;
-}
-
-/* Mapping messages
- * ================ */
-
-/* Merge two local messages into a single one. */
-static int ldb_msg_merge_local(struct ldb_module *module, struct ldb_message *msg1, struct ldb_message *msg2)
-{
- int i, ret;
-
- for (i = 0; i < msg2->num_elements; i++) {
- ret = ldb_msg_replace(msg1, &msg2->elements[i]);
- if (ret) {
- return ret;
- }
- }
-
- return 0;
-}
-
-/* Merge a local and a remote message into a single local one. */
-static int ldb_msg_merge_remote(struct map_context *ac, struct ldb_message *local,
- struct ldb_message *remote)
-{
- int i, ret;
- const char * const *attrs = ac->all_attrs;
- if (!attrs) {
- ret = ldb_msg_el_merge_wildcard(ac->module, local, remote);
- if (ret) {
- return ret;
- }
- }
-
- for (i = 0; attrs && attrs[i]; i++) {
- if (ldb_attr_cmp(attrs[i], "*") == 0) {
- ret = ldb_msg_el_merge_wildcard(ac->module, local, remote);
- if (ret) {
- return ret;
- }
- break;
- }
- }
-
- /* Try to map each attribute back;
- * Add to local message is possible,
- * Overwrite old local attribute if necessary */
- for (i = 0; attrs && attrs[i]; i++) {
- ret = ldb_msg_el_merge(ac->module, local, remote,
- attrs[i]);
- if (ret == LDB_ERR_NO_SUCH_ATTRIBUTE) {
- } else if (ret) {
- return ret;
- }
- }
-
- return 0;
-}
-
-/* Mapping search results
- * ====================== */
-
-/* Map a search result back into the local partition. */
-static int map_reply_remote(struct map_context *ac, struct ldb_reply *ares)
-{
- struct ldb_message *msg;
- struct ldb_dn *dn;
- int ret;
-
- /* There is no result message, skip */
- if (ares->type != LDB_REPLY_ENTRY) {
- return 0;
- }
-
- /* Create a new result message */
- msg = ldb_msg_new(ares);
- if (msg == NULL) {
- map_oom(ac->module);
- return -1;
- }
-
- /* Merge remote message into new message */
- ret = ldb_msg_merge_remote(ac, msg, ares->message);
- if (ret) {
- talloc_free(msg);
- return ret;
- }
-
- /* Create corresponding local DN */
- dn = ldb_dn_map_rebase_remote(ac->module, msg, ares->message->dn);
- if (dn == NULL) {
- talloc_free(msg);
- return -1;
- }
- msg->dn = dn;
-
- /* Store new message with new DN as the result */
- talloc_free(ares->message);
- ares->message = msg;
-
- return 0;
-}
-
-/* Mapping parse trees
- * =================== */
-
-/* Check whether a parse tree can safely be split in two. */
-static BOOL ldb_parse_tree_check_splittable(const struct ldb_parse_tree *tree)
-{
- const struct ldb_parse_tree *subtree = tree;
- BOOL negate = False;
-
- while (subtree) {
- switch (subtree->operation) {
- case LDB_OP_NOT:
- negate = !negate;
- subtree = subtree->u.isnot.child;
- continue;
-
- case LDB_OP_AND:
- return !negate; /* if negate: False */
-
- case LDB_OP_OR:
- return negate; /* if negate: True */
-
- default:
- return True; /* simple parse tree */
- }
- }
-
- return True; /* no parse tree */
-}
-
-/* Collect a list of attributes required to match a given parse tree. */
-static int ldb_parse_tree_collect_attrs(struct ldb_module *module, void *mem_ctx, const char ***attrs, const struct ldb_parse_tree *tree)
-{
- const char **new_attrs;
- int i, ret;
-
- if (tree == NULL) {
- return 0;
- }
-
- switch (tree->operation) {
- case LDB_OP_OR:
- case LDB_OP_AND: /* attributes stored in list of subtrees */
- for (i = 0; i < tree->u.list.num_elements; i++) {
- ret = ldb_parse_tree_collect_attrs(module, mem_ctx,
- attrs, tree->u.list.elements[i]);
- if (ret) {
- return ret;
- }
- }
- return 0;
-
- case LDB_OP_NOT: /* attributes stored in single subtree */
- return ldb_parse_tree_collect_attrs(module, mem_ctx, attrs, tree->u.isnot.child);
-
- default: /* single attribute in tree */
- new_attrs = ldb_attr_list_copy_add(mem_ctx, *attrs, tree->u.equality.attr);
- talloc_free(*attrs);
- *attrs = new_attrs;
- return 0;
- }
-
- return -1;
-}
-
-static int map_subtree_select_local(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree);
-
-/* Select a negated subtree that queries attributes in the local partition */
-static int map_subtree_select_local_not(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
- struct ldb_parse_tree *child;
- int ret;
-
- /* Prepare new tree */
- *new = talloc_memdup(mem_ctx, tree, sizeof(struct ldb_parse_tree));
- if (*new == NULL) {
- map_oom(module);
- return -1;
- }
-
- /* Generate new subtree */
- ret = map_subtree_select_local(module, *new, &child, tree->u.isnot.child);
- if (ret) {
- talloc_free(*new);
- return ret;
- }
-
- /* Prune tree without subtree */
- if (child == NULL) {
- talloc_free(*new);
- *new = NULL;
- return 0;
- }
-
- (*new)->u.isnot.child = child;
-
- return ret;
-}
-
-/* Select a list of subtrees that query attributes in the local partition */
-static int map_subtree_select_local_list(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
- int i, j, ret=0;
-
- /* Prepare new tree */
- *new = talloc_memdup(mem_ctx, tree, sizeof(struct ldb_parse_tree));
- if (*new == NULL) {
- map_oom(module);
- return -1;
- }
-
- /* Prepare list of subtrees */
- (*new)->u.list.num_elements = 0;
- (*new)->u.list.elements = talloc_array(*new, struct ldb_parse_tree *, tree->u.list.num_elements);
- if ((*new)->u.list.elements == NULL) {
- map_oom(module);
- talloc_free(*new);
- return -1;
- }
-
- /* Generate new list of subtrees */
- j = 0;
- for (i = 0; i < tree->u.list.num_elements; i++) {
- struct ldb_parse_tree *child;
- ret = map_subtree_select_local(module, *new, &child, tree->u.list.elements[i]);
- if (ret) {
- talloc_free(*new);
- return ret;
- }
-
- if (child) {
- (*new)->u.list.elements[j] = child;
- j++;
- }
- }
-
- /* Prune tree without subtrees */
- if (j == 0) {
- talloc_free(*new);
- *new = NULL;
- return 0;
- }
-
- /* Fix subtree list size */
- (*new)->u.list.num_elements = j;
- (*new)->u.list.elements = talloc_realloc(*new, (*new)->u.list.elements, struct ldb_parse_tree *, (*new)->u.list.num_elements);
-
- return ret;
-}
-
-/* Select a simple subtree that queries attributes in the local partition */
-static int map_subtree_select_local_simple(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
- /* Prepare new tree */
- *new = talloc_memdup(mem_ctx, tree, sizeof(struct ldb_parse_tree));
- if (*new == NULL) {
- map_oom(module);
- return -1;
- }
-
- return 0;
-}
-
-/* Select subtrees that query attributes in the local partition */
-static int map_subtree_select_local(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
- const struct ldb_map_context *data = map_get_context(module);
-
- if (tree == NULL) {
- return 0;
- }
-
- if (tree->operation == LDB_OP_NOT) {
- return map_subtree_select_local_not(module, mem_ctx, new, tree);
- }
-
- if (tree->operation == LDB_OP_AND || tree->operation == LDB_OP_OR) {
- return map_subtree_select_local_list(module, mem_ctx, new, tree);
- }
-
- if (map_attr_check_remote(data, tree->u.equality.attr)) {
- *new = NULL;
- return 0;
- }
-
- return map_subtree_select_local_simple(module, mem_ctx, new, tree);
-}
-
-static int map_subtree_collect_remote(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree);
-
-/* Collect a negated subtree that queries attributes in the remote partition */
-static int map_subtree_collect_remote_not(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
- struct ldb_parse_tree *child;
- int ret;
-
- /* Prepare new tree */
- *new = talloc_memdup(mem_ctx, tree, sizeof(struct ldb_parse_tree));
- if (*new == NULL) {
- map_oom(module);
- return -1;
- }
-
- /* Generate new subtree */
- ret = map_subtree_collect_remote(module, *new, &child, tree->u.isnot.child);
- if (ret) {
- talloc_free(*new);
- return ret;
- }
-
- /* Prune tree without subtree */
- if (child == NULL) {
- talloc_free(*new);
- *new = NULL;
- return 0;
- }
-
- (*new)->u.isnot.child = child;
-
- return ret;
-}
-
-/* Collect a list of subtrees that query attributes in the remote partition */
-static int map_subtree_collect_remote_list(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
- int i, j, ret=0;
-
- /* Prepare new tree */
- *new = talloc_memdup(mem_ctx, tree, sizeof(struct ldb_parse_tree));
- if (*new == NULL) {
- map_oom(module);
- return -1;
- }
-
- /* Prepare list of subtrees */
- (*new)->u.list.num_elements = 0;
- (*new)->u.list.elements = talloc_array(*new, struct ldb_parse_tree *, tree->u.list.num_elements);
- if ((*new)->u.list.elements == NULL) {
- map_oom(module);
- talloc_free(*new);
- return -1;
- }
-
- /* Generate new list of subtrees */
- j = 0;
- for (i = 0; i < tree->u.list.num_elements; i++) {
- struct ldb_parse_tree *child;
- ret = map_subtree_collect_remote(module, *new, &child, tree->u.list.elements[i]);
- if (ret) {
- talloc_free(*new);
- return ret;
- }
-
- if (child) {
- (*new)->u.list.elements[j] = child;
- j++;
- }
- }
-
- /* Prune tree without subtrees */
- if (j == 0) {
- talloc_free(*new);
- *new = NULL;
- return 0;
- }
-
- /* Fix subtree list size */
- (*new)->u.list.num_elements = j;
- (*new)->u.list.elements = talloc_realloc(*new, (*new)->u.list.elements, struct ldb_parse_tree *, (*new)->u.list.num_elements);
-
- return ret;
-}
-
-/* Collect a simple subtree that queries attributes in the remote partition */
-int map_subtree_collect_remote_simple(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree, const struct ldb_map_attribute *map)
-{
- const char *attr;
-
- /* Prepare new tree */
- *new = talloc(mem_ctx, struct ldb_parse_tree);
- if (*new == NULL) {
- map_oom(module);
- return -1;
- }
- **new = *tree;
-
- if (map->type == MAP_KEEP) {
- /* Nothing to do here */
- return 0;
- }
-
- /* Store attribute and value in new tree */
- switch (tree->operation) {
- case LDB_OP_PRESENT:
- attr = map_attr_map_local(*new, map, tree->u.present.attr);
- (*new)->u.present.attr = attr;
- break;
- case LDB_OP_SUBSTRING:
- {
- attr = map_attr_map_local(*new, map, tree->u.substring.attr);
- (*new)->u.substring.attr = attr;
- break;
- }
- case LDB_OP_EQUALITY:
- attr = map_attr_map_local(*new, map, tree->u.equality.attr);
- (*new)->u.equality.attr = attr;
- break;
- case LDB_OP_LESS:
- case LDB_OP_GREATER:
- case LDB_OP_APPROX:
- attr = map_attr_map_local(*new, map, tree->u.comparison.attr);
- (*new)->u.comparison.attr = attr;
- break;
- case LDB_OP_EXTENDED:
- attr = map_attr_map_local(*new, map, tree->u.extended.attr);
- (*new)->u.extended.attr = attr;
- break;
- default: /* unknown kind of simple subtree */
- talloc_free(*new);
- return -1;
- }
-
- if (attr == NULL) {
- talloc_free(*new);
- *new = NULL;
- return 0;
- }
-
- if (map->type == MAP_RENAME) {
- /* Nothing more to do here, the attribute has been renamed */
- return 0;
- }
-
- /* Store attribute and value in new tree */
- switch (tree->operation) {
- case LDB_OP_PRESENT:
- break;
- case LDB_OP_SUBSTRING:
- {
- int i;
- /* Map value */
- (*new)->u.substring.chunks = NULL;
- for (i=0; tree->u.substring.chunks[i]; i++) {
- (*new)->u.substring.chunks = talloc_realloc(*new, (*new)->u.substring.chunks, struct ldb_val *, i+2);
- if (!(*new)->u.substring.chunks) {
- talloc_free(*new);
- *new = NULL;
- return 0;
- }
- (*new)->u.substring.chunks[i] = talloc(*new, struct ldb_val);
- if (!(*new)->u.substring.chunks[i]) {
- talloc_free(*new);
- *new = NULL;
- return 0;
- }
- *(*new)->u.substring.chunks[i] = ldb_val_map_local(module, *new, map, tree->u.substring.chunks[i]);
- (*new)->u.substring.chunks[i+1] = NULL;
- }
- break;
- }
- case LDB_OP_EQUALITY:
- (*new)->u.equality.value = ldb_val_map_local(module, *new, map, &tree->u.equality.value);
- break;
- case LDB_OP_LESS:
- case LDB_OP_GREATER:
- case LDB_OP_APPROX:
- (*new)->u.comparison.value = ldb_val_map_local(module, *new, map, &tree->u.comparison.value);
- break;
- case LDB_OP_EXTENDED:
- (*new)->u.extended.value = ldb_val_map_local(module, *new, map, &tree->u.extended.value);
- (*new)->u.extended.rule_id = talloc_strdup(*new, tree->u.extended.rule_id);
- break;
- default: /* unknown kind of simple subtree */
- talloc_free(*new);
- return -1;
- }
-
- return 0;
-}
-
-/* Collect subtrees that query attributes in the remote partition */
-static int map_subtree_collect_remote(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree)
-{
- const struct ldb_map_context *data = map_get_context(module);
- const struct ldb_map_attribute *map;
-
- if (tree == NULL) {
- return 0;
- }
-
- if (tree->operation == LDB_OP_NOT) {
- return map_subtree_collect_remote_not(module, mem_ctx, new, tree);
- }
-
- if ((tree->operation == LDB_OP_AND) || (tree->operation == LDB_OP_OR)) {
- return map_subtree_collect_remote_list(module, mem_ctx, new, tree);
- }
-
- if (!map_attr_check_remote(data, tree->u.equality.attr)) {
- *new = NULL;
- return 0;
- }
-
- map = map_attr_find_local(data, tree->u.equality.attr);
- if (map->convert_operator) {
- return map->convert_operator(module, mem_ctx, new, tree);
- }
-
- if (map->type == MAP_GENERATE) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "ldb_map: "
- "Skipping attribute '%s': "
- "'convert_operator' not set\n",
- tree->u.equality.attr);
- *new = NULL;
- return 0;
- }
-
- return map_subtree_collect_remote_simple(module, mem_ctx, new, tree, map);
-}
-
-/* Split subtrees that query attributes in the local partition from
- * those that query the remote partition. */
-static int ldb_parse_tree_partition(struct ldb_module *module, void *local_ctx, void *remote_ctx, struct ldb_parse_tree **local_tree, struct ldb_parse_tree **remote_tree, const struct ldb_parse_tree *tree)
-{
- int ret;
-
- *local_tree = NULL;
- *remote_tree = NULL;
-
- /* No original tree */
- if (tree == NULL) {
- return 0;
- }
-
- /* Generate local tree */
- ret = map_subtree_select_local(module, local_ctx, local_tree, tree);
- if (ret) {
- return ret;
- }
-
- /* Generate remote tree */
- ret = map_subtree_collect_remote(module, remote_ctx, remote_tree, tree);
- if (ret) {
- talloc_free(*local_tree);
- return ret;
- }
-
- return 0;
-}
-
-/* Collect a list of attributes required either explicitly from a
- * given list or implicitly from a given parse tree; split the
- * collected list into local and remote parts. */
-static int map_attrs_collect_and_partition(struct ldb_module *module, struct map_context *ac,
- const char * const *search_attrs,
- const struct ldb_parse_tree *tree)
-{
- void *tmp_ctx;
- const char **tree_attrs;
- const char **remote_attrs;
- const char **local_attrs;
- int ret;
-
- /* Clear initial lists of partitioned attributes */
-
- /* Clear initial lists of partitioned attributes */
-
- /* There is no tree, just partition the searched attributes */
- if (tree == NULL) {
- ret = map_attrs_partition(module, ac,
- &local_attrs, &remote_attrs, search_attrs);
- if (ret == 0) {
- ac->local_attrs = local_attrs;
- ac->remote_attrs = remote_attrs;
- ac->all_attrs = search_attrs;
- }
- return ret;
- }
-
- /* Create context for temporary memory */
- tmp_ctx = talloc_new(ac);
- if (tmp_ctx == NULL) {
- goto oom;
- }
-
- /* Prepare list of attributes from tree */
- tree_attrs = talloc_array(tmp_ctx, const char *, 1);
- if (tree_attrs == NULL) {
- talloc_free(tmp_ctx);
- goto oom;
- }
- tree_attrs[0] = NULL;
-
- /* Collect attributes from tree */
- ret = ldb_parse_tree_collect_attrs(module, tmp_ctx, &tree_attrs, tree);
- if (ret) {
- goto done;
- }
-
- /* Merge attributes from search operation */
- ret = map_attrs_merge(module, tmp_ctx, &tree_attrs, search_attrs);
- if (ret) {
- goto done;
- }
-
- /* Split local from remote attributes */
- ret = map_attrs_partition(module, ac, &local_attrs,
- &remote_attrs, tree_attrs);
-
- if (ret == 0) {
- ac->local_attrs = local_attrs;
- ac->remote_attrs = remote_attrs;
- talloc_steal(ac, tree_attrs);
- ac->all_attrs = tree_attrs;
- }
-done:
- /* Free temporary memory */
- talloc_free(tmp_ctx);
- return ret;
-
-oom:
- map_oom(module);
- return -1;
-}
-
-
-/* Outbound requests: search
- * ========================= */
-
-/* Pass a merged search result up the callback chain. */
-int map_up_callback(struct ldb_context *ldb, const struct ldb_request *req, struct ldb_reply *ares)
-{
- int i;
-
- /* No callback registered, stop */
- if (req->callback == NULL) {
- return LDB_SUCCESS;
- }
-
- /* Only records need special treatment */
- if (ares->type != LDB_REPLY_ENTRY) {
- return req->callback(ldb, req->context, ares);
- }
-
- /* Merged result doesn't match original query, skip */
- if (!ldb_match_msg(ldb, ares->message, req->op.search.tree, req->op.search.base, req->op.search.scope)) {
- ldb_debug(ldb, LDB_DEBUG_TRACE, "ldb_map: "
- "Skipping record '%s': "
- "doesn't match original search\n",
- ldb_dn_linearize(ldb, ares->message->dn));
- return LDB_SUCCESS;
- }
-
- /* Limit result to requested attrs */
- if ((req->op.search.attrs) && (!ldb_attr_in_list(req->op.search.attrs, "*"))) {
- for (i = 0; i < ares->message->num_elements; ) {
- struct ldb_message_element *el = &ares->message->elements[i];
- if (!ldb_attr_in_list(req->op.search.attrs, el->name)) {
- ldb_msg_remove_element(ares->message, el);
- } else {
- i++;
- }
- }
- }
-
- return req->callback(ldb, req->context, ares);
-}
-
-/* Merge the remote and local parts of a search result. */
-int map_local_merge_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct map_search_context *sc;
- int ret;
-
- if (context == NULL || ares == NULL) {
- ldb_set_errstring(ldb, talloc_asprintf(ldb, "ldb_map: "
- "NULL Context or Result in `map_local_merge_callback`"));
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- sc = talloc_get_type(context, struct map_search_context);
-
- switch (ares->type) {
- case LDB_REPLY_ENTRY:
- /* We have already found a local record */
- if (sc->local_res) {
- ldb_set_errstring(ldb, talloc_asprintf(ldb, "ldb_map: "
- "Too many results to base search for local entry"));
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Store local result */
- sc->local_res = ares;
-
- /* Merge remote into local message */
- ret = ldb_msg_merge_local(sc->ac->module, ares->message, sc->remote_res->message);
- if (ret) {
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- return map_up_callback(ldb, sc->ac->orig_req, ares);
-
- case LDB_REPLY_DONE:
- /* No local record found, continue with remote record */
- if (sc->local_res == NULL) {
- return map_up_callback(ldb, sc->ac->orig_req, sc->remote_res);
- }
- return LDB_SUCCESS;
-
- default:
- ldb_set_errstring(ldb, talloc_asprintf(ldb, "ldb_map: "
- "Unexpected result type in base search for local entry"));
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-}
-
-/* Search the local part of a remote search result. */
-int map_remote_search_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct map_context *ac;
- struct map_search_context *sc;
- struct ldb_request *req;
- int ret;
-
- if (context == NULL || ares == NULL) {
- ldb_set_errstring(ldb, talloc_asprintf(ldb, "ldb_map: "
- "NULL Context or Result in `map_remote_search_callback`"));
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac = talloc_get_type(context, struct map_context);
-
- /* It's not a record, stop searching */
- if (ares->type != LDB_REPLY_ENTRY) {
- return map_up_callback(ldb, ac->orig_req, ares);
- }
-
- /* Map result record into a local message */
- ret = map_reply_remote(ac, ares);
- if (ret) {
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* There is no local db, stop searching */
- if (!map_check_local_db(ac->module)) {
- return map_up_callback(ldb, ac->orig_req, ares);
- }
-
- /* Prepare local search context */
- sc = map_init_search_context(ac, ares);
- if (sc == NULL) {
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Prepare local search request */
- /* TODO: use GUIDs here instead? */
-
- ac->search_reqs = talloc_realloc(ac, ac->search_reqs, struct ldb_request *, ac->num_searches + 2);
- if (ac->search_reqs == NULL) {
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->search_reqs[ac->num_searches]
- = req = map_search_base_req(ac, ares->message->dn,
- NULL, NULL, sc, map_local_merge_callback);
- if (req == NULL) {
- talloc_free(sc);
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac->num_searches++;
- ac->search_reqs[ac->num_searches] = NULL;
-
- return ldb_next_request(ac->module, req);
-}
-
-/* Search a record. */
-int map_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_handle *h;
- struct map_context *ac;
- struct ldb_parse_tree *local_tree, *remote_tree;
- int ret;
-
- const char *wildcard[] = { "*", NULL };
- const char * const *attrs;
-
- /* Do not manipulate our control entries */
- if (ldb_dn_is_special(req->op.search.base))
- return ldb_next_request(module, req);
-
- /* No mapping requested, skip to next module */
- if ((req->op.search.base) && (!ldb_dn_check_local(module, req->op.search.base))) {
- return ldb_next_request(module, req);
- }
-
- /* TODO: How can we be sure about which partition we are
- * targetting when there is no search base? */
-
- /* Prepare context and handle */
- h = map_init_handle(req, module);
- if (h == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct map_context);
-
- ac->search_reqs = talloc_array(ac, struct ldb_request *, 2);
- if (ac->search_reqs == NULL) {
- talloc_free(h);
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac->num_searches = 1;
- ac->search_reqs[1] = NULL;
-
- /* Prepare the remote operation */
- ac->search_reqs[0] = talloc(ac, struct ldb_request);
- if (ac->search_reqs[0] == NULL) {
- goto oom;
- }
-
- *(ac->search_reqs[0]) = *req; /* copy the request */
-
- ac->search_reqs[0]->handle = h; /* return our own handle to deal with this call */
-
- ac->search_reqs[0]->context = ac;
- ac->search_reqs[0]->callback = map_remote_search_callback;
-
- /* It is easier to deal with the two different ways of
- * expressing the wildcard in the same codepath */
- attrs = req->op.search.attrs;
- if (attrs == NULL) {
- attrs = wildcard;
- }
-
- /* Split local from remote attrs */
- ret = map_attrs_collect_and_partition(module, ac,
- attrs, req->op.search.tree);
- if (ret) {
- goto failed;
- }
-
- ac->search_reqs[0]->op.search.attrs = ac->remote_attrs;
-
- /* Split local from remote tree */
- ret = ldb_parse_tree_partition(module, ac, ac->search_reqs[0],
- &local_tree, &remote_tree,
- req->op.search.tree);
- if (ret) {
- goto failed;
- }
-
- if (((local_tree != NULL) && (remote_tree != NULL)) &&
- (!ldb_parse_tree_check_splittable(req->op.search.tree))) {
- /* The query can't safely be split, enumerate the remote partition */
- local_tree = NULL;
- remote_tree = NULL;
- }
-
- if (local_tree == NULL) {
- /* Construct default local parse tree */
- local_tree = talloc_zero(ac, struct ldb_parse_tree);
- if (local_tree == NULL) {
- map_oom(ac->module);
- goto failed;
- }
-
- local_tree->operation = LDB_OP_PRESENT;
- local_tree->u.present.attr = talloc_strdup(local_tree, IS_MAPPED);
- }
- if (remote_tree == NULL) {
- /* Construct default remote parse tree */
- remote_tree = ldb_parse_tree(ac->search_reqs[0], NULL);
- if (remote_tree == NULL) {
- goto failed;
- }
- }
-
- ac->local_tree = local_tree;
- ac->search_reqs[0]->op.search.tree = remote_tree;
-
- ldb_set_timeout_from_prev_req(module->ldb, req, ac->search_reqs[0]);
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->step = MAP_SEARCH_REMOTE;
-
- ret = ldb_next_remote_request(module, ac->search_reqs[0]);
- if (ret == LDB_SUCCESS) {
- req->handle = h;
- }
- return ret;
-
-oom:
- map_oom(module);
-failed:
- talloc_free(h);
- return LDB_ERR_OPERATIONS_ERROR;
-}
diff --git a/source/lib/ldb/modules/ldb_map_private.h b/source/lib/ldb/modules/ldb_map_private.h
deleted file mode 100644
index 8a08d0a5b6f..00000000000
--- a/source/lib/ldb/modules/ldb_map_private.h
+++ /dev/null
@@ -1,117 +0,0 @@
-
-/* A handy macro to report Out of Memory conditions */
-#define map_oom(module) ldb_set_errstring(module->ldb, talloc_asprintf(module, "Out of Memory"));
-
-/* The type of search callback functions */
-typedef int (*ldb_search_callback)(struct ldb_context *, void *, struct ldb_reply *);
-
-/* The special DN from which the local and remote base DNs are fetched */
-#define MAP_DN_NAME "@MAP"
-#define MAP_DN_FROM "@FROM"
-#define MAP_DN_TO "@TO"
-
-/* Private data structures
- * ======================= */
-
-/* Context data for mapped requests */
-struct map_context {
- enum map_step {
- MAP_SEARCH_REMOTE,
- MAP_ADD_REMOTE,
- MAP_ADD_LOCAL,
- MAP_SEARCH_SELF_MODIFY,
- MAP_MODIFY_REMOTE,
- MAP_MODIFY_LOCAL,
- MAP_SEARCH_SELF_DELETE,
- MAP_DELETE_REMOTE,
- MAP_DELETE_LOCAL,
- MAP_SEARCH_SELF_RENAME,
- MAP_RENAME_REMOTE,
- MAP_RENAME_FIXUP,
- MAP_RENAME_LOCAL
- } step;
-
- struct ldb_module *module;
-
- const struct ldb_dn *local_dn;
- const struct ldb_parse_tree *local_tree;
- const char * const *local_attrs;
- const char * const *remote_attrs;
- const char * const *all_attrs;
-
- struct ldb_request *orig_req;
- struct ldb_request *local_req;
- struct ldb_request *remote_req;
- struct ldb_request *down_req;
- struct ldb_request *search_req;
-
- /* for search, we may have a lot of contexts */
- int num_searches;
- struct ldb_request **search_reqs;
-};
-
-/* Context data for mapped search requests */
-struct map_search_context {
- struct map_context *ac;
- struct ldb_reply *local_res;
- struct ldb_reply *remote_res;
-};
-
-
-/* Common operations
- * ================= */
-
-/* The following definitions come from lib/ldb/modules/ldb_map.c */
-const struct ldb_map_context *map_get_context(struct ldb_module *module);
-struct map_search_context *map_init_search_context(struct map_context *ac, struct ldb_reply *ares);
-struct ldb_handle *map_init_handle(struct ldb_request *req, struct ldb_module *module);
-
-int ldb_next_remote_request(struct ldb_module *module, struct ldb_request *request);
-
-BOOL map_check_local_db(struct ldb_module *module);
-BOOL map_attr_check_remote(const struct ldb_map_context *data, const char *attr);
-BOOL ldb_dn_check_local(struct ldb_module *module, const struct ldb_dn *dn);
-
-const struct ldb_map_attribute *map_attr_find_local(const struct ldb_map_context *data, const char *name);
-const struct ldb_map_attribute *map_attr_find_remote(const struct ldb_map_context *data, const char *name);
-
-const char *map_attr_map_local(void *mem_ctx, const struct ldb_map_attribute *map, const char *attr);
-const char *map_attr_map_remote(void *mem_ctx, const struct ldb_map_attribute *map, const char *attr);
-int map_attrs_merge(struct ldb_module *module, void *mem_ctx, const char ***attrs, const char * const *more_attrs);
-
-struct ldb_val ldb_val_map_local(struct ldb_module *module, void *mem_ctx, const struct ldb_map_attribute *map, const struct ldb_val *val);
-struct ldb_val ldb_val_map_remote(struct ldb_module *module, void *mem_ctx, const struct ldb_map_attribute *map, const struct ldb_val *val);
-
-struct ldb_dn *ldb_dn_map_local(struct ldb_module *module, void *mem_ctx, const struct ldb_dn *dn);
-struct ldb_dn *ldb_dn_map_remote(struct ldb_module *module, void *mem_ctx, const struct ldb_dn *dn);
-struct ldb_dn *ldb_dn_map_rebase_remote(struct ldb_module *module, void *mem_ctx, const struct ldb_dn *dn);
-
-struct ldb_request *map_search_base_req(struct map_context *ac, const struct ldb_dn *dn, const char * const *attrs, const struct ldb_parse_tree *tree, void *context, ldb_search_callback callback);
-struct ldb_request *map_search_self_req(struct map_context *ac, const struct ldb_dn *dn);
-struct ldb_request *map_build_fixup_req(struct map_context *ac, const struct ldb_dn *olddn, const struct ldb_dn *newdn);
-
-int map_subtree_collect_remote_simple(struct ldb_module *module, void *mem_ctx, struct ldb_parse_tree **new, const struct ldb_parse_tree *tree, const struct ldb_map_attribute *map);
-
-/* LDB Requests
- * ============ */
-
-/* The following definitions come from lib/ldb/modules/ldb_map_inbound.c */
-int map_add_do_remote(struct ldb_handle *handle);
-int map_add_do_local(struct ldb_handle *handle);
-int map_add(struct ldb_module *module, struct ldb_request *req);
-
-int map_modify_do_remote(struct ldb_handle *handle);
-int map_modify_do_local(struct ldb_handle *handle);
-int map_modify(struct ldb_module *module, struct ldb_request *req);
-
-int map_delete_do_remote(struct ldb_handle *handle);
-int map_delete_do_local(struct ldb_handle *handle);
-int map_delete(struct ldb_module *module, struct ldb_request *req);
-
-int map_rename_do_remote(struct ldb_handle *handle);
-int map_rename_do_fixup(struct ldb_handle *handle);
-int map_rename_do_local(struct ldb_handle *handle);
-int map_rename(struct ldb_module *module, struct ldb_request *req);
-
-/* The following definitions come from lib/ldb/modules/ldb_map_outbound.c */
-int map_search(struct ldb_module *module, struct ldb_request *req);
diff --git a/source/lib/ldb/modules/objectclass.c b/source/lib/ldb/modules/objectclass.c
deleted file mode 100644
index 191238f9c95..00000000000
--- a/source/lib/ldb/modules/objectclass.c
+++ /dev/null
@@ -1,694 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2006
- Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: objectClass sorting module
- *
- * Description: sort the objectClass attribute into the class hierarchy
- *
- * Author: Andrew Bartlett
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-struct oc_context {
-
- enum oc_step {OC_DO_REQ, OC_SEARCH_SELF, OC_DO_MOD} step;
-
- struct ldb_module *module;
- struct ldb_request *orig_req;
-
- struct ldb_request *down_req;
-
- struct ldb_request *search_req;
- struct ldb_reply *search_res;
-
- struct ldb_request *mod_req;
-};
-
-struct class_list {
- struct class_list *prev, *next;
- const char *objectclass;
-};
-
-static struct ldb_handle *oc_init_handle(struct ldb_request *req, struct ldb_module *module)
-{
- struct oc_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(req, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc_zero(h, struct oc_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->orig_req = req;
-
- return h;
-}
-
-static int objectclass_sort(struct ldb_module *module,
- TALLOC_CTX *mem_ctx,
- struct ldb_message_element *objectclass_element,
- struct class_list **sorted_out)
-{
- int i;
- int layer;
- struct class_list *sorted = NULL, *parent_class = NULL,
- *subclass = NULL, *unsorted = NULL, *current, *poss_subclass;
- /* DESIGN:
- *
- * We work on 4 different 'bins' (implemented here as linked lists):
- *
- * * sorted: the eventual list, in the order we wish to push
- * into the database. This is the only ordered list.
- *
- * * parent_class: The current parent class 'bin' we are
- * trying to find subclasses for
- *
- * * subclass: The subclasses we have found so far
- *
- * * unsorted: The remaining objectClasses
- *
- * The process is a matter of filtering objectClasses up from
- * unsorted into sorted. Order is irrelevent in the later 3 'bins'.
- *
- * We start with 'top' (found and promoted to parent_class
- * initially). Then we find (in unsorted) all the direct
- * subclasses of 'top'. parent_classes is concatenated onto
- * the end of 'sorted', and subclass becomes the list in
- * parent_class.
- *
- * We then repeat, until we find no more subclasses. Any left
- * over classes are added to the end.
- *
- */
-
- /* Firstly, dump all the objectClass elements into the
- * unsorted bin, except for 'top', which is special */
- for (i=0; i < objectclass_element->num_values; i++) {
- current = talloc(mem_ctx, struct class_list);
- if (!current) {
- ldb_set_errstring(module->ldb, "objectclass: out of memory allocating objectclass list");
- talloc_free(mem_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
- current->objectclass = (const char *)objectclass_element->values[i].data;
-
- /* this is the root of the tree. We will start
- * looking for subclasses from here */
- if (ldb_attr_cmp("top", current->objectclass) == 0) {
- DLIST_ADD(parent_class, current);
- } else {
- DLIST_ADD(unsorted, current);
- }
- }
-
- /* DEBUGGING aid: how many layers are we down now? */
- layer = 0;
- do {
- layer++;
- /* Find all the subclasses of classes in the
- * parent_classes. Push them onto the subclass list */
-
- /* Ensure we don't bother if there are no unsorted entries left */
- for (current = parent_class; unsorted && current; current = current->next) {
- const char **subclasses = ldb_subclass_list(module->ldb, current->objectclass);
-
- /* Walk the list of possible subclasses in unsorted */
- for (poss_subclass = unsorted; poss_subclass; ) {
- struct class_list *next;
-
- /* Save the next pointer, as the DLIST_ macros will change poss_subclass->next */
- next = poss_subclass->next;
-
- for (i = 0; subclasses && subclasses[i]; i++) {
- if (ldb_attr_cmp(poss_subclass->objectclass, subclasses[i]) == 0) {
- DLIST_REMOVE(unsorted, poss_subclass);
- DLIST_ADD(subclass, poss_subclass);
-
- break;
- }
- }
- poss_subclass = next;
- }
- }
-
- /* Now push the parent_classes as sorted, we are done with
- these. Add to the END of the list by concatenation */
- DLIST_CONCATENATE(sorted, parent_class, struct class_list *);
-
- /* and now find subclasses of these */
- parent_class = subclass;
- subclass = NULL;
-
- /* If we didn't find any subclasses we will fall out
- * the bottom here */
- } while (parent_class);
-
- /* This shouldn't happen, and would break MMC, but we can't
- * afford to loose objectClasses. Perhaps there was no 'top',
- * or some other schema error?
- *
- * Detecting schema errors is the job of the schema module, so
- * at this layer we just try not to loose data
- */
- DLIST_CONCATENATE(sorted, unsorted, struct class_list *);
-
- *sorted_out = sorted;
- return LDB_SUCCESS;
-}
-
-static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_message_element *objectclass_element;
- struct class_list *sorted, *current;
- struct ldb_request *down_req;
- struct ldb_message *msg;
- int ret;
- TALLOC_CTX *mem_ctx;
-
- ldb_debug(module->ldb, LDB_DEBUG_TRACE, "objectclass_add\n");
-
- if (ldb_dn_is_special(req->op.add.message->dn)) { /* do not manipulate our control entries */
- return ldb_next_request(module, req);
- }
-
- objectclass_element = ldb_msg_find_element(req->op.add.message, "objectClass");
-
- /* If no part of this add has an objectClass, then we don't
- * need to make any changes. cn=rootdse doesn't have an objectClass */
- if (!objectclass_element) {
- return ldb_next_request(module, req);
- }
-
- mem_ctx = talloc_new(req);
- if (mem_ctx == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = objectclass_sort(module, mem_ctx, objectclass_element, &sorted);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- /* prepare the first operation */
- down_req = talloc(req, struct ldb_request);
- if (down_req == NULL) {
- ldb_set_errstring(module->ldb, "Out of memory!");
- talloc_free(mem_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- *down_req = *req; /* copy the request */
-
- down_req->op.add.message = msg = ldb_msg_copy_shallow(down_req, req->op.add.message);
-
- if (down_req->op.add.message == NULL) {
- talloc_free(mem_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ldb_msg_remove_attr(msg, "objectClass");
- ret = ldb_msg_add_empty(msg, "objectClass", 0, NULL);
-
- if (ret != LDB_SUCCESS) {
- talloc_free(mem_ctx);
- return ret;
- }
-
- /* We must completely replace the existing objectClass entry,
- * because we need it sorted */
-
- /* Move from the linked list back into an ldb msg */
- for (current = sorted; current; current = current->next) {
- ret = ldb_msg_add_string(msg, "objectClass", current->objectclass);
- if (ret != LDB_SUCCESS) {
- ldb_set_errstring(module->ldb, "objectclass: could not re-add sorted objectclass to modify msg");
- talloc_free(mem_ctx);
- return ret;
- }
- }
-
- talloc_free(mem_ctx);
- ret = ldb_msg_sanity_check(module->ldb, msg);
-
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- /* go on with the call chain */
- ret = ldb_next_request(module, down_req);
-
- /* do not free down_req as the call results may be linked to it,
- * it will be freed when the upper level request get freed */
- if (ret == LDB_SUCCESS) {
- req->handle = down_req->handle;
- }
- return ret;
-}
-
-static int objectclass_modify(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_message_element *objectclass_element;
- struct ldb_message *msg;
- ldb_debug(module->ldb, LDB_DEBUG_TRACE, "objectclass_modify\n");
-
- if (ldb_dn_is_special(req->op.mod.message->dn)) { /* do not manipulate our control entries */
- return ldb_next_request(module, req);
- }
-
- objectclass_element = ldb_msg_find_element(req->op.mod.message, "objectClass");
-
- /* If no part of this touches the objectClass, then we don't
- * need to make any changes. */
- /* If the only operation is the deletion of the objectClass then go on */
- if (!objectclass_element) {
- return ldb_next_request(module, req);
- }
-
- switch (objectclass_element->flags & LDB_FLAG_MOD_MASK) {
- case LDB_FLAG_MOD_DELETE:
- /* Delete everything? Probably totally illigal, but hey! */
- if (objectclass_element->num_values == 0) {
- return ldb_next_request(module, req);
- }
- break;
- case LDB_FLAG_MOD_REPLACE:
- {
- struct ldb_request *down_req;
- struct class_list *sorted, *current;
- TALLOC_CTX *mem_ctx;
- int ret;
- mem_ctx = talloc_new(req);
- if (mem_ctx == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* prepare the first operation */
- down_req = talloc(req, struct ldb_request);
- if (down_req == NULL) {
- ldb_set_errstring(module->ldb, "Out of memory!");
- talloc_free(mem_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- *down_req = *req; /* copy the request */
-
- down_req->op.mod.message = msg = ldb_msg_copy_shallow(down_req, req->op.mod.message);
-
- if (down_req->op.add.message == NULL) {
- talloc_free(mem_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = objectclass_sort(module, mem_ctx, objectclass_element, &sorted);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- /* We must completely replace the existing objectClass entry,
- * because we need it sorted */
-
- ldb_msg_remove_attr(msg, "objectClass");
- ret = ldb_msg_add_empty(msg, "objectClass", LDB_FLAG_MOD_REPLACE, NULL);
-
- if (ret != LDB_SUCCESS) {
- talloc_free(mem_ctx);
- return ret;
- }
-
- /* Move from the linked list back into an ldb msg */
- for (current = sorted; current; current = current->next) {
- ret = ldb_msg_add_string(msg, "objectClass", current->objectclass);
- if (ret != LDB_SUCCESS) {
- ldb_set_errstring(module->ldb, "objectclass: could not re-add sorted objectclass to modify msg");
- talloc_free(mem_ctx);
- return ret;
- }
- }
-
- talloc_free(mem_ctx);
-
- ret = ldb_msg_sanity_check(module->ldb, msg);
- if (ret != LDB_SUCCESS) {
- talloc_free(mem_ctx);
- return ret;
- }
-
- /* go on with the call chain */
- ret = ldb_next_request(module, down_req);
-
- /* do not free down_req as the call results may be linked to it,
- * it will be freed when the upper level request get freed */
- if (ret == LDB_SUCCESS) {
- req->handle = down_req->handle;
- }
- return ret;
- }
- }
-
- {
- struct ldb_handle *h;
- struct oc_context *ac;
-
- h = oc_init_handle(req, module);
- if (!h) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct oc_context);
-
- /* return or own handle to deal with this call */
- req->handle = h;
-
- /* prepare the first operation */
- ac->down_req = talloc(ac, struct ldb_request);
- if (ac->down_req == NULL) {
- ldb_set_errstring(module->ldb, "Out of memory!");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- *(ac->down_req) = *req; /* copy the request */
-
- ac->down_req->context = NULL;
- ac->down_req->callback = NULL;
- ldb_set_timeout_from_prev_req(module->ldb, req, ac->down_req);
-
- ac->step = OC_DO_REQ;
-
- return ldb_next_request(module, ac->down_req);
- }
-}
-
-static int get_self_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct oc_context *ac;
-
- if (!context || !ares) {
- ldb_set_errstring(ldb, "NULL Context or Result in callback");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac = talloc_get_type(context, struct oc_context);
-
- /* we are interested only in the single reply (base search) we receive here */
- if (ares->type == LDB_REPLY_ENTRY) {
- if (ac->search_res != NULL) {
- ldb_set_errstring(ldb, "Too many results");
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->search_res = talloc_move(ac, &ares);
- } else {
- talloc_free(ares);
- }
-
- return LDB_SUCCESS;
-}
-
-static int objectclass_search_self(struct ldb_handle *h) {
-
- struct oc_context *ac;
- static const char * const attrs[] = { "objectClass", NULL };
-
- ac = talloc_get_type(h->private_data, struct oc_context);
-
- /* prepare the search operation */
- ac->search_req = talloc_zero(ac, struct ldb_request);
- if (ac->search_req == NULL) {
- ldb_debug(ac->module->ldb, LDB_DEBUG_ERROR, "Out of Memory!\n");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->search_req->operation = LDB_SEARCH;
- ac->search_req->op.search.base = ac->orig_req->op.mod.message->dn;
- ac->search_req->op.search.scope = LDB_SCOPE_BASE;
- ac->search_req->op.search.tree = ldb_parse_tree(ac->search_req, NULL);
- if (ac->search_req->op.search.tree == NULL) {
- ldb_set_errstring(ac->module->ldb, "objectclass: Internal error producing null search");
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac->search_req->op.search.attrs = attrs;
- ac->search_req->controls = NULL;
- ac->search_req->context = ac;
- ac->search_req->callback = get_self_callback;
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->search_req);
-
- ac->step = OC_SEARCH_SELF;
-
- return ldb_next_request(ac->module, ac->search_req);
-}
-
-static int objectclass_do_mod(struct ldb_handle *h) {
-
- struct oc_context *ac;
- struct ldb_message_element *objectclass_element;
- struct ldb_message *msg;
- TALLOC_CTX *mem_ctx;
- struct class_list *sorted, *current;
- int ret;
-
- ac = talloc_get_type(h->private_data, struct oc_context);
-
- mem_ctx = talloc_new(ac);
- if (mem_ctx == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->mod_req = talloc(ac, struct ldb_request);
- if (ac->mod_req == NULL) {
- talloc_free(mem_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->mod_req->operation = LDB_MODIFY;
- ac->mod_req->controls = NULL;
- ac->mod_req->context = ac;
- ac->mod_req->callback = NULL;
- ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->mod_req);
-
- /* use a new message structure */
- ac->mod_req->op.mod.message = msg = ldb_msg_new(ac->mod_req);
- if (msg == NULL) {
- ldb_set_errstring(ac->module->ldb, "objectclass: could not create new modify msg");
- talloc_free(mem_ctx);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* This is now the objectClass list from the database */
- objectclass_element = ldb_msg_find_element(ac->search_res->message,
- "objectClass");
- if (!objectclass_element) {
- /* Where did it go? Move along now, nothing to see here */
- talloc_free(mem_ctx);
- return LDB_SUCCESS;
- }
-
- /* modify dn */
- msg->dn = ac->orig_req->op.mod.message->dn;
-
- ret = objectclass_sort(ac->module, mem_ctx, objectclass_element, &sorted);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- /* We must completely replace the existing objectClass entry.
- * We could do a constrained add/del, but we are meant to be
- * in a transaction... */
-
- ret = ldb_msg_add_empty(msg, "objectClass", LDB_FLAG_MOD_REPLACE, NULL);
- if (ret != LDB_SUCCESS) {
- ldb_set_errstring(ac->module->ldb, "objectclass: could not clear objectclass in modify msg");
- talloc_free(mem_ctx);
- return ret;
- }
-
- /* Move from the linked list back into an ldb msg */
- for (current = sorted; current; current = current->next) {
- ret = ldb_msg_add_string(msg, "objectClass", current->objectclass);
- if (ret != LDB_SUCCESS) {
- ldb_set_errstring(ac->module->ldb, "objectclass: could not re-add sorted objectclass to modify msg");
- talloc_free(mem_ctx);
- return ret;
- }
- }
-
- ret = ldb_msg_sanity_check(ac->module->ldb, msg);
- if (ret != LDB_SUCCESS) {
- talloc_free(mem_ctx);
- return ret;
- }
-
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->step = OC_DO_MOD;
-
- talloc_free(mem_ctx);
- /* perform the search */
- return ldb_next_request(ac->module, ac->mod_req);
-}
-
-static int oc_wait(struct ldb_handle *handle) {
- struct oc_context *ac;
- int ret;
-
- if (!handle || !handle->private_data) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- handle->state = LDB_ASYNC_PENDING;
- handle->status = LDB_SUCCESS;
-
- ac = talloc_get_type(handle->private_data, struct oc_context);
-
- switch (ac->step) {
- case OC_DO_REQ:
- ret = ldb_wait(ac->down_req->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (ac->down_req->handle->status != LDB_SUCCESS) {
- handle->status = ac->down_req->handle->status;
- goto done;
- }
-
- if (ac->down_req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- /* mods done, go on */
- return objectclass_search_self(handle);
-
- case OC_SEARCH_SELF:
- ret = ldb_wait(ac->search_req->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (ac->search_req->handle->status != LDB_SUCCESS) {
- handle->status = ac->search_req->handle->status;
- goto done;
- }
-
- if (ac->search_req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- /* self search done, go on */
- return objectclass_do_mod(handle);
-
- case OC_DO_MOD:
- ret = ldb_wait(ac->mod_req->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (ac->mod_req->handle->status != LDB_SUCCESS) {
- handle->status = ac->mod_req->handle->status;
- goto done;
- }
-
- if (ac->mod_req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- break;
-
- default:
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- ret = LDB_SUCCESS;
-
-done:
- handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-static int oc_wait_all(struct ldb_handle *handle) {
-
- int ret;
-
- while (handle->state != LDB_ASYNC_DONE) {
- ret = oc_wait(handle);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- return handle->status;
-}
-
-static int objectclass_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- if (type == LDB_WAIT_ALL) {
- return oc_wait_all(handle);
- } else {
- return oc_wait(handle);
- }
-}
-
-static const struct ldb_module_ops objectclass_ops = {
- .name = "objectclass",
- .add = objectclass_add,
- .modify = objectclass_modify,
- .wait = objectclass_wait
-};
-
-int ldb_objectclass_init(void)
-{
- return ldb_register_module(&objectclass_ops);
-}
-
diff --git a/source/lib/ldb/modules/operational.c b/source/lib/ldb/modules/operational.c
deleted file mode 100644
index 953cbd593ef..00000000000
--- a/source/lib/ldb/modules/operational.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2005
- Copyright (C) Simo Sorce 2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-/*
- handle operational attributes
- */
-
-/*
- createTimestamp: HIDDEN, searchable, ldaptime, alias for whenCreated
- modifyTimestamp: HIDDEN, searchable, ldaptime, alias for whenChanged
-
- for the above two, we do the search as normal, and if
- createTimestamp or modifyTimestamp is asked for, then do
- additional searches for whenCreated and whenChanged and fill in
- the resulting values
-
- we also need to replace these with the whenCreated/whenChanged
- equivalent in the search expression trees
-
- whenCreated: not-HIDDEN, CONSTRUCTED, SEARCHABLE
- whenChanged: not-HIDDEN, CONSTRUCTED, SEARCHABLE
-
- on init we need to setup attribute handlers for these so
- comparisons are done correctly. The resolution is 1 second.
-
- on add we need to add both the above, for current time
-
- on modify we need to change whenChanged
-
-
- subschemaSubentry: HIDDEN, not-searchable,
- points at DN CN=Aggregate,CN=Schema,CN=Configuration,$BASEDN
-
- for this one we do the search as normal, then add the static
- value if requested. How do we work out the $BASEDN from inside a
- module?
-
-
- structuralObjectClass: HIDDEN, CONSTRUCTED, not-searchable. always same as objectclass?
-
- for this one we do the search as normal, then if requested ask
- for objectclass, change the attribute name, and add it
-
- allowedAttributesEffective: HIDDEN, CONSTRUCTED, not-searchable,
- list of attributes that can be modified - requires schema lookup
-
-
- attributeTypes: in schema only
- objectClasses: in schema only
- matchingRules: in schema only
- matchingRuleUse: in schema only
- creatorsName: not supported by w2k3?
- modifiersName: not supported by w2k3?
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/*
- construct a canonical name from a message
-*/
-static int construct_canonical_name(struct ldb_module *module, struct ldb_message *msg)
-{
- char *canonicalName;
- canonicalName = ldb_dn_canonical_string(msg, msg->dn);
- if (canonicalName == NULL) {
- return -1;
- }
- return ldb_msg_add_steal_string(msg, "canonicalName", canonicalName);
-}
-
-/*
- a list of attribute names that should be substituted in the parse
- tree before the search is done
-*/
-static const struct {
- const char *attr;
- const char *replace;
-} parse_tree_sub[] = {
- { "createTimestamp", "whenCreated" },
- { "modifyTimestamp", "whenChanged" }
-};
-
-
-/*
- a list of attribute names that are hidden, but can be searched for
- using another (non-hidden) name to produce the correct result
-*/
-static const struct {
- const char *attr;
- const char *replace;
- int (*constructor)(struct ldb_module *, struct ldb_message *);
-} search_sub[] = {
- { "createTimestamp", "whenCreated", NULL },
- { "modifyTimestamp", "whenChanged", NULL },
- { "structuralObjectClass", "objectClass", NULL },
- { "canonicalName", "distinguishedName", construct_canonical_name }
-};
-
-/*
- post process a search result record. For any search_sub[] attributes that were
- asked for, we need to call the appropriate copy routine to copy the result
- into the message, then remove any attributes that we added to the search but were
- not asked for by the user
-*/
-static int operational_search_post_process(struct ldb_module *module,
- struct ldb_message *msg,
- const char * const *attrs)
-{
- int i, a=0;
-
- for (a=0;attrs && attrs[a];a++) {
- for (i=0;i<ARRAY_SIZE(search_sub);i++) {
- if (ldb_attr_cmp(attrs[a], search_sub[i].attr) != 0) {
- continue;
- }
-
- /* construct the new attribute, using either a supplied
- constructor or a simple copy */
- if (search_sub[i].constructor) {
- if (search_sub[i].constructor(module, msg) != 0) {
- goto failed;
- }
- } else if (ldb_msg_copy_attr(msg,
- search_sub[i].replace,
- search_sub[i].attr) != 0) {
- goto failed;
- }
-
- /* remove the added search attribute, unless it was asked for
- by the user */
- if (search_sub[i].replace == NULL ||
- ldb_attr_in_list(attrs, search_sub[i].replace) ||
- ldb_attr_in_list(attrs, "*")) {
- continue;
- }
-
- ldb_msg_remove_attr(msg, search_sub[i].replace);
- }
- }
-
- return 0;
-
-failed:
- ldb_debug_set(module->ldb, LDB_DEBUG_WARNING,
- "operational_search_post_process failed for attribute '%s'\n",
- attrs[a]);
- return -1;
-}
-
-
-/*
- hook search operations
-*/
-
-struct operational_context {
-
- struct ldb_module *module;
- void *up_context;
- int (*up_callback)(struct ldb_context *, void *, struct ldb_reply *);
-
- const char * const *attrs;
-};
-
-static int operational_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct operational_context *ac;
-
- if (!context || !ares) {
- ldb_set_errstring(ldb, "NULL Context or Result in callback");
- goto error;
- }
-
- ac = talloc_get_type(context, struct operational_context);
-
- if (ares->type == LDB_REPLY_ENTRY) {
- /* for each record returned post-process to add any derived
- attributes that have been asked for */
- if (operational_search_post_process(ac->module, ares->message, ac->attrs) != 0) {
- goto error;
- }
- }
-
- return ac->up_callback(ldb, ac->up_context, ares);
-
-error:
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static int operational_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct operational_context *ac;
- struct ldb_request *down_req;
- const char **search_attrs = NULL;
- int i, a, ret;
-
- req->handle = NULL;
-
- ac = talloc(req, struct operational_context);
- if (ac == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->module = module;
- ac->up_context = req->context;
- ac->up_callback = req->callback;
- ac->attrs = req->op.search.attrs;
-
- down_req = talloc_zero(req, struct ldb_request);
- if (down_req == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- down_req->operation = req->operation;
- down_req->op.search.base = req->op.search.base;
- down_req->op.search.scope = req->op.search.scope;
- down_req->op.search.tree = req->op.search.tree;
-
- /* FIXME: I hink we should copy the tree and keep the original
- * unmodified. SSS */
- /* replace any attributes in the parse tree that are
- searchable, but are stored using a different name in the
- backend */
- for (i=0;i<ARRAY_SIZE(parse_tree_sub);i++) {
- ldb_parse_tree_attr_replace(discard_const_p(struct ldb_parse_tree, req->op.search.tree),
- parse_tree_sub[i].attr,
- parse_tree_sub[i].replace);
- }
-
- /* in the list of attributes we are looking for, rename any
- attributes to the alias for any hidden attributes that can
- be fetched directly using non-hidden names */
- for (a=0;ac->attrs && ac->attrs[a];a++) {
- for (i=0;i<ARRAY_SIZE(search_sub);i++) {
- if (ldb_attr_cmp(ac->attrs[a], search_sub[i].attr) == 0 &&
- search_sub[i].replace) {
- if (!search_attrs) {
- search_attrs = ldb_attr_list_copy(req, ac->attrs);
- if (search_attrs == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- }
- search_attrs[a] = search_sub[i].replace;
- }
- }
- }
-
- /* use new set of attrs if any */
- if (search_attrs) down_req->op.search.attrs = search_attrs;
- else down_req->op.search.attrs = req->op.search.attrs;
-
- down_req->controls = req->controls;
-
- down_req->context = ac;
- down_req->callback = operational_callback;
- ldb_set_timeout_from_prev_req(module->ldb, req, down_req);
-
- /* perform the search */
- ret = ldb_next_request(module, down_req);
-
- /* do not free down_req as the call results may be linked to it,
- * it will be freed when the upper level request get freed */
- if (ret == LDB_SUCCESS) {
- req->handle = down_req->handle;
- }
-
- return ret;
-}
-
-static int operational_init(struct ldb_module *ctx)
-{
- /* setup some standard attribute handlers */
- ldb_set_attrib_handler_syntax(ctx->ldb, "whenCreated", LDB_SYNTAX_UTC_TIME);
- ldb_set_attrib_handler_syntax(ctx->ldb, "whenChanged", LDB_SYNTAX_UTC_TIME);
- ldb_set_attrib_handler_syntax(ctx->ldb, "subschemaSubentry", LDB_SYNTAX_DN);
- ldb_set_attrib_handler_syntax(ctx->ldb, "structuralObjectClass", LDB_SYNTAX_OBJECTCLASS);
-
- return ldb_next_init(ctx);
-}
-
-static const struct ldb_module_ops operational_ops = {
- .name = "operational",
- .search = operational_search,
- .init_context = operational_init
-};
-
-int ldb_operational_init(void)
-{
- return ldb_register_module(&operational_ops);
-}
diff --git a/source/lib/ldb/modules/paged_results.c b/source/lib/ldb/modules/paged_results.c
deleted file mode 100644
index 02d15fe8a6f..00000000000
--- a/source/lib/ldb/modules/paged_results.c
+++ /dev/null
@@ -1,567 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: paged_result
- *
- * Component: ldb paged results control module
- *
- * Description: this module caches a complete search and sends back
- * results in chunks as asked by the client
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-struct message_store {
- /* keep the whole ldb_reply as an optimization
- * instead of freeing and talloc-ing the container
- * on each result */
- struct ldb_reply *r;
- struct message_store *next;
-};
-
-struct private_data;
-
-struct results_store {
-
- struct private_data *priv;
-
- char *cookie;
- time_t timestamp;
-
- struct results_store *prev;
- struct results_store *next;
-
- struct message_store *first;
- struct message_store *last;
- int num_entries;
-
- struct message_store *first_ref;
- struct message_store *last_ref;
-
- struct ldb_control **controls;
-
- struct ldb_request *req;
-};
-
-struct private_data {
-
- int next_free_id;
- struct results_store *store;
-
-};
-
-int store_destructor(struct results_store *store);
-
-int store_destructor(struct results_store *store)
-{
- if (store->prev) {
- store->prev->next = store->next;
- }
- if (store->next) {
- store->next->prev = store->prev;
- }
-
- if (store == store->priv->store) {
- store->priv->store = NULL;
- }
-
- return 0;
-}
-
-static struct results_store *new_store(struct private_data *priv)
-{
- struct results_store *newr;
- int new_id = priv->next_free_id++;
-
- /* TODO: we should have a limit on the number of
- * outstanding paged searches
- */
-
- newr = talloc(priv, struct results_store);
- if (!newr) return NULL;
-
- newr->priv = priv;
-
- newr->cookie = talloc_asprintf(newr, "%d", new_id);
- if (!newr->cookie) {
- talloc_free(newr);
- return NULL;
- }
-
- newr->timestamp = time(NULL);
-
- newr->first = NULL;
- newr->num_entries = 0;
- newr->first_ref = NULL;
- newr->controls = NULL;
-
- /* put this entry as first */
- newr->prev = NULL;
- newr->next = priv->store;
- if (priv->store != NULL) priv->store->prev = newr;
- priv->store = newr;
-
- talloc_set_destructor(newr, store_destructor);
-
- return newr;
-}
-
-struct paged_context {
- struct ldb_module *module;
- void *up_context;
- int (*up_callback)(struct ldb_context *, void *, struct ldb_reply *);
-
- int size;
-
- struct results_store *store;
-};
-
-static struct ldb_handle *init_handle(void *mem_ctx, struct ldb_module *module,
- void *context,
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *))
-{
- struct paged_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(mem_ctx, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc_zero(h, struct paged_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->up_context = context;
- ac->up_callback = callback;
-
- return h;
-}
-
-static int paged_search_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct paged_context *ac = NULL;
-
- if (!context || !ares) {
- ldb_set_errstring(ldb, "NULL Context or Result in callback");
- goto error;
- }
-
- ac = talloc_get_type(context, struct paged_context);
-
- if (ares->type == LDB_REPLY_ENTRY) {
- if (ac->store->first == NULL) {
- ac->store->first = ac->store->last = talloc(ac->store, struct message_store);
- } else {
- ac->store->last->next = talloc(ac->store, struct message_store);
- ac->store->last = ac->store->last->next;
- }
- if (ac->store->last == NULL) {
- goto error;
- }
-
- ac->store->num_entries++;
-
- ac->store->last->r = talloc_steal(ac->store->last, ares);
- ac->store->last->next = NULL;
- }
-
- if (ares->type == LDB_REPLY_REFERRAL) {
- if (ac->store->first_ref == NULL) {
- ac->store->first_ref = ac->store->last_ref = talloc(ac->store, struct message_store);
- } else {
- ac->store->last_ref->next = talloc(ac->store, struct message_store);
- ac->store->last_ref = ac->store->last_ref->next;
- }
- if (ac->store->last_ref == NULL) {
- goto error;
- }
-
- ac->store->last_ref->r = talloc_steal(ac->store->last, ares);
- ac->store->last_ref->next = NULL;
- }
-
- if (ares->type == LDB_REPLY_DONE) {
- ac->store->controls = talloc_move(ac->store, &ares->controls);
- talloc_free(ares);
- }
-
- return LDB_SUCCESS;
-
-error:
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static int paged_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_control *control;
- struct private_data *private_data;
- struct ldb_paged_control *paged_ctrl;
- struct ldb_control **saved_controls;
- struct paged_context *ac;
- struct ldb_handle *h;
- int ret;
-
- /* check if there's a paged request control */
- control = get_control_from_list(req->controls, LDB_CONTROL_PAGED_RESULTS_OID);
- if (control == NULL) {
- /* not found go on */
- return ldb_next_request(module, req);
- }
-
- private_data = talloc_get_type(module->private_data, struct private_data);
-
- req->handle = NULL;
-
- if (!req->callback || !req->context) {
- ldb_set_errstring(module->ldb,
- "Async interface called with NULL callback function or NULL context");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- paged_ctrl = talloc_get_type(control->data, struct ldb_paged_control);
- if (!paged_ctrl) {
- return LDB_ERR_PROTOCOL_ERROR;
- }
-
- h = init_handle(req, module, req->context, req->callback);
- if (!h) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct paged_context);
-
- ac->size = paged_ctrl->size;
-
- /* check if it is a continuation search the store */
- if (paged_ctrl->cookie_len == 0) {
-
- ac->store = new_store(private_data);
- if (ac->store == NULL) {
- talloc_free(h);
- return LDB_ERR_UNWILLING_TO_PERFORM;
- }
-
- ac->store->req = talloc(ac->store, struct ldb_request);
- if (!ac->store->req)
- return LDB_ERR_OPERATIONS_ERROR;
-
- ac->store->req->operation = req->operation;
- ac->store->req->op.search.base = req->op.search.base;
- ac->store->req->op.search.scope = req->op.search.scope;
- ac->store->req->op.search.tree = req->op.search.tree;
- ac->store->req->op.search.attrs = req->op.search.attrs;
- ac->store->req->controls = req->controls;
-
- /* save it locally and remove it from the list */
- /* we do not need to replace them later as we
- * are keeping the original req intact */
- if (!save_controls(control, ac->store->req, &saved_controls)) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->store->req->context = ac;
- ac->store->req->callback = paged_search_callback;
- ldb_set_timeout_from_prev_req(module->ldb, req, ac->store->req);
-
- ret = ldb_next_request(module, ac->store->req);
-
- } else {
- struct results_store *current = NULL;
-
- for (current = private_data->store; current; current = current->next) {
- if (strcmp(current->cookie, paged_ctrl->cookie) == 0) {
- current->timestamp = time(NULL);
- break;
- }
- }
- if (current == NULL) {
- talloc_free(h);
- return LDB_ERR_UNWILLING_TO_PERFORM;
- }
-
- ac->store = current;
- ret = LDB_SUCCESS;
- }
-
- req->handle = h;
-
- /* check if it is an abandon */
- if (ac->size == 0) {
- talloc_free(ac->store);
- h->status = LDB_SUCCESS;
- h->state = LDB_ASYNC_DONE;
- return LDB_SUCCESS;
- }
-
- /* TODO: age out old outstanding requests */
-
- return ret;
-
-}
-
-static int paged_results(struct ldb_handle *handle)
-{
- struct paged_context *ac;
- struct ldb_paged_control *paged;
- struct ldb_reply *ares;
- struct message_store *msg;
- int i, num_ctrls, ret;
-
- ac = talloc_get_type(handle->private_data, struct paged_context);
-
- if (ac->store == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
-
- while (ac->store->num_entries > 0 && ac->size > 0) {
- msg = ac->store->first;
- ret = ac->up_callback(ac->module->ldb, ac->up_context, msg->r);
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- handle->state = LDB_ASYNC_DONE;
- return ret;
- }
-
- ac->store->first = msg->next;
- talloc_free(msg);
- ac->store->num_entries--;
- ac->size--;
- }
-
- handle->state = LDB_ASYNC_DONE;
-
- while (ac->store->first_ref != NULL) {
- msg = ac->store->first_ref;
- ret = ac->up_callback(ac->module->ldb, ac->up_context, msg->r);
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- handle->state = LDB_ASYNC_DONE;
- return ret;
- }
-
- ac->store->first_ref = msg->next;
- talloc_free(msg);
- }
-
- ares = talloc_zero(ac->store, struct ldb_reply);
- if (ares == NULL) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
- num_ctrls = 2;
- i = 0;
-
- if (ac->store->controls != NULL) {
- ares->controls = ac->store->controls;
- while (ares->controls[i]) i++; /* counting */
-
- ares->controls = talloc_move(ares, &ac->store->controls);
- num_ctrls += i;
- }
-
- ares->controls = talloc_realloc(ares, ares->controls, struct ldb_control *, num_ctrls);
- if (ares->controls == NULL) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
-
- ares->controls[i] = talloc(ares->controls, struct ldb_control);
- if (ares->controls[i] == NULL) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
-
- ares->controls[i]->oid = talloc_strdup(ares->controls[i], LDB_CONTROL_PAGED_RESULTS_OID);
- if (ares->controls[i]->oid == NULL) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
-
- ares->controls[i]->critical = 0;
- ares->controls[i + 1] = NULL;
-
- paged = talloc(ares->controls[i], struct ldb_paged_control);
- if (paged == NULL) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
-
- ares->controls[i]->data = paged;
-
- if (ac->size > 0) {
- paged->size = 0;
- paged->cookie = NULL;
- paged->cookie_len = 0;
- } else {
- paged->size = ac->store->num_entries;
- paged->cookie = talloc_strdup(paged, ac->store->cookie);
- paged->cookie_len = strlen(paged->cookie) + 1;
- }
-
- ares->type = LDB_REPLY_DONE;
-
- ret = ac->up_callback(ac->module->ldb, ac->up_context, ares);
-
- handle->status = ret;
-
- return ret;
-}
-
-static int paged_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- struct paged_context *ac;
- int ret;
-
- if (!handle || !handle->private_data) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- handle->state = LDB_ASYNC_PENDING;
-
- ac = talloc_get_type(handle->private_data, struct paged_context);
-
- if (ac->store->req->handle->state == LDB_ASYNC_DONE) {
- /* if lower level is finished we do not need to call it anymore */
- /* return all we have until size == 0 or we empty storage */
- ret = paged_results(handle);
-
- /* we are done, if num_entries is zero free the storage
- * as that mean we delivered the last batch */
- if (ac->store->num_entries == 0) {
- talloc_free(ac->store);
- }
-
- return ret;
- }
-
- if (type == LDB_WAIT_ALL) {
- while (ac->store->req->handle->state != LDB_ASYNC_DONE) {
- ret = ldb_wait(ac->store->req->handle, type);
- if (ret != LDB_SUCCESS) {
- handle->state = LDB_ASYNC_DONE;
- handle->status = ret;
- return ret;
- }
- }
-
- ret = paged_results(handle);
-
- /* we are done, if num_entries is zero free the storage
- * as that mean we delivered the last batch */
- if (ac->store->num_entries == 0) {
- talloc_free(ac->store);
- }
-
- return ret;
- }
-
- ret = ldb_wait(ac->store->req->handle, type);
- if (ret != LDB_SUCCESS) {
- handle->state = LDB_ASYNC_DONE;
- handle->status = ret;
- return ret;
- }
-
- handle->status = ret;
-
- if (ac->store->num_entries >= ac->size ||
- ac->store->req->handle->state == LDB_ASYNC_DONE) {
-
- ret = paged_results(handle);
-
- /* we are done, if num_entries is zero free the storage
- * as that mean we delivered the last batch */
- if (ac->store->num_entries == 0) {
- talloc_free(ac->store);
- }
- }
-
- return ret;
-}
-
-static int paged_request_init(struct ldb_module *module)
-{
- struct private_data *data;
- struct ldb_request *req;
- int ret;
-
- data = talloc(module, struct private_data);
- if (data == NULL) {
- return LDB_ERR_OTHER;
- }
-
- data->next_free_id = 1;
- data->store = NULL;
- module->private_data = data;
-
- req = talloc(module, struct ldb_request);
- if (req == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_REQ_REGISTER_CONTROL;
- req->op.reg_control.oid = LDB_CONTROL_PAGED_RESULTS_OID;
- req->controls = NULL;
-
- ret = ldb_request(module->ldb, req);
- if (ret != LDB_SUCCESS) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "paged_request: Unable to register control with rootdse!\n");
- }
-
- talloc_free(req);
- return ldb_next_init(module);
-}
-
-static const struct ldb_module_ops paged_ops = {
- .name = "paged_results",
- .search = paged_search,
- .wait = paged_wait,
- .init_context = paged_request_init
-};
-
-int ldb_paged_results_init(void)
-{
- return ldb_register_module(&paged_ops);
-}
-
diff --git a/source/lib/ldb/modules/paged_searches.c b/source/lib/ldb/modules/paged_searches.c
deleted file mode 100644
index c7d163307de..00000000000
--- a/source/lib/ldb/modules/paged_searches.c
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005-2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: paged_searches
- *
- * Component: ldb paged searches module
- *
- * Description: this module detects if the remote ldap server supports
- * paged results and use them to transparently access all objects
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#define PS_DEFAULT_PAGE_SIZE 500
-/* 500 objects per query seem to be a decent compromise
- * the default AD limit per request is 1000 entries */
-
-struct private_data {
-
- bool paged_supported;
-};
-
-struct ps_context {
- struct ldb_module *module;
- void *up_context;
- int (*up_callback)(struct ldb_context *, void *, struct ldb_reply *);
-
- struct ldb_request *orig_req;
-
- struct ldb_request *new_req;
-
- bool pending;
-
- char **saved_referrals;
- int num_referrals;
-};
-
-static struct ldb_handle *init_handle(void *mem_ctx, struct ldb_module *module,
- void *context,
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *))
-{
- struct ps_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(mem_ctx, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc_zero(h, struct ps_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->up_context = context;
- ac->up_callback = callback;
-
- ac->pending = False;
- ac->saved_referrals = NULL;
- ac->num_referrals = 0;
-
- return h;
-}
-
-static int check_ps_continuation(struct ldb_reply *ares, struct ps_context *ac)
-{
- struct ldb_paged_control *rep_control, *req_control;
-
- /* look up our paged control */
- if (!ares->controls || strcmp(LDB_CONTROL_PAGED_RESULTS_OID, ares->controls[0]->oid) != 0) {
- /* something wrong here */
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- rep_control = talloc_get_type(ares->controls[0]->data, struct ldb_paged_control);
- if (rep_control->cookie_len == 0) {
- /* we are done */
- ac->pending = False;
- return LDB_SUCCESS;
- }
-
- /* more processing required */
- /* let's fill in the request control with the new cookie */
- /* if there's a reply control we must find a request
- * control matching it */
-
- if (strcmp(LDB_CONTROL_PAGED_RESULTS_OID, ac->new_req->controls[0]->oid) != 0) {
- /* something wrong here */
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req_control = talloc_get_type(ac->new_req->controls[0]->data, struct ldb_paged_control);
-
- if (req_control->cookie) {
- talloc_free(req_control->cookie);
- }
-
- req_control->cookie = talloc_memdup(req_control,
- rep_control->cookie,
- rep_control->cookie_len);
- req_control->cookie_len = rep_control->cookie_len;
-
- ac->pending = True;
- return LDB_SUCCESS;
-}
-
-static int store_referral(char *referral, struct ps_context *ac)
-{
- ac->saved_referrals = talloc_realloc(ac, ac->saved_referrals, char *, ac->num_referrals + 2);
- if (!ac->saved_referrals) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->saved_referrals[ac->num_referrals] = talloc_strdup(ac->saved_referrals, referral);
- if (!ac->saved_referrals[ac->num_referrals]) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->num_referrals++;
- ac->saved_referrals[ac->num_referrals] = NULL;
-
- return LDB_SUCCESS;
-}
-
-static int send_referrals(struct ldb_context *ldb, struct ps_context *ac)
-{
- struct ldb_reply *ares;
- int i;
-
- for (i = 0; i < ac->num_referrals; i++) {
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ares->type = LDB_REPLY_REFERRAL;
- ares->referral = ac->saved_referrals[i];
-
- ac->up_callback(ldb, ac->up_context, ares);
- }
-
- return LDB_SUCCESS;
-}
-
-static int ps_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct ps_context *ac = NULL;
- int ret = LDB_ERR_OPERATIONS_ERROR;
-
- if (!context || !ares) {
- ldb_set_errstring(ldb, "NULL Context or Result in callback");
- goto error;
- }
-
- ac = talloc_get_type(context, struct ps_context);
-
- switch (ares->type) {
- case LDB_REPLY_ENTRY:
- ac->up_callback(ldb, ac->up_context, ares);
- break;
-
- case LDB_REPLY_REFERRAL:
- ret = store_referral(ares->referral, ac);
- if (ret != LDB_SUCCESS) {
- goto error;
- }
- break;
-
- case LDB_REPLY_DONE:
- ret = check_ps_continuation(ares, ac);
- if (ret != LDB_SUCCESS) {
- goto error;
- }
- if (!ac->pending) {
- /* send referrals */
- ret = send_referrals(ldb, ac);
- if (ret != LDB_SUCCESS) {
- goto error;
- }
-
- /* send REPLY_DONE */
- ac->up_callback(ldb, ac->up_context, ares);
- }
- break;
- default:
- goto error;
- }
-
- return LDB_SUCCESS;
-
-error:
- talloc_free(ares);
- return ret;
-}
-
-static int ps_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct private_data *private_data;
- struct ldb_paged_control *control;
- struct ps_context *ac;
- struct ldb_handle *h;
-
- private_data = talloc_get_type(module->private_data, struct private_data);
-
- /* check if paging is supported and if there is a any control */
- if (!private_data || !private_data->paged_supported || req->controls) {
- /* do not touch this request paged controls not
- * supported or explicit controls have been set or we
- * are just not setup yet */
- return ldb_next_request(module, req);
- }
-
- if (!req->callback || !req->context) {
- ldb_set_errstring(module->ldb,
- "Async interface called with NULL callback function or NULL context");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- h = init_handle(req, module, req->context, req->callback);
- if (!h) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct ps_context);
-
- ac->new_req = talloc(ac, struct ldb_request);
- if (!ac->new_req) return LDB_ERR_OPERATIONS_ERROR;
-
- ac->new_req->controls = talloc_array(ac->new_req, struct ldb_control *, 2);
- if (!ac->new_req->controls) return LDB_ERR_OPERATIONS_ERROR;
-
- ac->new_req->controls[0] = talloc(ac->new_req->controls, struct ldb_control);
- if (!ac->new_req->controls[0]) return LDB_ERR_OPERATIONS_ERROR;
-
- control = talloc(ac->new_req->controls[0], struct ldb_paged_control);
- if (!control) return LDB_ERR_OPERATIONS_ERROR;
-
- control->size = PS_DEFAULT_PAGE_SIZE;
- control->cookie = NULL;
- control->cookie_len = 0;
-
- ac->new_req->controls[0]->oid = LDB_CONTROL_PAGED_RESULTS_OID;
- ac->new_req->controls[0]->critical = 1;
- ac->new_req->controls[0]->data = control;
-
- ac->new_req->controls[1] = NULL;
-
- ac->new_req->operation = req->operation;
- ac->new_req->op.search.base = req->op.search.base;
- ac->new_req->op.search.scope = req->op.search.scope;
- ac->new_req->op.search.tree = req->op.search.tree;
- ac->new_req->op.search.attrs = req->op.search.attrs;
- ac->new_req->context = ac;
- ac->new_req->callback = ps_callback;
- ldb_set_timeout_from_prev_req(module->ldb, req, ac->new_req);
-
- req->handle = h;
-
- return ldb_next_request(module, ac->new_req);
-}
-
-static int ps_continuation(struct ldb_handle *handle)
-{
- struct ps_context *ac;
-
- if (!handle || !handle->private_data) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac = talloc_get_type(handle->private_data, struct ps_context);
-
- /* reset the requests handle */
- ac->new_req->handle = NULL;
-
- return ldb_next_request(handle->module, ac->new_req);
-}
-
-static int ps_wait_none(struct ldb_handle *handle)
-{
- struct ps_context *ac;
- int ret;
-
- if (!handle || !handle->private_data) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- handle->state = LDB_ASYNC_PENDING;
- handle->status = LDB_SUCCESS;
-
- ac = talloc_get_type(handle->private_data, struct ps_context);
-
- ret = ldb_wait(ac->new_req->handle, LDB_WAIT_NONE);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
-
- if (ac->new_req->handle->status != LDB_SUCCESS) {
- handle->status = ac->new_req->handle->status;
- goto done;
- }
-
- if (ac->new_req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- /* see if we need to send another request for the next batch */
- if (ac->pending) {
- ret = ps_continuation(handle);
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
-
- /* continue the search with the next request */
- return LDB_SUCCESS;
- }
-
- ret = LDB_SUCCESS;
-
-done:
- handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-static int ps_wait_all(struct ldb_handle *handle)
-{
- int ret;
-
- while (handle->state != LDB_ASYNC_DONE) {
- ret = ps_wait_none(handle);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- return handle->status;
-}
-
-static int ps_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- if (type == LDB_WAIT_ALL) {
- return ps_wait_all(handle);
- } else {
- return ps_wait_none(handle);
- }
-}
-
-static int check_supported_paged(struct ldb_context *ldb, void *context,
- struct ldb_reply *ares)
-{
- struct private_data *data;
- data = talloc_get_type(context,
- struct private_data);
- if (ares->type == LDB_REPLY_ENTRY) {
- if (ldb_msg_check_string_attribute(ares->message,
- "supportedControl",
- LDB_CONTROL_PAGED_RESULTS_OID)) {
- data->paged_supported = True;
- }
- }
- return LDB_SUCCESS;
-}
-
-
-static int ps_init(struct ldb_module *module)
-{
- static const char *attrs[] = { "supportedControl", NULL };
- struct private_data *data;
- int ret;
- struct ldb_request *req;
-
- data = talloc(module, struct private_data);
- if (data == NULL) {
- return LDB_ERR_OTHER;
- }
- module->private_data = data;
- data->paged_supported = False;
-
- req = talloc(module, struct ldb_request);
- if (req == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_SEARCH;
- req->op.search.base = ldb_dn_new(req);
- req->op.search.scope = LDB_SCOPE_BASE;
-
- req->op.search.tree = ldb_parse_tree(req, "objectClass=*");
- if (req->op.search.tree == NULL) {
- ldb_set_errstring(module->ldb, "Unable to parse search expression");
- talloc_free(req);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->op.search.attrs = attrs;
- req->controls = NULL;
- req->context = data;
- req->callback = check_supported_paged;
- ldb_set_timeout(module->ldb, req, 0); /* use default timeout */
-
- ret = ldb_next_request(module, req);
-
- if (ret == LDB_SUCCESS) {
- ret = ldb_wait(req->handle, LDB_WAIT_ALL);
- }
-
- talloc_free(req);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
-
- return ldb_next_init(module);
-}
-
-static const struct ldb_module_ops ps_ops = {
- .name = "paged_searches",
- .search = ps_search,
- .wait = ps_wait,
- .init_context = ps_init
-};
-
-int ldb_paged_searches_init(void)
-{
- return ldb_register_module(&ps_ops);
-}
-
diff --git a/source/lib/ldb/modules/rdn_name.c b/source/lib/ldb/modules/rdn_name.c
deleted file mode 100644
index bab5f6a0149..00000000000
--- a/source/lib/ldb/modules/rdn_name.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Bartlet 2005
- Copyright (C) Simo Sorce 2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: rdb_name
- *
- * Component: ldb rdn name module
- *
- * Description: keep a consistent name attribute on objects manpulations
- *
- * Author: Andrew Bartlet
- *
- * Modifications:
- * - made the module async
- * Simo Sorce Mar 2006
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-static struct ldb_message_element *rdn_name_find_attribute(const struct ldb_message *msg, const char *name)
-{
- int i;
-
- for (i = 0; i < msg->num_elements; i++) {
- if (ldb_attr_cmp(name, msg->elements[i].name) == 0) {
- return &msg->elements[i];
- }
- }
-
- return NULL;
-}
-
-static int rdn_name_add(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_request *down_req;
- struct ldb_message *msg;
- struct ldb_message_element *attribute;
- const char *rdn_name;
- struct ldb_val rdn_val;
- int i, ret;
-
- ldb_debug(module->ldb, LDB_DEBUG_TRACE, "rdn_name_add_record\n");
-
- /* do not manipulate our control entries */
- if (ldb_dn_is_special(req->op.add.message->dn)) {
- return ldb_next_request(module, req);
- }
-
- down_req = talloc(req, struct ldb_request);
- if (down_req == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- *down_req = *req;
-
- down_req->op.add.message = msg = ldb_msg_copy_shallow(down_req, req->op.add.message);
- if (msg == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- rdn_name = ldb_dn_get_rdn_name(msg->dn);
- if (rdn_name == NULL) {
- talloc_free(down_req);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- rdn_val = ldb_val_dup(msg, ldb_dn_get_rdn_val(msg->dn));
-
- /* Perhaps someone above us tried to set this? */
- if ((attribute = rdn_name_find_attribute(msg, "name")) != NULL ) {
- attribute->num_values = 0;
- }
-
- if (ldb_msg_add_value(msg, "name", &rdn_val, NULL) != 0) {
- talloc_free(down_req);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- attribute = rdn_name_find_attribute(msg, rdn_name);
-
- if (!attribute) {
- if (ldb_msg_add_value(msg, rdn_name, &rdn_val, NULL) != 0) {
- talloc_free(down_req);
- return LDB_ERR_OPERATIONS_ERROR;
- }
- } else {
- const struct ldb_attrib_handler *handler = ldb_attrib_handler(module->ldb, rdn_name);
-
- for (i = 0; i < attribute->num_values; i++) {
- if (handler->comparison_fn(module->ldb, msg, &rdn_val, &attribute->values[i]) == 0) {
- /* overwrite so it matches in case */
- attribute->values[i] = rdn_val;
- break;
- }
- }
- if (i == attribute->num_values) {
- ldb_debug_set(module->ldb, LDB_DEBUG_FATAL,
- "RDN mismatch on %s: %s (%s)",
- ldb_dn_linearize(msg, msg->dn), rdn_name, rdn_val.data);
- talloc_free(down_req);
- return LDB_ERR_OPERATIONS_ERROR;
- }
- }
-
- /* go on with the call chain */
- ret = ldb_next_request(module, down_req);
-
- /* do not free down_req as the call results may be linked to it,
- * it will be freed when the upper level request get freed */
- if (ret == LDB_SUCCESS) {
- req->handle = down_req->handle;
- }
-
- return ret;
-}
-
-struct rename_context {
-
- enum {RENAME_RENAME, RENAME_MODIFY} step;
- struct ldb_request *orig_req;
- struct ldb_request *down_req;
- struct ldb_request *mod_req;
-};
-
-static int rdn_name_rename(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_handle *h;
- struct rename_context *ac;
-
- ldb_debug(module->ldb, LDB_DEBUG_TRACE, "rdn_name_rename\n");
-
- /* do not manipulate our control entries */
- if (ldb_dn_is_special(req->op.rename.newdn)) {
- return ldb_next_request(module, req);
- }
-
- h = talloc_zero(req, struct ldb_handle);
- if (h == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- h->module = module;
-
- ac = talloc_zero(h, struct rename_context);
- if (ac == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->orig_req = req;
- ac->down_req = talloc(req, struct ldb_request);
- if (ac->down_req == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- *(ac->down_req) = *req;
-
- ac->step = RENAME_RENAME;
-
- req->handle = h;
-
- /* rename first, modify "name" if rename is ok */
- return ldb_next_request(module, ac->down_req);
-}
-
-static int rdn_name_rename_do_mod(struct ldb_handle *h) {
-
- struct rename_context *ac;
- const char *rdn_name;
- struct ldb_val rdn_val;
- struct ldb_message *msg;
-
- ac = talloc_get_type(h->private_data, struct rename_context);
-
- ac->mod_req = talloc_zero(ac, struct ldb_request);
-
- ac->mod_req->operation = LDB_MODIFY;
- ac->mod_req->op.mod.message = msg = ldb_msg_new(ac->mod_req);
- if (msg == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- msg->dn = ldb_dn_copy(msg, ac->orig_req->op.rename.newdn);
- if (msg->dn == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- rdn_name = ldb_dn_get_rdn_name(ac->orig_req->op.rename.newdn);
- if (rdn_name == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- rdn_val = ldb_val_dup(msg, ldb_dn_get_rdn_val(ac->orig_req->op.rename.newdn));
-
- if (ldb_msg_add_empty(msg, rdn_name, LDB_FLAG_MOD_REPLACE, NULL) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- if (ldb_msg_add_value(msg, rdn_name, &rdn_val, NULL) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- if (ldb_msg_add_empty(msg, "name", LDB_FLAG_MOD_REPLACE, NULL) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- if (ldb_msg_add_value(msg, "name", &rdn_val, NULL) != 0) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ldb_set_timeout_from_prev_req(h->module->ldb, ac->orig_req, ac->mod_req);
-
- ac->step = RENAME_MODIFY;
-
- /* do the mod call */
- return ldb_request(h->module->ldb, ac->mod_req);
-}
-
-static int rename_wait(struct ldb_handle *handle)
-{
- struct rename_context *ac;
- int ret;
-
- if (!handle || !handle->private_data) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (handle->state == LDB_ASYNC_DONE) {
- return handle->status;
- }
-
- handle->state = LDB_ASYNC_PENDING;
- handle->status = LDB_SUCCESS;
-
- ac = talloc_get_type(handle->private_data, struct rename_context);
-
- switch(ac->step) {
- case RENAME_RENAME:
- ret = ldb_wait(ac->down_req->handle, LDB_WAIT_NONE);
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (ac->down_req->handle->status != LDB_SUCCESS) {
- handle->status = ac->down_req->handle->status;
- goto done;
- }
-
- if (ac->down_req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- /* rename operation done */
- return rdn_name_rename_do_mod(handle);
-
- case RENAME_MODIFY:
- ret = ldb_wait(ac->mod_req->handle, LDB_WAIT_NONE);
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- goto done;
- }
- if (ac->mod_req->handle->status != LDB_SUCCESS) {
- handle->status = ac->mod_req->handle->status;
- goto done;
- }
-
- if (ac->mod_req->handle->state != LDB_ASYNC_DONE) {
- return LDB_SUCCESS;
- }
-
- break;
-
- default:
- ret = LDB_ERR_OPERATIONS_ERROR;
- goto done;
- }
-
- ret = LDB_SUCCESS;
-
-done:
- handle->state = LDB_ASYNC_DONE;
- return ret;
-}
-
-static int rename_wait_all(struct ldb_handle *handle) {
-
- int ret;
-
- while (handle->state != LDB_ASYNC_DONE) {
- ret = rename_wait(handle);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
-
- return handle->status;
-}
-
-static int rdn_name_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- if (type == LDB_WAIT_ALL) {
- return rename_wait_all(handle);
- } else {
- return rename_wait(handle);
- }
-}
-
-static const struct ldb_module_ops rdn_name_ops = {
- .name = "rdn_name",
- .add = rdn_name_add,
- .rename = rdn_name_rename,
- .wait = rdn_name_wait
-};
-
-
-int ldb_rdn_name_init(void)
-{
- return ldb_register_module(&rdn_name_ops);
-}
diff --git a/source/lib/ldb/modules/skel.c b/source/lib/ldb/modules/skel.c
deleted file mode 100644
index 2adef580b1c..00000000000
--- a/source/lib/ldb/modules/skel.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb skel module
- *
- * Description: example module
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-struct private_data {
-
- char *some_private_data;
-};
-
-/* search */
-static int skel_search(struct ldb_module *module, struct ldb_request *req)
-{
- return ldb_next_request(module, req);
-}
-
-/* add */
-static int skel_add(struct ldb_module *module, struct ldb_request *req){
- return ldb_next_request(module, req);
-}
-
-/* modify */
-static int skel_modify(struct ldb_module *module, struct ldb_request *req)
-{
- return ldb_next_request(module, req);
-}
-
-/* delete */
-static int skel_delete(struct ldb_module *module, struct ldb_request *req)
-{
- return ldb_next_request(module, req);
-}
-
-/* rename */
-static int skel_rename(struct ldb_module *module, struct ldb_request *req)
-{
- return ldb_next_request(module, req);
-}
-
-/* start a transaction */
-static int skel_start_trans(struct ldb_module *module)
-{
- return ldb_next_start_trans(module);
-}
-
-/* end a transaction */
-static int skel_end_trans(struct ldb_module *module)
-{
- return ldb_next_end_trans(module);
-}
-
-/* delete a transaction */
-static int skel_del_trans(struct ldb_module *module)
-{
- return ldb_next_del_trans(module);
-}
-
-static int skel_destructor(struct ldb_module *ctx)
-{
- struct private_data *data = talloc_get_type(ctx->private_data, struct private_data);
- /* put your clean-up functions here */
- if (data->some_private_data) talloc_free(data->some_private_data);
- return 0;
-}
-
-static int skel_request(struct ldb_module *module, struct ldb_request *req)
-{
- return ldb_next_request(module, req);
-}
-
-static int skel_init(struct ldb_module *ctx)
-{
- struct private_data *data;
-
- data = talloc(ctx, struct private_data);
- if (data == NULL) {
- return 1;
- }
-
- data->some_private_data = NULL;
- ctx->private_data = data;
-
- talloc_set_destructor (ctx, skel_destructor);
-
- return ldb_next_init(ctx);
-}
-
-static const struct ldb_module_ops skel_ops = {
- .name = "skel",
- .init_context = skel_init,
- .search = skel_search,
- .add = skel_add,
- .modify = skel_modify,
- .del = skel_delete,
- .rename = skel_rename,
- .request = skel_request,
- .start_transaction = skel_start_trans,
- .end_transaction = skel_end_trans,
- .del_transaction = skel_del_trans,
-};
-
-int ldb_skel_init(void)
-{
- return ldb_register_module(&skel_ops);
-}
diff --git a/source/lib/ldb/modules/sort.c b/source/lib/ldb/modules/sort.c
deleted file mode 100644
index 4fa03f8bfa3..00000000000
--- a/source/lib/ldb/modules/sort.c
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldb server side sort control module
- *
- * Description: this module sorts the results of a search
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-struct opaque {
- struct ldb_context *ldb;
- const struct ldb_attrib_handler *h;
- const char *attribute;
- int reverse;
- int result;
-};
-
-struct sort_context {
- struct ldb_module *module;
- void *up_context;
- int (*up_callback)(struct ldb_context *, void *, struct ldb_reply *);
-
- char *attributeName;
- char *orderingRule;
- int reverse;
-
- struct ldb_request *req;
- struct ldb_message **msgs;
- char **referrals;
- struct ldb_control **controls;
- int num_msgs;
- int num_refs;
-
- const struct ldb_attrib_handler *h;
- int sort_result;
-};
-
-static struct ldb_handle *init_handle(void *mem_ctx, struct ldb_module *module,
- void *context,
- int (*callback)(struct ldb_context *, void *, struct ldb_reply *))
-{
- struct sort_context *ac;
- struct ldb_handle *h;
-
- h = talloc_zero(mem_ctx, struct ldb_handle);
- if (h == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- return NULL;
- }
-
- h->module = module;
-
- ac = talloc_zero(h, struct sort_context);
- if (ac == NULL) {
- ldb_set_errstring(module->ldb, "Out of Memory");
- talloc_free(h);
- return NULL;
- }
-
- h->private_data = (void *)ac;
-
- h->state = LDB_ASYNC_INIT;
- h->status = LDB_SUCCESS;
-
- ac->module = module;
- ac->up_context = context;
- ac->up_callback = callback;
-
- return h;
-}
-
-static int build_response(void *mem_ctx, struct ldb_control ***ctrls, int result, const char *desc)
-{
- struct ldb_control **controls;
- struct ldb_sort_resp_control *resp;
- int i;
-
- if (*ctrls) {
- controls = *ctrls;
- for (i = 0; controls[i]; i++);
- controls = talloc_realloc(mem_ctx, controls, struct ldb_control *, i + 2);
- } else {
- i = 0;
- controls = talloc_array(mem_ctx, struct ldb_control *, 2);
- }
- if (! controls )
- return LDB_ERR_OPERATIONS_ERROR;
-
- *ctrls = controls;
-
- controls[i+1] = NULL;
- controls[i] = talloc(controls, struct ldb_control);
- if (! controls[i] )
- return LDB_ERR_OPERATIONS_ERROR;
-
- controls[i]->oid = LDB_CONTROL_SORT_RESP_OID;
- controls[i]->critical = 0;
-
- resp = talloc(controls[i], struct ldb_sort_resp_control);
- if (! resp )
- return LDB_ERR_OPERATIONS_ERROR;
-
- resp->result = result;
- resp->attr_desc = talloc_strdup(resp, desc);
-
- if (! resp->attr_desc )
- return LDB_ERR_OPERATIONS_ERROR;
-
- controls[i]->data = resp;
-
- return LDB_SUCCESS;
-}
-
-static int sort_compare(struct ldb_message **msg1, struct ldb_message **msg2, void *opaque)
-{
- struct sort_context *ac = talloc_get_type(opaque, struct sort_context);
- struct ldb_message_element *el1, *el2;
-
- if (ac->sort_result != 0) {
- /* an error occurred previously,
- * let's exit the sorting by returning always 0 */
- return 0;
- }
-
- el1 = ldb_msg_find_element(*msg1, ac->attributeName);
- el2 = ldb_msg_find_element(*msg2, ac->attributeName);
-
- if (!el1 || !el2) {
- /* the attribute was not found return and
- * set an error */
- ac->sort_result = 53;
- return 0;
- }
-
- if (ac->reverse)
- return ac->h->comparison_fn(ac->module->ldb, ac, &el2->values[0], &el1->values[0]);
-
- return ac->h->comparison_fn(ac->module->ldb, ac, &el1->values[0], &el2->values[0]);
-}
-
-static int server_sort_search_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct sort_context *ac = NULL;
-
- if (!context || !ares) {
- ldb_set_errstring(ldb, "NULL Context or Result in callback");
- goto error;
- }
-
- ac = talloc_get_type(context, struct sort_context);
-
- if (ares->type == LDB_REPLY_ENTRY) {
- ac->msgs = talloc_realloc(ac, ac->msgs, struct ldb_message *, ac->num_msgs + 2);
- if (! ac->msgs) {
- goto error;
- }
-
- ac->msgs[ac->num_msgs + 1] = NULL;
-
- ac->msgs[ac->num_msgs] = talloc_move(ac->msgs, &ares->message);
- ac->num_msgs++;
- }
-
- if (ares->type == LDB_REPLY_REFERRAL) {
- ac->referrals = talloc_realloc(ac, ac->referrals, char *, ac->num_refs + 2);
- if (! ac->referrals) {
- goto error;
- }
-
- ac->referrals[ac->num_refs + 1] = NULL;
- ac->referrals[ac->num_refs] = talloc_move(ac->referrals, &ares->referral);
-
- ac->num_refs++;
- }
-
- if (ares->type == LDB_REPLY_DONE) {
- ac->controls = talloc_move(ac, &ares->controls);
- }
-
- talloc_free(ares);
- return LDB_SUCCESS;
-
-error:
- talloc_free(ares);
- return LDB_ERR_OPERATIONS_ERROR;
-}
-
-static int server_sort_search(struct ldb_module *module, struct ldb_request *req)
-{
- struct ldb_control *control;
- struct ldb_server_sort_control **sort_ctrls;
- struct ldb_control **saved_controls;
- struct sort_context *ac;
- struct ldb_handle *h;
- int ret;
-
- /* check if there's a paged request control */
- control = get_control_from_list(req->controls, LDB_CONTROL_SERVER_SORT_OID);
- if (control == NULL) {
- /* not found go on */
- return ldb_next_request(module, req);
- }
-
- req->handle = NULL;
-
- if (!req->callback || !req->context) {
- ldb_set_errstring(module->ldb,
- "Async interface called with NULL callback function or NULL context");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- h = init_handle(req, module, req->context, req->callback);
- if (!h) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- ac = talloc_get_type(h->private_data, struct sort_context);
-
- sort_ctrls = talloc_get_type(control->data, struct ldb_server_sort_control *);
- if (!sort_ctrls) {
- return LDB_ERR_PROTOCOL_ERROR;
- }
-
- /* FIXME: we do not support more than one attribute for sorting right now */
- /* FIXME: we need to check if the attribute type exist or return an error */
-
- if (sort_ctrls[1] != NULL) {
- if (control->critical) {
- struct ldb_reply *ares;
-
- ares = talloc_zero(req, struct ldb_reply);
- if (!ares)
- return LDB_ERR_OPERATIONS_ERROR;
-
- /* 53 = unwilling to perform */
- ares->type = LDB_REPLY_DONE;
- if ((ret = build_response(ares, &ares->controls, 53, "sort control is not complete yet")) != LDB_SUCCESS) {
- return ret;
- }
-
- h->status = LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION;
- h->state = LDB_ASYNC_DONE;
- ret = ac->up_callback(module->ldb, ac->up_context, ares);
-
- return ret;
- } else {
- /* just pass the call down and don't do any sorting */
- ldb_next_request(module, req);
- }
- }
-
- ac->attributeName = sort_ctrls[0]->attributeName;
- ac->orderingRule = sort_ctrls[0]->orderingRule;
- ac->reverse = sort_ctrls[0]->reverse;
-
- ac->req = talloc(req, struct ldb_request);
- if (!ac->req)
- return LDB_ERR_OPERATIONS_ERROR;
-
- ac->req->operation = req->operation;
- ac->req->op.search.base = req->op.search.base;
- ac->req->op.search.scope = req->op.search.scope;
- ac->req->op.search.tree = req->op.search.tree;
- ac->req->op.search.attrs = req->op.search.attrs;
- ac->req->controls = req->controls;
-
- /* save it locally and remove it from the list */
- /* we do not need to replace them later as we
- * are keeping the original req intact */
- if (!save_controls(control, ac->req, &saved_controls)) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac->req->context = ac;
- ac->req->callback = server_sort_search_callback;
- ldb_set_timeout_from_prev_req(module->ldb, req, ac->req);
-
- req->handle = h;
-
- return ldb_next_request(module, ac->req);
-}
-
-static int server_sort_results(struct ldb_handle *handle)
-{
- struct sort_context *ac;
- struct ldb_reply *ares;
- int i, ret;
-
- ac = talloc_get_type(handle->private_data, struct sort_context);
-
- ac->h = ldb_attrib_handler(ac->module->ldb, ac->attributeName);
- ac->sort_result = 0;
-
- ldb_qsort(ac->msgs, ac->num_msgs,
- sizeof(struct ldb_message *),
- ac, (ldb_qsort_cmp_fn_t)sort_compare);
-
- for (i = 0; i < ac->num_msgs; i++) {
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
-
- ares->type = LDB_REPLY_ENTRY;
- ares->message = talloc_move(ares, &ac->msgs[i]);
-
- handle->status = ac->up_callback(ac->module->ldb, ac->up_context, ares);
- if (handle->status != LDB_SUCCESS) {
- return handle->status;
- }
- }
-
- for (i = 0; i < ac->num_refs; i++) {
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
-
- ares->type = LDB_REPLY_REFERRAL;
- ares->referral = talloc_move(ares, &ac->referrals[i]);
-
- handle->status = ac->up_callback(ac->module->ldb, ac->up_context, ares);
- if (handle->status != LDB_SUCCESS) {
- return handle->status;
- }
- }
-
- ares = talloc_zero(ac, struct ldb_reply);
- if (!ares) {
- handle->status = LDB_ERR_OPERATIONS_ERROR;
- return handle->status;
- }
-
- ares->type = LDB_REPLY_DONE;
- ares->controls = talloc_move(ares, &ac->controls);
-
- handle->status = ac->up_callback(ac->module->ldb, ac->up_context, ares);
- if (handle->status != LDB_SUCCESS) {
- return handle->status;
- }
-
- if ((ret = build_response(ac, &ac->controls, ac->sort_result, "sort control is not complete yet")) != LDB_SUCCESS) {
- return ret;
- }
-
- return LDB_SUCCESS;
-}
-
-static int server_sort_wait(struct ldb_handle *handle, enum ldb_wait_type type)
-{
- struct sort_context *ac;
- int ret;
-
- if (!handle || !handle->private_data) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ac = talloc_get_type(handle->private_data, struct sort_context);
-
- ret = ldb_wait(ac->req->handle, type);
-
- if (ret != LDB_SUCCESS) {
- handle->status = ret;
- return ret;
- }
-
- handle->state = ac->req->handle->state;
- handle->status = ac->req->handle->status;
-
- if (handle->status != LDB_SUCCESS) {
- return handle->status;
- }
-
- if (handle->state == LDB_ASYNC_DONE) {
- ret = server_sort_results(handle);
- }
-
- return ret;
-}
-
-static int server_sort_init(struct ldb_module *module)
-{
- struct ldb_request *req;
- int ret;
-
- req = talloc(module, struct ldb_request);
- if (req == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- req->operation = LDB_REQ_REGISTER_CONTROL;
- req->op.reg_control.oid = LDB_CONTROL_SERVER_SORT_OID;
- req->controls = NULL;
-
- ret = ldb_request(module->ldb, req);
- if (ret != LDB_SUCCESS) {
- ldb_debug(module->ldb, LDB_DEBUG_WARNING, "server_sort: Unable to register control with rootdse!\n");
- }
-
- talloc_free(req);
- return ldb_next_init(module);
-}
-
-static const struct ldb_module_ops server_sort_ops = {
- .name = "server_sort",
- .search = server_sort_search,
- .wait = server_sort_wait,
- .init_context = server_sort_init
-};
-
-int ldb_sort_init(void)
-{
- return ldb_register_module(&server_sort_ops);
-}
diff --git a/source/lib/ldb/nssldb/README.txt b/source/lib/ldb/nssldb/README.txt
deleted file mode 100644
index ddba62b3804..00000000000
--- a/source/lib/ldb/nssldb/README.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-
-This test code requires a tdb that is configured for to use the asq module.
-You can do that adding the following record to a tdb:
-
-dn: @MODULES
-@LIST: asq
-
-Other modules can be used as well (like rdn_name for example)
-
-The uidNumber 0 and the gidNumber 0 are considered invalid.
-
-The user records should contain the followin attributes:
-uid (required) the user name
-userPassword (optional) the user password (if not present "LDB" is
- returned in the password field)
-uidNumber (required) the user uid
-gidNumber (required) the user primary gid
-gecos (optional) the GECOS
-homeDirectory (required) the home directory
-loginShell (required) the login shell
-memberOf (required) all the groups the user is member of should
- be reported here using their DNs. The
- primary group as well.
-
-The group accounts should contain the following attributes:
-cn (required) the group name
-uesrPassword (optional) the group password (if not present "LDB" is
- returned in the password field)
-gidNumber (required) the group gid
-member (optional) the DNs of the member users, also the ones
- that have this group as primary
-
-
-SSS
diff --git a/source/lib/ldb/nssldb/ldb-grp.c b/source/lib/ldb/nssldb/ldb-grp.c
deleted file mode 100644
index f33ec65c55e..00000000000
--- a/source/lib/ldb/nssldb/ldb-grp.c
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- LDB nsswitch module
-
- Copyright (C) Simo Sorce 2006
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-#include "ldb-nss.h"
-
-extern struct _ldb_nss_context *_ldb_nss_ctx;
-
-const char *_ldb_nss_gr_attrs[] = {
- "cn",
- "userPassword",
- "gidNumber",
- NULL
-};
-
-const char *_ldb_nss_mem_attrs[] = {
- "uid",
- NULL
-};
-
-#define _NSS_LDB_ENOMEM(amem) \
- do { \
- if ( ! amem) { \
- errno = ENOMEM; \
- talloc_free(memctx); \
- return NSS_STATUS_UNAVAIL; \
- } \
- } while(0)
-
-/* This setgrent, getgrent, endgrent is not very efficient */
-
-NSS_STATUS _nss_ldb_setgrent(void)
-{
- int ret;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- _ldb_nss_ctx->gr_cur = 0;
- if (_ldb_nss_ctx->gr_res != NULL) {
- talloc_free(_ldb_nss_ctx->gr_res);
- _ldb_nss_ctx->gr_res = NULL;
- }
-
- ret = ldb_search(_ldb_nss_ctx->ldb,
- _ldb_nss_ctx->base,
- LDB_SCOPE_SUBTREE,
- _LDB_NSS_GRENT_FILTER,
- _ldb_nss_gr_attrs,
- &_ldb_nss_ctx->gr_res);
- if (ret != LDB_SUCCESS) {
- return NSS_STATUS_UNAVAIL;
- }
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _nss_ldb_endgrent(void)
-{
- int ret;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- _ldb_nss_ctx->gr_cur = 0;
- if (_ldb_nss_ctx->gr_res) {
- talloc_free(_ldb_nss_ctx->gr_res);
- _ldb_nss_ctx->gr_res = NULL;
- }
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _nss_ldb_getgrent_r(struct group *result_buf, char *buffer, size_t buflen, int *errnop)
-{
- int ret;
- struct ldb_result *res;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- *errnop = 0;
-
- if (_ldb_nss_ctx->gr_cur >= _ldb_nss_ctx->gr_res->count) {
- /* already returned all entries */
- return NSS_STATUS_NOTFOUND;
- }
-
- res = talloc_zero(_ldb_nss_ctx->gr_res, struct ldb_result);
- if ( ! res) {
- errno = *errnop = ENOMEM;
- _ldb_nss_ctx->gr_cur++; /* skip this entry */
- return NSS_STATUS_UNAVAIL;
- }
-
- ret = _ldb_nss_group_request(&res,
- _ldb_nss_ctx->gr_res->msgs[_ldb_nss_ctx->gr_cur]->dn,
- _ldb_nss_mem_attrs,
- "member");
-
- if (ret != NSS_STATUS_SUCCESS) {
- *errnop = errno;
- talloc_free(res);
- _ldb_nss_ctx->gr_cur++; /* skip this entry */
- return ret;
- }
-
- ret = _ldb_nss_fill_group(result_buf,
- buffer,
- buflen,
- errnop,
- _ldb_nss_ctx->gr_res->msgs[_ldb_nss_ctx->gr_cur],
- res);
-
- talloc_free(res);
-
- if (ret != NSS_STATUS_SUCCESS) {
- if (ret != NSS_STATUS_TRYAGAIN) {
- _ldb_nss_ctx->gr_cur++; /* skip this entry */
- }
- return ret;
- }
-
- /* this entry is ok, increment counter to nex entry */
- _ldb_nss_ctx->gr_cur++;
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _nss_ldb_getgrnam_r(const char *name, struct group *result_buf, char *buffer, size_t buflen, int *errnop)
-{
- int ret;
- char *filter;
- TALLOC_CTX *ctx;
- struct ldb_result *gr_res;
- struct ldb_result *mem_res;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- ctx = talloc_new(_ldb_nss_ctx->ldb);
- if ( ! ctx) {
- *errnop = errno = ENOMEM;
- return NSS_STATUS_UNAVAIL;
- }
-
- /* build the filter for this uid */
- filter = talloc_asprintf(ctx, _LDB_NSS_GRNAM_FILTER, name);
- if (filter == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOMEM;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* search the entry */
- ret = ldb_search(_ldb_nss_ctx->ldb,
- _ldb_nss_ctx->base,
- LDB_SCOPE_SUBTREE,
- filter,
- _ldb_nss_gr_attrs,
- &gr_res);
- if (ret != LDB_SUCCESS) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- talloc_steal(ctx, gr_res);
-
- /* if none found return */
- if (gr_res->count == 0) {
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_NOTFOUND;
- goto done;
- }
-
- if (gr_res->count != 1) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- mem_res = talloc_zero(ctx, struct ldb_result);
- if ( ! mem_res) {
- errno = *errnop = ENOMEM;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- ret = _ldb_nss_group_request(&mem_res,
- gr_res->msgs[0]->dn,
- _ldb_nss_mem_attrs,
- "member");
-
- if (ret != NSS_STATUS_SUCCESS) {
- *errnop = errno;
- goto done;
- }
-
- ret = _ldb_nss_fill_group(result_buf,
- buffer,
- buflen,
- errnop,
- gr_res->msgs[0],
- mem_res);
-
- if (ret != NSS_STATUS_SUCCESS) {
- goto done;
- }
-
- ret = NSS_STATUS_SUCCESS;
-done:
- talloc_free(ctx);
- return ret;
-}
-
-NSS_STATUS _nss_ldb_getgrgid_r(gid_t gid, struct group *result_buf, char *buffer, size_t buflen, int *errnop)
-{
- int ret;
- char *filter;
- TALLOC_CTX *ctx;
- struct ldb_result *gr_res;
- struct ldb_result *mem_res;
-
- if (gid == 0) { /* we don't serve root gid by policy */
- *errnop = errno = ENOENT;
- return NSS_STATUS_NOTFOUND;
- }
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- ctx = talloc_new(_ldb_nss_ctx->ldb);
- if ( ! ctx) {
- *errnop = errno = ENOMEM;
- return NSS_STATUS_UNAVAIL;
- }
-
- /* build the filter for this uid */
- filter = talloc_asprintf(ctx, _LDB_NSS_GRGID_FILTER, gid);
- if (filter == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOMEM;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* search the entry */
- ret = ldb_search(_ldb_nss_ctx->ldb,
- _ldb_nss_ctx->base,
- LDB_SCOPE_SUBTREE,
- filter,
- _ldb_nss_gr_attrs,
- &gr_res);
- if (ret != LDB_SUCCESS) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- talloc_steal(ctx, gr_res);
-
- /* if none found return */
- if (gr_res->count == 0) {
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_NOTFOUND;
- goto done;
- }
-
- if (gr_res->count != 1) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- mem_res = talloc_zero(ctx, struct ldb_result);
- if ( ! mem_res) {
- errno = *errnop = ENOMEM;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- ret = _ldb_nss_group_request(&mem_res,
- gr_res->msgs[0]->dn,
- _ldb_nss_mem_attrs,
- "member");
-
- if (ret != NSS_STATUS_SUCCESS) {
- *errnop = errno;
- goto done;
- }
-
- ret = _ldb_nss_fill_group(result_buf,
- buffer,
- buflen,
- errnop,
- gr_res->msgs[0],
- mem_res);
-
- if (ret != NSS_STATUS_SUCCESS) {
- goto done;
- }
-
- ret = NSS_STATUS_SUCCESS;
-done:
- talloc_free(ctx);
- return ret;
-}
-
-NSS_STATUS _nss_ldb_initgroups_dyn(const char *user, gid_t group, long int *start, long int *size, gid_t **groups, long int limit, int *errnop)
-{
- int ret;
- char *filter;
- const char * attrs[] = { "uidNumber", "gidNumber", NULL };
- struct ldb_result *uid_res;
- struct ldb_result *mem_res;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- mem_res = talloc_zero(_ldb_nss_ctx, struct ldb_result);
- if ( ! mem_res) {
- errno = *errnop = ENOMEM;
- return NSS_STATUS_UNAVAIL;
- }
-
- /* build the filter for this name */
- filter = talloc_asprintf(mem_res, _LDB_NSS_PWNAM_FILTER, user);
- if (filter == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* search the entry */
- ret = ldb_search(_ldb_nss_ctx->ldb,
- _ldb_nss_ctx->base,
- LDB_SCOPE_SUBTREE,
- filter,
- attrs,
- &uid_res);
- if (ret != LDB_SUCCESS) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- talloc_steal(mem_res, uid_res);
-
- /* if none found return */
- if (uid_res->count == 0) {
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_NOTFOUND;
- goto done;
- }
-
- if (uid_res->count != 1) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- ret = _ldb_nss_group_request(&mem_res,
- uid_res->msgs[0]->dn,
- attrs,
- "memberOf");
-
- if (ret != NSS_STATUS_SUCCESS) {
- *errnop = errno;
- goto done;
- }
-
- ret = _ldb_nss_fill_initgr(group,
- limit,
- start,
- size,
- groups,
- errnop,
- mem_res);
-
- if (ret != NSS_STATUS_SUCCESS) {
- goto done;
- }
-
- ret = NSS_STATUS_SUCCESS;
-
-done:
- talloc_free(mem_res);
- return ret;
-}
diff --git a/source/lib/ldb/nssldb/ldb-nss.c b/source/lib/ldb/nssldb/ldb-nss.c
deleted file mode 100644
index 614f6e170fe..00000000000
--- a/source/lib/ldb/nssldb/ldb-nss.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- LDB nsswitch module
-
- Copyright (C) Simo Sorce 2006
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-#include "ldb-nss.h"
-
-struct _ldb_nss_context *_ldb_nss_ctx = NULL;
-
-NSS_STATUS _ldb_nss_init(void)
-{
- int ret;
-
- pid_t mypid = getpid();
-
- if (_ldb_nss_ctx != NULL) {
- if (_ldb_nss_ctx->pid == mypid) {
- /* already initialized */
- return NSS_STATUS_SUCCESS;
- } else {
- /* we are in a forked child now, reinitialize */
- talloc_free(_ldb_nss_ctx);
- _ldb_nss_ctx = NULL;
- }
- }
-
- _ldb_nss_ctx = talloc_named(NULL, 0, "_ldb_nss_ctx(%u)", mypid);
- if (_ldb_nss_ctx == NULL) {
- return NSS_STATUS_UNAVAIL;
- }
-
- _ldb_nss_ctx->pid = mypid;
-
- ret = ldb_global_init();
- if (ret != 0) {
- goto failed;
- }
-
- _ldb_nss_ctx->ldb = ldb_init(_ldb_nss_ctx);
- if (_ldb_nss_ctx->ldb == NULL) {
- goto failed;
- }
-
- ret = ldb_connect(_ldb_nss_ctx->ldb, _LDB_NSS_URL, LDB_FLG_RDONLY, NULL);
- if (ret != LDB_SUCCESS) {
- goto failed;
- }
-
- _ldb_nss_ctx->base = ldb_dn_explode(_ldb_nss_ctx, _LDB_NSS_BASEDN);
- if (_ldb_nss_ctx->base == NULL) {
- goto failed;
- }
-
- _ldb_nss_ctx->pw_cur = 0;
- _ldb_nss_ctx->pw_res = NULL;
- _ldb_nss_ctx->gr_cur = 0;
- _ldb_nss_ctx->gr_res = NULL;
-
- return NSS_STATUS_SUCCESS;
-
-failed:
- /* talloc_free(_ldb_nss_ctx); */
- _ldb_nss_ctx = NULL;
- return NSS_STATUS_UNAVAIL;
-}
-
-NSS_STATUS _ldb_nss_fill_passwd(struct passwd *result,
- char *buffer,
- int buflen,
- int *errnop,
- struct ldb_message *msg)
-{
- int len;
- int bufpos;
- const char *tmp;
-
- bufpos = 0;
-
- /* get username */
- tmp = ldb_msg_find_attr_as_string(msg, "uid", NULL);
- if (tmp == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- return NSS_STATUS_UNAVAIL;
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->pw_name = &buffer[bufpos];
- bufpos += len;
-
- /* get userPassword */
- tmp = ldb_msg_find_attr_as_string(msg, "userPassword", NULL);
- if (tmp == NULL) {
- tmp = "LDB";
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->pw_passwd = &buffer[bufpos];
- bufpos += len;
-
- /* this backend never serves an uid 0 user */
- result->pw_uid = ldb_msg_find_attr_as_int(msg, "uidNumber", 0);
- if (result->pw_uid == 0) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- return NSS_STATUS_UNAVAIL;
- }
-
- result->pw_gid = ldb_msg_find_attr_as_int(msg, "gidNumber", 0);
- if (result->pw_gid == 0) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- return NSS_STATUS_UNAVAIL;
- }
-
- /* get gecos */
- tmp = ldb_msg_find_attr_as_string(msg, "gecos", NULL);
- if (tmp == NULL) {
- tmp = "";
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->pw_gecos = &buffer[bufpos];
- bufpos += len;
-
- /* get homeDirectory */
- tmp = ldb_msg_find_attr_as_string(msg, "homeDirectory", NULL);
- if (tmp == NULL) {
- tmp = "";
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->pw_dir = &buffer[bufpos];
- bufpos += len;
-
- /* get shell */
- tmp = ldb_msg_find_attr_as_string(msg, "loginShell", NULL);
- if (tmp == NULL) {
- tmp = "";
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->pw_shell = &buffer[bufpos];
- bufpos += len;
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _ldb_nss_fill_group(struct group *result,
- char *buffer,
- int buflen,
- int *errnop,
- struct ldb_message *group,
- struct ldb_result *members)
-{
- const char *tmp;
- size_t len;
- size_t bufpos;
- size_t lsize;
- int i;
-
- bufpos = 0;
-
- /* get group name */
- tmp = ldb_msg_find_attr_as_string(group, "cn", NULL);
- if (tmp == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- return NSS_STATUS_UNAVAIL;
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->gr_name = &buffer[bufpos];
- bufpos += len;
-
- /* get userPassword */
- tmp = ldb_msg_find_attr_as_string(group, "userPassword", NULL);
- if (tmp == NULL) {
- tmp = "LDB";
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->gr_passwd = &buffer[bufpos];
- bufpos += len;
-
- result->gr_gid = ldb_msg_find_attr_as_int(group, "gidNumber", 0);
- if (result->gr_gid == 0) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- return NSS_STATUS_UNAVAIL;
- }
-
- /* check if there is enough memory for the list of pointers */
- lsize = (members->count + 1) * sizeof(char *);
-
- /* align buffer on pointer boundary */
- bufpos += (sizeof(char*) - ((unsigned long)(buffer) % sizeof(char*)));
- if ((buflen - bufpos) < lsize) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
-
- result->gr_mem = (char **)&buffer[bufpos];
- bufpos += lsize;
-
- for (i = 0; i < members->count; i++) {
- tmp = ldb_msg_find_attr_as_string(members->msgs[i], "uid", NULL);
- if (tmp == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- return NSS_STATUS_UNAVAIL;
- }
- len = strlen(tmp)+1;
- if (bufpos + len > buflen) {
- /* buffer too small */
- *errnop = errno = EAGAIN;
- return NSS_STATUS_TRYAGAIN;
- }
- memcpy(&buffer[bufpos], tmp, len);
- result->gr_mem[i] = &buffer[bufpos];
- bufpos += len;
- }
-
- result->gr_mem[i] = NULL;
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _ldb_nss_fill_initgr(gid_t group,
- long int limit,
- long int *start,
- long int *size,
- gid_t **groups,
- int *errnop,
- struct ldb_result *grlist)
-{
- NSS_STATUS ret;
- int i;
-
- for (i = 0; i < grlist->count; i++) {
-
- if (limit && (*start > limit)) {
- /* TODO: warn no all groups were reported */
- *errnop = 0;
- ret = NSS_STATUS_SUCCESS;
- goto done;
- }
-
- if (*start == *size) {
- /* buffer full, enlarge it */
- long int gs;
- gid_t *gm;
-
- gs = (*size) + 32;
- if (limit && (gs > limit)) {
- gs = limit;
- }
-
- gm = (gid_t *)realloc((*groups), gs * sizeof(gid_t));
- if ( ! gm) {
- *errnop = ENOMEM;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- *groups = gm;
- *size = gs;
- }
-
- (*groups)[*start] = ldb_msg_find_attr_as_int(grlist->msgs[i], "gidNumber", 0);
- if ((*groups)[*start] == 0 || (*groups)[*start] == group) {
- /* skip root group or primary group */
- continue;
- }
- (*start)++;
-
- }
-
- *errnop = 0;
- ret = NSS_STATUS_SUCCESS;
-done:
- return ret;
-}
-
-#define _LDB_NSS_ALLOC_CHECK(mem) do { if (!mem) { errno = ENOMEM; return NSS_STATUS_UNAVAIL; } } while(0)
-
-NSS_STATUS _ldb_nss_group_request(struct ldb_result **_res,
- struct ldb_dn *group_dn,
- const char * const *attrs,
- const char *mattr)
-{
- struct ldb_control **ctrls;
- struct ldb_control *ctrl;
- struct ldb_asq_control *asqc;
- struct ldb_request *req;
- int ret;
- struct ldb_result *res = *_res;
-
- ctrls = talloc_array(res, struct ldb_control *, 2);
- _LDB_NSS_ALLOC_CHECK(ctrls);
-
- ctrl = talloc(ctrls, struct ldb_control);
- _LDB_NSS_ALLOC_CHECK(ctrl);
-
- asqc = talloc(ctrl, struct ldb_asq_control);
- _LDB_NSS_ALLOC_CHECK(asqc);
-
- asqc->source_attribute = talloc_strdup(asqc, mattr);
- _LDB_NSS_ALLOC_CHECK(asqc->source_attribute);
-
- asqc->request = 1;
- asqc->src_attr_len = strlen(asqc->source_attribute);
- ctrl->oid = LDB_CONTROL_ASQ_OID;
- ctrl->critical = 1;
- ctrl->data = asqc;
- ctrls[0] = ctrl;
- ctrls[1] = NULL;
-
- ret = ldb_build_search_req(
- &req,
- _ldb_nss_ctx->ldb,
- res,
- group_dn,
- LDB_SCOPE_BASE,
- "(objectClass=*)",
- attrs,
- ctrls,
- res,
- ldb_search_default_callback);
-
- if (ret != LDB_SUCCESS) {
- errno = ENOENT;
- return NSS_STATUS_UNAVAIL;
- }
-
- ldb_set_timeout(_ldb_nss_ctx->ldb, req, 0);
-
- ret = ldb_request(_ldb_nss_ctx->ldb, req);
-
- if (ret == LDB_SUCCESS) {
- ret = ldb_wait(req->handle, LDB_WAIT_ALL);
- } else {
- talloc_free(req);
- return NSS_STATUS_UNAVAIL;
- }
-
- talloc_free(req);
- return NSS_STATUS_SUCCESS;
-}
-
diff --git a/source/lib/ldb/nssldb/ldb-nss.h b/source/lib/ldb/nssldb/ldb-nss.h
deleted file mode 100644
index c780a21e811..00000000000
--- a/source/lib/ldb/nssldb/ldb-nss.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- LDB nsswitch module
-
- Copyright (C) Simo Sorce 2006
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-#ifndef _LDB_NSS
-#define _LDB_NSS
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include <nss.h>
-#include <pwd.h>
-#include <grp.h>
-
-#define _LDB_NSS_URL "etc/users.ldb"
-#define _LDB_NSS_BASEDN "CN=Users,CN=System"
-#define _LDB_NSS_PWENT_FILTER "(&(objectClass=posixAccount)(!(uidNumber=0))(!(gidNumber=0)))"
-#define _LDB_NSS_PWUID_FILTER "(&(objectClass=posixAccount)(uidNumber=%d)(!(gidNumber=0)))"
-#define _LDB_NSS_PWNAM_FILTER "(&(objectClass=posixAccount)(uid=%s)(!(uidNumber=0))(!(gidNumber=0)))"
-
-#define _LDB_NSS_GRENT_FILTER "(&(objectClass=posixGroup)(!(gidNumber=0)))"
-#define _LDB_NSS_GRGID_FILTER "(&(objectClass=posixGroup)(gidNumber=%d)))"
-#define _LDB_NSS_GRNAM_FILTER "(&(objectClass=posixGroup)(cn=%s)(!(gidNumber=0)))"
-
-typedef enum nss_status NSS_STATUS;
-
-struct _ldb_nss_context {
-
- pid_t pid;
-
- struct ldb_context *ldb;
- const struct ldb_dn *base;
-
- int pw_cur;
- struct ldb_result *pw_res;
-
- int gr_cur;
- struct ldb_result *gr_res;
-};
-
-NSS_STATUS _ldb_nss_init(void);
-
-NSS_STATUS _ldb_nss_fill_passwd(struct passwd *result,
- char *buffer,
- int buflen,
- int *errnop,
- struct ldb_message *msg);
-
-NSS_STATUS _ldb_nss_fill_group(struct group *result,
- char *buffer,
- int buflen,
- int *errnop,
- struct ldb_message *group,
- struct ldb_result *members);
-
-NSS_STATUS _ldb_nss_fill_initgr(gid_t group,
- long int limit,
- long int *start,
- long int *size,
- gid_t **groups,
- int *errnop,
- struct ldb_result *grlist);
-
-NSS_STATUS _ldb_nss_group_request(struct ldb_result **res,
- struct ldb_dn *group_dn,
- const char * const *attrs,
- const char *mattr);
-
-#endif /* _LDB_NSS */
diff --git a/source/lib/ldb/nssldb/ldb-pwd.c b/source/lib/ldb/nssldb/ldb-pwd.c
deleted file mode 100644
index e4bafdcf7c3..00000000000
--- a/source/lib/ldb/nssldb/ldb-pwd.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- LDB nsswitch module
-
- Copyright (C) Simo Sorce 2006
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-#include "ldb-nss.h"
-
-extern struct _ldb_nss_context *_ldb_nss_ctx;
-
-const char *_ldb_nss_pw_attrs[] = {
- "uid",
- "userPassword",
- "uidNumber",
- "gidNumber",
- "gecos",
- "homeDirectory",
- "loginShell",
- NULL
-};
-
-NSS_STATUS _nss_ldb_setpwent(void)
-{
- int ret;
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- _ldb_nss_ctx->pw_cur = 0;
- if (_ldb_nss_ctx->pw_res != NULL) {
- talloc_free(_ldb_nss_ctx->pw_res);
- _ldb_nss_ctx->pw_res = NULL;
- }
-
- ret = ldb_search(_ldb_nss_ctx->ldb,
- _ldb_nss_ctx->base,
- LDB_SCOPE_SUBTREE,
- _LDB_NSS_PWENT_FILTER,
- _ldb_nss_pw_attrs,
- &_ldb_nss_ctx->pw_res);
- if (ret != LDB_SUCCESS) {
- return NSS_STATUS_UNAVAIL;
- }
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _nss_ldb_endpwent(void)
-{
- int ret;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- _ldb_nss_ctx->pw_cur = 0;
- if (_ldb_nss_ctx->pw_res) {
- talloc_free(_ldb_nss_ctx->pw_res);
- _ldb_nss_ctx->pw_res = NULL;
- }
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _nss_ldb_getpwent_r(struct passwd *result_buf,
- char *buffer,
- int buflen,
- int *errnop)
-{
- int ret;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- *errnop = 0;
-
- if (_ldb_nss_ctx->pw_cur >= _ldb_nss_ctx->pw_res->count) {
- /* already returned all entries */
- return NSS_STATUS_NOTFOUND;
- }
-
- ret = _ldb_nss_fill_passwd(result_buf,
- buffer,
- buflen,
- errnop,
- _ldb_nss_ctx->pw_res->msgs[_ldb_nss_ctx->pw_cur]);
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- _ldb_nss_ctx->pw_cur++;
-
- return NSS_STATUS_SUCCESS;
-}
-
-NSS_STATUS _nss_ldb_getpwuid_r(uid_t uid, struct passwd *result_buf, char *buffer, size_t buflen, int *errnop)
-{
- int ret;
- char *filter;
- struct ldb_result *res;
-
- if (uid == 0) { /* we don't serve root uid by policy */
- *errnop = errno = ENOENT;
- return NSS_STATUS_NOTFOUND;
- }
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- /* build the filter for this uid */
- filter = talloc_asprintf(_ldb_nss_ctx, _LDB_NSS_PWUID_FILTER, uid);
- if (filter == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOMEM;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* search the entry */
- ret = ldb_search(_ldb_nss_ctx->ldb,
- _ldb_nss_ctx->base,
- LDB_SCOPE_SUBTREE,
- filter,
- _ldb_nss_pw_attrs,
- &res);
- if (ret != LDB_SUCCESS) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* if none found return */
- if (res->count == 0) {
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_NOTFOUND;
- goto done;
- }
-
- if (res->count != 1) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* fill in the passwd struct */
- ret = _ldb_nss_fill_passwd(result_buf,
- buffer,
- buflen,
- errnop,
- res->msgs[0]);
-
-done:
- talloc_free(filter);
- talloc_free(res);
- return ret;
-}
-
-NSS_STATUS _nss_ldb_getpwnam_r(const char *name, struct passwd *result_buf, char *buffer, size_t buflen, int *errnop)
-{
- int ret;
- char *filter;
- struct ldb_result *res;
-
- ret = _ldb_nss_init();
- if (ret != NSS_STATUS_SUCCESS) {
- return ret;
- }
-
- /* build the filter for this name */
- filter = talloc_asprintf(_ldb_nss_ctx, _LDB_NSS_PWNAM_FILTER, name);
- if (filter == NULL) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* search the entry */
- ret = ldb_search(_ldb_nss_ctx->ldb,
- _ldb_nss_ctx->base,
- LDB_SCOPE_SUBTREE,
- filter,
- _ldb_nss_pw_attrs,
- &res);
- if (ret != LDB_SUCCESS) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* if none found return */
- if (res->count == 0) {
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_NOTFOUND;
- goto done;
- }
-
- if (res->count != 1) {
- /* this is a fatal error */
- *errnop = errno = ENOENT;
- ret = NSS_STATUS_UNAVAIL;
- goto done;
- }
-
- /* fill in the passwd struct */
- ret = _ldb_nss_fill_passwd(result_buf,
- buffer,
- buflen,
- errnop,
- res->msgs[0]);
-
-done:
- talloc_free(filter);
- talloc_free(res);
- return ret;
-}
-
diff --git a/source/lib/ldb/samba/README b/source/lib/ldb/samba/README
deleted file mode 100644
index 3fa47159ca9..00000000000
--- a/source/lib/ldb/samba/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory contains Samba specific extensions to ldb. It also
-serves as example code on how to extend ldb for your own application.
-
-The main extension Samba uses is to provide ldif encode/decode
-routines for specific attributes, so users can get nice pretty
-printing of attributes in ldbedit, while the attributes are stored in
-the standard NDR format in the database.
diff --git a/source/lib/ldb/samba/ldif_handlers.c b/source/lib/ldb/samba/ldif_handlers.c
deleted file mode 100644
index 8abfb872382..00000000000
--- a/source/lib/ldb/samba/ldif_handlers.c
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- ldb database library - ldif handlers for Samba
-
- Copyright (C) Andrew Tridgell 2005
- Copyright (C) Andrew Bartlett 2006
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-#include "librpc/gen_ndr/ndr_security.h"
-#include "librpc/gen_ndr/ndr_misc.h"
-#include "dsdb/samdb/samdb.h"
-#include "libcli/security/security.h"
-
-/*
- convert a ldif formatted objectSid to a NDR formatted blob
-*/
-static int ldif_read_objectSid(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct dom_sid *sid;
- NTSTATUS status;
- sid = dom_sid_parse_talloc(mem_ctx, (const char *)in->data);
- if (sid == NULL) {
- return -1;
- }
- status = ndr_push_struct_blob(out, mem_ctx, sid,
- (ndr_push_flags_fn_t)ndr_push_dom_sid);
- talloc_free(sid);
- if (!NT_STATUS_IS_OK(status)) {
- return -1;
- }
- return 0;
-}
-
-/*
- convert a NDR formatted blob to a ldif formatted objectSid
-*/
-static int ldif_write_objectSid(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct dom_sid *sid;
- NTSTATUS status;
- sid = talloc(mem_ctx, struct dom_sid);
- if (sid == NULL) {
- return -1;
- }
- status = ndr_pull_struct_blob(in, sid, sid,
- (ndr_pull_flags_fn_t)ndr_pull_dom_sid);
- if (!NT_STATUS_IS_OK(status)) {
- talloc_free(sid);
- return -1;
- }
- out->data = (uint8_t *)dom_sid_string(mem_ctx, sid);
- talloc_free(sid);
- if (out->data == NULL) {
- return -1;
- }
- out->length = strlen((const char *)out->data);
- return 0;
-}
-
-static BOOL ldb_comparision_objectSid_isString(const struct ldb_val *v)
-{
- if (v->length < 3) {
- return False;
- }
-
- if (strncmp("S-", (const char *)v->data, 2) != 0) return False;
-
- return True;
-}
-
-/*
- compare two objectSids
-*/
-static int ldb_comparison_objectSid(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- if (ldb_comparision_objectSid_isString(v1) && ldb_comparision_objectSid_isString(v2)) {
- return strcmp((const char *)v1->data, (const char *)v2->data);
- } else if (ldb_comparision_objectSid_isString(v1)
- && !ldb_comparision_objectSid_isString(v2)) {
- struct ldb_val v;
- int ret;
- if (ldif_read_objectSid(ldb, mem_ctx, v1, &v) != 0) {
- return -1;
- }
- ret = ldb_comparison_binary(ldb, mem_ctx, &v, v2);
- talloc_free(v.data);
- return ret;
- } else if (!ldb_comparision_objectSid_isString(v1)
- && ldb_comparision_objectSid_isString(v2)) {
- struct ldb_val v;
- int ret;
- if (ldif_read_objectSid(ldb, mem_ctx, v2, &v) != 0) {
- return -1;
- }
- ret = ldb_comparison_binary(ldb, mem_ctx, v1, &v);
- talloc_free(v.data);
- return ret;
- }
- return ldb_comparison_binary(ldb, mem_ctx, v1, v2);
-}
-
-/*
- canonicalise a objectSid
-*/
-static int ldb_canonicalise_objectSid(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- if (ldb_comparision_objectSid_isString(in)) {
- return ldif_read_objectSid(ldb, mem_ctx, in, out);
- }
- return ldb_handler_copy(ldb, mem_ctx, in, out);
-}
-
-/*
- convert a ldif formatted objectGUID to a NDR formatted blob
-*/
-static int ldif_read_objectGUID(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct GUID guid;
- NTSTATUS status;
-
- status = GUID_from_string((const char *)in->data, &guid);
- if (!NT_STATUS_IS_OK(status)) {
- return -1;
- }
-
- status = ndr_push_struct_blob(out, mem_ctx, &guid,
- (ndr_push_flags_fn_t)ndr_push_GUID);
- if (!NT_STATUS_IS_OK(status)) {
- return -1;
- }
- return 0;
-}
-
-/*
- convert a NDR formatted blob to a ldif formatted objectGUID
-*/
-static int ldif_write_objectGUID(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct GUID guid;
- NTSTATUS status;
- status = ndr_pull_struct_blob(in, mem_ctx, &guid,
- (ndr_pull_flags_fn_t)ndr_pull_GUID);
- if (!NT_STATUS_IS_OK(status)) {
- return -1;
- }
- out->data = (uint8_t *)GUID_string(mem_ctx, &guid);
- if (out->data == NULL) {
- return -1;
- }
- out->length = strlen((const char *)out->data);
- return 0;
-}
-
-static BOOL ldb_comparision_objectGUID_isString(const struct ldb_val *v)
-{
- struct GUID guid;
- NTSTATUS status;
-
- if (v->length < 33) return False;
-
- /* see if the input if null-terninated (safety check for the below) */
- if (v->data[v->length] != '\0') return False;
-
- status = GUID_from_string((const char *)v->data, &guid);
- if (!NT_STATUS_IS_OK(status)) {
- return False;
- }
-
- return True;
-}
-
-/*
- compare two objectGUIDs
-*/
-static int ldb_comparison_objectGUID(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1, const struct ldb_val *v2)
-{
- if (ldb_comparision_objectGUID_isString(v1) && ldb_comparision_objectGUID_isString(v2)) {
- return strcmp((const char *)v1->data, (const char *)v2->data);
- } else if (ldb_comparision_objectGUID_isString(v1)
- && !ldb_comparision_objectGUID_isString(v2)) {
- struct ldb_val v;
- int ret;
- if (ldif_read_objectGUID(ldb, mem_ctx, v1, &v) != 0) {
- return -1;
- }
- ret = ldb_comparison_binary(ldb, mem_ctx, &v, v2);
- talloc_free(v.data);
- return ret;
- } else if (!ldb_comparision_objectGUID_isString(v1)
- && ldb_comparision_objectGUID_isString(v2)) {
- struct ldb_val v;
- int ret;
- if (ldif_read_objectGUID(ldb, mem_ctx, v2, &v) != 0) {
- return -1;
- }
- ret = ldb_comparison_binary(ldb, mem_ctx, v1, &v);
- talloc_free(v.data);
- return ret;
- }
- return ldb_comparison_binary(ldb, mem_ctx, v1, v2);
-}
-
-/*
- canonicalise a objectGUID
-*/
-static int ldb_canonicalise_objectGUID(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- if (ldb_comparision_objectGUID_isString(in)) {
- return ldif_read_objectGUID(ldb, mem_ctx, in, out);
- }
- return ldb_handler_copy(ldb, mem_ctx, in, out);
-}
-
-
-/*
- convert a ldif (SDDL) formatted ntSecurityDescriptor to a NDR formatted blob
-*/
-static int ldif_read_ntSecurityDescriptor(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct security_descriptor *sd;
- NTSTATUS status;
-
- sd = sddl_decode(mem_ctx, (const char *)in->data, NULL);
- if (sd == NULL) {
- return -1;
- }
- status = ndr_push_struct_blob(out, mem_ctx, sd,
- (ndr_push_flags_fn_t)ndr_push_security_descriptor);
- talloc_free(sd);
- if (!NT_STATUS_IS_OK(status)) {
- return -1;
- }
- return 0;
-}
-
-/*
- convert a NDR formatted blob to a ldif formatted ntSecurityDescriptor (SDDL format)
-*/
-static int ldif_write_ntSecurityDescriptor(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct security_descriptor *sd;
- NTSTATUS status;
-
- sd = talloc(mem_ctx, struct security_descriptor);
- if (sd == NULL) {
- return -1;
- }
- status = ndr_pull_struct_blob(in, sd, sd,
- (ndr_pull_flags_fn_t)ndr_pull_security_descriptor);
- if (!NT_STATUS_IS_OK(status)) {
- talloc_free(sd);
- return -1;
- }
- out->data = (uint8_t *)sddl_encode(mem_ctx, sd, NULL);
- talloc_free(sd);
- if (out->data == NULL) {
- return -1;
- }
- out->length = strlen((const char *)out->data);
- return 0;
-}
-
-/*
- canonicolise an objectCategory. We use the short form as the cannoical form:
- cn=Person,cn=Schema,cn=Configuration,<basedn> becomes 'person'
-*/
-
-static int ldif_canonicalise_objectCategory(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *in, struct ldb_val *out)
-{
- struct ldb_dn *dn1 = NULL;
- char *oc1, *oc2;
-
- dn1 = ldb_dn_explode(mem_ctx, (char *)in->data);
- if (dn1 == NULL) {
- oc1 = talloc_strndup(mem_ctx, (char *)in->data, in->length);
- } else if (ldb_dn_get_comp_num(dn1) >= 1 && strcasecmp(ldb_dn_get_rdn_name(dn1), "cn") == 0) {
- const struct ldb_val *val = ldb_dn_get_rdn_val(dn1);
- oc1 = talloc_strndup(mem_ctx, (char *)val->data, val->length);
- } else {
- return -1;
- }
-
- oc2 = ldb_casefold(ldb, mem_ctx, oc1);
- out->data = (void *)oc2;
- out->length = strlen(oc2);
- talloc_free(oc1);
- talloc_free(dn1);
- return 0;
-}
-
-static int ldif_comparison_objectCategory(struct ldb_context *ldb, void *mem_ctx,
- const struct ldb_val *v1,
- const struct ldb_val *v2)
-{
- struct ldb_dn *dn1 = NULL, *dn2 = NULL;
- const char *oc1, *oc2;
-
- dn1 = ldb_dn_explode(mem_ctx, (char *)v1->data);
- if (dn1 == NULL) {
- oc1 = talloc_strndup(mem_ctx, (char *)v1->data, v1->length);
- } else if (ldb_dn_get_comp_num(dn1) >= 1 && strcasecmp(ldb_dn_get_rdn_name(dn1), "cn") == 0) {
- const struct ldb_val *val = ldb_dn_get_rdn_val(dn1);
- oc1 = talloc_strndup(mem_ctx, (char *)val->data, val->length);
- } else {
- oc1 = NULL;
- }
-
- dn2 = ldb_dn_explode(mem_ctx, (char *)v2->data);
- if (dn2 == NULL) {
- oc2 = talloc_strndup(mem_ctx, (char *)v2->data, v2->length);
- } else if (ldb_dn_get_comp_num(dn2) >= 2 && strcasecmp(ldb_dn_get_rdn_name(dn2), "cn") == 0) {
- const struct ldb_val *val = ldb_dn_get_rdn_val(dn2);
- oc2 = talloc_strndup(mem_ctx, (char *)val->data, val->length);
- } else {
- oc2 = NULL;
- }
-
- oc1 = ldb_casefold(ldb, mem_ctx, oc1);
- oc2 = ldb_casefold(ldb, mem_ctx, oc2);
- if (!oc1 && oc2) {
- return -1;
- }
- if (oc1 && !oc2) {
- return 1;
- }
- if (!oc1 && !oc2) {
- return -1;
- }
-
- return strcmp(oc1, oc2);
-}
-
-static const struct ldb_attrib_handler samba_handlers[] = {
- {
- .attr = "objectSid",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectSid,
- .ldif_write_fn = ldif_write_objectSid,
- .canonicalise_fn = ldb_canonicalise_objectSid,
- .comparison_fn = ldb_comparison_objectSid
- },
- {
- .attr = "securityIdentifier",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectSid,
- .ldif_write_fn = ldif_write_objectSid,
- .canonicalise_fn = ldb_canonicalise_objectSid,
- .comparison_fn = ldb_comparison_objectSid
- },
- {
- .attr = "ntSecurityDescriptor",
- .flags = 0,
- .ldif_read_fn = ldif_read_ntSecurityDescriptor,
- .ldif_write_fn = ldif_write_ntSecurityDescriptor,
- .canonicalise_fn = ldb_handler_copy,
- .comparison_fn = ldb_comparison_binary
- },
- {
- .attr = "objectGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "invocationId",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "schemaIDGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "attributeSecurityGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "parentGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "siteGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "pKTGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "fRSVersionGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "fRSReplicaSetGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "netbootGUID",
- .flags = 0,
- .ldif_read_fn = ldif_read_objectGUID,
- .ldif_write_fn = ldif_write_objectGUID,
- .canonicalise_fn = ldb_canonicalise_objectGUID,
- .comparison_fn = ldb_comparison_objectGUID
- },
- {
- .attr = "objectCategory",
- .flags = 0,
- .ldif_read_fn = ldb_handler_copy,
- .ldif_write_fn = ldb_handler_copy,
- .canonicalise_fn = ldif_canonicalise_objectCategory,
- .comparison_fn = ldif_comparison_objectCategory,
- }
-};
-
-/*
- register the samba ldif handlers
-*/
-int ldb_register_samba_handlers(struct ldb_context *ldb)
-{
- return ldb_set_attrib_handlers(ldb, samba_handlers, ARRAY_SIZE(samba_handlers));
-}
diff --git a/source/lib/ldb/sqlite3.m4 b/source/lib/ldb/sqlite3.m4
deleted file mode 100644
index d0a74ee53cc..00000000000
--- a/source/lib/ldb/sqlite3.m4
+++ /dev/null
@@ -1,62 +0,0 @@
-########################################################
-# Compile with SQLITE3 support?
-
-SQLITE3_LIBS=""
-with_sqlite3_support=no
-AC_MSG_CHECKING([for SQLITE3 support])
-
-AC_ARG_WITH(sqlite3,
-AS_HELP_STRING([--with-sqlite3],[SQLITE3 backend support (default=no)]),
-[ case "$withval" in
- yes|no|auto)
- with_sqlite3_support=$withval
- ;;
- esac ])
-
-AC_MSG_RESULT($with_sqlite3_support)
-
-if test x"$with_sqlite3_support" != x"no"; then
- ##################################################################
- # first test for sqlite3.h
- AC_CHECK_HEADERS(sqlite3.h)
-
- if test x"$ac_cv_header_sqlite3_h" != x"yes"; then
- if test x"$with_sqlite3_support" = x"yes"; then
- AC_MSG_ERROR(sqlite3.h is needed for SQLITE3 support)
- else
- AC_MSG_WARN(sqlite3.h is needed for SQLITE3 support)
- fi
-
- with_sqlite3_support=no
- fi
-fi
-
-if test x"$with_sqlite3_support" != x"no"; then
- ac_save_LIBS=$LIBS
-
- ########################################################
- # now see if we can find the sqlite3 libs in standard paths
- AC_CHECK_LIB_EXT(sqlite3, SQLITE3_LIBS, sqlite3_open)
-
- if test x"$ac_cv_lib_ext_sqlite3_sqlite3_open" = x"yes"; then
- AC_DEFINE(HAVE_SQLITE3,1,[Whether sqlite3 is available])
- AC_DEFINE(HAVE_LDB_SQLITE3,1,[Whether ldb_sqlite3 is available])
- AC_MSG_CHECKING(whether SQLITE3 support is used)
- AC_MSG_RESULT(yes)
- with_sqlite3_support=yes
- SMB_ENABLE(SQLITE3,YES)
- else
- if test x"$with_sqlite3_support" = x"yes"; then
- AC_MSG_ERROR(libsqlite3 is needed for SQLITE3 support)
- else
- AC_MSG_WARN(libsqlite3 is needed for SQLITE3 support)
- fi
-
- SQLITE3_LIBS=""
- with_sqlite3_support=no
- fi
-
- LIBS=$ac_save_LIBS;
-fi
-
-SMB_EXT_LIB(SQLITE3,[${SQLITE3_LIBS}],[${SQLITE3_CFLAGS}],[${SQLITE3_CPPFLAGS}],[${SQLITE3_LDFLAGS}])
diff --git a/source/lib/ldb/standalone.sh b/source/lib/ldb/standalone.sh
deleted file mode 100755
index fa1b9bafe3b..00000000000
--- a/source/lib/ldb/standalone.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-cd ../replace
-make clean
-
-cd ../talloc
-make clean
-
-cd ../tdb
-make clean
-
-cd ../ldb
-make clean
-
-./autogen.sh
-
-rm -fr build
-mkdir build
-cd build
-
-../configure $*
-make dirs
-make all
-
-cd ..
diff --git a/source/lib/ldb/swig/Ldb.py b/source/lib/ldb/swig/Ldb.py
deleted file mode 100644
index c7e6191c8a6..00000000000
--- a/source/lib/ldb/swig/Ldb.py
+++ /dev/null
@@ -1,179 +0,0 @@
-"""Provide a more Pythonic and object-oriented interface to ldb."""
-
-#
-# Swig interface to Samba
-#
-# Copyright (C) Tim Potter 2006
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-
-#
-# Interface notes:
-#
-# - should an empty dn be represented as None, or an empty string?
-#
-# - should single-valued attributes be a string, or a list with one
-# element?
-#
-
-from ldb import *
-
-# Global initialisation
-
-result = ldb_global_init()
-
-if result != 0:
- raise LdbError, (result, 'ldb_global_init failed')
-
-# Ldb exceptions
-
-class LdbError(Exception):
- """An exception raised when a ldb error occurs.
- The exception data is a tuple consisting of the ldb number and a
- string description of the error."""
- pass
-
-# Ldb classes
-
-class LdbMessage:
- """A class representing a ldb message as a Python dictionary."""
-
- def __init__(self):
- self.mem_ctx = talloc_init(None)
- self.msg = ldb_msg_new(self.mem_ctx)
-
- def __del__(self):
- if self.mem_ctx is not None:
- talloc_free(self.mem_ctx)
- self.mem_ctx = None
- self.msg = None
-
- # Make the dn attribute of the object dynamic
-
- def __getattr__(self, attr):
- if attr == 'dn':
- return ldb_dn_linearize(None, self.msg.dn)
- return self.__dict__[attr]
-
- def __setattr__(self, attr, value):
- if attr == 'dn':
- self.msg.dn = ldb_dn_explode(self.msg, value)
- if self.msg.dn == None:
- err = LDB_ERR_INVALID_DN_SYNTAX
- raise LdbError(err, ldb_strerror(err))
- return
- self.__dict__[attr] = value
-
- # Get and set individual elements
-
- def __getitem__(self, key):
-
- elt = ldb_msg_find_element(self.msg, key)
-
- if elt is None:
- raise KeyError, "No such attribute '%s'" % key
-
- return [ldb_val_array_getitem(elt.values, i)
- for i in range(elt.num_values)]
-
- def __setitem__(self, key, value):
- ldb_msg_remove_attr(self.msg, key)
- if type(value) in (list, tuple):
- [ldb_msg_add_value(self.msg, key, v) for v in value]
- else:
- ldb_msg_add_value(self.msg, key, value)
-
- # Dictionary interface
- # TODO: move to iterator based interface
-
- def len(self):
- return self.msg.num_elements
-
- def keys(self):
- return [ldb_message_element_array_getitem(self.msg.elements, i).name
- for i in range(self.msg.num_elements)]
-
- def values(self):
- return [self[k] for k in self.keys()]
-
- def items(self):
- return [(k, self[k]) for k in self.keys()]
-
- # Misc stuff
-
- def sanity_check(self):
- return ldb_msg_sanity_check(self.msg)
-
-class Ldb:
- """A class representing a binding to a ldb file."""
-
- def __init__(self, url, flags = 0):
- """Initialise underlying ldb."""
-
- self.mem_ctx = talloc_init('mem_ctx for ldb 0x%x' % id(self))
- self.ldb_ctx = ldb_init(self.mem_ctx)
-
- result = ldb_connect(self.ldb_ctx, url, flags, None)
-
- if result != LDB_SUCCESS:
- raise LdbError, (result, ldb_strerror(result))
-
- def __del__(self):
- """Called when the object is to be garbage collected."""
- self.close()
-
- def close(self):
- """Close down a ldb."""
- if self.mem_ctx is not None:
- talloc_free(self.mem_ctx)
- self.mem_ctx = None
- self.ldb_ctx = None
-
- def _ldb_call(self, fn, *args):
- """Call a ldb function with args. Raise a LdbError exception
- if the function returns a non-zero return value."""
-
- result = fn(*args)
-
- if result != LDB_SUCCESS:
- raise LdbError, (result, ldb_strerror(result))
-
- def search(self, expression):
- """Search a ldb for a given expression."""
-
- self._ldb_call(ldb_search, self.ldb_ctx, None, LDB_SCOPE_DEFAULT,
- expression, None);
-
- return [LdbMessage(ldb_message_ptr_array_getitem(result.msgs, ndx))
- for ndx in range(result.count)]
-
- def delete(self, dn):
- """Delete a dn."""
-
- _dn = ldb_dn_explode(self.ldb_ctx, dn)
-
- self._ldb_call(ldb_delete, self.ldb_ctx, _dn)
-
- def rename(self, olddn, newdn):
- """Rename a dn."""
-
- _olddn = ldb_dn_explode(self.ldb_ctx, olddn)
- _newdn = ldb_dn_explode(self.ldb_ctx, newdn)
-
- self._ldb_call(ldb_rename, self.ldb_ctx, _olddn, _newdn)
-
- def add(self, m):
- self._ldb_call(ldb_add, self.ldb_ctx, m.msg)
diff --git a/source/lib/ldb/swig/ldb.i b/source/lib/ldb/swig/ldb.i
deleted file mode 100644
index 09d3461c2a9..00000000000
--- a/source/lib/ldb/swig/ldb.i
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- Swig interface to ldb.
-
- Copyright (C) 2005,2006 Tim Potter <tpot@samba.org>
- Copyright (C) 2006 Simo Sorce <idra@samba.org>
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-%module ldb
-
-%{
-
-/* Some typedefs to help swig along */
-
-typedef unsigned char uint8_t;
-typedef unsigned long long uint64_t;
-typedef long long int64_t;
-
-/* Include headers */
-
-#include "lib/ldb/include/ldb.h"
-#include "lib/talloc/talloc.h"
-
-%}
-
-%include "carrays.i"
-%include "exception.i"
-
-/*
- * Constants
- */
-
-#define LDB_SUCCESS 0
-#define LDB_ERR_OPERATIONS_ERROR 1
-#define LDB_ERR_PROTOCOL_ERROR 2
-#define LDB_ERR_TIME_LIMIT_EXCEEDED 3
-#define LDB_ERR_SIZE_LIMIT_EXCEEDED 4
-#define LDB_ERR_COMPARE_FALSE 5
-#define LDB_ERR_COMPARE_TRUE 6
-#define LDB_ERR_AUTH_METHOD_NOT_SUPPORTED 7
-#define LDB_ERR_STRONG_AUTH_REQUIRED 8
-/* 9 RESERVED */
-#define LDB_ERR_REFERRAL 10
-#define LDB_ERR_ADMIN_LIMIT_EXCEEDED 11
-#define LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION 12
-#define LDB_ERR_CONFIDENTIALITY_REQUIRED 13
-#define LDB_ERR_SASL_BIND_IN_PROGRESS 14
-#define LDB_ERR_NO_SUCH_ATTRIBUTE 16
-#define LDB_ERR_UNDEFINED_ATTRIBUTE_TYPE 17
-#define LDB_ERR_INAPPROPRIATE_MATCHING 18
-#define LDB_ERR_CONSTRAINT_VIOLATION 19
-#define LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS 20
-#define LDB_ERR_INVALID_ATTRIBUTE_SYNTAX 21
-/* 22-31 unused */
-#define LDB_ERR_NO_SUCH_OBJECT 32
-#define LDB_ERR_ALIAS_PROBLEM 33
-#define LDB_ERR_INVALID_DN_SYNTAX 34
-/* 35 RESERVED */
-#define LDB_ERR_ALIAS_DEREFERENCING_PROBLEM 36
-/* 37-47 unused */
-#define LDB_ERR_INAPPROPRIATE_AUTHENTICATION 48
-#define LDB_ERR_INVALID_CREDENTIALS 49
-#define LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS 50
-#define LDB_ERR_BUSY 51
-#define LDB_ERR_UNAVAILABLE 52
-#define LDB_ERR_UNWILLING_TO_PERFORM 53
-#define LDB_ERR_LOOP_DETECT 54
-/* 55-63 unused */
-#define LDB_ERR_NAMING_VIOLATION 64
-#define LDB_ERR_OBJECT_CLASS_VIOLATION 65
-#define LDB_ERR_NOT_ALLOWED_ON_NON_LEAF 66
-#define LDB_ERR_NOT_ALLOWED_ON_RDN 67
-#define LDB_ERR_ENTRY_ALREADY_EXISTS 68
-#define LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED 69
-/* 70 RESERVED FOR CLDAP */
-#define LDB_ERR_AFFECTS_MULTIPLE_DSAS 71
-/* 72-79 unused */
-#define LDB_ERR_OTHER 80
-
-enum ldb_scope {LDB_SCOPE_DEFAULT=-1,
- LDB_SCOPE_BASE=0,
- LDB_SCOPE_ONELEVEL=1,
- LDB_SCOPE_SUBTREE=2};
-
-/*
- * Wrap struct ldb_context
- */
-
-/* The ldb functions will crash if a NULL ldb context is passed so
- catch this before it happens. */
-
-%typemap(check) struct ldb_context* {
- if ($1 == NULL)
- SWIG_exception(SWIG_ValueError,
- "ldb context must be non-NULL");
-}
-
-/*
- * Wrap a small bit of talloc
- */
-
-/* Use talloc_init() to create a parameter to pass to ldb_init(). Don't
- forget to free it using talloc_free() afterwards. */
-
-TALLOC_CTX *talloc_init(char *name);
-int talloc_free(TALLOC_CTX *ptr);
-
-/*
- * Wrap struct ldb_val
- */
-
-%typemap(in) struct ldb_val *INPUT (struct ldb_val temp) {
- $1 = &temp;
- if (!PyString_Check($input)) {
- PyErr_SetString(PyExc_TypeError, "string arg expected");
- return NULL;
- }
- $1->length = PyString_Size($input);
- $1->data = PyString_AsString($input);
-}
-
-%typemap(out) struct ldb_val {
- $result = PyString_FromStringAndSize($1.data, $1.length);
-}
-
-/*
- * Wrap struct ldb_result
- */
-
-%typemap(in, numinputs=0) struct ldb_result **OUT (struct ldb_result *temp_ldb_result) {
- $1 = &temp_ldb_result;
-}
-
-%typemap(argout) struct ldb_result ** {
- resultobj = SWIG_NewPointerObj(*$1, SWIGTYPE_p_ldb_result, 0);
-}
-
-%types(struct ldb_result *);
-
-/*
- * Wrap struct ldb_message_element
- */
-
-%array_functions(struct ldb_val, ldb_val_array);
-
-struct ldb_message_element {
- unsigned int flags;
- const char *name;
- unsigned int num_values;
- struct ldb_val *values;
-};
-
-/*
- * Wrap struct ldb_message
- */
-
-%array_functions(struct ldb_message_element, ldb_message_element_array);
-
-struct ldb_message {
- struct ldb_dn *dn;
- unsigned int num_elements;
- struct ldb_message_element *elements;
- void *private_data;
-};
-
-/*
- * Wrap struct ldb_result
- */
-
-%array_functions(struct ldb_message *, ldb_message_ptr_array);
-
-struct ldb_result {
- unsigned int count;
- struct ldb_message **msgs;
- char **refs;
- struct ldb_control **controls;
-};
-
-/*
- * Wrap ldb functions
- */
-
-/* Initialisation */
-
-int ldb_global_init(void);
-struct ldb_context *ldb_init(TALLOC_CTX *mem_ctx);
-
-/* Error handling */
-
-const char *ldb_errstring(struct ldb_context *ldb);
-const char *ldb_strerror(int ldb_err);
-
-/* Top-level ldb operations */
-
-int ldb_connect(struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[]);
-
-int ldb_search(struct ldb_context *ldb, const struct ldb_dn *base, enum ldb_scope scope, const char *expression, const char * const *attrs, struct ldb_result **OUT);
-
-int ldb_delete(struct ldb_context *ldb, const struct ldb_dn *dn);
-
-int ldb_rename(struct ldb_context *ldb, const struct ldb_dn *olddn, const struct ldb_dn *newdn);
-
-int ldb_add(struct ldb_context *ldb, const struct ldb_message *message);
-
-/* Ldb message operations */
-
-struct ldb_message *ldb_msg_new(void *mem_ctx);
-
-struct ldb_message_element *ldb_msg_find_element(const struct ldb_message *msg, const char *attr_name);
-
-int ldb_msg_add_value(struct ldb_message *msg, const char *attr_name, const struct ldb_val *INPUT);
-
-void ldb_msg_remove_attr(struct ldb_message *msg, const char *attr);
-
-int ldb_msg_sanity_check(struct ldb_message *msg);
-
-/* DN operations */
-
-struct ldb_dn *ldb_dn_explode(void *mem_ctx, const char *dn);
-
-char *ldb_dn_linearize(void *mem_ctx, const struct ldb_dn *dn);
diff --git a/source/lib/ldb/tests/init.ldif b/source/lib/ldb/tests/init.ldif
deleted file mode 100644
index 2e0b83c7695..00000000000
--- a/source/lib/ldb/tests/init.ldif
+++ /dev/null
@@ -1,40 +0,0 @@
-dn: o=University of Michigan,c=TEST
-objectclass: organization
-objectclass: domainRelatedObject
-l: Ann Arbor, Michigan
-st: Michigan
-o: University of Michigan
-o: UMICH
-o: UM
-o: U-M
-o: U of M
-description: The University of Michigan at Ann Arbor
-seeAlso:
-postaladdress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
- 09 $ US
-telephonenumber: +1 313 764-1817
-associateddomain: example.com
-
-dn: ou=People,o=University of Michigan,c=TEST
-objectclass: organizationalUnit
-objectclass: extensibleObject
-ou: People
-uidNumber: 0
-gidNumber: 0
-
-dn: ou=Ldb Test,ou=People,o=University of Michigan,c=TEST
-objectclass: organizationalUnit
-objectclass: extensibleObject
-ou: People
-ou: Ldb Test
-uidNumber: 0
-gidNumber: 0
-
-dn: ou=LdbTspace,ou=People,o=University of Michigan,c=TEST
-objectclass: organizationalUnit
-objectclass: extensibleObject
-ou: People
-ou: LdbTspace
-description: test white space removal in comparisons
-uidNumber: 0
-gidNumber: 0
diff --git a/source/lib/ldb/tests/init_slapd.sh b/source/lib/ldb/tests/init_slapd.sh
deleted file mode 100755
index cf06acd08b9..00000000000
--- a/source/lib/ldb/tests/init_slapd.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-
-if [ -z "$LDBDIR" ]; then
- LDBDIR=`dirname $0`/..
- export LDBDIR
-fi
-
-rm -rf tests/tmp/db
-mkdir -p tests/tmp/db
-
-if [ -f tests/tmp/slapd.pid ]; then
- kill `cat tests/tmp/slapd.pid`
- sleep 1
-fi
-if [ -f tests/tmp/slapd.pid ]; then
- kill -9 `cat tests/tmp/slapd.pid`
- rm -f tests/tmp/slapd.pid
-fi
-
-# we don't consider a slapadd failure as a test suite failure, as it
-# has nothing to do with ldb
-
-MODCONF=tests/tmp/modules.conf
-rm -f $MODCONF
-touch $MODCONF || exit 1
-
-slaptest -u -f $LDBDIR/tests/slapd.conf > /dev/null 2>&1 || {
- echo "enabling sladp modules"
-cat > $MODCONF <<EOF
-modulepath /usr/lib/ldap
-moduleload back_bdb
-EOF
-}
-
-slaptest -u -f $LDBDIR/tests/slapd.conf || {
- echo "slaptest failed - skipping ldap tests"
- exit 0
-}
-
-slapadd -f $LDBDIR/tests/slapd.conf < $LDBDIR/tests/init.ldif || exit 0
-
diff --git a/source/lib/ldb/tests/kill_slapd.sh b/source/lib/ldb/tests/kill_slapd.sh
deleted file mode 100755
index 91beb108149..00000000000
--- a/source/lib/ldb/tests/kill_slapd.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-if [ -z "$LDBDIR" ]; then
- LDBDIR=`dirname $0`/..
- export LDBDIR
-fi
-
-if [ -f tests/tmp/slapd.pid ]; then
- echo "killing slapd process `cat tests/tmp/slapd.pid`"
- kill -9 `cat tests/tmp/slapd.pid`
- rm -f tests/tmp/slapd.pid
-fi
diff --git a/source/lib/ldb/tests/ldapi_url.sh b/source/lib/ldb/tests/ldapi_url.sh
deleted file mode 100755
index fef6c35f2be..00000000000
--- a/source/lib/ldb/tests/ldapi_url.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# aargh, did LDAP ever have to expose this crap to users ...
-
-BASE=`pwd`
-
-TMPDIR=$BASE/tests/tmp
-
-LDAPI_ESCAPE=`echo $TMPDIR/ldapi | sed 's|/|%2F|g'`
-
-echo "ldapi://$LDAPI_ESCAPE"
diff --git a/source/lib/ldb/tests/photo.ldif b/source/lib/ldb/tests/photo.ldif
deleted file mode 100644
index 28981b1f24b..00000000000
--- a/source/lib/ldb/tests/photo.ldif
+++ /dev/null
@@ -1,5 +0,0 @@
-dn: cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST
-changetype: modify
-add: jpegPhoto
-jpegPhoto:< file://tests/tmp/samba4.png
-
diff --git a/source/lib/ldb/tests/samba4.png b/source/lib/ldb/tests/samba4.png
deleted file mode 100644
index c8096889a67..00000000000
--- a/source/lib/ldb/tests/samba4.png
+++ /dev/null
Binary files differ
diff --git a/source/lib/ldb/tests/schema-tests/schema-add-test.ldif b/source/lib/ldb/tests/schema-tests/schema-add-test.ldif
deleted file mode 100644
index 997b801d840..00000000000
--- a/source/lib/ldb/tests/schema-tests/schema-add-test.ldif
+++ /dev/null
@@ -1,66 +0,0 @@
-dn: CN=Users,DC=schema,DC=test
-objectClass: top
-objectClass: container
-cn: Users
-description: Default container for upgraded user accounts
-instanceType: 4
-whenCreated: 20050116175504.0Z
-whenChanged: 20050116175504.0Z
-uSNCreated: 1
-uSNChanged: 1
-showInAdvancedViewOnly: FALSE
-name: Users
-objectGUID: b847056a-9934-d87b-8a1a-99fabe0863c8
-systemFlags: 0x8c000000
-objectCategory: CN=Container,CN=Schema,CN=Configuration,DC=schema,DC=test
-isCriticalSystemObject: TRUE
-nTSecurityDescriptor: foo
-
-dn: CN=Administrator,CN=Users,DC=schema,DC=test
-objectClass: top
-objectClass: person
-objectClass: organizationalPerson
-objectClass: user
-cn: Administrator
-description: Built-in account for administering the computer/domain
-instanceType: 4
-whenCreated: 20050116175504.0Z
-whenChanged: 20050116175504.0Z
-uSNCreated: 1
-memberOf: CN=Group Policy Creator Owners,CN=Users,DC=schema,DC=test
-memberOf: CN=Domain Admins,CN=Users,DC=schema,DC=test
-memberOf: CN=Enterprise Admins,CN=Users,DC=schema,DC=test
-memberOf: CN=Schema Admins,CN=Users,DC=schema,DC=test
-memberOf: CN=Administrators,CN=Builtin,DC=schema,DC=test
-uSNChanged: 1
-name: Administrator
-objectGUID: 6c02f98c-46c6-aa38-5f13-a510cac04e6c
-userAccountControl: 0x10200
-badPwdCount: 0
-codePage: 0
-countryCode: 0
-badPasswordTime: 0
-lastLogoff: 0
-lastLogon: 0
-pwdLastSet: 0
-primaryGroupID: 513
-objectSid: S-1-5-21-43662522-77495566-38969261-500
-adminCount: 1
-accountExpires: -1
-logonCount: 0
-sAMAccountName: Administrator
-sAMAccountType: 0x30000000
-objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=schema,DC=test
-isCriticalSystemObject: TRUE
-unicodePwd: samba
-nTSecurityDescriptor: foo
-
-dn: CN=Test,CN=Users,DC=schema,DC=test
-objectClass: top
-objectClass: test
-cn: Test
-description: This is a test
-objectCategory: CN=Test,CN=Schema,CN=Configuration,DC=schema,DC=test
-nTSecurityDescriptor: foo
-instanceType: 4
-
diff --git a/source/lib/ldb/tests/schema-tests/schema-mod-test-1.ldif b/source/lib/ldb/tests/schema-tests/schema-mod-test-1.ldif
deleted file mode 100644
index b9767244854..00000000000
--- a/source/lib/ldb/tests/schema-tests/schema-mod-test-1.ldif
+++ /dev/null
@@ -1,5 +0,0 @@
-dn: CN=Test,CN=Users,DC=schema,DC=test
-changetype: modify
-replace: description
-description: this test must not fail
-
diff --git a/source/lib/ldb/tests/schema-tests/schema-mod-test-2.ldif b/source/lib/ldb/tests/schema-tests/schema-mod-test-2.ldif
deleted file mode 100644
index fa193af6832..00000000000
--- a/source/lib/ldb/tests/schema-tests/schema-mod-test-2.ldif
+++ /dev/null
@@ -1,5 +0,0 @@
-dn: CN=Test,CN=Users,DC=schema,DC=test
-changetype: modify
-delete: description
-# this test must not fail
-
diff --git a/source/lib/ldb/tests/schema-tests/schema-mod-test-3.ldif b/source/lib/ldb/tests/schema-tests/schema-mod-test-3.ldif
deleted file mode 100644
index 8ab7798f9ce..00000000000
--- a/source/lib/ldb/tests/schema-tests/schema-mod-test-3.ldif
+++ /dev/null
@@ -1,5 +0,0 @@
-dn: CN=Test,CN=Users,DC=schema,DC=test
-changetype: modify
-add: description
-description: this test must not fail
-
diff --git a/source/lib/ldb/tests/schema-tests/schema-mod-test-4.ldif b/source/lib/ldb/tests/schema-tests/schema-mod-test-4.ldif
deleted file mode 100644
index cbf0e60bbea..00000000000
--- a/source/lib/ldb/tests/schema-tests/schema-mod-test-4.ldif
+++ /dev/null
@@ -1,5 +0,0 @@
-dn: CN=Test,CN=Users,DC=schema,DC=test
-changetype: modify
-add: foo
-foo: this test must fail
-
diff --git a/source/lib/ldb/tests/schema-tests/schema-mod-test-5.ldif b/source/lib/ldb/tests/schema-tests/schema-mod-test-5.ldif
deleted file mode 100644
index bc64e9edb61..00000000000
--- a/source/lib/ldb/tests/schema-tests/schema-mod-test-5.ldif
+++ /dev/null
@@ -1,5 +0,0 @@
-dn: CN=Test,CN=Users,DC=schema,DC=test
-changetype: modify
-delete: nTSecurityDescriptor
-# this test must fail
-
diff --git a/source/lib/ldb/tests/schema-tests/schema.ldif b/source/lib/ldb/tests/schema-tests/schema.ldif
deleted file mode 100644
index 515408144ab..00000000000
--- a/source/lib/ldb/tests/schema-tests/schema.ldif
+++ /dev/null
@@ -1,112 +0,0 @@
-dn: @INDEXLIST
-@IDXATTR: name
-@IDXATTR: sAMAccountName
-@IDXATTR: objectSid
-@IDXATTR: objectClass
-@IDXATTR: member
-@IDXATTR: uidNumber
-@IDXATTR: gidNumber
-@IDXATTR: unixName
-@IDXATTR: privilege
-@IDXATTR: lDAPDisplayName
-
-dn: @ATTRIBUTES
-realm: CASE_INSENSITIVE
-userPrincipalName: CASE_INSENSITIVE
-servicePrincipalName: CASE_INSENSITIVE
-name: CASE_INSENSITIVE
-dn: CASE_INSENSITIVE
-sAMAccountName: CASE_INSENSITIVE
-objectClass: CASE_INSENSITIVE
-unicodePwd: HIDDEN
-ntPwdHash: HIDDEN
-ntPwdHistory: HIDDEN
-lmPwdHash: HIDDEN
-lmPwdHistory: HIDDEN
-createTimestamp: HIDDEN
-modifyTimestamp: HIDDEN
-
-dn: @SUBCLASSES
-top: domain
-top: person
-top: group
-domain: domainDNS
-domain: builtinDomain
-person: organizationalPerson
-organizationalPerson: user
-user: computer
-template: userTemplate
-template: groupTemplate
-
-dn: @MODULES
-@LIST: timestamps,schema
-
-dn: CN=Top,CN=Schema,CN=Configuration,DC=schema,DC=test
-objectClass: top
-objectClass: classSchema
-lDAPDisplayName: top
-cn: Top
-uSNCreated: 1
-uSNChanged: 1
-subClassOf: top
-systemMustContain: objectClass
-systemMayContain: structuralObjectClass
-systemMayContain: createTimeStamp
-systemMayContain: modifyTimeStamp
-systemMayContain: creatorsName
-systemMayContain: modifiersName
-systemMayContain: hasSubordinates
-systemMayContain: subschemaSubentry
-systemMayContain: collectiveSubentry
-systemMayContain: entryUUID
-systemMayContain: entryCSN
-systemMayContain: namingCSN
-systemMayContain: superiorUUID
-systemMayContain: contextCSN
-systemMayContain: whenCreated
-systemMayContain: whenChanged
-systemMayContain: uSNCreated
-systemMayContain: uSNChanged
-systemMayContain: distinguishedName
-systemMayContain: name
-systemMayContain: cn
-systemMayContain: userPassword
-systemMayContain: labeledURI
-
-dn: CN=Class-Schema,CN=Schema,CN=Configuration,DC=schema,DC=test
-objectClass: top
-objectClass: classSchema
-lDAPDisplayName: classSchema
-cn: Class-Schema
-uSNCreated: 2
-uSNChanged: 2
-lDAPDisplayName: classSchema
-subClassOf: top
-systemMustContain: cn
-systemMustContain: subClassOf
-systemMayContain: systemPossSuperiors
-systemMayContain: systemOnly
-systemMayContain: systemMustContain
-systemMayContain: systemMayContain
-systemMayContain: systemAuxiliaryClass
-systemMayContain: possSuperiors
-systemMayContain: mustContain
-systemMayContain: mayContain
-systemMayContain: lDAPDisplayName
-systemMayContain: auxiliaryClass
-
-dn: CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=schema,DC=test
-objectClass: top
-objectClass: classSchema
-cn: Attribute-Schema
-uSNCreated: 3
-uSNChanged: 3
-lDAPDisplayName: attributeSchema
-subClassOf: top
-systemMustContain: oMSyntax
-systemMustContain: lDAPDisplayName
-systemMustContain: isSingleValued
-systemMustContain: cn
-systemMustContain: attributeSyntax
-systemMustContain: attributeID
-
diff --git a/source/lib/ldb/tests/slapd.conf b/source/lib/ldb/tests/slapd.conf
deleted file mode 100644
index fa2789d8c17..00000000000
--- a/source/lib/ldb/tests/slapd.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-loglevel 0
-
-include tests/schema/core.schema
-include tests/schema/cosine.schema
-include tests/schema/inetorgperson.schema
-include tests/schema/openldap.schema
-include tests/schema/nis.schema
-
-
-pidfile tests/tmp/slapd.pid
-argsfile tests/tmp/slapd.args
-
-access to * by * write
-
-allow update_anon bind_anon_dn
-
-include tests/tmp/modules.conf
-
-defaultsearchbase "o=University of Michigan,c=TEST"
-
-backend bdb
-database bdb
-suffix "o=University of Michigan,c=TEST"
-directory tests/tmp/db
-index objectClass eq
-index uid eq
diff --git a/source/lib/ldb/tests/start_slapd.sh b/source/lib/ldb/tests/start_slapd.sh
deleted file mode 100755
index 22e8548791a..00000000000
--- a/source/lib/ldb/tests/start_slapd.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-if [ -z "$LDBDIR" ]; then
- LDBDIR=`dirname $0`/..
- export LDBDIR
-fi
-
-mkdir -p $LDBDIR/tests/tmp/db
-
-# running slapd with -d0 means it stays in the same process group, so it can be
-# killed by timelimit
-slapd -d0 -f $LDBDIR/tests/slapd.conf -h "`$LDBDIR/tests/ldapi_url.sh`" $* &
-
-sleep 2
diff --git a/source/lib/ldb/tests/test-attribs.ldif b/source/lib/ldb/tests/test-attribs.ldif
deleted file mode 100644
index 0bb3ebead68..00000000000
--- a/source/lib/ldb/tests/test-attribs.ldif
+++ /dev/null
@@ -1,15 +0,0 @@
-dn: @ATTRIBUTES
-uid: CASE_INSENSITIVE
-cn: CASE_INSENSITIVE
-ou: CASE_INSENSITIVE
-dn: CASE_INSENSITIVE
-
-dn: @SUBCLASSES
-top: domain
-top: person
-domain: domainDNS
-person: organizationalPerson
-person: fooPerson
-organizationalPerson: user
-organizationalPerson: OpenLDAPperson
-user: computer
diff --git a/source/lib/ldb/tests/test-config.ldif b/source/lib/ldb/tests/test-config.ldif
deleted file mode 100644
index 7926a9e3c58..00000000000
--- a/source/lib/ldb/tests/test-config.ldif
+++ /dev/null
@@ -1,67 +0,0 @@
-##############################
-# global configuration options
-dn: cn=Global,cn=Config,cn=Samba
-objectclass: globalconfig
-LocalConfigCn: cn=%U,cn=Config,cn=Samba
-LocalConfigCn;1: cn=%U,cn=Config,cn=Samba
-LocalConfigCn;2: cn=%I,cn=Config,cn=Samba
-LocalConfigCn;3: cn=%M,cn=Config,cn=Samba
-
-#############
-dn: cn=Protocol,cn=Global,cn=Config,cn=Samba
-maxXmit: 7000
-
-################################
-dn: cn=Volker,cn=Config,cn=Samba
-Workgroup: VNET3
-UnixCharset: UTF8
-Security: user
-Interfaces: vmnet* eth*
-NetbiosName: blu
-GuestAccount: tridge
-
-#################################
-dn: cn=Volker,cn=Config,cn=Samba
-Workgroup: VNET3
-UnixCharset: UTF8
-Security: user
-Interfaces: vmnet* eth*
-NetbiosName: blu
-GuestAccount: tridge
-Include: cn=%U,cn=MyConfig,cn=Config,cn=Samba
-
-#### ((objectClass=fileshare)(cn=test))
-##############################
-# [test] share
-dn: cn=test,cn=Shares,cn=Config,cn=Samba
-objectclass: fileshare
-cn: test
-Comment: a test share
-Path: /home/tridge/samba4/prefix/test
-ReadOnly: no
-
-#####################################
-# [msdn] a remote proxy share, stored
-# on \\msdn\test
-dn: cn=msdn,cn=Shares,cn=Config,cn=Samba
-objectclass: fileshare
-cn: msdn
-NtvfsHandler: cifs
-ReadOnly: no
-_CifsServer: msdn
-_CifsUser: administrator
-_CifsPassword: penguin
-_CifsDomain: winxp
-_CifsShare: test
-
-
-##############################
-# [VisualC] share
-dn: cn=visualc,cn=Shares,cn=Config,cn=Samba
-objectclass: fileshare
-cn: VisualC
-Comment: VisualC development
-Path: /home/tridge/VisualC
-ReadOnly: no
-NtvfsHandler: simple
-
diff --git a/source/lib/ldb/tests/test-default-config.ldif b/source/lib/ldb/tests/test-default-config.ldif
deleted file mode 100644
index 87b7bcd3cc7..00000000000
--- a/source/lib/ldb/tests/test-default-config.ldif
+++ /dev/null
@@ -1,17 +0,0 @@
-##############################
-# global configuration options
-dn: cn=Global,cn=DefaultConfig,cn=Samba
-objectclass: globalconfig
-Workgroup: WORKGROUP
-UnixCharset: UTF8
-Security: user
-NetbiosName: blu
-GuestAccount: nobody
-
-##############################
-# [_default_] share
-dn: cn=_default_,cn=Shares,cn=DefaultConfig,cn=Samba
-objectclass: fileshare
-cn: _default_
-Path: /tmp
-ReadOnly: yes
diff --git a/source/lib/ldb/tests/test-extended.sh b/source/lib/ldb/tests/test-extended.sh
deleted file mode 100755
index a84e3b78a38..00000000000
--- a/source/lib/ldb/tests/test-extended.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-
-echo "Running extended search tests"
-
-mv $LDB_URL $LDB_URL.1
-
-cat <<EOF | bin/ldbadd || exit 1
-dn: cn=testrec1,cn=TEST
-i1: 1
-i2: 0
-i3: 1234
-i4: 0x7003004
-
-dn: cn=testrec2,cn=TEST
-i1: 0x800000
-
-dn: cn=testrec3,cn=TEST
-i1: 0x101010101
-i1: 7
-
-dn: cn=auser1,cn=TEST
-groupType: 2147483648
-samAccountType: 805306368
-
-dn: cn=auser2,cn=TEST
-groupType: 2147483648
-samAccountType: 805306369
-
-dn: cn=auser3,cn=TEST
-groupType: 2147483649
-samAccountType: 805306370
-
-dn: cn=auser4,cn=TEST
-groupType: 2147483649
-samAccountType: 805306369
-EOF
-
-checkcount() {
- count=$1
- expression="$2"
- n=`bin/ldbsearch "$expression" | grep '^dn' | wc -l`
- if [ $n != $count ]; then
- echo "Got $n but expected $count for $expression"
- bin/ldbsearch "$expression"
- exit 1
- fi
- echo "OK: $count $expression"
-}
-
-checkcount 1 '(i3=1234)'
-checkcount 0 '(i3=12345)'
-
-checkcount 2 '(i1:1.2.840.113556.1.4.803:=1)'
-checkcount 1 '(i1:1.2.840.113556.1.4.803:=3)'
-checkcount 1 '(i1:1.2.840.113556.1.4.803:=7)'
-checkcount 0 '(i1:1.2.840.113556.1.4.803:=15)'
-checkcount 1 '(i1:1.2.840.113556.1.4.803:=0x800000)'
-checkcount 1 '(i1:1.2.840.113556.1.4.803:=8388608)'
-
-checkcount 2 '(i1:1.2.840.113556.1.4.804:=1)'
-checkcount 2 '(i1:1.2.840.113556.1.4.804:=3)'
-checkcount 2 '(i1:1.2.840.113556.1.4.804:=7)'
-checkcount 2 '(i1:1.2.840.113556.1.4.804:=15)'
-checkcount 1 '(i1:1.2.840.113556.1.4.804:=0x800000)'
-checkcount 1 '(i1:1.2.840.113556.1.4.804:=8388608)'
-
-# this is one that w2k gives
-checkcount 3 '(|(|(&(!(groupType:1.2.840.113556.1.4.803:=1))(groupType:1.2.840.113556.1.4.803:=2147483648)(groupType:1.2.840.113556.1.4.804:=10))(samAccountType=805306368))(samAccountType=805306369))'
-
diff --git a/source/lib/ldb/tests/test-generic.sh b/source/lib/ldb/tests/test-generic.sh
deleted file mode 100755
index 14337cc1352..00000000000
--- a/source/lib/ldb/tests/test-generic.sh
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/bin/sh
-
-if [ -z "$LDB_SPECIALS" ]; then
- LDB_SPECIALS=1
- export LDB_SPECIALS
-fi
-
-echo "LDB_URL: $LDB_URL"
-
-echo "Adding base elements"
-$VALGRIND ldbadd $LDBDIR/tests/test.ldif || exit 1
-
-echo "Adding again - should fail"
-ldbadd $LDBDIR/tests/test.ldif 2> /dev/null && {
- echo "Should have failed to add again - gave $?"
- exit 1
-}
-
-echo "Modifying elements"
-$VALGRIND ldbmodify $LDBDIR/tests/test-modify.ldif || exit 1
-
-echo "Showing modified record"
-$VALGRIND ldbsearch '(uid=uham)' || exit 1
-
-echo "Rename entry"
-OLDDN="cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST"
-NEWDN="cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST"
-$VALGRIND ldbrename "$OLDDN" "$NEWDN" || exit 1
-
-echo "Showing renamed record"
-$VALGRIND ldbsearch '(uid=uham)' || exit 1
-
-echo "Starting ldbtest"
-$VALGRIND ldbtest --num-records 100 --num-searches 10 || exit 1
-
-if [ $LDB_SPECIALS = 1 ]; then
- echo "Adding index"
- $VALGRIND ldbadd $LDBDIR/tests/test-index.ldif || exit 1
-fi
-
-echo "Adding bad attributes - should fail"
-$VALGRIND ldbadd $LDBDIR/tests/test-wrong_attributes.ldif && {
- echo "Should fhave failed - gave $?"
- exit 1
-}
-
-echo "testing indexed search"
-$VALGRIND ldbsearch '(uid=uham)' || exit 1
-$VALGRIND ldbsearch '(&(objectclass=person)(objectclass=person)(objectclass=top))' || exit 1
-$VALGRIND ldbsearch '(&(uid=uham)(uid=uham))' || exit 1
-$VALGRIND ldbsearch '(|(uid=uham)(uid=uham))' || exit 1
-$VALGRIND ldbsearch '(|(uid=uham)(uid=uham)(objectclass=OpenLDAPperson))' || exit 1
-$VALGRIND ldbsearch '(&(uid=uham)(uid=uham)(!(objectclass=xxx)))' || exit 1
-$VALGRIND ldbsearch '(&(objectclass=person)(uid=uham)(!(uid=uhamxx)))' uid \* \+ dn || exit 1
-$VALGRIND ldbsearch '(&(uid=uham)(uid=uha*)(title=*))' uid || exit 1
-
-# note that the "((" is treated as an attribute not an expression
-# this matches the openldap ldapsearch behaviour of looking for a '='
-# to see if the first argument is an expression or not
-$VALGRIND ldbsearch '((' uid || exit 1
-$VALGRIND ldbsearch '(objectclass=)' uid || exit 1
-$VALGRIND ldbsearch -b 'cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' -s base "" sn || exit 1
-
-echo "Test wildcard match"
-$VALGRIND ldbadd $LDBDIR/tests/test-wildcard.ldif || exit 1
-$VALGRIND ldbsearch '(cn=test*multi)' || exit 1
-$VALGRIND ldbsearch '(cn=*test*multi*)' || exit 1
-$VALGRIND ldbsearch '(cn=*test_multi)' || exit 1
-$VALGRIND ldbsearch '(cn=test_multi*)' || exit 1
-$VALGRIND ldbsearch '(cn=test*multi*test*multi)' || exit 1
-$VALGRIND ldbsearch '(cn=test*multi*test*multi*multi_*)' || exit 1
-
-echo "Starting ldbtest indexed"
-$VALGRIND ldbtest --num-records 100 --num-searches 500 || exit 1
-
-echo "Testing one level search"
-count=`$VALGRIND ldbsearch -b 'ou=Groups,o=University of Michigan,c=TEST' -s one 'objectclass=*' none |grep '^dn' | wc -l`
-if [ $count != 3 ]; then
- echo returned $count records - expected 3
- exit 1
-fi
-
-echo "Testing binary file attribute value"
-mkdir -p tests/tmp
-cp $LDBDIR/tests/samba4.png tests/tmp/samba4.png
-$VALGRIND ldbmodify $LDBDIR/tests/photo.ldif || exit 1
-count=`$VALGRIND ldbsearch '(cn=Hampster Ursula)' jpegPhoto | grep '^dn' | wc -l`
-if [ $count != 1 ]; then
- echo returned $count records - expected 1
- exit 1
-fi
-rm -f tests/tmp/samba4.png
-
-echo "*TODO* Testing UTF8 upper lower case searches !!"
-
-echo "Testing compare"
-count=`$VALGRIND ldbsearch '(cn>=t)' cn | grep '^dn' | wc -l`
-if [ $count != 2 ]; then
- echo returned $count records - expected 2
- echo "this fails on openLdap ..."
-fi
-
-count=`$VALGRIND ldbsearch '(cn<=t)' cn | grep '^dn' | wc -l`
-if [ $count != 13 ]; then
- echo returned $count records - expected 13
- echo "this fails on opsnLdap ..."
-fi
-
-checkcount() {
- count=$1
- scope=$2
- basedn=$3
- expression="$4"
- n=`bin/ldbsearch -s "$scope" -b "$basedn" "$expression" | grep '^dn' | wc -l`
- if [ $n != $count ]; then
- echo "Got $n but expected $count for $expression"
- bin/ldbsearch "$expression"
- exit 1
- fi
- echo "OK: $count $expression"
-}
-
-checkcount 0 'base' '' '(uid=uham)'
-checkcount 0 'one' '' '(uid=uham)'
-
-checkcount 1 'base' 'cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' '(uid=uham)'
-checkcount 1 'one' 'ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' '(uid=uham)'
-checkcount 1 'one' 'ou=People,o=University of Michigan,c=TEST' '(ou=ldb test)'
diff --git a/source/lib/ldb/tests/test-index.ldif b/source/lib/ldb/tests/test-index.ldif
deleted file mode 100644
index a7935371878..00000000000
--- a/source/lib/ldb/tests/test-index.ldif
+++ /dev/null
@@ -1,11 +0,0 @@
-dn: @INDEXLIST
-@IDXATTR: uid
-@IDXATTR: objectclass
-
-dn: @ATTRIBUTES
-uid: CASE_INSENSITIVE
-
-dn: @SUBCLASSES
-top: person
-person: organizationalPerson
-organizationalPerson: OpenLDAPperson
diff --git a/source/lib/ldb/tests/test-ldap.sh b/source/lib/ldb/tests/test-ldap.sh
deleted file mode 100755
index b9d224e0af0..00000000000
--- a/source/lib/ldb/tests/test-ldap.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/sh
-
-PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
-export PATH
-SCHEMA_NEEDED="core nis cosine inetorgperson openldap"
-
-# setup needed schema files
-for f in $SCHEMA_NEEDED; do
- if [ ! -r tests/schema/$f.schema ]; then
- mkdir -p tests/schema
- if [ -r /etc/ldap/schema/$f.schema ]; then
- ln -s /etc/ldap/schema/$f.schema tests/schema/$f.schema
- continue;
- fi
- if [ -r /etc/openldap/schema/$f.schema ]; then
- ln -s /etc/openldap/schema/$f.schema tests/schema/$f.schema
- continue;
- fi
-
- echo "SKIPPING TESTS: you need the following OpenLDAP schema files"
- for f in $SCHEMA_NEEDED; do
- echo " $f.schema"
- done
- exit 0
- fi
-done
-
-if [ -z "$LDBDIR" ]; then
- LDBDIR=`dirname $0`/..
- export LDBDIR
-fi
-
-LDB_URL=`$LDBDIR/tests/ldapi_url.sh`
-export LDB_URL
-
-PATH=bin:$PATH
-export PATH
-
-LDB_SPECIALS=0
-export LDB_SPECIALS
-
-if $LDBDIR/tests/init_slapd.sh &&
- $LDBDIR/tests/start_slapd.sh &&
- $LDBDIR/tests/test-generic.sh; then
- echo "ldap tests passed";
- ret=0
-else
- echo "ldap tests failed";
- ret=$?
-fi
-
-$LDBDIR/tests/kill_slapd.sh
-
-exit $ret
diff --git a/source/lib/ldb/tests/test-modify.ldif b/source/lib/ldb/tests/test-modify.ldif
deleted file mode 100644
index e5b9ca40861..00000000000
--- a/source/lib/ldb/tests/test-modify.ldif
+++ /dev/null
@@ -1,23 +0,0 @@
-dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michiga
- n,c=TEST
-changetype: modify
-add: drink
-drink: mango lassi
--
-add: drink
-drink: lemonade
--
-delete: pager
--
-replace: telephonenumber
-telephonenumber: +61 2 6260 6012
-telephonenumber: +61 412 666 929
--
-delete: telephonenumber
-telephonenumber: +61 2 6260 6012
--
-delete: telephonenumber
-telephonenumber: +61 412 666 929
--
-add: telephonenumber
-telephonenumber: +61 412 666 929
diff --git a/source/lib/ldb/tests/test-schema.sh b/source/lib/ldb/tests/test-schema.sh
deleted file mode 100755
index 2f10fb45e2a..00000000000
--- a/source/lib/ldb/tests/test-schema.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-LDB_URL="tdb://schema.ldb"
-export LDB_URL
-
-rm -f schema.ldb
-
-echo "LDB_URL: $LDB_URL"
-
-echo "Adding schema"
-$VALGRIND bin/ldbadd $LDBDIR/tests/schema-tests/schema.ldif || exit 1
-
-echo "Adding few test elements (no failure expected here)"
-$VALGRIND bin/ldbadd $LDBDIR/tests/schema-tests/schema-add-test.ldif || exit 1
-
-echo "Modifying elements (2 failures expected here)"
-
-$VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-1.ldif || exit 1
-$VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-2.ldif || exit 1
-$VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-3.ldif || exit 1
-$VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-4.ldif
-if [ "$?" == "0" ]; then
- echo "test failed!"
- exit 1
-fi
-$VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-5.ldif
-if [ "$?" == "0" ]; then
- echo "test failed!"
- exit 1
-fi
-
-echo "Showing modified record"
-$VALGRIND bin/ldbsearch '(cn=Test)' || exit 1
-
diff --git a/source/lib/ldb/tests/test-sqlite3.sh b/source/lib/ldb/tests/test-sqlite3.sh
deleted file mode 100755
index 0cef318d98a..00000000000
--- a/source/lib/ldb/tests/test-sqlite3.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-
-LDB_URL="sqlite3://sqltest.ldb"
-export LDB_URL
-
-rm -f sqltest.ldb
-
-if [ -z "$LDBDIR" ]; then
- LDBDIR=`dirname $0`/..
- export LDBDIR
-fi
-
-PATH=bin:$PATH
-export PATH
-
-LDB_SPECIALS=0
-export LDB_SPECIALS
-
-$LDBDIR/tests/test-generic.sh
-
-#. $LDBDIR/tests/test-extended.sh
-
-#. $LDBDIR/tests/test-tdb-features.sh
-
diff --git a/source/lib/ldb/tests/test-tdb-features.sh b/source/lib/ldb/tests/test-tdb-features.sh
deleted file mode 100644
index 6f1afdcf334..00000000000
--- a/source/lib/ldb/tests/test-tdb-features.sh
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/sh
-
-echo "Running tdb feature tests"
-
-mv $LDB_URL $LDB_URL.2
-
-checkcount() {
- count=$1
- expression="$2"
- n=`bin/ldbsearch "$expression" | grep '^dn' | wc -l`
- if [ $n != $count ]; then
- echo "Got $n but expected $count for $expression"
- $VALGRIND bin/ldbsearch "$expression"
- exit 1
- fi
- echo "OK: $count $expression"
-}
-
-echo "Testing case sensitive search"
-cat <<EOF | $VALGRIND bin/ldbadd || exit 1
-dn: cn=t1,cn=TEST
-objectClass: testclass
-test: foo
-EOF
-checkcount 1 '(test=foo)'
-checkcount 0 '(test=FOO)'
-checkcount 0 '(test=FO*)'
-
-echo "Making case insensitive"
-cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
-dn: @ATTRIBUTES
-changetype: add
-add: test
-test: CASE_INSENSITIVE
-EOF
-
-echo $ldif | $VALGRIND bin/ldbmodify || exit 1
-checkcount 1 '(test=foo)'
-checkcount 1 '(test=FOO)'
-checkcount 1 '(test=fo*)'
-
-echo "adding i"
-cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
-dn: cn=t1,cn=TEST
-changetype: modify
-add: i
-i: 0x100
-EOF
-checkcount 1 '(i=0x100)'
-checkcount 0 '(i=256)'
-
-echo "marking i as INTEGER"
-cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
-dn: @ATTRIBUTES
-changetype: modify
-add: i
-i: INTEGER
-EOF
-checkcount 1 '(i=0x100)'
-checkcount 1 '(i=256)'
-
-echo "adding j"
-cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
-dn: cn=t1,cn=TEST
-changetype: modify
-add: j
-j: 0x100
-EOF
-checkcount 1 '(j=0x100)'
-checkcount 0 '(j=256)'
-
-echo "Adding wildcard attribute"
-cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
-dn: @ATTRIBUTES
-changetype: modify
-add: *
-*: INTEGER
-EOF
-checkcount 1 '(j=0x100)'
-checkcount 1 '(j=256)'
-
-echo "Testing class search"
-checkcount 0 '(objectClass=otherclass)'
-checkcount 1 '(objectClass=testclass)'
-
-echo "Adding subclass"
-cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
-dn: @SUBCLASSES
-changetype: add
-add: otherclass
-otherclass: testclass
-EOF
-checkcount 1 '(objectClass=otherclass)'
-checkcount 1 '(objectClass=testclass)'
-
-echo "Adding index"
-cat <<EOF | $VALGRIND bin/ldbadd || exit 1
-dn: @INDEXLIST
-@IDXATTR: i
-@IDXATTR: test
-EOF
-checkcount 1 '(i=0x100)'
-checkcount 1 '(i=256)'
-checkcount 0 '(i=-256)'
-checkcount 1 '(test=foo)'
-checkcount 1 '(test=FOO)'
-checkcount 1 '(test=*f*o)'
-
-echo "making test case sensitive"
-cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
-dn: @ATTRIBUTES
-changetype: modify
-replace: test
-test: NONE
-EOF
-checkcount 1 '(test=foo)'
-checkcount 0 '(test=FOO)'
-checkcount 1 '(test=f*o*)'
-
diff --git a/source/lib/ldb/tests/test-tdb.sh b/source/lib/ldb/tests/test-tdb.sh
deleted file mode 100755
index 7c4f5205b47..00000000000
--- a/source/lib/ldb/tests/test-tdb.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-if [ -n "$TEST_DATA_PREFIX" ]; then
- LDB_URL="$TEST_DATA_PREFIX/tdbtest.ldb"
-else
- LDB_URL="tdbtest.ldb"
-fi
-export LDB_URL
-
-PATH=bin:$PATH
-export PATH
-
-rm -f $LDB_URL*
-
-if [ -z "$LDBDIR" ]; then
- LDBDIR=`dirname $0`/..
- export LDBDIR
-fi
-
-cat <<EOF | $VALGRIND ldbadd || exit 1
-dn: @MODULES
-@LIST: rdn_name
-EOF
-
-$VALGRIND ldbadd $LDBDIR/tests/init.ldif || exit 1
-
-. $LDBDIR/tests/test-generic.sh
-
-. $LDBDIR/tests/test-extended.sh
-
-. $LDBDIR/tests/test-tdb-features.sh
diff --git a/source/lib/ldb/tests/test-wildcard.ldif b/source/lib/ldb/tests/test-wildcard.ldif
deleted file mode 100644
index 222512eeabd..00000000000
--- a/source/lib/ldb/tests/test-wildcard.ldif
+++ /dev/null
@@ -1,5 +0,0 @@
-dn: cn=test_multi_test_multi_test_multi,o=University of Michigan,c=TEST
-objectclass: person
-cn: test_multi_test_multi_test_multi
-sn: multi_test
-description: test multi wildcards matching
diff --git a/source/lib/ldb/tests/test-wrong_attributes.ldif b/source/lib/ldb/tests/test-wrong_attributes.ldif
deleted file mode 100644
index 27f45f0e562..00000000000
--- a/source/lib/ldb/tests/test-wrong_attributes.ldif
+++ /dev/null
@@ -1,3 +0,0 @@
-dn: @ATTRIBUTES
-uid: CASE_INTENSIVE
-
diff --git a/source/lib/ldb/tests/test.ldif b/source/lib/ldb/tests/test.ldif
deleted file mode 100644
index e53fadc7009..00000000000
--- a/source/lib/ldb/tests/test.ldif
+++ /dev/null
@@ -1,411 +0,0 @@
-dn: ou=Groups,o=University of Michigan,c=TEST
-objectclass: organizationalUnit
-ou: Groups
-
-dn: ou=Information Technology Division,ou=People,o=University of Michigan,c=TEST
-objectclass: organizationalUnit
-ou: Information Technology Division
-description:: aMODwoPDgsKCw4PCgsOCwotFVlZQw4PCg8OCwoPDg8KCw4LCv0zDg8KDw4LCgsOD
- woLDgsKKT8ODwoPDgsKDw4PCgsOCwqs6w4PCg8OCwoLDg8KCw4LCjUQkw4PCg8OCwoLDg8KCw4LCi
- 01QUcODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoLDg8KCw4LCik/Dg8KDw4
- LCgsODwoLDgsKLRCQoZitEJMODwoPDgsKCw4PCgsOCwrfDg8KDw4LCg8ODwoLDgsKIw4PCg8OCwoP
- Dg8KCw4LCgcODwoPDgsKDw4PCgsOCwqHDg8KDw4LCgsODwoLDgsKLRCQkZitEJMODwoPDgsKCw4PC
- gsOCwrfDg8KDw4LCg8ODwoLDgsKQw4PCg8OCwoPDg8KCw4LCisODwoPDgsKCw4PCgsOCwotFUVZqU
- MODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsKAw4PCg8OCwoLDg8KCw4LCik85dCTDg8KDw4
- LCgsODwoLDgsKFQ8ODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4L
- Cvzl0JMODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCv8ODwoPD
- gsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKLRCTDg8KDw4LCgsODwoLDgsKDw4PCg8OCwoLDg8KCw
- 4LCuMODwoPDgsKDw4PCgsOCwoR0Q8ODwoPDgsKCw4PCgsOCwoM9w4PCg8OCwoPDg8KCw4LChMODwo
- PDgsKDw4PCgsOCwoFOdTrDg8KDw4LCg8ODwoLDgsKHw4PCg8OCwoPDg8KCw4LChMODwoPDgsKDw4P
- CgsOCwoFOw4PCg8OCwoPDg8KCw4LCqMODwoPDgsKDw4PCgsOCwrtHw4PCg8OCwoLDg8KCw4LChcOD
- woPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsK4dMODwoPDgsKDw4PCgsOCwqjDg8KDw4LCg8ODw
- oLDgsKtR8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCiMODwo
- PDgsKDw4PCgsOCwr9SfGrDg8KDw4LCgsODwoLDgsKLQGgxw4PCg8OCwoPDg8KCw4LCoWhQw4PCg8O
- CwoPDg8KCw4LCv8ODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsKKT8ODwoPDgsKCw4PCgsOC
- wotEJDDDg8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4LCgHTDg8KDw4LCgsODwoLDgsKDw4PCg
- 8OCwoPDg8KCw4LCuHXDg8KDw4LCgsODwoLDgsKLRCRqw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4
- PCgsOCwojDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwpPDg8K
- Dw4LCg8ODwoLDgsKQXV9eW8ODwoPDgsKCw4PCgsOCwoPDg8KDw4LCg8ODwoLDgsKEw4PCg8OCwoPD
- g8KCw4LCgsODwoPDgsKDw4PCgsOCwozDg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODw
- oPDgsKDw4PCgsOCwozDg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgs
- OCwoxWV8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKxw4PCg8OCwoLDg8KCw4LCi3wkw4P
- Cg8OCwoLDg8KCw4LCjcODwoPDgsKCw4PCgsOCwofDg8KDw4LCg8ODwoLDgsKof8ODwoPDgsKDw4PC
- gsOCwr/Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoLDg8KCw4LCg8ODwoPDgsKDw4PCgsOCwrh5w4PCg
- 8OCwoLDg8KCw4LChzQzw4PCg8OCwoPDg8KCw4LCicODwoPDgsKCw4PCgsOCworDg8KDw4LCgsODwo
- LDgsKIw4PCg8OCwoLDg8KCw4LCuDFBw4PCg8OCwoPDg8KCw4LCvyTDg8KDw4LCgsODwoLDgsKNdDF
- Bw4PCg8OCwoLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwrhfXsODwoPD
- gsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsK4X17Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCwoLDg8KCw
- 4LCi8ODwoPDgsKDw4PCgsOCwo7Dg8KDw4LCgsODwoLDgsKBw4PCg8OCwoPDg8KCw4LCv8ODwoPDgs
- KCw4PCgsOCwoTDg8KDw4LCgsODwoLDgsKAdcODwoPDgsKDw4PCgsOCwqhtw4PCg8OCwoLDg8KCw4L
- ChcODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsKEw4PCg8OCwoPDg8KCw4LCsMODwoPDgsKC
- w4PCgsOCwrhfXsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCg8ODwoLDgsKow4PCg8OCwoLDg8KCw4LCt
- sODwoPDgsKDw4PCgsOCwq7Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4
- PCgsOCwoPDg8KDw4LCg8ODwoLDgsKoZsODwoPDgsKCw4PCgsOCwoPDg8KDw4LCg8ODwoLDgsK4w4P
- Cg8OCwoLDg8KCw4LCh8ODwoPDgsKDw4PCgsOCwpUzw4PCg8OCwoPDg8KCw4LCicODwoPDgsKCw4PC
- gsOCworDg8KDw4LCgsODwoLDgsKISDJBw4PCg8OCwoPDg8KCw4LCvyTDg8KDw4LCgsODwoLDgsKNN
- DJBw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKOw4PCg8OCwo
- PDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwpDDg8KDw4LCg8ODwoLDgsKIw4PCg8OCwoLDg8KCw4LCi8O
- DwoPDgsKDw4PCgsOCwojDg8KDw4LCg8ODwoLDgsKow4PCg8OCwoPDg8KCw4LCnEzDg8KDw4LCgsOD
- woLDgsKLSEBmw4PCg8OCwoLDg8KCw4LCg3lwdSTDg8KDw4LCgsODwoLDgsKBw4PCg8OCwoPDg8KCw
- 4LCv8ODwoPDgsKCw4PCgsOCwobDg8KDw4LCgsODwoLDgsKAw4PCg8OCwoLDg8KCw4LChMODwoPDgs
- KCw4PCgsOCwp/Dg8KDw4LCgsODwoLDgsKBw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwoj
- Dg8KDw4LCgsODwoLDgsKAw4PCg8OCwoLDg8KCw4LChMODwoPDgsKCw4PCgsOCwpPDg8KDw4LCgsOD
- woLDgsKBw4PCg8OCwoPDg8KCw4LCv1rDg8KDw4LCgsODwoLDgsKAw4PCg8OCwoLDg8KCw4LChMODw
- oPDgsKCw4PCgsOCwodqw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PCgsOCwoBqaMODwoPDgsKCw4
- PCgsOCwpBQw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKDIMODwoPDgsKCw4PCgsOCwopPw4PCg8OCwoL
- Dg8KCw4LChcODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsKOacODwoPDgsKCw4PCgsOCwrhf
- XsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsK4X17Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCw
- oLDg8KCw4LCgcODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKGw4PCg8OCwoLDg8KCw4LCgM
- ODwoPDgsKCw4PCgsOCwoRJw4PCg8OCwoLDg8KCw4LCgcODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCgsO
- DwoLDgsKIw4PCg8OCwoLDg8KCw4LCgMODwoPDgsKCw4PCgsOCwoQ9w4PCg8OCwoLDg8KCw4LCgcOD
- woPDgsKDw4PCgsOCwr9aw4PCg8OCwoLDg8KCw4LCgMODwoPDgsKCw4PCgsOCwoQxw4PCg8OCwoLDg
- 8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwoM9w4PCg8OCwoPDg8KCw4LCm0
- 7Dg8KDw4LCgsODwoLDgsKEw4PCg8OCwoLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsK
- Cw4PCgsOCwrhfXsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsK4X17Dg8KDw4LCg8ODwoLD
- gsKCw4PCg8OCwoLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwrhfXsODw
- oPDgsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgs
- OCwo7Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoLDg8KCw4LCkMODwoPDgsKDw4PCgsOCwojDg8KDw4L
- CgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCiMODwoPDgsKDw4PCgsOCwqjDg8KDw4LCg8ODwoLDgsK+
- S8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKww4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKDw
- 4PCgsOCwoTDg8KDw4LCgsODwoLDgsKKT1DDg8KDw4LCg8ODwoLDgsKoRsODwoPDgsKCw4PCgsOCwo
- vDg8KDw4LCg8ODwoLDgsK4w4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwrZ0Y8ODwoPDgsK
- Cw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsK/dF/Dg8KDw4LCgsODwoLDgsKhdHpPw4PCg8OCwoLDg8KC
- w4LCi8ODwoPDgsKDw4PCgsOCwo5Qw4PCg8OCwoPDg8KCw4LCqC1Jw4PCg8OCwoLDg8KCw4LChcODw
- oPDgsKDw4PCgsOCwoB1RMODwoPDgsKCw4PCgsOCwqFwek/Dg8KDw4LCgsODwoLDgsKLw4PCg8OCwo
- PDg8KCw4LCj1DDg8KDw4LCg8ODwoLDgsKoScODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsK
- AdTPDg8KDw4LCgsODwoLDgsKhbHpPw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo5Qw4PC
- g8OCwoPDg8KCw4LCqEnDg8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4LCgHXDg8KDw4LCgsODw
- oLDgsKhaHpPw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo9Qw4PCg8OCwoPDg8KCw4LCqM
- ODwoPDgsKDw4PCgsOCwrpIw4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwoB1M8ODwoPDgsK
- Dw4PCgsOCwoBfXsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsK4X17Dg8KDw4LCg8ODwoLD
- gsKCw4PCg8OCwoLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgjPDg8KDw4LCg8ODwoLDgsKAX17Dg
- 8KDw4LCg8ODwoLDgsKCw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo7Dg8KDw4LCg8ODwo
- LDgsKoJ8ODwoPDgsKDw4PCgsOCwq3Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCv8ODwoP
- DgsKCw4PCgsOCwoPDg8KDw4LCg8ODwoLDgsK4aHU5w4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PC
- gsOCwovDg8KDw4LCg8ODwoLDgsKOw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwpDDg8KDw
- 4LCg8ODwoLDgsKIw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgs
- KIw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwpLDg8KDw4LCg8ODwoLDgsKEw4PCg8OCwoL
- Dg8KCw4LChcODwoPDgsKDw4PCgsOCwoB0IcODwoPDgsKCw4PCgsOCwovDg8KDw4LCgsODwoLDgsKA
- w4PCg8OCwoPDg8KCw4LCtMODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsKAdGbDg8KDw4LCg
- sODwoLDgsKLQGY9dGY9dTPDg8KDw4LCg8ODwoLDgsKAX17Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCwo
- LDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwrhfXsODwoPDgsKDw4PCgsO
- CwoIzw4PCg8OCwoPDg8KCw4LCgF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwovDg8KD
- w4LCg8ODwoLDgsK/Ri9BUC9BRi9BWi9BZC9BWzBBZC9BZTBBZC9BZC9BbzBBZC9BeTBBw4PCg8OCw
- oLDg8KCw4LCgzBBMUFhMUFrMUE=
-description:: UF7Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOC
- wozDg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOCwozDg8KDw4LCg
- 8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCqFDDg8KDw4LCg8ODwoLDgsKpRsODwoPDgsKDw4PCgsOCwo
- zDg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOCwozDg8KDw4LCg8O
- DwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKCw4PCgsOCwotEJCDDg8KDw4LCgsODwoLDgsKD
- w4PCg8OCwoPDg8KCw4LCrMODwoPDgsKCw4PCgsOCwotUJCRTw4PCg8OCwoLDg8KCw4LCi1wkJFbDg
- 8KDw4LCgsODwoLDgsKJTCRXVVBSU8ODwoPDgsKDw4PCgsOCwqjDg8KDw4LCg8ODwoLDgsKdT8ODwo
- PDgsKCw4PCgsOCwoN8JDB1w4PCg8OCwoPDg8KCw4LCh8ODwoPDgsKDw4PCgsOCwoDDg8KDw4LCg8O
- DwoLDgsKBTsODwoPDgsKDw4PCgsOCwqktw4PCg8OCwoLDg8KCw4LCg3wkMHTDg8KDw4LCgsODwoLD
- gsKDfCQww4PCg8OCwoLDg8KCw4LChTPDg8KDw4LCg8ODwoLDgsK2OTXDg8KDw4LCg8ODwoLDgsKAw
- 4PCg8OCwoPDg8KCw4LCgU7Dg8KDw4LCgsODwoLDgsKEIMODwoPDgsKCw4PCgsOCwqFIw4PCg8OCwo
- PDg8KCw4LChU7Dg8KDw4LCgsODwoLDgsKJNcODwoPDgsKDw4PCgsOCwoDDg8KDw4LCg8ODwoLDgsK
- BTsODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKIw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKD
- w4PCgsOCwr9TXMODwoPDgsKCw4PCgsOCwolEJDvDg8KDw4LCg8ODwoLDgsKGw4PCg8OCwoLDg8KCw
- 4LChMODwoPDgsKCw4PCgsOCwpHDg8KDw4LCgsODwoLDgsKNRCTDg8KDw4LCgsODwoLDgsKLIEjDg8
- KDw4LCg8ODwoLDgsKFTlDDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCv1Ngw4PCg8OCwoL
- Dg8KCw4LCi8ODwoPDgsKDw4PCgsOCwpjDg8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4LCm3Rx
- w4PCg8OCwoLDg8KCw4LCizvDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCi8ODwoPDgsKDw
- 4PCgsOCwr9XaMODwoPDgsKCw4PCgsOCwolEJDvDg8KDw4LCg8ODwoLDgsKGdGLDg8KDw4LCgsODwo
- LDgsKLf2zDg8KDw4LCgsODwoLDgsKNRCTDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCi1D
- Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCl8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8OD
- woLDgsKow4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwq10SmgoT03Dg8KDw4LCgsODwoLDg
- sKLw4PCg8OCwoPDg8KCw4LCjcODwoPDgsKDw4PCgsOCwqggTMODwoPDgsKCw4PCgsOCwoXDg8KDw4
- LCg8ODwoLDgsKAdDrDg8KDw4LCgsODwoLDgsKNRCTDg8KDw4LCgsODwoLDgsKLTSBQUcODwoPDgsK
- Dw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoLDg8KCw4LCik/Dg8KDw4LCgsODwoLDgsKL
- RCQoZitEJCDDg8KDw4LCgsODwoLDgsK3w4PCg8OCwoPDg8KCw4LCiMODwoPDgsKDw4PCgsOCwoHDg
- 8KDw4LCg8ODwoLDgsKhw4PCg8OCwoLDg8KCw4LCi0QkJGYrRCTDg8KDw4LCgsODwoLDgsK3w4PCg8
- OCwoPDg8KCw4LCkMODwoPDgsKDw4PCgsOCworDg8KDw4LCgsODwoLDgsKLRSBRVmpQw4PCg8OCwoP
- Dg8KCw4LCv8ODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsKKTzl0JHXDg8KDw4LCgsODwoLD
- gsKhOXQkw4PCg8OCwoLDg8KCw4LChW/Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCv8ODw
- oPDgsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKhRMODwoPDgsKDw4PCgsOCwoVOw4PCg8OCwoLDg8
- KCw4LCi8ODwoPDgsKDw4PCgsOCwojDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCv1Ncw4P
- Cg8OCwoLDg8KCw4LCiUQkw4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsOD
- woLDgsKEw4PCg8OCwoPDg8KCw4LCtjPDg8KDw4LCg8ODwoLDgsK2w4PCg8OCwoLDg8KCw4LCjUQkw
- 4PCg8OCwoLDg8KCw4LCiyBEw4PCg8OCwoPDg8KCw4LChU5Qw4PCg8OCwoLDg8KCw4LCi8ODwoPDgs
- KDw4PCgsOCwr9TYMODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsK4w4PCg8OCwoLDg8KCw4L
- ChcODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKEw4PCg8OCwoPDg8KCw4LCkMODwoPDgsKC
- w4PCgsOCwovDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCj8ODwoPDgsKDw4PCgsOCwr9Ta
- MODwoPDgsKCw4PCgsOCwolEJDvDg8KDw4LCg8ODwoLDgsKGw4PCg8OCwoLDg8KCw4LChMODwoPDgs
- KCw4PCgsOCwr3Dg8KDw4LCgsODwoLDgsKNRCTDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4L
- Cj1DDg8KDw4LCg8ODwoLDgsK/U2zDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCqMODwoPD
- gsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsKtw4PCg8OCwoLDg8KCw4LChMODwoPDgsKCw4PCgsOCw
- p9oMMODwoPDgsKDw4PCgsOCwolMw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo3Dg8KDw4
- LCg8ODwoLDgsKow4PCg8OCwoPDg8KCw4LCq0vDg8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4L
- CgMODwoPDgsKCw4PCgsOCwoTDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoLDg8KCw4LCi0QkOcODwoPD
- gsKCw4PCgsOCwrDDg8KDw4LCg8ODwoLDgsKEdEU5w4PCg8OCwoLDg8KCw4LCtTR0PcODwoPDgsKCw
- 4PCgsOCwovDg8KDw4LCg8ODwoLDgsKNw4PCg8OCwoPDg8KCw4LCqMODwoPDgsKDw4PCgsOCwo5Lw4
- PCg8OCwoLDg8KCw4LCi0AgUMODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKsw4PCg8OCwoL
- Dg8KCw4LCik/Dg8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4LCgHUow4PCg8OCwoLDg8KCw4LC
- i8ODwoPDgsKDw4PCgsOCwo3Dg8KDw4LCgsODwoLDgsKJw4PCg8OCwoLDg8KCw4LCtTTDg8KDw4LCg
- 8ODwoLDgsKow4PCg8OCwoPDg8KCw4LCl8ODwoPDgsKDw4PCgsOCwrtWw4PCg8OCwoLDg8KCw4LCi8
- ODwoPDgsKDw4PCgsOCwo3Dg8KDw4LCg8ODwoLDgsKow4PCg8OCwoLDg8KCw4LCnw==
-
-#LEAD COMMENT
-
-# another comment
-dn: CN=All Staff,ou=Groups,o=University of Michigan,c=TEST
-#EMBEDDED COMMENT
-member: cn=Manager,o=University of Michigan,c=TEST
-member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
- rsity of Michigan,c=TEST
-member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
- =US
-member: cn=John Doe,ou=Information Technology Division,ou=People,o=University
- of Michigan,c=TEST
-member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
- n,c=TEST
-member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
- higan,c=TEST
-member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
- ersity of Michigan,c=TEST
-member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
- igan,c=TEST
-member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
- higan,c=TEST
-member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
- higan,c=TEST
-member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
- ity of Michigan,c=TEST
-owner: cn=Manager,o=University of Michigan,c=TEST
-cn: All Staff
-description: Everyone in the sample data
-objectclass: groupofnames
-
-dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=TEST
-member: cn=Manager,o=University of Michigan,c=TEST
-member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
- higan,c=TEST
-member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
- higan,c=TEST
-member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
- =US
-member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
- igan,c=TEST
-member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
- n,c=TEST
-member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
- higan,c=TEST
-owner: cn=Manager,o=University of Michigan,c=TEST
-description: All Alumni Assoc Staff
-cn: Alumni Assoc Staff
-objectclass: groupofnames
-
-dn: ou=Alumni Association,ou=People,o=University of Michigan,c=TEST
-objectclass: organizationalUnit
-ou: Alumni Association
-
-dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Universit
- y of Michigan,c=TEST
-objectclass: OpenLDAPperson
-cn: Barbara Jensen
-cn: Babs Jensen
-sn:: IEplbnNlbiA=
-uid:: YmplCW5zZW4
-title: Mythical Manager, Research Systems
-postaladdress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann
- Arbor, MI 48103-4943
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-userpassword:: YmplbnNlbg==
-mail: bjensen@mailgw.example.com
-homepostaladdress: 123 Wesley $ Ann Arbor, MI 48103
-description: Mythical manager of the rsdd unix project
-drink: water
-homephone: +1 313 555 2333
-pager: +1 313 555 3233
-facsimiletelephonenumber: +1 313 555 2274
-telephonenumber: +1 313 555 9022
-
-dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University
- of Michigan,c=TEST
-objectclass: OpenLDAPperson
-cn: Bjorn Jensen
-cn: Biiff Jensen
-sn: Jensen
-uid: bjorn
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-userpassword:: Ympvcm4=
-homepostaladdress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
-drink: Iced Tea
-description: Hiker, biker
-title: Director, Embedded Systems
-postaladdress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
-mail: bjorn@mailgw.example.com
-homephone: +1 313 555 5444
-pager: +1 313 555 4474
-facsimiletelephonenumber: +1 313 555 2177
-telephonenumber: +1 313 555 0355
-
-dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michiga
- n,c=TEST
-objectclass: OpenLDAPperson
-cn: Dorothy Stevens
-cn: Dot Stevens
-sn: Stevens
-uid: dots
-title: Secretary, UM Alumni Association
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-drink: Lemonade
-homepostaladdress: 377 White St. Apt. 3 $ Ann Arbor, MI 48104
-description: Very tall
-facsimiletelephonenumber: +1 313 555 3223
-telephonenumber: +1 313 555 3664
-mail: dots@mail.alumni.example.com
-homephone: +1 313 555 0454
-
-dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=TEST
-owner: cn=Manager,o=University of Michigan,c=TEST
-description: All ITD Staff
-cn: ITD Staff
-objectclass: groupofuniquenames
-uniquemember: cn=Manager,o=University of Michigan,c=TEST
-uniquemember: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=U
- niversity of Michigan,c=TEST
-uniquemember: cn=James A Jones 2,ou=Information Technology Division,ou=People,
- o=University of Michigan,c=TEST
-uniquemember: cn=John Doe,ou=Information Technology Division,ou=People,o=Unive
- rsity of Michigan,c=TEST
-
-dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michiga
- n,c=TEST
-objectclass: OpenLDAPperson
-cn: James A Jones 1
-cn: James Jones
-cn: Jim Jones
-sn: Jones
-uid: jaj
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-userpassword:: amFq
-homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
-homephone: +1 313 555 4772
-description: Outstanding
-title: Mad Cow Researcher, UM Alumni Association
-pager: +1 313 555 3923
-mail: jaj@mail.alumni.example.com
-facsimiletelephonenumber: +1 313 555 4332
-telephonenumber: +1 313 555 0895
-
-dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Universi
- ty of Michigan,c=TEST
-objectclass: OpenLDAPperson
-cn: James A Jones 2
-cn: James Jones
-cn: Jim Jones
-sn: Doe
-uid: jjones
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-homepostaladdress: 933 Brooks $ Ann Arbor, MI 48104
-homephone: +1 313 555 8838
-title: Senior Manager, Information Technology Division
-description: Not around very much
-mail: jjones@mailgw.example.com
-postaladdress: Info Tech Division $ 535 W William $ Ann Arbor, MI 48103
-pager: +1 313 555 2833
-facsimiletelephonenumber: +1 313 555 8688
-telephonenumber: +1 313 555 7334
-
-dn: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST
-objectclass: OpenLDAPperson
-cn: Jane Doe
-cn: Jane Alverson
-sn: Doe
-uid: jdoe
-title: Programmer Analyst, UM Alumni Association
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
-drink: diet coke
-description: Enthusiastic
-mail: jdoe@woof.net
-homephone: +1 313 555 5445
-pager: +1 313 555 1220
-facsimiletelephonenumber: +1 313 555 2311
-telephonenumber: +1 313 555 4774
-
-dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michigan
- ,c=TEST
-objectclass: OpenLDAPperson
-cn: Jennifer Smith
-cn: Jen Smith
-sn: Smith
-uid: jen
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-drink: Sam Adams
-homepostaladdress: 1000 Maple #44 $ Ann Arbor, MI 48103
-title: Telemarketer, UM Alumni Association
-mail: jen@mail.alumni.example.com
-homephone: +1 313 555 2333
-pager: +1 313 555 6442
-facsimiletelephonenumber: +1 313 555 2756
-telephonenumber: +1 313 555 8232
-
-dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University of M
- ichigan,c=TEST
-objectclass: OpenLDAPperson
-cn: John Doe
-cn: Jonathon Doe
-sn: Doe
-uid: johnd
-postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-homepostaladdress: 912 East Bllvd $ Ann Arbor, MI 48104
-title: System Administrator, Information Technology Division
-description: overworked!
-mail: johnd@mailgw.example.com
-homephone: +1 313 555 3774
-pager: +1 313 555 6573
-facsimiletelephonenumber: +1 313 555 4544
-telephonenumber: +1 313 555 9394
-
-dn: cn=Manager,o=University of Michigan,c=TEST
-objectclass: person
-cn: Manager
-cn: Directory Manager
-cn: Dir Man
-sn: Manager
-description: Manager of the directory
-userpassword:: c2VjcmV0
-
-dn: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michigan,c=
- TEST
-objectclass: OpenLDAPperson
-cn: Mark Elliot
-cn: Mark A Elliot
-sn: Elliot
-uid: melliot
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-homepostaladdress: 199 Outer Drive $ Ypsilanti, MI 48198
-homephone: +1 313 555 0388
-drink: Gasoline
-title: Director, UM Alumni Association
-mail: melliot@mail.alumni.example.com
-pager: +1 313 555 7671
-facsimiletelephonenumber: +1 313 555 7762
-telephonenumber: +1 313 555 4177
-
-dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michiga
- n,c=TEST
-objectclass: OpenLDAPperson
-cn: Ursula Hampster
-sn: Hampster
-uid: uham
-title: Secretary, UM Alumni Association
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=TEST
-homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
-mail: uham@mail.alumni.example.com
-description: a long attribute name, longer than 128 bytes so that we
- trigger sign extension problems in tdb_pack, no thats not long enough
- yet, maybe this is. I'll just keep going till it triggers the error
-homephone: +1 313 555 8421
-pager: +1 313 555 2844
-facsimiletelephonenumber: +1 313 555 9700
-telephonenumber: +1 313 555 5331
diff --git a/source/lib/ldb/tests/testdata.txt b/source/lib/ldb/tests/testdata.txt
deleted file mode 100644
index dadb9f0f98e..00000000000
--- a/source/lib/ldb/tests/testdata.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-foo=bar5
-(&(|(a=b)(c=d))(e=f))
-(&(|(a=b)(c=d)(g=h))(e=f))
-name=firstname lastname
-(&(sid=S-1-2-3)(name = fred bloggs))
-(&(|(a=b)(c=d))(g=f))
-(&(sid=S-1-2-3)(!(name = fred bloggs)))
-(&(!(|(a=b)(c=d))(g=f)))
diff --git a/source/lib/ldb/tests/testsearch.txt b/source/lib/ldb/tests/testsearch.txt
deleted file mode 100644
index c5738639b7f..00000000000
--- a/source/lib/ldb/tests/testsearch.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(blah=foo)
-(objectclass=person)
-(dn=*)
-(&(objectclass=person)(objectclass=person))
-(&(objectclass=person)(objectclass=personx))
diff --git a/source/lib/ldb/tools/ad2oLschema.c b/source/lib/ldb/tools/ad2oLschema.c
deleted file mode 100644
index 62c6e01c2e2..00000000000
--- a/source/lib/ldb/tools/ad2oLschema.c
+++ /dev/null
@@ -1,630 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Bartlett 2006
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ad2oLschema
- *
- * Description: utility to convert an AD schema into the format required by OpenLDAP
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "system/locale.h"
-#include "ldb/tools/cmdline.h"
-#include "ldb/tools/convert.h"
-
-struct schema_conv {
- int count;
- int skipped;
- int failures;
-};
-
-enum convert_target {
- TARGET_OPENLDAP,
- TARGET_FEDORA_DS
-};
-
-
-static void usage(void)
-{
- printf("Usage: ad2oLschema <options>\n");
- printf("\nConvert AD-like LDIF to OpenLDAP schema format\n\n");
- printf("Options:\n");
- printf(" -I inputfile inputfile of mapped OIDs and skipped attributes/ObjectClasses");
- printf(" -H url LDB or LDAP server to read schmea from\n");
- printf(" -O outputfile outputfile otherwise STDOUT\n");
- printf(" -o options pass options like modules to activate\n");
- printf(" e.g: -o modules:timestamps\n");
- printf("\n");
- printf("Converts records from an AD-like LDIF schema into an openLdap formatted schema\n\n");
- exit(1);
-}
-
-static int fetch_attrs_schema(struct ldb_context *ldb, struct ldb_dn *schemadn,
- TALLOC_CTX *mem_ctx,
- struct ldb_result **attrs_res)
-{
- TALLOC_CTX *local_ctx = talloc_new(mem_ctx);
- int ret;
- const char *attrs[] = {
- "lDAPDisplayName",
- "isSingleValued",
- "attributeID",
- "attributeSyntax",
- "description",
- NULL
- };
-
- if (!local_ctx) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Downlaod schema */
- ret = ldb_search(ldb, schemadn, LDB_SCOPE_SUBTREE,
- "objectClass=attributeSchema",
- attrs, attrs_res);
- if (ret != LDB_SUCCESS) {
- printf("Search failed: %s\n", ldb_errstring(ldb));
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- return ret;
-}
-
-static const char *oc_attrs[] = {
- "lDAPDisplayName",
- "mayContain",
- "mustContain",
- "systemMayContain",
- "systemMustContain",
- "objectClassCategory",
- "governsID",
- "description",
- "subClassOf",
- NULL
-};
-
-static int fetch_oc_recursive(struct ldb_context *ldb, struct ldb_dn *schemadn,
- TALLOC_CTX *mem_ctx,
- struct ldb_result *search_from,
- struct ldb_result *res_list)
-{
- int i;
- int ret = 0;
- for (i=0; i < search_from->count; i++) {
- struct ldb_result *res;
- const char *name = ldb_msg_find_attr_as_string(search_from->msgs[i],
- "lDAPDisplayname", NULL);
- char *filter = talloc_asprintf(mem_ctx, "(&(&(objectClass=classSchema)(subClassOf=%s))(!(lDAPDisplayName=%s)))",
- name, name);
-
- ret = ldb_search(ldb, schemadn, LDB_SCOPE_SUBTREE,
- filter,
- oc_attrs, &res);
- talloc_free(filter);
- if (ret != LDB_SUCCESS) {
- printf("Search failed: %s\n", ldb_errstring(ldb));
- return ret;
- }
-
- talloc_steal(mem_ctx, res);
-
- res_list->msgs = talloc_realloc(res_list, res_list->msgs,
- struct ldb_message *, res_list->count + 2);
- if (!res_list->msgs) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
- res_list->msgs[res_list->count] = talloc_move(res_list,
- &search_from->msgs[i]);
- res_list->count++;
- res_list->msgs[res_list->count] = NULL;
-
- if (res->count > 0) {
- ret = fetch_oc_recursive(ldb, schemadn, mem_ctx, res, res_list);
- }
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
- return ret;
-}
-
-static int fetch_objectclass_schema(struct ldb_context *ldb, struct ldb_dn *schemadn,
- TALLOC_CTX *mem_ctx,
- struct ldb_result **objectclasses_res)
-{
- TALLOC_CTX *local_ctx = talloc_new(mem_ctx);
- struct ldb_result *top_res, *ret_res;
- int ret;
- if (!local_ctx) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Downlaod 'top' */
- ret = ldb_search(ldb, schemadn, LDB_SCOPE_SUBTREE,
- "(&(objectClass=classSchema)(lDAPDisplayName=top))",
- oc_attrs, &top_res);
- if (ret != LDB_SUCCESS) {
- printf("Search failed: %s\n", ldb_errstring(ldb));
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- talloc_steal(local_ctx, top_res);
-
- if (top_res->count != 1) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret_res = talloc_zero(local_ctx, struct ldb_result);
- if (!ret_res) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = fetch_oc_recursive(ldb, schemadn, local_ctx, top_res, ret_res);
-
- if (ret != LDB_SUCCESS) {
- printf("Search failed: %s\n", ldb_errstring(ldb));
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- *objectclasses_res = talloc_move(mem_ctx, &ret_res);
- return ret;
-}
-
-static struct ldb_dn *find_schema_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx)
-{
- const char *rootdse_attrs[] = {"schemaNamingContext", NULL};
- struct ldb_dn *schemadn;
- struct ldb_dn *basedn = ldb_dn_explode(mem_ctx, "");
- struct ldb_result *rootdse_res;
- int ldb_ret;
- if (!basedn) {
- return NULL;
- }
-
- /* Search for rootdse */
- ldb_ret = ldb_search(ldb, basedn, LDB_SCOPE_BASE, NULL, rootdse_attrs, &rootdse_res);
- if (ldb_ret != LDB_SUCCESS) {
- printf("Search failed: %s\n", ldb_errstring(ldb));
- return NULL;
- }
-
- talloc_steal(mem_ctx, rootdse_res);
-
- if (rootdse_res->count != 1) {
- printf("Failed to find rootDSE");
- return NULL;
- }
-
- /* Locate schema */
- schemadn = ldb_msg_find_attr_as_dn(mem_ctx, rootdse_res->msgs[0], "schemaNamingContext");
- if (!schemadn) {
- return NULL;
- }
-
- talloc_free(rootdse_res);
- return schemadn;
-}
-
-#define IF_NULL_FAIL_RET(x) do { \
- if (!x) { \
- ret.failures++; \
- return ret; \
- } \
- } while (0)
-
-
-static struct schema_conv process_convert(struct ldb_context *ldb, enum convert_target target, FILE *in, FILE *out)
-{
- /* Read list of attributes to skip, OIDs to map */
- TALLOC_CTX *mem_ctx = talloc_new(ldb);
- char *line;
- const char **attrs_skip = NULL;
- int num_skip = 0;
- struct oid_map {
- char *old_oid;
- char *new_oid;
- } *oid_map = NULL;
- int num_maps = 0;
- struct ldb_result *attrs_res, *objectclasses_res;
- struct ldb_dn *schemadn;
- struct schema_conv ret;
-
- int ldb_ret, i;
-
- ret.count = 0;
- ret.skipped = 0;
- ret.failures = 0;
-
- while ((line = afdgets(fileno(in), mem_ctx, 0))) {
- /* Blank Line */
- if (line[0] == '\0') {
- continue;
- }
- /* Comment */
- if (line[0] == '#') {
- continue;
- }
- if (isdigit(line[0])) {
- char *p = strchr(line, ':');
- IF_NULL_FAIL_RET(p);
- if (!p) {
- ret.failures = 1;
- return ret;
- }
- p[0] = '\0';
- p++;
- oid_map = talloc_realloc(mem_ctx, oid_map, struct oid_map, num_maps + 2);
- trim_string(line, " ", " ");
- oid_map[num_maps].old_oid = talloc_move(oid_map, &line);
- trim_string(p, " ", " ");
- oid_map[num_maps].new_oid = p;
- num_maps++;
- oid_map[num_maps].old_oid = NULL;
- } else {
- attrs_skip = talloc_realloc(mem_ctx, attrs_skip, const char *, num_skip + 2);
- trim_string(line, " ", " ");
- attrs_skip[num_skip] = talloc_move(attrs_skip, &line);
- num_skip++;
- attrs_skip[num_skip] = NULL;
- }
- }
-
- schemadn = find_schema_dn(ldb, mem_ctx);
- if (!schemadn) {
- printf("Failed to find schema DN: %s\n", ldb_errstring(ldb));
- ret.failures = 1;
- return ret;
- }
-
- ldb_ret = fetch_attrs_schema(ldb, schemadn, mem_ctx, &attrs_res);
- if (ldb_ret != LDB_SUCCESS) {
- printf("Failed to fetch attribute schema: %s\n", ldb_errstring(ldb));
- ret.failures = 1;
- return ret;
- }
-
- switch (target) {
- case TARGET_OPENLDAP:
- break;
- case TARGET_FEDORA_DS:
- fprintf(out, "dn: cn=schema\n");
- break;
- }
-
- for (i=0; i < attrs_res->count; i++) {
- struct ldb_message *msg = attrs_res->msgs[i];
-
- const char *name = ldb_msg_find_attr_as_string(msg, "lDAPDisplayName", NULL);
- const char *description = ldb_msg_find_attr_as_string(msg, "description", NULL);
- const char *oid = ldb_msg_find_attr_as_string(msg, "attributeID", NULL);
- const char *syntax = ldb_msg_find_attr_as_string(msg, "attributeSyntax", NULL);
- BOOL single_value = ldb_msg_find_attr_as_bool(msg, "isSingleValued", False);
- const struct syntax_map *map = find_syntax_map_by_ad_oid(syntax);
- char *schema_entry = NULL;
- int j;
-
- /* We have been asked to skip some attributes/objectClasses */
- if (attrs_skip && str_list_check_ci(attrs_skip, name)) {
- ret.skipped++;
- continue;
- }
-
- /* We might have been asked to remap this oid, due to a conflict */
- for (j=0; oid && oid_map[j].old_oid; j++) {
- if (strcmp(oid, oid_map[j].old_oid) == 0) {
- oid = oid_map[j].new_oid;
- break;
- }
- }
-
- switch (target) {
- case TARGET_OPENLDAP:
- schema_entry = talloc_asprintf(mem_ctx,
- "attributetype (\n"
- " %s\n", oid);
- break;
- case TARGET_FEDORA_DS:
- schema_entry = talloc_asprintf(mem_ctx,
- "attributeTypes: (\n"
- " %s\n", oid);
- break;
- }
- IF_NULL_FAIL_RET(schema_entry);
-
- schema_entry = talloc_asprintf_append(schema_entry,
- " NAME '%s'\n", name);
- IF_NULL_FAIL_RET(schema_entry);
-
- if (description) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " DESC %s\n", description);
- IF_NULL_FAIL_RET(schema_entry);
- }
-
- if (map) {
- const char *syntax_oid;
- if (map->equality) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " EQUALITY %s\n", map->equality);
- IF_NULL_FAIL_RET(schema_entry);
- }
- if (map->substring) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " SUBSTR %s\n", map->substring);
- IF_NULL_FAIL_RET(schema_entry);
- }
- syntax_oid = map->Standard_OID;
- /* We might have been asked to remap this oid,
- * due to a conflict, or lack of
- * implementation */
- for (j=0; syntax_oid && oid_map[j].old_oid; j++) {
- if (strcmp(syntax_oid, oid_map[j].old_oid) == 0) {
- syntax_oid = oid_map[j].new_oid;
- break;
- }
- }
- schema_entry = talloc_asprintf_append(schema_entry,
- " SYNTAX %s\n", syntax_oid);
- IF_NULL_FAIL_RET(schema_entry);
- }
-
- if (single_value) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " SINGLE-VALUE\n");
- IF_NULL_FAIL_RET(schema_entry);
- }
-
- schema_entry = talloc_asprintf_append(schema_entry,
- " )");
-
- switch (target) {
- case TARGET_OPENLDAP:
- fprintf(out, "%s\n\n", schema_entry);
- break;
- case TARGET_FEDORA_DS:
- fprintf(out, "%s\n", schema_entry);
- break;
- }
- ret.count++;
- }
-
- ldb_ret = fetch_objectclass_schema(ldb, schemadn, mem_ctx, &objectclasses_res);
- if (ldb_ret != LDB_SUCCESS) {
- printf("Failed to fetch objectClass schema elements: %s\n", ldb_errstring(ldb));
- ret.failures = 1;
- return ret;
- }
-
- for (i=0; i < objectclasses_res->count; i++) {
- struct ldb_message *msg = objectclasses_res->msgs[i];
- const char *name = ldb_msg_find_attr_as_string(msg, "lDAPDisplayName", NULL);
- const char *description = ldb_msg_find_attr_as_string(msg, "description", NULL);
- const char *oid = ldb_msg_find_attr_as_string(msg, "governsID", NULL);
- const char *subClassOf = ldb_msg_find_attr_as_string(msg, "subClassOf", NULL);
- int objectClassCategory = ldb_msg_find_attr_as_int(msg, "objectClassCategory", 0);
- struct ldb_message_element *must = ldb_msg_find_element(msg, "mustContain");
- struct ldb_message_element *sys_must = ldb_msg_find_element(msg, "systemMustContain");
- struct ldb_message_element *may = ldb_msg_find_element(msg, "mayContain");
- struct ldb_message_element *sys_may = ldb_msg_find_element(msg, "systemMayContain");
- char *schema_entry = NULL;
- int j;
-
- /* We have been asked to skip some attributes/objectClasses */
- if (attrs_skip && str_list_check_ci(attrs_skip, name)) {
- ret.skipped++;
- continue;
- }
-
- /* We might have been asked to remap this oid, due to a conflict */
- for (j=0; oid_map[j].old_oid; j++) {
- if (strcmp(oid, oid_map[j].old_oid) == 0) {
- oid = oid_map[j].new_oid;
- break;
- }
- }
-
- switch (target) {
- case TARGET_OPENLDAP:
- schema_entry = talloc_asprintf(mem_ctx,
- "objectclass (\n"
- " %s\n", oid);
- break;
- case TARGET_FEDORA_DS:
- schema_entry = talloc_asprintf(mem_ctx,
- "objectClasses: (\n"
- " %s\n", oid);
- break;
- }
- IF_NULL_FAIL_RET(schema_entry);
- if (!schema_entry) {
- ret.failures++;
- break;
- }
-
- schema_entry = talloc_asprintf_append(schema_entry,
- " NAME '%s'\n", name);
- IF_NULL_FAIL_RET(schema_entry);
-
- if (!schema_entry) return ret;
-
- if (description) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " DESC %s\n", description);
- IF_NULL_FAIL_RET(schema_entry);
- }
-
- if (subClassOf) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " SUP %s\n", subClassOf);
- IF_NULL_FAIL_RET(schema_entry);
- }
-
- switch (objectClassCategory) {
- case 1:
- schema_entry = talloc_asprintf_append(schema_entry,
- " STRUCTURAL\n");
- IF_NULL_FAIL_RET(schema_entry);
- break;
- case 2:
- schema_entry = talloc_asprintf_append(schema_entry,
- " ABSTRACT\n");
- IF_NULL_FAIL_RET(schema_entry);
- break;
- case 3:
- schema_entry = talloc_asprintf_append(schema_entry,
- " AUXILIARY\n");
- IF_NULL_FAIL_RET(schema_entry);
- break;
- }
-
-#define APPEND_ATTRS(attributes) \
- do { \
- int k; \
- for (k=0; attributes && k < attributes->num_values; k++) { \
- schema_entry = talloc_asprintf_append(schema_entry, \
- " %s", \
- (const char *)attributes->values[k].data); \
- IF_NULL_FAIL_RET(schema_entry); \
- if (k != (attributes->num_values - 1)) { \
- schema_entry = talloc_asprintf_append(schema_entry, \
- " $"); \
- IF_NULL_FAIL_RET(schema_entry); \
- if (target == TARGET_OPENLDAP && ((k+1)%5 == 0)) { \
- schema_entry = talloc_asprintf_append(schema_entry, \
- "\n "); \
- IF_NULL_FAIL_RET(schema_entry); \
- } \
- } \
- } \
- } while (0)
-
- if (must || sys_must) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " MUST (");
- IF_NULL_FAIL_RET(schema_entry);
-
- APPEND_ATTRS(must);
- if (must && sys_must) {
- schema_entry = talloc_asprintf_append(schema_entry, \
- " $"); \
- }
- APPEND_ATTRS(sys_must);
-
- schema_entry = talloc_asprintf_append(schema_entry,
- " )\n");
- IF_NULL_FAIL_RET(schema_entry);
- }
-
- if (may || sys_may) {
- schema_entry = talloc_asprintf_append(schema_entry,
- " MAY (");
- IF_NULL_FAIL_RET(schema_entry);
-
- APPEND_ATTRS(may);
- if (may && sys_may) {
- schema_entry = talloc_asprintf_append(schema_entry, \
- " $"); \
- }
- APPEND_ATTRS(sys_may);
-
- schema_entry = talloc_asprintf_append(schema_entry,
- " )\n");
- IF_NULL_FAIL_RET(schema_entry);
- }
-
- schema_entry = talloc_asprintf_append(schema_entry,
- " )");
-
- switch (target) {
- case TARGET_OPENLDAP:
- fprintf(out, "%s\n\n", schema_entry);
- break;
- case TARGET_FEDORA_DS:
- fprintf(out, "%s\n", schema_entry);
- break;
- }
- ret.count++;
- }
-
- return ret;
-}
-
- int main(int argc, const char **argv)
-{
- TALLOC_CTX *ctx;
- struct ldb_cmdline *options;
- FILE *in = stdin;
- FILE *out = stdout;
- struct ldb_context *ldb;
- struct schema_conv ret;
- const char *target_str;
- enum convert_target target;
-
- ldb_global_init();
-
- ctx = talloc_new(NULL);
- ldb = ldb_init(ctx);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- if (options->input) {
- in = fopen(options->input, "r");
- if (!in) {
- perror(options->input);
- exit(1);
- }
- }
- if (options->output) {
- out = fopen(options->output, "w");
- if (!out) {
- perror(options->output);
- exit(1);
- }
- }
-
- target_str = lp_parm_string(-1, "convert", "target");
-
- if (!target_str || strcasecmp(target_str, "openldap") == 0) {
- target = TARGET_OPENLDAP;
- } else if (strcasecmp(target_str, "fedora-ds") == 0) {
- target = TARGET_FEDORA_DS;
- } else {
- printf("Unsupported target: %s\n", target_str);
- exit(1);
- }
-
- ret = process_convert(ldb, target, in, out);
-
- fclose(in);
- fclose(out);
-
- printf("Converted %d records (skipped %d) with %d failures\n", ret.count, ret.skipped, ret.failures);
-
- return 0;
-}
diff --git a/source/lib/ldb/tools/cmdline.c b/source/lib/ldb/tools/cmdline.c
deleted file mode 100644
index 8eb7a7e9525..00000000000
--- a/source/lib/ldb/tools/cmdline.c
+++ /dev/null
@@ -1,755 +0,0 @@
-/*
- ldb database library - command line handling for ldb tools
-
- Copyright (C) Andrew Tridgell 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-#if (_SAMBA_BUILD_ >= 4)
-#include "lib/cmdline/popt_common.h"
-#include "lib/ldb/samba/ldif_handlers.h"
-#include "auth/gensec/gensec.h"
-#include "auth/auth.h"
-#include "db_wrap.h"
-#endif
-
-
-
-/*
- process command line options
-*/
-struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const char **argv,
- void (*usage)(void))
-{
- static struct ldb_cmdline options; /* needs to be static for older compilers */
- struct ldb_cmdline *ret=NULL;
- poptContext pc;
-#if (_SAMBA_BUILD_ >= 4)
- int r;
-#endif
- int num_options = 0;
- int opt;
- int flags = 0;
-
- struct poptOption popt_options[] = {
- POPT_AUTOHELP
- { "url", 'H', POPT_ARG_STRING, &options.url, 0, "database URL", "URL" },
- { "basedn", 'b', POPT_ARG_STRING, &options.basedn, 0, "base DN", "DN" },
- { "editor", 'e', POPT_ARG_STRING, &options.editor, 0, "external editor", "PROGRAM" },
- { "scope", 's', POPT_ARG_STRING, NULL, 's', "search scope", "SCOPE" },
- { "verbose", 'v', POPT_ARG_NONE, NULL, 'v', "increase verbosity", NULL },
- { "interactive", 'i', POPT_ARG_NONE, &options.interactive, 0, "input from stdin", NULL },
- { "recursive", 'r', POPT_ARG_NONE, &options.recursive, 0, "recursive delete", NULL },
- { "num-searches", 0, POPT_ARG_INT, &options.num_searches, 0, "number of test searches", NULL },
- { "num-records", 0, POPT_ARG_INT, &options.num_records, 0, "number of test records", NULL },
- { "all", 'a', POPT_ARG_NONE, &options.all_records, 0, "(|(objectClass=*)(distinguishedName=*))", NULL },
- { "nosync", 0, POPT_ARG_NONE, &options.nosync, 0, "non-synchronous transactions", NULL },
- { "sorted", 'S', POPT_ARG_NONE, &options.sorted, 0, "sort attributes", NULL },
- { "sasl-mechanism", 0, POPT_ARG_STRING, &options.sasl_mechanism, 0, "choose SASL mechanism", "MECHANISM" },
- { "input", 'I', POPT_ARG_STRING, &options.input, 0, "Input File", "Input" },
- { "output", 'O', POPT_ARG_STRING, &options.output, 0, "Output File", "Output" },
- { NULL, 'o', POPT_ARG_STRING, NULL, 'o', "ldb_connect option", "OPTION" },
- { "controls", 0, POPT_ARG_STRING, NULL, 'c', "controls", NULL },
-#if (_SAMBA_BUILD_ >= 4)
- POPT_COMMON_SAMBA
- POPT_COMMON_CREDENTIALS
- POPT_COMMON_VERSION
-#endif
- { NULL }
- };
-
- ldb_global_init();
-
-#if (_SAMBA_BUILD_ >= 4)
- r = ldb_register_samba_handlers(ldb);
- if (r != 0) {
- goto failed;
- }
-
-#endif
-
- ret = talloc_zero(ldb, struct ldb_cmdline);
- if (ret == NULL) {
- ldb_oom(ldb);
- goto failed;
- }
-
- options = *ret;
-
- /* pull in URL */
- options.url = getenv("LDB_URL");
-
- /* and editor (used by ldbedit) */
- options.editor = getenv("VISUAL");
- if (!options.editor) {
- options.editor = getenv("EDITOR");
- }
- if (!options.editor) {
- options.editor = "vi";
- }
-
- options.scope = LDB_SCOPE_DEFAULT;
-
- pc = poptGetContext(argv[0], argc, argv, popt_options,
- POPT_CONTEXT_KEEP_FIRST);
-
- while((opt = poptGetNextOpt(pc)) != -1) {
- switch (opt) {
- case 's': {
- const char *arg = poptGetOptArg(pc);
- if (strcmp(arg, "base") == 0) {
- options.scope = LDB_SCOPE_BASE;
- } else if (strcmp(arg, "sub") == 0) {
- options.scope = LDB_SCOPE_SUBTREE;
- } else if (strcmp(arg, "one") == 0) {
- options.scope = LDB_SCOPE_ONELEVEL;
- } else {
- fprintf(stderr, "Invalid scope '%s'\n", arg);
- goto failed;
- }
- break;
- }
-
- case 'v':
- options.verbose++;
- break;
-
- case 'o':
- options.options = talloc_realloc(ret, options.options,
- const char *, num_options+3);
- if (options.options == NULL) {
- ldb_oom(ldb);
- goto failed;
- }
- options.options[num_options] = poptGetOptArg(pc);
- options.options[num_options+1] = NULL;
- num_options++;
- break;
-
- case 'c': {
- const char *cs = poptGetOptArg(pc);
- const char *p, *q;
- int cc;
-
- for (p = cs, cc = 1; (q = strchr(p, ',')); cc++, p = q + 1) ;
-
- options.controls = talloc_array(ret, char *, cc + 1);
- if (options.controls == NULL) {
- ldb_oom(ldb);
- goto failed;
- }
- for (p = cs, cc = 0; p != NULL; cc++) {
- const char *t;
-
- t = strchr(p, ',');
- if (t == NULL) {
- options.controls[cc] = talloc_strdup(options.controls, p);
- p = NULL;
- } else {
- options.controls[cc] = talloc_strndup(options.controls, p, t-p);
- p = t + 1;
- }
- }
- options.controls[cc] = NULL;
-
- break;
- }
- default:
- fprintf(stderr, "Invalid option %s: %s\n",
- poptBadOption(pc, 0), poptStrerror(opt));
- if (usage) usage();
- goto failed;
- }
- }
-
- /* setup the remaining options for the main program to use */
- options.argv = poptGetArgs(pc);
- if (options.argv) {
- options.argv++;
- while (options.argv[options.argc]) options.argc++;
- }
-
- *ret = options;
-
- /* all utils need some option */
- if (ret->url == NULL) {
- fprintf(stderr, "You must supply a url with -H or with $LDB_URL\n");
- if (usage) usage();
- goto failed;
- }
-
- if (strcmp(ret->url, "NONE") == 0) {
- return ret;
- }
-
- if (options.nosync) {
- flags |= LDB_FLG_NOSYNC;
- }
-
-#if (_SAMBA_BUILD_ >= 4)
- /* Must be after we have processed command line options */
- gensec_init();
-
- if (ldb_set_opaque(ldb, "sessionInfo", system_session(ldb))) {
- goto failed;
- }
- if (ldb_set_opaque(ldb, "credentials", cmdline_credentials)) {
- goto failed;
- }
- ldb_set_utf8_fns(ldb, NULL, wrap_casefold);
-#endif
-
- /* now connect to the ldb */
- if (ldb_connect(ldb, ret->url, flags, ret->options) != 0) {
- fprintf(stderr, "Failed to connect to %s - %s\n",
- ret->url, ldb_errstring(ldb));
- goto failed;
- }
-
- return ret;
-
-failed:
- talloc_free(ret);
- exit(1);
- return NULL;
-}
-
-struct ldb_control **parse_controls(void *mem_ctx, char **control_strings)
-{
- int i;
- struct ldb_control **ctrl;
-
- if (control_strings == NULL || control_strings[0] == NULL)
- return NULL;
-
- for (i = 0; control_strings[i]; i++);
-
- ctrl = talloc_array(mem_ctx, struct ldb_control *, i + 1);
-
- for (i = 0; control_strings[i]; i++) {
- if (strncmp(control_strings[i], "vlv:", 4) == 0) {
- struct ldb_vlv_req_control *control;
- const char *p;
- char attr[1024];
- char ctxid[1024];
- int crit, bc, ac, os, cc, ret;
-
- attr[0] = '\0';
- ctxid[0] = '\0';
- p = &(control_strings[i][4]);
- ret = sscanf(p, "%d:%d:%d:%d:%d:%1023[^$]", &crit, &bc, &ac, &os, &cc, ctxid);
- if (ret < 5) {
- ret = sscanf(p, "%d:%d:%d:%1023[^:]:%1023[^$]", &crit, &bc, &ac, attr, ctxid);
- }
-
- if ((ret < 4) || (crit < 0) || (crit > 1)) {
- fprintf(stderr, "invalid server_sort control syntax\n");
- fprintf(stderr, " syntax: crit(b):bc(n):ac(n):<os(n):cc(n)|attr(s)>[:ctxid(o)]\n");
- fprintf(stderr, " note: b = boolean, n = number, s = string, o = b64 binary blob\n");
- return NULL;
- }
- if (!(ctrl[i] = talloc(ctrl, struct ldb_control))) {
- fprintf(stderr, "talloc failed\n");
- return NULL;
- }
- ctrl[i]->oid = LDB_CONTROL_VLV_REQ_OID;
- ctrl[i]->critical = crit;
- if (!(control = talloc(ctrl[i],
- struct ldb_vlv_req_control))) {
- fprintf(stderr, "talloc failed\n");
- return NULL;
- }
- control->beforeCount = bc;
- control->afterCount = ac;
- if (attr[0]) {
- control->type = 1;
- control->match.gtOrEq.value = talloc_strdup(control, attr);
- control->match.gtOrEq.value_len = strlen(attr);
- } else {
- control->type = 0;
- control->match.byOffset.offset = os;
- control->match.byOffset.contentCount = cc;
- }
- if (ctxid[0]) {
- control->ctxid_len = ldb_base64_decode(ctxid);
- control->contextId = (char *)talloc_memdup(control, ctxid, control->ctxid_len);
- } else {
- control->ctxid_len = 0;
- control->contextId = NULL;
- }
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "dirsync:", 8) == 0) {
- struct ldb_dirsync_control *control;
- const char *p;
- char cookie[1024];
- int crit, flags, max_attrs, ret;
-
- cookie[0] = '\0';
- p = &(control_strings[i][8]);
- ret = sscanf(p, "%d:%d:%d:%1023[^$]", &crit, &flags, &max_attrs, cookie);
-
- if ((ret < 3) || (crit < 0) || (crit > 1) || (flags < 0) || (max_attrs < 0)) {
- fprintf(stderr, "invalid dirsync control syntax\n");
- fprintf(stderr, " syntax: crit(b):flags(n):max_attrs(n)[:cookie(o)]\n");
- fprintf(stderr, " note: b = boolean, n = number, o = b64 binary blob\n");
- return NULL;
- }
-
- /* w2k3 seems to ignore the parameter,
- * but w2k sends a wrong cookie when this value is to small
- * this would cause looping forever, while getting
- * the same data and same cookie forever
- */
- if (max_attrs == 0) max_attrs = 0x0FFFFFFF;
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_DIRSYNC_OID;
- ctrl[i]->critical = crit;
- control = talloc(ctrl[i], struct ldb_dirsync_control);
- control->flags = flags;
- control->max_attributes = max_attrs;
- if (*cookie) {
- control->cookie_len = ldb_base64_decode(cookie);
- control->cookie = (char *)talloc_memdup(control, cookie, control->cookie_len);
- } else {
- control->cookie = NULL;
- control->cookie_len = 0;
- }
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "asq:", 4) == 0) {
- struct ldb_asq_control *control;
- const char *p;
- char attr[256];
- int crit, ret;
-
- attr[0] = '\0';
- p = &(control_strings[i][4]);
- ret = sscanf(p, "%d:%255[^$]", &crit, attr);
- if ((ret != 2) || (crit < 0) || (crit > 1) || (attr[0] == '\0')) {
- fprintf(stderr, "invalid asq control syntax\n");
- fprintf(stderr, " syntax: crit(b):attr(s)\n");
- fprintf(stderr, " note: b = boolean, s = string\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_ASQ_OID;
- ctrl[i]->critical = crit;
- control = talloc(ctrl[i], struct ldb_asq_control);
- control->request = 1;
- control->source_attribute = talloc_strdup(control, attr);
- control->src_attr_len = strlen(attr);
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "extended_dn:", 12) == 0) {
- struct ldb_extended_dn_control *control;
- const char *p;
- int crit, type, ret;
-
- p = &(control_strings[i][12]);
- ret = sscanf(p, "%d:%d", &crit, &type);
- if ((ret != 2) || (crit < 0) || (crit > 1) || (type < 0) || (type > 1)) {
- fprintf(stderr, "invalid extended_dn control syntax\n");
- fprintf(stderr, " syntax: crit(b):type(b)\n");
- fprintf(stderr, " note: b = boolean\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_EXTENDED_DN_OID;
- ctrl[i]->critical = crit;
- control = talloc(ctrl[i], struct ldb_extended_dn_control);
- control->type = type;
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "sd_flags:", 9) == 0) {
- struct ldb_sd_flags_control *control;
- const char *p;
- int crit, ret;
- unsigned secinfo_flags;
-
- p = &(control_strings[i][9]);
- ret = sscanf(p, "%d:%u", &crit, &secinfo_flags);
- if ((ret != 2) || (crit < 0) || (crit > 1) || (secinfo_flags < 0) || (secinfo_flags > 0xF)) {
- fprintf(stderr, "invalid sd_flags control syntax\n");
- fprintf(stderr, " syntax: crit(b):secinfo_flags(n)\n");
- fprintf(stderr, " note: b = boolean, n = number\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_SD_FLAGS_OID;
- ctrl[i]->critical = crit;
- control = talloc(ctrl[i], struct ldb_sd_flags_control);
- control->secinfo_flags = secinfo_flags;
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "search_options:", 15) == 0) {
- struct ldb_search_options_control *control;
- const char *p;
- int crit, ret;
- unsigned search_options;
-
- p = &(control_strings[i][15]);
- ret = sscanf(p, "%d:%u", &crit, &search_options);
- if ((ret != 2) || (crit < 0) || (crit > 1) || (search_options < 0) || (search_options > 0xF)) {
- fprintf(stderr, "invalid search_options control syntax\n");
- fprintf(stderr, " syntax: crit(b):search_options(n)\n");
- fprintf(stderr, " note: b = boolean, n = number\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_SEARCH_OPTIONS_OID;
- ctrl[i]->critical = crit;
- control = talloc(ctrl[i], struct ldb_search_options_control);
- control->search_options = search_options;
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "domain_scope:", 13) == 0) {
- const char *p;
- int crit, ret;
-
- p = &(control_strings[i][13]);
- ret = sscanf(p, "%d", &crit);
- if ((ret != 1) || (crit < 0) || (crit > 1)) {
- fprintf(stderr, "invalid domain_scope control syntax\n");
- fprintf(stderr, " syntax: crit(b)\n");
- fprintf(stderr, " note: b = boolean\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_DOMAIN_SCOPE_OID;
- ctrl[i]->critical = crit;
- ctrl[i]->data = NULL;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "paged_results:", 14) == 0) {
- struct ldb_paged_control *control;
- const char *p;
- int crit, size, ret;
-
- p = &(control_strings[i][14]);
- ret = sscanf(p, "%d:%d", &crit, &size);
-
- if ((ret != 2) || (crit < 0) || (crit > 1) || (size < 0)) {
- fprintf(stderr, "invalid paged_results control syntax\n");
- fprintf(stderr, " syntax: crit(b):size(n)\n");
- fprintf(stderr, " note: b = boolean, n = number\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_PAGED_RESULTS_OID;
- ctrl[i]->critical = crit;
- control = talloc(ctrl[i], struct ldb_paged_control);
- control->size = size;
- control->cookie = NULL;
- control->cookie_len = 0;
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "server_sort:", 12) == 0) {
- struct ldb_server_sort_control **control;
- const char *p;
- char attr[256];
- char rule[128];
- int crit, rev, ret;
-
- attr[0] = '\0';
- rule[0] = '\0';
- p = &(control_strings[i][12]);
- ret = sscanf(p, "%d:%d:%255[^:]:%127[^:]", &crit, &rev, attr, rule);
- if ((ret < 3) || (crit < 0) || (crit > 1) || (rev < 0 ) || (rev > 1) ||attr[0] == '\0') {
- fprintf(stderr, "invalid server_sort control syntax\n");
- fprintf(stderr, " syntax: crit(b):rev(b):attr(s)[:rule(s)]\n");
- fprintf(stderr, " note: b = boolean, s = string\n");
- return NULL;
- }
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_SERVER_SORT_OID;
- ctrl[i]->critical = crit;
- control = talloc_array(ctrl[i], struct ldb_server_sort_control *, 2);
- control[0] = talloc(control, struct ldb_server_sort_control);
- control[0]->attributeName = talloc_strdup(control, attr);
- if (rule[0])
- control[0]->orderingRule = talloc_strdup(control, rule);
- else
- control[0]->orderingRule = NULL;
- control[0]->reverse = rev;
- control[1] = NULL;
- ctrl[i]->data = control;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "notification:", 13) == 0) {
- const char *p;
- int crit, ret;
-
- p = &(control_strings[i][13]);
- ret = sscanf(p, "%d", &crit);
- if ((ret != 1) || (crit < 0) || (crit > 1)) {
- fprintf(stderr, "invalid notification control syntax\n");
- fprintf(stderr, " syntax: crit(b)\n");
- fprintf(stderr, " note: b = boolean\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_NOTIFICATION_OID;
- ctrl[i]->critical = crit;
- ctrl[i]->data = NULL;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "show_deleted:", 13) == 0) {
- const char *p;
- int crit, ret;
-
- p = &(control_strings[i][13]);
- ret = sscanf(p, "%d", &crit);
- if ((ret != 1) || (crit < 0) || (crit > 1)) {
- fprintf(stderr, "invalid show_deleted control syntax\n");
- fprintf(stderr, " syntax: crit(b)\n");
- fprintf(stderr, " note: b = boolean\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_SHOW_DELETED_OID;
- ctrl[i]->critical = crit;
- ctrl[i]->data = NULL;
-
- continue;
- }
-
- if (strncmp(control_strings[i], "permissive_modify:", 18) == 0) {
- const char *p;
- int crit, ret;
-
- p = &(control_strings[i][18]);
- ret = sscanf(p, "%d", &crit);
- if ((ret != 1) || (crit < 0) || (crit > 1)) {
- fprintf(stderr, "invalid permissive_modify control syntax\n");
- fprintf(stderr, " syntax: crit(b)\n");
- fprintf(stderr, " note: b = boolean\n");
- return NULL;
- }
-
- ctrl[i] = talloc(ctrl, struct ldb_control);
- ctrl[i]->oid = LDB_CONTROL_PERMISSIVE_MODIFY_OID;
- ctrl[i]->critical = crit;
- ctrl[i]->data = NULL;
-
- continue;
- }
-
- /* no controls matched, throw an error */
- fprintf(stderr, "Invalid control name: '%s'\n", control_strings[i]);
- return NULL;
- }
-
- ctrl[i] = NULL;
-
- return ctrl;
-}
-
-
-/* this function check controls reply and determines if more
- * processing is needed setting up the request controls correctly
- *
- * returns:
- * -1 error
- * 0 all ok
- * 1 all ok, more processing required
- */
-int handle_controls_reply(struct ldb_control **reply, struct ldb_control **request)
-{
- int i, j;
- int ret = 0;
-
- if (reply == NULL || request == NULL) return -1;
-
- for (i = 0; reply[i]; i++) {
- if (strcmp(LDB_CONTROL_VLV_RESP_OID, reply[i]->oid) == 0) {
- struct ldb_vlv_resp_control *rep_control;
-
- rep_control = talloc_get_type(reply[i]->data, struct ldb_vlv_resp_control);
-
- /* check we have a matching control in the request */
- for (j = 0; request[j]; j++) {
- if (strcmp(LDB_CONTROL_VLV_REQ_OID, request[j]->oid) == 0)
- break;
- }
- if (! request[j]) {
- fprintf(stderr, "Warning VLV reply received but no request have been made\n");
- continue;
- }
-
- /* check the result */
- if (rep_control->vlv_result != 0) {
- fprintf(stderr, "Warning: VLV not performed with error: %d\n", rep_control->vlv_result);
- } else {
- fprintf(stderr, "VLV Info: target position = %d, content count = %d\n", rep_control->targetPosition, rep_control->contentCount);
- }
-
- continue;
- }
-
- if (strcmp(LDB_CONTROL_ASQ_OID, reply[i]->oid) == 0) {
- struct ldb_asq_control *rep_control;
-
- rep_control = talloc_get_type(reply[i]->data, struct ldb_asq_control);
-
- /* check the result */
- if (rep_control->result != 0) {
- fprintf(stderr, "Warning: ASQ not performed with error: %d\n", rep_control->result);
- }
-
- continue;
- }
-
- if (strcmp(LDB_CONTROL_PAGED_RESULTS_OID, reply[i]->oid) == 0) {
- struct ldb_paged_control *rep_control, *req_control;
-
- rep_control = talloc_get_type(reply[i]->data, struct ldb_paged_control);
- if (rep_control->cookie_len == 0) /* we are done */
- break;
-
- /* more processing required */
- /* let's fill in the request control with the new cookie */
-
- for (j = 0; request[j]; j++) {
- if (strcmp(LDB_CONTROL_PAGED_RESULTS_OID, request[j]->oid) == 0)
- break;
- }
- /* if there's a reply control we must find a request
- * control matching it */
- if (! request[j]) return -1;
-
- req_control = talloc_get_type(request[j]->data, struct ldb_paged_control);
-
- if (req_control->cookie)
- talloc_free(req_control->cookie);
- req_control->cookie = (char *)talloc_memdup(
- req_control, rep_control->cookie,
- rep_control->cookie_len);
- req_control->cookie_len = rep_control->cookie_len;
-
- ret = 1;
-
- continue;
- }
-
- if (strcmp(LDB_CONTROL_SORT_RESP_OID, reply[i]->oid) == 0) {
- struct ldb_sort_resp_control *rep_control;
-
- rep_control = talloc_get_type(reply[i]->data, struct ldb_sort_resp_control);
-
- /* check we have a matching control in the request */
- for (j = 0; request[j]; j++) {
- if (strcmp(LDB_CONTROL_SERVER_SORT_OID, request[j]->oid) == 0)
- break;
- }
- if (! request[j]) {
- fprintf(stderr, "Warning Server Sort reply received but no request found\n");
- continue;
- }
-
- /* check the result */
- if (rep_control->result != 0) {
- fprintf(stderr, "Warning: Sorting not performed with error: %d\n", rep_control->result);
- }
-
- continue;
- }
-
- if (strcmp(LDB_CONTROL_DIRSYNC_OID, reply[i]->oid) == 0) {
- struct ldb_dirsync_control *rep_control, *req_control;
- char *cookie;
-
- rep_control = talloc_get_type(reply[i]->data, struct ldb_dirsync_control);
- if (rep_control->cookie_len == 0) /* we are done */
- break;
-
- /* more processing required */
- /* let's fill in the request control with the new cookie */
-
- for (j = 0; request[j]; j++) {
- if (strcmp(LDB_CONTROL_DIRSYNC_OID, request[j]->oid) == 0)
- break;
- }
- /* if there's a reply control we must find a request
- * control matching it */
- if (! request[j]) return -1;
-
- req_control = talloc_get_type(request[j]->data, struct ldb_dirsync_control);
-
- if (req_control->cookie)
- talloc_free(req_control->cookie);
- req_control->cookie = (char *)talloc_memdup(
- req_control, rep_control->cookie,
- rep_control->cookie_len);
- req_control->cookie_len = rep_control->cookie_len;
-
- cookie = ldb_base64_encode(req_control, rep_control->cookie, rep_control->cookie_len);
- printf("# DIRSYNC cookie returned was:\n# %s\n", cookie);
-
- continue;
- }
-
- /* no controls matched, throw a warning */
- fprintf(stderr, "Unknown reply control oid: %s\n", reply[i]->oid);
- }
-
- return ret;
-}
-
diff --git a/source/lib/ldb/tools/cmdline.h b/source/lib/ldb/tools/cmdline.h
deleted file mode 100644
index 0855f77575c..00000000000
--- a/source/lib/ldb/tools/cmdline.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- ldb database library - command line handling for ldb tools
-
- Copyright (C) Andrew Tridgell 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include <popt.h>
-
-struct ldb_cmdline {
- const char *url;
- enum ldb_scope scope;
- const char *basedn;
- int interactive;
- int sorted;
- const char *editor;
- int verbose;
- int recursive;
- int all_records;
- int nosync;
- const char **options;
- int argc;
- const char **argv;
- int num_records;
- int num_searches;
- const char *sasl_mechanism;
- const char *input;
- const char *output;
- char **controls;
-};
-
-struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const char **argv,
- void (*usage)(void));
-
-
-struct ldb_control **parse_controls(void *mem_ctx, char **control_strings);
-int handle_controls_reply(struct ldb_control **reply, struct ldb_control **request);
diff --git a/source/lib/ldb/tools/convert.c b/source/lib/ldb/tools/convert.c
deleted file mode 100644
index 23209700304..00000000000
--- a/source/lib/ldb/tools/convert.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include "convert.h"
-#include "includes.h"
-#include "ldb/include/includes.h"
-
-/* Shared map for converting syntax between formats */
-static const struct syntax_map syntax_map[] = {
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.12",
- .AD_OID = "2.5.5.1",
- .equality = "distinguishedNameMatch",
- .comment = "Object(DS-DN) == a DN"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.38",
- .AD_OID = "2.5.5.2",
- .equality = "objectIdentifierMatch",
- .comment = "OID String"
- },
- {
- .Standard_OID = "1.2.840.113556.1.4.905",
- .AD_OID = "2.5.5.4",
- .equality = "caseIgnoreMatch",
- .substring = "caseIgnoreSubstringsMatch",
- .comment = "Case Insensitive String"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.26",
- .AD_OID = "2.5.5.5",
- .equality = "caseExactIA5Match",
- .comment = "Printable String"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.36",
- .AD_OID = "2.5.5.6",
- .equality = "numericStringMatch",
- .substring = "numericStringSubstringsMatch",
- .comment = "Numeric String"
- },
- {
- .Standard_OID = "1.2.840.113556.1.4.903",
- .AD_OID = "2.5.5.7",
- .equality = "distinguishedNameMatch",
- .comment = "OctetString: Binary+DN"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.7",
- .AD_OID = "2.5.5.8",
- .equality = "booleanMatch",
- .comment = "Boolean"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.27",
- .AD_OID = "2.5.5.9",
- .equality = "integerMatch",
- .comment = "Integer"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.40",
- .AD_OID = "2.5.5.10",
- .equality = "octetStringMatch",
- .comment = "Octet String"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.24",
- .AD_OID = "2.5.5.11",
- .equality = "generalizedTimeMatch",
- .comment = "Generalized Time"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.53",
- .AD_OID = "2.5.5.11",
- .equality = "generalizedTimeMatch",
- .comment = "UTC Time"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.15",
- .AD_OID = "2.5.5.12",
- .equality = "caseIgnoreMatch",
- .substring = "caseIgnoreSubstringsMatch",
- .comment = "Directory String"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.43",
- .AD_OID = "2.5.5.13",
- .comment = "Presentation Address"
- },
- {
- .Standard_OID = "Not Found Yet",
- .AD_OID = "2.5.5.14",
- .equality = "distinguishedNameMatch",
- .comment = "OctetString: String+DN"
- },
- {
- .Standard_OID = "1.2.840.113556.1.4.907",
- .AD_OID = "2.5.5.15",
- .equality = "octetStringMatch",
- .comment = "NT Security Descriptor"
- },
- {
- .Standard_OID = "1.2.840.113556.1.4.906",
- .AD_OID = "2.5.5.16",
- .equality = "integerMatch",
- .comment = "Large Integer"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.40",
- .AD_OID = "2.5.5.17",
- .equality = "octetStringMatch",
- .comment = "Octet String - Security Identifier (SID)"
- },
- {
- .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.26",
- .AD_OID = "2.5.5.5",
- .equality = "caseExactIA5Match",
- .comment = "IA5 String"
- },
- { .Standard_OID = NULL
- }
-};
-
-
-const struct syntax_map *find_syntax_map_by_ad_oid(const char *ad_oid)
-{
- int i;
- for (i=0; syntax_map[i].Standard_OID; i++) {
- if (strcasecmp(ad_oid, syntax_map[i].AD_OID) == 0) {
- return &syntax_map[i];
- }
- }
- return NULL;
-}
-
-const struct syntax_map *find_syntax_map_by_standard_oid(const char *standard_oid)
-{
- int i;
- for (i=0; syntax_map[i].Standard_OID; i++) {
- if (strcasecmp(standard_oid, syntax_map[i].Standard_OID) == 0) {
- return &syntax_map[i];
- }
- }
- return NULL;
-}
diff --git a/source/lib/ldb/tools/convert.h b/source/lib/ldb/tools/convert.h
deleted file mode 100644
index de379343a68..00000000000
--- a/source/lib/ldb/tools/convert.h
+++ /dev/null
@@ -1,10 +0,0 @@
-struct syntax_map {
- const char *Standard_OID;
- const char *AD_OID;
- const char *equality;
- const char *substring;
- const char *comment;
-};
-
-const struct syntax_map *find_syntax_map_by_ad_oid(const char *ad_oid);
-const struct syntax_map *find_syntax_map_by_standard_oid(const char *standard_oid);
diff --git a/source/lib/ldb/tools/ldbadd.c b/source/lib/ldb/tools/ldbadd.c
deleted file mode 100644
index 9595703e92c..00000000000
--- a/source/lib/ldb/tools/ldbadd.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldbadd
- *
- * Description: utility to add records - modelled on ldapadd
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-static int failures;
-
-static void usage(void)
-{
- printf("Usage: ldbadd <options> <ldif...>\n");
- printf("Options:\n");
- printf(" -H ldb_url choose the database (or $LDB_URL)\n");
- printf(" -o options pass options like modules to activate\n");
- printf(" e.g: -o modules:timestamps\n");
- printf("\n");
- printf("Adds records to a ldb, reading ldif the specified list of files\n\n");
- exit(1);
-}
-
-
-/*
- add records from an opened file
-*/
-static int process_file(struct ldb_context *ldb, FILE *f, int *count)
-{
- struct ldb_ldif *ldif;
- int ret = LDB_SUCCESS;
-
- while ((ldif = ldb_ldif_read_file(ldb, f))) {
- if (ldif->changetype != LDB_CHANGETYPE_ADD &&
- ldif->changetype != LDB_CHANGETYPE_NONE) {
- fprintf(stderr, "Only CHANGETYPE_ADD records allowed\n");
- break;
- }
-
- ldif->msg = ldb_msg_canonicalize(ldb, ldif->msg);
-
- ret = ldb_add(ldb, ldif->msg);
- if (ret != LDB_SUCCESS) {
- fprintf(stderr, "ERR: \"%s\" on DN %s\n",
- ldb_errstring(ldb), ldb_dn_linearize(ldb, ldif->msg->dn));
- failures++;
- } else {
- (*count)++;
- }
- ldb_ldif_read_free(ldb, ldif);
- }
-
- return ret;
-}
-
-
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- int i, ret=0, count=0;
- struct ldb_cmdline *options;
-
- ldb_global_init();
-
- ldb = ldb_init(NULL);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- if (options->argc == 0) {
- ret = process_file(ldb, stdin, &count);
- } else {
- for (i=0;i<options->argc;i++) {
- const char *fname = options->argv[i];
- FILE *f;
- f = fopen(fname, "r");
- if (!f) {
- perror(fname);
- exit(1);
- }
- ret = process_file(ldb, f, &count);
- fclose(f);
- }
- }
-
- talloc_free(ldb);
-
- printf("Added %d records with %d failures\n", count, failures);
-
- return ret;
-}
diff --git a/source/lib/ldb/tools/ldbdel.c b/source/lib/ldb/tools/ldbdel.c
deleted file mode 100644
index 94f1da99037..00000000000
--- a/source/lib/ldb/tools/ldbdel.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldbdel
- *
- * Description: utility to delete records - modelled on ldapdelete
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-static int ldb_delete_recursive(struct ldb_context *ldb, const struct ldb_dn *dn)
-{
- int ret, i, total=0;
- const char *attrs[] = { NULL };
- struct ldb_result *res;
-
- ret = ldb_search(ldb, dn, LDB_SCOPE_SUBTREE, "distinguishedName=*", attrs, &res);
- if (ret != LDB_SUCCESS) return -1;
-
- for (i = 0; i < res->count; i++) {
- if (ldb_delete(ldb, res->msgs[i]->dn) == 0) {
- total++;
- }
- }
-
- talloc_free(res);
-
- if (total == 0) {
- return -1;
- }
- printf("Deleted %d records\n", total);
- return 0;
-}
-
-static void usage(void)
-{
- printf("Usage: ldbdel <options> <DN...>\n");
- printf("Options:\n");
- printf(" -r recursively delete the given subtree\n");
- printf(" -H ldb_url choose the database (or $LDB_URL)\n");
- printf(" -o options pass options like modules to activate\n");
- printf(" e.g: -o modules:timestamps\n");
- printf("\n");
- printf("Deletes records from a ldb\n\n");
- exit(1);
-}
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- int ret = 0, i;
- struct ldb_cmdline *options;
-
- ldb_global_init();
-
- ldb = ldb_init(NULL);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- if (options->argc < 1) {
- usage();
- exit(1);
- }
-
- for (i=0;i<options->argc;i++) {
- const struct ldb_dn *dn;
-
- dn = ldb_dn_explode(ldb, options->argv[i]);
- if (dn == NULL) {
- printf("Invalid DN format\n");
- exit(1);
- }
- if (options->recursive) {
- ret = ldb_delete_recursive(ldb, dn);
- } else {
- ret = ldb_delete(ldb, dn);
- if (ret == 0) {
- printf("Deleted 1 record\n");
- }
- }
- if (ret != 0) {
- printf("delete of '%s' failed - %s\n",
- ldb_dn_linearize(ldb, dn),
- ldb_errstring(ldb));
- }
- }
-
- talloc_free(ldb);
-
- return ret;
-}
diff --git a/source/lib/ldb/tools/ldbedit.c b/source/lib/ldb/tools/ldbedit.c
deleted file mode 100644
index 17ade152b78..00000000000
--- a/source/lib/ldb/tools/ldbedit.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldbedit
- *
- * Description: utility for ldb database editing
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-static struct ldb_cmdline *options;
-
-/*
- debug routine
-*/
-static void ldif_write_msg(struct ldb_context *ldb,
- FILE *f,
- enum ldb_changetype changetype,
- struct ldb_message *msg)
-{
- struct ldb_ldif ldif;
- ldif.changetype = changetype;
- ldif.msg = msg;
- ldb_ldif_write_file(ldb, f, &ldif);
-}
-
-/*
- modify a database record so msg1 becomes msg2
- returns the number of modified elements
-*/
-static int modify_record(struct ldb_context *ldb,
- struct ldb_message *msg1,
- struct ldb_message *msg2)
-{
- struct ldb_message *mod;
-
- mod = ldb_msg_diff(ldb, msg1, msg2);
- if (mod == NULL) {
- fprintf(stderr, "Failed to calculate message differences\n");
- return -1;
- }
-
- if (mod->num_elements == 0) {
- return 0;
- }
-
- if (options->verbose > 0) {
- ldif_write_msg(ldb, stdout, LDB_CHANGETYPE_MODIFY, mod);
- }
-
- if (ldb_modify(ldb, mod) != 0) {
- fprintf(stderr, "failed to modify %s - %s\n",
- ldb_dn_linearize(ldb, msg1->dn), ldb_errstring(ldb));
- return -1;
- }
-
- return mod->num_elements;
-}
-
-/*
- find dn in msgs[]
-*/
-static struct ldb_message *msg_find(struct ldb_context *ldb,
- struct ldb_message **msgs,
- int count,
- const struct ldb_dn *dn)
-{
- int i;
- for (i=0;i<count;i++) {
- if (ldb_dn_compare(ldb, dn, msgs[i]->dn) == 0) {
- return msgs[i];
- }
- }
- return NULL;
-}
-
-/*
- merge the changes in msgs2 into the messages from msgs1
-*/
-static int merge_edits(struct ldb_context *ldb,
- struct ldb_message **msgs1, int count1,
- struct ldb_message **msgs2, int count2)
-{
- int i;
- struct ldb_message *msg;
- int ret = 0;
- int adds=0, modifies=0, deletes=0;
-
- /* do the adds and modifies */
- for (i=0;i<count2;i++) {
- msg = msg_find(ldb, msgs1, count1, msgs2[i]->dn);
- if (!msg) {
- if (options->verbose > 0) {
- ldif_write_msg(ldb, stdout, LDB_CHANGETYPE_ADD, msgs2[i]);
- }
- if (ldb_add(ldb, msgs2[i]) != 0) {
- fprintf(stderr, "failed to add %s - %s\n",
- ldb_dn_linearize(ldb, msgs2[i]->dn),
- ldb_errstring(ldb));
- return -1;
- }
- adds++;
- } else {
- if (modify_record(ldb, msg, msgs2[i]) > 0) {
- modifies++;
- }
- }
- }
-
- /* do the deletes */
- for (i=0;i<count1;i++) {
- msg = msg_find(ldb, msgs2, count2, msgs1[i]->dn);
- if (!msg) {
- if (options->verbose > 0) {
- ldif_write_msg(ldb, stdout, LDB_CHANGETYPE_DELETE, msgs1[i]);
- }
- if (ldb_delete(ldb, msgs1[i]->dn) != 0) {
- fprintf(stderr, "failed to delete %s - %s\n",
- ldb_dn_linearize(ldb, msgs1[i]->dn),
- ldb_errstring(ldb));
- return -1;
- }
- deletes++;
- }
- }
-
- printf("# %d adds %d modifies %d deletes\n", adds, modifies, deletes);
-
- return ret;
-}
-
-/*
- save a set of messages as ldif to a file
-*/
-static int save_ldif(struct ldb_context *ldb,
- FILE *f, struct ldb_message **msgs, int count)
-{
- int i;
-
- fprintf(f, "# editing %d records\n", count);
-
- for (i=0;i<count;i++) {
- struct ldb_ldif ldif;
- fprintf(f, "# record %d\n", i+1);
-
- ldif.changetype = LDB_CHANGETYPE_NONE;
- ldif.msg = msgs[i];
-
- ldb_ldif_write_file(ldb, f, &ldif);
- }
-
- return 0;
-}
-
-
-/*
- edit the ldb search results in msgs using the user selected editor
-*/
-static int do_edit(struct ldb_context *ldb, struct ldb_message **msgs1, int count1,
- const char *editor)
-{
- int fd, ret;
- FILE *f;
- char file_template[] = "/tmp/ldbedit.XXXXXX";
- char *cmd;
- struct ldb_ldif *ldif;
- struct ldb_message **msgs2 = NULL;
- int count2 = 0;
-
- /* write out the original set of messages to a temporary
- file */
- fd = mkstemp(file_template);
-
- if (fd == -1) {
- perror(file_template);
- return -1;
- }
-
- f = fdopen(fd, "r+");
-
- if (!f) {
- perror("fopen");
- close(fd);
- unlink(file_template);
- return -1;
- }
-
- if (save_ldif(ldb, f, msgs1, count1) != 0) {
- return -1;
- }
-
- fclose(f);
-
- cmd = talloc_asprintf(ldb, "%s %s", editor, file_template);
-
- if (!cmd) {
- unlink(file_template);
- fprintf(stderr, "out of memory\n");
- return -1;
- }
-
- /* run the editor */
- ret = system(cmd);
- talloc_free(cmd);
-
- if (ret != 0) {
- unlink(file_template);
- fprintf(stderr, "edit with %s failed\n", editor);
- return -1;
- }
-
- /* read the resulting ldif into msgs2 */
- f = fopen(file_template, "r");
- if (!f) {
- perror(file_template);
- return -1;
- }
-
- while ((ldif = ldb_ldif_read_file(ldb, f))) {
- msgs2 = talloc_realloc(ldb, msgs2, struct ldb_message *, count2+1);
- if (!msgs2) {
- fprintf(stderr, "out of memory");
- return -1;
- }
- msgs2[count2++] = ldif->msg;
- }
-
- fclose(f);
- unlink(file_template);
-
- return merge_edits(ldb, msgs1, count1, msgs2, count2);
-}
-
-static void usage(void)
-{
- printf("Usage: ldbedit <options> <expression> <attributes ...>\n");
- printf("Options:\n");
- printf(" -H ldb_url choose the database (or $LDB_URL)\n");
- printf(" -s base|sub|one choose search scope\n");
- printf(" -b basedn choose baseDN\n");
- printf(" -a edit all records (expression 'objectclass=*')\n");
- printf(" -e editor choose editor (or $VISUAL or $EDITOR)\n");
- printf(" -v verbose mode\n");
- exit(1);
-}
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- struct ldb_result *result = NULL;
- struct ldb_dn *basedn = NULL;
- int ret;
- const char *expression = "(|(objectClass=*)(distinguishedName=*))";
- const char * const * attrs = NULL;
-
- ldb_global_init();
-
- ldb = ldb_init(NULL);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- /* the check for '=' is for compatibility with ldapsearch */
- if (options->argc > 0 &&
- strchr(options->argv[0], '=')) {
- expression = options->argv[0];
- options->argv++;
- options->argc--;
- }
-
- if (options->argc > 0) {
- attrs = (const char * const *)(options->argv);
- }
-
- if (options->basedn != NULL) {
- basedn = ldb_dn_explode(ldb, options->basedn);
- if (basedn == NULL) {
- printf("Invalid Base DN format\n");
- exit(1);
- }
- }
-
- ret = ldb_search(ldb, basedn, options->scope, expression, attrs, &result);
- if (ret != LDB_SUCCESS) {
- printf("search failed - %s\n", ldb_errstring(ldb));
- exit(1);
- }
-
- if (result->count == 0) {
- printf("no matching records - cannot edit\n");
- return 0;
- }
-
- do_edit(ldb, result->msgs, result->count, options->editor);
-
- if (result) {
- ret = talloc_free(result);
- if (ret == -1) {
- fprintf(stderr, "talloc_free failed\n");
- exit(1);
- }
- }
-
- talloc_free(ldb);
- return 0;
-}
diff --git a/source/lib/ldb/tools/ldbmodify.c b/source/lib/ldb/tools/ldbmodify.c
deleted file mode 100644
index 962045ef7d7..00000000000
--- a/source/lib/ldb/tools/ldbmodify.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldbmodify
- *
- * Description: utility to modify records - modelled on ldapmodify
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-static int failures;
-
-static void usage(void)
-{
- printf("Usage: ldbmodify <options> <ldif...>\n");
- printf("Options:\n");
- printf(" -H ldb_url choose the database (or $LDB_URL)\n");
- printf(" -o options pass options like modules to activate\n");
- printf(" e.g: -o modules:timestamps\n");
- printf("\n");
- printf("Modifies a ldb based upon ldif change records\n\n");
- exit(1);
-}
-
-/*
- process modifies for one file
-*/
-static int process_file(struct ldb_context *ldb, FILE *f, int *count)
-{
- struct ldb_ldif *ldif;
- int ret = LDB_SUCCESS;
-
- while ((ldif = ldb_ldif_read_file(ldb, f))) {
- switch (ldif->changetype) {
- case LDB_CHANGETYPE_NONE:
- case LDB_CHANGETYPE_ADD:
- ret = ldb_add(ldb, ldif->msg);
- break;
- case LDB_CHANGETYPE_DELETE:
- ret = ldb_delete(ldb, ldif->msg->dn);
- break;
- case LDB_CHANGETYPE_MODIFY:
- ret = ldb_modify(ldb, ldif->msg);
- break;
- }
- if (ret != LDB_SUCCESS) {
- fprintf(stderr, "ERR: \"%s\" on DN %s\n",
- ldb_errstring(ldb), ldb_dn_linearize(ldb, ldif->msg->dn));
- failures++;
- } else {
- (*count)++;
- }
- ldb_ldif_read_free(ldb, ldif);
- }
-
- return ret;
-}
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- int count=0;
- int i, ret=LDB_SUCCESS;
- struct ldb_cmdline *options;
-
- ldb_global_init();
-
- ldb = ldb_init(NULL);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- if (options->argc == 0) {
- ret = process_file(ldb, stdin, &count);
- } else {
- for (i=0;i<options->argc;i++) {
- const char *fname = options->argv[i];
- FILE *f;
- f = fopen(fname, "r");
- if (!f) {
- perror(fname);
- exit(1);
- }
- ret = process_file(ldb, f, &count);
- }
- }
-
- talloc_free(ldb);
-
- printf("Modified %d records with %d failures\n", count, failures);
-
- return ret;
-}
diff --git a/source/lib/ldb/tools/ldbrename.c b/source/lib/ldb/tools/ldbrename.c
deleted file mode 100644
index 9c0870721d4..00000000000
--- a/source/lib/ldb/tools/ldbrename.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
- Copyright (C) Stefan Metzmacher 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldbrename
- *
- * Description: utility to rename records - modelled on ldapmodrdn
- *
- * Author: Andrew Tridgell
- * Author: Stefan Metzmacher
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-static void usage(void)
-{
- printf("Usage: ldbrename [<options>] <olddn> <newdn>\n");
- printf("Options:\n");
- printf(" -H ldb_url choose the database (or $LDB_URL)\n");
- printf(" -o options pass options like modules to activate\n");
- printf(" e.g: -o modules:timestamps\n");
- printf("\n");
- printf("Renames records in a ldb\n\n");
- exit(1);
-}
-
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- int ret;
- struct ldb_cmdline *options;
- const struct ldb_dn *dn1, *dn2;
-
- ldb_global_init();
-
- ldb = ldb_init(NULL);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- if (options->argc < 2) {
- usage();
- }
-
- dn1 = ldb_dn_explode(ldb, options->argv[0]);
- dn2 = ldb_dn_explode(ldb, options->argv[1]);
-
- ret = ldb_rename(ldb, dn1, dn2);
- if (ret == 0) {
- printf("Renamed 1 record\n");
- } else {
- printf("rename of '%s' to '%s' failed - %s\n",
- options->argv[0], options->argv[1], ldb_errstring(ldb));
- }
-
- talloc_free(ldb);
-
- return ret;
-}
diff --git a/source/lib/ldb/tools/ldbsearch.c b/source/lib/ldb/tools/ldbsearch.c
deleted file mode 100644
index 837dfc9088c..00000000000
--- a/source/lib/ldb/tools/ldbsearch.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldbsearch
- *
- * Description: utility for ldb search - modelled on ldapsearch
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-static void usage(void)
-{
- printf("Usage: ldbsearch <options> <expression> <attrs...>\n");
- printf("Options:\n");
- printf(" -H ldb_url choose the database (or $LDB_URL)\n");
- printf(" -s base|sub|one choose search scope\n");
- printf(" -b basedn choose baseDN\n");
- printf(" -i read search expressions from stdin\n");
- printf(" -S sort returned attributes\n");
- printf(" -o options pass options like modules to activate\n");
- printf(" e.g: -o modules:timestamps\n");
- exit(1);
-}
-
-static int do_compare_msg(struct ldb_message **el1,
- struct ldb_message **el2,
- void *opaque)
-{
- struct ldb_context *ldb = talloc_get_type(opaque, struct ldb_context);
- return ldb_dn_compare(ldb, (*el1)->dn, (*el2)->dn);
-}
-
-struct search_context {
- struct ldb_control **req_ctrls;
-
- int sort;
- int num_stored;
- struct ldb_message **store;
- char **refs_store;
-
- int entries;
- int refs;
-
- int pending;
- int status;
-};
-
-static int store_message(struct ldb_message *msg, struct search_context *sctx) {
-
- sctx->store = talloc_realloc(sctx, sctx->store, struct ldb_message *, sctx->num_stored + 2);
- if (!sctx->store) {
- fprintf(stderr, "talloc_realloc failed while storing messages\n");
- return -1;
- }
-
- sctx->store[sctx->num_stored] = talloc_move(sctx->store, &msg);
- sctx->num_stored++;
- sctx->store[sctx->num_stored] = NULL;
-
- return 0;
-}
-
-static int store_referral(char *referral, struct search_context *sctx) {
-
- sctx->refs_store = talloc_realloc(sctx, sctx->refs_store, char *, sctx->refs + 2);
- if (!sctx->refs_store) {
- fprintf(stderr, "talloc_realloc failed while storing referrals\n");
- return -1;
- }
-
- sctx->refs_store[sctx->refs] = talloc_move(sctx->refs_store, &referral);
- sctx->refs++;
- sctx->refs_store[sctx->refs] = NULL;
-
- return 0;
-}
-
-static int display_message(struct ldb_context *ldb, struct ldb_message *msg, struct search_context *sctx) {
- struct ldb_ldif ldif;
-
- sctx->entries++;
- printf("# record %d\n", sctx->entries);
-
- ldif.changetype = LDB_CHANGETYPE_NONE;
- ldif.msg = msg;
-
- if (sctx->sort) {
- /*
- * Ensure attributes are always returned in the same
- * order. For testing, this makes comparison of old
- * vs. new much easier.
- */
- ldb_msg_sort_elements(ldif.msg);
- }
-
- ldb_ldif_write_file(ldb, stdout, &ldif);
-
- return 0;
-}
-
-static int display_referral(char *referral, struct search_context *sctx)
-{
-
- sctx->refs++;
- printf("# Referral\nref: %s\n\n", referral);
-
- return 0;
-}
-
-static int search_callback(struct ldb_context *ldb, void *context, struct ldb_reply *ares)
-{
- struct search_context *sctx = talloc_get_type(context, struct search_context);
- int ret;
-
- switch (ares->type) {
-
- case LDB_REPLY_ENTRY:
- if (sctx->sort) {
- ret = store_message(ares->message, sctx);
- } else {
- ret = display_message(ldb, ares->message, sctx);
- }
- break;
-
- case LDB_REPLY_REFERRAL:
- if (sctx->sort) {
- ret = store_referral(ares->referral, sctx);
- } else {
- ret = display_referral(ares->referral, sctx);
- }
- break;
-
- case LDB_REPLY_DONE:
- if (ares->controls) {
- if (handle_controls_reply(ares->controls, sctx->req_ctrls) == 1)
- sctx->pending = 1;
- }
- ret = 0;
- break;
-
- default:
- fprintf(stderr, "unknown Reply Type\n");
- return LDB_ERR_OTHER;
- }
-
- if (talloc_free(ares) == -1) {
- fprintf(stderr, "talloc_free failed\n");
- sctx->pending = 0;
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- if (ret) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- return LDB_SUCCESS;
-}
-
-static int do_search(struct ldb_context *ldb,
- const struct ldb_dn *basedn,
- struct ldb_cmdline *options,
- const char *expression,
- const char * const *attrs)
-{
- struct ldb_request *req;
- struct search_context *sctx;
- int ret;
-
- req = talloc(ldb, struct ldb_request);
- if (!req) return -1;
-
- sctx = talloc(req, struct search_context);
- if (!sctx) return -1;
-
- sctx->sort = options->sorted;
- sctx->num_stored = 0;
- sctx->store = NULL;
- sctx->req_ctrls = parse_controls(ldb, options->controls);
- if (options->controls != NULL && sctx->req_ctrls== NULL) return -1;
- sctx->entries = 0;
- sctx->refs = 0;
-
- if (basedn == NULL) {
- basedn = ldb_get_default_basedn(ldb);
- }
-
- req->operation = LDB_SEARCH;
- req->op.search.base = basedn;
- req->op.search.scope = options->scope;
- req->op.search.tree = ldb_parse_tree(req, expression);
- if (req->op.search.tree == NULL) return -1;
- req->op.search.attrs = attrs;
- req->controls = sctx->req_ctrls;
- req->context = sctx;
- req->callback = &search_callback;
- ldb_set_timeout(ldb, req, 0); /* TODO: make this settable by command line */
-
-again:
- sctx->pending = 0;
-
- ret = ldb_request(ldb, req);
- if (ret != LDB_SUCCESS) {
- printf("search failed - %s\n", ldb_errstring(ldb));
- return -1;
- }
-
- ret = ldb_wait(req->handle, LDB_WAIT_ALL);
- if (ret != LDB_SUCCESS) {
- printf("search error - %s\n", ldb_errstring(ldb));
- return -1;
- }
-
- if (sctx->pending)
- goto again;
-
- if (sctx->sort && sctx->num_stored != 0) {
- int i;
-
- ldb_qsort(sctx->store, ret, sizeof(struct ldb_message *),
- ldb, (ldb_qsort_cmp_fn_t)do_compare_msg);
-
- if (ret != 0) {
- fprintf(stderr, "An error occurred while sorting messages\n");
- exit(1);
- }
-
- for (i = 0; i < sctx->num_stored; i++) {
- display_message(ldb, sctx->store[i], sctx);
- }
-
- for (i = 0; i < sctx->refs; i++) {
- display_referral(sctx->refs_store[i], sctx);
- }
- }
-
- printf("# returned %d records\n# %d entries\n# %d referrals\n",
- sctx->entries + sctx->refs, sctx->entries, sctx->refs);
-
- talloc_free(req);
-
- return 0;
-}
-
-int main(int argc, const char **argv)
-{
- struct ldb_context *ldb;
- struct ldb_dn *basedn = NULL;
- const char * const * attrs = NULL;
- struct ldb_cmdline *options;
- int ret = -1;
- const char *expression = "(|(objectClass=*)(distinguishedName=*))";
-
- ldb_global_init();
-
- ldb = ldb_init(NULL);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- /* the check for '=' is for compatibility with ldapsearch */
- if (!options->interactive &&
- options->argc > 0 &&
- strchr(options->argv[0], '=')) {
- expression = options->argv[0];
- options->argv++;
- options->argc--;
- }
-
- if (options->argc > 0) {
- attrs = (const char * const *)(options->argv);
- }
-
- if (options->basedn != NULL) {
- basedn = ldb_dn_explode(ldb, options->basedn);
- if (basedn == NULL) {
- fprintf(stderr, "Invalid Base DN format\n");
- exit(1);
- }
- }
-
- if (options->interactive) {
- char line[1024];
- while (fgets(line, sizeof(line), stdin)) {
- if (do_search(ldb, basedn, options, line, attrs) == -1) {
- ret = -1;
- }
- }
- } else {
- ret = do_search(ldb, basedn, options, expression, attrs);
- }
-
- talloc_free(ldb);
- return ret;
-}
diff --git a/source/lib/ldb/tools/ldbtest.c b/source/lib/ldb/tools/ldbtest.c
deleted file mode 100644
index 6cc8dfe19b2..00000000000
--- a/source/lib/ldb/tools/ldbtest.c
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: ldbtest
- *
- * Description: utility to test ldb
- *
- * Author: Andrew Tridgell
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-
-static struct timeval tp1,tp2;
-static struct ldb_cmdline *options;
-
-static void _start_timer(void)
-{
- gettimeofday(&tp1,NULL);
-}
-
-static double _end_timer(void)
-{
- gettimeofday(&tp2,NULL);
- return((tp2.tv_sec - tp1.tv_sec) +
- (tp2.tv_usec - tp1.tv_usec)*1.0e-6);
-}
-
-static void add_records(struct ldb_context *ldb,
- const struct ldb_dn *basedn,
- int count)
-{
- struct ldb_message msg;
- int i;
-
-#if 0
- if (ldb_lock(ldb, "transaction") != 0) {
- printf("transaction lock failed\n");
- exit(1);
- }
-#endif
- for (i=0;i<count;i++) {
- struct ldb_message_element el[6];
- struct ldb_val vals[6][1];
- char *name;
- TALLOC_CTX *tmp_ctx = talloc_new(ldb);
-
- name = talloc_asprintf(tmp_ctx, "Test%d", i);
-
- msg.dn = ldb_dn_build_child(tmp_ctx, "cn", name, basedn);
- msg.num_elements = 6;
- msg.elements = el;
-
- el[0].flags = 0;
- el[0].name = talloc_strdup(tmp_ctx, "cn");
- el[0].num_values = 1;
- el[0].values = vals[0];
- vals[0][0].data = (uint8_t *)name;
- vals[0][0].length = strlen(name);
-
- el[1].flags = 0;
- el[1].name = "title";
- el[1].num_values = 1;
- el[1].values = vals[1];
- vals[1][0].data = (uint8_t *)talloc_asprintf(tmp_ctx, "The title of %s", name);
- vals[1][0].length = strlen((char *)vals[1][0].data);
-
- el[2].flags = 0;
- el[2].name = talloc_strdup(tmp_ctx, "uid");
- el[2].num_values = 1;
- el[2].values = vals[2];
- vals[2][0].data = (uint8_t *)ldb_casefold(ldb, tmp_ctx, name);
- vals[2][0].length = strlen((char *)vals[2][0].data);
-
- el[3].flags = 0;
- el[3].name = talloc_strdup(tmp_ctx, "mail");
- el[3].num_values = 1;
- el[3].values = vals[3];
- vals[3][0].data = (uint8_t *)talloc_asprintf(tmp_ctx, "%s@example.com", name);
- vals[3][0].length = strlen((char *)vals[3][0].data);
-
- el[4].flags = 0;
- el[4].name = talloc_strdup(tmp_ctx, "objectClass");
- el[4].num_values = 1;
- el[4].values = vals[4];
- vals[4][0].data = (uint8_t *)talloc_strdup(tmp_ctx, "OpenLDAPperson");
- vals[4][0].length = strlen((char *)vals[4][0].data);
-
- el[5].flags = 0;
- el[5].name = talloc_strdup(tmp_ctx, "sn");
- el[5].num_values = 1;
- el[5].values = vals[5];
- vals[5][0].data = (uint8_t *)name;
- vals[5][0].length = strlen((char *)vals[5][0].data);
-
- ldb_delete(ldb, msg.dn);
-
- if (ldb_add(ldb, &msg) != 0) {
- printf("Add of %s failed - %s\n", name, ldb_errstring(ldb));
- exit(1);
- }
-
- printf("adding uid %s\r", name);
- fflush(stdout);
-
- talloc_free(tmp_ctx);
- }
-#if 0
- if (ldb_unlock(ldb, "transaction") != 0) {
- printf("transaction unlock failed\n");
- exit(1);
- }
-#endif
- printf("\n");
-}
-
-static void modify_records(struct ldb_context *ldb,
- const struct ldb_dn *basedn,
- int count)
-{
- struct ldb_message msg;
- int i;
-
- for (i=0;i<count;i++) {
- struct ldb_message_element el[3];
- struct ldb_val vals[3];
- char *name;
- TALLOC_CTX *tmp_ctx = talloc_new(ldb);
-
- name = talloc_asprintf(tmp_ctx, "Test%d", i);
- msg.dn = ldb_dn_build_child(tmp_ctx, "cn", name, basedn);
-
- msg.num_elements = 3;
- msg.elements = el;
-
- el[0].flags = LDB_FLAG_MOD_DELETE;
- el[0].name = talloc_strdup(tmp_ctx, "mail");
- el[0].num_values = 0;
-
- el[1].flags = LDB_FLAG_MOD_ADD;
- el[1].name = talloc_strdup(tmp_ctx, "mail");
- el[1].num_values = 1;
- el[1].values = &vals[1];
- vals[1].data = (uint8_t *)talloc_asprintf(tmp_ctx, "%s@other.example.com", name);
- vals[1].length = strlen((char *)vals[1].data);
-
- el[2].flags = LDB_FLAG_MOD_REPLACE;
- el[2].name = talloc_strdup(tmp_ctx, "mail");
- el[2].num_values = 1;
- el[2].values = &vals[2];
- vals[2].data = (uint8_t *)talloc_asprintf(tmp_ctx, "%s@other2.example.com", name);
- vals[2].length = strlen((char *)vals[2].data);
-
- if (ldb_modify(ldb, &msg) != 0) {
- printf("Modify of %s failed - %s\n", name, ldb_errstring(ldb));
- exit(1);
- }
-
- printf("Modifying uid %s\r", name);
- fflush(stdout);
-
- talloc_free(tmp_ctx);
- }
-
- printf("\n");
-}
-
-
-static void delete_records(struct ldb_context *ldb,
- const struct ldb_dn *basedn,
- int count)
-{
- int i;
-
- for (i=0;i<count;i++) {
- struct ldb_dn *dn;
- char *name = talloc_asprintf(ldb, "Test%d", i);
- dn = ldb_dn_build_child(name, "cn", name, basedn);
-
- printf("Deleting uid Test%d\r", i);
- fflush(stdout);
-
- if (ldb_delete(ldb, dn) != 0) {
- printf("Delete of %s failed - %s\n", ldb_dn_linearize(ldb, dn), ldb_errstring(ldb));
- exit(1);
- }
- talloc_free(name);
- }
-
- printf("\n");
-}
-
-static void search_uid(struct ldb_context *ldb, struct ldb_dn *basedn, int nrecords, int nsearches)
-{
- int i;
-
- for (i=0;i<nsearches;i++) {
- int uid = (i * 700 + 17) % (nrecords * 2);
- char *expr;
- struct ldb_result *res = NULL;
- int ret;
-
- expr = talloc_asprintf(ldb, "(uid=TEST%d)", uid);
- ret = ldb_search(ldb, basedn, LDB_SCOPE_SUBTREE, expr, NULL, &res);
-
- if (ret != LDB_SUCCESS || (uid < nrecords && res->count != 1)) {
- printf("Failed to find %s - %s\n", expr, ldb_errstring(ldb));
- exit(1);
- }
-
- if (uid >= nrecords && res->count > 0) {
- printf("Found %s !? - %d\n", expr, ret);
- exit(1);
- }
-
- printf("testing uid %d/%d - %d \r", i, uid, res->count);
- fflush(stdout);
-
- talloc_free(res);
- talloc_free(expr);
- }
-
- printf("\n");
-}
-
-static void start_test(struct ldb_context *ldb, int nrecords, int nsearches)
-{
- struct ldb_dn *basedn;
-
- basedn = ldb_dn_explode(ldb, options->basedn);
-
- printf("Adding %d records\n", nrecords);
- add_records(ldb, basedn, nrecords);
-
- printf("Starting search on uid\n");
- _start_timer();
- search_uid(ldb, basedn, nrecords, nsearches);
- printf("uid search took %.2f seconds\n", _end_timer());
-
- printf("Modifying records\n");
- modify_records(ldb, basedn, nrecords);
-
- printf("Deleting records\n");
- delete_records(ldb, basedn, nrecords);
-}
-
-
-/*
- 2) Store an @indexlist record
-
- 3) Store a record that contains fields that should be index according
-to @index
-
- 4) disconnection from database
-
- 5) connect to same database
-
- 6) search for record added in step 3 using a search key that should
-be indexed
-*/
-static void start_test_index(struct ldb_context **ldb)
-{
- struct ldb_message *msg;
- struct ldb_result *res = NULL;
- struct ldb_dn *indexlist;
- struct ldb_dn *basedn;
- int ret;
- int flags = 0;
- const char *specials;
-
- specials = getenv("LDB_SPECIALS");
- if (specials && atoi(specials) == 0) {
- printf("LDB_SPECIALS disabled - skipping index test\n");
- return;
- }
-
- if (options->nosync) {
- flags |= LDB_FLG_NOSYNC;
- }
-
- printf("Starting index test\n");
-
- indexlist = ldb_dn_explode(NULL, "@INDEXLIST");
-
- ldb_delete(*ldb, indexlist);
-
- msg = ldb_msg_new(NULL);
-
- msg->dn = indexlist;
- ldb_msg_add_string(msg, "@IDXATTR", strdup("uid"));
-
- if (ldb_add(*ldb, msg) != 0) {
- printf("Add of %s failed - %s\n", ldb_dn_linearize(*ldb, msg->dn), ldb_errstring(*ldb));
- exit(1);
- }
-
- basedn = ldb_dn_explode(NULL, options->basedn);
-
- memset(msg, 0, sizeof(*msg));
- msg->dn = ldb_dn_build_child(msg, "cn", "test", basedn);
- ldb_msg_add_string(msg, "cn", strdup("test"));
- ldb_msg_add_string(msg, "sn", strdup("test"));
- ldb_msg_add_string(msg, "uid", strdup("test"));
- ldb_msg_add_string(msg, "objectClass", strdup("OpenLDAPperson"));
-
- if (ldb_add(*ldb, msg) != 0) {
- printf("Add of %s failed - %s\n", ldb_dn_linearize(*ldb, msg->dn), ldb_errstring(*ldb));
- exit(1);
- }
-
- if (talloc_free(*ldb) != 0) {
- printf("failed to free/close ldb database");
- exit(1);
- }
-
- (*ldb) = ldb_init(options);
-
- ret = ldb_connect(*ldb, options->url, flags, NULL);
- if (ret != 0) {
- printf("failed to connect to %s\n", options->url);
- exit(1);
- }
-
- ret = ldb_search(*ldb, basedn, LDB_SCOPE_SUBTREE, "uid=test", NULL, &res);
- if (ret != LDB_SUCCESS) {
- printf("Search with (uid=test) filter failed!\n");
- exit(1);
- }
- if(res->count != 1) {
- printf("Should have found 1 record - found %d\n", res->count);
- exit(1);
- }
-
- if (ldb_delete(*ldb, msg->dn) != 0 ||
- ldb_delete(*ldb, indexlist) != 0) {
- printf("cleanup failed - %s\n", ldb_errstring(*ldb));
- exit(1);
- }
-
- printf("Finished index test\n");
-}
-
-
-static void usage(void)
-{
- printf("Usage: ldbtest <options>\n");
- printf("Options:\n");
- printf(" -H ldb_url choose the database (or $LDB_URL)\n");
- printf(" --num-records nrecords database size to use\n");
- printf(" --num-searches nsearches number of searches to do\n");
- printf("\n");
- printf("tests ldb API\n\n");
- exit(1);
-}
-
-int main(int argc, const char **argv)
-{
- TALLOC_CTX *mem_ctx = talloc_new(NULL);
- struct ldb_context *ldb;
-
- ldb_global_init();
-
- ldb = ldb_init(mem_ctx);
-
- options = ldb_cmdline_process(ldb, argc, argv, usage);
-
- talloc_steal(mem_ctx, options);
-
- if (options->basedn == NULL) {
- options->basedn = "ou=Ldb Test,ou=People,o=University of Michigan,c=TEST";
- }
-
- srandom(1);
-
- printf("Testing with num-records=%d and num-searches=%d\n",
- options->num_records, options->num_searches);
-
- start_test(ldb, options->num_records, options->num_searches);
-
- start_test_index(&ldb);
-
- talloc_free(mem_ctx);
-
- return 0;
-}
diff --git a/source/lib/ldb/tools/oLschema2ldif.c b/source/lib/ldb/tools/oLschema2ldif.c
deleted file mode 100644
index a9e157e3233..00000000000
--- a/source/lib/ldb/tools/oLschema2ldif.c
+++ /dev/null
@@ -1,608 +0,0 @@
-/*
- ldb database library
-
- Copyright (C) Simo Sorce 2005
-
- ** NOTE! The following LGPL license applies to the ldb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-/*
- * Name: ldb
- *
- * Component: oLschema2ldif
- *
- * Description: utility to convert an OpenLDAP schema into AD LDIF
- *
- * Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/includes.h"
-#include "ldb/tools/cmdline.h"
-#include "ldb/tools/convert.h"
-
-#define SCHEMA_UNKNOWN 0
-#define SCHEMA_NAME 1
-#define SCHEMA_SUP 2
-#define SCHEMA_STRUCTURAL 3
-#define SCHEMA_ABSTRACT 4
-#define SCHEMA_AUXILIARY 5
-#define SCHEMA_MUST 6
-#define SCHEMA_MAY 7
-#define SCHEMA_SINGLE_VALUE 8
-#define SCHEMA_EQUALITY 9
-#define SCHEMA_ORDERING 10
-#define SCHEMA_SUBSTR 11
-#define SCHEMA_SYNTAX 12
-#define SCHEMA_DESC 13
-
-struct schema_conv {
- int count;
- int failures;
-};
-
-struct schema_token {
- int type;
- char *value;
-};
-
-struct ldb_context *ldb_ctx;
-struct ldb_dn *basedn;
-
-static int check_braces(const char *string)
-{
- int b;
- char *c;
-
- b = 0;
- if ((c = strchr(string, '(')) == NULL) {
- return -1;
- }
- b++;
- c++;
- while (b) {
- c = strpbrk(c, "()");
- if (c == NULL) return 1;
- if (*c == '(') b++;
- if (*c == ')') b--;
- c++;
- }
- return 0;
-}
-
-static char *skip_spaces(char *string) {
- return (string + strspn(string, " \t\n"));
-}
-
-static int add_multi_string(struct ldb_message *msg, const char *attr, char *values)
-{
- char *c;
- char *s;
- int n;
-
- c = skip_spaces(values);
- while (*c) {
- n = strcspn(c, " \t$");
- s = talloc_strndup(msg, c, n);
- if (ldb_msg_add_string(msg, attr, s) != 0) {
- return -1;
- }
- c += n;
- c += strspn(c, " \t$");
- }
-
- return 0;
-}
-
-#define MSG_ADD_STRING(a, v) do { if (ldb_msg_add_string(msg, a, v) != 0) goto failed; } while(0)
-#define MSG_ADD_M_STRING(a, v) do { if (add_multi_string(msg, a, v) != 0) goto failed; } while(0)
-
-static char *get_def_value(TALLOC_CTX *ctx, char **string)
-{
- char *c = *string;
- char *value;
- int n;
-
- if (*c == '\'') {
- c++;
- n = strcspn(c, "\'");
- value = talloc_strndup(ctx, c, n);
- c += n;
- c++; /* skip closing \' */
- } else {
- n = strcspn(c, " \t\n");
- value = talloc_strndup(ctx, c, n);
- c += n;
- }
- *string = c;
-
- return value;
-}
-
-static struct schema_token *get_next_schema_token(TALLOC_CTX *ctx, char **string)
-{
- char *c = skip_spaces(*string);
- char *type;
- struct schema_token *token;
- int n;
-
- token = talloc(ctx, struct schema_token);
-
- n = strcspn(c, " \t\n");
- type = talloc_strndup(token, c, n);
- c += n;
- c = skip_spaces(c);
-
- if (strcasecmp("NAME", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_NAME;
- /* we do not support aliases so we get only the first name given and skip others */
- if (*c == '(') {
- char *s = strchr(c, ')');
- if (s == NULL) return NULL;
- s = skip_spaces(s);
- *string = s;
-
- c++;
- c = skip_spaces(c);
- }
-
- token->value = get_def_value(ctx, &c);
-
- if (*string < c) { /* single name */
- c = skip_spaces(c);
- *string = c;
- }
- return token;
- }
- if (strcasecmp("SUP", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_SUP;
-
- if (*c == '(') {
- c++;
- n = strcspn(c, ")");
- token->value = talloc_strndup(ctx, c, n);
- c += n;
- c++;
- } else {
- token->value = get_def_value(ctx, &c);
- }
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- if (strcasecmp("STRUCTURAL", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_STRUCTURAL;
- *string = c;
- return token;
- }
-
- if (strcasecmp("ABSTRACT", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_ABSTRACT;
- *string = c;
- return token;
- }
-
- if (strcasecmp("AUXILIARY", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_AUXILIARY;
- *string = c;
- return token;
- }
-
- if (strcasecmp("MUST", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_MUST;
-
- if (*c == '(') {
- c++;
- n = strcspn(c, ")");
- token->value = talloc_strndup(ctx, c, n);
- c += n;
- c++;
- } else {
- token->value = get_def_value(ctx, &c);
- }
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- if (strcasecmp("MAY", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_MAY;
-
- if (*c == '(') {
- c++;
- n = strcspn(c, ")");
- token->value = talloc_strndup(ctx, c, n);
- c += n;
- c++;
- } else {
- token->value = get_def_value(ctx, &c);
- }
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- if (strcasecmp("SINGLE-VALUE", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_SINGLE_VALUE;
- *string = c;
- return token;
- }
-
- if (strcasecmp("EQUALITY", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_EQUALITY;
-
- token->value = get_def_value(ctx, &c);
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- if (strcasecmp("ORDERING", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_ORDERING;
-
- token->value = get_def_value(ctx, &c);
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- if (strcasecmp("SUBSTR", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_SUBSTR;
-
- token->value = get_def_value(ctx, &c);
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- if (strcasecmp("SYNTAX", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_SYNTAX;
-
- token->value = get_def_value(ctx, &c);
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- if (strcasecmp("DESC", type) == 0) {
- talloc_free(type);
- token->type = SCHEMA_DESC;
-
- token->value = get_def_value(ctx, &c);
-
- c = skip_spaces(c);
- *string = c;
- return token;
- }
-
- token->type = SCHEMA_UNKNOWN;
- token->value = type;
- if (*c == ')') {
- *string = c;
- return token;
- }
- if (*c == '\'') {
- c = strchr(++c, '\'');
- c++;
- } else {
- c += strcspn(c, " \t\n");
- }
- c = skip_spaces(c);
- *string = c;
-
- return token;
-}
-
-static struct ldb_message *process_entry(TALLOC_CTX *mem_ctx, const char *entry)
-{
- TALLOC_CTX *ctx;
- struct ldb_message *msg;
- struct schema_token *token;
- char *c, *s;
- int n;
-
- ctx = talloc_new(mem_ctx);
- msg = ldb_msg_new(ctx);
-
- ldb_msg_add_string(msg, "objectClass", "top");
-
- c = talloc_strdup(ctx, entry);
- if (!c) return NULL;
-
- c = skip_spaces(c);
-
- switch (*c) {
- case 'a':
- if (strncmp(c, "attributetype", 13) == 0) {
- c += 13;
- MSG_ADD_STRING("objectClass", "attributeSchema");
- break;
- }
- goto failed;
- case 'o':
- if (strncmp(c, "objectclass", 11) == 0) {
- c += 11;
- MSG_ADD_STRING("objectClass", "classSchema");
- break;
- }
- goto failed;
- default:
- goto failed;
- }
-
- c = strchr(c, '(');
- if (c == NULL) goto failed;
- c++;
-
- c = skip_spaces(c);
-
- /* get attributeID */
- n = strcspn(c, " \t");
- s = talloc_strndup(msg, c, n);
- MSG_ADD_STRING("attributeID", s);
- c += n;
- c = skip_spaces(c);
-
- while (*c != ')') {
- token = get_next_schema_token(msg, &c);
- if (!token) goto failed;
-
- switch (token->type) {
- case SCHEMA_NAME:
- MSG_ADD_STRING("cn", token->value);
- MSG_ADD_STRING("name", token->value);
- MSG_ADD_STRING("lDAPDisplayName", token->value);
- msg->dn = ldb_dn_string_compose(msg, basedn,
- "CN=%s,CN=Schema,CN=Configuration",
- token->value);
- break;
-
- case SCHEMA_SUP:
- MSG_ADD_M_STRING("subClassOf", token->value);
- break;
-
- case SCHEMA_STRUCTURAL:
- MSG_ADD_STRING("objectClassCategory", "1");
- break;
-
- case SCHEMA_ABSTRACT:
- MSG_ADD_STRING("objectClassCategory", "2");
- break;
-
- case SCHEMA_AUXILIARY:
- MSG_ADD_STRING("objectClassCategory", "3");
- break;
-
- case SCHEMA_MUST:
- MSG_ADD_M_STRING("mustContain", token->value);
- break;
-
- case SCHEMA_MAY:
- MSG_ADD_M_STRING("mayContain", token->value);
- break;
-
- case SCHEMA_SINGLE_VALUE:
- MSG_ADD_STRING("isSingleValued", "TRUE");
- break;
-
- case SCHEMA_EQUALITY:
- /* TODO */
- break;
-
- case SCHEMA_ORDERING:
- /* TODO */
- break;
-
- case SCHEMA_SUBSTR:
- /* TODO */
- break;
-
- case SCHEMA_SYNTAX:
- {
- const struct syntax_map *map =
- find_syntax_map_by_standard_oid(token->value);
- if (!map) {
- break;
- }
- MSG_ADD_STRING("attributeSyntax", map->AD_OID);
- break;
- }
- case SCHEMA_DESC:
- MSG_ADD_STRING("description", token->value);
- break;
-
- default:
- fprintf(stderr, "Unknown Definition: %s\n", token->value);
- }
- }
-
- talloc_steal(mem_ctx, msg);
- talloc_free(ctx);
- return msg;
-
-failed:
- talloc_free(ctx);
- return NULL;
-}
-
-static struct schema_conv process_file(FILE *in, FILE *out)
-{
- TALLOC_CTX *ctx;
- struct schema_conv ret;
- char *entry;
- int c, t, line;
- struct ldb_ldif ldif;
-
- ldif.changetype = LDB_CHANGETYPE_NONE;
-
- ctx = talloc_new(NULL);
-
- ret.count = 0;
- ret.failures = 0;
- line = 0;
-
- while ((c = fgetc(in)) != EOF) {
- line++;
- /* fprintf(stderr, "Parsing line %d\n", line); */
- if (c == '#') {
- do {
- c = fgetc(in);
- } while (c != EOF && c != '\n');
- continue;
- }
- if (c == '\n') {
- continue;
- }
-
- t = 0;
- entry = talloc_array(ctx, char, 1024);
- if (entry == NULL) exit(-1);
-
- do {
- if (c == '\n') {
- entry[t] = '\0';
- if (check_braces(entry) == 0) {
- ret.count++;
- ldif.msg = process_entry(ctx, entry);
- if (ldif.msg == NULL) {
- ret.failures++;
- fprintf(stderr, "No valid msg from entry \n[%s]\n at line %d\n", entry, line);
- break;
- }
- ldb_ldif_write_file(ldb_ctx, out, &ldif);
- break;
- }
- line++;
- } else {
- entry[t] = c;
- t++;
- }
- if ((t % 1023) == 0) {
- entry = talloc_realloc(ctx, entry, char, t + 1024);
- if (entry == NULL) exit(-1);
- }
- } while ((c = fgetc(in)) != EOF);
-
- if (c != '\n') {
- entry[t] = '\0';
- if (check_braces(entry) == 0) {
- ret.count++;
- ldif.msg = process_entry(ctx, entry);
- if (ldif.msg == NULL) {
- ret.failures++;
- fprintf(stderr, "No valid msg from entry \n[%s]\n at line %d\n", entry, line);
- break;
- }
- ldb_ldif_write_file(ldb_ctx, out, &ldif);
- } else {
- fprintf(stderr, "malformed entry on line %d\n", line);
- ret.failures++;
- }
- }
-
- if (c == EOF) break;
- }
-
- return ret;
-}
-
-static void usage(void)
-{
- printf("Usage: oLschema2ldif -H NONE <options>\n");
- printf("\nConvert OpenLDAP schema to AD-like LDIF format\n\n");
- printf("Options:\n");
- printf(" -I inputfile inputfile of OpenLDAP style schema otherwise STDIN\n");
- printf(" -O outputfile outputfile otherwise STDOUT\n");
- printf(" -o options pass options like modules to activate\n");
- printf(" e.g: -o modules:timestamps\n");
- printf("\n");
- printf("Converts records from an openLdap formatted schema to an ldif schema\n\n");
- exit(1);
-}
-
- int main(int argc, const char **argv)
-{
- TALLOC_CTX *ctx;
- struct schema_conv ret;
- struct ldb_cmdline *options;
- FILE *in = stdin;
- FILE *out = stdout;
- ldb_global_init();
-
- ctx = talloc_new(NULL);
- ldb_ctx = ldb_init(ctx);
-
- setenv("LDB_URL", "NONE", 1);
- options = ldb_cmdline_process(ldb_ctx, argc, argv, usage);
-
- if (options->basedn == NULL) {
- perror("Base DN not specified");
- exit(1);
- } else {
- basedn = ldb_dn_explode(ctx, options->basedn);
- if (basedn == NULL) {
- perror("Malformed Base DN");
- exit(1);
- }
- }
-
- if (options->input) {
- in = fopen(options->input, "r");
- if (!in) {
- perror(options->input);
- exit(1);
- }
- }
- if (options->output) {
- out = fopen(options->output, "w");
- if (!out) {
- perror(options->output);
- exit(1);
- }
- }
-
- ret = process_file(in, out);
-
- fclose(in);
- fclose(out);
-
- printf("Converted %d records with %d failures\n", ret.count, ret.failures);
-
- return 0;
-}
diff --git a/source/lib/ldb/web/index.html b/source/lib/ldb/web/index.html
deleted file mode 100644
index 2715a0d8bd2..00000000000
--- a/source/lib/ldb/web/index.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>ldb</TITLE>
-</HEAD>
-<BODY BGCOLOR="#ffffff" TEXT="#000000" VLINK="#292555" LINK="#292555" ALINK="#cc0033">
-
-<h1>ldb</h1>
-
-ldb is a LDAP-like embedded database. It is not at all LDAP standards
-compliant, so if you want a standards compliant database then please
-see the excellent <a href="http://www.openldap.org/">OpenLDAP</a>
-project.<p>
-
-What ldb does is provide a fast database with an LDAP-like API
-designed to be used within an application. In some ways it can be seen
-as a intermediate solution between key-value pair databases and a real
-LDAP database.<p>
-
-ldb is the database engine used in Samba4.
-
-<h2>Features</h2>
-
-The main features that separate ldb from other solutions are:
-
-<ul>
-<li>Safe multi-reader, multi-writer, using byte range locking
-<li>LDAP-like API
-<li>fast operation
-<li>choice of local tdb or remote LDAP backends
-<li>integration with <a href="http://talloc.samba.org">talloc</a>
-<li>schema-less operation, for trivial setup
-<li>modules for extensions (such as schema support)
-<li>easy setup of indexes and attribute properties
-<li>ldbedit tool for database editing (reminiscent of 'vipw')
-<li>ldif for import/export
-</ul>
-
-<h2>Documentation</h2>
-
-Currently ldb is completely lacking in programmer or user
-documentation. This is your opportunity to make a contribution! Start
-with the public functions declared in <a
-href="http://samba.org/ftp/unpacked/samba4/source/lib/ldb/include/ldb.h">ldb.h</a>
-and the example code in the <a
-href="http://samba.org/ftp/unpacked/samba4/source/lib/ldb/tools/">tools
-directory</a>. Documentation in the same docbook format used by Samba
-would be preferred.
-
-<h2>Discussion and bug reports</h2>
-
-ldb does not currently have its own mailing list or bug tracking
-system. For now, please use the <a
-href="https://lists.samba.org/mailman/listinfo/samba-technical">samba-technical</a>
-mailing list, and the <a href="http://bugzilla.samba.org/">Samba
-bugzilla</a> bug tracking system.
-
-<h2>Download</h2>
-
-You can download the latest release either via rsync or anonymous
-svn. To fetch via svn use the following commands:
-
-<pre>
- svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/ldb ldb
- svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/tdb tdb
- svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/talloc talloc
- svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/replace libreplace
-</pre>
-
-To fetch via rsync use these commands:
-
-<pre>
- rsync -Pavz samba.org::ftp/unpacked/ldb .
- rsync -Pavz samba.org::ftp/unpacked/tdb .
- rsync -Pavz samba.org::ftp/unpacked/talloc .
- rsync -Pavz samba.org::ftp/unpacked/libreplace .
-</pre>
-
-and build in ldb. It will find the other libraries in the directory
-above automatically.
-
-<hr>
-<tiny>
-<a href="http://samba.org/~tridge/">Andrew Tridgell</a><br>
-ldb AT tridgell.net
-</tiny>
-
-</BODY>
-</HTML>
diff --git a/source/lib/messages.c b/source/lib/messages.c
index 54657d8d563..88b5f3ab936 100644
--- a/source/lib/messages.c
+++ b/source/lib/messages.c
@@ -4,7 +4,6 @@
Copyright (C) Andrew Tridgell 2000
Copyright (C) 2001 by Martin Pool
Copyright (C) 2002 by Jeremy Allison
- Copyright (C) 2007 by Volker Lendecke
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -47,33 +46,506 @@
*/
#include "includes.h"
-#include "librpc/gen_ndr/messaging.h"
-#include "librpc/gen_ndr/ndr_messaging.h"
-struct messaging_callback {
- struct messaging_callback *prev, *next;
- uint32 msg_type;
- void (*fn)(struct messaging_context *msg, void *private_data,
- uint32_t msg_type,
- struct server_id server_id, DATA_BLOB *data);
- void *private_data;
+/* the locking database handle */
+static TDB_CONTEXT *tdb;
+static int received_signal;
+
+/* change the message version with any incompatible changes in the protocol */
+#define MESSAGE_VERSION 1
+
+struct message_rec {
+ int msg_version;
+ int msg_type;
+ struct process_id dest;
+ struct process_id src;
+ size_t len;
};
+/* we have a linked list of dispatch handlers */
+static struct dispatch_fns {
+ struct dispatch_fns *next, *prev;
+ int msg_type;
+ void (*fn)(int msg_type, struct process_id pid, void *buf, size_t len,
+ void *private_data);
+ void *private_data;
+} *dispatch_fns;
+
+/****************************************************************************
+ Free global objects.
+****************************************************************************/
+
+void gfree_messages(void)
+{
+ struct dispatch_fns *dfn, *next;
+
+ /* delete the dispatch_fns list */
+ dfn = dispatch_fns;
+ while( dfn ) {
+ next = dfn->next;
+ DLIST_REMOVE(dispatch_fns, dfn);
+ SAFE_FREE(dfn);
+ dfn = next;
+ }
+}
+
+/****************************************************************************
+ Notifications come in as signals.
+****************************************************************************/
+
+static void sig_usr1(void)
+{
+ received_signal = 1;
+ sys_select_signal(SIGUSR1);
+}
+
/****************************************************************************
A useful function for testing the message system.
****************************************************************************/
-static void ping_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void ping_message(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
- const char *msg = data->data ? (const char *)data->data : "none";
+ const char *msg = buf ? (const char *)buf : "none";
DEBUG(1,("INFO: Received PING message from PID %s [%s]\n",
procid_str_static(&src), msg));
- messaging_send(msg_ctx, src, MSG_PONG, data);
+ message_send_pid(src, MSG_PONG, buf, len, True);
+}
+
+/****************************************************************************
+ Initialise the messaging functions.
+****************************************************************************/
+
+BOOL message_init(void)
+{
+ sec_init();
+
+ if (tdb)
+ return True;
+
+ tdb = tdb_open_log(lock_path("messages.tdb"),
+ 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
+ O_RDWR|O_CREAT,0600);
+
+ if (!tdb) {
+ DEBUG(0,("ERROR: Failed to initialise messages database\n"));
+ return False;
+ }
+
+ /* Activate the per-hashchain freelist */
+ tdb_set_max_dead(tdb, 5);
+
+ CatchSignal(SIGUSR1, SIGNAL_CAST sig_usr1);
+
+ message_register(MSG_PING, ping_message, NULL);
+
+ /* Register some debugging related messages */
+
+ register_msg_pool_usage();
+ register_dmalloc_msgs();
+
+ return True;
+}
+
+/*******************************************************************
+ Form a static tdb key from a pid.
+******************************************************************/
+
+static TDB_DATA message_key_pid(struct process_id pid)
+{
+ static char key[20];
+ TDB_DATA kbuf;
+
+ slprintf(key, sizeof(key)-1, "PID/%s", procid_str_static(&pid));
+
+ kbuf.dptr = (char *)key;
+ kbuf.dsize = strlen(key)+1;
+ return kbuf;
+}
+
+/****************************************************************************
+ Notify a process that it has a message. If the process doesn't exist
+ then delete its record in the database.
+****************************************************************************/
+
+static NTSTATUS message_notify(struct process_id procid)
+{
+ pid_t pid = procid.pid;
+ int ret;
+ uid_t euid = geteuid();
+
+ /*
+ * Doing kill with a non-positive pid causes messages to be
+ * sent to places we don't want.
+ */
+
+ SMB_ASSERT(pid > 0);
+
+ if (euid != 0) {
+ /* If we're not root become so to send the message. */
+ save_re_uid();
+ set_effective_uid(0);
+ }
+
+ ret = kill(pid, SIGUSR1);
+
+ if (euid != 0) {
+ /* Go back to who we were. */
+ int saved_errno = errno;
+ restore_re_uid_fromroot();
+ errno = saved_errno;
+ }
+
+ if (ret == -1) {
+ if (errno == ESRCH) {
+ DEBUG(2,("pid %d doesn't exist - deleting messages record\n",
+ (int)pid));
+ tdb_delete(tdb, message_key_pid(procid));
+
+ /*
+ * INVALID_HANDLE is the closest I can think of -- vl
+ */
+ return NT_STATUS_INVALID_HANDLE;
+ }
+
+ DEBUG(2,("message to process %d failed - %s\n", (int)pid,
+ strerror(errno)));
+
+ /*
+ * No call to map_nt_error_from_unix -- don't want to link in
+ * errormap.o into lots of utils.
+ */
+
+ if (errno == EINVAL) return NT_STATUS_INVALID_PARAMETER;
+ if (errno == EPERM) return NT_STATUS_ACCESS_DENIED;
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+
+ return NT_STATUS_OK;
+}
+
+/****************************************************************************
+ Send a message to a particular pid.
+****************************************************************************/
+
+static NTSTATUS message_send_pid_internal(struct process_id pid, int msg_type,
+ const void *buf, size_t len,
+ BOOL duplicates_allowed,
+ unsigned int timeout)
+{
+ TDB_DATA kbuf;
+ TDB_DATA dbuf;
+ TDB_DATA old_dbuf;
+ struct message_rec rec;
+ char *ptr;
+ struct message_rec prec;
+
+ /* NULL pointer means implicit length zero. */
+ if (!buf) {
+ SMB_ASSERT(len == 0);
+ }
+
+ /*
+ * Doing kill with a non-positive pid causes messages to be
+ * sent to places we don't want.
+ */
+
+ SMB_ASSERT(procid_to_pid(&pid) > 0);
+
+ rec.msg_version = MESSAGE_VERSION;
+ rec.msg_type = msg_type;
+ rec.dest = pid;
+ rec.src = procid_self();
+ rec.len = buf ? len : 0;
+
+ kbuf = message_key_pid(pid);
+
+ dbuf.dptr = (char *)SMB_MALLOC(len + sizeof(rec));
+ if (!dbuf.dptr) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
+ memcpy(dbuf.dptr, &rec, sizeof(rec));
+ if (len > 0 && buf)
+ memcpy((void *)((char*)dbuf.dptr+sizeof(rec)), buf, len);
+
+ dbuf.dsize = len + sizeof(rec);
+
+ if (duplicates_allowed) {
+
+ /* If duplicates are allowed we can just append the message and return. */
+
+ /* lock the record for the destination */
+ if (timeout) {
+ if (tdb_chainlock_with_timeout(tdb, kbuf, timeout) == -1) {
+ DEBUG(0,("message_send_pid_internal: failed to get "
+ "chainlock with timeout %ul.\n", timeout));
+ SAFE_FREE(dbuf.dptr);
+ return NT_STATUS_IO_TIMEOUT;
+ }
+ } else {
+ if (tdb_chainlock(tdb, kbuf) == -1) {
+ DEBUG(0,("message_send_pid_internal: failed to get "
+ "chainlock.\n"));
+ SAFE_FREE(dbuf.dptr);
+ return NT_STATUS_LOCK_NOT_GRANTED;
+ }
+ }
+ tdb_append(tdb, kbuf, dbuf);
+ tdb_chainunlock(tdb, kbuf);
+
+ SAFE_FREE(dbuf.dptr);
+ errno = 0; /* paranoia */
+ return message_notify(pid);
+ }
+
+ /* lock the record for the destination */
+ if (timeout) {
+ if (tdb_chainlock_with_timeout(tdb, kbuf, timeout) == -1) {
+ DEBUG(0,("message_send_pid_internal: failed to get chainlock "
+ "with timeout %ul.\n", timeout));
+ SAFE_FREE(dbuf.dptr);
+ return NT_STATUS_IO_TIMEOUT;
+ }
+ } else {
+ if (tdb_chainlock(tdb, kbuf) == -1) {
+ DEBUG(0,("message_send_pid_internal: failed to get "
+ "chainlock.\n"));
+ SAFE_FREE(dbuf.dptr);
+ return NT_STATUS_LOCK_NOT_GRANTED;
+ }
+ }
+
+ old_dbuf = tdb_fetch(tdb, kbuf);
+
+ if (!old_dbuf.dptr) {
+ /* its a new record */
+
+ tdb_store(tdb, kbuf, dbuf, TDB_REPLACE);
+ tdb_chainunlock(tdb, kbuf);
+
+ SAFE_FREE(dbuf.dptr);
+ errno = 0; /* paranoia */
+ return message_notify(pid);
+ }
+
+ /* Not a new record. Check for duplicates. */
+
+ for(ptr = (char *)old_dbuf.dptr; ptr < old_dbuf.dptr + old_dbuf.dsize; ) {
+ /*
+ * First check if the message header matches, then, if it's a non-zero
+ * sized message, check if the data matches. If so it's a duplicate and
+ * we can discard it. JRA.
+ */
+
+ if (!memcmp(ptr, &rec, sizeof(rec))) {
+ if (!len || (len && !memcmp( ptr + sizeof(rec), buf, len))) {
+ tdb_chainunlock(tdb, kbuf);
+ DEBUG(10,("message_send_pid_internal: discarding "
+ "duplicate message.\n"));
+ SAFE_FREE(dbuf.dptr);
+ SAFE_FREE(old_dbuf.dptr);
+ return NT_STATUS_OK;
+ }
+ }
+ memcpy(&prec, ptr, sizeof(prec));
+ ptr += sizeof(rec) + prec.len;
+ }
+
+ /* we're adding to an existing entry */
+
+ tdb_append(tdb, kbuf, dbuf);
+ tdb_chainunlock(tdb, kbuf);
+
+ SAFE_FREE(old_dbuf.dptr);
+ SAFE_FREE(dbuf.dptr);
+
+ errno = 0; /* paranoia */
+ return message_notify(pid);
+}
+
+/****************************************************************************
+ Send a message to a particular pid - no timeout.
+****************************************************************************/
+
+NTSTATUS message_send_pid(struct process_id pid, int msg_type, const void *buf,
+ size_t len, BOOL duplicates_allowed)
+{
+ return message_send_pid_internal(pid, msg_type, buf, len,
+ duplicates_allowed, 0);
+}
+
+/****************************************************************************
+ Send a message to a particular pid, with timeout in seconds.
+****************************************************************************/
+
+NTSTATUS message_send_pid_with_timeout(struct process_id pid, int msg_type,
+ const void *buf, size_t len,
+ BOOL duplicates_allowed, unsigned int timeout)
+{
+ return message_send_pid_internal(pid, msg_type, buf, len, duplicates_allowed,
+ timeout);
+}
+
+/****************************************************************************
+ Count the messages pending for a particular pid. Expensive....
+****************************************************************************/
+
+unsigned int messages_pending_for_pid(struct process_id pid)
+{
+ TDB_DATA kbuf;
+ TDB_DATA dbuf;
+ char *buf;
+ unsigned int message_count = 0;
+
+ kbuf = message_key_pid(pid);
+
+ dbuf = tdb_fetch(tdb, kbuf);
+ if (dbuf.dptr == NULL || dbuf.dsize == 0) {
+ SAFE_FREE(dbuf.dptr);
+ return 0;
+ }
+
+ for (buf = dbuf.dptr; dbuf.dsize > sizeof(struct message_rec);) {
+ struct message_rec rec;
+ memcpy(&rec, buf, sizeof(rec));
+ buf += (sizeof(rec) + rec.len);
+ dbuf.dsize -= (sizeof(rec) + rec.len);
+ message_count++;
+ }
+
+ SAFE_FREE(dbuf.dptr);
+ return message_count;
+}
+
+/****************************************************************************
+ Retrieve all messages for the current process.
+****************************************************************************/
+
+static BOOL retrieve_all_messages(char **msgs_buf, size_t *total_len)
+{
+ TDB_DATA kbuf;
+ TDB_DATA dbuf;
+ TDB_DATA null_dbuf;
+
+ ZERO_STRUCT(null_dbuf);
+
+ *msgs_buf = NULL;
+ *total_len = 0;
+
+ kbuf = message_key_pid(pid_to_procid(sys_getpid()));
+
+ if (tdb_chainlock(tdb, kbuf) == -1)
+ return False;
+
+ dbuf = tdb_fetch(tdb, kbuf);
+ /*
+ * Replace with an empty record to keep the allocated
+ * space in the tdb.
+ */
+ tdb_store(tdb, kbuf, null_dbuf, TDB_REPLACE);
+ tdb_chainunlock(tdb, kbuf);
+
+ if (dbuf.dptr == NULL || dbuf.dsize == 0) {
+ SAFE_FREE(dbuf.dptr);
+ return False;
+ }
+
+ *msgs_buf = dbuf.dptr;
+ *total_len = dbuf.dsize;
+
+ return True;
+}
+
+/****************************************************************************
+ Parse out the next message for the current process.
+****************************************************************************/
+
+static BOOL message_recv(char *msgs_buf, size_t total_len, int *msg_type,
+ struct process_id *src, char **buf, size_t *len)
+{
+ struct message_rec rec;
+ char *ret_buf = *buf;
+
+ *buf = NULL;
+ *len = 0;
+
+ if (total_len - (ret_buf - msgs_buf) < sizeof(rec))
+ return False;
+
+ memcpy(&rec, ret_buf, sizeof(rec));
+ ret_buf += sizeof(rec);
+
+ if (rec.msg_version != MESSAGE_VERSION) {
+ DEBUG(0,("message version %d received (expected %d)\n", rec.msg_version, MESSAGE_VERSION));
+ return False;
+ }
+
+ if (rec.len > 0) {
+ if (total_len - (ret_buf - msgs_buf) < rec.len)
+ return False;
+ }
+
+ *len = rec.len;
+ *msg_type = rec.msg_type;
+ *src = rec.src;
+ *buf = ret_buf;
+
+ return True;
+}
+
+/****************************************************************************
+ Receive and dispatch any messages pending for this process.
+ JRA changed Dec 13 2006. Only one message handler now permitted per type.
+ *NOTE*: Dispatch functions must be able to cope with incoming
+ messages on an *odd* byte boundary.
+****************************************************************************/
+
+void message_dispatch(void)
+{
+ int msg_type;
+ struct process_id src;
+ char *buf;
+ char *msgs_buf;
+ size_t len, total_len;
+ int n_handled;
+
+ if (!received_signal)
+ return;
+
+ DEBUG(10,("message_dispatch: received_signal = %d\n", received_signal));
+
+ received_signal = 0;
+
+ if (!retrieve_all_messages(&msgs_buf, &total_len))
+ return;
+
+ for (buf = msgs_buf; message_recv(msgs_buf, total_len, &msg_type, &src, &buf, &len); buf += len) {
+ struct dispatch_fns *dfn;
+
+ DEBUG(10,("message_dispatch: received msg_type=%d "
+ "src_pid=%u\n", msg_type,
+ (unsigned int) procid_to_pid(&src)));
+
+ n_handled = 0;
+ for (dfn = dispatch_fns; dfn; dfn = dfn->next) {
+ if (dfn->msg_type == msg_type) {
+ DEBUG(10,("message_dispatch: processing message of type %d.\n", msg_type));
+ dfn->fn(msg_type, src,
+ len ? (void *)buf : NULL, len,
+ dfn->private_data);
+ n_handled++;
+ break;
+ }
+ }
+ if (!n_handled) {
+ DEBUG(5,("message_dispatch: warning: no handler registed for "
+ "msg_type %d in pid %u\n",
+ msg_type, (unsigned int)sys_getpid()));
+ }
+ }
+ SAFE_FREE(msgs_buf);
}
/****************************************************************************
@@ -83,12 +555,63 @@ static void ping_message(struct messaging_context *msg_ctx,
messages on an *odd* byte boundary.
****************************************************************************/
+void message_register(int msg_type,
+ void (*fn)(int msg_type, struct process_id pid,
+ void *buf, size_t len,
+ void *private_data),
+ void *private_data)
+{
+ struct dispatch_fns *dfn;
+
+ for (dfn = dispatch_fns; dfn; dfn = dfn->next) {
+ if (dfn->msg_type == msg_type) {
+ dfn->fn = fn;
+ return;
+ }
+ }
+
+ dfn = SMB_MALLOC_P(struct dispatch_fns);
+
+ if (dfn != NULL) {
+
+ ZERO_STRUCTPN(dfn);
+
+ dfn->msg_type = msg_type;
+ dfn->fn = fn;
+ dfn->private_data = private_data;
+
+ DLIST_ADD(dispatch_fns, dfn);
+ }
+ else {
+
+ DEBUG(0,("message_register: Not enough memory. malloc failed!\n"));
+ }
+}
+
+/****************************************************************************
+ De-register the function for a particular message type.
+****************************************************************************/
+
+void message_deregister(int msg_type)
+{
+ struct dispatch_fns *dfn, *next;
+
+ for (dfn = dispatch_fns; dfn; dfn = next) {
+ next = dfn->next;
+ if (dfn->msg_type == msg_type) {
+ DLIST_REMOVE(dispatch_fns, dfn);
+ SAFE_FREE(dfn);
+ return;
+ }
+ }
+}
+
struct msg_all {
- struct messaging_context *msg_ctx;
int msg_type;
uint32 msg_flag;
const void *buf;
size_t len;
+ BOOL duplicates;
int n_sent;
};
@@ -96,38 +619,39 @@ struct msg_all {
Send one of the messages for the broadcast.
****************************************************************************/
-static int traverse_fn(struct db_record *rec,
- const struct connections_key *ckey,
- const struct connections_data *crec,
- void *state)
+static int traverse_fn(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state)
{
+ struct connections_data crec;
struct msg_all *msg_all = (struct msg_all *)state;
NTSTATUS status;
- if (crec->cnum != -1)
+ if (dbuf.dsize != sizeof(crec))
+ return 0;
+
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum != -1)
return 0;
/* Don't send if the receiver hasn't registered an interest. */
- if(!(crec->bcast_msg_flags & msg_all->msg_flag))
+ if(!(crec.bcast_msg_flags & msg_all->msg_flag))
return 0;
/* If the msg send fails because the pid was not found (i.e. smbd died),
* the msg has already been deleted from the messages.tdb.*/
- status = messaging_send_buf(msg_all->msg_ctx,
- crec->pid, msg_all->msg_type,
- (uint8 *)msg_all->buf, msg_all->len);
+ status = message_send_pid(crec.pid, msg_all->msg_type,
+ msg_all->buf, msg_all->len,
+ msg_all->duplicates);
if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_HANDLE)) {
/* If the pid was not found delete the entry from connections.tdb */
DEBUG(2,("pid %s doesn't exist - deleting connections %d [%s]\n",
- procid_str_static(&crec->pid), crec->cnum,
- crec->servicename));
-
- rec->delete_rec(rec);
+ procid_str_static(&crec.pid), crec.cnum, crec.servicename));
+ tdb_delete(the_tdb, kbuf);
}
msg_all->n_sent++;
return 0;
@@ -145,9 +669,9 @@ static int traverse_fn(struct db_record *rec,
*
* @retval True for success.
**/
-BOOL message_send_all(struct messaging_context *msg_ctx,
- int msg_type,
+BOOL message_send_all(TDB_CONTEXT *conn_tdb, int msg_type,
const void *buf, size_t len,
+ BOOL duplicates_allowed,
int *n_sent)
{
struct msg_all msg_all;
@@ -168,18 +692,61 @@ BOOL message_send_all(struct messaging_context *msg_ctx,
msg_all.buf = buf;
msg_all.len = len;
+ msg_all.duplicates = duplicates_allowed;
msg_all.n_sent = 0;
- msg_all.msg_ctx = msg_ctx;
- connections_forall(traverse_fn, &msg_all);
+ tdb_traverse(conn_tdb, traverse_fn, &msg_all);
if (n_sent)
*n_sent = msg_all.n_sent;
return True;
}
-struct event_context *messaging_event_context(struct messaging_context *msg_ctx)
+/*
+ * Block and unblock receiving of messages. Allows removal of race conditions
+ * when doing a fork and changing message disposition.
+ */
+
+void message_block(void)
{
- return msg_ctx->event_ctx;
+ BlockSignals(True, SIGUSR1);
+}
+
+void message_unblock(void)
+{
+ BlockSignals(False, SIGUSR1);
+}
+
+/*
+ * Samba4 API wrapper around the Samba3 implementation. Yes, I know, we could
+ * import the whole Samba4 thing, but I want notify.c from Samba4 in first.
+ */
+
+struct messaging_callback {
+ struct messaging_callback *prev, *next;
+ uint32 msg_type;
+ void (*fn)(struct messaging_context *msg, void *private_data,
+ uint32_t msg_type,
+ struct server_id server_id, DATA_BLOB *data);
+ void *private_data;
+};
+
+struct messaging_context {
+ struct server_id id;
+ struct messaging_callback *callbacks;
+};
+
+static int messaging_context_destructor(struct messaging_context *ctx)
+{
+ struct messaging_callback *cb;
+
+ for (cb = ctx->callbacks; cb; cb = cb->next) {
+ /*
+ * We unconditionally remove all instances of our callback
+ * from the tdb basis.
+ */
+ message_deregister(cb->msg_type);
+ }
+ return 0;
}
struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
@@ -187,82 +754,47 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
struct event_context *ev)
{
struct messaging_context *ctx;
- NTSTATUS status;
if (!(ctx = TALLOC_ZERO_P(mem_ctx, struct messaging_context))) {
return NULL;
}
ctx->id = server_id;
- ctx->event_ctx = ev;
-
- status = messaging_tdb_init(ctx, ctx, &ctx->local);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("messaging_tdb_init failed: %s\n",
- nt_errstr(status)));
- TALLOC_FREE(ctx);
- return NULL;
- }
-
-#ifdef CLUSTER_SUPPORT
- if (lp_clustering()) {
- status = messaging_ctdbd_init(ctx, ctx, &ctx->remote);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("messaging_ctdb_init failed: %s\n",
- nt_errstr(status)));
- TALLOC_FREE(ctx);
- return NULL;
- }
- }
-#endif
-
- messaging_register(ctx, NULL, MSG_PING, ping_message);
-
- /* Register some debugging related messages */
-
- register_msg_pool_usage(ctx);
- register_dmalloc_msgs(ctx);
- debug_register_msgs(ctx);
-
+ talloc_set_destructor(ctx, messaging_context_destructor);
return ctx;
}
-/*
- * re-init after a fork
- */
-NTSTATUS messaging_reinit(struct messaging_context *msg_ctx)
+static void messaging_callback(int msg_type, struct process_id pid,
+ void *buf, size_t len, void *private_data)
{
-#ifdef CLUSTER_SUPPORT
+ struct messaging_context *ctx = talloc_get_type_abort(
+ private_data, struct messaging_context);
+ struct messaging_callback *cb, *next;
- TALLOC_FREE(msg_ctx->remote);
+ for (cb = ctx->callbacks; cb; cb = next) {
+ /*
+ * Allow a callback to remove itself
+ */
+ next = cb->next;
- if (lp_clustering()) {
- NTSTATUS status;
+ if (msg_type == cb->msg_type) {
+ DATA_BLOB blob;
+ struct server_id id;
- status = messaging_ctdbd_init(msg_ctx, msg_ctx,
- &msg_ctx->remote);
+ blob.data = (uint8 *)buf;
+ blob.length = len;
+ id.id = pid;
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("messaging_ctdb_init failed: %s\n",
- nt_errstr(status)));
- return status;
+ cb->fn(ctx, cb->private_data, msg_type, id, &blob);
}
}
-
-#endif
-
- return NT_STATUS_OK;
}
-
/*
* Register a dispatch function for a particular message type. Allow multiple
* registrants
*/
-NTSTATUS messaging_register(struct messaging_context *msg_ctx,
- void *private_data,
+NTSTATUS messaging_register(struct messaging_context *ctx, void *private_data,
uint32_t msg_type,
void (*fn)(struct messaging_context *msg,
void *private_data,
@@ -272,19 +804,7 @@ NTSTATUS messaging_register(struct messaging_context *msg_ctx,
{
struct messaging_callback *cb;
- /*
- * Only one callback per type
- */
-
- for (cb = msg_ctx->callbacks; cb != NULL; cb = cb->next) {
- if (cb->msg_type == msg_type) {
- cb->fn = fn;
- cb->private_data = private_data;
- return NT_STATUS_OK;
- }
- }
-
- if (!(cb = talloc(msg_ctx, struct messaging_callback))) {
+ if (!(cb = talloc(ctx, struct messaging_callback))) {
return NT_STATUS_NO_MEMORY;
}
@@ -292,7 +812,8 @@ NTSTATUS messaging_register(struct messaging_context *msg_ctx,
cb->fn = fn;
cb->private_data = private_data;
- DLIST_ADD(msg_ctx->callbacks, cb);
+ DLIST_ADD(ctx->callbacks, cb);
+ message_register(msg_type, messaging_callback, ctx);
return NT_STATUS_OK;
}
@@ -317,39 +838,12 @@ void messaging_deregister(struct messaging_context *ctx, uint32_t msg_type,
/*
Send a message to a particular server
*/
-NTSTATUS messaging_send(struct messaging_context *msg_ctx,
- struct server_id server, uint32_t msg_type,
- const DATA_BLOB *data)
+NTSTATUS messaging_send(struct messaging_context *msg,
+ struct server_id server,
+ uint32_t msg_type, DATA_BLOB *data)
{
- return msg_ctx->local->send_fn(msg_ctx, server, msg_type, data,
- msg_ctx->local);
-}
-
-NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx,
- struct server_id server, uint32_t msg_type,
- const uint8 *buf, size_t len)
-{
- DATA_BLOB blob = data_blob_const(buf, len);
- return messaging_send(msg_ctx, server, msg_type, &blob);
-}
-
-/*
- Dispatch one messsaging_rec
-*/
-void messaging_dispatch_rec(struct messaging_context *msg_ctx,
- struct messaging_rec *rec)
-{
- struct messaging_callback *cb, *next;
-
- for (cb = msg_ctx->callbacks; cb != NULL; cb = next) {
- next = cb->next;
- if (cb->msg_type == rec->msg_type) {
- cb->fn(msg_ctx, cb->private_data, rec->msg_type,
- rec->src, &rec->buf);
- return;
- }
- }
- return;
+ return message_send_pid_internal(server.id, msg_type, data->data,
+ data->length, True, 0);
}
/** @} **/
diff --git a/source/lib/messages_ctdbd.c b/source/lib/messages_ctdbd.c
deleted file mode 100644
index 4ac9ea99043..00000000000
--- a/source/lib/messages_ctdbd.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Samba internal messaging functions
- Copyright (C) 2007 by Volker Lendecke
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#ifdef CLUSTER_SUPPORT
-
-#include "librpc/gen_ndr/messaging.h"
-
-struct messaging_ctdbd_context {
- struct ctdbd_connection *conn;
-};
-
-/*
- * This is a Samba3 hack/optimization. Routines like process_exists need to
- * talk to ctdbd, and they don't get handed a messaging context.
- */
-struct ctdbd_connection *global_ctdbd_connection;
-
-struct ctdbd_connection *messaging_ctdbd_connection(void)
-{
- return global_ctdbd_connection;
-}
-
-static NTSTATUS messaging_ctdb_send(struct messaging_context *msg_ctx,
- struct server_id pid, int msg_type,
- const DATA_BLOB *data,
- struct messaging_backend *backend)
-{
- struct messaging_ctdbd_context *ctx = talloc_get_type_abort(
- backend->private_data, struct messaging_ctdbd_context);
-
- struct messaging_rec msg;
-
- msg.msg_version = MESSAGE_VERSION;
- msg.msg_type = msg_type;
- msg.dest = pid;
- msg.src = procid_self();
- msg.buf = *data;
-
- return ctdbd_messaging_send(ctx->conn, pid.vnn, pid.pid, &msg);
-}
-
-static int messaging_ctdbd_destructor(struct messaging_ctdbd_context *ctx)
-{
- /*
- * The global connection just went away
- */
- global_ctdbd_connection = NULL;
- return 0;
-}
-
-NTSTATUS messaging_ctdbd_init(struct messaging_context *msg_ctx,
- TALLOC_CTX *mem_ctx,
- struct messaging_backend **presult)
-{
- struct messaging_backend *result;
- struct messaging_ctdbd_context *ctx;
- NTSTATUS status;
-
- if (!(result = TALLOC_P(mem_ctx, struct messaging_backend))) {
- DEBUG(0, ("talloc failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!(ctx = TALLOC_P(result, struct messaging_ctdbd_context))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NT_STATUS_NO_MEMORY;
- }
-
- status = ctdbd_messaging_connection(ctx, &ctx->conn);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("ctdbd_init_connection failed: %s\n",
- nt_errstr(status)));
- TALLOC_FREE(result);
- return status;
- }
-
- global_ctdbd_connection = ctx->conn;
- talloc_set_destructor(ctx, messaging_ctdbd_destructor);
-
- set_my_vnn(ctdbd_vnn(ctx->conn));
-
- result->send_fn = messaging_ctdb_send;
- result->private_data = (void *)ctx;
-
- *presult = result;
- return NT_STATUS_OK;
-}
-
-#else
-
-NTSTATUS messaging_ctdbd_init(struct messaging_context *msg_ctx,
- TALLOC_CTX *mem_ctx,
- struct messaging_backend **presult)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-#endif
diff --git a/source/lib/messages_local.c b/source/lib/messages_local.c
deleted file mode 100644
index 1f50e5bb6f2..00000000000
--- a/source/lib/messages_local.c
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Samba internal messaging functions
- Copyright (C) 2007 by Volker Lendecke
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/**
- @defgroup messages Internal messaging framework
- @{
- @file messages.c
-
- @brief Module for internal messaging between Samba daemons.
-
- The idea is that if a part of Samba wants to do communication with
- another Samba process then it will do a message_register() of a
- dispatch function, and use message_send_pid() to send messages to
- that process.
-
- The dispatch function is given the pid of the sender, and it can
- use that to reply by message_send_pid(). See ping_message() for a
- simple example.
-
- @caution Dispatch functions must be able to cope with incoming
- messages on an *odd* byte boundary.
-
- This system doesn't have any inherent size limitations but is not
- very efficient for large messages or when messages are sent in very
- quick succession.
-
-*/
-
-#include "includes.h"
-#include "librpc/gen_ndr/messaging.h"
-#include "librpc/gen_ndr/ndr_messaging.h"
-
-static int received_signal;
-
-static NTSTATUS messaging_tdb_send(struct messaging_context *msg_ctx,
- struct server_id pid, int msg_type,
- const DATA_BLOB *data,
- struct messaging_backend *backend);
-
-/****************************************************************************
- Notifications come in as signals.
-****************************************************************************/
-
-static void sig_usr1(void)
-{
- received_signal = 1;
- sys_select_signal(SIGUSR1);
-}
-
-static int messaging_tdb_destructor(struct messaging_backend *tdb_ctx)
-{
- TDB_CONTEXT *tdb = (TDB_CONTEXT *)tdb_ctx->private_data;
- tdb_close(tdb);
- return 0;
-}
-
-/****************************************************************************
- Initialise the messaging functions.
-****************************************************************************/
-
-NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx,
- TALLOC_CTX *mem_ctx,
- struct messaging_backend **presult)
-{
- struct messaging_backend *result;
- TDB_CONTEXT *tdb;
-
- if (!(result = TALLOC_P(mem_ctx, struct messaging_backend))) {
- DEBUG(0, ("talloc failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- tdb = tdb_open_log(lock_path("messages.tdb"),
- 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
- O_RDWR|O_CREAT,0600);
-
- if (!tdb) {
- NTSTATUS status = map_nt_error_from_unix(errno);
- DEBUG(0, ("ERROR: Failed to initialise messages database: "
- "%s\n", strerror(errno)));
- TALLOC_FREE(result);
- return status;
- }
-
- sec_init();
-
- /* Activate the per-hashchain freelist */
- tdb_set_max_dead(tdb, 5);
-
- CatchSignal(SIGUSR1, SIGNAL_CAST sig_usr1);
-
- result->private_data = (void *)tdb;
- result->send_fn = messaging_tdb_send;
-
- talloc_set_destructor(result, messaging_tdb_destructor);
-
- *presult = result;
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
- Form a static tdb key from a pid.
-******************************************************************/
-
-static TDB_DATA message_key_pid(struct server_id pid)
-{
- static char key[20];
- TDB_DATA kbuf;
-
- slprintf(key, sizeof(key)-1, "PID/%s", procid_str_static(&pid));
-
- kbuf.dptr = (uint8 *)key;
- kbuf.dsize = strlen(key)+1;
- return kbuf;
-}
-
-/*
- Fetch the messaging array for a process
- */
-
-static NTSTATUS messaging_tdb_fetch(TDB_CONTEXT *msg_tdb,
- TDB_DATA key,
- TALLOC_CTX *mem_ctx,
- struct messaging_array **presult)
-{
- struct messaging_array *result;
- TDB_DATA data;
- DATA_BLOB blob;
- NTSTATUS status;
-
- if (!(result = TALLOC_ZERO_P(mem_ctx, struct messaging_array))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- data = tdb_fetch(msg_tdb, key);
-
- if (data.dptr == NULL) {
- *presult = result;
- return NT_STATUS_OK;
- }
-
- blob = data_blob_const(data.dptr, data.dsize);
-
- status = ndr_pull_struct_blob(
- &blob, result, result,
- (ndr_pull_flags_fn_t)ndr_pull_messaging_array);
-
- SAFE_FREE(data.dptr);
-
- if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(result);
- return status;
- }
-
- if (DEBUGLEVEL >= 10) {
- DEBUG(10, ("messaging_tdb_fetch:\n"));
- NDR_PRINT_DEBUG(messaging_array, result);
- }
-
- *presult = result;
- return NT_STATUS_OK;
-}
-
-/*
- Store a messaging array for a pid
-*/
-
-static NTSTATUS messaging_tdb_store(TDB_CONTEXT *msg_tdb,
- TDB_DATA key,
- struct messaging_array *array)
-{
- TDB_DATA data;
- DATA_BLOB blob;
- NTSTATUS status;
- TALLOC_CTX *mem_ctx;
- int ret;
-
- if (array->num_messages == 0) {
- tdb_delete(msg_tdb, key);
- return NT_STATUS_OK;
- }
-
- if (!(mem_ctx = talloc_new(array))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- status = ndr_push_struct_blob(
- &blob, mem_ctx, array,
- (ndr_push_flags_fn_t)ndr_push_messaging_array);
-
- if (!NT_STATUS_IS_OK(status)) {
- talloc_free(mem_ctx);
- return status;
- }
-
- if (DEBUGLEVEL >= 10) {
- DEBUG(10, ("messaging_tdb_store:\n"));
- NDR_PRINT_DEBUG(messaging_array, array);
- }
-
- data.dptr = blob.data;
- data.dsize = blob.length;
-
- ret = tdb_store(msg_tdb, key, data, TDB_REPLACE);
- TALLOC_FREE(mem_ctx);
-
- return (ret == 0) ? NT_STATUS_OK : NT_STATUS_INTERNAL_DB_CORRUPTION;
-}
-
-/****************************************************************************
- Notify a process that it has a message. If the process doesn't exist
- then delete its record in the database.
-****************************************************************************/
-
-static NTSTATUS message_notify(struct server_id procid)
-{
- pid_t pid = procid.pid;
- int ret;
- uid_t euid = geteuid();
-
- /*
- * Doing kill with a non-positive pid causes messages to be
- * sent to places we don't want.
- */
-
- SMB_ASSERT(pid > 0);
-
- if (euid != 0) {
- /* If we're not root become so to send the message. */
- save_re_uid();
- set_effective_uid(0);
- }
-
- ret = kill(pid, SIGUSR1);
-
- if (euid != 0) {
- /* Go back to who we were. */
- int saved_errno = errno;
- restore_re_uid_fromroot();
- errno = saved_errno;
- }
-
- if (ret == 0) {
- return NT_STATUS_OK;
- }
-
- /*
- * Something has gone wrong
- */
-
- DEBUG(2,("message to process %d failed - %s\n", (int)pid,
- strerror(errno)));
-
- /*
- * No call to map_nt_error_from_unix -- don't want to link in
- * errormap.o into lots of utils.
- */
-
- if (errno == ESRCH) return NT_STATUS_INVALID_HANDLE;
- if (errno == EINVAL) return NT_STATUS_INVALID_PARAMETER;
- if (errno == EPERM) return NT_STATUS_ACCESS_DENIED;
- return NT_STATUS_UNSUCCESSFUL;
-}
-
-/****************************************************************************
- Send a message to a particular pid.
-****************************************************************************/
-
-static NTSTATUS messaging_tdb_send(struct messaging_context *msg_ctx,
- struct server_id pid, int msg_type,
- const DATA_BLOB *data,
- struct messaging_backend *backend)
-{
- struct messaging_array *msg_array;
- struct messaging_rec *rec;
- TALLOC_CTX *mem_ctx;
- NTSTATUS status;
- TDB_DATA key = message_key_pid(pid);
- TDB_CONTEXT *tdb = (TDB_CONTEXT *)backend->private_data;
-
- /* NULL pointer means implicit length zero. */
- if (!data->data) {
- SMB_ASSERT(data->length == 0);
- }
-
- /*
- * Doing kill with a non-positive pid causes messages to be
- * sent to places we don't want.
- */
-
- SMB_ASSERT(procid_to_pid(&pid) > 0);
-
- if (!(mem_ctx = talloc_init("message_send_pid"))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- if (tdb_chainlock(tdb, key) == -1) {
- TALLOC_FREE(mem_ctx);
- return NT_STATUS_LOCK_NOT_GRANTED;
- }
-
- status = messaging_tdb_fetch(tdb, key, mem_ctx, &msg_array);
-
- if (!NT_STATUS_IS_OK(status)) {
- goto done;
- }
-
- if ((msg_type & MSG_FLAG_LOWPRIORITY)
- && (msg_array->num_messages > 1000)) {
- DEBUG(5, ("Dropping message for PID %s\n",
- procid_str_static(&pid)));
- status = NT_STATUS_INSUFFICIENT_RESOURCES;
- goto done;
- }
-
- if (!(rec = TALLOC_REALLOC_ARRAY(mem_ctx, msg_array->messages,
- struct messaging_rec,
- msg_array->num_messages+1))) {
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- rec[msg_array->num_messages].msg_version = MESSAGE_VERSION;
- rec[msg_array->num_messages].msg_type = msg_type & MSG_TYPE_MASK;
- rec[msg_array->num_messages].dest = pid;
- rec[msg_array->num_messages].src = procid_self();
- rec[msg_array->num_messages].buf = *data;
-
- msg_array->messages = rec;
- msg_array->num_messages += 1;
-
- status = messaging_tdb_store(tdb, key, msg_array);
-
- if (!NT_STATUS_IS_OK(status)) {
- goto done;
- }
-
- status = message_notify(pid);
-
- if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_HANDLE)) {
- DEBUG(2, ("pid %s doesn't exist - deleting messages record\n",
- procid_str_static(&pid)));
- tdb_delete(tdb, message_key_pid(pid));
- }
-
- done:
- tdb_chainunlock(tdb, key);
- TALLOC_FREE(mem_ctx);
- return status;
-}
-
-/****************************************************************************
- Retrieve all messages for the current process.
-****************************************************************************/
-
-static NTSTATUS retrieve_all_messages(TDB_CONTEXT *msg_tdb,
- TALLOC_CTX *mem_ctx,
- struct messaging_array **presult)
-{
- struct messaging_array *result;
- TDB_DATA key = message_key_pid(procid_self());
- NTSTATUS status;
-
- if (tdb_chainlock(msg_tdb, key) == -1) {
- return NT_STATUS_LOCK_NOT_GRANTED;
- }
-
- status = messaging_tdb_fetch(msg_tdb, key, mem_ctx, &result);
-
- /*
- * We delete the record here, tdb_set_max_dead keeps it around
- */
- tdb_delete(msg_tdb, key);
- tdb_chainunlock(msg_tdb, key);
-
- if (NT_STATUS_IS_OK(status)) {
- *presult = result;
- }
-
- return status;
-}
-
-/****************************************************************************
- Receive and dispatch any messages pending for this process.
- JRA changed Dec 13 2006. Only one message handler now permitted per type.
- *NOTE*: Dispatch functions must be able to cope with incoming
- messages on an *odd* byte boundary.
-****************************************************************************/
-
-void message_dispatch(struct messaging_context *msg_ctx)
-{
- struct messaging_array *msg_array = NULL;
- TDB_CONTEXT *tdb = (TDB_CONTEXT *)(msg_ctx->local->private_data);
- uint32 i;
-
- if (!received_signal)
- return;
-
- DEBUG(10, ("message_dispatch: received_signal = %d\n",
- received_signal));
-
- received_signal = 0;
-
- if (!NT_STATUS_IS_OK(retrieve_all_messages(tdb, NULL, &msg_array))) {
- return;
- }
-
- for (i=0; i<msg_array->num_messages; i++) {
- messaging_dispatch_rec(msg_ctx, &msg_array->messages[i]);
- }
-
- TALLOC_FREE(msg_array);
-}
-
-/** @} **/
diff --git a/source/lib/module.c b/source/lib/module.c
index 96a37ae6b55..092a68cd680 100644
--- a/source/lib/module.c
+++ b/source/lib/module.c
@@ -150,3 +150,88 @@ void init_modules(void)
if(lp_preload_modules())
smb_load_modules(lp_preload_modules());
}
+
+
+/***************************************************************************
+ * This Function registers a idle event
+ *
+ * the registered funtions are run periodically
+ * and maybe shutdown idle connections (e.g. to an LDAP server)
+ ***************************************************************************/
+static smb_event_id_t smb_idle_event_id = 1;
+
+struct smb_idle_list_ent {
+ struct smb_idle_list_ent *prev,*next;
+ smb_event_id_t id;
+ smb_idle_event_fn *fn;
+ void *data;
+ time_t interval;
+ time_t lastrun;
+};
+
+static struct smb_idle_list_ent *smb_idle_event_list = NULL;
+
+smb_event_id_t smb_register_idle_event(smb_idle_event_fn *fn, void *data, time_t interval)
+{
+ struct smb_idle_list_ent *event;
+
+ if (!fn) {
+ return SMB_EVENT_ID_INVALID;
+ }
+
+ event = SMB_MALLOC_P(struct smb_idle_list_ent);
+ if (!event) {
+ DEBUG(0,("malloc() failed!\n"));
+ return SMB_EVENT_ID_INVALID;
+ }
+ event->fn = fn;
+ event->data = data;
+ event->interval = interval;
+ event->lastrun = 0;
+ event->id = smb_idle_event_id++;
+
+ DLIST_ADD(smb_idle_event_list,event);
+
+ return event->id;
+}
+
+BOOL smb_unregister_idle_event(smb_event_id_t id)
+{
+ struct smb_idle_list_ent *event = smb_idle_event_list;
+
+ while(event) {
+ if (event->id == id) {
+ DLIST_REMOVE(smb_idle_event_list,event);
+ SAFE_FREE(event);
+ return True;
+ }
+ event = event->next;
+ }
+
+ return False;
+}
+
+void smb_run_idle_events(time_t now)
+{
+ struct smb_idle_list_ent *event = smb_idle_event_list;
+
+ while (event) {
+ struct smb_idle_list_ent *next = event->next;
+ time_t interval;
+
+ if (event->interval <= 0) {
+ interval = SMB_IDLE_EVENT_DEFAULT_INTERVAL;
+ } else if (event->interval >= SMB_IDLE_EVENT_MIN_INTERVAL) {
+ interval = event->interval;
+ } else {
+ interval = SMB_IDLE_EVENT_MIN_INTERVAL;
+ }
+ if (now >(event->lastrun+interval)) {
+ event->lastrun = now;
+ event->fn(&event->data,&event->interval,now);
+ }
+ event = next;
+ }
+
+ return;
+}
diff --git a/source/lib/packet.c b/source/lib/packet.c
deleted file mode 100644
index 2473a771e0b..00000000000
--- a/source/lib/packet.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Packet handling
- Copyright (C) Volker Lendecke 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-struct packet_context {
- int fd;
- struct data_blob in, out;
-};
-
-/*
- * Close the underlying fd
- */
-static int packet_context_destructor(struct packet_context *ctx)
-{
- return close(ctx->fd);
-}
-
-/*
- * Initialize a packet context. The fd is given to the packet context, meaning
- * that it is automatically closed when the packet context is freed.
- */
-struct packet_context *packet_init(TALLOC_CTX *mem_ctx, int fd)
-{
- struct packet_context *result;
-
- if (!(result = TALLOC_ZERO_P(mem_ctx, struct packet_context))) {
- return NULL;
- }
-
- result->fd = fd;
- talloc_set_destructor(result, packet_context_destructor);
- return result;
-}
-
-/*
- * Pull data from the fd
- */
-NTSTATUS packet_fd_read(struct packet_context *ctx)
-{
- int res, available;
- size_t new_size;
- uint8 *in;
-
- res = ioctl(ctx->fd, FIONREAD, &available);
-
- if (res == -1) {
- DEBUG(10, ("ioctl(FIONREAD) failed: %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- SMB_ASSERT(available >= 0);
-
- if (available == 0) {
- return NT_STATUS_END_OF_FILE;
- }
-
- new_size = ctx->in.length + available;
-
- if (new_size < ctx->in.length) {
- DEBUG(0, ("integer wrap\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!(in = TALLOC_REALLOC_ARRAY(ctx, ctx->in.data, uint8, new_size))) {
- DEBUG(10, ("talloc failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- res = recv(ctx->fd, in + ctx->in.length, available, 0);
-
- if (res < 0) {
- DEBUG(10, ("recv failed: %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- if (res == 0) {
- return NT_STATUS_END_OF_FILE;
- }
-
- ctx->in.data = in;
- ctx->in.length += available;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS packet_fd_read_sync(struct packet_context *ctx)
-{
- int res;
- fd_set r_fds;
-
- FD_ZERO(&r_fds);
- FD_SET(ctx->fd, &r_fds);
-
- res = sys_select(ctx->fd+1, &r_fds, NULL, NULL, NULL);
-
- if (res == -1) {
- DEBUG(10, ("select returned %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- return packet_fd_read(ctx);
-}
-
-BOOL packet_handler(struct packet_context *ctx,
- BOOL (*full_req)(const struct data_blob *data,
- size_t *length,
- void *private_data),
- NTSTATUS (*callback)(const struct data_blob *data,
- void *private_data),
- void *private_data,
- NTSTATUS *status)
-{
- size_t length;
- struct data_blob data;
-
- if (!full_req(&ctx->in, &length, private_data)) {
- return False;
- }
-
- SMB_ASSERT(length <= ctx->in.length);
-
- data.data = ctx->in.data;
- data.length = length;
-
- *status = callback(&data, private_data);
-
- memmove(ctx->in.data, ctx->in.data + length,
- ctx->in.length - length);
- ctx->in.length -= length;
-
- return True;
-}
-
-/*
- * How many bytes of outgoing data do we have pending?
- */
-size_t packet_outgoing_bytes(struct packet_context *ctx)
-{
- return ctx->out.length;
-}
-
-/*
- * Push data to the fd
- */
-NTSTATUS packet_fd_write(struct packet_context *ctx)
-{
- ssize_t sent;
-
- sent = send(ctx->fd, ctx->out.data, ctx->out.length, 0);
-
- if (sent == -1) {
- DEBUG(0, ("send failed: %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
- }
-
- memmove(ctx->out.data, ctx->out.data + sent,
- ctx->out.length - sent);
- ctx->out.length -= sent;
-
- return NT_STATUS_OK;
-}
-
-/*
- * Sync flush all outgoing bytes
- */
-NTSTATUS packet_flush(struct packet_context *ctx)
-{
- while (ctx->out.length != 0) {
- NTSTATUS status = packet_fd_write(ctx);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
- }
- return NT_STATUS_OK;
-}
-
-/*
- * Send a list of DATA_BLOBs
- *
- * Example: packet_send(ctx, 2, data_blob_const(&size, sizeof(size)),
- * data_blob_const(buf, size));
- */
-NTSTATUS packet_send(struct packet_context *ctx, int num_blobs, ...)
-{
- va_list ap;
- int i;
- size_t len;
- uint8 *out;
-
- len = ctx->out.length;
-
- va_start(ap, num_blobs);
- for (i=0; i<num_blobs; i++) {
- size_t tmp;
- struct data_blob blob = va_arg(ap, struct data_blob);
-
- tmp = len + blob.length;
- if (tmp < len) {
- DEBUG(0, ("integer overflow\n"));
- va_end(ap);
- return NT_STATUS_NO_MEMORY;
- }
- len = tmp;
- }
- va_end(ap);
-
- if (len == 0) {
- return NT_STATUS_OK;
- }
-
- if (!(out = TALLOC_REALLOC_ARRAY(ctx, ctx->out.data, uint8, len))) {
- DEBUG(0, ("talloc failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- ctx->out.data = out;
-
- va_start(ap, num_blobs);
- for (i=0; i<num_blobs; i++) {
- struct data_blob blob = va_arg(ap, struct data_blob);
-
- memcpy(ctx->out.data+ctx->out.length, blob.data, blob.length);
- ctx->out.length += blob.length;
- }
- va_end(ap);
-
- SMB_ASSERT(ctx->out.length == len);
- return NT_STATUS_OK;
-}
-
-/*
- * Get the packet context's file descriptor
- */
-int packet_get_fd(struct packet_context *ctx)
-{
- return ctx->fd;
-}
-
diff --git a/source/lib/pam_errors.c b/source/lib/pam_errors.c
index 42931383edd..9d9a377a912 100644
--- a/source/lib/pam_errors.c
+++ b/source/lib/pam_errors.c
@@ -21,11 +21,7 @@
#include "includes.h"
#ifdef WITH_PAM
-#if defined(HAVE_SECURITY_PAM_APPL_H)
#include <security/pam_appl.h>
-#elif defined(HAVE_PAM_PAM_APPL_H)
-#include <pam/pam_appl.h>
-#endif
#if defined(PAM_AUTHTOK_RECOVERY_ERR) && !defined(PAM_AUTHTOK_RECOVER_ERR)
#define PAM_AUTHTOK_RECOVER_ERR PAM_AUTHTOK_RECOVERY_ERR
diff --git a/source/lib/pidfile.c b/source/lib/pidfile.c
index 9dc4f2f1869..42ecede1175 100644
--- a/source/lib/pidfile.c
+++ b/source/lib/pidfile.c
@@ -34,15 +34,12 @@ pid_t pidfile_pid(const char *name)
char pidstr[20];
pid_t pid;
unsigned int ret;
- char * pidFile;
+ pstring pidFile;
- if (asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name) == -1) {
- return 0;
- }
+ slprintf(pidFile, sizeof(pidFile)-1, "%s/%s.pid", lp_piddir(), name);
fd = sys_open(pidFile, O_NONBLOCK | O_RDONLY, 0644);
if (fd == -1) {
- SAFE_FREE(pidFile);
return 0;
}
@@ -71,14 +68,12 @@ pid_t pidfile_pid(const char *name)
goto noproc;
}
- SAFE_FREE(pidFile);
close(fd);
return (pid_t)ret;
noproc:
close(fd);
unlink(pidFile);
- SAFE_FREE(pidFile);
return 0;
}
@@ -88,14 +83,14 @@ void pidfile_create(const char *program_name)
int fd;
char buf[20];
char *short_configfile;
- char *name;
- char *pidFile;
+ pstring name;
+ pstring pidFile;
pid_t pid;
/* Add a suffix to the program name if this is a process with a
* none default configuration file name. */
if (strcmp( CONFIGFILE, dyn_CONFIGFILE) == 0) {
- name = SMB_STRDUP(program_name);
+ strncpy( name, program_name, sizeof( name)-1);
} else {
short_configfile = strrchr( dyn_CONFIGFILE, '/');
if (short_configfile == NULL) {
@@ -105,15 +100,11 @@ void pidfile_create(const char *program_name)
/* full/relative path provided */
short_configfile++;
}
- if (asprintf(&name, "%s-%s", program_name,
- short_configfile+1) == -1) {
- smb_panic("asprintf failed");
- }
+ slprintf( name, sizeof( name)-1, "%s-%s", program_name,
+ short_configfile );
}
- if (asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name) == -1) {
- smb_panic("asprintf failed");
- }
+ slprintf(pidFile, sizeof(pidFile)-1, "%s/%s.pid", lp_piddir(), name);
pid = pidfile_pid(name);
if (pid != 0) {
@@ -143,6 +134,4 @@ void pidfile_create(const char *program_name)
exit(1);
}
/* Leave pid file open & locked for the duration... */
- SAFE_FREE(name);
- SAFE_FREE(pidFile);
}
diff --git a/source/lib/privileges.c b/source/lib/privileges.c
index 3714a906def..9c60b80e451 100644
--- a/source/lib/privileges.c
+++ b/source/lib/privileges.c
@@ -4,7 +4,6 @@
Copyright (C) Jean François Micouleau 1998-2001
Copyright (C) Simo Sorce 2002-2003
Copyright (C) Gerald (Jerry) Carter 2005
- Copyright (C) Michael Adam 2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -26,6 +25,84 @@
#define PRIVPREFIX "PRIV_"
+static const SE_PRIV se_priv_all = SE_ALL_PRIVS;
+static const SE_PRIV se_priv_end = SE_END;
+
+/* Define variables for all privileges so we can use the
+ SE_PRIV* in the various se_priv_XXX() functions */
+
+const SE_PRIV se_priv_none = SE_NONE;
+const SE_PRIV se_machine_account = SE_MACHINE_ACCOUNT;
+const SE_PRIV se_print_operator = SE_PRINT_OPERATOR;
+const SE_PRIV se_add_users = SE_ADD_USERS;
+const SE_PRIV se_disk_operators = SE_DISK_OPERATOR;
+const SE_PRIV se_remote_shutdown = SE_REMOTE_SHUTDOWN;
+const SE_PRIV se_restore = SE_RESTORE;
+const SE_PRIV se_take_ownership = SE_TAKE_OWNERSHIP;
+
+/********************************************************************
+ This is a list of privileges reported by a WIndows 2000 SP4 AD DC
+ just for reference purposes (and I know the LUID is not guaranteed
+ across reboots):
+
+ SeCreateTokenPrivilege Create a token object ( 0x0, 0x2 )
+ SeAssignPrimaryTokenPrivilege Replace a process level token ( 0x0, 0x3 )
+ SeLockMemoryPrivilege Lock pages in memory ( 0x0, 0x4 )
+ SeIncreaseQuotaPrivilege Increase quotas ( 0x0, 0x5 )
+ SeMachineAccountPrivilege Add workstations to domain ( 0x0, 0x6 )
+ SeTcbPrivilege Act as part of the operating system ( 0x0, 0x7 )
+ SeSecurityPrivilege Manage auditing and security log ( 0x0, 0x8 )
+ SeTakeOwnershipPrivilege Take ownership of files or other objects ( 0x0, 0x9 )
+ SeLoadDriverPrivilege Load and unload device drivers ( 0x0, 0xa )
+ SeSystemProfilePrivilege Profile system performance ( 0x0, 0xb )
+ SeSystemtimePrivilege Change the system time ( 0x0, 0xc )
+ SeProfileSingleProcessPrivilege Profile single process ( 0x0, 0xd )
+ SeIncreaseBasePriorityPrivilege Increase scheduling priority ( 0x0, 0xe )
+ SeCreatePagefilePrivilege Create a pagefile ( 0x0, 0xf )
+ SeCreatePermanentPrivilege Create permanent shared objects ( 0x0, 0x10 )
+ SeBackupPrivilege Back up files and directories ( 0x0, 0x11 )
+ SeRestorePrivilege Restore files and directories ( 0x0, 0x12 )
+ SeShutdownPrivilege Shut down the system ( 0x0, 0x13 )
+ SeDebugPrivilege Debug programs ( 0x0, 0x14 )
+ SeAuditPrivilege Generate security audits ( 0x0, 0x15 )
+ SeSystemEnvironmentPrivilege Modify firmware environment values ( 0x0, 0x16 )
+ SeChangeNotifyPrivilege Bypass traverse checking ( 0x0, 0x17 )
+ SeRemoteShutdownPrivilege Force shutdown from a remote system ( 0x0, 0x18 )
+ SeUndockPrivilege Remove computer from docking station ( 0x0, 0x19 )
+ SeSyncAgentPrivilege Synchronize directory service data ( 0x0, 0x1a )
+ SeEnableDelegationPrivilege Enable computer and user accounts to be trusted for delegation ( 0x0, 0x1b )
+ SeManageVolumePrivilege Perform volume maintenance tasks ( 0x0, 0x1c )
+ SeImpersonatePrivilege Impersonate a client after authentication ( 0x0, 0x1d )
+ SeCreateGlobalPrivilege Create global objects ( 0x0, 0x1e )
+
+ ********************************************************************/
+
+/* we have to define the LUID here due to a horrible check by printmig.exe
+ that requires the SeBackupPrivilege match what is in Windows. So match
+ those that we implement and start Samba privileges at 0x1001 */
+
+PRIVS privs[] = {
+#if 0 /* usrmgr will display these twice if you include them. We don't
+ use them but we'll keep the bitmasks reserved in privileges.h anyways */
+
+ {SE_NETWORK_LOGON, "SeNetworkLogonRight", "Access this computer from network", { 0x0, 0x0 }},
+ {SE_INTERACTIVE_LOGON, "SeInteractiveLogonRight", "Log on locally", { 0x0, 0x0 }},
+ {SE_BATCH_LOGON, "SeBatchLogonRight", "Log on as a batch job", { 0x0, 0x0 }},
+ {SE_SERVICE_LOGON, "SeServiceLogonRight", "Log on as a service", { 0x0, 0x0 }},
+#endif
+ {SE_MACHINE_ACCOUNT, "SeMachineAccountPrivilege", "Add machines to domain", { 0x0, 0x0006 }},
+ {SE_TAKE_OWNERSHIP, "SeTakeOwnershipPrivilege", "Take ownership of files or other objects",{ 0x0, 0x0009 }},
+ {SE_BACKUP, "SeBackupPrivilege", "Back up files and directories", { 0x0, 0x0011 }},
+ {SE_RESTORE, "SeRestorePrivilege", "Restore files and directories", { 0x0, 0x0012 }},
+ {SE_REMOTE_SHUTDOWN, "SeRemoteShutdownPrivilege", "Force shutdown from a remote system", { 0x0, 0x0018 }},
+
+ {SE_PRINT_OPERATOR, "SePrintOperatorPrivilege", "Manage printers", { 0x0, 0x1001 }},
+ {SE_ADD_USERS, "SeAddUsersPrivilege", "Add users and groups to the domain", { 0x0, 0x1002 }},
+ {SE_DISK_OPERATOR, "SeDiskOperatorPrivilege", "Manage disk shares", { 0x0, 0x1003 }},
+
+ {SE_END, "", "", { 0x0, 0x0 }}
+};
+
typedef struct {
size_t count;
DOM_SID *list;
@@ -36,12 +113,131 @@ typedef struct {
SID_LIST sids;
} PRIV_SID_LIST;
+/***************************************************************************
+ copy an SE_PRIV structure
+****************************************************************************/
+
+BOOL se_priv_copy( SE_PRIV *dst, const SE_PRIV *src )
+{
+ if ( !dst || !src )
+ return False;
+
+ memcpy( dst, src, sizeof(SE_PRIV) );
+
+ return True;
+}
+
+/***************************************************************************
+ combine 2 SE_PRIV structures and store the resulting set in mew_mask
+****************************************************************************/
+
+void se_priv_add( SE_PRIV *mask, const SE_PRIV *addpriv )
+{
+ int i;
+
+ for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
+ mask->mask[i] |= addpriv->mask[i];
+ }
+}
+
+/***************************************************************************
+ remove one SE_PRIV sytucture from another and store the resulting set
+ in mew_mask
+****************************************************************************/
+
+void se_priv_remove( SE_PRIV *mask, const SE_PRIV *removepriv )
+{
+ int i;
+
+ for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
+ mask->mask[i] &= ~removepriv->mask[i];
+ }
+}
+
+/***************************************************************************
+ invert a given SE_PRIV and store the set in new_mask
+****************************************************************************/
+
+static void se_priv_invert( SE_PRIV *new_mask, const SE_PRIV *mask )
+{
+ SE_PRIV allprivs;
+
+ se_priv_copy( &allprivs, &se_priv_all );
+ se_priv_remove( &allprivs, mask );
+ se_priv_copy( new_mask, &allprivs );
+}
+
+/***************************************************************************
+ check if 2 SE_PRIV structure are equal
+****************************************************************************/
+
+static BOOL se_priv_equal( const SE_PRIV *mask1, const SE_PRIV *mask2 )
+{
+ return ( memcmp(mask1, mask2, sizeof(SE_PRIV)) == 0 );
+}
+
+/***************************************************************************
+ check if a SE_PRIV has any assigned privileges
+****************************************************************************/
+
+static BOOL se_priv_empty( const SE_PRIV *mask )
+{
+ SE_PRIV p1;
+ int i;
+
+ se_priv_copy( &p1, mask );
+
+ for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
+ p1.mask[i] &= se_priv_all.mask[i];
+ }
+
+ return se_priv_equal( &p1, &se_priv_none );
+}
+
+/*********************************************************************
+ Lookup the SE_PRIV value for a privilege name
+*********************************************************************/
+
+BOOL se_priv_from_name( const char *name, SE_PRIV *mask )
+{
+ int i;
+
+ for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
+ if ( strequal( privs[i].name, name ) ) {
+ se_priv_copy( mask, &privs[i].se_priv );
+ return True;
+ }
+ }
+
+ return False;
+}
+
+/***************************************************************************
+ dump an SE_PRIV structure to the log files
+****************************************************************************/
+
+void dump_se_priv( int dbg_cl, int dbg_lvl, const SE_PRIV *mask )
+{
+ int i;
+
+ DEBUGADDC( dbg_cl, dbg_lvl,("SE_PRIV "));
+
+ for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
+ DEBUGADDC( dbg_cl, dbg_lvl,(" 0x%x", mask->mask[i] ));
+ }
+
+ DEBUGADDC( dbg_cl, dbg_lvl, ("\n"));
+}
+
+/***************************************************************************
+ Retrieve the privilege mask (set) for a given SID
+****************************************************************************/
static BOOL get_privileges( const DOM_SID *sid, SE_PRIV *mask )
{
TDB_CONTEXT *tdb = get_account_pol_tdb();
fstring keystr;
- TDB_DATA data;
+ TDB_DATA key, data;
/* Fail if the admin has not enable privileges */
@@ -55,8 +251,10 @@ static BOOL get_privileges( const DOM_SID *sid, SE_PRIV *mask )
/* PRIV_<SID> (NULL terminated) as the key */
fstr_sprintf( keystr, "%s%s", PRIVPREFIX, sid_string_static(sid) );
+ key.dptr = keystr;
+ key.dsize = strlen(keystr) + 1;
- data = tdb_fetch_bystring( tdb, keystr );
+ data = tdb_fetch( tdb, key );
if ( !data.dptr ) {
DEBUG(3,("get_privileges: No privileges assigned to SID [%s]\n",
@@ -80,7 +278,7 @@ static BOOL set_privileges( const DOM_SID *sid, SE_PRIV *mask )
{
TDB_CONTEXT *tdb = get_account_pol_tdb();
fstring keystr;
- TDB_DATA data;
+ TDB_DATA key, data;
if ( !lp_enable_privileges() )
return False;
@@ -96,13 +294,148 @@ static BOOL set_privileges( const DOM_SID *sid, SE_PRIV *mask )
/* PRIV_<SID> (NULL terminated) as the key */
fstr_sprintf( keystr, "%s%s", PRIVPREFIX, sid_string_static(sid) );
+ key.dptr = keystr;
+ key.dsize = strlen(keystr) + 1;
/* no packing. static size structure, just write it out */
- data.dptr = (uint8 *)mask;
+ data.dptr = (char*)mask;
data.dsize = sizeof(SE_PRIV);
- return ( tdb_store_bystring(tdb, keystr, data, TDB_REPLACE) != -1 );
+ return ( tdb_store(tdb, key, data, TDB_REPLACE) != -1 );
+}
+
+/****************************************************************************
+ check if the privilege is in the privilege list
+****************************************************************************/
+
+static BOOL is_privilege_assigned( const SE_PRIV *privileges,
+ const SE_PRIV *check )
+{
+ SE_PRIV p1, p2;
+
+ if ( !privileges || !check )
+ return False;
+
+ /* everyone has privileges if you aren't checking for any */
+
+ if ( se_priv_empty( check ) ) {
+ DEBUG(1,("is_privilege_assigned: no privileges in check_mask!\n"));
+ return True;
+ }
+
+ se_priv_copy( &p1, check );
+
+ /* invert the SE_PRIV we want to check for and remove that from the
+ original set. If we are left with the SE_PRIV we are checking
+ for then return True */
+
+ se_priv_invert( &p1, check );
+ se_priv_copy( &p2, privileges );
+ se_priv_remove( &p2, &p1 );
+
+ return se_priv_equal( &p2, check );
+}
+
+/****************************************************************************
+ check if the privilege is in the privilege list
+****************************************************************************/
+
+static BOOL is_any_privilege_assigned( SE_PRIV *privileges, const SE_PRIV *check )
+{
+ SE_PRIV p1, p2;
+
+ if ( !privileges || !check )
+ return False;
+
+ /* everyone has privileges if you aren't checking for any */
+
+ if ( se_priv_empty( check ) ) {
+ DEBUG(1,("is_any_privilege_assigned: no privileges in check_mask!\n"));
+ return True;
+ }
+
+ se_priv_copy( &p1, check );
+
+ /* invert the SE_PRIV we want to check for and remove that from the
+ original set. If we are left with the SE_PRIV we are checking
+ for then return True */
+
+ se_priv_invert( &p1, check );
+ se_priv_copy( &p2, privileges );
+ se_priv_remove( &p2, &p1 );
+
+ /* see if we have any bits left */
+
+ return !se_priv_empty( &p2 );
+}
+
+/****************************************************************************
+ add a privilege to a privilege array
+ ****************************************************************************/
+
+static BOOL privilege_set_add(PRIVILEGE_SET *priv_set, LUID_ATTR set)
+{
+ LUID_ATTR *new_set;
+
+ /* we can allocate memory to add the new privilege */
+
+ new_set = TALLOC_REALLOC_ARRAY(priv_set->mem_ctx, priv_set->set, LUID_ATTR, priv_set->count + 1);
+ if ( !new_set ) {
+ DEBUG(0,("privilege_set_add: failed to allocate memory!\n"));
+ return False;
+ }
+
+ new_set[priv_set->count].luid.high = set.luid.high;
+ new_set[priv_set->count].luid.low = set.luid.low;
+ new_set[priv_set->count].attr = set.attr;
+
+ priv_set->count++;
+ priv_set->set = new_set;
+
+ return True;
+}
+
+/*********************************************************************
+ Generate the LUID_ATTR structure based on a bitmask
+ The assumption here is that the privilege has already been validated
+ so we are guaranteed to find it in the list.
+*********************************************************************/
+
+LUID_ATTR get_privilege_luid( SE_PRIV *mask )
+{
+ LUID_ATTR priv_luid;
+ int i;
+
+ ZERO_STRUCT( priv_luid );
+
+ for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
+
+ if ( se_priv_equal( &privs[i].se_priv, mask ) ) {
+ priv_luid.luid = privs[i].luid;
+ break;
+ }
+ }
+
+ return priv_luid;
+}
+
+/*********************************************************************
+ Generate the LUID_ATTR structure based on a bitmask
+*********************************************************************/
+
+const char* get_privilege_dispname( const char *name )
+{
+ int i;
+
+ for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
+
+ if ( strequal( privs[i].name, name ) ) {
+ return privs[i].description;
+ }
+ }
+
+ return NULL;
}
/*********************************************************************
@@ -153,7 +486,7 @@ static int priv_traverse_fn(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data, void *s
/* check we have a PRIV_+SID entry */
- if ( strncmp((const char *)key.dptr, PRIVPREFIX, prefixlen) != 0)
+ if ( strncmp(key.dptr, PRIVPREFIX, prefixlen) != 0)
return 0;
/* check to see if we are looking for a particular privilege */
@@ -170,7 +503,7 @@ static int priv_traverse_fn(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data, void *s
return 0;
}
- fstrcpy( sid_string, (const char *)&key.dptr[strlen(PRIVPREFIX)] );
+ fstrcpy( sid_string, &key.dptr[strlen(PRIVPREFIX)] );
/* this is a last ditch safety check to preventing returning
and invalid SID (i've somehow run into this on development branches) */
@@ -253,15 +586,17 @@ BOOL grant_privilege(const DOM_SID *sid, const SE_PRIV *priv_mask)
BOOL grant_privilege_by_name(DOM_SID *sid, const char *name)
{
- SE_PRIV mask;
+ int i;
- if (! se_priv_from_name(name, &mask)) {
- DEBUG(3, ("grant_privilege_by_name: "
- "No Such Privilege Found (%s)\n", name));
- return False;
- }
+ for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
+ if ( strequal(privs[i].name, name) ) {
+ return grant_privilege( sid, &privs[i].se_priv );
+ }
+ }
- return grant_privilege( sid, &mask );
+ DEBUG(3, ("grant_privilege_by_name: No Such Privilege Found (%s)\n", name));
+
+ return False;
}
/***************************************************************************
@@ -305,16 +640,17 @@ BOOL revoke_all_privileges( DOM_SID *sid )
BOOL revoke_privilege_by_name(DOM_SID *sid, const char *name)
{
- SE_PRIV mask;
+ int i;
- if (! se_priv_from_name(name, &mask)) {
- DEBUG(3, ("revoke_privilege_by_name: "
- "No Such Privilege Found (%s)\n", name));
- return False;
- }
+ for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
+ if ( strequal(privs[i].name, name) ) {
+ return revoke_privilege( sid, &privs[i].se_priv );
+ }
+ }
- return revoke_privilege(sid, &mask);
+ DEBUG(3, ("revoke_privilege_by_name: No Such Privilege Found (%s)\n", name));
+ return False;
}
/***************************************************************************
@@ -406,6 +742,139 @@ NTSTATUS dup_luid_attr(TALLOC_CTX *mem_ctx, LUID_ATTR **new_la, LUID_ATTR *old_l
return NT_STATUS_OK;
}
+/****************************************************************************
+ Does the user have the specified privilege ? We only deal with one privilege
+ at a time here.
+*****************************************************************************/
+
+BOOL user_has_privileges(const NT_USER_TOKEN *token, const SE_PRIV *privilege)
+{
+ if ( !token )
+ return False;
+
+ return is_privilege_assigned( &token->privileges, privilege );
+}
+
+/****************************************************************************
+ Does the user have any of the specified privileges ? We only deal with one privilege
+ at a time here.
+*****************************************************************************/
+
+BOOL user_has_any_privilege(NT_USER_TOKEN *token, const SE_PRIV *privilege)
+{
+ if ( !token )
+ return False;
+
+ return is_any_privilege_assigned( &token->privileges, privilege );
+}
+
+/****************************************************************************
+ Convert a LUID to a named string
+****************************************************************************/
+
+char* luid_to_privilege_name(const LUID *set)
+{
+ static fstring name;
+ int i;
+
+ if (set->high != 0)
+ return NULL;
+
+ for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
+ if ( set->low == privs[i].luid.low ) {
+ fstrcpy( name, privs[i].name );
+ return name;
+ }
+ }
+
+ return NULL;
+}
+
+/*******************************************************************
+ return the number of elements in the privlege array
+*******************************************************************/
+
+int count_all_privileges( void )
+{
+ static int count;
+
+ if ( count )
+ return count;
+
+ /* loop over the array and count it */
+ for ( count=0; !se_priv_equal(&privs[count].se_priv, &se_priv_end); count++ ) ;
+
+ return count;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+BOOL se_priv_to_privilege_set( PRIVILEGE_SET *set, SE_PRIV *mask )
+{
+ int i;
+ uint32 num_privs = count_all_privileges();
+ LUID_ATTR luid;
+
+ luid.attr = 0;
+ luid.luid.high = 0;
+
+ for ( i=0; i<num_privs; i++ ) {
+ if ( !is_privilege_assigned(mask, &privs[i].se_priv) )
+ continue;
+
+ luid.luid = privs[i].luid;
+
+ if ( !privilege_set_add( set, luid ) )
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+static BOOL luid_to_se_priv( LUID *luid, SE_PRIV *mask )
+{
+ int i;
+ uint32 num_privs = count_all_privileges();
+
+ for ( i=0; i<num_privs; i++ ) {
+ if ( luid->low == privs[i].luid.low ) {
+ se_priv_copy( mask, &privs[i].se_priv );
+ return True;
+ }
+ }
+
+ return False;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+BOOL privilege_set_to_se_priv( SE_PRIV *mask, PRIVILEGE_SET *privset )
+{
+ int i;
+
+ ZERO_STRUCTP( mask );
+
+ for ( i=0; i<privset->count; i++ ) {
+ SE_PRIV r;
+
+ /* sanity check for invalid privilege. we really
+ only care about the low 32 bits */
+
+ if ( privset->set[i].luid.high != 0 )
+ return False;
+
+ if ( luid_to_se_priv( &privset->set[i].luid, &r ) )
+ se_priv_add( mask, &r );
+ }
+
+ return True;
+}
+
/*******************************************************************
*******************************************************************/
@@ -421,11 +890,15 @@ BOOL is_privileged_sid( const DOM_SID *sid )
BOOL grant_all_privileges( const DOM_SID *sid )
{
+ int i;
SE_PRIV mask;
+ uint32 num_privs = count_all_privileges();
- if (!se_priv_put_all_privileges(&mask)) {
- return False;
- }
+ se_priv_copy( &mask, &se_priv_none );
+ for ( i=0; i<num_privs; i++ ) {
+ se_priv_add(&mask, &privs[i].se_priv);
+ }
+
return grant_privilege( sid, &mask );
}
diff --git a/source/lib/privileges_basic.c b/source/lib/privileges_basic.c
deleted file mode 100644
index 93ecee89dce..00000000000
--- a/source/lib/privileges_basic.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Privileges handling functions
- Copyright (C) Jean François Micouleau 1998-2001
- Copyright (C) Simo Sorce 2002-2003
- Copyright (C) Gerald (Jerry) Carter 2005
- Copyright (C) Michael Adam 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- * Basic privileges functions (mask-operations and conversion
- * functions between the different formats (se_priv, privset, luid)
- * moved here * from lib/privileges.c to minimize linker deps.
- *
- * generally SID- and LUID-related code is left in lib/privileges.c
- *
- * some extra functions to hide privs array from lib/privileges.c
- */
-
-#include "includes.h"
-
-const SE_PRIV se_priv_all = SE_ALL_PRIVS;
-static const SE_PRIV se_priv_end = SE_END;
-
-/* Define variables for all privileges so we can use the
- SE_PRIV* in the various se_priv_XXX() functions */
-
-const SE_PRIV se_priv_none = SE_NONE;
-const SE_PRIV se_machine_account = SE_MACHINE_ACCOUNT;
-const SE_PRIV se_print_operator = SE_PRINT_OPERATOR;
-const SE_PRIV se_add_users = SE_ADD_USERS;
-const SE_PRIV se_disk_operators = SE_DISK_OPERATOR;
-const SE_PRIV se_remote_shutdown = SE_REMOTE_SHUTDOWN;
-const SE_PRIV se_restore = SE_RESTORE;
-const SE_PRIV se_take_ownership = SE_TAKE_OWNERSHIP;
-
-/********************************************************************
- This is a list of privileges reported by a WIndows 2000 SP4 AD DC
- just for reference purposes (and I know the LUID is not guaranteed
- across reboots):
-
- SeCreateTokenPrivilege Create a token object ( 0x0, 0x2 )
- SeAssignPrimaryTokenPrivilege Replace a process level token ( 0x0, 0x3 )
- SeLockMemoryPrivilege Lock pages in memory ( 0x0, 0x4 )
- SeIncreaseQuotaPrivilege Increase quotas ( 0x0, 0x5 )
- SeMachineAccountPrivilege Add workstations to domain ( 0x0, 0x6 )
- SeTcbPrivilege Act as part of the operating system ( 0x0, 0x7 )
- SeSecurityPrivilege Manage auditing and security log ( 0x0, 0x8 )
- SeTakeOwnershipPrivilege Take ownership of files or other objects ( 0x0, 0x9 )
- SeLoadDriverPrivilege Load and unload device drivers ( 0x0, 0xa )
- SeSystemProfilePrivilege Profile system performance ( 0x0, 0xb )
- SeSystemtimePrivilege Change the system time ( 0x0, 0xc )
- SeProfileSingleProcessPrivilege Profile single process ( 0x0, 0xd )
- SeIncreaseBasePriorityPrivilege Increase scheduling priority ( 0x0, 0xe )
- SeCreatePagefilePrivilege Create a pagefile ( 0x0, 0xf )
- SeCreatePermanentPrivilege Create permanent shared objects ( 0x0, 0x10 )
- SeBackupPrivilege Back up files and directories ( 0x0, 0x11 )
- SeRestorePrivilege Restore files and directories ( 0x0, 0x12 )
- SeShutdownPrivilege Shut down the system ( 0x0, 0x13 )
- SeDebugPrivilege Debug programs ( 0x0, 0x14 )
- SeAuditPrivilege Generate security audits ( 0x0, 0x15 )
- SeSystemEnvironmentPrivilege Modify firmware environment values ( 0x0, 0x16 )
- SeChangeNotifyPrivilege Bypass traverse checking ( 0x0, 0x17 )
- SeRemoteShutdownPrivilege Force shutdown from a remote system ( 0x0, 0x18 )
- SeUndockPrivilege Remove computer from docking station ( 0x0, 0x19 )
- SeSyncAgentPrivilege Synchronize directory service data ( 0x0, 0x1a )
- SeEnableDelegationPrivilege Enable computer and user accounts to be trusted for delegation ( 0x0, 0x1b )
- SeManageVolumePrivilege Perform volume maintenance tasks ( 0x0, 0x1c )
- SeImpersonatePrivilege Impersonate a client after authentication ( 0x0, 0x1d )
- SeCreateGlobalPrivilege Create global objects ( 0x0, 0x1e )
-
- ********************************************************************/
-
-/* we have to define the LUID here due to a horrible check by printmig.exe
- that requires the SeBackupPrivilege match what is in Windows. So match
- those that we implement and start Samba privileges at 0x1001 */
-
-PRIVS privs[] = {
-#if 0 /* usrmgr will display these twice if you include them. We don't
- use them but we'll keep the bitmasks reserved in privileges.h anyways */
-
- {SE_NETWORK_LOGON, "SeNetworkLogonRight", "Access this computer from network", { 0x0, 0x0 }},
- {SE_INTERACTIVE_LOGON, "SeInteractiveLogonRight", "Log on locally", { 0x0, 0x0 }},
- {SE_BATCH_LOGON, "SeBatchLogonRight", "Log on as a batch job", { 0x0, 0x0 }},
- {SE_SERVICE_LOGON, "SeServiceLogonRight", "Log on as a service", { 0x0, 0x0 }},
-#endif
- {SE_MACHINE_ACCOUNT, "SeMachineAccountPrivilege", "Add machines to domain", { 0x0, 0x0006 }},
- {SE_TAKE_OWNERSHIP, "SeTakeOwnershipPrivilege", "Take ownership of files or other objects",{ 0x0, 0x0009 }},
- {SE_BACKUP, "SeBackupPrivilege", "Back up files and directories", { 0x0, 0x0011 }},
- {SE_RESTORE, "SeRestorePrivilege", "Restore files and directories", { 0x0, 0x0012 }},
- {SE_REMOTE_SHUTDOWN, "SeRemoteShutdownPrivilege", "Force shutdown from a remote system", { 0x0, 0x0018 }},
-
- {SE_PRINT_OPERATOR, "SePrintOperatorPrivilege", "Manage printers", { 0x0, 0x1001 }},
- {SE_ADD_USERS, "SeAddUsersPrivilege", "Add users and groups to the domain", { 0x0, 0x1002 }},
- {SE_DISK_OPERATOR, "SeDiskOperatorPrivilege", "Manage disk shares", { 0x0, 0x1003 }},
-
- {SE_END, "", "", { 0x0, 0x0 }}
-};
-
-/***************************************************************************
- copy an SE_PRIV structure
-****************************************************************************/
-
-BOOL se_priv_copy( SE_PRIV *dst, const SE_PRIV *src )
-{
- if ( !dst || !src )
- return False;
-
- memcpy( dst, src, sizeof(SE_PRIV) );
-
- return True;
-}
-
-/***************************************************************************
- put all privileges into a mask
-****************************************************************************/
-
-BOOL se_priv_put_all_privileges(SE_PRIV *mask)
-{
- int i;
- uint32 num_privs = count_all_privileges();
-
- if (!se_priv_copy(mask, &se_priv_none)) {
- return False;
- }
- for ( i=0; i<num_privs; i++ ) {
- se_priv_add(mask, &privs[i].se_priv);
- }
- return True;
-}
-
-/***************************************************************************
- combine 2 SE_PRIV structures and store the resulting set in mew_mask
-****************************************************************************/
-
-void se_priv_add( SE_PRIV *mask, const SE_PRIV *addpriv )
-{
- int i;
-
- for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
- mask->mask[i] |= addpriv->mask[i];
- }
-}
-
-/***************************************************************************
- remove one SE_PRIV sytucture from another and store the resulting set
- in mew_mask
-****************************************************************************/
-
-void se_priv_remove( SE_PRIV *mask, const SE_PRIV *removepriv )
-{
- int i;
-
- for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
- mask->mask[i] &= ~removepriv->mask[i];
- }
-}
-
-/***************************************************************************
- invert a given SE_PRIV and store the set in new_mask
-****************************************************************************/
-
-static void se_priv_invert( SE_PRIV *new_mask, const SE_PRIV *mask )
-{
- SE_PRIV allprivs;
-
- se_priv_copy( &allprivs, &se_priv_all );
- se_priv_remove( &allprivs, mask );
- se_priv_copy( new_mask, &allprivs );
-}
-
-/***************************************************************************
- check if 2 SE_PRIV structure are equal
-****************************************************************************/
-
-BOOL se_priv_equal( const SE_PRIV *mask1, const SE_PRIV *mask2 )
-{
- return ( memcmp(mask1, mask2, sizeof(SE_PRIV)) == 0 );
-}
-
-/***************************************************************************
- check if a SE_PRIV has any assigned privileges
-****************************************************************************/
-
-static BOOL se_priv_empty( const SE_PRIV *mask )
-{
- SE_PRIV p1;
- int i;
-
- se_priv_copy( &p1, mask );
-
- for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
- p1.mask[i] &= se_priv_all.mask[i];
- }
-
- return se_priv_equal( &p1, &se_priv_none );
-}
-
-/*********************************************************************
- Lookup the SE_PRIV value for a privilege name
-*********************************************************************/
-
-BOOL se_priv_from_name( const char *name, SE_PRIV *mask )
-{
- int i;
-
- for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
- if ( strequal( privs[i].name, name ) ) {
- se_priv_copy( mask, &privs[i].se_priv );
- return True;
- }
- }
-
- return False;
-}
-
-/***************************************************************************
- dump an SE_PRIV structure to the log files
-****************************************************************************/
-
-void dump_se_priv( int dbg_cl, int dbg_lvl, const SE_PRIV *mask )
-{
- int i;
-
- DEBUGADDC( dbg_cl, dbg_lvl,("SE_PRIV "));
-
- for ( i=0; i<SE_PRIV_MASKSIZE; i++ ) {
- DEBUGADDC( dbg_cl, dbg_lvl,(" 0x%x", mask->mask[i] ));
- }
-
- DEBUGADDC( dbg_cl, dbg_lvl, ("\n"));
-}
-
-/****************************************************************************
- check if the privilege is in the privilege list
-****************************************************************************/
-
-BOOL is_privilege_assigned(const SE_PRIV *privileges,
- const SE_PRIV *check)
-{
- SE_PRIV p1, p2;
-
- if ( !privileges || !check )
- return False;
-
- /* everyone has privileges if you aren't checking for any */
-
- if ( se_priv_empty( check ) ) {
- DEBUG(1,("is_privilege_assigned: no privileges in check_mask!\n"));
- return True;
- }
-
- se_priv_copy( &p1, check );
-
- /* invert the SE_PRIV we want to check for and remove that from the
- original set. If we are left with the SE_PRIV we are checking
- for then return True */
-
- se_priv_invert( &p1, check );
- se_priv_copy( &p2, privileges );
- se_priv_remove( &p2, &p1 );
-
- return se_priv_equal( &p2, check );
-}
-
-/****************************************************************************
- check if the privilege is in the privilege list
-****************************************************************************/
-
-static BOOL is_any_privilege_assigned( SE_PRIV *privileges, const SE_PRIV *check )
-{
- SE_PRIV p1, p2;
-
- if ( !privileges || !check )
- return False;
-
- /* everyone has privileges if you aren't checking for any */
-
- if ( se_priv_empty( check ) ) {
- DEBUG(1,("is_any_privilege_assigned: no privileges in check_mask!\n"));
- return True;
- }
-
- se_priv_copy( &p1, check );
-
- /* invert the SE_PRIV we want to check for and remove that from the
- original set. If we are left with the SE_PRIV we are checking
- for then return True */
-
- se_priv_invert( &p1, check );
- se_priv_copy( &p2, privileges );
- se_priv_remove( &p2, &p1 );
-
- /* see if we have any bits left */
-
- return !se_priv_empty( &p2 );
-}
-
-/*********************************************************************
- Generate the LUID_ATTR structure based on a bitmask
-*********************************************************************/
-
-const char* get_privilege_dispname( const char *name )
-{
- int i;
-
- for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
-
- if ( strequal( privs[i].name, name ) ) {
- return privs[i].description;
- }
- }
-
- return NULL;
-}
-
-/****************************************************************************
- initialise a privilege list and set the talloc context
- ****************************************************************************/
-
-/****************************************************************************
- Does the user have the specified privilege ? We only deal with one privilege
- at a time here.
-*****************************************************************************/
-
-BOOL user_has_privileges(const NT_USER_TOKEN *token, const SE_PRIV *privilege)
-{
- if ( !token )
- return False;
-
- return is_privilege_assigned( &token->privileges, privilege );
-}
-
-/****************************************************************************
- Does the user have any of the specified privileges ? We only deal with one privilege
- at a time here.
-*****************************************************************************/
-
-BOOL user_has_any_privilege(NT_USER_TOKEN *token, const SE_PRIV *privilege)
-{
- if ( !token )
- return False;
-
- return is_any_privilege_assigned( &token->privileges, privilege );
-}
-
-/*******************************************************************
- return the number of elements in the privlege array
-*******************************************************************/
-
-int count_all_privileges( void )
-{
- /*
- * The -1 is due to the weird SE_END record...
- */
- return (sizeof(privs) / sizeof(privs[0])) - 1;
-}
-
-
-/*********************************************************************
- Generate the LUID_ATTR structure based on a bitmask
- The assumption here is that the privilege has already been validated
- so we are guaranteed to find it in the list.
-*********************************************************************/
-
-LUID_ATTR get_privilege_luid( SE_PRIV *mask )
-{
- LUID_ATTR priv_luid;
- int i;
-
- ZERO_STRUCT( priv_luid );
-
- for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
-
- if ( se_priv_equal( &privs[i].se_priv, mask ) ) {
- priv_luid.luid = privs[i].luid;
- break;
- }
- }
-
- return priv_luid;
-}
-
-/****************************************************************************
- Convert a LUID to a named string
-****************************************************************************/
-
-const char *luid_to_privilege_name(const LUID *set)
-{
- int i;
-
- if (set->high != 0)
- return NULL;
-
- for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
- if ( set->low == privs[i].luid.low ) {
- return privs[i].name;
- }
- }
-
- return NULL;
-}
-
-
-/****************************************************************************
- add a privilege to a privilege array
- ****************************************************************************/
-
-static BOOL privilege_set_add(PRIVILEGE_SET *priv_set, LUID_ATTR set)
-{
- LUID_ATTR *new_set;
-
- /* we can allocate memory to add the new privilege */
-
- new_set = TALLOC_REALLOC_ARRAY(priv_set->mem_ctx, priv_set->set, LUID_ATTR, priv_set->count + 1);
- if ( !new_set ) {
- DEBUG(0,("privilege_set_add: failed to allocate memory!\n"));
- return False;
- }
-
- new_set[priv_set->count].luid.high = set.luid.high;
- new_set[priv_set->count].luid.low = set.luid.low;
- new_set[priv_set->count].attr = set.attr;
-
- priv_set->count++;
- priv_set->set = new_set;
-
- return True;
-}
-
-/*******************************************************************
-*******************************************************************/
-
-BOOL se_priv_to_privilege_set( PRIVILEGE_SET *set, SE_PRIV *mask )
-{
- int i;
- uint32 num_privs = count_all_privileges();
- LUID_ATTR luid;
-
- luid.attr = 0;
- luid.luid.high = 0;
-
- for ( i=0; i<num_privs; i++ ) {
- if ( !is_privilege_assigned(mask, &privs[i].se_priv) )
- continue;
-
- luid.luid = privs[i].luid;
-
- if ( !privilege_set_add( set, luid ) )
- return False;
- }
-
- return True;
-}
-
-/*******************************************************************
-*******************************************************************/
-
-static BOOL luid_to_se_priv( LUID *luid, SE_PRIV *mask )
-{
- int i;
- uint32 num_privs = count_all_privileges();
-
- for ( i=0; i<num_privs; i++ ) {
- if ( luid->low == privs[i].luid.low ) {
- se_priv_copy( mask, &privs[i].se_priv );
- return True;
- }
- }
-
- return False;
-}
-
-/*******************************************************************
-*******************************************************************/
-
-BOOL privilege_set_to_se_priv( SE_PRIV *mask, PRIVILEGE_SET *privset )
-{
- int i;
-
- ZERO_STRUCTP( mask );
-
- for ( i=0; i<privset->count; i++ ) {
- SE_PRIV r;
-
- /* sanity check for invalid privilege. we really
- only care about the low 32 bits */
-
- if ( privset->set[i].luid.high != 0 )
- return False;
-
- if ( luid_to_se_priv( &privset->set[i].luid, &r ) )
- se_priv_add( mask, &r );
- }
-
- return True;
-}
-
diff --git a/source/lib/replace/Makefile.in b/source/lib/replace/Makefile.in
index 30f39ac6cb4..f4c79749a69 100644
--- a/source/lib/replace/Makefile.in
+++ b/source/lib/replace/Makefile.in
@@ -11,10 +11,9 @@ srcdir = @srcdir@
builddir = @builddir@
INSTALL = @INSTALL@
-.PHONY: test all showflags install installcheck clean distclean realdistclean
+.PHONY: test
-CFLAGS=-I. @CFLAGS@
-LDFLAGS=@LDFLAGS@
+CFLAGS=-I. -I@libreplacedir@ @CFLAGS@
OBJS = @LIBREPLACEOBJ@
@@ -24,7 +23,7 @@ showflags:
@echo 'libreplace will be compiled with flags:'
@echo ' CC = $(CC)'
@echo ' CFLAGS = $(CFLAGS)'
- @echo ' LDFLAGS= $(LDFLAGS)'
+ @echo ' LIBS = $(LIBS)'
install: all
mkdir -p $(libdir)
@@ -41,7 +40,7 @@ installcheck: install test
TEST_OBJS = test/testsuite.o test/os2_delete.o test/strptime.o
testsuite: libreplace.a $(TEST_OBJS)
- $(CC) -o testsuite $(TEST_OBJS) -L. -lreplace $(LDFLAGS)
+ $(CC) -o testsuite $(TEST_OBJS) -L. -lreplace
.c.o:
@echo Compiling $*.c
diff --git a/source/lib/replace/README b/source/lib/replace/README
index e7b89936c0f..77558b2ca96 100644
--- a/source/lib/replace/README
+++ b/source/lib/replace/README
@@ -92,7 +92,6 @@ ZERO_STRUCTPN
ZERO_ARRAY
ARRAY_SIZE
PTR_DIFF
-offsetof
Headers:
stdint.h
diff --git a/source/lib/replace/configure.ac b/source/lib/replace/configure.ac
index beeb77e1520..48fb7ce2594 100644
--- a/source/lib/replace/configure.ac
+++ b/source/lib/replace/configure.ac
@@ -19,6 +19,4 @@ if test "$ac_cv_prog_gcc" = yes; then
CFLAGS="$CFLAGS -Wno-format-y2k"
fi
-AC_SUBST(LDFLAGS)
-
AC_OUTPUT(Makefile)
diff --git a/source/lib/replace/dlfcn.c b/source/lib/replace/dlfcn.c
index 55b38bb9eb7..22f9f8bf79b 100644
--- a/source/lib/replace/dlfcn.c
+++ b/source/lib/replace/dlfcn.c
@@ -26,11 +26,7 @@
#include "replace.h"
#ifndef HAVE_DLOPEN
-#ifdef DLOPEN_TAKES_UNSIGNED_FLAGS
-void *rep_dlopen(const char *name, unsigned int flags)
-#else
void *rep_dlopen(const char *name, int flags)
-#endif
{
return NULL;
}
diff --git a/source/lib/replace/dlfcn.m4 b/source/lib/replace/dlfcn.m4
index a1b57d10ec4..d42409ac630 100644
--- a/source/lib/replace/dlfcn.m4
+++ b/source/lib/replace/dlfcn.m4
@@ -5,17 +5,12 @@ LIBS=""
libreplace_cv_dlfcn=no
AC_SEARCH_LIBS(dlopen, dl)
-AC_CHECK_HEADERS(dlfcn.h)
-AC_CHECK_FUNCS([dlopen dlsym dlerror dlclose],[],[libreplace_cv_dlfcn=yes])
-
-AC_VERIFY_C_PROTOTYPE([void *dlopen(const char* filename, unsigned int flags)],
- [
- return 0;
- ],[
- AC_DEFINE(DLOPEN_TAKES_UNSIGNED_FLAGS, 1, [Whether dlopen takes unsinged int flags])
- ],[],[
- #include <dlfcn.h>
- ])
+if test x"${ac_cv_search_dlopen}" = x"no"; then
+ libreplace_cv_dlfcn=yes
+else
+ AC_CHECK_HEADERS(dlfcn.h)
+ AC_CHECK_FUNCS([dlopen dlsym dlerror dlclose],[],[libreplace_cv_dlfcn=yes])
+fi
if test x"${libreplace_cv_dlfcn}" = x"yes";then
LIBREPLACEOBJ="${LIBREPLACEOBJ} dlfcn.o"
diff --git a/source/lib/replace/libreplace.m4 b/source/lib/replace/libreplace.m4
index f06d7f83dc3..e9b19b7cf51 100644
--- a/source/lib/replace/libreplace.m4
+++ b/source/lib/replace/libreplace.m4
@@ -99,7 +99,7 @@ AC_CHECK_HEADERS(stdarg.h vararg.h)
AC_CHECK_HEADERS(sys/socket.h netinet/in.h netdb.h arpa/inet.h)
AC_CHECK_HEADERS(netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
AC_CHECK_HEADERS(sys/sockio.h sys/un.h)
-AC_CHECK_HEADERS(sys/mount.h mntent.h)
+
dnl we need to check that net/if.h really can be used, to cope with hpux
dnl where including it always fails
@@ -354,7 +354,6 @@ AC_LIBREPLACE_LOCATION_CHECKS
AC_LIBREPLACE_CC_CHECKS
AC_LIBREPLACE_BROKEN_CHECKS
AC__LIBREPLACE_ALL_CHECKS_END
-CFLAGS="$CFLAGS -I$libreplacedir"
])
m4_include(libreplace_cc.m4)
diff --git a/source/lib/replace/libreplace_cc.m4 b/source/lib/replace/libreplace_cc.m4
index 780cf62dec8..74c53cad998 100644
--- a/source/lib/replace/libreplace_cc.m4
+++ b/source/lib/replace/libreplace_cc.m4
@@ -60,9 +60,9 @@ case "$host_os" in
*hpux*)
# mmap on HPUX is completely broken...
AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
- if test "`uname -r`" = "B.11.00" -o "`uname -r`" = "B.11.11"; then
- AC_MSG_WARN([Enabling HPUX 11.00/11.11 header bug workaround])
- CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -Dpread=pread64 -Dpwrite=pwrite64"
+ if test "`uname -r`" = "B.11.11"; then
+ AC_MSG_WARN([Enabling HPUX 11.11 header bug workaround])
+ CFLAGS="$CFLAGS -D_LARGEFILE64_SUPPORT -D__LP64__ -DO_LARGEFILE=04000"
fi
if test "`uname -r`" = "B.11.23"; then
AC_MSG_WARN([Enabling HPUX 11.23 machine/sys/getppdp.h bug workaround])
diff --git a/source/lib/replace/replace.c b/source/lib/replace/replace.c
index b86da53cafd..db299130e51 100644
--- a/source/lib/replace/replace.c
+++ b/source/lib/replace/replace.c
@@ -438,10 +438,6 @@ char *rep_mkdtemp(char *template)
}
#endif
-/*****************************************************************
- Watch out: this is not thread safe.
-*****************************************************************/
-
#ifndef HAVE_PREAD
ssize_t rep_pread(int __fd, void *__buf, size_t __nbytes, off_t __offset)
{
@@ -452,10 +448,6 @@ ssize_t rep_pread(int __fd, void *__buf, size_t __nbytes, off_t __offset)
}
#endif
-/*****************************************************************
- Watch out: this is not thread safe.
-*****************************************************************/
-
#ifndef HAVE_PWRITE
ssize_t rep_pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset)
{
@@ -576,24 +568,20 @@ int rep_unsetenv(const char *name)
{
extern char **environ;
size_t len = strlen(name);
- size_t i, count;
-
- if (environ == NULL || getenv(name) == NULL) {
- return 0;
- }
+ size_t i;
+ int found = 0;
- for (i=0;environ[i];i++) /* noop */ ;
+ for (i=0; (environ && environ[i]); i++) {
+ if (found) {
+ environ[i-1] = environ[i];
+ continue;
+ }
- count=i;
-
- for (i=0;i<count;) {
if (strncmp(environ[i], name, len) == 0 && environ[i][len] == '=') {
- /* note: we do _not_ free the old variable here. It is unsafe to
- do so, as the pointer may not have come from malloc */
- memmove(&environ[i], &environ[i+1], (count-i)*sizeof(char *));
- count--;
- } else {
- i++;
+ free(environ[i]);
+ environ[i] = NULL;
+ found = 1;
+ continue;
}
}
diff --git a/source/lib/replace/replace.h b/source/lib/replace/replace.h
index 411d4012fe6..b96356ac467 100644
--- a/source/lib/replace/replace.h
+++ b/source/lib/replace/replace.h
@@ -53,10 +53,6 @@
#define QSORT_CAST (int (*)(const void *, const void *))
#endif
-#ifndef offsetof
-#define offsetof(t,f) ((unsigned int)&((t *)0)->f)
-#endif
-
#ifdef HAVE_STDINT_H
#include <stdint.h>
/* force off HAVE_INTTYPES_H so that roken doesn't try to include both,
@@ -232,12 +228,8 @@ char *rep_dlerror(void);
#ifndef HAVE_DLOPEN
#define dlopen rep_dlopen
-#ifdef DLOPEN_TAKES_UNSIGNED_FLAGS
-void *rep_dlopen(const char *name, unsigned int flags);
-#else
void *rep_dlopen(const char *name, int flags);
#endif
-#endif
#ifndef HAVE_DLSYM
#define dlsym rep_dlsym
@@ -266,14 +258,6 @@ int rep_socketpair(int d, int type, int protocol, int sv[2]);
#endif
#endif
-#ifndef _DEPRECATED_
-#if (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1 )
-#define _DEPRECATED_ __attribute__ ((deprecated))
-#else
-#define _DEPRECATED_
-#endif
-#endif
-
#ifndef HAVE_VASPRINTF
#define vasprintf rep_vasprintf
int rep_vasprintf(char **ptr, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0);
@@ -337,12 +321,6 @@ char *rep_strptime(const char *buf, const char *format, struct tm *tm);
#ifndef RTLD_LAZY
#define RTLD_LAZY 0
#endif
-#ifndef RTLD_NOW
-#define RTLD_NOW 0
-#endif
-#ifndef RTLD_GLOBAL
-#define RTLD_GLOBAL 0
-#endif
#ifndef HAVE_SECURE_MKSTEMP
#define mkstemp(path) rep_mkstemp(path)
@@ -354,16 +332,6 @@ int rep_mkstemp(char *temp);
char *rep_mkdtemp(char *template);
#endif
-#ifndef HAVE_PREAD
-#define pread rep_pread
-ssize_t rep_pread(int __fd, void *__buf, size_t __nbytes, off_t __offset);
-#endif
-
-#ifndef HAVE_PWRITE
-#define pwrite rep_pwrite
-ssize_t rep_pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset);
-#endif
-
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
diff --git a/source/lib/replace/system/aio.h b/source/lib/replace/system/aio.h
index 624575f6197..45154ccb27a 100644
--- a/source/lib/replace/system/aio.h
+++ b/source/lib/replace/system/aio.h
@@ -7,23 +7,19 @@
Copyright (C) Andrew Tridgell 2006
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_LIBAIO_H
diff --git a/source/lib/replace/system/capability.h b/source/lib/replace/system/capability.h
index 23e59691456..6ed8ae8de02 100644
--- a/source/lib/replace/system/capability.h
+++ b/source/lib/replace/system/capability.h
@@ -7,23 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_SYS_CAPABILITY_H
diff --git a/source/lib/replace/system/dir.h b/source/lib/replace/system/dir.h
index 01607b384f2..64e413c9079 100644
--- a/source/lib/replace/system/dir.h
+++ b/source/lib/replace/system/dir.h
@@ -7,23 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#if HAVE_DIRENT_H
diff --git a/source/lib/replace/system/filesys.h b/source/lib/replace/system/filesys.h
index b3c339a1448..3b68abe48ae 100644
--- a/source/lib/replace/system/filesys.h
+++ b/source/lib/replace/system/filesys.h
@@ -7,24 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <unistd.h>
@@ -38,10 +33,6 @@
#include <sys/mount.h>
#endif
-#ifdef HAVE_MNTENT_H
-#include <mntent.h>
-#endif
-
#ifdef HAVE_SYS_VFS_H
#include <sys/vfs.h>
#endif
diff --git a/source/lib/replace/system/glob.h b/source/lib/replace/system/glob.h
index ea546ff7f71..0e51f397c69 100644
--- a/source/lib/replace/system/glob.h
+++ b/source/lib/replace/system/glob.h
@@ -7,24 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_GLOB_H
diff --git a/source/lib/replace/system/iconv.h b/source/lib/replace/system/iconv.h
index 2b2832a796d..abc2d6f4e1b 100644
--- a/source/lib/replace/system/iconv.h
+++ b/source/lib/replace/system/iconv.h
@@ -7,24 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#if !defined(HAVE_ICONV) && defined(HAVE_ICONV_H)
diff --git a/source/lib/replace/system/kerberos.h b/source/lib/replace/system/kerberos.h
index 8a849c4fb69..1617b96aad1 100644
--- a/source/lib/replace/system/kerberos.h
+++ b/source/lib/replace/system/kerberos.h
@@ -8,24 +8,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_KRB5
diff --git a/source/lib/replace/system/locale.h b/source/lib/replace/system/locale.h
index aa1e1e619e5..82b179dc5b8 100644
--- a/source/lib/replace/system/locale.h
+++ b/source/lib/replace/system/locale.h
@@ -8,24 +8,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_CTYPE_H
diff --git a/source/lib/replace/system/network.h b/source/lib/replace/system/network.h
index 64c7cd33995..5e648dcd156 100644
--- a/source/lib/replace/system/network.h
+++ b/source/lib/replace/system/network.h
@@ -7,24 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_SYS_SOCKET_H
diff --git a/source/lib/replace/system/passwd.h b/source/lib/replace/system/passwd.h
index d51914eb508..21f31f0388c 100644
--- a/source/lib/replace/system/passwd.h
+++ b/source/lib/replace/system/passwd.h
@@ -8,24 +8,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_PWD_H
diff --git a/source/lib/replace/system/printing.h b/source/lib/replace/system/printing.h
index 3054811453a..489ccb1da8c 100644
--- a/source/lib/replace/system/printing.h
+++ b/source/lib/replace/system/printing.h
@@ -8,24 +8,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef AIX
diff --git a/source/lib/replace/system/readline.h b/source/lib/replace/system/readline.h
index 3a253058e2c..4a64ef13766 100644
--- a/source/lib/replace/system/readline.h
+++ b/source/lib/replace/system/readline.h
@@ -3,26 +3,21 @@
/*
Unix SMB/CIFS implementation.
- Readline wrappers
+ readline wrappers
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_LIBREADLINE
diff --git a/source/lib/replace/system/select.h b/source/lib/replace/system/select.h
index a196f9c4789..20346259c27 100644
--- a/source/lib/replace/system/select.h
+++ b/source/lib/replace/system/select.h
@@ -7,34 +7,25 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
-#ifdef HAVE_SYS_EPOLL_H
-#include <sys/epoll.h>
-#endif
-
#ifndef SELECT_CAST
#define SELECT_CAST
#endif
diff --git a/source/lib/replace/system/shmem.h b/source/lib/replace/system/shmem.h
index 234ec1c14a1..26fa7c8d433 100644
--- a/source/lib/replace/system/shmem.h
+++ b/source/lib/replace/system/shmem.h
@@ -7,24 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#if defined(HAVE_SYS_IPC_H)
diff --git a/source/lib/replace/system/syslog.h b/source/lib/replace/system/syslog.h
index f949c7a8d97..e123830a709 100644
--- a/source/lib/replace/system/syslog.h
+++ b/source/lib/replace/system/syslog.h
@@ -7,24 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_SYSLOG_H
diff --git a/source/lib/replace/system/terminal.h b/source/lib/replace/system/terminal.h
index 292c85ab6f6..94d6b5cc98d 100644
--- a/source/lib/replace/system/terminal.h
+++ b/source/lib/replace/system/terminal.h
@@ -7,24 +7,19 @@
Copyright (C) Andrew Tridgell 2004
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef SUNOS4
diff --git a/source/lib/replace/system/time.h b/source/lib/replace/system/time.h
index a0924f4051c..e7c88f133d4 100644
--- a/source/lib/replace/system/time.h
+++ b/source/lib/replace/system/time.h
@@ -6,25 +6,20 @@
time system include wrappers
Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef TIME_WITH_SYS_TIME
diff --git a/source/lib/replace/system/wait.h b/source/lib/replace/system/wait.h
index 96b5c2cb807..179ef0774e0 100644
--- a/source/lib/replace/system/wait.h
+++ b/source/lib/replace/system/wait.h
@@ -6,25 +6,20 @@
waitpid system include wrappers
Copyright (C) Andrew Tridgell 2004
-
- ** NOTE! The following LGPL license applies to the replace
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef HAVE_SYS_WAIT_H
diff --git a/source/lib/secace.c b/source/lib/secace.c
index 871c983533d..c9b4f839503 100644
--- a/source/lib/secace.c
+++ b/source/lib/secace.c
@@ -47,7 +47,9 @@ void sec_ace_copy(SEC_ACE *ace_dest, SEC_ACE *ace_src)
ace_dest->flags = ace_src->flags;
ace_dest->size = ace_src->size;
ace_dest->access_mask = ace_src->access_mask;
- ace_dest->object = ace_src->object;
+ ace_dest->obj_flags = ace_src->obj_flags;
+ memcpy(&ace_dest->obj_guid, &ace_src->obj_guid, sizeof(struct GUID));
+ memcpy(&ace_dest->inh_guid, &ace_src->inh_guid, sizeof(struct GUID));
sid_copy(&ace_dest->trustee, &ace_src->trustee);
}
@@ -55,7 +57,7 @@ void sec_ace_copy(SEC_ACE *ace_dest, SEC_ACE *ace_src)
Sets up a SEC_ACE structure.
********************************************************************/
-void init_sec_ace(SEC_ACE *t, const DOM_SID *sid, uint8 type, uint32 mask, uint8 flag)
+void init_sec_ace(SEC_ACE *t, const DOM_SID *sid, uint8 type, SEC_ACCESS mask, uint8 flag)
{
t->type = type;
t->flags = flag;
diff --git a/source/lib/secdesc.c b/source/lib/secdesc.c
index 510282bbfb0..160fdb949d2 100644
--- a/source/lib/secdesc.c
+++ b/source/lib/secdesc.c
@@ -154,13 +154,13 @@ SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BU
/* Copy over owner and group sids. There seems to be no flag for
this so just check the pointer values. */
- owner_sid = new_sdb->sd->owner_sid ? new_sdb->sd->owner_sid :
- old_sdb->sd->owner_sid;
+ owner_sid = new_sdb->sec->owner_sid ? new_sdb->sec->owner_sid :
+ old_sdb->sec->owner_sid;
- group_sid = new_sdb->sd->group_sid ? new_sdb->sd->group_sid :
- old_sdb->sd->group_sid;
+ group_sid = new_sdb->sec->group_sid ? new_sdb->sec->group_sid :
+ old_sdb->sec->group_sid;
- secdesc_type = new_sdb->sd->type;
+ secdesc_type = new_sdb->sec->type;
/* Ignore changes to the system ACL. This has the effect of making
changes through the security tab audit button not sticking.
@@ -172,14 +172,14 @@ SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BU
/* Copy across discretionary ACL */
if (secdesc_type & SEC_DESC_DACL_PRESENT) {
- dacl = new_sdb->sd->dacl;
+ dacl = new_sdb->sec->dacl;
} else {
- dacl = old_sdb->sd->dacl;
+ dacl = old_sdb->sec->dacl;
}
/* Create new security descriptor from bits */
- psd = make_sec_desc(ctx, new_sdb->sd->revision, secdesc_type,
+ psd = make_sec_desc(ctx, new_sdb->sec->revision, secdesc_type,
owner_sid, group_sid, sacl, dacl, &secdesc_size);
return_sdb = make_sec_desc_buf(ctx, secdesc_size, psd);
@@ -192,7 +192,7 @@ SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BU
********************************************************************/
SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, uint16 revision, uint16 type,
- const DOM_SID *owner_sid, const DOM_SID *grp_sid,
+ const DOM_SID *owner_sid, const DOM_SID *group_sid,
SEC_ACL *sacl, SEC_ACL *dacl, size_t *sd_size)
{
SEC_DESC *dst;
@@ -211,21 +211,21 @@ SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, uint16 revision, uint16 type,
if (dacl)
dst->type |= SEC_DESC_DACL_PRESENT;
- dst->owner_sid = NULL;
- dst->group_sid = NULL;
- dst->sacl = NULL;
- dst->dacl = NULL;
+ dst->off_owner_sid = 0;
+ dst->off_grp_sid = 0;
+ dst->off_sacl = 0;
+ dst->off_dacl = 0;
- if(owner_sid && ((dst->owner_sid = sid_dup_talloc(dst,owner_sid)) == NULL))
+ if(owner_sid && ((dst->owner_sid = sid_dup_talloc(ctx,owner_sid)) == NULL))
goto error_exit;
- if(grp_sid && ((dst->group_sid = sid_dup_talloc(dst,grp_sid)) == NULL))
+ if(group_sid && ((dst->group_sid = sid_dup_talloc(ctx,group_sid)) == NULL))
goto error_exit;
- if(sacl && ((dst->sacl = dup_sec_acl(dst, sacl)) == NULL))
+ if(sacl && ((dst->sacl = dup_sec_acl(ctx, sacl)) == NULL))
goto error_exit;
- if(dacl && ((dst->dacl = dup_sec_acl(dst, dacl)) == NULL))
+ if(dacl && ((dst->dacl = dup_sec_acl(ctx, dacl)) == NULL))
goto error_exit;
offset = SEC_DESC_HEADER_SIZE;
@@ -235,17 +235,21 @@ SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, uint16 revision, uint16 type,
*/
if (dst->sacl != NULL) {
+ dst->off_sacl = offset;
offset += dst->sacl->size;
}
if (dst->dacl != NULL) {
+ dst->off_dacl = offset;
offset += dst->dacl->size;
}
if (dst->owner_sid != NULL) {
+ dst->off_owner_sid = offset;
offset += sid_size(dst->owner_sid);
}
if (dst->group_sid != NULL) {
+ dst->off_grp_sid = offset;
offset += sid_size(dst->group_sid);
}
@@ -275,71 +279,14 @@ SEC_DESC *dup_sec_desc(TALLOC_CTX *ctx, const SEC_DESC *src)
}
/*******************************************************************
- Convert a secdesc into a byte stream
-********************************************************************/
-NTSTATUS marshall_sec_desc(TALLOC_CTX *mem_ctx,
- struct security_descriptor *secdesc,
- uint8 **data, size_t *len)
-{
- prs_struct ps;
-
- if (!prs_init(&ps, sec_desc_size(secdesc), mem_ctx, MARSHALL)) {
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!sec_io_desc("security_descriptor", &secdesc, &ps, 1)) {
- prs_mem_free(&ps);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!(*data = (uint8 *)talloc_memdup(mem_ctx, ps.data_p,
- prs_offset(&ps)))) {
- prs_mem_free(&ps);
- return NT_STATUS_NO_MEMORY;
- }
-
- *len = prs_offset(&ps);
- prs_mem_free(&ps);
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
- Parse a byte stream into a secdesc
-********************************************************************/
-NTSTATUS unmarshall_sec_desc(TALLOC_CTX *mem_ctx, uint8 *data, size_t len,
- struct security_descriptor **psecdesc)
-{
- prs_struct ps;
- struct security_descriptor *secdesc = NULL;
-
- if (!(secdesc = TALLOC_ZERO_P(mem_ctx, struct security_descriptor))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!prs_init(&ps, 0, secdesc, UNMARSHALL)) {
- return NT_STATUS_NO_MEMORY;
- }
-
- prs_give_memory(&ps, (char *)data, len, False);
-
- if (!sec_io_desc("security_descriptor", &secdesc, &ps, 1)) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- prs_mem_free(&ps);
- *psecdesc = secdesc;
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
Creates a SEC_DESC structure with typical defaults.
********************************************************************/
-SEC_DESC *make_standard_sec_desc(TALLOC_CTX *ctx, const DOM_SID *owner_sid, const DOM_SID *grp_sid,
+SEC_DESC *make_standard_sec_desc(TALLOC_CTX *ctx, const DOM_SID *owner_sid, const DOM_SID *group_sid,
SEC_ACL *dacl, size_t *sd_size)
{
return make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE,
- owner_sid, grp_sid, NULL, dacl, sd_size);
+ owner_sid, group_sid, NULL, dacl, sd_size);
}
/*******************************************************************
@@ -354,12 +301,15 @@ SEC_DESC_BUF *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, SEC_DESC *sec_desc)
return NULL;
/* max buffer size (allocated size) */
- dst->sd_size = (uint32)len;
+ dst->max_len = (uint32)len;
+ dst->len = (uint32)len;
- if(sec_desc && ((dst->sd = dup_sec_desc(ctx, sec_desc)) == NULL)) {
+ if(sec_desc && ((dst->sec = dup_sec_desc(ctx, sec_desc)) == NULL)) {
return NULL;
}
+ dst->ptr = 0x1;
+
return dst;
}
@@ -372,7 +322,7 @@ SEC_DESC_BUF *dup_sec_desc_buf(TALLOC_CTX *ctx, SEC_DESC_BUF *src)
if(src == NULL)
return NULL;
- return make_sec_desc_buf( ctx, src->sd_size, src->sd);
+ return make_sec_desc_buf( ctx, src->len, src->sec);
}
/*******************************************************************
@@ -582,9 +532,7 @@ SEC_DESC_BUF *se_create_child_secdesc(TALLOC_CTX *ctx, SEC_DESC *parent_ctr,
Sets up a SEC_ACCESS structure.
********************************************************************/
-void init_sec_access(uint32 *t, uint32 mask)
+void init_sec_access(SEC_ACCESS *t, uint32 mask)
{
*t = mask;
}
-
-
diff --git a/source/lib/select.c b/source/lib/select.c
index e8900a383cc..f63221f7cfa 100644
--- a/source/lib/select.c
+++ b/source/lib/select.c
@@ -71,9 +71,9 @@ int sys_select(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorfds, s
*/
if(set_blocking(select_pipe[0],0)==-1)
- smb_panic("select_pipe[0]: O_NONBLOCK failed");
+ smb_panic("select_pipe[0]: O_NONBLOCK failed.\n");
if(set_blocking(select_pipe[1],0)==-1)
- smb_panic("select_pipe[1]: O_NONBLOCK failed");
+ smb_panic("select_pipe[1]: O_NONBLOCK failed.\n");
initialised = sys_getpid();
}
diff --git a/source/lib/sharesec.c b/source/lib/sharesec.c
index 2b9cc8c6914..e3216aa4594 100644
--- a/source/lib/sharesec.c
+++ b/source/lib/sharesec.c
@@ -125,7 +125,7 @@ SEC_DESC *get_share_security( TALLOC_CTX *ctx, const char *servicename,
slprintf(key, sizeof(key)-1, "SECDESC/%s", servicename);
- if (tdb_prs_fetch_bystring(share_tdb, key, &ps, ctx)!=0 ||
+ if (tdb_prs_fetch(share_tdb, key, &ps, ctx)!=0 ||
!sec_io_desc("get_share_security", &psd, &ps, 1)) {
DEBUG(4, ("get_share_security: using default secdesc for %s\n",
@@ -167,7 +167,7 @@ BOOL set_share_security(const char *share_name, SEC_DESC *psd)
slprintf(key, sizeof(key)-1, "SECDESC/%s", share_name);
- if (tdb_prs_store_bystring(share_tdb, key, &ps)==0) {
+ if (tdb_prs_store(share_tdb, key, &ps)==0) {
ret = True;
DEBUG(5,("set_share_security: stored secdesc for %s\n", share_name ));
} else {
@@ -179,7 +179,8 @@ BOOL set_share_security(const char *share_name, SEC_DESC *psd)
out:
prs_mem_free(&ps);
- TALLOC_FREE(mem_ctx);
+ if (mem_ctx)
+ talloc_destroy(mem_ctx);
return ret;
}
@@ -194,7 +195,8 @@ BOOL delete_share_security(const struct share_params *params)
slprintf(key, sizeof(key)-1, "SECDESC/%s",
lp_servicename(params->service));
- kbuf = string_term_tdb_data(key);
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
if (tdb_trans_delete(share_tdb, kbuf) != 0) {
DEBUG(0,("delete_share_security: Failed to delete entry for share %s\n",
diff --git a/source/lib/smbldap.c b/source/lib/smbldap.c
index 1cfb5f89a70..c09e0968c52 100644
--- a/source/lib/smbldap.c
+++ b/source/lib/smbldap.c
@@ -409,8 +409,9 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = {
if (mods == NULL) {
mods = SMB_MALLOC_P(LDAPMod *);
if (mods == NULL) {
- smb_panic("smbldap_set_mod: out of memory!");
+ smb_panic("smbldap_set_mod: out of memory!\n");
/* notreached. */
+ abort();
}
mods[0] = NULL;
}
@@ -423,13 +424,15 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = {
if (mods[i] == NULL) {
mods = SMB_REALLOC_ARRAY (mods, LDAPMod *, i + 2);
if (mods == NULL) {
- smb_panic("smbldap_set_mod: out of memory!");
+ smb_panic("smbldap_set_mod: out of memory!\n");
/* notreached. */
+ abort();
}
mods[i] = SMB_MALLOC_P(LDAPMod);
if (mods[i] == NULL) {
- smb_panic("smbldap_set_mod: out of memory!");
+ smb_panic("smbldap_set_mod: out of memory!\n");
/* notreached. */
+ abort();
}
mods[i]->mod_op = modop;
mods[i]->mod_values = NULL;
@@ -447,13 +450,15 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = {
mods[i]->mod_values = SMB_REALLOC_ARRAY(mods[i]->mod_values, char *, j + 2);
if (mods[i]->mod_values == NULL) {
- smb_panic("smbldap_set_mod: out of memory!");
+ smb_panic("smbldap_set_mod: out of memory!\n");
/* notreached. */
+ abort();
}
if (push_utf8_allocate(&utf8_value, value) == (size_t)-1) {
- smb_panic("smbldap_set_mod: String conversion failure!");
+ smb_panic("smbldap_set_mod: String conversion failure!\n");
/* notreached. */
+ abort();
}
mods[i]->mod_values[j] = utf8_value;
@@ -995,11 +1000,6 @@ static int smbldap_connect_system(struct smbldap_state *ldap_state, LDAP * ldap_
return rc;
}
-static void smbldap_idle_fn(struct event_context *event_ctx,
- struct timed_event *te,
- const struct timeval *now,
- void *private_data);
-
/**********************************************************************
Connect to LDAP server (called before every ldap operation)
*********************************************************************/
@@ -1062,16 +1062,6 @@ static int smbldap_open(struct smbldap_state *ldap_state)
ldap_state->last_ping = time(NULL);
ldap_state->pid = sys_getpid();
-
- TALLOC_FREE(ldap_state->idle_event);
-
- if (ldap_state->event_context != NULL) {
- ldap_state->idle_event = event_add_timed(
- ldap_state->event_context, NULL,
- timeval_current_ofs(SMBLDAP_IDLE_TIME, 0),
- "smbldap_idle_fn", smbldap_idle_fn, ldap_state);
- }
-
DEBUG(4,("The LDAP server is succesfully connected\n"));
return LDAP_SUCCESS;
@@ -1556,28 +1546,17 @@ int smbldap_search_suffix (struct smbldap_state *ldap_state,
filter, search_attr, 0, result);
}
-static void smbldap_idle_fn(struct event_context *event_ctx,
- struct timed_event *te,
- const struct timeval *now,
- void *private_data)
+static void smbldap_idle_fn(void **data, time_t *interval, time_t now)
{
- struct smbldap_state *state = (struct smbldap_state *)private_data;
-
- TALLOC_FREE(state->idle_event);
+ struct smbldap_state *state = (struct smbldap_state *)(*data);
if (state->ldap_struct == NULL) {
DEBUG(10,("ldap connection not connected...\n"));
return;
}
- if ((state->last_use+SMBLDAP_IDLE_TIME) > now->tv_sec) {
+ if ((state->last_use+SMBLDAP_IDLE_TIME) > now) {
DEBUG(10,("ldap connection not idle...\n"));
-
- state->idle_event = event_add_timed(
- event_ctx, NULL,
- timeval_add(now, SMBLDAP_IDLE_TIME, 0),
- "smbldap_idle_fn", smbldap_idle_fn,
- private_data);
return;
}
@@ -1600,7 +1579,7 @@ void smbldap_free_struct(struct smbldap_state **ldap_state)
SAFE_FREE((*ldap_state)->bind_dn);
SAFE_FREE((*ldap_state)->bind_secret);
- TALLOC_FREE((*ldap_state)->idle_event);
+ smb_unregister_idle_event((*ldap_state)->event_id);
*ldap_state = NULL;
@@ -1612,9 +1591,7 @@ void smbldap_free_struct(struct smbldap_state **ldap_state)
Intitalise the 'general' ldap structures, on which ldap operations may be conducted
*********************************************************************/
-NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx, struct event_context *event_ctx,
- const char *location,
- struct smbldap_state **smbldap_state)
+NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx, const char *location, struct smbldap_state **smbldap_state)
{
*smbldap_state = TALLOC_ZERO_P(mem_ctx, struct smbldap_state);
if (!*smbldap_state) {
@@ -1628,7 +1605,14 @@ NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx, struct event_context *event_ctx,
(*smbldap_state)->uri = "ldap://localhost";
}
- (*smbldap_state)->event_context = event_ctx;
+ (*smbldap_state)->event_id =
+ smb_register_idle_event(smbldap_idle_fn, (void *)(*smbldap_state),
+ SMBLDAP_IDLE_TIME);
+
+ if ((*smbldap_state)->event_id == SMB_EVENT_ID_INVALID) {
+ DEBUG(0,("Failed to register LDAP idle event!\n"));
+ return NT_STATUS_INVALID_HANDLE;
+ }
return NT_STATUS_OK;
}
diff --git a/source/lib/substitute.c b/source/lib/substitute.c
index 708c184475b..4c81bd8444e 100644
--- a/source/lib/substitute.c
+++ b/source/lib/substitute.c
@@ -453,7 +453,7 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
const char *str)
{
char *b, *p, *s, *r, *a_string;
- fstring pidstr, vnnstr;
+ fstring pidstr;
struct passwd *pass;
const char *local_machine_name = get_local_machine_name();
@@ -552,10 +552,6 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
case '(':
a_string = realloc_expand_longvar( a_string, p );
break;
- case 'V' :
- slprintf(vnnstr,sizeof(vnnstr)-1, "%u", get_my_vnn());
- a_string = realloc_string_sub(a_string, "%V", vnnstr);
- break;
default:
break;
}
@@ -773,3 +769,21 @@ void standard_sub_advanced(const char *servicename, const char *user,
SAFE_FREE( s );
}
}
+
+/****************************************************************************
+ * Do some standard substitutions in a string.
+ * ****************************************************************************/
+
+void standard_sub_conn(connection_struct *conn, char *str, size_t len)
+{
+ char *s;
+
+ s = alloc_sub_advanced(lp_servicename(SNUM(conn)), conn->user, conn->connectpath,
+ conn->gid, smb_user_name, "", str);
+
+ if ( s ) {
+ strncpy( str, s, len );
+ SAFE_FREE( s );
+ }
+}
+
diff --git a/source/lib/system.c b/source/lib/system.c
index 79d37d70245..ac1add8fc19 100644
--- a/source/lib/system.c
+++ b/source/lib/system.c
@@ -4,6 +4,7 @@
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Jeremy Allison 1998-2005
Copyright (C) Timur Bakeyev 2005
+ Copyright (C) Bjoern Jacke 2006-2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -642,25 +643,6 @@ int sys_chown(const char *fname,uid_t uid,gid_t gid)
}
/*******************************************************************
- Wrapper for lchown.
-********************************************************************/
-
-int sys_lchown(const char *fname,uid_t uid,gid_t gid)
-{
-#ifndef HAVE_LCHOWN
- static int done;
- if (!done) {
- DEBUG(1,("WARNING: no lchown!\n"));
- done=1;
- }
- errno = ENOSYS;
- return -1;
-#else
- return(lchown(fname,uid,gid));
-#endif
-}
-
-/*******************************************************************
os/2 also doesn't have chroot
********************************************************************/
int sys_chroot(const char *dname)
@@ -889,13 +871,15 @@ int groups_max(void)
}
/**************************************************************************
- Wrap setgroups and getgroups for systems that declare getgroups() as
- returning an array of gid_t, but actuall return an array of int.
+ Wrapper for getgroups. Deals with broken (int) case.
****************************************************************************/
-#if defined(HAVE_BROKEN_GETGROUPS)
-static int sys_broken_getgroups(int setlen, gid_t *gidset)
+int sys_getgroups(int setlen, gid_t *gidset)
{
+#if !defined(HAVE_BROKEN_GETGROUPS)
+ return getgroups(setlen, gidset);
+#else
+
GID_T gid;
GID_T *group_list;
int i, ngroups;
@@ -917,7 +901,7 @@ static int sys_broken_getgroups(int setlen, gid_t *gidset)
if (setlen == 0)
setlen = groups_max();
- if((group_list = SMB_MALLOC_ARRAY(GID_T, setlen)) == NULL) {
+ if((group_list = (GID_T *)malloc(setlen * sizeof(GID_T))) == NULL) {
DEBUG(0,("sys_getgroups: Malloc fail.\n"));
return -1;
}
@@ -934,10 +918,26 @@ static int sys_broken_getgroups(int setlen, gid_t *gidset)
SAFE_FREE(group_list);
return ngroups;
+#endif /* HAVE_BROKEN_GETGROUPS */
}
-static int sys_broken_setgroups(int setlen, gid_t *gidset)
+
+/**************************************************************************
+ Wrapper for setgroups. Deals with broken (int) case. Automatically used
+ if we have broken getgroups.
+****************************************************************************/
+
+int sys_setgroups(int setlen, gid_t *gidset)
{
+#if !defined(HAVE_SETGROUPS)
+ errno = ENOSYS;
+ return -1;
+#endif /* HAVE_SETGROUPS */
+
+#if !defined(HAVE_BROKEN_GETGROUPS)
+ return setgroups(setlen, gidset);
+#else
+
GID_T *group_list;
int i ;
@@ -954,7 +954,7 @@ static int sys_broken_setgroups(int setlen, gid_t *gidset)
* GID_T array of size setlen.
*/
- if((group_list = SMB_MALLOC_ARRAY(GID_T, setlen)) == NULL) {
+ if((group_list = (GID_T *)malloc(setlen * sizeof(GID_T))) == NULL) {
DEBUG(0,("sys_setgroups: Malloc fail.\n"));
return -1;
}
@@ -971,105 +971,7 @@ static int sys_broken_setgroups(int setlen, gid_t *gidset)
SAFE_FREE(group_list);
return 0 ;
-}
-
#endif /* HAVE_BROKEN_GETGROUPS */
-
-/* This is a list of systems that require the first GID passed to setgroups(2)
- * to be the effective GID. If your system is one of these, add it here.
- */
-#if defined (FREEBSD) || defined (DARWINOS)
-#define USE_BSD_SETGROUPS
-#endif
-
-#if defined(USE_BSD_SETGROUPS)
-/* Depending on the particular BSD implementation, the first GID that is
- * passed to setgroups(2) will either be ignored or will set the credential's
- * effective GID. In either case, the right thing to do is to guarantee that
- * gidset[0] is the effective GID.
- */
-static int sys_bsd_setgroups(gid_t primary_gid, int setlen, const gid_t *gidset)
-{
- gid_t *new_gidset = NULL;
- int max;
- int ret;
-
- /* setgroups(2) will fail with EINVAL if we pass too many groups. */
- max = groups_max();
-
- /* No group list, just make sure we are setting the efective GID. */
- if (setlen == 0) {
- return setgroups(1, &primary_gid);
- }
-
- /* If the primary gid is not the first array element, grow the array
- * and insert it at the front.
- */
- if (gidset[0] != primary_gid) {
- new_gidset = SMB_MALLOC_ARRAY(gid_t, setlen + 1);
- if (new_gidset == NULL) {
- return -1;
- }
-
- memcpy(new_gidset + 1, gidset, (setlen * sizeof(gid_t)));
- new_gidset[0] = primary_gid;
- setlen++;
- }
-
- if (setlen > max) {
- DEBUG(3, ("forced to truncate group list from %d to %d\n",
- setlen, max));
- setlen = max;
- }
-
-#if defined(HAVE_BROKEN_GETGROUPS)
- ret = sys_broken_setgroups(setlen, new_gidset ? new_gidset : gidset);
-#else
- ret = setgroups(setlen, new_gidset ? new_gidset : gidset);
-#endif
-
- if (new_gidset) {
- int errsav = errno;
- SAFE_FREE(new_gidset);
- errno = errsav;
- }
-
- return ret;
-}
-
-#endif /* USE_BSD_SETGROUPS */
-
-/**************************************************************************
- Wrapper for getgroups. Deals with broken (int) case.
-****************************************************************************/
-
-int sys_getgroups(int setlen, gid_t *gidset)
-{
-#if defined(HAVE_BROKEN_GETGROUPS)
- return sys_broken_getgroups(setlen, gidset);
-#else
- return getgroups(setlen, gidset);
-#endif
-}
-
-/**************************************************************************
- Wrapper for setgroups. Deals with broken (int) case and BSD case.
-****************************************************************************/
-
-int sys_setgroups(gid_t UNUSED(primary_gid), int setlen, gid_t *gidset)
-{
-#if !defined(HAVE_SETGROUPS)
- errno = ENOSYS;
- return -1;
-#endif /* HAVE_SETGROUPS */
-
-#if defined(USE_BSD_SETGROUPS)
- return sys_bsd_setgroups(primary_gid, setlen, gidset);
-#elif defined(HAVE_BROKEN_GETGROUPS)
- return sys_broken_setgroups(setlen, gidset);
-#else
- return setgroups(setlen, gidset);
-#endif
}
/**************************************************************************
@@ -1366,25 +1268,21 @@ SMB_STRUCT_WPASSWD *wsys_getpwuid(uid_t uid)
#endif /* NOT CURRENTLY USED - JRA */
/**************************************************************************
- Extract a command into an arg list.
+ Extract a command into an arg list. Uses a static pstring for storage.
+ Caller frees returned arg list (which contains pointers into the static pstring).
****************************************************************************/
-static char **extract_args(TALLOC_CTX *mem_ctx, const char *command)
+static char **extract_args(const char *command)
{
- char *trunc_cmd;
- char *saveptr;
+ static pstring trunc_cmd;
char *ptr;
int argcl;
char **argl = NULL;
int i;
- if (!(trunc_cmd = talloc_strdup(mem_ctx, command))) {
- DEBUG(0, ("talloc failed\n"));
- goto nomem;
- }
+ pstrcpy(trunc_cmd, command);
- if(!(ptr = strtok_r(trunc_cmd, " \t", &saveptr))) {
- TALLOC_FREE(trunc_cmd);
+ if(!(ptr = strtok(trunc_cmd, " \t"))) {
errno = EINVAL;
return NULL;
}
@@ -1393,46 +1291,27 @@ static char **extract_args(TALLOC_CTX *mem_ctx, const char *command)
* Count the args.
*/
- for( argcl = 1; ptr; ptr = strtok_r(NULL, " \t", &saveptr))
+ for( argcl = 1; ptr; ptr = strtok(NULL, " \t"))
argcl++;
- TALLOC_FREE(trunc_cmd);
-
- if (!(argl = TALLOC_ARRAY(mem_ctx, char *, argcl + 1))) {
- goto nomem;
- }
+ if((argl = (char **)SMB_MALLOC((argcl + 1) * sizeof(char *))) == NULL)
+ return NULL;
/*
* Now do the extraction.
*/
- if (!(trunc_cmd = talloc_strdup(mem_ctx, command))) {
- goto nomem;
- }
+ pstrcpy(trunc_cmd, command);
- ptr = strtok_r(trunc_cmd, " \t", &saveptr);
+ ptr = strtok(trunc_cmd, " \t");
i = 0;
+ argl[i++] = ptr;
- if (!(argl[i++] = talloc_strdup(argl, ptr))) {
- goto nomem;
- }
-
- while((ptr = strtok_r(NULL, " \t", &saveptr)) != NULL) {
-
- if (!(argl[i++] = talloc_strdup(argl, ptr))) {
- goto nomem;
- }
- }
+ while((ptr = strtok(NULL, " \t")) != NULL)
+ argl[i++] = ptr;
argl[i++] = NULL;
return argl;
-
- nomem:
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(trunc_cmd);
- TALLOC_FREE(argl);
- errno = ENOMEM;
- return NULL;
}
/**************************************************************************
@@ -1506,7 +1385,7 @@ int sys_popen(const char *command)
* Extract the command and args into a NULL terminated array.
*/
- if(!(argl = extract_args(NULL, command)))
+ if(!(argl = extract_args(command)))
goto err_exit;
entry->child_pid = sys_fork();
@@ -1548,7 +1427,7 @@ int sys_popen(const char *command)
*/
close (child_end);
- TALLOC_FREE(argl);
+ SAFE_FREE(argl);
/* Link into popen_chain. */
entry->next = popen_chain;
@@ -1683,6 +1562,17 @@ int sys_dup2(int oldfd, int newfd)
SAFE_FREE(msgbuf);
}
+/******** Solaris EA helper function prototypes ********/
+#ifdef HAVE_ATTROPEN
+#define SOLARIS_ATTRMODE S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP
+static int solaris_write_xattr(int attrfd, const char *value, size_t size);
+static ssize_t solaris_read_xattr(int attrfd, void *value, size_t size);
+static ssize_t solaris_list_xattr(int attrdirfd, char *list, size_t size);
+static int solaris_unlinkat(int attrdirfd, const char *name);
+static int solaris_attropen(const char *path, const char *attrpath, int oflag, mode_t mode);
+static int solaris_openat(int fildes, const char *path, int oflag, mode_t mode);
+#endif
+
/**************************************************************************
Wrappers for extented attribute calls. Based on the Linux package with
support for IRIX and (Net|Free)BSD also. Expand as other systems have them.
@@ -1731,6 +1621,14 @@ ssize_t sys_getxattr (const char *path, const char *name, void *value, size_t si
retval = attr_get(path, attrname, (char *)value, &valuelength, flags);
return retval ? retval : valuelength;
+#elif defined(HAVE_ATTROPEN)
+ ssize_t ret = -1;
+ int attrfd = solaris_attropen(path, name, O_RDONLY, 0);
+ if (attrfd >= 0) {
+ ret = solaris_read_xattr(attrfd, value, size);
+ close(attrfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -1774,6 +1672,14 @@ ssize_t sys_lgetxattr (const char *path, const char *name, void *value, size_t s
retval = attr_get(path, attrname, (char *)value, &valuelength, flags);
return retval ? retval : valuelength;
+#elif defined(HAVE_ATTROPEN)
+ ssize_t ret = -1;
+ int attrfd = solaris_attropen(path, name, O_RDONLY|AT_SYMLINK_NOFOLLOW, 0);
+ if (attrfd >= 0) {
+ ret = solaris_read_xattr(attrfd, value, size);
+ close(attrfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -1819,6 +1725,14 @@ ssize_t sys_fgetxattr (int filedes, const char *name, void *value, size_t size)
retval = attr_getf(filedes, attrname, (char *)value, &valuelength, flags);
return retval ? retval : valuelength;
+#elif defined(HAVE_ATTROPEN)
+ ssize_t ret = -1;
+ int attrfd = solaris_openat(filedes, name, O_RDONLY|O_XATTR, 0);
+ if (attrfd >= 0) {
+ ret = solaris_read_xattr(attrfd, value, size);
+ close(attrfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2003,6 +1917,14 @@ ssize_t sys_listxattr (const char *path, char *list, size_t size)
return bsd_attr_list(0, arg, list, size);
#elif defined(HAVE_ATTR_LIST) && defined(HAVE_SYS_ATTRIBUTES_H)
return irix_attr_list(path, 0, list, size, 0);
+#elif defined(HAVE_ATTROPEN)
+ ssize_t ret = -1;
+ int attrdirfd = solaris_attropen(path, ".", O_RDONLY, 0);
+ if (attrdirfd >= 0) {
+ ret = solaris_list_xattr(attrdirfd, list, size);
+ close(attrdirfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2024,6 +1946,14 @@ ssize_t sys_llistxattr (const char *path, char *list, size_t size)
return bsd_attr_list(1, arg, list, size);
#elif defined(HAVE_ATTR_LIST) && defined(HAVE_SYS_ATTRIBUTES_H)
return irix_attr_list(path, 0, list, size, ATTR_DONTFOLLOW);
+#elif defined(HAVE_ATTROPEN)
+ ssize_t ret = -1;
+ int attrdirfd = solaris_attropen(path, ".", O_RDONLY|AT_SYMLINK_NOFOLLOW, 0);
+ if (attrdirfd >= 0) {
+ ret = solaris_list_xattr(attrdirfd, list, size);
+ close(attrdirfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2047,6 +1977,14 @@ ssize_t sys_flistxattr (int filedes, char *list, size_t size)
return bsd_attr_list(2, arg, list, size);
#elif defined(HAVE_ATTR_LISTF)
return irix_attr_list(NULL, filedes, list, size, 0);
+#elif defined(HAVE_ATTROPEN)
+ ssize_t ret = -1;
+ int attrdirfd = solaris_openat(filedes, ".", O_RDONLY|O_XATTR, 0);
+ if (attrdirfd >= 0) {
+ ret = solaris_list_xattr(attrdirfd, list, size);
+ close(attrdirfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2078,6 +2016,14 @@ int sys_removexattr (const char *path, const char *name)
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
return attr_remove(path, attrname, flags);
+#elif defined(HAVE_ATTROPEN)
+ int ret = -1;
+ int attrdirfd = solaris_attropen(path, ".", O_RDONLY, 0);
+ if (attrdirfd >= 0) {
+ ret = solaris_unlinkat(attrdirfd, name);
+ close(attrdirfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2107,6 +2053,14 @@ int sys_lremovexattr (const char *path, const char *name)
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
return attr_remove(path, attrname, flags);
+#elif defined(HAVE_ATTROPEN)
+ int ret = -1;
+ int attrdirfd = solaris_attropen(path, ".", O_RDONLY|AT_SYMLINK_NOFOLLOW, 0);
+ if (attrdirfd >= 0) {
+ ret = solaris_unlinkat(attrdirfd, name);
+ close(attrdirfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2138,6 +2092,14 @@ int sys_fremovexattr (int filedes, const char *name)
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
return attr_removef(filedes, attrname, flags);
+#elif defined(HAVE_ATTROPEN)
+ int ret = -1;
+ int attrdirfd = solaris_openat(filedes, ".", O_RDONLY|O_XATTR, 0);
+ if (attrdirfd >= 0) {
+ ret = solaris_unlinkat(attrdirfd, name);
+ close(attrdirfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2196,6 +2158,17 @@ int sys_setxattr (const char *path, const char *name, const void *value, size_t
if (flags & XATTR_REPLACE) myflags |= ATTR_REPLACE;
return attr_set(path, attrname, (const char *)value, size, myflags);
+#elif defined(HAVE_ATTROPEN)
+ int ret = -1;
+ int myflags = O_RDWR;
+ if (flags & XATTR_CREATE) myflags |= O_EXCL;
+ if (!(flags & XATTR_REPLACE)) myflags |= O_CREAT;
+ int attrfd = solaris_attropen(path, name, myflags, (mode_t) SOLARIS_ATTRMODE);
+ if (attrfd >= 0) {
+ ret = solaris_write_xattr(attrfd, value, size);
+ close(attrfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2248,6 +2221,17 @@ int sys_lsetxattr (const char *path, const char *name, const void *value, size_t
if (flags & XATTR_REPLACE) myflags |= ATTR_REPLACE;
return attr_set(path, attrname, (const char *)value, size, myflags);
+#elif defined(HAVE_ATTROPEN)
+ int ret = -1;
+ int myflags = O_RDWR | AT_SYMLINK_NOFOLLOW;
+ if (flags & XATTR_CREATE) myflags |= O_EXCL;
+ if (!(flags & XATTR_REPLACE)) myflags |= O_CREAT;
+ int attrfd = solaris_attropen(path, name, myflags, (mode_t) SOLARIS_ATTRMODE);
+ if (attrfd >= 0) {
+ ret = solaris_write_xattr(attrfd, value, size);
+ close(attrfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
@@ -2301,12 +2285,147 @@ int sys_fsetxattr (int filedes, const char *name, const void *value, size_t size
if (flags & XATTR_REPLACE) myflags |= ATTR_REPLACE;
return attr_setf(filedes, attrname, (const char *)value, size, myflags);
+#elif defined(HAVE_ATTROPEN)
+ int ret = -1;
+ int myflags = O_RDWR | O_XATTR;
+ if (flags & XATTR_CREATE) myflags |= O_EXCL;
+ if (!(flags & XATTR_REPLACE)) myflags |= O_CREAT;
+ int attrfd = solaris_openat(filedes, name, myflags, (mode_t) SOLARIS_ATTRMODE);
+ if (attrfd >= 0) {
+ ret = solaris_write_xattr(attrfd, value, size);
+ close(attrfd);
+ }
+ return ret;
#else
errno = ENOSYS;
return -1;
#endif
}
+/**************************************************************************
+ helper functions for Solaris' EA support
+****************************************************************************/
+#ifdef HAVE_ATTROPEN
+static ssize_t solaris_read_xattr(int attrfd, void *value, size_t size)
+{
+ struct stat sbuf;
+
+ if (fstat(attrfd, &sbuf) == -1) {
+ errno = ENOATTR;
+ return -1;
+ }
+
+ /* This is to return the current size of the named extended attribute */
+ if (size == 0) {
+ return sbuf.st_size;
+ }
+
+ /* check size and read xattr */
+ if (sbuf.st_size > size) {
+ errno = ERANGE;
+ return -1;
+ }
+
+ return read(attrfd, value, sbuf.st_size);
+}
+
+static ssize_t solaris_list_xattr(int attrdirfd, char *list, size_t size)
+{
+ ssize_t len = 0;
+ int stop = 0;
+ DIR *dirp;
+ struct dirent *de;
+ int newfd = dup(attrdirfd);
+ /* CAUTION: The originating file descriptor should not be
+ used again following the call to fdopendir().
+ For that reason we dup() the file descriptor
+ here to make things more clear. */
+ dirp = fdopendir(newfd);
+
+ while ((de = readdir(dirp))) {
+ size_t listlen = strlen(de->d_name);
+ if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, "..")) {
+ /* we don't want "." and ".." here: */
+ DEBUG(10,("skipped EA %s\n",de->d_name));
+ continue;
+ }
+
+ if (size == 0) {
+ /* return the current size of the list of extended attribute names*/
+ len += listlen + 1;
+ } else {
+ /* check size and copy entrieѕ + nul into list. */
+ if ((len + listlen + 1) > size) {
+ errno = ERANGE;
+ len = -1;
+ break;
+ } else {
+ safe_strcpy(list + len, de->d_name, listlen);
+ pstrcpy(list + len, de->d_name);
+ len += listlen;
+ list[len] = '\0';
+ ++len;
+ }
+ }
+ }
+
+ if (closedir(dirp) == -1) {
+ DEBUG(0,("closedir dirp failed: %s\n",strerror(errno)));
+ return -1;
+ }
+ return len;
+}
+
+static int solaris_unlinkat(int attrdirfd, const char *name)
+{
+ if (unlinkat(attrdirfd, name, 0) == -1) {
+ if (errno == ENOENT) {
+ errno = ENOATTR;
+ }
+ return -1;
+ }
+ return 0;
+}
+
+static int solaris_attropen(const char *path, const char *attrpath, int oflag, mode_t mode)
+{
+ int filedes = attropen(path, attrpath, oflag, mode);
+ if (filedes == -1) {
+ DEBUG(10,("attropen FAILED: path: %s, name: %s, errno: %s\n",path,attrpath,strerror(errno)));
+ if (errno == EINVAL) {
+ errno = ENOTSUP;
+ } else {
+ errno = ENOATTR;
+ }
+ }
+ return filedes;
+}
+
+static int solaris_openat(int fildes, const char *path, int oflag, mode_t mode)
+{
+ int filedes = openat(fildes, path, oflag, mode);
+ if (filedes == -1) {
+ DEBUG(10,("openat FAILED: fd: %s, path: %s, errno: %s\n",filedes,path,strerror(errno)));
+ if (errno == EINVAL) {
+ errno = ENOTSUP;
+ } else {
+ errno = ENOATTR;
+ }
+ }
+ return filedes;
+}
+
+static int solaris_write_xattr(int attrfd, const char *value, size_t size)
+{
+ if ((ftruncate(attrfd, 0) == 0) && (write(attrfd, value, size) == size)) {
+ return 0;
+ } else {
+ DEBUG(10,("solaris_write_xattr FAILED!\n"));
+ return -1;
+ }
+}
+#endif /*HAVE_ATTROPEN*/
+
/****************************************************************************
Return the major devicenumber for UNIX extensions.
****************************************************************************/
diff --git a/source/lib/system_smbd.c b/source/lib/system_smbd.c
index ffdd8eeed00..509b2bbcb1e 100644
--- a/source/lib/system_smbd.c
+++ b/source/lib/system_smbd.c
@@ -104,10 +104,12 @@ static int getgrouplist_internals(const char *user, gid_t gid, gid_t *groups,
restore_re_gid();
- if (sys_setgroups(gid, ngrp_saved, gids_saved) != 0) {
+ if (sys_setgroups(ngrp_saved, gids_saved) != 0) {
/* yikes! */
DEBUG(0,("ERROR: getgrouplist: failed to reset group list!\n"));
- smb_panic("getgrouplist: failed to reset group list!");
+ smb_panic("getgrouplist: failed to reset group list!\n");
+ free(gids_saved);
+ return -1;
}
free(gids_saved);
@@ -154,7 +156,7 @@ BOOL getgroups_unix_user(TALLOC_CTX *mem_ctx, const char *user,
gid_t *groups;
int i;
- max_grp = MIN(32, groups_max());
+ max_grp = groups_max();
temp_groups = SMB_MALLOC_ARRAY(gid_t, max_grp);
if (! temp_groups) {
return False;
diff --git a/source/lib/talloc/Makefile.in b/source/lib/talloc/Makefile.in
index 18b48c34598..14e81156921 100644
--- a/source/lib/talloc/Makefile.in
+++ b/source/lib/talloc/Makefile.in
@@ -12,12 +12,12 @@ builddir = @builddir@
XSLTPROC = @XSLTPROC@
INSTALLCMD = @INSTALL@
CC = @CC@
-CFLAGS = @CFLAGS@ -DHAVE_CONFIG_H= -I. -I@srcdir@
+CFLAGS = @CFLAGS@ -DHAVE_CONFIG_H= -I. -I@srcdir@ -I@libreplacedir@
EXTRA_TARGETS = @DOC_TARGET@
.SUFFIXES: .c .o .3 .3.xml .xml .html
-LIBOBJ = @TALLOC_OBJ@ @LIBREPLACEOBJ@
+LIBOBJ = @TALLOCOBJ@ @LIBREPLACEOBJ@
all: showflags libtalloc.a testsuite $(EXTRA_TARGETS)
@@ -34,14 +34,13 @@ libtalloc.a: $(LIBOBJ)
@-ranlib $@
install: all
- ${INSTALLCMD} -d $(DESTDIR)$(libdir)
- ${INSTALLCMD} -d $(DESTDIR)$(libdir)/pkgconfig
- ${INSTALLCMD} -m 755 libtalloc.a $(DESTDIR)$(libdir)
- ${INSTALLCMD} -d $(DESTDIR)${includedir}
- ${INSTALLCMD} -m 644 $(srcdir)/talloc.h $(DESTDIR)$(includedir)
- ${INSTALLCMD} -m 644 talloc.pc $(DESTDIR)$(libdir)/pkgconfig
- if [ -f talloc.3 ];then ${INSTALLCMD} -d $(DESTDIR)$(mandir)/man3; fi
- if [ -f talloc.3 ];then ${INSTALLCMD} -m 644 talloc.3 $(DESTDIR)$(mandir)/man3; fi
+ ${INSTALLCMD} -d ${libdir}
+ ${INSTALLCMD} -m 755 libtalloc.a $(libdir)
+ ${INSTALLCMD} -d ${includedir}
+ ${INSTALLCMD} -m 644 $(srcdir)/talloc.h $(includedir)
+ ${INSTALLCMD} -m 644 talloc.pc $(libdir)/pkgconfig
+ if [ -f talloc.3 ];then ${INSTALLCMD} -d ${mandir}/man3; fi
+ if [ -f talloc.3 ];then ${INSTALLCMD} -m 644 talloc.3 $(mandir)/man3; fi
doc: talloc.3 talloc.3.html
diff --git a/source/lib/talloc/config.mk b/source/lib/talloc/config.mk
index 714ad72d1cd..0b06687dabd 100644
--- a/source/lib/talloc/config.mk
+++ b/source/lib/talloc/config.mk
@@ -11,3 +11,8 @@ DESCRIPTION = A hierarchical pool based memory system with destructors
#
# End LIBRARY LIBTALLOC
################################################
+
+[BINARY::TALLOC]
+OBJ_FILES = testsuite.o
+PRIVATE_DEPENDENCIES = LIBTALLOC
+INSTALLDIR = TORTUREDIR/LOCAL
diff --git a/source/lib/talloc/configure.ac b/source/lib/talloc/configure.ac
index 5f465fe93ab..51e7256bf88 100644
--- a/source/lib/talloc/configure.ac
+++ b/source/lib/talloc/configure.ac
@@ -1,5 +1,5 @@
AC_PREREQ(2.50)
-AC_INIT(talloc, 1.0)
+AC_INIT(talloc.h)
AC_CONFIG_SRCDIR([talloc.c])
AC_SUBST(datarootdir)
AC_CONFIG_HEADER(config.h)
diff --git a/source/lib/talloc/libtalloc.m4 b/source/lib/talloc/libtalloc.m4
index d2e8eba81a4..4a0ee3c8fc5 100644
--- a/source/lib/talloc/libtalloc.m4
+++ b/source/lib/talloc/libtalloc.m4
@@ -12,14 +12,8 @@ done
if test x"$tallocdir" = "x"; then
AC_MSG_ERROR([cannot find talloc source in $tallocpaths])
fi
-TALLOC_OBJ="talloc.o"
-AC_SUBST(TALLOC_OBJ)
-
-TALLOC_CFLAGS="-I$tallocdir"
-AC_SUBST(TALLOC_CFLAGS)
-
-TALLOC_LIBS=""
-AC_SUBST(TALLOC_LIBS)
+TALLOCOBJ="talloc.o"
+AC_SUBST(TALLOCOBJ)
AC_CHECK_SIZEOF(size_t,cross)
AC_CHECK_SIZEOF(void *,cross)
diff --git a/source/lib/talloc/talloc.3.xml b/source/lib/talloc/talloc.3.xml
index 83ca67a4951..2400fef2dc5 100644
--- a/source/lib/talloc/talloc.3.xml
+++ b/source/lib/talloc/talloc.3.xml
@@ -583,27 +583,11 @@ if (ptr) memcpy(ptr, p, strlen(p)+1);</programlisting>
</para>
<programlisting>talloc_set_name_const(ptr, ptr)</programlisting>
</refsect2>
- <refsect2><title>char *talloc_append_string(const void *<emphasis role="italic">t</emphasis>, char *<emphasis role="italic">orig</emphasis>, const char *<emphasis role="italic">append</emphasis>);</title>
- <para>
- The talloc_append_string() function appends the given formatted
- string to the given string.
- </para>
- <para>
- This function sets the name of the new pointer to the new
- string. This is equivalent to:
- </para>
- <programlisting>talloc_set_name_const(ptr, ptr)</programlisting>
- </refsect2>
<refsect2><title>char *talloc_vasprintf(const void *<emphasis role="italic">t</emphasis>, const char *<emphasis role="italic">fmt</emphasis>, va_list <emphasis role="italic">ap</emphasis>);</title>
<para>
The talloc_vasprintf() function is the talloc equivalent of the C
library function vasprintf(3).
</para>
- <para>
- This function sets the name of the new pointer to the new
- string. This is equivalent to:
- </para>
- <programlisting>talloc_set_name_const(ptr, ptr)</programlisting>
</refsect2>
<refsect2><title>char *talloc_asprintf(const void *<emphasis role="italic">t</emphasis>, const char *<emphasis role="italic">fmt</emphasis>, ...);</title>
<para>
@@ -621,11 +605,6 @@ if (ptr) memcpy(ptr, p, strlen(p)+1);</programlisting>
The talloc_asprintf_append() function appends the given formatted
string to the given string.
</para>
- <para>
- This function sets the name of the new pointer to the new
- string. This is equivalent to:
- </para>
- <programlisting>talloc_set_name_const(ptr, ptr)</programlisting>
</refsect2>
<refsect2><title>(type *)talloc_array(const void *ctx, type, uint_t count);</title>
<para>
diff --git a/source/lib/talloc/talloc.c b/source/lib/talloc/talloc.c
index abc1e9438e6..b2b00d8c65a 100644
--- a/source/lib/talloc/talloc.c
+++ b/source/lib/talloc/talloc.c
@@ -1137,8 +1137,6 @@ char *talloc_append_string(const void *t, char *orig, const char *append)
/* append the string with the trailing \0 */
memcpy(&ret[olen], append, alenz);
- _talloc_set_name_const(ret, ret);
-
return ret;
}
diff --git a/source/lib/talloc/talloc.h b/source/lib/talloc/talloc.h
index d9e7d943387..9ef8724dc32 100644
--- a/source/lib/talloc/talloc.h
+++ b/source/lib/talloc/talloc.h
@@ -26,10 +26,6 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-
/* this is only needed for compatibility with the old talloc */
typedef void TALLOC_CTX;
diff --git a/source/lib/talloc/talloc.pc.in b/source/lib/talloc/talloc.pc.in
index 459cce70b1d..7f9ef754cbd 100644
--- a/source/lib/talloc/talloc.pc.in
+++ b/source/lib/talloc/talloc.pc.in
@@ -5,7 +5,6 @@ includedir=@includedir@
Name: talloc
Description: A hierarchical pool based memory system with destructors
-Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -ltalloc
-Cflags: -I${includedir}
-URL: http://talloc.samba.org/
+Version: 4.0
+Libs: @LIBS@ -L${libdir} -ltalloc
+Cflags: -I${includedir} @CFLAGS@
diff --git a/source/lib/talloc/talloc_guide.txt b/source/lib/talloc/talloc_guide.txt
index c4634ae19a9..8b252e4ab9b 100644
--- a/source/lib/talloc/talloc_guide.txt
+++ b/source/lib/talloc/talloc_guide.txt
@@ -12,7 +12,7 @@ this carefully, as talloc has changed a lot. With 3.0.20 (or 3.0.14?) the
Samba4 talloc has been ported back to Samba3, so this guide applies to both.
The new talloc is a hierarchical, reference counted memory pool system
-with destructors. Quite a mouthful really, but not too bad once you
+with destructors. Quite a mounthful really, but not too bad once you
get used to it.
Perhaps the biggest change from Samba3 is that there is no distinction
@@ -533,15 +533,6 @@ This functions sets the name of the new pointer to the passed
string. This is equivalent to:
talloc_set_name_const(ptr, ptr)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-char *talloc_append_string(const void *t, char *orig, const char *append);
-
-The talloc_append_string() function appends the given formatted
-string to the given string.
-
-This function sets the name of the new pointer to the new
-string. This is equivalent to:
- talloc_set_name_const(ptr, ptr)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
char *talloc_vasprintf(const void *t, const char *fmt, va_list ap);
@@ -549,10 +540,6 @@ char *talloc_vasprintf(const void *t, const char *fmt, va_list ap);
The talloc_vasprintf() function is the talloc equivalent of the C
library function vasprintf()
-This functions sets the name of the new pointer to the new
-string. This is equivalent to:
- talloc_set_name_const(ptr, ptr)
-
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
char *talloc_asprintf(const void *t, const char *fmt, ...);
@@ -560,7 +547,7 @@ char *talloc_asprintf(const void *t, const char *fmt, ...);
The talloc_asprintf() function is the talloc equivalent of the C
library function asprintf()
-This functions sets the name of the new pointer to the new
+This functions sets the name of the new pointer to the passed
string. This is equivalent to:
talloc_set_name_const(ptr, ptr)
@@ -571,10 +558,6 @@ char *talloc_asprintf_append(char *s, const char *fmt, ...);
The talloc_asprintf_append() function appends the given formatted
string to the given string.
-This functions sets the name of the new pointer to the new
-string. This is equivalent to:
- talloc_set_name_const(ptr, ptr)
-
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
(type *)talloc_array(const void *ctx, type, uint_t count);
diff --git a/source/lib/talloc/testsuite.c b/source/lib/talloc/testsuite.c
index 587f270553d..f51252e57bc 100644
--- a/source/lib/talloc/testsuite.c
+++ b/source/lib/talloc/testsuite.c
@@ -993,7 +993,7 @@ static bool test_talloc_ptrtype(void)
s4 = talloc_array_ptrtype(top, s4, 10);location4 = __location__;
if (talloc_get_size(s4) != (sizeof(struct struct1 **) * 10)) {
- printf("failure: ptrtype [\n"
+ printf("failure: TALLOC PTRTYPE [\n"
"talloc_array_ptrtype() allocated the wrong size "
"%lu (should be %lu)\n]\n",
(unsigned long)talloc_get_size(s4),
@@ -1010,49 +1010,8 @@ static bool test_talloc_ptrtype(void)
return true;
}
-static int _test_talloc_free_in_destructor(void **ptr)
-{
- talloc_free(*ptr);
- return 0;
-}
-
-static bool test_talloc_free_in_destructor(void)
-{
- void *level0;
- void *level1;
- void *level2;
- void *level3;
- void *level4;
- void **level5;
-
- printf("test: free_in_destructor [\nTALLOC FREE IN DESTRUCTOR\n]\n");
-
- level0 = talloc_new(NULL);
- level1 = talloc_new(level0);
- level2 = talloc_new(level1);
- level3 = talloc_new(level2);
- level4 = talloc_new(level3);
- level5 = talloc(level4, void *);
-
- *level5 = level3;
- (void)talloc_reference(level0, level3);
- (void)talloc_reference(level3, level3);
- (void)talloc_reference(level5, level3);
-
- talloc_set_destructor(level5, _test_talloc_free_in_destructor);
-
- talloc_free(level1);
-
- talloc_free(level0);
-
- printf("success: free_in_destructor\n");
- return true;
-}
-
static bool test_autofree(void)
{
-#if _SAMBA_BUILD_ < 4
- /* autofree test would kill smbtorture */
void *p;
printf("test: autofree [\nTALLOC AUTOFREE CONTEXT\n]\n");
@@ -1063,17 +1022,13 @@ static bool test_autofree(void)
talloc_free(p);
printf("success: autofree\n");
-#endif
return true;
}
-struct torture_context;
-bool torture_local_talloc(struct torture_context *tctx)
+int main(void)
{
bool ret = true;
- setlinebuf(stdout);
-
talloc_disable_null_tracking();
talloc_enable_null_tracking();
@@ -1094,22 +1049,13 @@ bool torture_local_talloc(struct torture_context *tctx)
ret &= test_loop();
ret &= test_free_parent_deny_child();
ret &= test_talloc_ptrtype();
- ret &= test_talloc_free_in_destructor();
if (ret) {
ret &= test_speed();
}
ret &= test_autofree();
- return ret;
-}
-
-#if _SAMBA_BUILD_ < 4
-int main(void)
-{
- bool ret = torture_local_talloc(NULL);
if (!ret)
return -1;
return 0;
}
-#endif
diff --git a/source/lib/tallocmsg.c b/source/lib/tallocmsg.c
index f5160125aaa..0f493538f3c 100644
--- a/source/lib/tallocmsg.c
+++ b/source/lib/tallocmsg.c
@@ -65,11 +65,9 @@ static void msg_pool_usage_helper(const void *ptr, int depth, int max_depth, int
* Respond to a POOL_USAGE message by sending back string form of memory
* usage stats.
**/
-static void msg_pool_usage(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+void msg_pool_usage(int msg_type, struct process_id src_pid,
+ void *UNUSED(buf), size_t UNUSED(len),
+ void *private_data)
{
struct msg_pool_usage_state state;
@@ -92,8 +90,8 @@ static void msg_pool_usage(struct messaging_context *msg_ctx,
return;
}
- messaging_send_buf(msg_ctx, src, MSG_POOL_USAGE,
- (uint8 *)state.s, strlen(state.s)+1);
+ message_send_pid(src_pid, MSG_POOL_USAGE,
+ state.s, strlen(state.s)+1, True);
talloc_destroy(state.mem_ctx);
}
@@ -101,8 +99,8 @@ static void msg_pool_usage(struct messaging_context *msg_ctx,
/**
* Register handler for MSG_REQ_POOL_USAGE
**/
-void register_msg_pool_usage(struct messaging_context *msg_ctx)
+void register_msg_pool_usage(void)
{
- messaging_register(msg_ctx, NULL, MSG_REQ_POOL_USAGE, msg_pool_usage);
+ message_register(MSG_REQ_POOL_USAGE, msg_pool_usage, NULL);
DEBUG(2, ("Registered MSG_REQ_POOL_USAGE\n"));
}
diff --git a/source/lib/tdb/aclocal.m4 b/source/lib/tdb/aclocal.m4
deleted file mode 100644
index 5605e476bab..00000000000
--- a/source/lib/tdb/aclocal.m4
+++ /dev/null
@@ -1 +0,0 @@
-m4_include(libreplace.m4)
diff --git a/source/lib/tdb/config.guess b/source/lib/tdb/config.guess
deleted file mode 100755
index ad5281e66e9..00000000000
--- a/source/lib/tdb/config.guess
+++ /dev/null
@@ -1,1466 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-08-03'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- x86:Interix*:[34]*)
- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- *86) UNAME_PROCESSOR=i686 ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/source/lib/tdb/config.sub b/source/lib/tdb/config.sub
deleted file mode 100755
index 1c366dfde9a..00000000000
--- a/source/lib/tdb/config.sub
+++ /dev/null
@@ -1,1579 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-07-08'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | ms1 \
- | msp430 \
- | ns16k | ns32k \
- | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m32c)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | ms1-* \
- | msp430-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
- m32c-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16c)
- basic_machine=cr16c-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/source/lib/tdb/install-sh b/source/lib/tdb/install-sh
deleted file mode 100755
index 58719246f04..00000000000
--- a/source/lib/tdb/install-sh
+++ /dev/null
@@ -1,238 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/source/lib/util.c b/source/lib/util.c
index c0f2c5648e9..3c9233d9b34 100644
--- a/source/lib/util.c
+++ b/source/lib/util.c
@@ -199,6 +199,7 @@ void gfree_all( void )
gfree_case_tables();
gfree_debugsyms();
gfree_charcnv();
+ gfree_messages();
gfree_interfaces();
/* release the talloc null_context memory last */
@@ -512,54 +513,35 @@ void show_msg(char *buf)
if (DEBUGLEVEL < 50)
bcc = MIN(bcc, 512);
- dump_data(10, (uint8 *)smb_buf(buf), bcc);
-}
-
-/*******************************************************************
- Set the length and marker of an encrypted smb packet.
-********************************************************************/
-
-void smb_set_enclen(char *buf,int len,uint16 enc_ctx_num)
-{
- _smb_setlen(buf,len);
-
- SCVAL(buf,4,0xFF);
- SCVAL(buf,5,'E');
- SSVAL(buf,6,enc_ctx_num);
+ dump_data(10, smb_buf(buf), bcc);
}
/*******************************************************************
Set the length and marker of an smb packet.
********************************************************************/
-void smb_setlen(const char *frombuf, char *buf, int len)
+void smb_setlen(char *buf,int len)
{
_smb_setlen(buf,len);
- if (frombuf) {
- if (buf != frombuf) {
- memcpy(buf+4, frombuf+4, 4);
- }
- } else {
- SCVAL(buf,4,0xFF);
- SCVAL(buf,5,'S');
- SCVAL(buf,6,'M');
- SCVAL(buf,7,'B');
- }
+ SCVAL(buf,4,0xFF);
+ SCVAL(buf,5,'S');
+ SCVAL(buf,6,'M');
+ SCVAL(buf,7,'B');
}
/*******************************************************************
Setup the word count and byte count for a smb message.
********************************************************************/
-int set_message(const char *frombuf, char *buf,int num_words,int num_bytes,BOOL zero)
+int set_message(char *buf,int num_words,int num_bytes,BOOL zero)
{
if (zero && (num_words || num_bytes)) {
memset(buf + smb_size,'\0',num_words*2 + num_bytes);
}
SCVAL(buf,smb_wct,num_words);
SSVAL(buf,smb_vwv + num_words*SIZEOFWORD,num_bytes);
- smb_setlen(frombuf, buf,smb_size + num_words*2 + num_bytes - 4);
+ smb_setlen(buf,smb_size + num_words*2 + num_bytes - 4);
return (smb_size + num_words*2 + num_bytes);
}
@@ -567,11 +549,11 @@ int set_message(const char *frombuf, char *buf,int num_words,int num_bytes,BOOL
Setup only the byte count for a smb message.
********************************************************************/
-int set_message_bcc(const char *frombuf, char *buf,int num_bytes)
+int set_message_bcc(char *buf,int num_bytes)
{
int num_words = CVAL(buf,smb_wct);
SSVAL(buf,smb_vwv + num_words*SIZEOFWORD,num_bytes);
- smb_setlen(frombuf, buf,smb_size + num_words*2 + num_bytes - 4);
+ smb_setlen(buf,smb_size + num_words*2 + num_bytes - 4);
return (smb_size + num_words*2 + num_bytes);
}
@@ -580,11 +562,9 @@ int set_message_bcc(const char *frombuf, char *buf,int num_bytes)
message as a marker.
********************************************************************/
-int set_message_end(const char *frombuf, void *outbuf,void *end_ptr)
+int set_message_end(void *outbuf,void *end_ptr)
{
- return set_message_bcc(frombuf,
- (char *)outbuf,
- PTR_DIFF(end_ptr,smb_buf((char *)outbuf)));
+ return set_message_bcc((char *)outbuf,PTR_DIFF(end_ptr,smb_buf((char *)outbuf)));
}
/*******************************************************************
@@ -1257,6 +1237,7 @@ BOOL get_mydnsdomname(fstring my_domname)
if (p) {
p++;
fstrcpy(my_domname, p);
+ return True;
}
return False;
@@ -1526,30 +1507,26 @@ BOOL same_net(struct in_addr ip1,struct in_addr ip2,struct in_addr mask)
Check if a process exists. Does this work on all unixes?
****************************************************************************/
-BOOL process_exists(const struct server_id pid)
+BOOL process_exists(const struct process_id pid)
{
if (procid_is_me(&pid)) {
return True;
}
- if (procid_is_local(&pid)) {
- return (kill(pid.pid,0) == 0 || errno != ESRCH);
+ if (!procid_is_local(&pid)) {
+ /* This *SEVERELY* needs fixing. */
+ return True;
}
-#ifdef CLUSTER_SUPPORT
- return ctdbd_process_exists(messaging_ctdbd_connection(), pid.vnn,
- pid.pid);
-#else
- return False;
-#endif
+ /* Doing kill with a non-positive pid causes messages to be
+ * sent to places we don't want. */
+ SMB_ASSERT(pid.pid > 0);
+ return(kill(pid.pid,0) == 0 || errno != ESRCH);
}
BOOL process_exists_by_pid(pid_t pid)
{
- /* Doing kill with a non-positive pid causes messages to be
- * sent to places we don't want. */
- SMB_ASSERT(pid > 0);
- return(kill(pid,0) == 0 || errno != ESRCH);
+ return process_exists(pid_to_procid(pid));
}
/*******************************************************************
@@ -1857,8 +1834,7 @@ const char *readdirname(SMB_STRUCT_DIR *p)
BOOL is_in_path(const char *name, name_compare_entry *namelist, BOOL case_sensitive)
{
- pstring last_component;
- char *p;
+ const char *last_component;
/* if we have no list it's obviously not in the path */
if((namelist == NULL ) || ((namelist != NULL) && (namelist[0].name == NULL))) {
@@ -1868,8 +1844,12 @@ BOOL is_in_path(const char *name, name_compare_entry *namelist, BOOL case_sensit
DEBUG(8, ("is_in_path: %s\n", name));
/* Get the last component of the unix name. */
- p = strrchr_m(name, '/');
- pstrcpy(last_component, p ? ++p : name);
+ last_component = strrchr_m(name, '/');
+ if (!last_component) {
+ last_component = name;
+ } else {
+ last_component++; /* Go past '/' */
+ }
for(; namelist->name != NULL; namelist++) {
if(namelist->is_wild) {
@@ -1886,7 +1866,6 @@ BOOL is_in_path(const char *name, name_compare_entry *namelist, BOOL case_sensit
}
}
DEBUG(8,("is_in_path: match not found\n"));
-
return False;
}
@@ -2276,8 +2255,9 @@ void print_asc(int level, const unsigned char *buf,int len)
DEBUG(level,("%c", isprint(buf[i])?buf[i]:'.'));
}
-void dump_data(int level, const unsigned char *buf,int len)
+void dump_data(int level, const char *buf1,int len)
{
+ const unsigned char *buf = (const unsigned char *)buf1;
int i=0;
if (len<=0) return;
@@ -2314,7 +2294,7 @@ void dump_data_pw(const char *msg, const uchar * data, size_t len)
DEBUG(11, ("%s", msg));
if (data != NULL && len > 0)
{
- dump_data(11, data, len);
+ dump_data(11, (const char *)data, len);
}
#endif
}
@@ -2469,16 +2449,15 @@ int smb_mkstemp(char *name_template)
void *smb_xmalloc_array(size_t size, unsigned int count)
{
void *p;
- if (size == 0) {
- smb_panic("smb_xmalloc_array: called with zero size");
- }
+ if (size == 0)
+ smb_panic("smb_xmalloc_array: called with zero size.\n");
if (count >= MAX_ALLOC_SIZE/size) {
- smb_panic("smb_xmalloc_array: alloc size too large");
+ smb_panic("smb_xmalloc: alloc size too large.\n");
}
if ((p = SMB_MALLOC(size*count)) == NULL) {
DEBUG(0, ("smb_xmalloc_array failed to allocate %lu * %lu bytes\n",
(unsigned long)size, (unsigned long)count));
- smb_panic("smb_xmalloc_array: malloc failed");
+ smb_panic("smb_xmalloc_array: malloc fail.\n");
}
return p;
}
@@ -2518,9 +2497,8 @@ char *smb_xstrdup(const char *s)
#endif
#define strdup(s) __ERROR_DONT_USE_STRDUP_DIRECTLY
#endif
- if (!s1) {
- smb_panic("smb_xstrdup: malloc failed");
- }
+ if (!s1)
+ smb_panic("smb_xstrdup: malloc fail\n");
return s1;
}
@@ -2549,9 +2527,8 @@ char *smb_xstrndup(const char *s, size_t n)
#endif
#define strndup(s,n) __ERROR_DONT_USE_STRNDUP_DIRECTLY
#endif
- if (!s1) {
- smb_panic("smb_xstrndup: malloc failed");
- }
+ if (!s1)
+ smb_panic("smb_xstrndup: malloc fail\n");
return s1;
}
@@ -2567,9 +2544,8 @@ char *smb_xstrndup(const char *s, size_t n)
VA_COPY(ap2, ap);
n = vasprintf(ptr, format, ap2);
- if (n == -1 || ! *ptr) {
+ if (n == -1 || ! *ptr)
smb_panic("smb_xvasprintf: out of memory");
- }
return n;
}
@@ -2775,7 +2751,7 @@ BOOL ms_has_wild_w(const smb_ucs2_t *s)
of the ".." name.
*******************************************************************/
-BOOL mask_match(const char *string, char *pattern, BOOL is_case_sensitive)
+BOOL mask_match(const char *string, const char *pattern, BOOL is_case_sensitive)
{
if (strcmp(string,"..") == 0)
string = ".";
@@ -2791,7 +2767,7 @@ BOOL mask_match(const char *string, char *pattern, BOOL is_case_sensitive)
pattern translation.
*******************************************************************/
-BOOL mask_match_search(const char *string, char *pattern, BOOL is_case_sensitive)
+BOOL mask_match_search(const char *string, const char *pattern, BOOL is_case_sensitive)
{
if (strcmp(string,"..") == 0)
string = ".";
@@ -3002,7 +2978,7 @@ void *talloc_check_name_abort(const void *ptr, const char *name)
DEBUG(0, ("Talloc type mismatch, expected %s, got %s\n",
name, talloc_get_name(ptr)));
- smb_panic("talloc type mismatch");
+ smb_panic("aborting");
/* Keep the compiler happy */
return NULL;
}
@@ -3068,128 +3044,71 @@ uint32 map_share_mode_to_deny_mode(uint32 share_access, uint32 private_options)
return (uint32)-1;
}
-pid_t procid_to_pid(const struct server_id *proc)
+pid_t procid_to_pid(const struct process_id *proc)
{
return proc->pid;
}
-static uint32 my_vnn = NONCLUSTER_VNN;
-
-void set_my_vnn(uint32 vnn)
-{
- DEBUG(10, ("vnn pid %d = %u\n", (int)sys_getpid(), (unsigned int)vnn));
- my_vnn = vnn;
-}
-
-uint32 get_my_vnn(void)
+struct process_id pid_to_procid(pid_t pid)
{
- return my_vnn;
-}
-
-struct server_id pid_to_procid(pid_t pid)
-{
- struct server_id result;
+ struct process_id result;
result.pid = pid;
-#ifdef CLUSTER_SUPPORT
- result.vnn = my_vnn;
-#endif
return result;
}
-struct server_id procid_self(void)
+struct process_id procid_self(void)
{
return pid_to_procid(sys_getpid());
}
struct server_id server_id_self(void)
{
- return procid_self();
+ struct server_id id;
+ id.id = procid_self();
+ return id;
}
-BOOL procid_equal(const struct server_id *p1, const struct server_id *p2)
+BOOL procid_equal(const struct process_id *p1, const struct process_id *p2)
{
- if (p1->pid != p2->pid)
- return False;
-#ifdef CLUSTER_SUPPORT
- if (p1->vnn != p2->vnn)
- return False;
-#endif
- return True;
+ return (p1->pid == p2->pid);
}
BOOL cluster_id_equal(const struct server_id *id1,
const struct server_id *id2)
{
- return procid_equal(id1, id2);
+ return procid_equal(&id1->id, &id2->id);
}
-BOOL procid_is_me(const struct server_id *pid)
+BOOL procid_is_me(const struct process_id *pid)
{
- if (pid->pid != sys_getpid())
- return False;
-#ifdef CLUSTER_SUPPORT
- if (pid->vnn != my_vnn)
- return False;
-#endif
- return True;
+ return (pid->pid == sys_getpid());
}
-struct server_id interpret_pid(const char *pid_string)
+struct process_id interpret_pid(const char *pid_string)
{
-#ifdef CLUSTER_SUPPORT
- unsigned int vnn, pid;
- struct server_id result;
- if (sscanf(pid_string, "%u:%u", &vnn, &pid) == 2) {
- result.vnn = vnn;
- result.pid = pid;
- }
- else if (sscanf(pid_string, "%u", &pid) == 1) {
- result.vnn = NONCLUSTER_VNN;
- result.pid = pid;
- }
- else {
- result.vnn = NONCLUSTER_VNN;
- result.pid = -1;
- }
- return result;
-#else
return pid_to_procid(atoi(pid_string));
-#endif
}
-char *procid_str_static(const struct server_id *pid)
+char *procid_str_static(const struct process_id *pid)
{
static fstring str;
-#ifdef CLUSTER_SUPPORT
- if (pid->vnn == NONCLUSTER_VNN) {
- fstr_sprintf(str, "%d", (int)pid->pid);
- }
- else {
- fstr_sprintf(str, "%u:%d", (unsigned)pid->vnn, (int)pid->pid);
- }
-#else
- fstr_sprintf(str, "%d", (int)pid->pid);
-#endif
+ fstr_sprintf(str, "%d", pid->pid);
return str;
}
-char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid)
+char *procid_str(TALLOC_CTX *mem_ctx, const struct process_id *pid)
{
return talloc_strdup(mem_ctx, procid_str_static(pid));
}
-BOOL procid_valid(const struct server_id *pid)
+BOOL procid_valid(const struct process_id *pid)
{
return (pid->pid != -1);
}
-BOOL procid_is_local(const struct server_id *pid)
+BOOL procid_is_local(const struct process_id *pid)
{
-#ifdef CLUSTER_SUPPORT
- return pid->vnn == my_vnn;
-#else
return True;
-#endif
}
int this_is_smp(void)
diff --git a/source/lib/util_file.c b/source/lib/util_file.c
index 9c54c50b397..03246cad8e7 100644
--- a/source/lib/util_file.c
+++ b/source/lib/util_file.c
@@ -102,7 +102,7 @@ char *fgets_slash(char *s2,int maxlen,XFILE *f)
Load from a pipe into memory.
****************************************************************************/
-static char *file_pload(char *syscmd, size_t *size)
+char *file_pload(char *syscmd, size_t *size)
{
int fd, n;
char *p;
diff --git a/source/lib/util_nttoken.c b/source/lib/util_nttoken.c
deleted file mode 100644
index 9cb981f74f0..00000000000
--- a/source/lib/util_nttoken.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Authentication utility functions
- * Copyright (C) Andrew Tridgell 1992-1998
- * Copyright (C) Andrew Bartlett 2001
- * Copyright (C) Jeremy Allison 2000-2001
- * Copyright (C) Rafal Szczesniak 2002
- * Copyright (C) Volker Lendecke 2006
- * Copyright (C) Michael Adam 2007
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* function(s) moved from auth/auth_util.c to minimize linker deps */
-
-#include "includes.h"
-
-/****************************************************************************
- Duplicate a SID token.
-****************************************************************************/
-
-NT_USER_TOKEN *dup_nt_token(TALLOC_CTX *mem_ctx, const NT_USER_TOKEN *ptoken)
-{
- NT_USER_TOKEN *token;
-
- if (!ptoken)
- return NULL;
-
- token = TALLOC_P(mem_ctx, NT_USER_TOKEN);
- if (token == NULL) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- ZERO_STRUCTP(token);
-
- if (ptoken->user_sids && ptoken->num_sids) {
- token->user_sids = (DOM_SID *)talloc_memdup(
- token, ptoken->user_sids, sizeof(DOM_SID) * ptoken->num_sids );
-
- if (token->user_sids == NULL) {
- DEBUG(0, ("talloc_memdup failed\n"));
- TALLOC_FREE(token);
- return NULL;
- }
- token->num_sids = ptoken->num_sids;
- }
-
- /* copy the privileges; don't consider failure to be critical here */
-
- if ( !se_priv_copy( &token->privileges, &ptoken->privileges ) ) {
- DEBUG(0,("dup_nt_token: Failure to copy SE_PRIV!. "
- "Continuing with 0 privileges assigned.\n"));
- }
-
- return token;
-}
-
diff --git a/source/lib/util_pw.c b/source/lib/util_pw.c
index 2c8f2d4a7d9..dc184233a6d 100644
--- a/source/lib/util_pw.c
+++ b/source/lib/util_pw.c
@@ -49,7 +49,7 @@ static void init_pwnam_cache(void)
pwnam_cache = TALLOC_ZERO_ARRAY(NULL, struct passwd *,
PWNAMCACHE_SIZE);
if (pwnam_cache == NULL) {
- smb_panic("Could not init pwnam_cache");
+ smb_panic("Could not init pwnam_cache\n");
}
return;
@@ -74,7 +74,7 @@ struct passwd *getpwnam_alloc(TALLOC_CTX *mem_ctx, const char *name)
if ((pwnam_cache[i] != NULL) &&
(strcmp(name, pwnam_cache[i]->pw_name) == 0)) {
DEBUG(10, ("Got %s from pwnam_cache\n", name));
- return tcopy_passwd(mem_ctx, pwnam_cache[i]);
+ return (struct passwd *)talloc_reference(mem_ctx, pwnam_cache[i]);
}
}
@@ -98,15 +98,15 @@ struct passwd *getpwnam_alloc(TALLOC_CTX *mem_ctx, const char *name)
i = rand() % PWNAMCACHE_SIZE;
if (pwnam_cache[i] != NULL) {
- /* Remove this old cache entry, from the cache. We
- * use talloc_unlink here because we want to be very
- * clear which referece we are removing */
- talloc_unlink(pwnam_cache, pwnam_cache[i]);
+ TALLOC_FREE(pwnam_cache[i]);
}
pwnam_cache[i] = tcopy_passwd(pwnam_cache, temp);
+ if (pwnam_cache[i]!= NULL && mem_ctx != NULL) {
+ return (struct passwd *)talloc_reference(mem_ctx, pwnam_cache[i]);
+ }
- return tcopy_passwd(mem_ctx, temp);
+ return tcopy_passwd(NULL, pwnam_cache[i]);
}
struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid)
diff --git a/source/lib/util_reg.c b/source/lib/util_reg.c
deleted file mode 100644
index cf0564509b7..00000000000
--- a/source/lib/util_reg.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Registry helper routines
- * Copyright (C) Volker Lendecke 2006
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
-extern REGISTRY_OPS smbconf_reg_ops;
-
-const char *reg_type_lookup(enum winreg_Type type)
-{
- const char *result;
-
- switch(type) {
- case REG_NONE:
- result = "REG_NONE";
- break;
- case REG_SZ:
- result = "REG_SZ";
- break;
- case REG_EXPAND_SZ:
- result = "REG_EXPAND_SZ";
- break;
- case REG_BINARY:
- result = "REG_BINARY";
- break;
- case REG_DWORD:
- result = "REG_DWORD";
- break;
- case REG_DWORD_BIG_ENDIAN:
- result = "REG_DWORD_BIG_ENDIAN";
- break;
- case REG_LINK:
- result = "REG_LINK";
- break;
- case REG_MULTI_SZ:
- result = "REG_MULTI_SZ";
- break;
- case REG_RESOURCE_LIST:
- result = "REG_RESOURCE_LIST";
- break;
- case REG_FULL_RESOURCE_DESCRIPTOR:
- result = "REG_FULL_RESOURCE_DESCRIPTOR";
- break;
- case REG_RESOURCE_REQUIREMENTS_LIST:
- result = "REG_RESOURCE_REQUIREMENTS_LIST";
- break;
- case REG_QWORD:
- result = "REG_QWORD";
- break;
- default:
- result = "REG TYPE IS UNKNOWN";
- break;
- }
- return result;
-}
-
-WERROR reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len,
- uint32 *num_values, char ***values)
-{
- const smb_ucs2_t *p = (const smb_ucs2_t *)buf;
- *num_values = 0;
-
- /*
- * Make sure that a talloc context for the strings retrieved exists
- */
-
- if (!(*values = TALLOC_ARRAY(mem_ctx, char *, 1))) {
- return WERR_NOMEM;
- }
-
- len /= 2; /* buf is a set of UCS2 strings */
-
- while (len > 0) {
- char *val;
- size_t dstlen, thislen;
-
- thislen = strnlen_w(p, len) + 1;
- dstlen = convert_string_allocate(*values, CH_UTF16LE, CH_UNIX,
- p, thislen*2, (void *)&val,
- True);
- if (dstlen == (size_t)-1) {
- TALLOC_FREE(*values);
- return WERR_NOMEM;
- }
-
- ADD_TO_ARRAY(*values, char *, val, values, num_values);
- if (*values == NULL) {
- return WERR_NOMEM;
- }
-
- p += thislen;
- len -= thislen;
- }
-
- return WERR_OK;
-}
-
-void normalize_dbkey(char *key)
-{
- size_t len = strlen(key);
- string_sub(key, "\\", "/", len+1);
- strupper_m(key);
-}
-
-/*
- * check whether a given value name is forbidden in registry (smbconf)
- */
-BOOL registry_smbconf_valname_forbidden(const char *valname)
-{
- /* hard code the list of forbidden names here for now */
- const char *forbidden_valnames[] = {
- "include",
- "lock directory",
- "lock dir",
- NULL
- };
- const char **forbidden = NULL;
-
- for (forbidden = forbidden_valnames; *forbidden != NULL; forbidden++) {
- if (strwicmp(valname, *forbidden) == 0) {
- return True;
- }
- }
- return False;
-}
diff --git a/source/lib/util_reg_api.c b/source/lib/util_reg_api.c
deleted file mode 100644
index 43ad347d4b8..00000000000
--- a/source/lib/util_reg_api.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Registry helper routines
- * Copyright (C) Volker Lendecke 2006
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
-WERROR registry_pull_value(TALLOC_CTX *mem_ctx,
- struct registry_value **pvalue,
- enum winreg_Type type, uint8 *data,
- uint32 size, uint32 length)
-{
- struct registry_value *value;
- WERROR err;
-
- if (!(value = TALLOC_ZERO_P(mem_ctx, struct registry_value))) {
- return WERR_NOMEM;
- }
-
- value->type = type;
-
- switch (type) {
- case REG_DWORD:
- if ((size != 4) || (length != 4)) {
- err = WERR_INVALID_PARAM;
- goto error;
- }
- value->v.dword = IVAL(data, 0);
- break;
- case REG_SZ:
- case REG_EXPAND_SZ:
- {
- /*
- * Make sure we get a NULL terminated string for
- * convert_string_talloc().
- */
-
- smb_ucs2_t *tmp;
-
- if (length == 1) {
- /* win2k regedit gives us a string of 1 byte when
- * creating a new value of type REG_SZ. this workaround
- * replaces the input by using the same string as
- * winxp delivers. */
- length = 2;
- if (!(tmp = SMB_MALLOC_ARRAY(smb_ucs2_t, 2))) {
- err = WERR_NOMEM;
- goto error;
- }
- tmp[0] = 2;
- tmp[1] = 0;
- }
- else if ((length % 2) != 0) {
- err = WERR_INVALID_PARAM;
- goto error;
- }
- else {
- uint32 num_ucs2 = length / 2;
- if (!(tmp = SMB_MALLOC_ARRAY(smb_ucs2_t, num_ucs2+1))) {
- err = WERR_NOMEM;
- goto error;
- }
-
- memcpy((void *)tmp, (const void *)data, length);
- tmp[num_ucs2] = 0;
- }
-
- if (length + 2 < length) {
- /* Integer wrap. */
- SAFE_FREE(tmp);
- err = WERR_INVALID_PARAM;
- goto error;
- }
-
- value->v.sz.len = convert_string_talloc(
- value, CH_UTF16LE, CH_UNIX, tmp, length+2,
- &value->v.sz.str, False);
-
- SAFE_FREE(tmp);
-
- if (value->v.sz.len == (size_t)-1) {
- err = WERR_INVALID_PARAM;
- goto error;
- }
- break;
- }
- case REG_MULTI_SZ:
- err = reg_pull_multi_sz(value, (void *)data, length,
- &value->v.multi_sz.num_strings,
- &value->v.multi_sz.strings);
- if (!(W_ERROR_IS_OK(err))) {
- goto error;
- }
- break;
- case REG_BINARY:
- value->v.binary.data = talloc_move(value, &data);
- value->v.binary.length = length;
- break;
- default:
- err = WERR_INVALID_PARAM;
- goto error;
- }
-
- *pvalue = value;
- return WERR_OK;
-
- error:
- TALLOC_FREE(value);
- return err;
-}
-
-WERROR registry_push_value(TALLOC_CTX *mem_ctx,
- const struct registry_value *value,
- DATA_BLOB *presult)
-{
- switch (value->type) {
- case REG_DWORD: {
- char buf[4];
- SIVAL(buf, 0, value->v.dword);
- *presult = data_blob_talloc(mem_ctx, (void *)buf, 4);
- if (presult->data == NULL) {
- return WERR_NOMEM;
- }
- break;
- }
- case REG_SZ:
- case REG_EXPAND_SZ: {
- presult->length = convert_string_talloc(
- mem_ctx, CH_UNIX, CH_UTF16LE, value->v.sz.str,
- MIN(value->v.sz.len, strlen(value->v.sz.str)+1),
- (void *)&(presult->data), False);
- if (presult->length == (size_t)-1) {
- return WERR_NOMEM;
- }
- break;
- }
- default:
- return WERR_INVALID_PARAM;
- }
-
- return WERR_OK;
-}
diff --git a/source/lib/util_reg_smbconf.c b/source/lib/util_reg_smbconf.c
deleted file mode 100644
index 8fe6b4e0b68..00000000000
--- a/source/lib/util_reg_smbconf.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Registry helper routines
- * Copyright (C) Michael Adam 2007
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
-extern REGISTRY_OPS smbconf_reg_ops;
-
-/*
- * create a fake token just with enough rights to
- * locally access the registry.
- */
-NT_USER_TOKEN *registry_create_admin_token(TALLOC_CTX *mem_ctx)
-{
- NT_USER_TOKEN *token = NULL;
-
- /* fake a user token: builtin administrators sid and the
- * disk operators privilege is all we need to access the
- * registry... */
- if (!(token = TALLOC_ZERO_P(mem_ctx, NT_USER_TOKEN))) {
- DEBUG(1, ("talloc failed\n"));
- goto done;
- }
- token->privileges = se_disk_operators;
- if (!add_sid_to_array(token, &global_sid_Builtin_Administrators,
- &token->user_sids, &token->num_sids)) {
- DEBUG(1, ("Error adding builtin administrators sid "
- "to fake token.\n"));
- goto done;
- }
-done:
- return token;
-}
-
-/*
- * init the smbconf portion of the registry.
- * for use in places where not the whole registry is needed,
- * e.g. utils/net_conf.c and loadparm.c
- */
-BOOL registry_init_regdb(void)
-{
- BOOL ret = False;
- int saved_errno = 0;
- static REGISTRY_HOOK smbconf_reg_hook = {KEY_SMBCONF, &smbconf_reg_ops};
-
- DEBUG(10, ("registry_init_regdb called\n"));
-
- if (!regdb_init()) {
- saved_errno = errno;
- DEBUG(1, ("Can't open the registry"));
- if (saved_errno) {
- DEBUGADD(1, (": %s", strerror(saved_errno)));
- }
- DEBUGADD(1, (".\n"));
- goto done;
- }
- reghook_cache_init();
- if (!reghook_cache_add(&smbconf_reg_hook)) {
- DEBUG(1, ("Error adding smbconf reghooks to reghook cache.\n"));
- goto done;
- }
-
- ret = True;
-
-done:
- return ret;
-}
diff --git a/source/lib/util_sock.c b/source/lib/util_sock.c
index d102e570ab1..94c5e82d153 100644
--- a/source/lib/util_sock.c
+++ b/source/lib/util_sock.c
@@ -658,12 +658,10 @@ ssize_t read_smb_length(int fd, char *inbuf, unsigned int timeout)
BUFFER_SIZE+SAFETY_MARGIN.
The timeout is in milliseconds.
This function will return on receipt of a session keepalive packet.
- maxlen is the max number of bytes to return, not including the 4 byte
- length. If zero it means BUFFER_SIZE+SAFETY_MARGIN limit.
Doesn't check the MAC on signed packets.
****************************************************************************/
-ssize_t receive_smb_raw(int fd, char *buffer, unsigned int timeout, size_t maxlen)
+BOOL receive_smb_raw(int fd, char *buffer, unsigned int timeout)
{
ssize_t len,ret;
@@ -681,7 +679,7 @@ ssize_t receive_smb_raw(int fd, char *buffer, unsigned int timeout, size_t maxle
if (smb_read_error == 0)
smb_read_error = READ_ERROR;
- return -1;
+ return False;
}
/*
@@ -701,15 +699,11 @@ ssize_t receive_smb_raw(int fd, char *buffer, unsigned int timeout, size_t maxle
if (smb_read_error == 0)
smb_read_error = READ_ERROR;
- return -1;
+ return False;
}
}
if(len > 0) {
- if (maxlen) {
- len = MIN(len,maxlen);
- }
-
if (timeout > 0) {
ret = read_socket_with_timeout(fd,buffer+4,len,len,timeout);
} else {
@@ -720,7 +714,7 @@ ssize_t receive_smb_raw(int fd, char *buffer, unsigned int timeout, size_t maxle
if (smb_read_error == 0) {
smb_read_error = READ_ERROR;
}
- return -1;
+ return False;
}
/* not all of samba3 properly checks for packet-termination of strings. This
@@ -728,7 +722,7 @@ ssize_t receive_smb_raw(int fd, char *buffer, unsigned int timeout, size_t maxle
SSVAL(buffer+4,len, 0);
}
- return len;
+ return True;
}
/****************************************************************************
@@ -738,32 +732,19 @@ ssize_t receive_smb_raw(int fd, char *buffer, unsigned int timeout, size_t maxle
BOOL receive_smb(int fd, char *buffer, unsigned int timeout)
{
- if (receive_smb_raw(fd, buffer, timeout, 0) < 0) {
+ if (!receive_smb_raw(fd, buffer, timeout)) {
return False;
}
- if (srv_encryption_on()) {
- NTSTATUS status = srv_decrypt_buffer(buffer);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("receive_smb: SMB decryption failed on incoming packet! Error %s\n",
- nt_errstr(status) ));
- if (smb_read_error == 0) {
- smb_read_error = READ_BAD_DECRYPT;
- }
- return False;
- }
- }
-
/* Check the incoming SMB signature. */
if (!srv_check_sign_mac(buffer, True)) {
DEBUG(0, ("receive_smb: SMB Signature verification failed on incoming packet!\n"));
- if (smb_read_error == 0) {
+ if (smb_read_error == 0)
smb_read_error = READ_BAD_SIG;
- }
return False;
- }
+ };
- return True;
+ return(True);
}
/****************************************************************************
@@ -775,34 +756,22 @@ BOOL send_smb(int fd, char *buffer)
size_t len;
size_t nwritten=0;
ssize_t ret;
- char *buf_out = buffer;
/* Sign the outgoing packet if required. */
- srv_calculate_sign_mac(buf_out);
-
- if (srv_encryption_on()) {
- NTSTATUS status = srv_encrypt_buffer(buffer, &buf_out);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("send_smb: SMB encryption failed on outgoing packet! Error %s\n",
- nt_errstr(status) ));
- return False;
- }
- }
+ srv_calculate_sign_mac(buffer);
- len = smb_len(buf_out) + 4;
+ len = smb_len(buffer) + 4;
while (nwritten < len) {
- ret = write_data(fd,buf_out+nwritten,len - nwritten);
+ ret = write_data(fd,buffer+nwritten,len - nwritten);
if (ret <= 0) {
DEBUG(0,("Error writing %d bytes to client. %d. (%s)\n",
(int)len,(int)ret, strerror(errno) ));
- srv_free_enc_buffer(buf_out);
return False;
}
nwritten += ret;
}
- srv_free_enc_buffer(buf_out);
return True;
}
diff --git a/source/lib/util_str.c b/source/lib/util_str.c
index aaba7300fcf..52cdbfceddc 100644
--- a/source/lib/util_str.c
+++ b/source/lib/util_str.c
@@ -126,6 +126,8 @@ BOOL next_token_nr(const char **ptr,char *buff, const char *sep, size_t bufsize)
return ret;
}
+static uint16 tmpbuf[sizeof(pstring)];
+
void set_first_token(char *ptr)
{
last_ptr = ptr;
@@ -392,11 +394,9 @@ BOOL strisnormal(const char *s, int case_default)
NOTE: oldc and newc must be 7 bit characters
**/
-void string_replace( char *s, char oldc, char newc )
+void string_replace( pstring s, char oldc, char newc )
{
char *p;
- smb_ucs2_t *tmp;
- size_t src_len, len;
/* this is quite a common operation, so we want it to be
fast. We optimise for the ascii case, knowing that all our
@@ -418,14 +418,9 @@ void string_replace( char *s, char oldc, char newc )
/* With compose characters we must restart from the beginning. JRA. */
p = s;
#endif
- src_len = strlen(p);
- len = push_ucs2_allocate(&tmp, p);
- if (len == -1) {
- return;
- }
- string_replace_w(tmp, UCS2_CHAR(oldc), UCS2_CHAR(newc));
- pull_ucs2(NULL, p, tmp, src_len+1, -1, STR_TERMINATE);
- SAFE_FREE(tmp);
+ push_ucs2(NULL, tmpbuf, p, sizeof(tmpbuf), STR_TERMINATE);
+ string_replace_w(tmpbuf, UCS2_CHAR(oldc), UCS2_CHAR(newc));
+ pull_ucs2(NULL, p, tmpbuf, -1, sizeof(tmpbuf), STR_TERMINATE);
}
/**
@@ -589,22 +584,12 @@ BOOL trim_string(char *s,const char *front,const char *back)
BOOL strhasupper(const char *s)
{
- smb_ucs2_t *tmp, *p;
- BOOL ret;
-
- if (push_ucs2_allocate(&tmp, s) == -1) {
- return False;
- }
-
- for(p = tmp; *p != 0; p++) {
- if(isupper_w(*p)) {
- break;
- }
- }
-
- ret = (*p != 0);
- SAFE_FREE(tmp);
- return ret;
+ smb_ucs2_t *ptr;
+ push_ucs2(NULL, tmpbuf,s, sizeof(tmpbuf), STR_TERMINATE);
+ for(ptr=tmpbuf;*ptr;ptr++)
+ if(isupper_w(*ptr))
+ return True;
+ return(False);
}
/**
@@ -613,22 +598,12 @@ BOOL strhasupper(const char *s)
BOOL strhaslower(const char *s)
{
- smb_ucs2_t *tmp, *p;
- BOOL ret;
-
- if (push_ucs2_allocate(&tmp, s) == -1) {
- return False;
- }
-
- for(p = tmp; *p != 0; p++) {
- if(islower_w(*p)) {
- break;
- }
- }
-
- ret = (*p != 0);
- SAFE_FREE(tmp);
- return ret;
+ smb_ucs2_t *ptr;
+ push_ucs2(NULL, tmpbuf,s, sizeof(tmpbuf), STR_TERMINATE);
+ for(ptr=tmpbuf;*ptr;ptr++)
+ if(islower_w(*ptr))
+ return True;
+ return(False);
}
/**
@@ -2653,7 +2628,7 @@ size_t utf16_len_n(const void *src, size_t n)
char *escape_shell_string(const char *src)
{
size_t srclen = strlen(src);
- char *ret = SMB_MALLOC_ARRAY(char, (srclen * 2) + 1);
+ char *ret = SMB_MALLOC((srclen * 2) + 1);
char *dest = ret;
BOOL in_s_quote = False;
BOOL in_d_quote = False;
diff --git a/source/lib/util_tdb.c b/source/lib/util_tdb.c
index 564edffdac9..a1b5bf5bb16 100644
--- a/source/lib/util_tdb.c
+++ b/source/lib/util_tdb.c
@@ -43,22 +43,17 @@ static void gotalarm_sig(void)
Make a TDB_DATA and keep the const warning in one place
****************************************************************/
-TDB_DATA make_tdb_data(const uint8 *dptr, size_t dsize)
+TDB_DATA make_tdb_data(const char *dptr, size_t dsize)
{
TDB_DATA ret;
- ret.dptr = CONST_DISCARD(uint8 *, dptr);
+ ret.dptr = CONST_DISCARD(char *, dptr);
ret.dsize = dsize;
return ret;
}
TDB_DATA string_tdb_data(const char *string)
{
- return make_tdb_data((const uint8 *)string, string ? strlen(string) : 0 );
-}
-
-TDB_DATA string_term_tdb_data(const char *string)
-{
- return make_tdb_data((const uint8 *)string, string ? strlen(string) + 1 : 0);
+ return make_tdb_data(string, strlen(string));
}
/****************************************************************************
@@ -113,7 +108,7 @@ int tdb_chainlock_with_timeout( TDB_CONTEXT *tdb, TDB_DATA key, unsigned int tim
int tdb_lock_bystring(TDB_CONTEXT *tdb, const char *keyval)
{
- TDB_DATA key = string_term_tdb_data(keyval);
+ TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
return tdb_chainlock(tdb, key);
}
@@ -121,7 +116,7 @@ int tdb_lock_bystring(TDB_CONTEXT *tdb, const char *keyval)
int tdb_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval,
int timeout)
{
- TDB_DATA key = string_term_tdb_data(keyval);
+ TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
return tdb_chainlock_with_timeout(tdb, key, timeout);
}
@@ -132,7 +127,7 @@ int tdb_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval,
void tdb_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval)
{
- TDB_DATA key = string_term_tdb_data(keyval);
+ TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
tdb_chainunlock(tdb, key);
}
@@ -143,7 +138,7 @@ void tdb_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval)
int tdb_read_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval, unsigned int timeout)
{
- TDB_DATA key = string_term_tdb_data(keyval);
+ TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
return tdb_chainlock_with_timeout_internal(tdb, key, timeout, F_RDLCK);
}
@@ -154,7 +149,7 @@ int tdb_read_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval, un
void tdb_read_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval)
{
- TDB_DATA key = string_term_tdb_data(keyval);
+ TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
tdb_chainunlock_read(tdb, key);
}
@@ -165,8 +160,9 @@ void tdb_read_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval)
Output is int32 in native byte order.
****************************************************************************/
-int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key)
+int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, const char *keyval, size_t len)
{
+ TDB_DATA key = make_tdb_data(keyval, len);
TDB_DATA data;
int32 ret;
@@ -188,9 +184,7 @@ int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key)
int32 tdb_fetch_int32(TDB_CONTEXT *tdb, const char *keystr)
{
- TDB_DATA key = string_term_tdb_data(keystr);
-
- return tdb_fetch_int32_byblob(tdb, key);
+ return tdb_fetch_int32_byblob(tdb, keystr, strlen(keystr) + 1);
}
/****************************************************************************
@@ -198,13 +192,14 @@ int32 tdb_fetch_int32(TDB_CONTEXT *tdb, const char *keystr)
Input is int32 in native byte order. Output in tdb is in little-endian.
****************************************************************************/
-int tdb_store_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, int32 v)
+int tdb_store_int32_byblob(TDB_CONTEXT *tdb, const char *keystr, size_t len, int32 v)
{
+ TDB_DATA key = make_tdb_data(keystr, len);
TDB_DATA data;
int32 v_store;
SIVAL(&v_store,0,v);
- data.dptr = (uint8 *)&v_store;
+ data.dptr = (char *)&v_store;
data.dsize = sizeof(int32);
return tdb_store(tdb, key, data, TDB_REPLACE);
@@ -217,9 +212,7 @@ int tdb_store_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, int32 v)
int tdb_store_int32(TDB_CONTEXT *tdb, const char *keystr, int32 v)
{
- TDB_DATA key = string_term_tdb_data(keystr);
-
- return tdb_store_int32_byblob(tdb, key, v);
+ return tdb_store_int32_byblob(tdb, keystr, strlen(keystr) + 1, v);
}
/****************************************************************************
@@ -227,8 +220,9 @@ int tdb_store_int32(TDB_CONTEXT *tdb, const char *keystr, int32 v)
Output is uint32 in native byte order.
****************************************************************************/
-BOOL tdb_fetch_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 *value)
+BOOL tdb_fetch_uint32_byblob(TDB_CONTEXT *tdb, const char *keyval, size_t len, uint32 *value)
{
+ TDB_DATA key = make_tdb_data(keyval, len);
TDB_DATA data;
data = tdb_fetch(tdb, key);
@@ -249,9 +243,7 @@ BOOL tdb_fetch_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 *value)
BOOL tdb_fetch_uint32(TDB_CONTEXT *tdb, const char *keystr, uint32 *value)
{
- TDB_DATA key = string_term_tdb_data(keystr);
-
- return tdb_fetch_uint32_byblob(tdb, key, value);
+ return tdb_fetch_uint32_byblob(tdb, keystr, strlen(keystr) + 1, value);
}
/****************************************************************************
@@ -259,14 +251,15 @@ BOOL tdb_fetch_uint32(TDB_CONTEXT *tdb, const char *keystr, uint32 *value)
Input is uint32 in native byte order. Output in tdb is in little-endian.
****************************************************************************/
-BOOL tdb_store_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 value)
+BOOL tdb_store_uint32_byblob(TDB_CONTEXT *tdb, const char *keystr, size_t len, uint32 value)
{
+ TDB_DATA key = make_tdb_data(keystr, len);
TDB_DATA data;
uint32 v_store;
BOOL ret = True;
SIVAL(&v_store, 0, value);
- data.dptr = (uint8 *)&v_store;
+ data.dptr = (char *)&v_store;
data.dsize = sizeof(uint32);
if (tdb_store(tdb, key, data, TDB_REPLACE) == -1)
@@ -282,9 +275,7 @@ BOOL tdb_store_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 value)
BOOL tdb_store_uint32(TDB_CONTEXT *tdb, const char *keystr, uint32 value)
{
- TDB_DATA key = string_term_tdb_data(keystr);
-
- return tdb_store_uint32_byblob(tdb, key, value);
+ return tdb_store_uint32_byblob(tdb, keystr, strlen(keystr) + 1, value);
}
/****************************************************************************
Store a buffer by a null terminated string key. Return 0 on success, -1
@@ -293,17 +284,9 @@ BOOL tdb_store_uint32(TDB_CONTEXT *tdb, const char *keystr, uint32 value)
int tdb_store_bystring(TDB_CONTEXT *tdb, const char *keystr, TDB_DATA data, int flags)
{
- TDB_DATA key = string_term_tdb_data(keystr);
-
- return tdb_store(tdb, key, data, flags);
-}
-
-int tdb_trans_store_bystring(TDB_CONTEXT *tdb, const char *keystr,
- TDB_DATA data, int flags)
-{
- TDB_DATA key = string_term_tdb_data(keystr);
+ TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1);
- return tdb_trans_store(tdb, key, data, flags);
+ return tdb_store(tdb, key, data, flags);
}
/****************************************************************************
@@ -313,7 +296,7 @@ int tdb_trans_store_bystring(TDB_CONTEXT *tdb, const char *keystr,
TDB_DATA tdb_fetch_bystring(TDB_CONTEXT *tdb, const char *keystr)
{
- TDB_DATA key = string_term_tdb_data(keystr);
+ TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1);
return tdb_fetch(tdb, key);
}
@@ -324,7 +307,7 @@ TDB_DATA tdb_fetch_bystring(TDB_CONTEXT *tdb, const char *keystr)
int tdb_delete_bystring(TDB_CONTEXT *tdb, const char *keystr)
{
- TDB_DATA key = string_term_tdb_data(keystr);
+ TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1);
return tdb_delete(tdb, key);
}
@@ -417,7 +400,7 @@ BOOL tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr, uint32 *oldv
integers and strings.
****************************************************************************/
-size_t tdb_pack_va(uint8 *buf, int bufsize, const char *fmt, va_list ap)
+size_t tdb_pack_va(char *buf, int bufsize, const char *fmt, va_list ap)
{
uint8 bt;
uint16 w;
@@ -427,7 +410,7 @@ size_t tdb_pack_va(uint8 *buf, int bufsize, const char *fmt, va_list ap)
int len;
char *s;
char c;
- uint8 *buf0 = buf;
+ char *buf0 = buf;
const char *fmt0 = fmt;
int bufsize0 = bufsize;
@@ -501,7 +484,7 @@ size_t tdb_pack_va(uint8 *buf, int bufsize, const char *fmt, va_list ap)
return PTR_DIFF(buf, buf0);
}
-size_t tdb_pack(uint8 *buf, int bufsize, const char *fmt, ...)
+size_t tdb_pack(char *buf, int bufsize, const char *fmt, ...)
{
va_list ap;
size_t result;
@@ -534,7 +517,7 @@ BOOL tdb_pack_append(TALLOC_CTX *mem_ctx, uint8 **buf, size_t *len,
}
va_start(ap, fmt);
- len2 = tdb_pack_va((*buf)+(*len), len1, fmt, ap);
+ len2 = tdb_pack_va((char *)(*buf)+(*len), len1, fmt, ap);
va_end(ap);
if (len1 != len2) {
@@ -551,7 +534,7 @@ BOOL tdb_pack_append(TALLOC_CTX *mem_ctx, uint8 **buf, size_t *len,
integers and strings.
****************************************************************************/
-int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...)
+int tdb_unpack(char *buf, int bufsize, const char *fmt, ...)
{
va_list ap;
uint8 *bt;
@@ -562,7 +545,7 @@ int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...)
void **p;
char *s, **b;
char c;
- const uint8 *buf0 = buf;
+ char *buf0 = buf;
const char *fmt0 = fmt;
int bufsize0 = bufsize;
@@ -605,14 +588,14 @@ int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...)
break;
case 'P':
s = va_arg(ap,char *);
- len = strlen((const char *)buf) + 1;
+ len = strlen(buf) + 1;
if (bufsize < len || len > sizeof(pstring))
goto no_space;
memcpy(s, buf, len);
break;
case 'f':
s = va_arg(ap,char *);
- len = strlen((const char *)buf) + 1;
+ len = strlen(buf) + 1;
if (bufsize < len || len > sizeof(fstring))
goto no_space;
memcpy(s, buf, len);
@@ -734,7 +717,7 @@ TDB_LIST_NODE *tdb_search_keys(TDB_CONTEXT *tdb, const char* pattern)
for (key = tdb_firstkey(tdb); key.dptr; key = next) {
/* duplicate key string to ensure null-termination */
- char *key_str = SMB_STRNDUP((const char *)key.dptr, key.dsize);
+ char *key_str = (char*) SMB_STRNDUP(key.dptr, key.dsize);
if (!key_str) {
DEBUG(0, ("tdb_search_keys: strndup() failed!\n"));
smb_panic("strndup failed!\n");
@@ -802,7 +785,7 @@ int tdb_trans_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf,
if ((res = tdb_store(tdb, key, dbuf, flag)) != 0) {
DEBUG(10, ("tdb_store failed\n"));
if (tdb_transaction_cancel(tdb) != 0) {
- smb_panic("Cancelling transaction failed");
+ smb_panic("Cancelling transaction failed\n");
}
return res;
}
@@ -831,7 +814,7 @@ int tdb_trans_delete(struct tdb_context *tdb, TDB_DATA key)
if ((res = tdb_delete(tdb, key)) != 0) {
DEBUG(10, ("tdb_delete failed\n"));
if (tdb_transaction_cancel(tdb) != 0) {
- smb_panic("Cancelling transaction failed");
+ smb_panic("Cancelling transaction failed\n");
}
return res;
}
@@ -906,9 +889,6 @@ struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx,
struct tdb_logging_context log_ctx;
log_ctx.log_fn = tdb_wrap_log;
- if (!lp_use_mmap())
- tdb_flags |= TDB_NOMMAP;
-
for (w=tdb_list;w;w=w->next) {
if (strcmp(name, w->name) == 0) {
/*
@@ -943,222 +923,3 @@ struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx,
return w;
}
-
-NTSTATUS map_nt_error_from_tdb(enum TDB_ERROR err)
-{
- struct { enum TDB_ERROR err; NTSTATUS status; } map[] =
- { { TDB_SUCCESS, NT_STATUS_OK },
- { TDB_ERR_CORRUPT, NT_STATUS_INTERNAL_DB_CORRUPTION },
- { TDB_ERR_IO, NT_STATUS_UNEXPECTED_IO_ERROR },
- { TDB_ERR_OOM, NT_STATUS_NO_MEMORY },
- { TDB_ERR_EXISTS, NT_STATUS_OBJECT_NAME_COLLISION },
-
- /*
- * TDB_ERR_LOCK is very broad, we could for example
- * distinguish between fcntl locks and invalid lock
- * sequences. So NT_STATUS_FILE_LOCK_CONFLICT is a
- * compromise.
- */
- { TDB_ERR_LOCK, NT_STATUS_FILE_LOCK_CONFLICT },
- /*
- * The next two ones in the enum are not actually used
- */
- { TDB_ERR_NOLOCK, NT_STATUS_FILE_LOCK_CONFLICT },
- { TDB_ERR_LOCK_TIMEOUT, NT_STATUS_FILE_LOCK_CONFLICT },
- { TDB_ERR_NOEXIST, NT_STATUS_NOT_FOUND },
- { TDB_ERR_EINVAL, NT_STATUS_INVALID_PARAMETER },
- { TDB_ERR_RDONLY, NT_STATUS_ACCESS_DENIED }
- };
-
- int i;
-
- for (i=0; i < sizeof(map) / sizeof(map[0]); i++) {
- if (err == map[i].err) {
- return map[i].status;
- }
- }
-
- return NT_STATUS_INTERNAL_ERROR;
-}
-
-
-/*********************************************************************
- * the following is a generic validation mechanism for tdbs.
- *********************************************************************/
-
-/*
- * internal validation function, executed by the child.
- */
-static int tdb_validate_child(const char *tdb_path,
- tdb_validate_data_func validate_fn,
- int pfd)
-{
- int ret = -1;
- int num_entries = 0;
- TDB_CONTEXT *tdb = NULL;
- struct tdb_validation_status v_status;
-
- v_status.tdb_error = False;
- v_status.bad_freelist = False;
- v_status.bad_entry = False;
- v_status.unknown_key = False;
- v_status.success = True;
-
- tdb = tdb_open_log(tdb_path, 0, TDB_DEFAULT, O_RDONLY, 0);
- if (!tdb) {
- v_status.tdb_error = True;
- v_status.success = False;
- goto out;
- }
-
- /* Check the cache freelist is good. */
- if (tdb_validate_freelist(tdb, &num_entries) == -1) {
- DEBUG(0,("tdb_validate_child: bad freelist in cache %s\n",
- tdb_path));
- v_status.bad_freelist = True;
- v_status.success = False;
- goto out;
- }
-
- DEBUG(10,("tdb_validate_child: cache %s freelist has %d entries\n",
- tdb_path, num_entries));
-
- /* Now traverse the cache to validate it. */
- num_entries = tdb_traverse(tdb, validate_fn, (void *)&v_status);
- if (num_entries == -1 || !(v_status.success)) {
- DEBUG(0,("tdb_validate_child: cache %s traverse failed\n",
- tdb_path));
- if (!(v_status.success)) {
- if (v_status.bad_entry) {
- DEBUGADD(0, (" -> bad entry found\n"));
- }
- if (v_status.unknown_key) {
- DEBUGADD(0, (" -> unknown key encountered\n"));
- }
- }
- goto out;
- }
-
- DEBUG(10,("tdb_validate_child: cache %s is good "
- "with %d entries\n", tdb_path, num_entries));
- ret = 0; /* Cache is good. */
-
-out:
- if (tdb) {
- tdb_close(tdb);
- }
-
- DEBUG(10, ("tdb_validate_child: writing status to pipe\n"));
- write (pfd, (const char *)&v_status, sizeof(v_status));
- close(pfd);
-
- return ret;
-}
-
-int tdb_validate(const char *tdb_path, tdb_validate_data_func validate_fn)
-{
- pid_t child_pid = -1;
- int child_status = 0;
- int wait_pid = 0;
- int ret = -1;
- int pipe_fds[2];
- struct tdb_validation_status v_status;
- int bytes_read = 0;
-
- /* fork and let the child do the validation.
- * benefit: no need to twist signal handlers and panic functions.
- * just let the child panic. we catch the signal.
- * communicate the extended status struct over a pipe. */
-
- if (pipe(pipe_fds) != 0) {
- DEBUG(0, ("tdb_validate: unable to create pipe, "
- "error %s", strerror(errno)));
- smb_panic("winbind_validate_cache: unable to create pipe.");
- }
-
- DEBUG(10, ("tdb_validate: forking to let child do validation.\n"));
- child_pid = sys_fork();
- if (child_pid == 0) {
- DEBUG(10, ("tdb_validate (validation child): created\n"));
- close(pipe_fds[0]); /* close reading fd */
- DEBUG(10, ("tdb_validate (validation child): "
- "calling tdb_validate_child\n"));
- exit(tdb_validate_child(tdb_path, validate_fn, pipe_fds[1]));
- }
- else if (child_pid < 0) {
- smb_panic("tdb_validate: fork for validation failed.");
- }
-
- /* parent */
-
- DEBUG(10, ("tdb_validate: fork succeeded, child PID = %d\n",
- child_pid));
- close(pipe_fds[1]); /* close writing fd */
-
- v_status.success = True;
- v_status.bad_entry = False;
- v_status.unknown_key = False;
-
- DEBUG(10, ("tdb_validate: reading from pipe.\n"));
- bytes_read = read(pipe_fds[0], (void *)&v_status, sizeof(v_status));
- close(pipe_fds[0]);
-
- if (bytes_read != sizeof(v_status)) {
- DEBUG(10, ("tdb_validate: read %d bytes from pipe "
- "but expected %d", bytes_read, (int)sizeof(v_status)));
- DEBUGADD(10, (" -> assuming child crashed\n"));
- v_status.success = False;
- }
- else {
- DEBUG(10, ("tdb_validate: read status from child\n"));
- DEBUGADD(10, (" * tdb error: %s\n", v_status.tdb_error ? "yes" : "no"));
- DEBUGADD(10, (" * bad freelist: %s\n", v_status.bad_freelist ? "yes" : "no"));
- DEBUGADD(10, (" * bad entry: %s\n", v_status.bad_entry ? "yes" : "no"));
- DEBUGADD(10, (" * unknown key: %s\n", v_status.unknown_key ? "yes" : "no"));
- DEBUGADD(10, (" => overall success: %s\n", v_status.success ? "yes" : "no"));
- }
-
- DEBUG(10, ("tdb_validate: waiting for child to finish...\n"));
- while ((wait_pid = sys_waitpid(child_pid, &child_status, 0)) < 0) {
- if (errno == EINTR) {
- DEBUG(10, ("tdb_validate: got signal during "
- "waitpid, retrying\n"));
- errno = 0;
- continue;
- }
- DEBUG(0, ("tdb_validate: waitpid failed with "
- "errno %s\n", strerror(errno)));
- smb_panic("tdb_validate: waitpid failed.");
- }
- if (wait_pid != child_pid) {
- DEBUG(0, ("tdb_validate: waitpid returned pid %d, "
- "but %d was expexted\n", wait_pid, child_pid));
- smb_panic("tdb_validate: waitpid returned "
- "unexpected PID.");
- }
-
- DEBUG(10, ("tdb_validate: validating child returned.\n"));
- if (WIFEXITED(child_status)) {
- DEBUG(10, ("tdb_validate: child exited, code %d.\n",
- WEXITSTATUS(child_status)));
- ret = WEXITSTATUS(child_status);
- }
- if (WIFSIGNALED(child_status)) {
- DEBUG(10, ("tdb_validate: child terminated "
- "by signal %d\n", WTERMSIG(child_status)));
-#ifdef WCOREDUMP
- if (WCOREDUMP(child_status)) {
- DEBUGADD(10, ("core dumped\n"));
- }
-#endif
- ret = WTERMSIG(child_status);
- }
- if (WIFSTOPPED(child_status)) {
- DEBUG(10, ("tdb_validate: child was stopped "
- "by signal %d\n",
- WSTOPSIG(child_status)));
- ret = WSTOPSIG(child_status);
- }
-
- return ret;
-}
diff --git a/source/libads/ads_status.c b/source/libads/ads_status.c
index 48c03a6a14e..017d38c6001 100644
--- a/source/libads/ads_status.c
+++ b/source/libads/ads_status.c
@@ -85,10 +85,6 @@ NTSTATUS ads_ntstatus(ADS_STATUS status)
case ENUM_ADS_ERROR_KRB5:
return krb5_to_nt_status(status.err.rc);
#endif
-#ifdef HAVE_GSSAPI
- case ENUM_ADS_ERROR_GSS:
- return map_nt_error_from_gss(status.err.rc, status.minor_status);
-#endif
default:
break;
}
@@ -145,14 +141,7 @@ const char *ads_errstr(ADS_STATUS status)
default:
return "Unknown ADS error type!? (not compiled in?)";
}
-}
-#ifdef HAVE_GSSAPI
-NTSTATUS gss_err_to_ntstatus(uint32 maj, uint32 min)
-{
- ADS_STATUS adss = ADS_ERROR_GSS(maj, min);
- DEBUG(10,("gss_err_to_ntstatus: Error %s\n",
- ads_errstr(adss) ));
- return ads_ntstatus(adss);
}
-#endif
+
+
diff --git a/source/libads/authdata.c b/source/libads/authdata.c
index 9dfb9cba096..8e951dde805 100644
--- a/source/libads/authdata.c
+++ b/source/libads/authdata.c
@@ -451,11 +451,10 @@ static BOOL pac_io_pac_signature_data(const char *desc,
PAC_SIGNATURE_DATA *data, uint32 length,
prs_struct *ps, int depth)
{
- uint32 siglen = 0;
-
+ uint32 siglen = length - sizeof(uint32);
prs_debug(ps, depth, desc, "pac_io_pac_signature_data");
depth++;
-
+
if (data == NULL)
return False;
@@ -464,9 +463,6 @@ static BOOL pac_io_pac_signature_data(const char *desc,
if (!prs_uint32("type", ps, depth, &data->type))
return False;
- if ( length > sizeof(uint32) )
- siglen = length - sizeof(uint32);
-
if (UNMARSHALLING(ps) && length) {
if (siglen) {
data->signature.buffer = PRS_ALLOC_MEM(ps, uint8, siglen);
diff --git a/source/libads/cldap.c b/source/libads/cldap.c
index 227bbc2a0aa..3cb98c59c58 100644
--- a/source/libads/cldap.c
+++ b/source/libads/cldap.c
@@ -187,10 +187,10 @@ static int recv_cldap_netlogon(int sock, struct cldap_netlogon_reply *reply)
{
int ret;
ASN1_DATA data;
- DATA_BLOB blob = data_blob_null;
- DATA_BLOB os1 = data_blob_null;
- DATA_BLOB os2 = data_blob_null;
- DATA_BLOB os3 = data_blob_null;
+ DATA_BLOB blob = data_blob(NULL, 0);
+ DATA_BLOB os1 = data_blob(NULL, 0);
+ DATA_BLOB os2 = data_blob(NULL, 0);
+ DATA_BLOB os3 = data_blob(NULL, 0);
int i1;
/* half the time of a regular ldap timeout, not less than 3 seconds. */
unsigned int al_secs = MAX(3,lp_ldap_timeout()/2);
diff --git a/source/libads/disp_sec.c b/source/libads/disp_sec.c
index 1e62eb85517..f0f1765b237 100644
--- a/source/libads/disp_sec.c
+++ b/source/libads/disp_sec.c
@@ -46,9 +46,6 @@ static struct perm_mask_str {
{SEC_RIGHTS_CHANGE_PASSWD, "[Change Password]"},
{SEC_RIGHTS_RESET_PASSWD, "[Reset Password]"},
-
- {SEC_RIGHTS_APPLY_GROUP_POLICY, "[Apply Group Policy]"},
-
{0, 0}
};
@@ -69,7 +66,7 @@ static void ads_disp_perms(uint32 type)
if (type & (1 << i)) {
for (j = 1; perms[j].str; j ++) {
if (perms[j].mask == (((unsigned) 1) << i)) {
- printf("\n\t%s (0x%08x)", perms[j].str, perms[j].mask);
+ printf("\n\t%s", perms[j].str);
}
}
type &= ~(1 << i);
@@ -100,7 +97,7 @@ static void ads_disp_ace(SEC_ACE *sec_ace)
sec_ace->flags,
sec_ace->size,
sec_ace->access_mask,
- sec_ace->object.object.flags);
+ sec_ace->obj_flags);
}
if (sec_ace->type == SEC_ACE_TYPE_ACCESS_ALLOWED) {
diff --git a/source/libads/dns.c b/source/libads/dns.c
index c0d8d61e362..bf51625797a 100644
--- a/source/libads/dns.c
+++ b/source/libads/dns.c
@@ -270,76 +270,45 @@ static int dnssrvcmp( struct dns_rr_srv *a, struct dns_rr_srv *b )
Simple wrapper for a DNS query
*********************************************************************/
-#define DNS_FAILED_WAITTIME 30
-
static NTSTATUS dns_send_req( TALLOC_CTX *ctx, const char *name, int q_type,
uint8 **buf, int *resp_length )
{
uint8 *buffer = NULL;
size_t buf_len;
int resp_len = NS_PACKETSZ;
- static time_t last_dns_check = 0;
- static NTSTATUS last_dns_status = NT_STATUS_OK;
- time_t now = time(NULL);
-
- /* Try to prevent bursts of DNS lookups if the server is down */
-
- /* Protect against large clock changes */
-
- if ( last_dns_check > now )
- last_dns_check = 0;
-
- /* IF we had a DNS timeout or a bad server and we are still
- in the 30 second cache window, just return the previous
- status and save the network timeout. */
-
- if ( (NT_STATUS_EQUAL(last_dns_status,NT_STATUS_IO_TIMEOUT) ||
- NT_STATUS_EQUAL(last_dns_status,NT_STATUS_CONNECTION_REFUSED)) &&
- (last_dns_check+DNS_FAILED_WAITTIME) > now )
- {
- DEBUG(10,("last_dns_check: Returning cached status (%s)\n",
- nt_errstr(last_dns_status) ));
- return last_dns_status;
- }
-
- /* Send the Query */
+
do {
if ( buffer )
TALLOC_FREE( buffer );
buf_len = resp_len * sizeof(uint8);
- if (buf_len) {
+ if (buf_len) {
if ( (buffer = TALLOC_ARRAY(ctx, uint8, buf_len)) == NULL ) {
DEBUG(0,("ads_dns_lookup_srv: talloc() failed!\n"));
- last_dns_status = NT_STATUS_NO_MEMORY;
- last_dns_check = time(NULL);
- return last_dns_status;
+ return NT_STATUS_NO_MEMORY;
}
+ } else {
+ buffer = NULL;
}
if ( (resp_len = res_query(name, C_IN, q_type, buffer, buf_len)) < 0 ) {
DEBUG(3,("ads_dns_lookup_srv: Failed to resolve %s (%s)\n", name, strerror(errno)));
TALLOC_FREE( buffer );
- last_dns_status = NT_STATUS_UNSUCCESSFUL;
-
if (errno == ETIMEDOUT) {
- last_dns_status = NT_STATUS_IO_TIMEOUT;
+ return NT_STATUS_IO_TIMEOUT;
}
if (errno == ECONNREFUSED) {
- last_dns_status = NT_STATUS_CONNECTION_REFUSED;
+ return NT_STATUS_CONNECTION_REFUSED;
}
- last_dns_check = time(NULL);
- return last_dns_status;
+ return NT_STATUS_UNSUCCESSFUL;
}
} while ( buf_len < resp_len && resp_len < MAX_DNS_PACKET_SIZE );
*buf = buffer;
*resp_length = resp_len;
- last_dns_check = time(NULL);
- last_dns_status = NT_STATUS_OK;
- return last_dns_status;
+ return NT_STATUS_OK;
}
/*********************************************************************
diff --git a/source/libads/kerberos.c b/source/libads/kerberos.c
index 841674bea57..c74c98dd977 100644
--- a/source/libads/kerberos.c
+++ b/source/libads/kerberos.c
@@ -55,127 +55,6 @@ kerb_prompter(krb5_context ctx, void *data,
return 0;
}
-static BOOL smb_krb5_err_io_nstatus(TALLOC_CTX *mem_ctx,
- DATA_BLOB *edata_blob,
- KRB5_EDATA_NTSTATUS *edata)
-{
- BOOL ret = False;
- prs_struct ps;
-
- if (!mem_ctx || !edata_blob || !edata)
- return False;
-
- if (!prs_init(&ps, edata_blob->length, mem_ctx, UNMARSHALL))
- return False;
-
- if (!prs_copy_data_in(&ps, (char *)edata_blob->data, edata_blob->length))
- goto out;
-
- prs_set_offset(&ps, 0);
-
- if (!prs_ntstatus("ntstatus", &ps, 1, &edata->ntstatus))
- goto out;
-
- if (!prs_uint32("unknown1", &ps, 1, &edata->unknown1))
- goto out;
-
- if (!prs_uint32("unknown2", &ps, 1, &edata->unknown2)) /* only seen 00000001 here */
- goto out;
-
- ret = True;
- out:
- prs_mem_free(&ps);
-
- return ret;
-}
-
- static BOOL smb_krb5_get_ntstatus_from_krb5_error(krb5_error *error,
- NTSTATUS *nt_status)
-{
- DATA_BLOB edata;
- DATA_BLOB unwrapped_edata;
- TALLOC_CTX *mem_ctx;
- KRB5_EDATA_NTSTATUS parsed_edata;
-
-#ifdef HAVE_E_DATA_POINTER_IN_KRB5_ERROR
- edata = data_blob(error->e_data->data, error->e_data->length);
-#else
- edata = data_blob(error->e_data.data, error->e_data.length);
-#endif /* HAVE_E_DATA_POINTER_IN_KRB5_ERROR */
-
-#ifdef DEVELOPER
- dump_data(10, edata.data, edata.length);
-#endif /* DEVELOPER */
-
- mem_ctx = talloc_init("smb_krb5_get_ntstatus_from_krb5_error");
- if (mem_ctx == NULL) {
- data_blob_free(&edata);
- return False;
- }
-
- if (!unwrap_edata_ntstatus(mem_ctx, &edata, &unwrapped_edata)) {
- data_blob_free(&edata);
- TALLOC_FREE(mem_ctx);
- return False;
- }
-
- data_blob_free(&edata);
-
- if (!smb_krb5_err_io_nstatus(mem_ctx, &unwrapped_edata, &parsed_edata)) {
- data_blob_free(&unwrapped_edata);
- TALLOC_FREE(mem_ctx);
- return False;
- }
-
- data_blob_free(&unwrapped_edata);
-
- if (nt_status) {
- *nt_status = parsed_edata.ntstatus;
- }
-
- TALLOC_FREE(mem_ctx);
-
- return True;
-}
-
- static BOOL smb_krb5_get_ntstatus_from_krb5_error_init_creds_opt(krb5_context ctx,
- krb5_get_init_creds_opt *opt,
- NTSTATUS *nt_status)
-{
- BOOL ret = False;
- krb5_error *error = NULL;
-
-#ifdef HAVE_KRB5_GET_INIT_CREDS_OPT_GET_ERROR
- ret = krb5_get_init_creds_opt_get_error(ctx, opt, &error);
- if (ret) {
- DEBUG(1,("krb5_get_init_creds_opt_get_error gave: %s\n",
- error_message(ret)));
- return False;
- }
-#endif /* HAVE_KRB5_GET_INIT_CREDS_OPT_GET_ERROR */
-
- if (!error) {
- DEBUG(1,("no krb5_error\n"));
- return False;
- }
-
-#ifdef HAVE_E_DATA_POINTER_IN_KRB5_ERROR
- if (!error->e_data) {
-#else
- if (error->e_data.data == NULL) {
-#endif /* HAVE_E_DATA_POINTER_IN_KRB5_ERROR */
- DEBUG(1,("no edata in krb5_error\n"));
- krb5_free_error(ctx, error);
- return False;
- }
-
- ret = smb_krb5_get_ntstatus_from_krb5_error(error, nt_status);
-
- krb5_free_error(ctx, error);
-
- return ret;
-}
-
/*
simulate a kinit, putting the tgt in the given cache location. If cache_name == NULL
place in default cache location.
@@ -189,22 +68,19 @@ int kerberos_kinit_password_ext(const char *principal,
const char *cache_name,
BOOL request_pac,
BOOL add_netbios_addr,
- time_t renewable_time,
- NTSTATUS *ntstatus)
+ time_t renewable_time)
{
krb5_context ctx = NULL;
krb5_error_code code = 0;
krb5_ccache cc = NULL;
- krb5_principal me = NULL;
+ krb5_principal me;
krb5_creds my_creds;
krb5_get_init_creds_opt *opt = NULL;
smb_krb5_addresses *addr = NULL;
- ZERO_STRUCT(my_creds);
-
initialize_krb5_error_table();
if ((code = krb5_init_context(&ctx)))
- goto out;
+ return code;
if (time_offset != 0) {
krb5_set_real_time(ctx, time(NULL) + time_offset, 0);
@@ -215,15 +91,21 @@ int kerberos_kinit_password_ext(const char *principal,
getenv("KRB5_CONFIG")));
if ((code = krb5_cc_resolve(ctx, cache_name ? cache_name : krb5_cc_default_name(ctx), &cc))) {
- goto out;
+ krb5_free_context(ctx);
+ return code;
}
if ((code = smb_krb5_parse_name(ctx, principal, &me))) {
- goto out;
+ krb5_cc_close(ctx, cc);
+ krb5_free_context(ctx);
+ return code;
}
- if ((code = smb_krb5_get_init_creds_opt_alloc(ctx, &opt))) {
- goto out;
+ code = smb_krb5_get_init_creds_opt_alloc(ctx, &opt);
+ if (code) {
+ krb5_cc_close(ctx, cc);
+ krb5_free_context(ctx);
+ return code;
}
krb5_get_init_creds_opt_set_renew_life(opt, renewable_time);
@@ -235,30 +117,56 @@ int kerberos_kinit_password_ext(const char *principal,
#ifdef HAVE_KRB5_GET_INIT_CREDS_OPT_SET_PAC_REQUEST
if (request_pac) {
- if ((code = krb5_get_init_creds_opt_set_pac_request(ctx, opt, (krb5_boolean)request_pac))) {
- goto out;
+ code = krb5_get_init_creds_opt_set_pac_request(ctx, opt, (krb5_boolean)request_pac);
+ if (code) {
+ krb5_cc_close(ctx, cc);
+ krb5_free_principal(ctx, me);
+ krb5_free_context(ctx);
+ return code;
}
}
#endif
if (add_netbios_addr) {
- if ((code = smb_krb5_gen_netbios_krb5_address(&addr))) {
- goto out;
+ code = smb_krb5_gen_netbios_krb5_address(&addr);
+ if (code) {
+ krb5_cc_close(ctx, cc);
+ krb5_free_principal(ctx, me);
+ krb5_free_context(ctx);
+ return code;
}
krb5_get_init_creds_opt_set_address_list(opt, addr->addrs);
}
if ((code = krb5_get_init_creds_password(ctx, &my_creds, me, CONST_DISCARD(char *,password),
kerb_prompter, CONST_DISCARD(char *,password),
- 0, NULL, opt))) {
- goto out;
+ 0, NULL, opt)))
+ {
+ smb_krb5_get_init_creds_opt_free(ctx, opt);
+ smb_krb5_free_addresses(ctx, addr);
+ krb5_cc_close(ctx, cc);
+ krb5_free_principal(ctx, me);
+ krb5_free_context(ctx);
+ return code;
}
+ smb_krb5_get_init_creds_opt_free(ctx, opt);
+
if ((code = krb5_cc_initialize(ctx, cc, me))) {
- goto out;
+ smb_krb5_free_addresses(ctx, addr);
+ krb5_free_cred_contents(ctx, &my_creds);
+ krb5_cc_close(ctx, cc);
+ krb5_free_principal(ctx, me);
+ krb5_free_context(ctx);
+ return code;
}
if ((code = krb5_cc_store_cred(ctx, cc, &my_creds))) {
- goto out;
+ krb5_cc_close(ctx, cc);
+ smb_krb5_free_addresses(ctx, addr);
+ krb5_free_cred_contents(ctx, &my_creds);
+ krb5_free_principal(ctx, me);
+ krb5_free_context(ctx);
+ return code;
}
if (expire_time) {
@@ -268,47 +176,14 @@ int kerberos_kinit_password_ext(const char *principal,
if (renew_till_time) {
*renew_till_time = (time_t) my_creds.times.renew_till;
}
- out:
- if (ntstatus) {
-
- NTSTATUS status;
-
- /* fast path */
- if (code == 0) {
- *ntstatus = NT_STATUS_OK;
- goto cleanup;
- }
-
- /* try to get ntstatus code out of krb5_error when we have it
- * inside the krb5_get_init_creds_opt - gd */
-
- if (opt && smb_krb5_get_ntstatus_from_krb5_error_init_creds_opt(ctx, opt, &status)) {
- *ntstatus = status;
- goto cleanup;
- }
-
- /* fall back to self-made-mapping */
- *ntstatus = krb5_to_nt_status(code);
- }
- cleanup:
+ krb5_cc_close(ctx, cc);
+ smb_krb5_free_addresses(ctx, addr);
krb5_free_cred_contents(ctx, &my_creds);
- if (me) {
- krb5_free_principal(ctx, me);
- }
- if (addr) {
- smb_krb5_free_addresses(ctx, addr);
- }
- if (opt) {
- smb_krb5_get_init_creds_opt_free(ctx, opt);
- }
- if (cc) {
- krb5_cc_close(ctx, cc);
- }
- if (ctx) {
- krb5_free_context(ctx);
- }
- return code;
+ krb5_free_principal(ctx, me);
+ krb5_free_context(ctx);
+
+ return 0;
}
@@ -346,8 +221,7 @@ int ads_kinit_password(ADS_STRUCT *ads)
}
ret = kerberos_kinit_password_ext(s, ads->auth.password, ads->auth.time_offset,
- &ads->auth.tgt_expire, NULL, NULL, False, False, ads->auth.renewable,
- NULL);
+ &ads->auth.tgt_expire, NULL, NULL, False, False, ads->auth.renewable);
if (ret) {
DEBUG(0,("kerberos_kinit_password %s failed: %s\n",
@@ -606,8 +480,7 @@ int kerberos_kinit_password(const char *principal,
cache_name,
False,
False,
- 0,
- NULL);
+ 0);
}
/************************************************************************
@@ -617,9 +490,11 @@ int kerberos_kinit_password(const char *principal,
static char *get_kdc_ip_string(char *mem_ctx, const char *realm, const char *sitename, struct in_addr primary_ip)
{
- struct ip_service *ip_srv_site;
+ int i;
+ struct ip_service *ip_srv_site = NULL;
struct ip_service *ip_srv_nonsite;
- int count_site, count_nonsite, i;
+ int count_site = 0;
+ int count_nonsite;
char *kdc_str = talloc_asprintf(mem_ctx, "\tkdc = %s\n",
inet_ntoa(primary_ip));
diff --git a/source/libads/kerberos_keytab.c b/source/libads/kerberos_keytab.c
index 46d00ba8c47..0ad225fbebb 100644
--- a/source/libads/kerberos_keytab.c
+++ b/source/libads/kerberos_keytab.c
@@ -30,6 +30,12 @@
#ifdef HAVE_KRB5
+/* This MAX_NAME_LEN is a constant defined in krb5.h */
+#ifndef MAX_KEYTAB_NAME_LEN
+#define MAX_KEYTAB_NAME_LEN 1100
+#endif
+
+
/**********************************************************************
**********************************************************************/
@@ -225,6 +231,7 @@ int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc)
char *princ_s = NULL, *short_princ_s = NULL;
char *password_s = NULL;
char *my_fqdn;
+ char keytab_name[MAX_KEYTAB_NAME_LEN];
TALLOC_CTX *ctx = NULL;
char *machine_name;
@@ -238,10 +245,22 @@ int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc)
DEBUG(1,("ads_keytab_add_entry: could not krb5_init_context: %s\n",error_message(ret)));
return -1;
}
-
- ret = smb_krb5_open_keytab(context, NULL, True, &keytab);
+
+#ifdef HAVE_WRFILE_KEYTAB /* MIT */
+ keytab_name[0] = 'W';
+ keytab_name[1] = 'R';
+ ret = krb5_kt_default_name(context, (char *) &keytab_name[2], MAX_KEYTAB_NAME_LEN - 4);
+#else /* Heimdal */
+ ret = krb5_kt_default_name(context, (char *) &keytab_name[0], MAX_KEYTAB_NAME_LEN - 2);
+#endif
if (ret) {
- DEBUG(1,("ads_keytab_add_entry: smb_krb5_open_keytab failed (%s)\n", error_message(ret)));
+ DEBUG(1,("ads_keytab_add_entry: krb5_kt_default_name failed (%s)\n", error_message(ret)));
+ goto out;
+ }
+ DEBUG(2,("ads_keytab_add_entry: Using default system keytab: %s\n", (char *) &keytab_name));
+ ret = krb5_kt_resolve(context, (char *) &keytab_name, &keytab);
+ if (ret) {
+ DEBUG(1,("ads_keytab_add_entry: krb5_kt_resolve failed (%s)\n", error_message(ret)));
goto out;
}
@@ -364,6 +383,7 @@ int ads_keytab_flush(ADS_STRUCT *ads)
krb5_kt_cursor cursor;
krb5_keytab_entry kt_entry;
krb5_kvno kvno;
+ char keytab_name[MAX_KEYTAB_NAME_LEN];
ZERO_STRUCT(kt_entry);
ZERO_STRUCT(cursor);
@@ -374,10 +394,21 @@ int ads_keytab_flush(ADS_STRUCT *ads)
DEBUG(1,("ads_keytab_flush: could not krb5_init_context: %s\n",error_message(ret)));
return ret;
}
-
- ret = smb_krb5_open_keytab(context, NULL, True, &keytab);
+#ifdef HAVE_WRFILE_KEYTAB
+ keytab_name[0] = 'W';
+ keytab_name[1] = 'R';
+ ret = krb5_kt_default_name(context, (char *) &keytab_name[2], MAX_KEYTAB_NAME_LEN - 4);
+#else
+ ret = krb5_kt_default_name(context, (char *) &keytab_name[0], MAX_KEYTAB_NAME_LEN - 2);
+#endif
if (ret) {
- DEBUG(1,("ads_keytab_flush: smb_krb5_open_keytab failed (%s)\n", error_message(ret)));
+ DEBUG(1,("ads_keytab_flush: krb5_kt_default failed (%s)\n", error_message(ret)));
+ goto out;
+ }
+ DEBUG(3,("ads_keytab_flush: Using default keytab: %s\n", (char *) &keytab_name));
+ ret = krb5_kt_resolve(context, (char *) &keytab_name, &keytab);
+ if (ret) {
+ DEBUG(1,("ads_keytab_flush: krb5_kt_resolve failed (%s)\n", error_message(ret)));
goto out;
}
@@ -546,10 +577,9 @@ int ads_keytab_create_default(ADS_STRUCT *ads)
DEBUG(1,("ads_keytab_create_default: could not krb5_init_context: %s\n",error_message(ret)));
return ret;
}
-
- ret = smb_krb5_open_keytab(context, NULL, True, &keytab);
+ ret = krb5_kt_default(context, &keytab);
if (ret) {
- DEBUG(1,("ads_keytab_create_default: smb_krb5_open_keytab failed (%s)\n", error_message(ret)));
+ DEBUG(1,("ads_keytab_create_default: krb5_kt_default failed (%s)\n",error_message(ret)));
goto done;
}
@@ -661,104 +691,4 @@ done:
}
return ret;
}
-
-/**********************************************************************
- List system keytab.
-***********************************************************************/
-
-int ads_keytab_list(const char *keytab_name)
-{
- krb5_error_code ret = 0;
- krb5_context context = NULL;
- krb5_keytab keytab = NULL;
- krb5_kt_cursor cursor;
- krb5_keytab_entry kt_entry;
-
- ZERO_STRUCT(kt_entry);
- ZERO_STRUCT(cursor);
-
- initialize_krb5_error_table();
- ret = krb5_init_context(&context);
- if (ret) {
- DEBUG(1,("ads_keytab_list: could not krb5_init_context: %s\n",error_message(ret)));
- return ret;
- }
-
- ret = smb_krb5_open_keytab(context, keytab_name, False, &keytab);
- if (ret) {
- DEBUG(1,("ads_keytab_list: smb_krb5_open_keytab failed (%s)\n", error_message(ret)));
- goto out;
- }
-
- ret = krb5_kt_start_seq_get(context, keytab, &cursor);
- if (ret) {
- goto out;
- }
-
- printf("Vno Type Principal\n");
-
- while (krb5_kt_next_entry(context, keytab, &kt_entry, &cursor) == 0) {
-
- char *princ_s = NULL;
- char *etype_s = NULL;
- krb5_enctype enctype = 0;
-
- ret = smb_krb5_unparse_name(context, kt_entry.principal, &princ_s);
- if (ret) {
- goto out;
- }
-
- enctype = smb_get_enctype_from_kt_entry(&kt_entry);
-
- ret = smb_krb5_enctype_to_string(context, enctype, &etype_s);
- if (ret) {
- SAFE_FREE(princ_s);
- goto out;
- }
-
- printf("%3d %s\t\t %s\n", kt_entry.vno, etype_s, princ_s);
-
- SAFE_FREE(princ_s);
- SAFE_FREE(etype_s);
-
- ret = smb_krb5_kt_free_entry(context, &kt_entry);
- if (ret) {
- goto out;
- }
- }
-
- ret = krb5_kt_end_seq_get(context, keytab, &cursor);
- if (ret) {
- goto out;
- }
-
- /* Ensure we don't double free. */
- ZERO_STRUCT(kt_entry);
- ZERO_STRUCT(cursor);
-out:
-
- {
- krb5_keytab_entry zero_kt_entry;
- ZERO_STRUCT(zero_kt_entry);
- if (memcmp(&zero_kt_entry, &kt_entry, sizeof(krb5_keytab_entry))) {
- smb_krb5_kt_free_entry(context, &kt_entry);
- }
- }
- {
- krb5_kt_cursor zero_csr;
- ZERO_STRUCT(zero_csr);
- if ((memcmp(&cursor, &zero_csr, sizeof(krb5_kt_cursor)) != 0) && keytab) {
- krb5_kt_end_seq_get(context, keytab, &cursor);
- }
- }
-
- if (keytab) {
- krb5_kt_close(context, keytab);
- }
- if (context) {
- krb5_free_context(context);
- }
- return ret;
-}
-
#endif /* HAVE_KRB5 */
diff --git a/source/libads/kerberos_verify.c b/source/libads/kerberos_verify.c
index 2eb5d660929..0ec03ef4bf2 100644
--- a/source/libads/kerberos_verify.c
+++ b/source/libads/kerberos_verify.c
@@ -81,9 +81,9 @@ static BOOL ads_keytab_verify_ticket(krb5_context context,
ZERO_STRUCT(kt_entry);
ZERO_STRUCT(kt_cursor);
- ret = smb_krb5_open_keytab(context, NULL, False, &keytab);
+ ret = krb5_kt_default(context, &keytab);
if (ret) {
- DEBUG(1, ("ads_keytab_verify_ticket: smb_krb5_open_keytab failed (%s)\n", error_message(ret)));
+ DEBUG(1, ("ads_keytab_verify_ticket: krb5_kt_default failed (%s)\n", error_message(ret)));
goto out;
}
@@ -214,14 +214,7 @@ static krb5_error_code ads_secrets_verify_ticket(krb5_context context,
BOOL auth_ok = False;
char *password_s = NULL;
krb5_data password;
- krb5_enctype enctypes[] = {
-#if defined(ENCTYPE_ARCFOUR_HMAC)
- ENCTYPE_ARCFOUR_HMAC,
-#endif
- ENCTYPE_DES_CBC_CRC,
- ENCTYPE_DES_CBC_MD5,
- ENCTYPE_NULL
- };
+ krb5_enctype enctypes[4] = { ENCTYPE_DES_CBC_CRC, ENCTYPE_DES_CBC_MD5, 0, 0 };
krb5_data packet;
int i;
@@ -229,6 +222,9 @@ static krb5_error_code ads_secrets_verify_ticket(krb5_context context,
*keyblock = NULL;
*perr = 0;
+#if defined(ENCTYPE_ARCFOUR_HMAC)
+ enctypes[2] = ENCTYPE_ARCFOUR_HMAC;
+#endif
if (!secrets_init()) {
DEBUG(1,("ads_secrets_verify_ticket: secrets_init failed\n"));
@@ -311,8 +307,7 @@ NTSTATUS ads_verify_ticket(TALLOC_CTX *mem_ctx,
char **principal,
PAC_DATA **pac_data,
DATA_BLOB *ap_rep,
- DATA_BLOB *session_key,
- BOOL use_replay_cache)
+ DATA_BLOB *session_key)
{
NTSTATUS sret = NT_STATUS_LOGON_FAILURE;
NTSTATUS pac_ret;
@@ -325,7 +320,7 @@ NTSTATUS ads_verify_ticket(TALLOC_CTX *mem_ctx,
krb5_keyblock *keyblock = NULL;
time_t authtime;
krb5_error_code ret = 0;
- int flags = 0;
+
krb5_principal host_princ = NULL;
krb5_const_principal client_principal = NULL;
char *host_princ_s = NULL;
@@ -338,8 +333,8 @@ NTSTATUS ads_verify_ticket(TALLOC_CTX *mem_ctx,
*principal = NULL;
*pac_data = NULL;
- *ap_rep = data_blob_null;
- *session_key = data_blob_null;
+ *ap_rep = data_blob(NULL,0);
+ *session_key = data_blob(NULL,0);
initialize_krb5_error_table();
ret = krb5_init_context(&context);
@@ -368,13 +363,6 @@ NTSTATUS ads_verify_ticket(TALLOC_CTX *mem_ctx,
goto out;
}
- krb5_auth_con_getflags( context, auth_context, &flags );
- if ( !use_replay_cache ) {
- /* Disable default use of a replay cache */
- flags &= ~KRB5_AUTH_CONTEXT_DO_TIME;
- krb5_auth_con_setflags( context, auth_context, flags );
- }
-
asprintf(&host_princ_s, "%s$", global_myname());
if (!host_princ_s) {
goto out;
@@ -389,62 +377,50 @@ NTSTATUS ads_verify_ticket(TALLOC_CTX *mem_ctx,
}
- if ( use_replay_cache ) {
-
- /* Lock a mutex surrounding the replay as there is no
- locking in the MIT krb5 code surrounding the replay
- cache... */
+ /* Lock a mutex surrounding the replay as there is no locking in the MIT krb5
+ * code surrounding the replay cache... */
- if (!grab_server_mutex("replay cache mutex")) {
- DEBUG(1,("ads_verify_ticket: unable to protect "
- "replay cache with mutex.\n"));
- ret = KRB5_CC_IO;
- goto out;
- }
+ if (!grab_server_mutex("replay cache mutex")) {
+ DEBUG(1,("ads_verify_ticket: unable to protect replay cache with mutex.\n"));
+ ret = KRB5_CC_IO;
+ goto out;
+ }
- got_replay_mutex = True;
+ got_replay_mutex = True;
- /* JRA. We must set the rcache here. This will prevent
- replay attacks. */
-
- ret = krb5_get_server_rcache(context,
- krb5_princ_component(context, host_princ, 0),
- &rcache);
- if (ret) {
- DEBUG(1,("ads_verify_ticket: krb5_get_server_rcache "
- "failed (%s)\n", error_message(ret)));
- goto out;
- }
+ /*
+ * JRA. We must set the rcache here. This will prevent replay attacks.
+ */
- ret = krb5_auth_con_setrcache(context, auth_context, rcache);
- if (ret) {
- DEBUG(1,("ads_verify_ticket: krb5_auth_con_setrcache "
- "failed (%s)\n", error_message(ret)));
- goto out;
- }
+ ret = krb5_get_server_rcache(context, krb5_princ_component(context, host_princ, 0), &rcache);
+ if (ret) {
+ DEBUG(1,("ads_verify_ticket: krb5_get_server_rcache failed (%s)\n", error_message(ret)));
+ goto out;
}
- /* Try secrets.tdb first and fallback to the krb5.keytab if
- necessary */
-
- auth_ok = ads_secrets_verify_ticket(context, auth_context, host_princ,
- ticket, &tkt, &keyblock, &ret);
+ ret = krb5_auth_con_setrcache(context, auth_context, rcache);
+ if (ret) {
+ DEBUG(1,("ads_verify_ticket: krb5_auth_con_setrcache failed (%s)\n", error_message(ret)));
+ goto out;
+ }
- if (!auth_ok && lp_use_kerberos_keytab()) {
- auth_ok = ads_keytab_verify_ticket(context, auth_context,
- ticket, &tkt, &keyblock, &ret);
+ if (lp_use_kerberos_keytab()) {
+ auth_ok = ads_keytab_verify_ticket(context, auth_context, ticket, &tkt, &keyblock, &ret);
+ }
+ if (!auth_ok) {
+ auth_ok = ads_secrets_verify_ticket(context, auth_context, host_princ,
+ ticket, &tkt, &keyblock, &ret);
}
- if ( use_replay_cache ) {
- release_server_mutex();
- got_replay_mutex = False;
+ release_server_mutex();
+ got_replay_mutex = False;
+
#if 0
- /* Heimdal leaks here, if we fix the leak, MIT crashes */
- if (rcache) {
- krb5_rc_close(context, rcache);
- }
+ /* Heimdal leaks here, if we fix the leak, MIT crashes */
+ if (rcache) {
+ krb5_rc_close(context, rcache);
+ }
#endif
- }
if (!auth_ok) {
DEBUG(3,("ads_verify_ticket: krb5_rd_req with auth failed (%s)\n",
diff --git a/source/libads/krb5_errs.c b/source/libads/krb5_errs.c
index 8216fefb64f..c153bee96e6 100644
--- a/source/libads/krb5_errs.c
+++ b/source/libads/krb5_errs.c
@@ -58,12 +58,10 @@ static const struct {
#endif
{KRB5_CC_NOTFOUND, NT_STATUS_NO_SUCH_FILE},
{KRB5_FCC_NOFILE, NT_STATUS_NO_SUCH_FILE},
+ {KRB5KDC_ERR_NONE, NT_STATUS_OK},
{KRB5_RC_MALLOC, NT_STATUS_NO_MEMORY},
{ENOMEM, NT_STATUS_NO_MEMORY},
- {KRB5_REALM_CANT_RESOLVE, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND},
-
- /* Must be last entry */
- {KRB5KDC_ERR_NONE, NT_STATUS_OK}
+ {0, NT_STATUS_OK}
};
static const struct {
diff --git a/source/libads/krb5_setpw.c b/source/libads/krb5_setpw.c
index 4aab09c9f45..c7a4b982db4 100644
--- a/source/libads/krb5_setpw.c
+++ b/source/libads/krb5_setpw.c
@@ -88,7 +88,7 @@ static DATA_BLOB encode_krb5_setpw(const char *principal, const char *password)
realm = c;
} else {
/* We must have a realm component. */
- return data_blob_null;
+ return data_blob(NULL, 0);
}
memset(&req, 0, sizeof(req));
diff --git a/source/libads/ldap.c b/source/libads/ldap.c
index 6f0ca3452ca..5d498abb1c0 100644
--- a/source/libads/ldap.c
+++ b/source/libads/ldap.c
@@ -570,11 +570,11 @@ static ADS_STATUS ads_do_paged_search_args(ADS_STRUCT *ads,
{
int rc, i, version;
char *utf8_expr, *utf8_path, **search_attrs;
- LDAPControl PagedResults, NoReferrals, ExternalCtrl, *controls[4], **rcontrols;
+ LDAPControl PagedResults, NoReferrals, ExtendedDn, *controls[4], **rcontrols;
BerElement *cookie_be = NULL;
struct berval *cookie_bv= NULL;
- BerElement *ext_be = NULL;
- struct berval *ext_bv= NULL;
+ BerElement *extdn_be = NULL;
+ struct berval *extdn_bv= NULL;
TALLOC_CTX *ctx;
ads_control *external_control = (ads_control *) args;
@@ -604,6 +604,7 @@ static ADS_STATUS ads_do_paged_search_args(ADS_STRUCT *ads,
}
}
+
/* Paged results only available on ldap v3 or later */
ldap_get_option(ads->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
if (version < LDAP_VERSION3) {
@@ -630,42 +631,40 @@ static ADS_STATUS ads_do_paged_search_args(ADS_STRUCT *ads,
NoReferrals.ldctl_value.bv_len = 0;
NoReferrals.ldctl_value.bv_val = CONST_DISCARD(char *, "");
- if (external_control &&
- (strequal(external_control->control, ADS_EXTENDED_DN_OID) ||
- strequal(external_control->control, ADS_SD_FLAGS_OID))) {
+ if (external_control && strequal(external_control->control, ADS_EXTENDED_DN_OID)) {
- ExternalCtrl.ldctl_oid = CONST_DISCARD(char *, external_control->control);
- ExternalCtrl.ldctl_iscritical = (char) external_control->critical;
+ ExtendedDn.ldctl_oid = CONST_DISCARD(char *, external_control->control);
+ ExtendedDn.ldctl_iscritical = (char) external_control->critical;
/* win2k does not accept a ldctl_value beeing passed in */
if (external_control->val != 0) {
- if ((ext_be = ber_alloc_t(LBER_USE_DER)) == NULL ) {
+ if ((extdn_be = ber_alloc_t(LBER_USE_DER)) == NULL ) {
rc = LDAP_NO_MEMORY;
goto done;
}
- if ((ber_printf(ext_be, "{i}", (ber_int_t) external_control->val)) == -1) {
+ if ((ber_printf(extdn_be, "{i}", (ber_int_t) external_control->val)) == -1) {
rc = LDAP_NO_MEMORY;
goto done;
}
- if ((ber_flatten(ext_be, &ext_bv)) == -1) {
+ if ((ber_flatten(extdn_be, &extdn_bv)) == -1) {
rc = LDAP_NO_MEMORY;
goto done;
}
- ExternalCtrl.ldctl_value.bv_len = ext_bv->bv_len;
- ExternalCtrl.ldctl_value.bv_val = ext_bv->bv_val;
+ ExtendedDn.ldctl_value.bv_len = extdn_bv->bv_len;
+ ExtendedDn.ldctl_value.bv_val = extdn_bv->bv_val;
} else {
- ExternalCtrl.ldctl_value.bv_len = 0;
- ExternalCtrl.ldctl_value.bv_val = NULL;
+ ExtendedDn.ldctl_value.bv_len = 0;
+ ExtendedDn.ldctl_value.bv_val = NULL;
}
controls[0] = &NoReferrals;
controls[1] = &PagedResults;
- controls[2] = &ExternalCtrl;
+ controls[2] = &ExtendedDn;
controls[3] = NULL;
} else {
@@ -726,12 +725,12 @@ static ADS_STATUS ads_do_paged_search_args(ADS_STRUCT *ads,
done:
talloc_destroy(ctx);
- if (ext_be) {
- ber_free(ext_be, 1);
+ if (extdn_be) {
+ ber_free(extdn_be, 1);
}
- if (ext_bv) {
- ber_bvfree(ext_bv);
+ if (extdn_bv) {
+ ber_bvfree(extdn_bv);
}
/* if/when we decide to utf8-encode attrs, take out this next line */
@@ -811,21 +810,6 @@ static ADS_STATUS ads_do_paged_search(ADS_STRUCT *ads, const char *bind_path,
return ads_do_search_all_args(ads, bind_path, scope, expr, attrs, NULL, res);
}
- ADS_STATUS ads_do_search_all_sd_flags(ADS_STRUCT *ads, const char *bind_path,
- int scope, const char *expr,
- const char **attrs, uint32 sd_flags,
- LDAPMessage **res)
-{
- ads_control args;
-
- args.control = ADS_SD_FLAGS_OID;
- args.val = sd_flags;
- args.critical = True;
-
- return ads_do_search_all_args(ads, bind_path, scope, expr, attrs, &args, res);
-}
-
-
/**
* Run a function on all results for a search. Uses ads_do_paged_search() and
* runs the function as each page is returned, using ads_process_results()
@@ -1704,77 +1688,6 @@ done:
return ret;
}
-/**
- * move a machine account to another OU on the ADS server
- * @param ads - An intialized ADS_STRUCT
- * @param machine_name - the NetBIOS machine name of this account.
- * @param org_unit - The LDAP path in which to place this account
- * @param moved - whether we moved the machine account (optional)
- * @return 0 upon success, or non-zero otherwise
-**/
-
-ADS_STATUS ads_move_machine_acct(ADS_STRUCT *ads, const char *machine_name,
- const char *org_unit, BOOL *moved)
-{
- ADS_STATUS rc;
- int ldap_status;
- LDAPMessage *res = NULL;
- char *filter = NULL;
- char *computer_dn = NULL;
- char *parent_dn;
- char *computer_rdn = NULL;
- BOOL need_move = False;
-
- if (asprintf(&filter, "(samAccountName=%s$)", machine_name) == -1) {
- rc = ADS_ERROR(LDAP_NO_MEMORY);
- goto done;
- }
-
- /* Find pre-existing machine */
- rc = ads_search(ads, &res, filter, NULL);
- if (!ADS_ERR_OK(rc)) {
- goto done;
- }
-
- computer_dn = ads_get_dn(ads, res);
- if (!computer_dn) {
- rc = ADS_ERROR(LDAP_NO_MEMORY);
- goto done;
- }
-
- parent_dn = ads_parent_dn(computer_dn);
- if (strequal(parent_dn, org_unit)) {
- goto done;
- }
-
- need_move = True;
-
- if (asprintf(&computer_rdn, "CN=%s", machine_name) == -1) {
- rc = ADS_ERROR(LDAP_NO_MEMORY);
- goto done;
- }
-
- ldap_status = ldap_rename_s(ads->ld, computer_dn, computer_rdn,
- org_unit, 1, NULL, NULL);
- rc = ADS_ERROR(ldap_status);
-
-done:
- ads_msgfree(ads, res);
- SAFE_FREE(filter);
- SAFE_FREE(computer_dn);
- SAFE_FREE(computer_rdn);
-
- if (!ADS_ERR_OK(rc)) {
- need_move = False;
- }
-
- if (moved) {
- *moved = need_move;
- }
-
- return rc;
-}
-
/*
dump a binary result from ldap
*/
@@ -2705,7 +2618,7 @@ ADS_STATUS ads_site_dn_for_machine(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, const c
if (*site_dn == NULL) {
ads_msgfree(ads, res);
ads_memfree(ads, dn);
- ADS_ERROR(LDAP_NO_MEMORY);
+ return ADS_ERROR(LDAP_NO_MEMORY);
}
ads_memfree(ads, dn);
@@ -2771,26 +2684,21 @@ ADS_STATUS ads_upn_suffixes(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, char ***suffix
/**
* pull a DOM_SID from an extended dn string
* @param mem_ctx TALLOC_CTX
- * @param extended_dn string
* @param flags string type of extended_dn
* @param sid pointer to a DOM_SID
* @return boolean inidicating success
**/
BOOL ads_get_sid_from_extended_dn(TALLOC_CTX *mem_ctx,
- const char *extended_dn,
+ const char *dn,
enum ads_extended_dn_flags flags,
DOM_SID *sid)
{
- char *p, *q, *dn;
+ char *p, *q;
- if (!extended_dn) {
+ if (!dn) {
return False;
}
- /* otherwise extended_dn gets stripped off */
- if ((dn = talloc_strdup(mem_ctx, extended_dn)) == NULL) {
- return False;
- }
/*
* ADS_EXTENDED_DN_HEX_STRING:
* <GUID=238e1963cb390f4bb032ba0105525a29>;<SID=010500000000000515000000bb68c8fd6b61b427572eb04556040000>;CN=gd,OU=berlin,OU=suse,DC=ber,DC=suse,DC=de
@@ -3168,168 +3076,4 @@ ADS_STATUS ads_leave_realm(ADS_STRUCT *ads, const char *hostname)
return status;
}
-/**
- * pull all token-sids from an LDAP dn
- * @param ads connection to ads server
- * @param mem_ctx TALLOC_CTX for allocating sid array
- * @param dn of LDAP object
- * @param user_sid pointer to DOM_SID (objectSid)
- * @param primary_group_sid pointer to DOM_SID (self composed)
- * @param sids pointer to sid array to allocate
- * @param num_sids counter of SIDs pulled
- * @return status of token query
- **/
- ADS_STATUS ads_get_tokensids(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- const char *dn,
- DOM_SID *user_sid,
- DOM_SID *primary_group_sid,
- DOM_SID **sids,
- size_t *num_sids)
-{
- ADS_STATUS status;
- LDAPMessage *res = NULL;
- int count = 0;
- size_t tmp_num_sids;
- DOM_SID *tmp_sids;
- DOM_SID tmp_user_sid;
- DOM_SID tmp_primary_group_sid;
- uint32 pgid;
- const char *attrs[] = {
- "objectSid",
- "tokenGroups",
- "primaryGroupID",
- NULL
- };
-
- status = ads_search_retry_dn(ads, &res, dn, attrs);
- if (!ADS_ERR_OK(status)) {
- return status;
- }
-
- count = ads_count_replies(ads, res);
- if (count != 1) {
- ads_msgfree(ads, res);
- return ADS_ERROR_LDAP(LDAP_NO_SUCH_OBJECT);
- }
-
- if (!ads_pull_sid(ads, res, "objectSid", &tmp_user_sid)) {
- ads_msgfree(ads, res);
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- }
-
- if (!ads_pull_uint32(ads, res, "primaryGroupID", &pgid)) {
- ads_msgfree(ads, res);
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- }
-
- {
- /* hack to compose the primary group sid without knowing the
- * domsid */
-
- DOM_SID domsid;
- uint32 dummy_rid;
-
- sid_copy(&domsid, &tmp_user_sid);
-
- if (!sid_split_rid(&domsid, &dummy_rid)) {
- ads_msgfree(ads, res);
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- }
-
- if (!sid_compose(&tmp_primary_group_sid, &domsid, pgid)) {
- ads_msgfree(ads, res);
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- }
- }
-
- tmp_num_sids = ads_pull_sids(ads, mem_ctx, res, "tokenGroups", &tmp_sids);
-
- if (tmp_num_sids == 0 || !tmp_sids) {
- ads_msgfree(ads, res);
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- }
-
- if (num_sids) {
- *num_sids = tmp_num_sids;
- }
-
- if (sids) {
- *sids = tmp_sids;
- }
-
- if (user_sid) {
- *user_sid = tmp_user_sid;
- }
-
- if (primary_group_sid) {
- *primary_group_sid = tmp_primary_group_sid;
- }
-
- DEBUG(10,("ads_get_tokensids: returned %d sids\n", (int)tmp_num_sids + 2));
-
- ads_msgfree(ads, res);
- return ADS_ERROR_LDAP(LDAP_SUCCESS);
-}
-
-ADS_STATUS ads_find_samaccount(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- const char *samaccountname,
- uint32 *uac_ret,
- const char **dn_ret)
-{
- ADS_STATUS status;
- const char *attrs[] = { "userAccountControl", NULL };
- const char *filter;
- LDAPMessage *res = NULL;
- char *dn = NULL;
- uint32 uac = 0;
-
- filter = talloc_asprintf(mem_ctx, "(&(objectclass=user)(sAMAccountName=%s))",
- samaccountname);
- if (filter == NULL) {
- goto out;
- }
-
- status = ads_do_search_all(ads, ads->config.bind_path,
- LDAP_SCOPE_SUBTREE,
- filter, attrs, &res);
-
- if (!ADS_ERR_OK(status)) {
- goto out;
- }
-
- if (ads_count_replies(ads, res) != 1) {
- printf("no result\n");
- goto out;
- }
-
- dn = ads_get_dn(ads, res);
- if (dn == NULL) {
- status = ADS_ERROR(LDAP_NO_MEMORY);
- goto out;
- }
-
- if (!ads_pull_uint32(ads, res, "userAccountControl", &uac)) {
- status = ADS_ERROR(LDAP_NO_SUCH_ATTRIBUTE);
- goto out;
- }
-
- if (uac_ret) {
- *uac_ret = uac;
- }
-
- if (dn_ret) {
- *dn_ret = talloc_strdup(mem_ctx, dn);
- if (!*dn_ret) {
- status = ADS_ERROR(LDAP_NO_MEMORY);
- goto out;
- }
- }
- out:
- ads_memfree(ads, dn);
- ads_msgfree(ads, res);
-
- return status;
-}
#endif
diff --git a/source/libads/ldap_schema.c b/source/libads/ldap_schema.c
index a8b93cbdbc7..5d91d985490 100644
--- a/source/libads/ldap_schema.c
+++ b/source/libads/ldap_schema.c
@@ -205,37 +205,13 @@ ADS_STATUS ads_check_posix_schema_mapping(TALLOC_CTX *mem_ctx,
ADS_ATTR_SFU_SHELL_OID,
ADS_ATTR_SFU_GECOS_OID};
- const char *oids_sfu20[] = { ADS_ATTR_SFU20_UIDNUMBER_OID,
- ADS_ATTR_SFU20_GIDNUMBER_OID,
- ADS_ATTR_SFU20_HOMEDIR_OID,
- ADS_ATTR_SFU20_SHELL_OID,
- ADS_ATTR_SFU20_GECOS_OID};
-
const char *oids_rfc2307[] = { ADS_ATTR_RFC2307_UIDNUMBER_OID,
ADS_ATTR_RFC2307_GIDNUMBER_OID,
ADS_ATTR_RFC2307_HOMEDIR_OID,
ADS_ATTR_RFC2307_SHELL_OID,
ADS_ATTR_RFC2307_GECOS_OID };
- DEBUG(10,("ads_check_posix_schema_mapping for schema mode: %d\n", map_type));
-
- switch (map_type) {
-
- case WB_POSIX_MAP_TEMPLATE:
- case WB_POSIX_MAP_UNIXINFO:
- DEBUG(10,("ads_check_posix_schema_mapping: nothing to do\n"));
- return ADS_ERROR(LDAP_SUCCESS);
-
- case WB_POSIX_MAP_SFU:
- case WB_POSIX_MAP_SFU20:
- case WB_POSIX_MAP_RFC2307:
- break;
-
- default:
- DEBUG(0,("ads_check_posix_schema_mapping: "
- "unknown enum %d\n", map_type));
- return ADS_ERROR(LDAP_PARAM_ERROR);
- }
+ DEBUG(10,("ads_check_posix_schema_mapping\n"));
if ( (ctx = talloc_init("ads_check_posix_schema_mapping")) == NULL ) {
return ADS_ERROR(LDAP_NO_MEMORY);
@@ -252,25 +228,14 @@ ADS_STATUS ads_check_posix_schema_mapping(TALLOC_CTX *mem_ctx,
goto done;
}
- switch (map_type) {
- case WB_POSIX_MAP_SFU:
- status = ads_get_attrnames_by_oids(ads, ctx, schema_path, oids_sfu,
- ARRAY_SIZE(oids_sfu),
- &oids_out, &names_out, &num_names);
- break;
- case WB_POSIX_MAP_SFU20:
- status = ads_get_attrnames_by_oids(ads, ctx, schema_path, oids_sfu20,
- ARRAY_SIZE(oids_sfu20),
- &oids_out, &names_out, &num_names);
- break;
- case WB_POSIX_MAP_RFC2307:
- status = ads_get_attrnames_by_oids(ads, ctx, schema_path, oids_rfc2307,
- ARRAY_SIZE(oids_rfc2307),
- &oids_out, &names_out, &num_names);
- break;
- default:
- status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- break;
+ if (map_type == WB_POSIX_MAP_SFU) {
+ status = ads_get_attrnames_by_oids(ads, ctx, schema_path, oids_sfu,
+ ARRAY_SIZE(oids_sfu),
+ &oids_out, &names_out, &num_names);
+ } else {
+ status = ads_get_attrnames_by_oids(ads, ctx, schema_path, oids_rfc2307,
+ ARRAY_SIZE(oids_rfc2307),
+ &oids_out, &names_out, &num_names);
}
if (!ADS_ERR_OK(status)) {
@@ -284,36 +249,31 @@ ADS_STATUS ads_check_posix_schema_mapping(TALLOC_CTX *mem_ctx,
DEBUGADD(10,("\tOID %s has name: %s\n", oids_out[i], names_out[i]));
if (strequal(ADS_ATTR_RFC2307_UIDNUMBER_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU_UIDNUMBER_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU20_UIDNUMBER_OID, oids_out[i])) {
+ strequal(ADS_ATTR_SFU_UIDNUMBER_OID, oids_out[i])) {
schema->posix_uidnumber_attr = talloc_strdup(schema, names_out[i]);
continue;
}
if (strequal(ADS_ATTR_RFC2307_GIDNUMBER_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU_GIDNUMBER_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU20_GIDNUMBER_OID, oids_out[i])) {
+ strequal(ADS_ATTR_SFU_GIDNUMBER_OID, oids_out[i])) {
schema->posix_gidnumber_attr = talloc_strdup(schema, names_out[i]);
continue;
}
if (strequal(ADS_ATTR_RFC2307_HOMEDIR_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU_HOMEDIR_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU20_HOMEDIR_OID, oids_out[i])) {
+ strequal(ADS_ATTR_SFU_HOMEDIR_OID, oids_out[i])) {
schema->posix_homedir_attr = talloc_strdup(schema, names_out[i]);
continue;
}
if (strequal(ADS_ATTR_RFC2307_SHELL_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU_SHELL_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU20_SHELL_OID, oids_out[i])) {
+ strequal(ADS_ATTR_SFU_SHELL_OID, oids_out[i])) {
schema->posix_shell_attr = talloc_strdup(schema, names_out[i]);
continue;
}
if (strequal(ADS_ATTR_RFC2307_GECOS_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU_GECOS_OID, oids_out[i]) ||
- strequal(ADS_ATTR_SFU20_GECOS_OID, oids_out[i])) {
+ strequal(ADS_ATTR_SFU_GECOS_OID, oids_out[i])) {
schema->posix_gecos_attr = talloc_strdup(schema, names_out[i]);
}
}
@@ -333,7 +293,9 @@ ADS_STATUS ads_check_posix_schema_mapping(TALLOC_CTX *mem_ctx,
status = ADS_ERROR(LDAP_SUCCESS);
done:
- TALLOC_FREE(ctx);
+ if (ctx) {
+ talloc_destroy(ctx);
+ }
return status;
}
diff --git a/source/libads/ldap_utils.c b/source/libads/ldap_utils.c
index 6417e92e926..4edd73c18d7 100644
--- a/source/libads/ldap_utils.c
+++ b/source/libads/ldap_utils.c
@@ -4,7 +4,6 @@
Some Helpful wrappers on LDAP
Copyright (C) Andrew Tridgell 2001
- Copyright (C) Guenther Deschner 2006,2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -47,7 +46,7 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind
bp = SMB_STRDUP(bind_path);
if (!bp) {
- return ADS_ERROR(LDAP_NO_MEMORY);
+ return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
}
*res = NULL;
@@ -61,8 +60,8 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind
status = ads_do_search_all_args(ads, bp, scope, expr, attrs, args, res);
}
if (ADS_ERR_OK(status)) {
- DEBUG(5,("Search for %s in <%s> gave %d replies\n",
- expr, bp, ads_count_replies(ads, *res)));
+ DEBUG(5,("Search for %s in <%s> gave %d replies\n",
+ expr, bp, ads_count_replies(ads, *res)));
SAFE_FREE(bp);
return status;
}
@@ -164,45 +163,6 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind
"(objectclass=*)", attrs, &args, res);
}
- ADS_STATUS ads_search_retry_extended_dn_ranged(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
- const char *dn,
- const char **attrs,
- enum ads_extended_dn_flags flags,
- char ***strings,
- size_t *num_strings)
-{
- ads_control args;
-
- args.control = ADS_EXTENDED_DN_OID;
- args.val = flags;
- args.critical = True;
-
- /* we can only range process one attribute */
- if (!attrs || !attrs[0] || attrs[1]) {
- return ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- }
-
- return ads_ranged_search(ads, mem_ctx, LDAP_SCOPE_BASE, dn,
- "(objectclass=*)", &args, attrs[0],
- strings, num_strings);
-
-}
-
- ADS_STATUS ads_search_retry_dn_sd_flags(ADS_STRUCT *ads, LDAPMessage **res,
- uint32 sd_flags,
- const char *dn,
- const char **attrs)
-{
- ads_control args;
-
- args.control = ADS_SD_FLAGS_OID;
- args.val = sd_flags;
- args.critical = True;
-
- return ads_do_search_retry_args(ads, dn, LDAP_SCOPE_BASE,
- "(objectclass=*)", attrs, &args, res);
-}
-
ADS_STATUS ads_search_retry_sid(ADS_STRUCT *ads, LDAPMessage **res,
const DOM_SID *sid,
const char **attrs)
@@ -227,152 +187,4 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind
return status;
}
-ADS_STATUS ads_ranged_search(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- int scope,
- const char *base,
- const char *filter,
- void *args,
- const char *range_attr,
- char ***strings,
- size_t *num_strings)
-{
- ADS_STATUS status;
- uint32 first_usn;
- int num_retries = 0;
- const char **attrs;
- BOOL more_values = False;
-
- *num_strings = 0;
- *strings = NULL;
-
- attrs = TALLOC_ARRAY(mem_ctx, const char *, 3);
- ADS_ERROR_HAVE_NO_MEMORY(attrs);
-
- attrs[0] = talloc_strdup(mem_ctx, range_attr);
- attrs[1] = talloc_strdup(mem_ctx, "usnChanged");
- attrs[2] = NULL;
-
- ADS_ERROR_HAVE_NO_MEMORY(attrs[0]);
- ADS_ERROR_HAVE_NO_MEMORY(attrs[1]);
-
- do {
- status = ads_ranged_search_internal(ads, mem_ctx,
- scope, base, filter,
- attrs, args, range_attr,
- strings, num_strings,
- &first_usn, &num_retries,
- &more_values);
-
- if (NT_STATUS_EQUAL(STATUS_MORE_ENTRIES, ads_ntstatus(status))) {
- continue;
- }
-
- if (!ADS_ERR_OK(status)) {
- *num_strings = 0;
- strings = NULL;
- goto done;
- }
-
- } while (more_values);
-
- done:
- DEBUG(10,("returning with %d strings\n", (int)*num_strings));
-
- return status;
-}
-
-ADS_STATUS ads_ranged_search_internal(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- int scope,
- const char *base,
- const char *filter,
- const char **attrs,
- void *args,
- const char *range_attr,
- char ***strings,
- size_t *num_strings,
- uint32 *first_usn,
- int *num_retries,
- BOOL *more_values)
-{
- LDAPMessage *res = NULL;
- ADS_STATUS status;
- int count;
- uint32 current_usn;
-
- DEBUG(10, ("Searching for attrs[0] = %s, attrs[1] = %s\n", attrs[0], attrs[1]));
-
- *more_values = False;
-
- status = ads_do_search_retry_internal(ads, base, scope, filter, attrs, args, &res);
-
- if (!ADS_ERR_OK(status)) {
- DEBUG(1,("ads_search: %s\n",
- ads_errstr(status)));
- return status;
- }
-
- if (!res) {
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
-
- count = ads_count_replies(ads, res);
- if (count == 0) {
- ads_msgfree(ads, res);
- return ADS_ERROR(LDAP_SUCCESS);
- }
-
- if (*num_strings == 0) {
- if (!ads_pull_uint32(ads, res, "usnChanged", first_usn)) {
- DEBUG(1, ("could not pull first usnChanged!\n"));
- ads_msgfree(ads, res);
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
- }
-
- if (!ads_pull_uint32(ads, res, "usnChanged", &current_usn)) {
- DEBUG(1, ("could not pull current usnChanged!\n"));
- ads_msgfree(ads, res);
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
-
- if (*first_usn != current_usn) {
- DEBUG(5, ("USN on this record changed"
- " - restarting search\n"));
- if (*num_retries < 5) {
- (*num_retries)++;
- *num_strings = 0;
- ads_msgfree(ads, res);
- return ADS_ERROR_NT(STATUS_MORE_ENTRIES);
- } else {
- DEBUG(5, ("USN on this record changed"
- " - restarted search too many times, aborting!\n"));
- ads_msgfree(ads, res);
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
- }
-
- *strings = ads_pull_strings_range(ads, mem_ctx, res,
- range_attr,
- *strings,
- &attrs[0],
- num_strings,
- more_values);
-
- ads_msgfree(ads, res);
-
- /* paranoia checks */
- if (*strings == NULL && *more_values) {
- DEBUG(0,("no strings found but more values???\n"));
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
- if (*num_strings == 0 && *more_values) {
- DEBUG(0,("no strings found but more values???\n"));
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
-
- return (*more_values) ? ADS_ERROR_NT(STATUS_MORE_ENTRIES) : ADS_ERROR(LDAP_SUCCESS);
-}
-
#endif
diff --git a/source/libads/sasl.c b/source/libads/sasl.c
index f1f08615355..0067a19d3b6 100644
--- a/source/libads/sasl.c
+++ b/source/libads/sasl.c
@@ -28,10 +28,10 @@
*/
static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
{
- DATA_BLOB msg1 = data_blob_null;
- DATA_BLOB blob = data_blob_null;
- DATA_BLOB blob_in = data_blob_null;
- DATA_BLOB blob_out = data_blob_null;
+ DATA_BLOB msg1 = data_blob(NULL, 0);
+ DATA_BLOB blob = data_blob(NULL, 0);
+ DATA_BLOB blob_in = data_blob(NULL, 0);
+ DATA_BLOB blob_out = data_blob(NULL, 0);
struct berval cred, *scred = NULL;
int rc;
NTSTATUS nt_status;
@@ -54,7 +54,7 @@ static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
return ADS_ERROR_NT(nt_status);
}
- blob_in = data_blob_null;
+ blob_in = data_blob(NULL, 0);
do {
nt_status = ntlmssp_update(ntlmssp_state,
@@ -90,7 +90,7 @@ static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
blob = data_blob(scred->bv_val, scred->bv_len);
ber_bvfree(scred);
} else {
- blob = data_blob_null;
+ blob = data_blob(NULL, 0);
}
} else {
@@ -102,7 +102,7 @@ static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
if ((turn == 1) &&
(rc == LDAP_SASL_BIND_IN_PROGRESS)) {
- DATA_BLOB tmp_blob = data_blob_null;
+ DATA_BLOB tmp_blob = data_blob(NULL, 0);
/* the server might give us back two challenges */
if (!spnego_parse_challenge(blob, &blob_in,
&tmp_blob)) {
@@ -114,7 +114,7 @@ static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
}
data_blob_free(&tmp_blob);
} else if (rc == LDAP_SASL_BIND_IN_PROGRESS) {
- if (!spnego_parse_auth_response(blob, nt_status, OID_NTLMSSP,
+ if (!spnego_parse_auth_response(blob, nt_status,
&blob_in)) {
ntlmssp_end(&ntlmssp_state);
@@ -142,9 +142,9 @@ static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
*/
static ADS_STATUS ads_sasl_spnego_krb5_bind(ADS_STRUCT *ads, const char *principal)
{
- DATA_BLOB blob = data_blob_null;
+ DATA_BLOB blob = data_blob(NULL, 0);
struct berval cred, *scred = NULL;
- DATA_BLOB session_key = data_blob_null;
+ DATA_BLOB session_key = data_blob(NULL, 0);
int rc;
rc = spnego_gen_negTokenTarg(principal, ads->auth.time_offset, &blob, &session_key, 0,
@@ -441,8 +441,7 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
gss_release_buffer(&minor_status, &output_token);
- output_token.length = 4;
- output_token.value = SMB_MALLOC(output_token.length);
+ output_token.value = SMB_MALLOC(strlen(ads->config.bind_path) + 8);
p = (uint8 *)output_token.value;
*p++ = 1; /* no sign & seal selection */
@@ -450,14 +449,10 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
*p++ = max_msg_size>>16;
*p++ = max_msg_size>>8;
*p++ = max_msg_size;
- /*
- * we used to add sprintf("dn:%s", ads->config.bind_path) here.
- * but using ads->config.bind_path is the wrong! It should be
- * the DN of the user object!
- *
- * w2k3 gives an error when we send an incorrect DN, but sending nothing
- * is ok and matches the information flow used in GSS-SPNEGO.
- */
+ snprintf((char *)p, strlen(ads->config.bind_path)+4, "dn:%s", ads->config.bind_path);
+ p += strlen((const char *)p);
+
+ output_token.length = PTR_DIFF(p, output_token.value);
gss_rc = gss_wrap(&minor_status, context_handle,0,GSS_C_QOP_DEFAULT,
&output_token, (int *)&conf_state,
diff --git a/source/libgpo/gpo_fetch.c b/source/libgpo/gpo_fetch.c
index c2ba7c2d82c..abc5ab46844 100644
--- a/source/libgpo/gpo_fetch.c
+++ b/source/libgpo/gpo_fetch.c
@@ -24,12 +24,13 @@
explode the GPO CIFS URI into their components
****************************************************************/
-NTSTATUS gpo_explode_filesyspath(TALLOC_CTX *mem_ctx,
- const char *file_sys_path,
- char **server,
- char **service,
- char **nt_path,
- char **unix_path)
+NTSTATUS ads_gpo_explode_filesyspath(ADS_STRUCT *ads,
+ TALLOC_CTX *mem_ctx,
+ const char *file_sys_path,
+ char **server,
+ char **service,
+ char **nt_path,
+ char **unix_path)
{
fstring tok;
pstring path;
@@ -39,10 +40,6 @@ NTSTATUS gpo_explode_filesyspath(TALLOC_CTX *mem_ctx,
*nt_path = NULL;
*unix_path = NULL;
- if (!file_sys_path) {
- return NT_STATUS_OK;
- }
-
if (!next_token(&file_sys_path, tok, "\\", sizeof(tok))) {
return NT_STATUS_INVALID_PARAMETER;
}
@@ -79,8 +76,9 @@ NTSTATUS gpo_explode_filesyspath(TALLOC_CTX *mem_ctx,
prepare the local disc storage for "unix_path"
****************************************************************/
-static NTSTATUS gpo_prepare_local_store(TALLOC_CTX *mem_ctx,
- const char *unix_path)
+NTSTATUS ads_gpo_prepare_local_store(ADS_STRUCT *ads,
+ TALLOC_CTX *mem_ctx,
+ const char *unix_path)
{
const char *top_dir = lock_path(GPO_CACHE_DIR);
char *current_dir;
@@ -117,20 +115,21 @@ static NTSTATUS gpo_prepare_local_store(TALLOC_CTX *mem_ctx,
download a full GPO via CIFS
****************************************************************/
-NTSTATUS gpo_fetch_files(TALLOC_CTX *mem_ctx,
- struct cli_state *cli,
- struct GROUP_POLICY_OBJECT *gpo)
+NTSTATUS ads_fetch_gpo_files(ADS_STRUCT *ads,
+ TALLOC_CTX *mem_ctx,
+ struct cli_state *cli,
+ struct GROUP_POLICY_OBJECT *gpo)
{
NTSTATUS result;
char *server, *service, *nt_path, *unix_path, *nt_ini_path, *unix_ini_path;
- result = gpo_explode_filesyspath(mem_ctx, gpo->file_sys_path,
- &server, &service, &nt_path, &unix_path);
+ result = ads_gpo_explode_filesyspath(ads, mem_ctx, gpo->file_sys_path,
+ &server, &service, &nt_path, &unix_path);
if (!NT_STATUS_IS_OK(result)) {
goto out;
}
- result = gpo_prepare_local_store(mem_ctx, unix_path);
+ result = ads_gpo_prepare_local_store(ads, mem_ctx, unix_path);
if (!NT_STATUS_IS_OK(result)) {
goto out;
}
@@ -162,26 +161,23 @@ NTSTATUS gpo_fetch_files(TALLOC_CTX *mem_ctx,
get the locally stored gpt.ini version number
****************************************************************/
-NTSTATUS gpo_get_sysvol_gpt_version(TALLOC_CTX *mem_ctx,
- const char *unix_path,
- uint32 *sysvol_version,
- char **display_name)
+NTSTATUS ads_gpo_get_sysvol_gpt_version(ADS_STRUCT *ads,
+ TALLOC_CTX *mem_ctx,
+ const char *unix_path,
+ uint32 *sysvol_version,
+ char **display_name)
{
NTSTATUS status;
- uint32 version = 0;
+ uint32 version;
char *local_path = NULL;
char *name = NULL;
- if (!unix_path) {
- return NT_STATUS_OK;
- }
-
local_path = talloc_asprintf(mem_ctx, "%s/%s", unix_path, GPT_INI);
NT_STATUS_HAVE_NO_MEMORY(local_path);
status = parse_gpt_ini(mem_ctx, local_path, &version, &name);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10,("gpo_get_sysvol_gpt_version: failed to parse ini [%s]: %s\n",
+ DEBUG(10,("ads_gpo_get_sysvol_gpt_version: failed to parse ini [%s]: %s\n",
unix_path, nt_errstr(status)));
return status;
}
diff --git a/source/libgpo/gpo_ldap.c b/source/libgpo/gpo_ldap.c
index 3f90fa4a621..6c1079832d0 100644
--- a/source/libgpo/gpo_ldap.c
+++ b/source/libgpo/gpo_ldap.c
@@ -28,24 +28,14 @@
ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
const char *extension_raw,
- struct GP_EXT **gp_ext)
+ struct GP_EXT *gp_ext)
{
- struct GP_EXT *ext = NULL;
char **ext_list;
char **ext_strings = NULL;
int i;
- if (!extension_raw) {
- goto parse_error;
- }
-
DEBUG(20,("ads_parse_gp_ext: %s\n", extension_raw));
- ext = TALLOC_ZERO_P(mem_ctx, struct GP_EXT);
- if (!ext) {
- goto parse_error;
- }
-
ext_list = str_list_make_talloc(mem_ctx, extension_raw, "]");
if (ext_list == NULL) {
goto parse_error;
@@ -55,28 +45,28 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
/* no op */
}
- ext->num_exts = i;
+ gp_ext->num_exts = i;
- if (ext->num_exts) {
- ext->extensions = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
- ext->extensions_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
- ext->snapins = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
- ext->snapins_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
+ if (gp_ext->num_exts) {
+ gp_ext->extensions = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+ gp_ext->extensions_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+ gp_ext->snapins = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+ gp_ext->snapins_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
} else {
- ext->extensions = NULL;
- ext->extensions_guid = NULL;
- ext->snapins = NULL;
- ext->snapins_guid = NULL;
+ gp_ext->extensions = NULL;
+ gp_ext->extensions_guid = NULL;
+ gp_ext->snapins = NULL;
+ gp_ext->snapins_guid = NULL;
}
- ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
-
- if (ext->extensions == NULL || ext->extensions_guid == NULL ||
- ext->snapins == NULL || ext->snapins_guid == NULL ||
- ext->gp_extension == NULL) {
+ if (gp_ext->extensions == NULL || gp_ext->extensions_guid == NULL ||
+ gp_ext->snapins == NULL || gp_ext->snapins_guid == NULL ||
+ gp_ext->gp_extension == NULL) {
goto parse_error;
}
+ gp_ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
+
for (i = 0; ext_list[i] != NULL; i++) {
int k;
@@ -105,11 +95,11 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
q++;
}
- ext->extensions[i] = talloc_strdup(mem_ctx, cse_gpo_guid_string_to_name(q));
- ext->extensions_guid[i] = talloc_strdup(mem_ctx, q);
+ gp_ext->extensions[i] = talloc_strdup(mem_ctx, cse_gpo_guid_string_to_name(q));
+ gp_ext->extensions_guid[i] = talloc_strdup(mem_ctx, q);
/* we might have no name for the guid */
- if (ext->extensions_guid[i] == NULL) {
+ if (gp_ext->extensions_guid[i] == NULL) {
goto parse_error;
}
@@ -122,11 +112,11 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
}
/* FIXME: theoretically there could be more than one snapin per extension */
- ext->snapins[i] = talloc_strdup(mem_ctx, cse_snapin_gpo_guid_string_to_name(m));
- ext->snapins_guid[i] = talloc_strdup(mem_ctx, m);
+ gp_ext->snapins[i] = talloc_strdup(mem_ctx, cse_snapin_gpo_guid_string_to_name(m));
+ gp_ext->snapins_guid[i] = talloc_strdup(mem_ctx, m);
/* we might have no name for the guid */
- if (ext->snapins_guid[i] == NULL) {
+ if (gp_ext->snapins_guid[i] == NULL) {
goto parse_error;
}
}
@@ -139,8 +129,6 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
str_list_free_talloc(mem_ctx, &ext_strings);
}
- *gp_ext = ext;
-
return ADS_ERROR(LDAP_SUCCESS);
parse_error:
@@ -158,15 +146,15 @@ parse_error:
parse the raw link string into a GP_LINK structure
****************************************************************/
-static ADS_STATUS gpo_parse_gplink(TALLOC_CTX *mem_ctx,
- const char *gp_link_raw,
- uint32 options,
- struct GP_LINK *gp_link)
+ADS_STATUS ads_parse_gplink(TALLOC_CTX *mem_ctx,
+ const char *gp_link_raw,
+ uint32 options,
+ struct GP_LINK *gp_link)
{
char **link_list;
int i;
- DEBUG(10,("gpo_parse_gplink: gPLink: %s\n", gp_link_raw));
+ DEBUG(10,("ads_parse_gplink: gPLink: %s\n", gp_link_raw));
link_list = str_list_make_talloc(mem_ctx, gp_link_raw, "]");
if (link_list == NULL) {
@@ -198,7 +186,7 @@ static ADS_STATUS gpo_parse_gplink(TALLOC_CTX *mem_ctx,
char *p, *q;
- DEBUGADD(10,("gpo_parse_gplink: processing link #%d\n", i));
+ DEBUGADD(10,("ads_parse_gplink: processing link #%d\n", i));
q = link_list[i];
if (q[0] == '[') {
@@ -219,8 +207,8 @@ static ADS_STATUS gpo_parse_gplink(TALLOC_CTX *mem_ctx,
gp_link->link_opts[i] = atoi(p + 1);
- DEBUGADD(10,("gpo_parse_gplink: link: %s\n", gp_link->link_names[i]));
- DEBUGADD(10,("gpo_parse_gplink: opt: %d\n", gp_link->link_opts[i]));
+ DEBUGADD(10,("ads_parse_gplink: link: %s\n", gp_link->link_names[i]));
+ DEBUGADD(10,("ads_parse_gplink: opt: %d\n", gp_link->link_opts[i]));
}
@@ -274,7 +262,7 @@ ADS_STATUS ads_get_gpo_link(ADS_STRUCT *ads,
return ADS_ERROR(LDAP_NO_SUCH_ATTRIBUTE);
}
- /* perfectly legal to have no options */
+ /* perfectly leggal to have no options */
if (!ads_pull_uint32(ads, res, "gPOptions", &gp_options)) {
DEBUG(10,("ads_get_gpo_link: no 'gPOptions' attribute found\n"));
gp_options = 0;
@@ -282,7 +270,7 @@ ADS_STATUS ads_get_gpo_link(ADS_STRUCT *ads,
ads_msgfree(ads, res);
- return gpo_parse_gplink(mem_ctx, gp_link, gp_options, gp_link_struct);
+ return ads_parse_gplink(mem_ctx, gp_link, gp_options, gp_link_struct);
}
/****************************************************************
@@ -446,9 +434,6 @@ ADS_STATUS ads_delete_gpo_link(ADS_STRUCT *ads,
gpo->machine_extensions = ads_pull_string(ads, mem_ctx, res, "gPCMachineExtensionNames");
gpo->user_extensions = ads_pull_string(ads, mem_ctx, res, "gPCUserExtensionNames");
- ads_pull_sd(ads, mem_ctx, res, "ntSecurityDescriptor", &gpo->security_descriptor);
- ADS_ERROR_HAVE_NO_MEMORY(gpo->security_descriptor);
-
return ADS_ERROR(LDAP_SUCCESS);
}
@@ -470,8 +455,7 @@ ADS_STATUS ads_get_gpo(ADS_STRUCT *ads,
const char *attrs[] = { "cn", "displayName", "flags", "gPCFileSysPath",
"gPCFunctionalityVersion", "gPCMachineExtensionNames",
"gPCUserExtensionNames", "gPCWQLFilter", "name",
- "versionNumber", "ntSecurityDescriptor", NULL};
- uint32 sd_flags = DACL_SECURITY_INFORMATION;
+ "versionNumber", NULL};
ZERO_STRUCTP(gpo);
@@ -485,9 +469,7 @@ ADS_STATUS ads_get_gpo(ADS_STRUCT *ads,
gpo_dn = gpo_dn + strlen("LDAP://");
}
- status = ads_search_retry_dn_sd_flags(ads, &res,
- sd_flags,
- gpo_dn, attrs);
+ status = ads_search_dn(ads, &res, gpo_dn, attrs);
} else if (display_name || guid_name) {
@@ -497,9 +479,9 @@ ADS_STATUS ads_get_gpo(ADS_STRUCT *ads,
display_name ? display_name : guid_name);
ADS_ERROR_HAVE_NO_MEMORY(filter);
- status = ads_do_search_all_sd_flags(ads, ads->config.bind_path,
- LDAP_SCOPE_SUBTREE, filter,
- attrs, sd_flags, &res);
+ status = ads_do_search_all(ads, ads->config.bind_path,
+ LDAP_SCOPE_SUBTREE, filter,
+ attrs, &res);
}
if (!ADS_ERR_OK(status)) {
@@ -530,14 +512,13 @@ ADS_STATUS ads_get_gpo(ADS_STRUCT *ads,
add a gplink to the GROUP_POLICY_OBJECT linked list
****************************************************************/
-static ADS_STATUS add_gplink_to_gpo_list(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- struct GROUP_POLICY_OBJECT **gpo_list,
- const char *link_dn,
- struct GP_LINK *gp_link,
- enum GPO_LINK_TYPE link_type,
- BOOL only_add_forced_gpos,
- struct GPO_SID_TOKEN *token)
+ADS_STATUS add_gplink_to_gpo_list(ADS_STRUCT *ads,
+ TALLOC_CTX *mem_ctx,
+ struct GROUP_POLICY_OBJECT **gpo_list,
+ const char *link_dn,
+ struct GP_LINK *gp_link,
+ enum GPO_LINK_TYPE link_type,
+ BOOL only_add_forced_gpos)
{
ADS_STATUS status;
int i;
@@ -561,23 +542,16 @@ static ADS_STATUS add_gplink_to_gpo_list(ADS_STRUCT *ads,
}
}
- new_gpo = TALLOC_ZERO_P(mem_ctx, struct GROUP_POLICY_OBJECT);
+ new_gpo = TALLOC_P(mem_ctx, struct GROUP_POLICY_OBJECT);
ADS_ERROR_HAVE_NO_MEMORY(new_gpo);
+ ZERO_STRUCTP(new_gpo);
+
status = ads_get_gpo(ads, mem_ctx, gp_link->link_names[i], NULL, NULL, new_gpo);
if (!ADS_ERR_OK(status)) {
- DEBUG(10,("failed to get gpo: %s\n", gp_link->link_names[i]));
return status;
}
- status = ADS_ERROR_NT(gpo_apply_security_filtering(new_gpo, token));
- if (!ADS_ERR_OK(status)) {
- DEBUG(10,("skipping GPO \"%s\" as object has no access to it\n",
- new_gpo->display_name));
- TALLOC_FREE(new_gpo);
- continue;
- }
-
new_gpo->link = link_dn;
new_gpo->link_type = link_type;
@@ -591,68 +565,6 @@ static ADS_STATUS add_gplink_to_gpo_list(ADS_STRUCT *ads,
}
/****************************************************************
-****************************************************************/
-
-static ADS_STATUS ads_get_gpo_sid_token(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- const char *dn,
- struct GPO_SID_TOKEN **token)
-{
- ADS_STATUS status;
- DOM_SID object_sid;
- DOM_SID primary_group_sid;
- DOM_SID *ad_token_sids;
- size_t num_ad_token_sids = 0;
- DOM_SID *token_sids;
- size_t num_token_sids = 0;
- struct GPO_SID_TOKEN *new_token = NULL;
- int i;
-
- new_token = TALLOC_ZERO_P(mem_ctx, struct GPO_SID_TOKEN);
- ADS_ERROR_HAVE_NO_MEMORY(new_token);
-
- status = ads_get_tokensids(ads, mem_ctx, dn,
- &object_sid, &primary_group_sid,
- &ad_token_sids, &num_ad_token_sids);
- if (!ADS_ERR_OK(status)) {
- return status;
- }
-
- new_token->object_sid = object_sid;
- new_token->primary_group_sid = primary_group_sid;
-
- token_sids = TALLOC_ARRAY(mem_ctx, DOM_SID, 1);
- ADS_ERROR_HAVE_NO_MEMORY(token_sids);
-
- for (i = 0; i < num_ad_token_sids; i++) {
-
- if (sid_check_is_in_builtin(&ad_token_sids[i])) {
- continue;
- }
-
- if (!add_sid_to_array_unique(mem_ctx, &ad_token_sids[i],
- &token_sids, &num_token_sids)) {
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
- }
-
- /* Add S-1-5-11 to token */
- if (!add_sid_to_array_unique(mem_ctx, &global_sid_Authenticated_Users,
- &token_sids, &num_token_sids)) {
- return ADS_ERROR(LDAP_NO_MEMORY);
- }
-
-
- new_token->token_sids = token_sids;
- new_token->num_token_sids = num_token_sids;
-
- *token = new_token;
-
- return ADS_ERROR_LDAP(LDAP_SUCCESS);
-}
-
-
-/****************************************************************
get the full list of GROUP_POLICY_OBJECTs for a given dn
****************************************************************/
@@ -666,7 +578,6 @@ ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
ADS_STATUS status;
struct GP_LINK gp_link;
- struct GPO_SID_TOKEN *token = NULL;
const char *parent_dn, *site_dn, *tmp_dn;
BOOL add_only_forced_gpos = False;
@@ -674,11 +585,6 @@ ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
DEBUG(10,("ads_get_gpo_list: getting GPO list for [%s]\n", dn));
- status = ads_get_gpo_sid_token(ads, mem_ctx, dn, &token);
- if (!ADS_ERR_OK(status)) {
- return status;
- }
-
/* (L)ocal */
/* not yet... */
@@ -696,23 +602,22 @@ ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
status = ads_get_gpo_link(ads, mem_ctx, site_dn, &gp_link);
if (ADS_ERR_OK(status)) {
-
+
if (DEBUGLEVEL >= 100) {
dump_gplink(ads, mem_ctx, &gp_link);
}
-
+
status = add_gplink_to_gpo_list(ads, mem_ctx, gpo_list,
site_dn, &gp_link, GP_LINK_SITE,
- add_only_forced_gpos,
- token);
+ add_only_forced_gpos);
if (!ADS_ERR_OK(status)) {
return status;
}
-
+
if (flags & GPO_LIST_FLAG_SITEONLY) {
return ADS_ERROR(LDAP_SUCCESS);
}
-
+
/* inheritance can't be blocked at the site level */
}
}
@@ -744,8 +649,7 @@ ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
status = add_gplink_to_gpo_list(ads, mem_ctx,
gpo_list, parent_dn,
&gp_link, GP_LINK_DOMAIN,
- add_only_forced_gpos,
- token);
+ add_only_forced_gpos);
if (!ADS_ERR_OK(status)) {
return status;
}
@@ -784,8 +688,7 @@ ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
status = add_gplink_to_gpo_list(ads, mem_ctx,
gpo_list, parent_dn,
&gp_link, GP_LINK_OU,
- add_only_forced_gpos,
- token);
+ add_only_forced_gpos);
if (!ADS_ERR_OK(status)) {
return status;
}
diff --git a/source/libgpo/gpo_sec.c b/source/libgpo/gpo_sec.c
deleted file mode 100644
index 1f4aa27f135..00000000000
--- a/source/libgpo/gpo_sec.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Group Policy Object Support
- * Copyright (C) Guenther Deschner 2007
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
- /* When modifiying security filtering with gpmc.msc (on w2k3) the
- * following ACE is created in the DACL:
-
-------- ACE (type: 0x05, flags: 0x02, size: 0x38, mask: 0x100, object flags: 0x1)
-access SID: $SID
-access type: ALLOWED OBJECT
-Permissions:
- [Apply Group Policy] (0x00000100)
-
-------- ACE (type: 0x00, flags: 0x02, size: 0x24, mask: 0x20014)
-access SID: $SID
-access type: ALLOWED
-Permissions:
- [List Contents] (0x00000004)
- [Read All Properties] (0x00000010)
- [Read Permissions] (0x00020000)
-
- * by default all "Authenticated Users" (S-1-5-11) have an ALLOW
- * OBJECT ace with SEC_RIGHTS_APPLY_GROUP_POLICY mask */
-
-
-/****************************************************************
-****************************************************************/
-
-static BOOL gpo_sd_check_agp_access_bits(uint32 access_mask)
-{
- return (access_mask & SEC_RIGHTS_APPLY_GROUP_POLICY);
-}
-
-#if 0
-/****************************************************************
-****************************************************************/
-
-static BOOL gpo_sd_check_read_access_bits(uint32 access_mask)
-{
- uint32 read_bits = SEC_RIGHTS_LIST_CONTENTS |
- SEC_RIGHTS_READ_ALL_PROP |
- SEC_RIGHTS_READ_PERMS;
-
- return (read_bits == (access_mask & read_bits));
-}
-#endif
-
-/****************************************************************
-****************************************************************/
-
-static BOOL gpo_sd_check_trustee_in_sid_token(const DOM_SID *trustee,
- const struct GPO_SID_TOKEN *token)
-{
- int i;
-
- if (sid_equal(trustee, &token->object_sid)) {
- return True;
- }
-
- if (sid_equal(trustee, &token->primary_group_sid)) {
- return True;
- }
-
- for (i = 0; i < token->num_token_sids; i++) {
- if (sid_equal(trustee, &token->token_sids[i])) {
- return True;
- }
- }
-
- return False;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS gpo_sd_check_ace_denied_object(const SEC_ACE *ace,
- const struct GPO_SID_TOKEN *token)
-{
- if (gpo_sd_check_agp_access_bits(ace->access_mask) &&
- gpo_sd_check_trustee_in_sid_token(&ace->trustee, token)) {
- DEBUG(10,("gpo_sd_check_ace_denied_object: Access denied as of ace for %s\n",
- sid_string_static(&ace->trustee)));
- return NT_STATUS_ACCESS_DENIED;
- }
-
- return STATUS_MORE_ENTRIES;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS gpo_sd_check_ace_allowed_object(const SEC_ACE *ace,
- const struct GPO_SID_TOKEN *token)
-{
- if (gpo_sd_check_agp_access_bits(ace->access_mask) &&
- gpo_sd_check_trustee_in_sid_token(&ace->trustee, token)) {
- DEBUG(10,("gpo_sd_check_ace_allowed_object: Access granted as of ace for %s\n",
- sid_string_static(&ace->trustee)));
- return NT_STATUS_OK;
- }
-
- return STATUS_MORE_ENTRIES;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS gpo_sd_check_ace(const SEC_ACE *ace,
- const struct GPO_SID_TOKEN *token)
-{
- switch (ace->type) {
- case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT:
- return gpo_sd_check_ace_denied_object(ace, token);
- case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT:
- return gpo_sd_check_ace_allowed_object(ace, token);
- default:
- return STATUS_MORE_ENTRIES;
- }
-}
-
-/****************************************************************
-****************************************************************/
-
-NTSTATUS gpo_apply_security_filtering(const struct GROUP_POLICY_OBJECT *gpo,
- const struct GPO_SID_TOKEN *token)
-{
- SEC_DESC *sd = gpo->security_descriptor;
- SEC_ACL *dacl = NULL;
- NTSTATUS status = NT_STATUS_ACCESS_DENIED;
- int i;
-
- if (!token) {
- return NT_STATUS_INVALID_USER_BUFFER;
- }
-
- if (!sd) {
- return NT_STATUS_INVALID_SECURITY_DESCR;
- }
-
- dacl = sd->dacl;
- if (!dacl) {
- return NT_STATUS_INVALID_SECURITY_DESCR;
- }
-
- /* check all aces and only return NT_STATUS_OK (== Access granted) or
- * NT_STATUS_ACCESS_DENIED ( == Access denied) - the default is to
- * deny access */
-
- for (i = 0; i < dacl->num_aces; i ++) {
-
- status = gpo_sd_check_ace(&dacl->aces[i], token);
-
- if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
- return status;
- } else if (NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- continue;
- }
-
- return NT_STATUS_ACCESS_DENIED;
-}
diff --git a/source/libgpo/gpo_util.c b/source/libgpo/gpo_util.c
index 6b3f55bb9f7..9c74fc6a73a 100644
--- a/source/libgpo/gpo_util.c
+++ b/source/libgpo/gpo_util.c
@@ -221,71 +221,54 @@ void dump_gpo(TALLOC_CTX *mem_ctx, struct GROUP_POLICY_OBJECT *gpo, int debuglev
DEBUGADD(lvl,("link:\t\t\t%s\n", gpo->link));
DEBUGADD(lvl,("link_type:\t\t%d ", gpo->link_type));
switch (gpo->link_type) {
- case GP_LINK_UNKOWN:
- DEBUGADD(lvl,("GP_LINK_UNKOWN\n"));
- break;
- case GP_LINK_OU:
- DEBUGADD(lvl,("GP_LINK_OU\n"));
- break;
- case GP_LINK_DOMAIN:
- DEBUGADD(lvl,("GP_LINK_DOMAIN\n"));
- break;
- case GP_LINK_SITE:
- DEBUGADD(lvl,("GP_LINK_SITE\n"));
- break;
- case GP_LINK_MACHINE:
- DEBUGADD(lvl,("GP_LINK_MACHINE\n"));
- break;
- default:
- break;
+ case GP_LINK_UNKOWN:
+ DEBUGADD(lvl,("GP_LINK_UNKOWN\n"));
+ break;
+ case GP_LINK_OU:
+ DEBUGADD(lvl,("GP_LINK_OU\n"));
+ break;
+ case GP_LINK_DOMAIN:
+ DEBUGADD(lvl,("GP_LINK_DOMAIN\n"));
+ break;
+ case GP_LINK_SITE:
+ DEBUGADD(lvl,("GP_LINK_SITE\n"));
+ break;
+ case GP_LINK_MACHINE:
+ DEBUGADD(lvl,("GP_LINK_MACHINE\n"));
+ break;
+ default:
+ break;
}
- DEBUGADD(lvl,("machine_extensions:\t%s\n", gpo->machine_extensions));
-
if (gpo->machine_extensions) {
- struct GP_EXT *gp_ext = NULL;
+ struct GP_EXT gp_ext;
ADS_STATUS status;
+ DEBUGADD(lvl,("machine_extensions:\t%s\n", gpo->machine_extensions));
+
status = ads_parse_gp_ext(mem_ctx, gpo->machine_extensions, &gp_ext);
if (!ADS_ERR_OK(status)) {
return;
}
- dump_gp_ext(gp_ext, lvl);
+ dump_gp_ext(&gp_ext, lvl);
}
- DEBUGADD(lvl,("user_extensions:\t%s\n", gpo->user_extensions));
-
if (gpo->user_extensions) {
- struct GP_EXT *gp_ext = NULL;
+ struct GP_EXT gp_ext;
ADS_STATUS status;
+ DEBUGADD(lvl,("user_extensions:\t%s\n", gpo->user_extensions));
+
status = ads_parse_gp_ext(mem_ctx, gpo->user_extensions, &gp_ext);
if (!ADS_ERR_OK(status)) {
return;
}
- dump_gp_ext(gp_ext, lvl);
+ dump_gp_ext(&gp_ext, lvl);
}
}
-/****************************************************************
-****************************************************************/
-
-void dump_gpo_list(TALLOC_CTX *mem_ctx,
- struct GROUP_POLICY_OBJECT *gpo_list,
- int debuglevel)
-{
- struct GROUP_POLICY_OBJECT *gpo = NULL;
-
- for (gpo = gpo_list; gpo; gpo = gpo->next) {
- dump_gpo(mem_ctx, gpo, debuglevel);
- }
-}
-
-/****************************************************************
-****************************************************************/
-
void dump_gplink(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, struct GP_LINK *gp_link)
{
ADS_STATUS status;
@@ -301,14 +284,14 @@ void dump_gplink(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, struct GP_LINK *gp_link)
DEBUGADD(lvl,("gplink: %s\n", gp_link->gp_link));
DEBUGADD(lvl,("gpopts: %d ", gp_link->gp_opts));
switch (gp_link->gp_opts) {
- case GPOPTIONS_INHERIT:
- DEBUGADD(lvl,("GPOPTIONS_INHERIT\n"));
- break;
- case GPOPTIONS_BLOCK_INHERITANCE:
- DEBUGADD(lvl,("GPOPTIONS_BLOCK_INHERITANCE\n"));
- break;
- default:
- break;
+ case GPOPTIONS_INHERIT:
+ DEBUGADD(lvl,("GPOPTIONS_INHERIT\n"));
+ break;
+ case GPOPTIONS_BLOCK_INHERITANCE:
+ DEBUGADD(lvl,("GPOPTIONS_BLOCK_INHERITANCE\n"));
+ break;
+ default:
+ break;
}
DEBUGADD(lvl,("num links: %d\n", gp_link->num_links));
@@ -343,9 +326,6 @@ void dump_gplink(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, struct GP_LINK *gp_link)
}
}
-/****************************************************************
-****************************************************************/
-
ADS_STATUS process_extension_with_snapin(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
const char *extension_guid,
@@ -365,20 +345,17 @@ ADS_STATUS process_extension_with_snapin(ADS_STRUCT *ads,
DEBUG(10,("process_extension_with_snapin: no snapin handler for extension %s (%s) found\n",
extension_guid, snapin_guid));
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
-/****************************************************************
-****************************************************************/
-
ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
struct GROUP_POLICY_OBJECT *gpo,
- const char *extension_guid_filter,
+ const char *extension_guid,
uint32 flags)
{
ADS_STATUS status;
- struct GP_EXT *gp_ext = NULL;
+ struct GP_EXT gp_ext;
int i;
if (flags & GPO_LIST_FLAG_MACHINE) {
@@ -393,7 +370,7 @@ ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
} else {
/* nothing to apply */
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
} else {
@@ -407,40 +384,36 @@ ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
}
} else {
/* nothing to apply */
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
}
- for (i=0; i<gp_ext->num_exts; i++) {
+ for (i=0; i<gp_ext.num_exts; i++) {
- if (extension_guid_filter && !strequal(extension_guid_filter, gp_ext->extensions_guid[i])) {
+ if (extension_guid && !strequal(extension_guid, gp_ext.extensions_guid[i])) {
continue;
}
- status = process_extension_with_snapin(ads, mem_ctx,
- gp_ext->extensions_guid[i],
- gp_ext->snapins_guid[i]);
+ status = process_extension_with_snapin(ads, mem_ctx, gp_ext.extensions_guid[i],
+ gp_ext.snapins_guid[i]);
if (!ADS_ERR_OK(status)) {
return status;
}
}
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
-/****************************************************************
-****************************************************************/
-
ADS_STATUS gpo_process_gpo_list(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
- struct GROUP_POLICY_OBJECT *gpo_list,
+ struct GROUP_POLICY_OBJECT **gpo_list,
const char *extensions_guid,
uint32 flags)
{
ADS_STATUS status;
- struct GROUP_POLICY_OBJECT *gpo;
+ struct GROUP_POLICY_OBJECT *gpo = *gpo_list;
- for (gpo = gpo_list; gpo; gpo = gpo->next) {
+ for (gpo = *gpo_list; gpo; gpo = gpo->next) {
status = gpo_process_a_gpo(ads, mem_ctx, gpo,
extensions_guid, flags);
@@ -451,7 +424,7 @@ ADS_STATUS gpo_process_gpo_list(ADS_STRUCT *ads,
}
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
ADS_STATUS gpo_snapin_handler_none(ADS_STRUCT *ads,
@@ -461,7 +434,7 @@ ADS_STATUS gpo_snapin_handler_none(ADS_STRUCT *ads,
{
DEBUG(10,("gpo_snapin_handler_none\n"));
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
ADS_STATUS gpo_snapin_handler_security_settings(ADS_STRUCT *ads,
@@ -471,7 +444,7 @@ ADS_STATUS gpo_snapin_handler_security_settings(ADS_STRUCT *ads,
{
DEBUG(10,("gpo_snapin_handler_security_settings\n"));
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
ADS_STATUS gpo_lockout_policy(ADS_STRUCT *ads,
@@ -482,9 +455,6 @@ ADS_STATUS gpo_lockout_policy(ADS_STRUCT *ads,
return ADS_ERROR_NT(NT_STATUS_NOT_IMPLEMENTED);
}
-/****************************************************************
-****************************************************************/
-
ADS_STATUS gpo_password_policy(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
const char *hostname,
@@ -542,14 +512,14 @@ ADS_STATUS gpo_password_policy(ADS_STRUCT *ads,
ads_memfree(ads, dn);
- status = gpo_process_gpo_list(ads, mem_ctx, gpo_list,
+ status = gpo_process_gpo_list(ads, mem_ctx, &gpo_list,
cse_gpo_name_to_guid_string("Security"),
GPO_LIST_FLAG_MACHINE);
if (!ADS_ERR_OK(status)) {
return status;
}
- return ADS_SUCCESS;
+ return ADS_ERROR(LDAP_SUCCESS);
}
/****************************************************************
@@ -563,25 +533,22 @@ NTSTATUS check_refresh_gpo(ADS_STRUCT *ads,
struct cli_state **cli_out)
{
NTSTATUS result;
- char *server = NULL;
- char *share = NULL;
- char *nt_path = NULL;
- char *unix_path = NULL;
+ char *server, *share, *nt_path, *unix_path;
uint32 sysvol_gpt_version = 0;
- char *display_name = NULL;
+ char *display_name;
struct cli_state *cli = NULL;
- result = gpo_explode_filesyspath(mem_ctx, gpo->file_sys_path,
- &server, &share, &nt_path, &unix_path);
+ result = ads_gpo_explode_filesyspath(ads, mem_ctx, gpo->file_sys_path,
+ &server, &share, &nt_path, &unix_path);
if (!NT_STATUS_IS_OK(result)) {
goto out;
}
- result = gpo_get_sysvol_gpt_version(mem_ctx,
- unix_path,
- &sysvol_gpt_version,
- &display_name);
+ result = ads_gpo_get_sysvol_gpt_version(ads, mem_ctx,
+ unix_path,
+ &sysvol_gpt_version,
+ &display_name);
if (!NT_STATUS_IS_OK(result) &&
!NT_STATUS_EQUAL(result, NT_STATUS_NO_SUCH_FILE)) {
DEBUG(10,("check_refresh_gpo: failed to get local gpt version: %s\n",
@@ -610,15 +577,15 @@ NTSTATUS check_refresh_gpo(ADS_STRUCT *ads,
*cli_out = cli;
}
- result = gpo_fetch_files(mem_ctx, *cli_out, gpo);
+ result = ads_fetch_gpo_files(ads, mem_ctx, *cli_out, gpo);
if (!NT_STATUS_IS_OK(result)) {
goto out;
}
- result = gpo_get_sysvol_gpt_version(mem_ctx,
- unix_path,
- &sysvol_gpt_version,
- &display_name);
+ result = ads_gpo_get_sysvol_gpt_version(ads, mem_ctx,
+ unix_path,
+ &sysvol_gpt_version,
+ &display_name);
if (!NT_STATUS_IS_OK(result)) {
DEBUG(10,("check_refresh_gpo: failed to get local gpt version: %s\n",
nt_errstr(result)));
@@ -660,10 +627,6 @@ NTSTATUS check_refresh_gpo_list(ADS_STRUCT *ads,
struct cli_state *cli = NULL;
struct GROUP_POLICY_OBJECT *gpo;
- if (!gpo_list) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
for (gpo = gpo_list; gpo; gpo = gpo->next) {
result = check_refresh_gpo(ads, mem_ctx, gpo, &cli);
diff --git a/source/libmsrpc/cac_lsarpc.c b/source/libmsrpc/cac_lsarpc.c
index d8813fc2043..23b6b519ba3 100644
--- a/source/libmsrpc/cac_lsarpc.c
+++ b/source/libmsrpc/cac_lsarpc.c
@@ -139,7 +139,7 @@ int cac_LsaClosePolicy( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- hnd->status = rpccli_lsa_Close( pipe_hnd, mem_ctx, pol );
+ hnd->status = rpccli_lsa_close( pipe_hnd, mem_ctx, pol );
TALLOC_FREE( pol );
@@ -337,7 +337,7 @@ int cac_LsaGetSidsFromNames( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
rpccli_lsa_lookup_names( pipe_hnd, mem_ctx, op->in.pol,
num_names,
( const char ** ) op->in.names, NULL,
- 1, &sids, &types );
+ &sids, &types );
if ( NT_STATUS_IS_OK( hnd->status ) ) {
/*this is the easy part, just make the out.sids array */
@@ -662,7 +662,7 @@ int cac_LsaEnumAccountRights( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
op->in.pol, 1,
( const char ** ) &( op->in.
name ),
- NULL, 1, &user_sid, &type );
+ NULL, &user_sid, &type );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
@@ -928,7 +928,7 @@ int cac_LsaOpenAccount( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
op->in.pol, 1,
( const char ** ) &( op->in.
name ),
- NULL, 1, &user_sid, &type );
+ NULL, &user_sid, &type );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
@@ -998,7 +998,7 @@ int cac_LsaAddPrivileges( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
op->in.pol, 1,
( const char ** ) &( op->in.
name ),
- NULL, 1, &user_sid, &type );
+ NULL, &user_sid, &type );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
@@ -1060,7 +1060,7 @@ int cac_LsaRemovePrivileges( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
op->in.pol, 1,
( const char ** ) &( op->in.
name ),
- NULL, 1, &user_sid, &type );
+ NULL, &user_sid, &type );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
@@ -1122,7 +1122,7 @@ int cac_LsaClearPrivileges( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
op->in.pol, 1,
( const char ** ) &( op->in.
name ),
- NULL, 1, &user_sid, &type );
+ NULL, &user_sid, &type );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
@@ -1181,7 +1181,7 @@ int cac_LsaSetPrivileges( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
op->in.pol, 1,
( const char ** ) &( op->in.
name ),
- NULL, 1, &user_sid, &type );
+ NULL, &user_sid, &type );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
diff --git a/source/libmsrpc/cac_svcctl.c b/source/libmsrpc/cac_svcctl.c
index 71cdfba73e4..3d3034df15c 100644
--- a/source/libmsrpc/cac_svcctl.c
+++ b/source/libmsrpc/cac_svcctl.c
@@ -91,6 +91,7 @@ int cac_SvcClose( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
POLICY_HND * scm_hnd )
{
struct rpc_pipe_client *pipe_hnd = NULL;
+ WERROR err;
if ( !hnd )
return CAC_FAILURE;
@@ -111,7 +112,8 @@ int cac_SvcClose( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- hnd->status = rpccli_svcctl_CloseServiceHandle( pipe_hnd, mem_ctx, scm_hnd );
+ err = rpccli_svcctl_close_service( pipe_hnd, mem_ctx, scm_hnd );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
diff --git a/source/libmsrpc/cac_winreg.c b/source/libmsrpc/cac_winreg.c
index ee9d16aa64f..d8d2047be4e 100644
--- a/source/libmsrpc/cac_winreg.c
+++ b/source/libmsrpc/cac_winreg.c
@@ -22,8 +22,8 @@
#include "libmsrpc.h"
#include "libmsrpc_internal.h"
-NTSTATUS cac_delete_subkeys_recursive(struct rpc_pipe_client * pipe_hnd,
- TALLOC_CTX * mem_ctx, POLICY_HND * key);
+WERROR cac_delete_subkeys_recursive( struct rpc_pipe_client * pipe_hnd,
+ TALLOC_CTX * mem_ctx, POLICY_HND * key );
int cac_RegConnect( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegConnect *op )
@@ -31,6 +31,7 @@ int cac_RegConnect( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
SMBCSRV *srv = NULL;
struct rpc_pipe_client *pipe_hnd = NULL;
POLICY_HND *key = NULL;
+ WERROR err;
if ( !hnd )
return CAC_FAILURE;
@@ -56,7 +57,7 @@ int cac_RegConnect( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
if ( !
( pipe_hnd =
cli_rpc_pipe_open_noauth( srv->cli, PI_WINREG,
- &hnd->status ) ) ) {
+ &( hnd->status ) ) ) ) {
return CAC_FAILURE;
}
@@ -75,9 +76,9 @@ int cac_RegConnect( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- hnd->status =
- rpccli_winreg_Connect( pipe_hnd, mem_ctx, op->in.root,
- op->in.access, key );
+ err = rpccli_reg_connect( pipe_hnd, mem_ctx, op->in.root,
+ op->in.access, key );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -92,6 +93,7 @@ int cac_RegClose( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
POLICY_HND * key )
{
struct rpc_pipe_client *pipe_hnd = NULL;
+ WERROR err;
if ( !hnd )
return CAC_FAILURE;
@@ -112,7 +114,8 @@ int cac_RegClose( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- hnd->status = rpccli_winreg_CloseKey( pipe_hnd, mem_ctx, key );
+ err = rpccli_reg_close( pipe_hnd, mem_ctx, key );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -125,7 +128,7 @@ int cac_RegOpenKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegOpenKey *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- struct winreg_String key_string;
+ WERROR err;
POLICY_HND *key_out;
POLICY_HND *parent_key;
@@ -190,11 +193,9 @@ int cac_RegOpenKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- key_string.name = key_name;
- hnd->status =
- rpccli_winreg_OpenKey( pipe_hnd, mem_ctx, parent_key,
- key_string, 0, op->in.access,
- key_out );
+ err = rpccli_reg_open_entry( pipe_hnd, mem_ctx, parent_key, key_name,
+ op->in.access, key_out );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -202,9 +203,8 @@ int cac_RegOpenKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
if ( !op->in.parent_key ) {
/*then close the one that we opened above */
- hnd->status =
- rpccli_winreg_CloseKey( pipe_hnd, mem_ctx,
- parent_key );
+ err = rpccli_reg_close( pipe_hnd, mem_ctx, parent_key );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -220,6 +220,7 @@ int cac_RegEnumKeys( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegEnumKeys *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
+ WERROR err;
/*buffers for rpccli_reg_enum_key call */
fstring key_name_in;
@@ -235,10 +236,7 @@ int cac_RegEnumKeys( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
if ( !hnd )
return CAC_FAILURE;
- /* This is to avoid useless rpc calls, if the last call
- exhausted all the keys, then we don't need to go
- through everything again */
-
+ /*this is to avoid useless rpc calls, if the last call exhausted all the keys, then we don't need to go through everything again */
if ( NT_STATUS_V( hnd->status ) ==
NT_STATUS_V( NT_STATUS_GUIDS_EXHAUSTED ) )
return CAC_FAILURE;
@@ -259,41 +257,43 @@ int cac_RegEnumKeys( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- /* The only way to know how many keys to expect is to
- assume max_keys keys will be found */
-
- key_names_out = TALLOC_ARRAY( mem_ctx, char *, op->in.max_keys );
- if ( !key_names_out ) {
- hnd->status = NT_STATUS_NO_MEMORY;
- return CAC_FAILURE;
- }
+ /**the only way to know how many keys to expect is to assume max_keys keys will be found*/
+ if (op->in.max_keys) {
+ key_names_out = TALLOC_ARRAY( mem_ctx, char *, op->in.max_keys );
+ if ( !key_names_out ) {
+ hnd->status = NT_STATUS_NO_MEMORY;
+ return CAC_FAILURE;
+ }
- class_names_out = TALLOC_ARRAY( mem_ctx, char *, op->in.max_keys );
- if ( !class_names_out ) {
- hnd->status = NT_STATUS_NO_MEMORY;
- TALLOC_FREE( key_names_out );
- return CAC_FAILURE;
- }
+ class_names_out = TALLOC_ARRAY( mem_ctx, char *, op->in.max_keys );
+ if ( !class_names_out ) {
+ hnd->status = NT_STATUS_NO_MEMORY;
+ TALLOC_FREE( key_names_out );
+ return CAC_FAILURE;
+ }
- mod_times_out = TALLOC_ARRAY( mem_ctx, time_t, op->in.max_keys );
- if ( !mod_times_out ) {
- hnd->status = NT_STATUS_NO_MEMORY;
- TALLOC_FREE( key_names_out );
- TALLOC_FREE( class_names_out );
+ mod_times_out = TALLOC_ARRAY( mem_ctx, time_t, op->in.max_keys );
+ if ( !mod_times_out ) {
+ hnd->status = NT_STATUS_NO_MEMORY;
+ TALLOC_FREE( key_names_out );
+ TALLOC_FREE( class_names_out );
- return CAC_FAILURE;
+ return CAC_FAILURE;
+ }
+ } else {
+ key_names_out = NULL;
+ class_names_out = NULL;
+ mod_times_out = NULL;
}
resume_idx = op->out.resume_idx;
do {
-#if 0
- hnd->status =
- rpccli_winreg_EnumKey( pipe_hnd, mem_ctx, op->in.key,
- resume_idx, key_name_in,
- class_name_in,
- &mod_times_out );
-#endif
+ err = rpccli_reg_enum_key( pipe_hnd, mem_ctx, op->in.key,
+ resume_idx, key_name_in,
+ class_name_in,
+ &mod_times_out[num_keys_out] );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
/*don't increment any values */
@@ -334,10 +334,11 @@ int cac_RegCreateKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegCreateKey *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
+ WERROR err;
+
POLICY_HND *key_out;
+
struct RegOpenKey rok;
- struct winreg_String key_string, class_string;
- enum winreg_CreateAction action = 0;
if ( !hnd )
return CAC_FAILURE;
@@ -378,13 +379,10 @@ int cac_RegCreateKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- key_string.name = op->in.key_name;
- class_string.name = op->in.class_name;
- hnd->status =
- rpccli_winreg_CreateKey( pipe_hnd, mem_ctx, op->in.parent_key,
- key_string, class_string, 0,
- op->in.access, NULL, key_out,
- &action );
+ err = rpccli_reg_create_key_ex( pipe_hnd, mem_ctx, op->in.parent_key,
+ op->in.key_name, op->in.class_name,
+ op->in.access, key_out );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -396,97 +394,60 @@ int cac_RegCreateKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
}
-NTSTATUS cac_delete_subkeys_recursive( struct rpc_pipe_client * pipe_hnd,
+WERROR cac_delete_subkeys_recursive( struct rpc_pipe_client * pipe_hnd,
TALLOC_CTX * mem_ctx, POLICY_HND * key )
{
- POLICY_HND subkey;
- fstring subkey_name;
- int cur_key = 0;
- NTSTATUS status;
- uint32 num_subkeys, max_subkeylen, max_classlen;
- uint32 num_values, max_valnamelen, maxvalbufsize;
- char *name_buffer;
- struct winreg_String class_string;
-
- NTTIME modtime;
- uint32 secdescsize;
-
- /* First get the max subkey name length */
-
- class_string.name = NULL;
- status = rpccli_winreg_QueryInfoKey( pipe_hnd, mem_ctx, key,
- &class_string, &num_subkeys,
- &max_subkeylen, &max_classlen,
- &num_values, &max_valnamelen,
- &maxvalbufsize, &secdescsize,
- &modtime );
-
-
- if ( !NT_STATUS_IS_OK( status ) ) {
- return status;
- }
-
- if ( (name_buffer = TALLOC_ARRAY( mem_ctx, char, max_subkeylen )) == NULL ) {
- d_fprintf(stderr, "Memory allocation error.\n");
- return NT_STATUS_NO_MEMORY;
- }
+ /*NOTE: using cac functions might result in a big(ger) memory bloat, and would probably be far less efficient
+ * so we use the cli_reg functions directly*/
+ WERROR err = WERR_OK;
- while ( NT_STATUS_IS_OK( status ) ) {
- struct winreg_String key_string;
- struct winreg_StringBuf subkey_string;
- fstring subkeyname;
+ POLICY_HND subkey;
+ fstring subkey_name;
+ fstring class_buf;
+ time_t mod_time_buf;
- memset( name_buffer, 0x0, max_subkeylen );
- subkey_string.name = name_buffer;
- subkey_string.length = 0;
- subkey_string.size = max_subkeylen;
+ int cur_key = 0;
- status = rpccli_winreg_EnumKey(pipe_hnd, mem_ctx, key, cur_key,
- &subkey_string, NULL, NULL);
+ while ( W_ERROR_IS_OK( err ) ) {
+ err = rpccli_reg_enum_key( pipe_hnd, mem_ctx, key, cur_key,
+ subkey_name, class_buf,
+ &mod_time_buf );
- if ( !NT_STATUS_IS_OK( status ) )
+ if ( !W_ERROR_IS_OK( err ) )
break;
- /* copy the keyname and add the terminating NULL */
-
- StrnCpy( subkeyname, subkey_string.name,
- MIN(subkey_string.length, sizeof(subkeyname)-1) );
- subkeyname[MIN(subkey_string.length, sizeof(subkeyname)-1)] = '\0';
-
/*try to open the key with full access */
+ err = rpccli_reg_open_entry( pipe_hnd, mem_ctx, key,
+ subkey_name, REG_KEY_ALL,
+ &subkey );
- key_string.name = subkeyname;
- status = rpccli_winreg_OpenKey( pipe_hnd, mem_ctx, key,
- key_string, 0, REG_KEY_ALL,
- &subkey );
-
- if ( !NT_STATUS_IS_OK( status ) )
+ if ( !W_ERROR_IS_OK( err ) )
break;
- status = cac_delete_subkeys_recursive( pipe_hnd, mem_ctx,
+ err = cac_delete_subkeys_recursive( pipe_hnd, mem_ctx,
&subkey );
- if ( !W_ERROR_EQUAL( ntstatus_to_werror(status), WERR_NO_MORE_ITEMS )
- && !NT_STATUS_IS_OK( status ) )
+ if ( !W_ERROR_EQUAL( err, WERR_NO_MORE_ITEMS )
+ && !W_ERROR_IS_OK( err ) )
break;
/*flush the key just to be safe */
- rpccli_winreg_FlushKey( pipe_hnd, mem_ctx, key );
+ rpccli_reg_flush_key( pipe_hnd, mem_ctx, key );
/*close the key that we opened */
- rpccli_winreg_CloseKey( pipe_hnd, mem_ctx, &subkey );
+ rpccli_reg_close( pipe_hnd, mem_ctx, &subkey );
/*now we delete the subkey */
- key_string.name = subkey_name;
- status = rpccli_winreg_DeleteKey( pipe_hnd, mem_ctx, key,
- key_string );
+ err = rpccli_reg_delete_key( pipe_hnd, mem_ctx, key,
+ subkey_name );
+
cur_key++;
}
- return status;
+ return err;
}
@@ -495,7 +456,7 @@ int cac_RegDeleteKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegDeleteKey *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- struct winreg_String key_string;
+ WERROR err;
if ( !hnd )
return CAC_FAILURE;
@@ -517,10 +478,7 @@ int cac_RegDeleteKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
}
if ( op->in.recursive ) {
-
- /* first open the key, and then delete all of
- it's subkeys recursively */
-
+ /*first open the key, and then delete all of it's subkeys recursively */
struct RegOpenKey rok;
ZERO_STRUCT( rok );
@@ -532,12 +490,14 @@ int cac_RegDeleteKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
if ( !cac_RegOpenKey( hnd, mem_ctx, &rok ) )
return CAC_FAILURE;
- hnd->status = cac_delete_subkeys_recursive( pipe_hnd, mem_ctx,
+ err = cac_delete_subkeys_recursive( pipe_hnd, mem_ctx,
rok.out.key );
/*close the key that we opened */
cac_RegClose( hnd, mem_ctx, rok.out.key );
+ hnd->status = werror_to_ntstatus( err );
+
if ( NT_STATUS_V( hnd->status ) !=
NT_STATUS_V( NT_STATUS_GUIDS_EXHAUSTED )
&& !NT_STATUS_IS_OK( hnd->status ) )
@@ -546,10 +506,9 @@ int cac_RegDeleteKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
/*now go on to actually delete the key */
}
- key_string.name = op->in.name;
- hnd->status =
- rpccli_winreg_DeleteKey( pipe_hnd, mem_ctx, op->in.parent_key,
- key_string );
+ err = rpccli_reg_delete_key( pipe_hnd, mem_ctx, op->in.parent_key,
+ op->in.name );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -562,7 +521,7 @@ int cac_RegDeleteValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegDeleteValue *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- struct winreg_String value_string;
+ WERROR err;
if ( !hnd )
return CAC_FAILURE;
@@ -583,10 +542,9 @@ int cac_RegDeleteValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- value_string.name = op->in.name;
- hnd->status =
- rpccli_winreg_DeleteValue( pipe_hnd, mem_ctx,
- op->in.parent_key, value_string );
+ err = rpccli_reg_delete_val( pipe_hnd, mem_ctx, op->in.parent_key,
+ op->in.name );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -595,10 +553,21 @@ int cac_RegDeleteValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_SUCCESS;
}
+#if 0
+
+/* JRA - disabled until fix. */
+
+/* This code is currently broken so disable it - it needs to handle the ERROR_MORE_DATA
+ cleanly and resubmit the query. */
+
int cac_RegQueryKeyInfo( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegQueryKeyInfo *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
+ WERROR err;
+
+ char *class_name_out = NULL;
+ uint32 class_len = 0;
uint32 num_subkeys_out = 0;
uint32 long_subkey_out = 0;
uint32 long_class_out = 0;
@@ -607,7 +576,6 @@ int cac_RegQueryKeyInfo( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
uint32 long_data_out = 0;
uint32 secdesc_size = 0;
NTTIME mod_time;
- struct winreg_String class_string;
if ( !hnd )
return CAC_FAILURE;
@@ -628,24 +596,35 @@ int cac_RegQueryKeyInfo( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- hnd->status = rpccli_winreg_QueryInfoKey( pipe_hnd, mem_ctx,
- op->in.key,
- &class_string,
- &num_subkeys_out,
- &long_subkey_out,
- &long_class_out,
- &num_values_out,
- &long_value_out,
- &long_data_out,
- &secdesc_size, &mod_time );
+ err = rpccli_reg_query_key( pipe_hnd, mem_ctx, op->in.key,
+ class_name_out,
+ &class_len,
+ &num_subkeys_out,
+ &long_subkey_out,
+ &long_class_out,
+ &num_values_out,
+ &long_value_out,
+ &long_data_out,
+ &secdesc_size, &mod_time );
+
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
- if ( !class_string.name ) {
+ if ( !class_name_out ) {
op->out.class_name = talloc_strdup( mem_ctx, "" );
- } else {
- op->out.class_name = talloc_strdup( mem_ctx, class_string.name );
+ } else if ( class_len != 0 && class_name_out[class_len - 1] != '\0' ) {
+ /*then we need to add a '\0' */
+ op->out.class_name =
+ TALLOC_SIZE( mem_ctx,
+ sizeof( char ) * ( class_len + 1 ) );
+
+ memcpy( op->out.class_name, class_name_out, class_len );
+
+ op->out.class_name[class_len] = '\0';
+ } else { /*then everything worked out fine in the function */
+ op->out.class_name = talloc_strdup( mem_ctx, class_name_out );
}
if ( !op->out.class_name ) {
@@ -660,22 +639,21 @@ int cac_RegQueryKeyInfo( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
op->out.longest_value_name = long_value_out;
op->out.longest_value_data = long_data_out;
op->out.security_desc_size = secdesc_size;
- op->out.last_write_time = nt_time_to_unix( mod_time );
+ op->out.last_write_time = nt_time_to_unix( &mod_time );
return CAC_FAILURE;
}
+#endif
int cac_RegQueryValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegQueryValue *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- struct winreg_String value_string;
+ WERROR err;
+
+ uint32 val_type;
REGVAL_BUFFER buffer;
REG_VALUE_DATA *data_out = NULL;
- enum winreg_Type val_type;
- uint8 *buf;
- uint32 buf_size = 4096;
- uint32 length = 0;
if ( !hnd )
return CAC_FAILURE;
@@ -696,22 +674,13 @@ int cac_RegQueryValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- value_string.name = op->in.val_name;
-
- if ( ( buf = TALLOC_ARRAY( mem_ctx, uint8, buf_size ) ) == NULL ) {
- hnd->status = NT_STATUS_NO_MEMORY;
- return CAC_FAILURE;
- }
-
- hnd->status = rpccli_winreg_QueryValue( pipe_hnd, mem_ctx, op->in.key,
- value_string, &val_type, buf,
- &buf_size, &length );
+ err = rpccli_reg_query_value( pipe_hnd, mem_ctx, op->in.key,
+ op->in.val_name, &val_type, &buffer );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
- init_regval_buffer( &buffer, buf, length );
-
data_out = cac_MakeRegValueData( mem_ctx, val_type, buffer );
if ( !data_out ) {
if ( errno == ENOMEM )
@@ -733,27 +702,23 @@ int cac_RegEnumValues( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegEnumValues *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- char *name_buffer;
+ WERROR err;
+
+ /*buffers for rpccli_reg_enum_key call */
+ fstring val_name_buf;
REGVAL_BUFFER val_buf;
+
+ /*output buffers */
uint32 *types_out = NULL;
REG_VALUE_DATA **values_out = NULL;
char **val_names_out = NULL;
uint32 num_values_out = 0;
uint32 resume_idx = 0;
- uint32 num_subkeys, max_subkeylen, max_classlen;
- uint32 num_values, max_valnamelen, maxvalbufsize;
- struct winreg_String class_string;
- NTTIME modtime;
- uint32 secdescsize;
- uint8 *buffer;
if ( !hnd )
return CAC_FAILURE;
- /* This is to avoid useless rpc calls, if the last
- call exhausted all the keys, then we don't need
- to go through everything again */
-
+ /*this is to avoid useless rpc calls, if the last call exhausted all the keys, then we don't need to go through everything again */
if ( NT_STATUS_V( hnd->status ) ==
NT_STATUS_V( NT_STATUS_GUIDS_EXHAUSTED ) )
return CAC_FAILURE;
@@ -775,92 +740,54 @@ int cac_RegEnumValues( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
}
/*we need to assume that the max number of values will be enumerated */
- types_out = TALLOC_ARRAY( mem_ctx, uint32, op->in.max_values );
-
- if ( !types_out ) {
- hnd->status = NT_STATUS_NO_MEMORY;
- return CAC_FAILURE;
- }
-
- values_out = TALLOC_ARRAY( mem_ctx, REG_VALUE_DATA *,
- op->in.max_values );
-
- if ( !values_out ) {
- TALLOC_FREE( types_out );
- hnd->status = NT_STATUS_NO_MEMORY;
- return CAC_FAILURE;
- }
+ if (op->in.max_values) {
+ types_out =
+ ( uint32 * ) TALLOC_ARRAY( mem_ctx, int, op->in.max_values );
+ if ( !types_out ) {
+ hnd->status = NT_STATUS_NO_MEMORY;
+ return CAC_FAILURE;
+ }
- val_names_out = TALLOC_ARRAY( mem_ctx, char *, op->in.max_values );
+ values_out =
+ TALLOC_ARRAY( mem_ctx, REG_VALUE_DATA *, op->in.max_values );
+ if ( !values_out ) {
+ TALLOC_FREE( types_out );
+ hnd->status = NT_STATUS_NO_MEMORY;
+ return CAC_FAILURE;
+ }
- if ( !val_names_out ) {
- TALLOC_FREE( types_out );
- TALLOC_FREE( values_out );
- hnd->status = NT_STATUS_NO_MEMORY;
- return CAC_FAILURE;
+ val_names_out = TALLOC_ARRAY( mem_ctx, char *, op->in.max_values );
+ if ( !val_names_out ) {
+ TALLOC_FREE( types_out );
+ TALLOC_FREE( values_out );
+ hnd->status = NT_STATUS_NO_MEMORY;
+ return CAC_FAILURE;
+ }
+ } else {
+ types_out = NULL;
+ values_out = NULL;
+ val_names_out = NULL;
}
resume_idx = op->out.resume_idx;
-
- class_string.name = NULL;
- hnd->status = rpccli_winreg_QueryInfoKey( pipe_hnd, mem_ctx, op->in.key,
- &class_string, &num_subkeys,
- &max_subkeylen, &max_classlen,
- &num_values, &max_valnamelen,
- &maxvalbufsize, &secdescsize,
- &modtime );
-
- if ( !NT_STATUS_IS_OK(hnd->status) ) {
- TALLOC_FREE( types_out );
- TALLOC_FREE( values_out );
-
- return CAC_FAILURE;
- }
-
- if ( (buffer = TALLOC_ARRAY( mem_ctx, uint8, maxvalbufsize )) == NULL ) {
- TALLOC_FREE( types_out );
- TALLOC_FREE( values_out );
- hnd->status = NT_STATUS_NO_MEMORY;
-
- return CAC_FAILURE;
- }
-
- if ( (name_buffer = TALLOC_ARRAY(mem_ctx, char, max_valnamelen)) == NULL ) {
- TALLOC_FREE( types_out );
- TALLOC_FREE( values_out );
- TALLOC_FREE( buffer );
- hnd->status = NT_STATUS_NO_MEMORY;
-
- return CAC_FAILURE;
- }
-
do {
- uint32 data_size = maxvalbufsize;
- uint32 data_length = 0;
- struct winreg_ValNameBuf name_buf;
-
- memset( name_buffer, 0x0, max_valnamelen );
- name_buf.name = name_buffer;
- name_buf.size = max_valnamelen;
- name_buf.length = 0;
-
- hnd->status = rpccli_winreg_EnumValue( pipe_hnd, mem_ctx,
- op->in.key,
- resume_idx, &name_buf,
- &types_out[num_values_out], buffer,
- &data_size,
- &data_length );
+ ZERO_STRUCT( val_buf );
+
+ err = rpccli_reg_enum_val( pipe_hnd, mem_ctx, op->in.key,
+ resume_idx, val_name_buf,
+ &types_out[num_values_out],
+ &val_buf );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) )
break;
- ZERO_STRUCT( val_buf );
- init_regval_buffer( &val_buf, buffer, data_length );
-
- values_out[num_values_out] = cac_MakeRegValueData( mem_ctx,
- types_out[num_values_out],
- val_buf );
- val_names_out[num_values_out] = TALLOC_ARRAY( mem_ctx, char, name_buf.length+1 );
+ values_out[num_values_out] =
+ cac_MakeRegValueData( mem_ctx,
+ types_out[num_values_out],
+ val_buf );
+ val_names_out[num_values_out] =
+ talloc_strdup( mem_ctx, val_name_buf );
if ( !val_names_out[num_values_out]
|| !values_out[num_values_out] ) {
@@ -868,9 +795,6 @@ int cac_RegEnumValues( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
break;
}
- StrnCpy( val_names_out[num_values_out], name_buf.name, name_buf.length );
- (val_names_out[num_values_out])[name_buf.length] = '\0';
-
num_values_out++;
resume_idx++;
} while ( num_values_out < op->in.max_values );
@@ -891,7 +815,7 @@ int cac_RegSetValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegSetValue *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- struct winreg_String value_string;
+ WERROR err;
RPC_DATA_BLOB *buffer;
@@ -925,17 +849,16 @@ int cac_RegSetValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- value_string.name = op->in.val_name;
- hnd->status =
- rpccli_winreg_SetValue( pipe_hnd, mem_ctx, op->in.key,
- value_string, op->in.type,
- buffer->buffer, buffer->buf_len );
+ err = rpccli_reg_set_val( pipe_hnd, mem_ctx, op->in.key,
+ op->in.val_name, op->in.type, buffer );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
/*flush */
- hnd->status = rpccli_winreg_FlushKey( pipe_hnd, mem_ctx, op->in.key );
+ err = rpccli_reg_flush_key( pipe_hnd, mem_ctx, op->in.key );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
@@ -949,6 +872,8 @@ int cac_RegGetVersion( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegGetVersion *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
+ WERROR err;
+
uint32 version_out;
if ( !hnd )
@@ -970,9 +895,9 @@ int cac_RegGetVersion( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- hnd->status =
- rpccli_winreg_GetVersion( pipe_hnd, mem_ctx, op->in.key,
- &version_out );
+ err = rpccli_reg_getversion( pipe_hnd, mem_ctx, op->in.key,
+ &version_out );
+ hnd->status = werror_to_ntstatus( err );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
@@ -986,9 +911,12 @@ int cac_RegGetKeySecurity( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegGetKeySecurity *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- struct KeySecurityData keysec;
+ WERROR err;
+
+ uint32 buf_size;
+ SEC_DESC_BUF buf;
- ZERO_STRUCT( keysec );
+ ZERO_STRUCT( buf );
if ( !hnd )
return CAC_FAILURE;
@@ -1009,18 +937,17 @@ int cac_RegGetKeySecurity( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- hnd->status =
- rpccli_winreg_GetKeySecurity( pipe_hnd, mem_ctx, op->in.key,
- op->in.info_type, &keysec );
+ err = rpccli_reg_get_key_sec( pipe_hnd, mem_ctx, op->in.key,
+ op->in.info_type, &buf_size, &buf );
+ hnd->status = werror_to_ntstatus( err );
+
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
}
-#if 0 /* FIX ME!!!! unmarshall the security descriptor */
- op->out.size = buf.sd_size;
- op->out.descriptor = dup_sec_desc( mem_ctx, buf.sd );
-#endif
+ op->out.size = buf.len;
+ op->out.descriptor = dup_sec_desc( mem_ctx, buf.sec );
if ( op->out.descriptor == NULL ) {
return CAC_FAILURE;
@@ -1033,9 +960,7 @@ int cac_RegSetKeySecurity( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
struct RegSetKeySecurity *op )
{
struct rpc_pipe_client *pipe_hnd = NULL;
- struct KeySecurityData keysec;
-
- ZERO_STRUCT( keysec );
+ WERROR err;
if ( !hnd )
return CAC_FAILURE;
@@ -1057,10 +982,48 @@ int cac_RegSetKeySecurity( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
return CAC_FAILURE;
}
- /* FIXME!!! Marshall in the input sec_desc to struct KeySecurityData */
- hnd->status =
- rpccli_winreg_SetKeySecurity( pipe_hnd, mem_ctx, op->in.key,
- op->in.info_type, &keysec );
+ err = rpccli_reg_set_key_sec( pipe_hnd, mem_ctx, op->in.key,
+ op->in.info_type, op->in.size,
+ op->in.descriptor );
+ hnd->status = werror_to_ntstatus( err );
+
+
+ if ( !NT_STATUS_IS_OK( hnd->status ) ) {
+ return CAC_FAILURE;
+ }
+
+ return CAC_SUCCESS;
+}
+
+int cac_RegSaveKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
+ struct RegSaveKey *op )
+{
+ struct rpc_pipe_client *pipe_hnd = NULL;
+ WERROR err;
+
+ if ( !hnd )
+ return CAC_FAILURE;
+
+ if ( !hnd->_internal.ctx || !hnd->_internal.pipes[PI_WINREG] ) {
+ hnd->status = NT_STATUS_INVALID_HANDLE;
+ return CAC_FAILURE;
+ }
+
+ if ( !op || !op->in.key || !op->in.filename || !mem_ctx ) {
+ hnd->status = NT_STATUS_INVALID_PARAMETER;
+ return CAC_FAILURE;
+ }
+
+ pipe_hnd = cac_GetPipe( hnd, PI_WINREG );
+ if ( !pipe_hnd ) {
+ hnd->status = NT_STATUS_INVALID_HANDLE;
+ return CAC_FAILURE;
+ }
+
+ err = rpccli_reg_save_key( pipe_hnd, mem_ctx, op->in.key,
+ op->in.filename );
+ hnd->status = werror_to_ntstatus( err );
+
if ( !NT_STATUS_IS_OK( hnd->status ) ) {
return CAC_FAILURE;
@@ -1074,8 +1037,6 @@ int cac_Shutdown( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
{
SMBCSRV *srv = NULL;
struct rpc_pipe_client *pipe_hnd = NULL;
- struct initshutdown_String msg_string;
- struct initshutdown_String_sub s;
char *msg;
@@ -1099,18 +1060,18 @@ int cac_Shutdown( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
}
/*initialize for winreg pipe if we have to */
- if ( !hnd->_internal.pipes[PI_INITSHUTDOWN] ) {
+ if ( !hnd->_internal.pipes[PI_SHUTDOWN] ) {
if ( !
( pipe_hnd =
- cli_rpc_pipe_open_noauth( srv->cli, PI_INITSHUTDOWN,
+ cli_rpc_pipe_open_noauth( srv->cli, PI_SHUTDOWN,
&( hnd->status ) ) ) ) {
return CAC_FAILURE;
}
- hnd->_internal.pipes[PI_INITSHUTDOWN] = True;
+ hnd->_internal.pipes[PI_SHUTDOWN] = True;
}
- pipe_hnd = cac_GetPipe( hnd, PI_INITSHUTDOWN );
+ pipe_hnd = cac_GetPipe( hnd, PI_SHUTDOWN );
if ( !pipe_hnd ) {
hnd->status = NT_STATUS_INVALID_HANDLE;
return CAC_FAILURE;
@@ -1118,28 +1079,23 @@ int cac_Shutdown( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
msg = ( op->in.message !=
NULL ) ? op->in.message : talloc_strdup( mem_ctx, "" );
- msg_string.name = &s;
- msg_string.name->name = msg;
hnd->status = NT_STATUS_OK;
if ( hnd->_internal.srv_level > SRV_WIN_NT4 ) {
hnd->status =
- rpccli_initshutdown_InitEx( pipe_hnd, mem_ctx, NULL,
- &msg_string,
- op->in.timeout,
- op->in.reboot,
- op->in.force,
- op->in.reason );
+ rpccli_shutdown_init_ex( pipe_hnd, mem_ctx, msg,
+ op->in.timeout,
+ op->in.reboot, op->in.force,
+ op->in.reason );
}
if ( hnd->_internal.srv_level < SRV_WIN_2K
|| !NT_STATUS_IS_OK( hnd->status ) ) {
hnd->status =
- rpccli_initshutdown_Init( pipe_hnd, mem_ctx, NULL,
- &msg_string, op->in.timeout,
- op->in.reboot,
- op->in.force );
+ rpccli_shutdown_init( pipe_hnd, mem_ctx, msg,
+ op->in.timeout, op->in.reboot,
+ op->in.force );
hnd->_internal.srv_level = SRV_WIN_NT4;
}
@@ -1158,18 +1114,18 @@ int cac_AbortShutdown( CacServerHandle * hnd, TALLOC_CTX * mem_ctx )
if ( !hnd )
return CAC_FAILURE;
- if ( !hnd->_internal.ctx || !hnd->_internal.pipes[PI_INITSHUTDOWN] ) {
+ if ( !hnd->_internal.ctx || !hnd->_internal.pipes[PI_SHUTDOWN] ) {
hnd->status = NT_STATUS_INVALID_HANDLE;
return CAC_FAILURE;
}
- pipe_hnd = cac_GetPipe( hnd, PI_INITSHUTDOWN );
+ pipe_hnd = cac_GetPipe( hnd, PI_SHUTDOWN );
if ( !pipe_hnd ) {
hnd->status = NT_STATUS_INVALID_HANDLE;
return CAC_FAILURE;
}
- hnd->status = rpccli_initshutdown_Abort( pipe_hnd, mem_ctx, NULL );
+ hnd->status = rpccli_shutdown_abort( pipe_hnd, mem_ctx );
if ( !NT_STATUS_IS_OK( hnd->status ) )
return CAC_FAILURE;
diff --git a/source/libmsrpc/libmsrpc_internal.c b/source/libmsrpc/libmsrpc_internal.c
index a06915b72c7..1323567aaff 100644
--- a/source/libmsrpc/libmsrpc_internal.c
+++ b/source/libmsrpc/libmsrpc_internal.c
@@ -133,7 +133,7 @@ RPC_DATA_BLOB *cac_MakeRpcDataBlob( TALLOC_CTX * mem_ctx, uint32 data_type,
init_rpc_blob_uint32( blob, data.reg_dword );
break;
- case REG_DWORD_BIG_ENDIAN:
+ case REG_DWORD_BE:
init_rpc_blob_uint32( blob, data.reg_dword_be );
break;
@@ -281,7 +281,7 @@ REG_VALUE_DATA *cac_MakeRegValueData( TALLOC_CTX * mem_ctx, uint32 data_type,
data->reg_dword = *( ( uint32 * ) buf.buffer );
break;
- case REG_DWORD_BIG_ENDIAN:
+ case REG_DWORD_BE:
data->reg_dword_be = *( ( uint32 * ) buf.buffer );
break;
diff --git a/source/library-versions.in b/source/library-versions.in
deleted file mode 100644
index 3d95675b538..00000000000
--- a/source/library-versions.in
+++ /dev/null
@@ -1,9 +0,0 @@
-##
-## Basic script for defining the major and minor librrary revision numbers
-## Makefile_target:major:minor
-##
-bin/libsmbclient.@SHLIBEXT@:0:1
-bin/libsmbsharemodes.@SHLIBEXT@:0:2
-bin/libaddns.@SHLIBEXT@:0:1
-bin/libmsrpc.@SHLIBEXT@:0:1
-
diff --git a/source/librpc/gen_ndr/cli_dfs.c b/source/librpc/gen_ndr/cli_dfs.c
deleted file mode 100644
index 6484e132e3a..00000000000
--- a/source/librpc/gen_ndr/cli_dfs.c
+++ /dev/null
@@ -1,751 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_dfs.h"
-
-NTSTATUS rpccli_dfs_GetManagerVersion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, enum dfs_ManagerVersion *version)
-{
- struct dfs_GetManagerVersion r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_GetManagerVersion, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_GETMANAGERVERSION, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_GetManagerVersion, (ndr_push_flags_fn_t)ndr_push_dfs_GetManagerVersion);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_GetManagerVersion, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *version = *r.out.version;
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_dfs_Add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *path, const char *server, const char *share, const char *comment, uint32_t flags)
-{
- struct dfs_Add r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.path = path;
- r.in.server = server;
- r.in.share = share;
- r.in.comment = comment;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Add, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADD, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Add, (ndr_push_flags_fn_t)ndr_push_dfs_Add);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Add, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_Remove(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_entry_path, const char *servername, const char *sharename)
-{
- struct dfs_Remove r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.dfs_entry_path = dfs_entry_path;
- r.in.servername = servername;
- r.in.sharename = sharename;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Remove, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Remove, (ndr_push_flags_fn_t)ndr_push_dfs_Remove);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Remove, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_SetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_entry_path, const char *servername, const char *sharename, uint32_t level, union dfs_Info *info)
-{
- struct dfs_SetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.dfs_entry_path = dfs_entry_path;
- r.in.servername = servername;
- r.in.sharename = sharename;
- r.in.level = level;
- r.in.info = info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_SetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_SETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_SetInfo, (ndr_push_flags_fn_t)ndr_push_dfs_SetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_SetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_GetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_entry_path, const char *servername, const char *sharename, uint32_t level, union dfs_Info *info)
-{
- struct dfs_GetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.dfs_entry_path = dfs_entry_path;
- r.in.servername = servername;
- r.in.sharename = sharename;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_GetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_GETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_GetInfo, (ndr_push_flags_fn_t)ndr_push_dfs_GetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_GetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *total)
-{
- struct dfs_Enum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.level = level;
- r.in.bufsize = bufsize;
- r.in.info = info;
- r.in.total = total;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Enum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Enum, (ndr_push_flags_fn_t)ndr_push_dfs_Enum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Enum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
- if ( total ) {
- *total = *r.out.total;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_Rename(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_Rename r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Rename, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_RENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Rename, (ndr_push_flags_fn_t)ndr_push_dfs_Rename);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Rename, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_Move(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_Move r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Move, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MOVE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Move, (ndr_push_flags_fn_t)ndr_push_dfs_Move);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Move, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_ManagerGetConfigInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_ManagerGetConfigInfo r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_ManagerGetConfigInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MANAGERGETCONFIGINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_ManagerGetConfigInfo, (ndr_push_flags_fn_t)ndr_push_dfs_ManagerGetConfigInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_ManagerGetConfigInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_ManagerSendSiteInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_ManagerSendSiteInfo r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_ManagerSendSiteInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MANAGERSENDSITEINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_ManagerSendSiteInfo, (ndr_push_flags_fn_t)ndr_push_dfs_ManagerSendSiteInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_ManagerSendSiteInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_AddFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *dns_servername, const char *dfsname, const char *rootshare, const char *comment, const char *dfs_config_dn, uint8_t unknown1, uint32_t flags, struct dfs_UnknownStruct **unknown2)
-{
- struct dfs_AddFtRoot r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.servername = servername;
- r.in.dns_servername = dns_servername;
- r.in.dfsname = dfsname;
- r.in.rootshare = rootshare;
- r.in.comment = comment;
- r.in.dfs_config_dn = dfs_config_dn;
- r.in.unknown1 = unknown1;
- r.in.flags = flags;
- r.in.unknown2 = unknown2;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_AddFtRoot, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADDFTROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_AddFtRoot, (ndr_push_flags_fn_t)ndr_push_dfs_AddFtRoot);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_AddFtRoot, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( unknown2 ) {
- *unknown2 = *r.out.unknown2;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_RemoveFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *dns_servername, const char *dfsname, const char *rootshare, uint32_t flags, struct dfs_UnknownStruct **unknown)
-{
- struct dfs_RemoveFtRoot r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.servername = servername;
- r.in.dns_servername = dns_servername;
- r.in.dfsname = dfsname;
- r.in.rootshare = rootshare;
- r.in.flags = flags;
- r.in.unknown = unknown;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_RemoveFtRoot, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVEFTROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_RemoveFtRoot, (ndr_push_flags_fn_t)ndr_push_dfs_RemoveFtRoot);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_RemoveFtRoot, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( unknown ) {
- *unknown = *r.out.unknown;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_AddStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare, const char *comment, uint32_t flags)
-{
- struct dfs_AddStdRoot r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.servername = servername;
- r.in.rootshare = rootshare;
- r.in.comment = comment;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_AddStdRoot, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADDSTDROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_AddStdRoot, (ndr_push_flags_fn_t)ndr_push_dfs_AddStdRoot);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_AddStdRoot, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_RemoveStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare, uint32_t flags)
-{
- struct dfs_RemoveStdRoot r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.servername = servername;
- r.in.rootshare = rootshare;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_RemoveStdRoot, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVESTDROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_RemoveStdRoot, (ndr_push_flags_fn_t)ndr_push_dfs_RemoveStdRoot);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_RemoveStdRoot, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_ManagerInitialize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, uint32_t flags)
-{
- struct dfs_ManagerInitialize r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.servername = servername;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_ManagerInitialize, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MANAGERINITIALIZE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_ManagerInitialize, (ndr_push_flags_fn_t)ndr_push_dfs_ManagerInitialize);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_ManagerInitialize, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_AddStdRootForced(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare, const char *comment, const char *store)
-{
- struct dfs_AddStdRootForced r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.servername = servername;
- r.in.rootshare = rootshare;
- r.in.comment = comment;
- r.in.store = store;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_AddStdRootForced, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADDSTDROOTFORCED, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_AddStdRootForced, (ndr_push_flags_fn_t)ndr_push_dfs_AddStdRootForced);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_AddStdRootForced, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_GetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_GetDcAddress r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_GetDcAddress, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_GETDCADDRESS, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_GetDcAddress, (ndr_push_flags_fn_t)ndr_push_dfs_GetDcAddress);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_GetDcAddress, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_SetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_SetDcAddress r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_SetDcAddress, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_SETDCADDRESS, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_SetDcAddress, (ndr_push_flags_fn_t)ndr_push_dfs_SetDcAddress);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_SetDcAddress, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_FlushFtTable(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare)
-{
- struct dfs_FlushFtTable r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.servername = servername;
- r.in.rootshare = rootshare;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_FlushFtTable, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_FLUSHFTTABLE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_FlushFtTable, (ndr_push_flags_fn_t)ndr_push_dfs_FlushFtTable);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_FlushFtTable, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_Add2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_Add2 r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Add2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADD2, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Add2, (ndr_push_flags_fn_t)ndr_push_dfs_Add2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Add2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_Remove2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_Remove2 r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Remove2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVE2, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Remove2, (ndr_push_flags_fn_t)ndr_push_dfs_Remove2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Remove2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_name, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *total)
-{
- struct dfs_EnumEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.dfs_name = dfs_name;
- r.in.level = level;
- r.in.bufsize = bufsize;
- r.in.info = info;
- r.in.total = total;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_EnumEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ENUMEX, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_EnumEx, (ndr_push_flags_fn_t)ndr_push_dfs_EnumEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_EnumEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
- if ( total ) {
- *total = *r.out.total;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_dfs_SetInfo2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct dfs_SetInfo2 r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_SetInfo2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_SETINFO2, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_SetInfo2, (ndr_push_flags_fn_t)ndr_push_dfs_SetInfo2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_SetInfo2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
diff --git a/source/librpc/gen_ndr/cli_dfs.h b/source/librpc/gen_ndr/cli_dfs.h
deleted file mode 100644
index 16088e3034a..00000000000
--- a/source/librpc/gen_ndr/cli_dfs.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "librpc/gen_ndr/ndr_dfs.h"
-#ifndef __CLI_NETDFS__
-#define __CLI_NETDFS__
-NTSTATUS rpccli_dfs_GetManagerVersion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, enum dfs_ManagerVersion *version);
-NTSTATUS rpccli_dfs_Add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *path, const char *server, const char *share, const char *comment, uint32_t flags);
-NTSTATUS rpccli_dfs_Remove(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_entry_path, const char *servername, const char *sharename);
-NTSTATUS rpccli_dfs_SetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_entry_path, const char *servername, const char *sharename, uint32_t level, union dfs_Info *info);
-NTSTATUS rpccli_dfs_GetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_entry_path, const char *servername, const char *sharename, uint32_t level, union dfs_Info *info);
-NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *total);
-NTSTATUS rpccli_dfs_Rename(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_Move(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_ManagerGetConfigInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_ManagerSendSiteInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_AddFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *dns_servername, const char *dfsname, const char *rootshare, const char *comment, const char *dfs_config_dn, uint8_t unknown1, uint32_t flags, struct dfs_UnknownStruct **unknown2);
-NTSTATUS rpccli_dfs_RemoveFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *dns_servername, const char *dfsname, const char *rootshare, uint32_t flags, struct dfs_UnknownStruct **unknown);
-NTSTATUS rpccli_dfs_AddStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare, const char *comment, uint32_t flags);
-NTSTATUS rpccli_dfs_RemoveStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare, uint32_t flags);
-NTSTATUS rpccli_dfs_ManagerInitialize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, uint32_t flags);
-NTSTATUS rpccli_dfs_AddStdRootForced(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare, const char *comment, const char *store);
-NTSTATUS rpccli_dfs_GetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_SetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_FlushFtTable(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *servername, const char *rootshare);
-NTSTATUS rpccli_dfs_Add2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_Remove2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *dfs_name, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *total);
-NTSTATUS rpccli_dfs_SetInfo2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-#endif /* __CLI_NETDFS__ */
diff --git a/source/librpc/gen_ndr/cli_echo.c b/source/librpc/gen_ndr/cli_echo.c
deleted file mode 100644
index ee7e0f61144..00000000000
--- a/source/librpc/gen_ndr/cli_echo.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_echo.h"
-
-NTSTATUS rpccli_echo_AddOne(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t in_data, uint32_t *out_data)
-{
- struct echo_AddOne r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.in_data = in_data;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_AddOne, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_ADDONE, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_AddOne, (ndr_push_flags_fn_t)ndr_push_echo_AddOne);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_AddOne, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *out_data = *r.out.out_data;
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *in_data, uint8_t *out_data)
-{
- struct echo_EchoData r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.len = len;
- r.in.in_data = in_data;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_EchoData, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_ECHODATA, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_EchoData, (ndr_push_flags_fn_t)ndr_push_echo_EchoData);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_EchoData, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(out_data, r.out.out_data, r.in.len);
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_SinkData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *data)
-{
- struct echo_SinkData r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.len = len;
- r.in.data = data;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_SinkData, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_SINKDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_SinkData, (ndr_push_flags_fn_t)ndr_push_echo_SinkData);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_SinkData, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *data)
-{
- struct echo_SourceData r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.len = len;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_SourceData, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_SOURCEDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_SourceData, (ndr_push_flags_fn_t)ndr_push_echo_SourceData);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_SourceData, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(data, r.out.data, r.in.len);
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *s1, const char **s2)
-{
- struct echo_TestCall r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.s1 = s1;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestCall, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTCALL, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestCall, (ndr_push_flags_fn_t)ndr_push_echo_TestCall);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestCall, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *s2 = *r.out.s2;
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_TestCall2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t level, union echo_Info *info)
-{
- struct echo_TestCall2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestCall2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTCALL2, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestCall2, (ndr_push_flags_fn_t)ndr_push_echo_TestCall2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestCall2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_echo_TestSleep(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t seconds)
-{
- struct echo_TestSleep r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.seconds = seconds;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestSleep, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTSLEEP, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestSleep, (ndr_push_flags_fn_t)ndr_push_echo_TestSleep);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestSleep, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_TestEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, enum echo_Enum1 *foo1, struct echo_Enum2 *foo2, union echo_Enum3 *foo3)
-{
- struct echo_TestEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.foo1 = foo1;
- r.in.foo2 = foo2;
- r.in.foo3 = foo3;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestEnum, (ndr_push_flags_fn_t)ndr_push_echo_TestEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *foo1 = *r.out.foo1;
- *foo2 = *r.out.foo2;
- *foo3 = *r.out.foo3;
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_TestSurrounding(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct echo_Surrounding *data)
-{
- struct echo_TestSurrounding r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.data = data;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestSurrounding, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTSURROUNDING, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestSurrounding, (ndr_push_flags_fn_t)ndr_push_echo_TestSurrounding);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestSurrounding, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *data = *r.out.data;
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_echo_TestDoublePointer(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t ***data)
-{
- struct echo_TestDoublePointer r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.data = data;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestDoublePointer, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTDOUBLEPOINTER, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestDoublePointer, (ndr_push_flags_fn_t)ndr_push_echo_TestDoublePointer);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestDoublePointer, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
diff --git a/source/librpc/gen_ndr/cli_echo.h b/source/librpc/gen_ndr/cli_echo.h
deleted file mode 100644
index d7e7f317048..00000000000
--- a/source/librpc/gen_ndr/cli_echo.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "librpc/gen_ndr/ndr_echo.h"
-#ifndef __CLI_RPCECHO__
-#define __CLI_RPCECHO__
-NTSTATUS rpccli_echo_AddOne(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t in_data, uint32_t *out_data);
-NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *in_data, uint8_t *out_data);
-NTSTATUS rpccli_echo_SinkData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *data);
-NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *data);
-NTSTATUS rpccli_echo_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *s1, const char **s2);
-NTSTATUS rpccli_echo_TestCall2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t level, union echo_Info *info);
-NTSTATUS rpccli_echo_TestSleep(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t seconds);
-NTSTATUS rpccli_echo_TestEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, enum echo_Enum1 *foo1, struct echo_Enum2 *foo2, union echo_Enum3 *foo3);
-NTSTATUS rpccli_echo_TestSurrounding(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct echo_Surrounding *data);
-NTSTATUS rpccli_echo_TestDoublePointer(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t ***data);
-#endif /* __CLI_RPCECHO__ */
diff --git a/source/librpc/gen_ndr/cli_epmapper.c b/source/librpc/gen_ndr/cli_epmapper.c
deleted file mode 100644
index 4ca491d70d1..00000000000
--- a/source/librpc/gen_ndr/cli_epmapper.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_epmapper.h"
-
-NTSTATUS rpccli_epm_Insert(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_ents, struct epm_entry_t *entries, uint32_t replace)
-{
- struct epm_Insert r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.num_ents = num_ents;
- r.in.entries = entries;
- r.in.replace = replace;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Insert, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_INSERT, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_Insert, (ndr_push_flags_fn_t)ndr_push_epm_Insert);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Insert, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_epm_Delete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_ents, struct epm_entry_t *entries)
-{
- struct epm_Delete r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.num_ents = num_ents;
- r.in.entries = entries;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Delete, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_DELETE, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_Delete, (ndr_push_flags_fn_t)ndr_push_epm_Delete);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Delete, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_epm_Lookup(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t inquiry_type, struct GUID *object, struct rpc_if_id_t *interface_id, uint32_t vers_option, struct policy_handle *entry_handle, uint32_t max_ents, uint32_t *num_ents, struct epm_entry_t *entries)
-{
- struct epm_Lookup r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.inquiry_type = inquiry_type;
- r.in.object = object;
- r.in.interface_id = interface_id;
- r.in.vers_option = vers_option;
- r.in.entry_handle = entry_handle;
- r.in.max_ents = max_ents;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Lookup, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_LOOKUP, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_Lookup, (ndr_push_flags_fn_t)ndr_push_epm_Lookup);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Lookup, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *entry_handle = *r.out.entry_handle;
- *num_ents = *r.out.num_ents;
- memcpy(entries, r.out.entries, r.in.max_ents);
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_epm_Map(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct GUID *object, struct epm_twr_t *map_tower, struct policy_handle *entry_handle, uint32_t max_towers, uint32_t *num_towers, struct epm_twr_p_t *towers)
-{
- struct epm_Map r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.object = object;
- r.in.map_tower = map_tower;
- r.in.entry_handle = entry_handle;
- r.in.max_towers = max_towers;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Map, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_MAP, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_Map, (ndr_push_flags_fn_t)ndr_push_epm_Map);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Map, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *entry_handle = *r.out.entry_handle;
- *num_towers = *r.out.num_towers;
- memcpy(towers, r.out.towers, r.in.max_towers);
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_epm_LookupHandleFree(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *entry_handle)
-{
- struct epm_LookupHandleFree r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.entry_handle = entry_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_LookupHandleFree, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_LOOKUPHANDLEFREE, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_LookupHandleFree, (ndr_push_flags_fn_t)ndr_push_epm_LookupHandleFree);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_LookupHandleFree, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *entry_handle = *r.out.entry_handle;
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_epm_InqObject(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct GUID *epm_object)
-{
- struct epm_InqObject r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.epm_object = epm_object;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_InqObject, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_INQOBJECT, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_InqObject, (ndr_push_flags_fn_t)ndr_push_epm_InqObject);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_InqObject, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_epm_MgmtDelete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t object_speced, struct GUID *object, struct epm_twr_t *tower)
-{
- struct epm_MgmtDelete r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.object_speced = object_speced;
- r.in.object = object;
- r.in.tower = tower;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_MgmtDelete, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_MGMTDELETE, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_MgmtDelete, (ndr_push_flags_fn_t)ndr_push_epm_MgmtDelete);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_MgmtDelete, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
-NTSTATUS rpccli_epm_MapAuth(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct epm_MapAuth r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_MapAuth, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EPMAPPER, DCERPC_EPM_MAPAUTH, &r, (ndr_pull_flags_fn_t)ndr_pull_epm_MapAuth, (ndr_push_flags_fn_t)ndr_push_epm_MapAuth);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_MapAuth, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return NT_STATUS_OK;
-}
-
diff --git a/source/librpc/gen_ndr/cli_epmapper.h b/source/librpc/gen_ndr/cli_epmapper.h
deleted file mode 100644
index 88e05a4600a..00000000000
--- a/source/librpc/gen_ndr/cli_epmapper.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "librpc/gen_ndr/ndr_epmapper.h"
-#ifndef __CLI_EPMAPPER__
-#define __CLI_EPMAPPER__
-NTSTATUS rpccli_epm_Insert(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_ents, struct epm_entry_t *entries, uint32_t replace);
-NTSTATUS rpccli_epm_Delete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_ents, struct epm_entry_t *entries);
-NTSTATUS rpccli_epm_Lookup(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t inquiry_type, struct GUID *object, struct rpc_if_id_t *interface_id, uint32_t vers_option, struct policy_handle *entry_handle, uint32_t max_ents, uint32_t *num_ents, struct epm_entry_t *entries);
-NTSTATUS rpccli_epm_Map(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct GUID *object, struct epm_twr_t *map_tower, struct policy_handle *entry_handle, uint32_t max_towers, uint32_t *num_towers, struct epm_twr_p_t *towers);
-NTSTATUS rpccli_epm_LookupHandleFree(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *entry_handle);
-NTSTATUS rpccli_epm_InqObject(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct GUID *epm_object);
-NTSTATUS rpccli_epm_MgmtDelete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t object_speced, struct GUID *object, struct epm_twr_t *tower);
-NTSTATUS rpccli_epm_MapAuth(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-#endif /* __CLI_EPMAPPER__ */
diff --git a/source/librpc/gen_ndr/cli_eventlog.c b/source/librpc/gen_ndr/cli_eventlog.c
deleted file mode 100644
index 038a30526a3..00000000000
--- a/source/librpc/gen_ndr/cli_eventlog.c
+++ /dev/null
@@ -1,724 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_eventlog.h"
-
-NTSTATUS rpccli_eventlog_ClearEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *unknown)
-{
- struct eventlog_ClearEventLogW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.unknown = unknown;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ClearEventLogW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CLEAREVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ClearEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_ClearEventLogW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ClearEventLogW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_BackupEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_BackupEventLogW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_BackupEventLogW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_BACKUPEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_BackupEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_BackupEventLogW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_BackupEventLogW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_CloseEventLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct eventlog_CloseEventLog r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_CloseEventLog, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CLOSEEVENTLOG, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_CloseEventLog, (ndr_push_flags_fn_t)ndr_push_eventlog_CloseEventLog);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_CloseEventLog, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_DeregisterEventSource(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_DeregisterEventSource r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_DeregisterEventSource, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_DEREGISTEREVENTSOURCE, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_DeregisterEventSource, (ndr_push_flags_fn_t)ndr_push_eventlog_DeregisterEventSource);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_DeregisterEventSource, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_GetNumRecords(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *number)
-{
- struct eventlog_GetNumRecords r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_GetNumRecords, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_GETNUMRECORDS, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_GetNumRecords, (ndr_push_flags_fn_t)ndr_push_eventlog_GetNumRecords);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_GetNumRecords, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *number = *r.out.number;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_GetOldestRecord(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_GetOldestRecord r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_GetOldestRecord, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_GETOLDESTRECORD, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_GetOldestRecord, (ndr_push_flags_fn_t)ndr_push_eventlog_GetOldestRecord);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_GetOldestRecord, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_ChangeNotify(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_ChangeNotify r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ChangeNotify, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CHANGENOTIFY, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ChangeNotify, (ndr_push_flags_fn_t)ndr_push_eventlog_ChangeNotify);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ChangeNotify, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_OpenEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct eventlog_OpenUnknown0 *unknown0, struct lsa_String logname, struct lsa_String servername, uint32_t unknown2, uint32_t unknown3, struct policy_handle *handle)
-{
- struct eventlog_OpenEventLogW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.unknown0 = unknown0;
- r.in.logname = logname;
- r.in.servername = servername;
- r.in.unknown2 = unknown2;
- r.in.unknown3 = unknown3;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenEventLogW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenEventLogW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenEventLogW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_RegisterEventSourceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_RegisterEventSourceW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_RegisterEventSourceW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REGISTEREVENTSOURCEW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_RegisterEventSourceW, (ndr_push_flags_fn_t)ndr_push_eventlog_RegisterEventSourceW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_RegisterEventSourceW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_OpenBackupEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_OpenBackupEventLogW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenBackupEventLogW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENBACKUPEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenBackupEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenBackupEventLogW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenBackupEventLogW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_ReadEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t flags, uint32_t offset, uint32_t number_of_bytes, uint8_t *data, uint32_t *sent_size, uint32_t *real_size)
-{
- struct eventlog_ReadEventLogW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.flags = flags;
- r.in.offset = offset;
- r.in.number_of_bytes = number_of_bytes;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReadEventLogW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_READEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReadEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_ReadEventLogW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReadEventLogW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *data = *r.out.data;
- *sent_size = *r.out.sent_size;
- *real_size = *r.out.real_size;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_ReportEventW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_ReportEventW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReportEventW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REPORTEVENTW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReportEventW, (ndr_push_flags_fn_t)ndr_push_eventlog_ReportEventW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReportEventW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_ClearEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_ClearEventLogA r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ClearEventLogA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CLEAREVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ClearEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_ClearEventLogA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ClearEventLogA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_BackupEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_BackupEventLogA r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_BackupEventLogA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_BACKUPEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_BackupEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_BackupEventLogA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_BackupEventLogA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_OpenEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_OpenEventLogA r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenEventLogA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenEventLogA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenEventLogA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_RegisterEventSourceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_RegisterEventSourceA r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_RegisterEventSourceA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REGISTEREVENTSOURCEA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_RegisterEventSourceA, (ndr_push_flags_fn_t)ndr_push_eventlog_RegisterEventSourceA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_RegisterEventSourceA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_OpenBackupEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_OpenBackupEventLogA r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenBackupEventLogA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENBACKUPEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenBackupEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenBackupEventLogA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenBackupEventLogA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_ReadEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_ReadEventLogA r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReadEventLogA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_READEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReadEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_ReadEventLogA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReadEventLogA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_ReportEventA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_ReportEventA r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReportEventA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REPORTEVENTA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReportEventA, (ndr_push_flags_fn_t)ndr_push_eventlog_ReportEventA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReportEventA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_RegisterClusterSvc(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_RegisterClusterSvc r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_RegisterClusterSvc, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REGISTERCLUSTERSVC, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_RegisterClusterSvc, (ndr_push_flags_fn_t)ndr_push_eventlog_RegisterClusterSvc);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_RegisterClusterSvc, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_DeregisterClusterSvc(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_DeregisterClusterSvc r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_DeregisterClusterSvc, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_DEREGISTERCLUSTERSVC, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_DeregisterClusterSvc, (ndr_push_flags_fn_t)ndr_push_eventlog_DeregisterClusterSvc);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_DeregisterClusterSvc, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_WriteClusterEvents(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_WriteClusterEvents r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_WriteClusterEvents, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_WRITECLUSTEREVENTS, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_WriteClusterEvents, (ndr_push_flags_fn_t)ndr_push_eventlog_WriteClusterEvents);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_WriteClusterEvents, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_GetLogIntormation(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct eventlog_GetLogIntormation r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_GetLogIntormation, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_GETLOGINTORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_GetLogIntormation, (ndr_push_flags_fn_t)ndr_push_eventlog_GetLogIntormation);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_GetLogIntormation, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_eventlog_FlushEventLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct eventlog_FlushEventLog r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_FlushEventLog, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_FLUSHEVENTLOG, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_FlushEventLog, (ndr_push_flags_fn_t)ndr_push_eventlog_FlushEventLog);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_FlushEventLog, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
diff --git a/source/librpc/gen_ndr/cli_eventlog.h b/source/librpc/gen_ndr/cli_eventlog.h
deleted file mode 100644
index 90246417956..00000000000
--- a/source/librpc/gen_ndr/cli_eventlog.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "librpc/gen_ndr/ndr_eventlog.h"
-#ifndef __CLI_EVENTLOG__
-#define __CLI_EVENTLOG__
-NTSTATUS rpccli_eventlog_ClearEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *unknown);
-NTSTATUS rpccli_eventlog_BackupEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_CloseEventLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_eventlog_DeregisterEventSource(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_GetNumRecords(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *number);
-NTSTATUS rpccli_eventlog_GetOldestRecord(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_ChangeNotify(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_OpenEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct eventlog_OpenUnknown0 *unknown0, struct lsa_String logname, struct lsa_String servername, uint32_t unknown2, uint32_t unknown3, struct policy_handle *handle);
-NTSTATUS rpccli_eventlog_RegisterEventSourceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_OpenBackupEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_ReadEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t flags, uint32_t offset, uint32_t number_of_bytes, uint8_t *data, uint32_t *sent_size, uint32_t *real_size);
-NTSTATUS rpccli_eventlog_ReportEventW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_ClearEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_BackupEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_OpenEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_RegisterEventSourceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_OpenBackupEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_ReadEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_ReportEventA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_RegisterClusterSvc(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_DeregisterClusterSvc(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_WriteClusterEvents(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_GetLogIntormation(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_eventlog_FlushEventLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-#endif /* __CLI_EVENTLOG__ */
diff --git a/source/librpc/gen_ndr/cli_initshutdown.c b/source/librpc/gen_ndr/cli_initshutdown.c
deleted file mode 100644
index 06ae3fbe6d7..00000000000
--- a/source/librpc/gen_ndr/cli_initshutdown.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_initshutdown.h"
-
-NTSTATUS rpccli_initshutdown_Init(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot)
-{
- struct initshutdown_Init r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.hostname = hostname;
- r.in.message = message;
- r.in.timeout = timeout;
- r.in.force_apps = force_apps;
- r.in.reboot = reboot;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(initshutdown_Init, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_INITSHUTDOWN, DCERPC_INITSHUTDOWN_INIT, &r, (ndr_pull_flags_fn_t)ndr_pull_initshutdown_Init, (ndr_push_flags_fn_t)ndr_push_initshutdown_Init);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(initshutdown_Init, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_initshutdown_Abort(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *server)
-{
- struct initshutdown_Abort r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server = server;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(initshutdown_Abort, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_INITSHUTDOWN, DCERPC_INITSHUTDOWN_ABORT, &r, (ndr_pull_flags_fn_t)ndr_pull_initshutdown_Abort, (ndr_push_flags_fn_t)ndr_push_initshutdown_Abort);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(initshutdown_Abort, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_initshutdown_InitEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot, uint32_t reason)
-{
- struct initshutdown_InitEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.hostname = hostname;
- r.in.message = message;
- r.in.timeout = timeout;
- r.in.force_apps = force_apps;
- r.in.reboot = reboot;
- r.in.reason = reason;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(initshutdown_InitEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_INITSHUTDOWN, DCERPC_INITSHUTDOWN_INITEX, &r, (ndr_pull_flags_fn_t)ndr_pull_initshutdown_InitEx, (ndr_push_flags_fn_t)ndr_push_initshutdown_InitEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(initshutdown_InitEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
diff --git a/source/librpc/gen_ndr/cli_initshutdown.h b/source/librpc/gen_ndr/cli_initshutdown.h
deleted file mode 100644
index 947f4ae0560..00000000000
--- a/source/librpc/gen_ndr/cli_initshutdown.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "librpc/gen_ndr/ndr_initshutdown.h"
-#ifndef __CLI_INITSHUTDOWN__
-#define __CLI_INITSHUTDOWN__
-NTSTATUS rpccli_initshutdown_Init(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot);
-NTSTATUS rpccli_initshutdown_Abort(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *server);
-NTSTATUS rpccli_initshutdown_InitEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot, uint32_t reason);
-#endif /* __CLI_INITSHUTDOWN__ */
diff --git a/source/librpc/gen_ndr/cli_lsa.c b/source/librpc/gen_ndr/cli_lsa.c
deleted file mode 100644
index bc786b61b46..00000000000
--- a/source/librpc/gen_ndr/cli_lsa.c
+++ /dev/null
@@ -1,2642 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_lsa.h"
-
-NTSTATUS rpccli_lsa_Close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct lsa_Close r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_Close, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CLOSE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_Close, (ndr_push_flags_fn_t)ndr_push_lsa_Close);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_Close, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_Delete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct lsa_Delete r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_Delete, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_DELETE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_Delete, (ndr_push_flags_fn_t)ndr_push_lsa_Delete);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_Delete, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_EnumPrivs(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t max_count, struct lsa_PrivArray *privs)
-{
- struct lsa_EnumPrivs r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.resume_handle = resume_handle;
- r.in.max_count = max_count;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumPrivs, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMPRIVS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumPrivs, (ndr_push_flags_fn_t)ndr_push_lsa_EnumPrivs);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumPrivs, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *resume_handle = *r.out.resume_handle;
- *privs = *r.out.privs;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct sec_desc_buf *sdbuf)
-{
- struct lsa_QuerySecurity r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sec_info = sec_info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QuerySecurity, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QuerySecurity, (ndr_push_flags_fn_t)ndr_push_lsa_QuerySecurity);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QuerySecurity, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( sdbuf ) {
- *sdbuf = *r.out.sdbuf;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetSecObj(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_SetSecObj r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetSecObj, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETSECOBJ, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetSecObj, (ndr_push_flags_fn_t)ndr_push_lsa_SetSecObj);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetSecObj, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_ChangePassword(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_ChangePassword r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_ChangePassword, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CHANGEPASSWORD, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_ChangePassword, (ndr_push_flags_fn_t)ndr_push_lsa_ChangePassword);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_ChangePassword, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_OpenPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, struct lsa_ObjectAttribute *attr, uint32_t access_mask, struct policy_handle *handle)
-{
- struct lsa_OpenPolicy r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.attr = attr;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenPolicy, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_OpenPolicy);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenPolicy, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info)
-{
- struct lsa_QueryInfoPolicy r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryInfoPolicy, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYINFOPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryInfoPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_QueryInfoPolicy);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryInfoPolicy, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_SetInfoPolicy r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetInfoPolicy, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETINFOPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetInfoPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_SetInfoPolicy);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetInfoPolicy, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_ClearAuditLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_ClearAuditLog r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_ClearAuditLog, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CLEARAUDITLOG, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_ClearAuditLog, (ndr_push_flags_fn_t)ndr_push_lsa_ClearAuditLog);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_ClearAuditLog, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CreateAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *acct_handle)
-{
- struct lsa_CreateAccount r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sid = sid;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATEACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateAccount, (ndr_push_flags_fn_t)ndr_push_lsa_CreateAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *acct_handle = *r.out.acct_handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_EnumAccounts(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t num_entries, struct lsa_SidArray *sids)
-{
- struct lsa_EnumAccounts r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.resume_handle = resume_handle;
- r.in.num_entries = num_entries;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumAccounts, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMACCOUNTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumAccounts, (ndr_push_flags_fn_t)ndr_push_lsa_EnumAccounts);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumAccounts, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *resume_handle = *r.out.resume_handle;
- *sids = *r.out.sids;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CreateTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_DomainInfo *info, uint32_t access_mask, struct policy_handle *trustdom_handle)
-{
- struct lsa_CreateTrustedDomain r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.info = info;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateTrustedDomain, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATETRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_CreateTrustedDomain);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomain, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *trustdom_handle = *r.out.trustdom_handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_EnumTrustDom(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t max_size, struct lsa_DomainList *domains)
-{
- struct lsa_EnumTrustDom r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.resume_handle = resume_handle;
- r.in.max_size = max_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumTrustDom, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMTRUSTDOM, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumTrustDom, (ndr_push_flags_fn_t)ndr_push_lsa_EnumTrustDom);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumTrustDom, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *resume_handle = *r.out.resume_handle;
- *domains = *r.out.domains;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray *sids, uint16_t level, uint32_t *count)
-{
- struct lsa_LookupNames r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.num_names = num_names;
- r.in.names = names;
- r.in.sids = sids;
- r.in.level = level;
- r.in.count = count;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( domains ) {
- *domains = *r.out.domains;
- }
- *sids = *r.out.sids;
- *count = *r.out.count;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray *names, uint16_t level, uint32_t *count)
-{
- struct lsa_LookupSids r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sids = sids;
- r.in.names = names;
- r.in.level = level;
- r.in.count = count;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupSids, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPSIDS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupSids, (ndr_push_flags_fn_t)ndr_push_lsa_LookupSids);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupSids, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( domains ) {
- *domains = *r.out.domains;
- }
- *names = *r.out.names;
- *count = *r.out.count;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CreateSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *sec_handle)
-{
- struct lsa_CreateSecret r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateSecret, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATESECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateSecret, (ndr_push_flags_fn_t)ndr_push_lsa_CreateSecret);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateSecret, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *sec_handle = *r.out.sec_handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_OpenAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *acct_handle)
-{
- struct lsa_OpenAccount r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sid = sid;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenAccount, (ndr_push_flags_fn_t)ndr_push_lsa_OpenAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *acct_handle = *r.out.acct_handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet *privs)
-{
- struct lsa_EnumPrivsAccount r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumPrivsAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMPRIVSACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumPrivsAccount, (ndr_push_flags_fn_t)ndr_push_lsa_EnumPrivsAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumPrivsAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( privs ) {
- *privs = *r.out.privs;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_AddPrivilegesToAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet *privs)
-{
- struct lsa_AddPrivilegesToAccount r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.privs = privs;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_AddPrivilegesToAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ADDPRIVILEGESTOACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_AddPrivilegesToAccount, (ndr_push_flags_fn_t)ndr_push_lsa_AddPrivilegesToAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_AddPrivilegesToAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_RemovePrivilegesFromAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t remove_all, struct lsa_PrivilegeSet *privs)
-{
- struct lsa_RemovePrivilegesFromAccount r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.remove_all = remove_all;
- r.in.privs = privs;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_RemovePrivilegesFromAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_REMOVEPRIVILEGESFROMACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_RemovePrivilegesFromAccount, (ndr_push_flags_fn_t)ndr_push_lsa_RemovePrivilegesFromAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_RemovePrivilegesFromAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_GetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_GetQuotasForAccount r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_GetQuotasForAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_GETQUOTASFORACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_GetQuotasForAccount, (ndr_push_flags_fn_t)ndr_push_lsa_GetQuotasForAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_GetQuotasForAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_SetQuotasForAccount r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetQuotasForAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETQUOTASFORACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetQuotasForAccount, (ndr_push_flags_fn_t)ndr_push_lsa_SetQuotasForAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetQuotasForAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_GetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_GetSystemAccessAccount r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_GetSystemAccessAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_GETSYSTEMACCESSACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_GetSystemAccessAccount, (ndr_push_flags_fn_t)ndr_push_lsa_GetSystemAccessAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_GetSystemAccessAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_SetSystemAccessAccount r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetSystemAccessAccount, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETSYSTEMACCESSACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetSystemAccessAccount, (ndr_push_flags_fn_t)ndr_push_lsa_SetSystemAccessAccount);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetSystemAccessAccount, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_OpenTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *trustdom_handle)
-{
- struct lsa_OpenTrustedDomain r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sid = sid;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenTrustedDomain, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENTRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_OpenTrustedDomain);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenTrustedDomain, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *trustdom_handle = *r.out.trustdom_handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *trustdom_handle, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info)
-{
- struct lsa_QueryTrustedDomainInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.trustdom_handle = trustdom_handle;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryTrustedDomainInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYTRUSTEDDOMAININFO, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryTrustedDomainInfo, (ndr_push_flags_fn_t)ndr_push_lsa_QueryTrustedDomainInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetInformationTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_SetInformationTrustedDomain r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetInformationTrustedDomain, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETINFORMATIONTRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetInformationTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_SetInformationTrustedDomain);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetInformationTrustedDomain, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_OpenSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *sec_handle)
-{
- struct lsa_OpenSecret r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenSecret, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENSECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenSecret, (ndr_push_flags_fn_t)ndr_push_lsa_OpenSecret);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenSecret, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *sec_handle = *r.out.sec_handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF *new_val, struct lsa_DATA_BUF *old_val)
-{
- struct lsa_SetSecret r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.sec_handle = sec_handle;
- r.in.new_val = new_val;
- r.in.old_val = old_val;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetSecret, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETSECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetSecret, (ndr_push_flags_fn_t)ndr_push_lsa_SetSecret);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetSecret, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF_PTR *new_val, NTTIME *new_mtime, struct lsa_DATA_BUF_PTR *old_val, NTTIME *old_mtime)
-{
- struct lsa_QuerySecret r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.sec_handle = sec_handle;
- r.in.new_val = new_val;
- r.in.new_mtime = new_mtime;
- r.in.old_val = old_val;
- r.in.old_mtime = old_mtime;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QuerySecret, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYSECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QuerySecret, (ndr_push_flags_fn_t)ndr_push_lsa_QuerySecret);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QuerySecret, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( new_val ) {
- *new_val = *r.out.new_val;
- }
- if ( new_mtime ) {
- *new_mtime = *r.out.new_mtime;
- }
- if ( old_val ) {
- *old_val = *r.out.old_val;
- }
- if ( old_mtime ) {
- *old_mtime = *r.out.old_mtime;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupPrivValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_LUID *luid)
-{
- struct lsa_LookupPrivValue r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupPrivValue, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPPRIVVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupPrivValue, (ndr_push_flags_fn_t)ndr_push_lsa_LookupPrivValue);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupPrivValue, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *luid = *r.out.luid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_LUID *luid, struct lsa_StringLarge *name)
-{
- struct lsa_LookupPrivName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.luid = luid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupPrivName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPPRIVNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupPrivName, (ndr_push_flags_fn_t)ndr_push_lsa_LookupPrivName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupPrivName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( name ) {
- *name = *r.out.name;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_StringLarge *disp_name, uint16_t *language_id, uint16_t unknown)
-{
- struct lsa_LookupPrivDisplayName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
- r.in.language_id = language_id;
- r.in.unknown = unknown;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupPrivDisplayName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPPRIVDISPLAYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupPrivDisplayName, (ndr_push_flags_fn_t)ndr_push_lsa_LookupPrivDisplayName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupPrivDisplayName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( disp_name ) {
- *disp_name = *r.out.disp_name;
- }
- *language_id = *r.out.language_id;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_DeleteObject(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_DeleteObject r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_DeleteObject, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_DELETEOBJECT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_DeleteObject, (ndr_push_flags_fn_t)ndr_push_lsa_DeleteObject);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_DeleteObject, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_EnumAccountsWithUserRight(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_SidArray *sids)
-{
- struct lsa_EnumAccountsWithUserRight r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumAccountsWithUserRight, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMACCOUNTSWITHUSERRIGHT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumAccountsWithUserRight, (ndr_push_flags_fn_t)ndr_push_lsa_EnumAccountsWithUserRight);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumAccountsWithUserRight, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *sids = *r.out.sids;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_EnumAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, struct lsa_RightSet *rights)
-{
- struct lsa_EnumAccountRights r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sid = sid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumAccountRights, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMACCOUNTRIGHTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumAccountRights, (ndr_push_flags_fn_t)ndr_push_lsa_EnumAccountRights);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumAccountRights, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *rights = *r.out.rights;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_AddAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, struct lsa_RightSet *rights)
-{
- struct lsa_AddAccountRights r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sid = sid;
- r.in.rights = rights;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_AddAccountRights, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ADDACCOUNTRIGHTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_AddAccountRights, (ndr_push_flags_fn_t)ndr_push_lsa_AddAccountRights);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_AddAccountRights, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_RemoveAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t unknown, struct lsa_RightSet *rights)
-{
- struct lsa_RemoveAccountRights r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sid = sid;
- r.in.unknown = unknown;
- r.in.rights = rights;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_RemoveAccountRights, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_REMOVEACCOUNTRIGHTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_RemoveAccountRights, (ndr_push_flags_fn_t)ndr_push_lsa_RemoveAccountRights);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_RemoveAccountRights, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info)
-{
- struct lsa_QueryTrustedDomainInfoBySid r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.dom_sid = dom_sid;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryTrustedDomainInfoBySid, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYSID, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryTrustedDomainInfoBySid, (ndr_push_flags_fn_t)ndr_push_lsa_QueryTrustedDomainInfoBySid);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfoBySid, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_SetTrustedDomainInfo r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetTrustedDomainInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETTRUSTEDDOMAININFO, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetTrustedDomainInfo, (ndr_push_flags_fn_t)ndr_push_lsa_SetTrustedDomainInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetTrustedDomainInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_DeleteTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid)
-{
- struct lsa_DeleteTrustedDomain r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.dom_sid = dom_sid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_DeleteTrustedDomain, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_DELETETRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_DeleteTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_DeleteTrustedDomain);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_DeleteTrustedDomain, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_StorePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_StorePrivateData r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_StorePrivateData, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_STOREPRIVATEDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_StorePrivateData, (ndr_push_flags_fn_t)ndr_push_lsa_StorePrivateData);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_StorePrivateData, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_RetrievePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_RetrievePrivateData r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_RetrievePrivateData, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_RETRIEVEPRIVATEDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_RetrievePrivateData, (ndr_push_flags_fn_t)ndr_push_lsa_RetrievePrivateData);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_RetrievePrivateData, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_OpenPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_ObjectAttribute *attr, uint32_t access_mask, struct policy_handle *handle)
-{
- struct lsa_OpenPolicy2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.attr = attr;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenPolicy2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENPOLICY2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenPolicy2, (ndr_push_flags_fn_t)ndr_push_lsa_OpenPolicy2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenPolicy2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_String *account_name, struct lsa_StringPointer *authority_name)
-{
- struct lsa_GetUserName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.account_name = account_name;
- r.in.authority_name = authority_name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_GetUserName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_GETUSERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_GetUserName, (ndr_push_flags_fn_t)ndr_push_lsa_GetUserName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_GetUserName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( account_name ) {
- *account_name = *r.out.account_name;
- }
- if ( authority_name ) {
- *authority_name = *r.out.authority_name;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info)
-{
- struct lsa_QueryInfoPolicy2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryInfoPolicy2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYINFOPOLICY2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryInfoPolicy2, (ndr_push_flags_fn_t)ndr_push_lsa_QueryInfoPolicy2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryInfoPolicy2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_SetInfoPolicy2 r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetInfoPolicy2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETINFOPOLICY2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetInfoPolicy2, (ndr_push_flags_fn_t)ndr_push_lsa_SetInfoPolicy2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetInfoPolicy2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info)
-{
- struct lsa_QueryTrustedDomainInfoByName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.trusted_domain = trusted_domain;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryTrustedDomainInfoByName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryTrustedDomainInfoByName, (ndr_push_flags_fn_t)ndr_push_lsa_QueryTrustedDomainInfoByName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfoByName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info)
-{
- struct lsa_SetTrustedDomainInfoByName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.trusted_domain = trusted_domain;
- r.in.level = level;
- r.in.info = info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetTrustedDomainInfoByName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETTRUSTEDDOMAININFOBYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetTrustedDomainInfoByName, (ndr_push_flags_fn_t)ndr_push_lsa_SetTrustedDomainInfoByName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetTrustedDomainInfoByName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_EnumTrustedDomainsEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, struct lsa_DomainListEx *domains, uint32_t max_size)
-{
- struct lsa_EnumTrustedDomainsEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.resume_handle = resume_handle;
- r.in.max_size = max_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumTrustedDomainsEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMTRUSTEDDOMAINSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumTrustedDomainsEx, (ndr_push_flags_fn_t)ndr_push_lsa_EnumTrustedDomainsEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumTrustedDomainsEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *resume_handle = *r.out.resume_handle;
- *domains = *r.out.domains;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CreateTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CreateTrustedDomainEx r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateTrustedDomainEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATETRUSTEDDOMAINEX, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateTrustedDomainEx, (ndr_push_flags_fn_t)ndr_push_lsa_CreateTrustedDomainEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomainEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CloseTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct lsa_CloseTrustedDomainEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CloseTrustedDomainEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CLOSETRUSTEDDOMAINEX, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CloseTrustedDomainEx, (ndr_push_flags_fn_t)ndr_push_lsa_CloseTrustedDomainEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CloseTrustedDomainEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy *info)
-{
- struct lsa_QueryDomainInformationPolicy r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryDomainInformationPolicy, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYDOMAININFORMATIONPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryDomainInformationPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_QueryDomainInformationPolicy);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryDomainInformationPolicy, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_SetDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy *info)
-{
- struct lsa_SetDomainInformationPolicy r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.level = level;
- r.in.info = info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetDomainInformationPolicy, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETDOMAININFORMATIONPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetDomainInformationPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_SetDomainInformationPolicy);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetDomainInformationPolicy, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_OpenTrustedDomainByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *trustdom_handle)
-{
- struct lsa_OpenTrustedDomainByName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenTrustedDomainByName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENTRUSTEDDOMAINBYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenTrustedDomainByName, (ndr_push_flags_fn_t)ndr_push_lsa_OpenTrustedDomainByName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenTrustedDomainByName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *trustdom_handle = *r.out.trustdom_handle;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_TestCall r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_TestCall, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_TESTCALL, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_TestCall, (ndr_push_flags_fn_t)ndr_push_lsa_TestCall);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_TestCall, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
-{
- struct lsa_LookupSids2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sids = sids;
- r.in.names = names;
- r.in.level = level;
- r.in.count = count;
- r.in.unknown1 = unknown1;
- r.in.unknown2 = unknown2;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupSids2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPSIDS2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupSids2, (ndr_push_flags_fn_t)ndr_push_lsa_LookupSids2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupSids2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( domains ) {
- *domains = *r.out.domains;
- }
- *names = *r.out.names;
- *count = *r.out.count;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray2 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
-{
- struct lsa_LookupNames2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.num_names = num_names;
- r.in.names = names;
- r.in.sids = sids;
- r.in.level = level;
- r.in.count = count;
- r.in.unknown1 = unknown1;
- r.in.unknown2 = unknown2;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames2, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( domains ) {
- *domains = *r.out.domains;
- }
- *sids = *r.out.sids;
- *count = *r.out.count;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CreateTrustedDomainEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CreateTrustedDomainEx2 r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateTrustedDomainEx2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATETRUSTEDDOMAINEX2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateTrustedDomainEx2, (ndr_push_flags_fn_t)ndr_push_lsa_CreateTrustedDomainEx2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomainEx2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRWRITE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRWRITE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRWRITE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRWRITE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRWRITE, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRWRITE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRWRITE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRREAD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRREAD r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRREAD, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRREAD, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRREAD, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRREAD);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRREAD, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRENUMERATE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRENUMERATE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRENUMERATE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRENUMERATE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRENUMERATE, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRENUMERATE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRENUMERATE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRWRITEDOMAINCREDENTIALS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRWRITEDOMAINCREDENTIALS r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRWRITEDOMAINCREDENTIALS, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRWRITEDOMAINCREDENTIALS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRWRITEDOMAINCREDENTIALS, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRWRITEDOMAINCREDENTIALS);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRWRITEDOMAINCREDENTIALS, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRREADDOMAINCREDENTIALS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRREADDOMAINCREDENTIALS r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRREADDOMAINCREDENTIALS, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRREADDOMAINCREDENTIALS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRREADDOMAINCREDENTIALS, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRREADDOMAINCREDENTIALS);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRREADDOMAINCREDENTIALS, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRDELETE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRDELETE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRDELETE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRDELETE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRDELETE, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRDELETE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRDELETE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRGETTARGETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRGETTARGETINFO r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRGETTARGETINFO, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRGETTARGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRGETTARGETINFO, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRGETTARGETINFO);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRGETTARGETINFO, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRPROFILELOADED(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRPROFILELOADED r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRPROFILELOADED, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRPROFILELOADED, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRPROFILELOADED, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRPROFILELOADED);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRPROFILELOADED, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
-{
- struct lsa_LookupNames3 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.num_names = num_names;
- r.in.names = names;
- r.in.sids = sids;
- r.in.level = level;
- r.in.count = count;
- r.in.unknown1 = unknown1;
- r.in.unknown2 = unknown2;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames3, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES3, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames3, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames3);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames3, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( domains ) {
- *domains = *r.out.domains;
- }
- *sids = *r.out.sids;
- *count = *r.out.count;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRGETSESSIONTYPES(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRGETSESSIONTYPES r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRGETSESSIONTYPES, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRGETSESSIONTYPES, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRGETSESSIONTYPES, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRGETSESSIONTYPES);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRGETSESSIONTYPES, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARREGISTERAUDITEVENT r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARREGISTERAUDITEVENT, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARREGISTERAUDITEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARREGISTERAUDITEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARREGISTERAUDITEVENT);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARREGISTERAUDITEVENT, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARGENAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARGENAUDITEVENT r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARGENAUDITEVENT, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARGENAUDITEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARGENAUDITEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARGENAUDITEVENT);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARGENAUDITEVENT, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARUNREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARUNREGISTERAUDITEVENT r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARUNREGISTERAUDITEVENT, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARUNREGISTERAUDITEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARUNREGISTERAUDITEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARUNREGISTERAUDITEVENT);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARUNREGISTERAUDITEVENT, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARQUERYFORESTTRUSTINFORMATION r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARQUERYFORESTTRUSTINFORMATION, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARQUERYFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARQUERYFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_lsa_LSARQUERYFORESTTRUSTINFORMATION);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARQUERYFORESTTRUSTINFORMATION, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARSETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARSETFORESTTRUSTINFORMATION r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARSETFORESTTRUSTINFORMATION, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARSETFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARSETFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_lsa_LSARSETFORESTTRUSTINFORMATION);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARSETFORESTTRUSTINFORMATION, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_CREDRRENAME(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_CREDRRENAME r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRRENAME, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRRENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRRENAME, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRRENAME);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRRENAME, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
-{
- struct lsa_LookupSids3 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.sids = sids;
- r.in.names = names;
- r.in.level = level;
- r.in.count = count;
- r.in.unknown1 = unknown1;
- r.in.unknown2 = unknown2;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupSids3, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPSIDS3, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupSids3, (ndr_push_flags_fn_t)ndr_push_lsa_LookupSids3);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupSids3, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( domains ) {
- *domains = *r.out.domains;
- }
- *names = *r.out.names;
- *count = *r.out.count;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
-{
- struct lsa_LookupNames4 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.num_names = num_names;
- r.in.names = names;
- r.in.sids = sids;
- r.in.level = level;
- r.in.count = count;
- r.in.unknown1 = unknown1;
- r.in.unknown2 = unknown2;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames4, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES4, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames4, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames4);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames4, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( domains ) {
- *domains = *r.out.domains;
- }
- *sids = *r.out.sids;
- *count = *r.out.count;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSAROPENPOLICYSCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSAROPENPOLICYSCE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSAROPENPOLICYSCE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSAROPENPOLICYSCE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSAROPENPOLICYSCE, (ndr_push_flags_fn_t)ndr_push_lsa_LSAROPENPOLICYSCE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSAROPENPOLICYSCE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARADTREGISTERSECURITYEVENTSOURCE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARADTREGISTERSECURITYEVENTSOURCE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARADTREGISTERSECURITYEVENTSOURCE, (ndr_push_flags_fn_t)ndr_push_lsa_LSARADTREGISTERSECURITYEVENTSOURCE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARADTREGISTERSECURITYEVENTSOURCE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARADTUNREGISTERSECURITYEVENTSOURCE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE, (ndr_push_flags_fn_t)ndr_push_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_lsa_LSARADTREPORTSECURITYEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct lsa_LSARADTREPORTSECURITYEVENT r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARADTREPORTSECURITYEVENT, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARADTREPORTSECURITYEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARADTREPORTSECURITYEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARADTREPORTSECURITYEVENT);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARADTREPORTSECURITYEVENT, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return r.out.result;
-}
-
diff --git a/source/librpc/gen_ndr/cli_lsa.h b/source/librpc/gen_ndr/cli_lsa.h
deleted file mode 100644
index a44105ea9c6..00000000000
--- a/source/librpc/gen_ndr/cli_lsa.h
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "librpc/gen_ndr/ndr_lsa.h"
-#ifndef __CLI_LSARPC__
-#define __CLI_LSARPC__
-NTSTATUS rpccli_lsa_Close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_Delete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_EnumPrivs(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t max_count, struct lsa_PrivArray *privs);
-NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct sec_desc_buf *sdbuf);
-NTSTATUS rpccli_lsa_SetSecObj(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_ChangePassword(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_OpenPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, struct lsa_ObjectAttribute *attr, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info);
-NTSTATUS rpccli_lsa_SetInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_ClearAuditLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CreateAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *acct_handle);
-NTSTATUS rpccli_lsa_EnumAccounts(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t num_entries, struct lsa_SidArray *sids);
-NTSTATUS rpccli_lsa_CreateTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_DomainInfo *info, uint32_t access_mask, struct policy_handle *trustdom_handle);
-NTSTATUS rpccli_lsa_EnumTrustDom(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t max_size, struct lsa_DomainList *domains);
-NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray *sids, uint16_t level, uint32_t *count);
-NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray *names, uint16_t level, uint32_t *count);
-NTSTATUS rpccli_lsa_CreateSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *sec_handle);
-NTSTATUS rpccli_lsa_OpenAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *acct_handle);
-NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet *privs);
-NTSTATUS rpccli_lsa_AddPrivilegesToAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet *privs);
-NTSTATUS rpccli_lsa_RemovePrivilegesFromAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t remove_all, struct lsa_PrivilegeSet *privs);
-NTSTATUS rpccli_lsa_GetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_SetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_GetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_SetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_OpenTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *trustdom_handle);
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *trustdom_handle, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
-NTSTATUS rpccli_lsa_SetInformationTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_OpenSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *sec_handle);
-NTSTATUS rpccli_lsa_SetSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF *new_val, struct lsa_DATA_BUF *old_val);
-NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF_PTR *new_val, NTTIME *new_mtime, struct lsa_DATA_BUF_PTR *old_val, NTTIME *old_mtime);
-NTSTATUS rpccli_lsa_LookupPrivValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_LUID *luid);
-NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_LUID *luid, struct lsa_StringLarge *name);
-NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_StringLarge *disp_name, uint16_t *language_id, uint16_t unknown);
-NTSTATUS rpccli_lsa_DeleteObject(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_EnumAccountsWithUserRight(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_SidArray *sids);
-NTSTATUS rpccli_lsa_EnumAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, struct lsa_RightSet *rights);
-NTSTATUS rpccli_lsa_AddAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, struct lsa_RightSet *rights);
-NTSTATUS rpccli_lsa_RemoveAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t unknown, struct lsa_RightSet *rights);
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
-NTSTATUS rpccli_lsa_SetTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_DeleteTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid);
-NTSTATUS rpccli_lsa_StorePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_RetrievePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_OpenPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_ObjectAttribute *attr, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_String *account_name, struct lsa_StringPointer *authority_name);
-NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info);
-NTSTATUS rpccli_lsa_SetInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
-NTSTATUS rpccli_lsa_SetTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
-NTSTATUS rpccli_lsa_EnumTrustedDomainsEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, struct lsa_DomainListEx *domains, uint32_t max_size);
-NTSTATUS rpccli_lsa_CreateTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CloseTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy *info);
-NTSTATUS rpccli_lsa_SetDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy *info);
-NTSTATUS rpccli_lsa_OpenTrustedDomainByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *trustdom_handle);
-NTSTATUS rpccli_lsa_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
-NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray2 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
-NTSTATUS rpccli_lsa_CreateTrustedDomainEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRWRITE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRREAD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRENUMERATE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRWRITEDOMAINCREDENTIALS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRREADDOMAINCREDENTIALS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRDELETE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRGETTARGETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRPROFILELOADED(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
-NTSTATUS rpccli_lsa_CREDRGETSESSIONTYPES(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARGENAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARUNREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARSETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_CREDRRENAME(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
-NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
-NTSTATUS rpccli_lsa_LSAROPENPOLICYSCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LSARADTREPORTSECURITYEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-#endif /* __CLI_LSARPC__ */
diff --git a/source/librpc/gen_ndr/cli_netlogon.c b/source/librpc/gen_ndr/cli_netlogon.c
deleted file mode 100644
index 661ef147fd5..00000000000
--- a/source/librpc/gen_ndr/cli_netlogon.c
+++ /dev/null
@@ -1,1600 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_netlogon.h"
-
-NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasInfo *info)
-{
- struct netr_LogonUasLogon r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.account_name = account_name;
- r.in.workstation = workstation;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonUasLogon, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONUASLOGON, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonUasLogon, (ndr_push_flags_fn_t)ndr_push_netr_LogonUasLogon);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonUasLogon, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_LogonUasLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasLogoffInfo *info)
-{
- struct netr_LogonUasLogoff r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.account_name = account_name;
- r.in.workstation = workstation;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonUasLogoff, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONUASLOGOFF, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonUasLogoff, (ndr_push_flags_fn_t)ndr_push_netr_LogonUasLogoff);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonUasLogoff, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative)
-{
- struct netr_LogonSamLogon r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.computer_name = computer_name;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.logon_level = logon_level;
- r.in.logon = logon;
- r.in.validation_level = validation_level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogon, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGON, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogon, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogon);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogon, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( return_authenticator ) {
- *return_authenticator = *r.out.return_authenticator;
- }
- *validation = *r.out.validation;
- *authoritative = *r.out.authoritative;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon)
-{
- struct netr_LogonSamLogoff r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.computer_name = computer_name;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.logon_level = logon_level;
- r.in.logon = logon;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogoff, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGOFF, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogoff, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogoff);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogoff, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( return_authenticator ) {
- *return_authenticator = *r.out.return_authenticator;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Credential *credentials)
-{
- struct netr_ServerReqChallenge r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.computer_name = computer_name;
- r.in.credentials = credentials;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerReqChallenge, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERREQCHALLENGE, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerReqChallenge, (ndr_push_flags_fn_t)ndr_push_netr_ServerReqChallenge);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerReqChallenge, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *credentials = *r.out.credentials;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_ServerAuthenticate(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials)
-{
- struct netr_ServerAuthenticate r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.account_name = account_name;
- r.in.secure_channel_type = secure_channel_type;
- r.in.computer_name = computer_name;
- r.in.credentials = credentials;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerAuthenticate, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERAUTHENTICATE, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerAuthenticate, (ndr_push_flags_fn_t)ndr_push_netr_ServerAuthenticate);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *credentials = *r.out.credentials;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Authenticator credential, struct samr_Password new_password, struct netr_Authenticator *return_authenticator)
-{
- struct netr_ServerPasswordSet r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.account_name = account_name;
- r.in.secure_channel_type = secure_channel_type;
- r.in.computer_name = computer_name;
- r.in.credential = credential;
- r.in.new_password = new_password;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerPasswordSet, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERPASSWORDSET, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerPasswordSet, (ndr_push_flags_fn_t)ndr_push_netr_ServerPasswordSet);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerPasswordSet, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint64_t *sequence_num, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
-{
- struct netr_DatabaseDeltas r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.computername = computername;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.database_id = database_id;
- r.in.sequence_num = sequence_num;
- r.in.preferredmaximumlength = preferredmaximumlength;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseDeltas, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASEDELTAS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseDeltas, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseDeltas);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseDeltas, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
- *sequence_num = *r.out.sequence_num;
- if ( delta_enum_array ) {
- *delta_enum_array = *r.out.delta_enum_array;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
-{
- struct netr_DatabaseSync r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.computername = computername;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.database_id = database_id;
- r.in.sync_context = sync_context;
- r.in.preferredmaximumlength = preferredmaximumlength;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseSync, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASESYNC, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseSync, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseSync);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseSync, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
- *sync_context = *r.out.sync_context;
- if ( delta_enum_array ) {
- *delta_enum_array = *r.out.delta_enum_array;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, struct netr_UAS_INFO_0 uas, uint32_t count, uint32_t level, uint32_t buffersize, struct netr_AccountBuffer *buffer, uint32_t *count_returned, uint32_t *total_entries, struct netr_UAS_INFO_0 *recordid)
-{
- struct netr_AccountDeltas r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.computername = computername;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.uas = uas;
- r.in.count = count;
- r.in.level = level;
- r.in.buffersize = buffersize;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_AccountDeltas, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_ACCOUNTDELTAS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_AccountDeltas, (ndr_push_flags_fn_t)ndr_push_netr_AccountDeltas);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_AccountDeltas, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
- *buffer = *r.out.buffer;
- *count_returned = *r.out.count_returned;
- *total_entries = *r.out.total_entries;
- *recordid = *r.out.recordid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint32_t reference, uint32_t level, uint32_t buffersize, struct netr_AccountBuffer *buffer, uint32_t *count_returned, uint32_t *total_entries, uint32_t *next_reference, struct netr_UAS_INFO_0 *recordid)
-{
- struct netr_AccountSync r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.computername = computername;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.reference = reference;
- r.in.level = level;
- r.in.buffersize = buffersize;
- r.in.recordid = recordid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_AccountSync, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_ACCOUNTSYNC, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_AccountSync, (ndr_push_flags_fn_t)ndr_push_netr_AccountSync);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_AccountSync, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
- *buffer = *r.out.buffer;
- *count_returned = *r.out.count_returned;
- *total_entries = *r.out.total_entries;
- *next_reference = *r.out.next_reference;
- *recordid = *r.out.recordid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_GetDcName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *domainname, const char **dcname)
-{
- struct netr_GetDcName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.domainname = domainname;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_GetDcName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_GETDCNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_GetDcName, (ndr_push_flags_fn_t)ndr_push_netr_GetDcName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_GetDcName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *dcname = *r.out.dcname;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_LogonControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, enum netr_LogonControlCode function_code, uint32_t level, union netr_CONTROL_QUERY_INFORMATION *info)
-{
- struct netr_LogonControl r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.function_code = function_code;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonControl, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONCONTROL, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonControl, (ndr_push_flags_fn_t)ndr_push_netr_LogonControl);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonControl, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_GetAnyDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *domainname, const char **dcname)
-{
- struct netr_GetAnyDCName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.domainname = domainname;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_GetAnyDCName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_GETANYDCNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_GetAnyDCName, (ndr_push_flags_fn_t)ndr_push_netr_GetAnyDCName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_GetAnyDCName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *dcname = *r.out.dcname;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_LogonControl2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, uint32_t function_code, uint32_t level, union netr_CONTROL_DATA_INFORMATION data, union netr_CONTROL_QUERY_INFORMATION *query)
-{
- struct netr_LogonControl2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.function_code = function_code;
- r.in.level = level;
- r.in.data = data;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonControl2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONCONTROL2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonControl2, (ndr_push_flags_fn_t)ndr_push_netr_LogonControl2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonControl2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *query = *r.out.query;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials, uint32_t *negotiate_flags)
-{
- struct netr_ServerAuthenticate2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.account_name = account_name;
- r.in.secure_channel_type = secure_channel_type;
- r.in.computer_name = computer_name;
- r.in.credentials = credentials;
- r.in.negotiate_flags = negotiate_flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerAuthenticate2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERAUTHENTICATE2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerAuthenticate2, (ndr_push_flags_fn_t)ndr_push_netr_ServerAuthenticate2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *credentials = *r.out.credentials;
- *negotiate_flags = *r.out.negotiate_flags;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint16_t restart_state, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
-{
- struct netr_DatabaseSync2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.computername = computername;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.database_id = database_id;
- r.in.restart_state = restart_state;
- r.in.sync_context = sync_context;
- r.in.preferredmaximumlength = preferredmaximumlength;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseSync2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASESYNC2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseSync2, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseSync2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseSync2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
- *sync_context = *r.out.sync_context;
- if ( delta_enum_array ) {
- *delta_enum_array = *r.out.delta_enum_array;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint8_t *change_log_entry, uint32_t change_log_entry_size, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
-{
- struct netr_DatabaseRedo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.computername = computername;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.change_log_entry = change_log_entry;
- r.in.change_log_entry_size = change_log_entry_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseRedo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASEREDO, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseRedo, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseRedo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseRedo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
- if ( delta_enum_array ) {
- *delta_enum_array = *r.out.delta_enum_array;
- }
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_LogonControl2Ex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, uint32_t function_code, uint32_t level, union netr_CONTROL_DATA_INFORMATION data, union netr_CONTROL_QUERY_INFORMATION *query)
-{
- struct netr_LogonControl2Ex r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.logon_server = logon_server;
- r.in.function_code = function_code;
- r.in.level = level;
- r.in.data = data;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonControl2Ex, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONCONTROL2EX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonControl2Ex, (ndr_push_flags_fn_t)ndr_push_netr_LogonControl2Ex);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonControl2Ex, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *query = *r.out.query;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRENUMERATETRUSTEDDOMAINS r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINS, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINS, (ndr_push_flags_fn_t)ndr_push_netr_NETRENUMERATETRUSTEDDOMAINS);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINS, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, struct GUID *site_guid, uint32_t flags, struct netr_DsRGetDCNameInfo *info)
-{
- struct netr_DsRGetDCName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.domain_name = domain_name;
- r.in.domain_guid = domain_guid;
- r.in.site_guid = site_guid;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetDCName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetDCName, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetDCName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetDCName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRLOGONDUMMYROUTINE1(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRLOGONDUMMYROUTINE1 r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONDUMMYROUTINE1, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONDUMMYROUTINE1, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONDUMMYROUTINE1, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONDUMMYROUTINE1);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONDUMMYROUTINE1, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRLOGONSETSERVICEBITS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRLOGONSETSERVICEBITS r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONSETSERVICEBITS, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONSETSERVICEBITS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONSETSERVICEBITS, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONSETSERVICEBITS);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONSETSERVICEBITS, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRLOGONGETTRUSTRID(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRLOGONGETTRUSTRID r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONGETTRUSTRID, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONGETTRUSTRID, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONGETTRUSTRID, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONGETTRUSTRID);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONGETTRUSTRID, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRLOGONCOMPUTESERVERDIGEST(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRLOGONCOMPUTESERVERDIGEST r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONCOMPUTESERVERDIGEST, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONCOMPUTESERVERDIGEST, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONCOMPUTESERVERDIGEST, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRLOGONCOMPUTECLIENTDIGEST r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONCOMPUTECLIENTDIGEST, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONCOMPUTECLIENTDIGEST, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONCOMPUTECLIENTDIGEST, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_ServerAuthenticate3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials, uint32_t *negotiate_flags, uint32_t *rid)
-{
- struct netr_ServerAuthenticate3 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.account_name = account_name;
- r.in.secure_channel_type = secure_channel_type;
- r.in.computer_name = computer_name;
- r.in.credentials = credentials;
- r.in.negotiate_flags = negotiate_flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerAuthenticate3, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERAUTHENTICATE3, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerAuthenticate3, (ndr_push_flags_fn_t)ndr_push_netr_ServerAuthenticate3);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate3, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *credentials = *r.out.credentials;
- *negotiate_flags = *r.out.negotiate_flags;
- *rid = *r.out.rid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info)
-{
- struct netr_DsRGetDCNameEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.domain_name = domain_name;
- r.in.domain_guid = domain_guid;
- r.in.site_name = site_name;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetDCNameEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCNAMEEX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetDCNameEx, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetDCNameEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetDCNameEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DsRGetSiteName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *computer_name, const char **site)
-{
- struct netr_DsRGetSiteName r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.computer_name = computer_name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetSiteName, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETSITENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetSiteName, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetSiteName);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetSiteName, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *site = *r.out.site;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_LogonGetDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint32_t level, union netr_DomainQuery query, union netr_DomainInfo *info)
-{
- struct netr_LogonGetDomainInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.computer_name = computer_name;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.level = level;
- r.in.query = query;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonGetDomainInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONGETDOMAININFO, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonGetDomainInfo, (ndr_push_flags_fn_t)ndr_push_netr_LogonGetDomainInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonGetDomainInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
- *info = *r.out.info;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_ServerPasswordSet2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Authenticator credential, struct netr_CryptPassword new_password, struct netr_Authenticator *return_authenticator)
-{
- struct netr_ServerPasswordSet2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.account_name = account_name;
- r.in.secure_channel_type = secure_channel_type;
- r.in.computer_name = computer_name;
- r.in.credential = credential;
- r.in.new_password = new_password;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerPasswordSet2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERPASSWORDSET2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerPasswordSet2, (ndr_push_flags_fn_t)ndr_push_netr_ServerPasswordSet2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerPasswordSet2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *return_authenticator = *r.out.return_authenticator;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_NETRSERVERPASSWORDGET(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRSERVERPASSWORDGET r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRSERVERPASSWORDGET, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRSERVERPASSWORDGET, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRSERVERPASSWORDGET, (ndr_push_flags_fn_t)ndr_push_netr_NETRSERVERPASSWORDGET);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRSERVERPASSWORDGET, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRLOGONSENDTOSAM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRLOGONSENDTOSAM r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONSENDTOSAM, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONSENDTOSAM, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONSENDTOSAM, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONSENDTOSAM);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONSENDTOSAM, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_DSRADDRESSTOSITENAMESW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRADDRESSTOSITENAMESW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRADDRESSTOSITENAMESW, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRADDRESSTOSITENAMESW, (ndr_push_flags_fn_t)ndr_push_netr_DSRADDRESSTOSITENAMESW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRADDRESSTOSITENAMESW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client_account, uint32_t mask, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info)
-{
- struct netr_DsRGetDCNameEx2 r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.client_account = client_account;
- r.in.mask = mask;
- r.in.domain_name = domain_name;
- r.in.domain_guid = domain_guid;
- r.in.site_name = site_name;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetDCNameEx2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCNAMEEX2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetDCNameEx2, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetDCNameEx2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetDCNameEx2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONGETTIMESERVICEPARENTDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRENUMERATETRUSTEDDOMAINSEX r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINSEX, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINSEX, (ndr_push_flags_fn_t)ndr_push_netr_NETRENUMERATETRUSTEDDOMAINSEX);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINSEX, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESEXW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_DSRADDRESSTOSITENAMESEXW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRADDRESSTOSITENAMESEXW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRADDRESSTOSITENAMESEXW, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRADDRESSTOSITENAMESEXW, (ndr_push_flags_fn_t)ndr_push_netr_DSRADDRESSTOSITENAMESEXW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRADDRESSTOSITENAMESEXW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DSRGETDCSITECOVERAGEW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_DSRGETDCSITECOVERAGEW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRGETDCSITECOVERAGEW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCSITECOVERAGEW, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRGETDCSITECOVERAGEW, (ndr_push_flags_fn_t)ndr_push_netr_DSRGETDCSITECOVERAGEW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRGETDCSITECOVERAGEW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_LogonSamLogonEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags)
-{
- struct netr_LogonSamLogonEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.computer_name = computer_name;
- r.in.logon_level = logon_level;
- r.in.logon = logon;
- r.in.validation_level = validation_level;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogonEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGONEX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogonEx, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogonEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogonEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *validation = *r.out.validation;
- *authoritative = *r.out.authoritative;
- *flags = *r.out.flags;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_DsrEnumerateDomainTrusts(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t trust_flags, uint32_t *count, struct netr_DomainTrust **trusts)
-{
- struct netr_DsrEnumerateDomainTrusts r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.trust_flags = trust_flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsrEnumerateDomainTrusts, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRENUMERATEDOMAINTRUSTS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsrEnumerateDomainTrusts, (ndr_push_flags_fn_t)ndr_push_netr_DsrEnumerateDomainTrusts);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsrEnumerateDomainTrusts, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *count = *r.out.count;
- *trusts = *r.out.trusts;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DSRDEREGISTERDNSHOSTRECORDS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_DSRDEREGISTERDNSHOSTRECORDS r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRDEREGISTERDNSHOSTRECORDS, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRDEREGISTERDNSHOSTRECORDS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRDEREGISTERDNSHOSTRECORDS, (ndr_push_flags_fn_t)ndr_push_netr_DSRDEREGISTERDNSHOSTRECORDS);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRDEREGISTERDNSHOSTRECORDS, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRSERVERTRUSTPASSWORDSGET(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRSERVERTRUSTPASSWORDSGET r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRSERVERTRUSTPASSWORDSGET, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRSERVERTRUSTPASSWORDSGET, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRSERVERTRUSTPASSWORDSGET, (ndr_push_flags_fn_t)ndr_push_netr_NETRSERVERTRUSTPASSWORDSGET);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRSERVERTRUSTPASSWORDSGET, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_DSRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_DSRGETFORESTTRUSTINFORMATION r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRGETFORESTTRUSTINFORMATION, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRGETFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_netr_DSRGETFORESTTRUSTINFORMATION);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRGETFORESTTRUSTINFORMATION, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_NETRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRGETFORESTTRUSTINFORMATION r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRGETFORESTTRUSTINFORMATION, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRGETFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRGETFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_netr_NETRGETFORESTTRUSTINFORMATION);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRGETFORESTTRUSTINFORMATION, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags)
-{
- struct netr_LogonSamLogonWithFlags r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_name = server_name;
- r.in.computer_name = computer_name;
- r.in.credential = credential;
- r.in.return_authenticator = return_authenticator;
- r.in.logon_level = logon_level;
- r.in.logon = logon;
- r.in.validation_level = validation_level;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogonWithFlags, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGONWITHFLAGS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogonWithFlags, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogonWithFlags);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogonWithFlags, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( return_authenticator ) {
- *return_authenticator = *r.out.return_authenticator;
- }
- *validation = *r.out.validation;
- *authoritative = *r.out.authoritative;
- *flags = *r.out.flags;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_netr_NETRSERVERGETTRUSTINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct netr_NETRSERVERGETTRUSTINFO r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRSERVERGETTRUSTINFO, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRSERVERGETTRUSTINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRSERVERGETTRUSTINFO, (ndr_push_flags_fn_t)ndr_push_netr_NETRSERVERGETTRUSTINFO);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRSERVERGETTRUSTINFO, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
diff --git a/source/librpc/gen_ndr/cli_netlogon.h b/source/librpc/gen_ndr/cli_netlogon.h
deleted file mode 100644
index b88dcca92fd..00000000000
--- a/source/librpc/gen_ndr/cli_netlogon.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "librpc/gen_ndr/ndr_netlogon.h"
-#ifndef __CLI_NETLOGON__
-#define __CLI_NETLOGON__
-NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasInfo *info);
-NTSTATUS rpccli_netr_LogonUasLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasLogoffInfo *info);
-NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative);
-NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon);
-NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Credential *credentials);
-NTSTATUS rpccli_netr_ServerAuthenticate(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials);
-NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Authenticator credential, struct samr_Password new_password, struct netr_Authenticator *return_authenticator);
-NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint64_t *sequence_num, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
-NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
-NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, struct netr_UAS_INFO_0 uas, uint32_t count, uint32_t level, uint32_t buffersize, struct netr_AccountBuffer *buffer, uint32_t *count_returned, uint32_t *total_entries, struct netr_UAS_INFO_0 *recordid);
-NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint32_t reference, uint32_t level, uint32_t buffersize, struct netr_AccountBuffer *buffer, uint32_t *count_returned, uint32_t *total_entries, uint32_t *next_reference, struct netr_UAS_INFO_0 *recordid);
-NTSTATUS rpccli_netr_GetDcName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *domainname, const char **dcname);
-NTSTATUS rpccli_netr_LogonControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, enum netr_LogonControlCode function_code, uint32_t level, union netr_CONTROL_QUERY_INFORMATION *info);
-NTSTATUS rpccli_netr_GetAnyDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *domainname, const char **dcname);
-NTSTATUS rpccli_netr_LogonControl2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, uint32_t function_code, uint32_t level, union netr_CONTROL_DATA_INFORMATION data, union netr_CONTROL_QUERY_INFORMATION *query);
-NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials, uint32_t *negotiate_flags);
-NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint16_t restart_state, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
-NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint8_t *change_log_entry, uint32_t change_log_entry_size, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
-NTSTATUS rpccli_netr_LogonControl2Ex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, uint32_t function_code, uint32_t level, union netr_CONTROL_DATA_INFORMATION data, union netr_CONTROL_QUERY_INFORMATION *query);
-NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, struct GUID *site_guid, uint32_t flags, struct netr_DsRGetDCNameInfo *info);
-NTSTATUS rpccli_netr_NETRLOGONDUMMYROUTINE1(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRLOGONSETSERVICEBITS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRLOGONGETTRUSTRID(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRLOGONCOMPUTESERVERDIGEST(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_ServerAuthenticate3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials, uint32_t *negotiate_flags, uint32_t *rid);
-NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info);
-NTSTATUS rpccli_netr_DsRGetSiteName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *computer_name, const char **site);
-NTSTATUS rpccli_netr_LogonGetDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint32_t level, union netr_DomainQuery query, union netr_DomainInfo *info);
-NTSTATUS rpccli_netr_ServerPasswordSet2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Authenticator credential, struct netr_CryptPassword new_password, struct netr_Authenticator *return_authenticator);
-NTSTATUS rpccli_netr_NETRSERVERPASSWORDGET(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRLOGONSENDTOSAM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client_account, uint32_t mask, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info);
-NTSTATUS rpccli_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESEXW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DSRGETDCSITECOVERAGEW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_LogonSamLogonEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags);
-NTSTATUS rpccli_netr_DsrEnumerateDomainTrusts(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t trust_flags, uint32_t *count, struct netr_DomainTrust **trusts);
-NTSTATUS rpccli_netr_DSRDEREGISTERDNSHOSTRECORDS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRSERVERTRUSTPASSWORDSGET(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DSRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_NETRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags);
-NTSTATUS rpccli_netr_NETRSERVERGETTRUSTINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-#endif /* __CLI_NETLOGON__ */
diff --git a/source/librpc/gen_ndr/cli_srvsvc.c b/source/librpc/gen_ndr/cli_srvsvc.c
deleted file mode 100644
index d79474b6fe8..00000000000
--- a/source/librpc/gen_ndr/cli_srvsvc.c
+++ /dev/null
@@ -1,1826 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_srvsvc.h"
-
-NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetCharDevCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetCharDevEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.ctr = ctr;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *ctr = *r.out.ctr;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetCharDevGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, uint32_t level, union srvsvc_NetCharDevInfo *info)
-{
- struct srvsvc_NetCharDevGetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.device_name = device_name;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevGetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevGetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevGetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetCharDevControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, uint32_t opcode)
-{
- struct srvsvc_NetCharDevControl r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.device_name = device_name;
- r.in.opcode = opcode;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevControl, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVCONTROL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevControl, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevControl);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevControl, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *user, uint32_t *level, union srvsvc_NetCharDevQCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetCharDevQEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.user = user;
- r.in.level = level;
- r.in.ctr = ctr;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *ctr = *r.out.ctr;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, const char *user, uint32_t level, union srvsvc_NetCharDevQInfo *info)
-{
- struct srvsvc_NetCharDevQGetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.queue_name = queue_name;
- r.in.user = user;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQGetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQGetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQGetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, uint32_t level, union srvsvc_NetCharDevQInfo info, uint32_t *parm_error)
-{
- struct srvsvc_NetCharDevQSetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.queue_name = queue_name;
- r.in.level = level;
- r.in.info = info;
- r.in.parm_error = parm_error;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQSetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQSETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQSetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQSetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQSetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( parm_error ) {
- *parm_error = *r.out.parm_error;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetCharDevQPurge(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name)
-{
- struct srvsvc_NetCharDevQPurge r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.queue_name = queue_name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurge, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQPURGE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQPurge, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQPurge);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurge, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, const char *computer_name)
-{
- struct srvsvc_NetCharDevQPurgeSelf r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.queue_name = queue_name;
- r.in.computer_name = computer_name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQPURGESELF, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQPurgeSelf, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQPurgeSelf);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t *level, union srvsvc_NetConnCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetConnEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.path = path;
- r.in.level = level;
- r.in.ctr = ctr;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetConnEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCONNENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetConnEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetConnEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetConnEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *ctr = *r.out.ctr;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, const char *user, uint32_t *level, union srvsvc_NetFileCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetFileEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.path = path;
- r.in.user = user;
- r.in.level = level;
- r.in.ctr = ctr;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetFileEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETFILEENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetFileEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetFileEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetFileEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *ctr = *r.out.ctr;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetFileGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t fid, uint32_t level, union srvsvc_NetFileInfo *info)
-{
- struct srvsvc_NetFileGetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.fid = fid;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetFileGetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETFILEGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetFileGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetFileGetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetFileGetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t fid)
-{
- struct srvsvc_NetFileClose r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.fid = fid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetFileClose, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETFILECLOSE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetFileClose, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetFileClose);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetFileClose, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user, uint32_t *level, union srvsvc_NetSessCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetSessEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.client = client;
- r.in.user = user;
- r.in.level = level;
- r.in.ctr = ctr;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSessEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSESSENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSessEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSessEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSessEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *ctr = *r.out.ctr;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user)
-{
- struct srvsvc_NetSessDel r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.client = client;
- r.in.user = user;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSessDel, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSESSDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSessDel, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSessDel);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSessDel, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error)
-{
- struct srvsvc_NetShareAdd r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.info = info;
- r.in.parm_error = parm_error;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareAdd, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREADD, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareAdd, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareAdd);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareAdd, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( parm_error ) {
- *parm_error = *r.out.parm_error;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetShareEnumAll r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.ctr = ctr;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnumAll, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREENUMALL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareEnumAll, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareEnumAll);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnumAll, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *ctr = *r.out.ctr;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo *info)
-{
- struct srvsvc_NetShareGetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.share_name = share_name;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareGetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareGetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareGetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error)
-{
- struct srvsvc_NetShareSetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.share_name = share_name;
- r.in.level = level;
- r.in.info = info;
- r.in.parm_error = parm_error;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareSetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHARESETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareSetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareSetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareSetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( parm_error ) {
- *parm_error = *r.out.parm_error;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t reserved)
-{
- struct srvsvc_NetShareDel r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.share_name = share_name;
- r.in.reserved = reserved;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDel, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDel, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDel);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDel, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t reserved)
-{
- struct srvsvc_NetShareDelSticky r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.share_name = share_name;
- r.in.reserved = reserved;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelSticky, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDELSTICKY, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDelSticky, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDelSticky);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelSticky, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareCheck(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, enum srvsvc_ShareType *type)
-{
- struct srvsvc_NetShareCheck r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.device_name = device_name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareCheck, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHARECHECK, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareCheck, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareCheck);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareCheck, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *type = *r.out.type;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo *info)
-{
- struct srvsvc_NetSrvGetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSrvGetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSRVGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSrvGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSrvGetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvGetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo info, uint32_t *parm_error)
-{
- struct srvsvc_NetSrvSetInfo r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.info = info;
- r.in.parm_error = parm_error;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSrvSetInfo, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSRVSETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSrvSetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSrvSetInfo);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvSetInfo, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( parm_error ) {
- *parm_error = *r.out.parm_error;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, struct srvsvc_NetDiskInfo *info, uint32_t maxlen, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetDiskEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.info = info;
- r.in.maxlen = maxlen;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetDiskEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETDISKENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetDiskEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetDiskEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetDiskEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *info = *r.out.info;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *service, uint32_t level, uint32_t options, struct srvsvc_Statistics *stats)
-{
- struct srvsvc_NetServerStatisticsGet r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.service = service;
- r.in.level = level;
- r.in.options = options;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetServerStatisticsGet, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSERVERSTATISTICSGET, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetServerStatisticsGet, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetServerStatisticsGet);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetServerStatisticsGet, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *stats = *r.out.stats;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetTransportInfo info)
-{
- struct srvsvc_NetTransportAdd r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.info = info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetTransportAdd, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETTRANSPORTADD, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetTransportAdd, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetTransportAdd);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportAdd, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetTransportCtr *transports, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetTransportEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.transports = transports;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetTransportEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETTRANSPORTENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetTransportEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetTransportEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *transports = *r.out.transports;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t unknown, struct srvsvc_NetTransportInfo0 transport)
-{
- struct srvsvc_NetTransportDel r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.unknown = unknown;
- r.in.transport = transport;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetTransportDel, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETTRANSPORTDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetTransportDel, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetTransportDel);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportDel, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, struct srvsvc_NetRemoteTODInfo *info)
-{
- struct srvsvc_NetRemoteTOD r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetRemoteTOD, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETREMOTETOD, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetRemoteTOD, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetRemoteTOD);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetRemoteTOD, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( info ) {
- *info = *r.out.info;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetSetServiceBits(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *transport, uint32_t servicebits, uint32_t updateimmediately)
-{
- struct srvsvc_NetSetServiceBits r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.transport = transport;
- r.in.servicebits = servicebits;
- r.in.updateimmediately = updateimmediately;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSetServiceBits, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSETSERVICEBITS, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSetServiceBits, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSetServiceBits);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSetServiceBits, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t pathflags, uint32_t *pathtype)
-{
- struct srvsvc_NetPathType r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.path = path;
- r.in.pathflags = pathflags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPathType, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPATHTYPE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPathType, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPathType);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPathType, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *pathtype = *r.out.pathtype;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint8_t *can_path, uint32_t maxbuf, const char *prefix, uint32_t *pathtype, uint32_t pathflags)
-{
- struct srvsvc_NetPathCanonicalize r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.path = path;
- r.in.maxbuf = maxbuf;
- r.in.prefix = prefix;
- r.in.pathtype = pathtype;
- r.in.pathflags = pathflags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPathCanonicalize, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPATHCANONICALIZE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPathCanonicalize, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPathCanonicalize);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCanonicalize, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(can_path, r.out.can_path, r.in.maxbuf);
- *pathtype = *r.out.pathtype;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path1, const char *path2, uint32_t pathtype, uint32_t pathflags)
-{
- struct srvsvc_NetPathCompare r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.path1 = path1;
- r.in.path2 = path2;
- r.in.pathtype = pathtype;
- r.in.pathflags = pathflags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPathCompare, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPATHCOMPARE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPathCompare, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPathCompare);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCompare, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetNameValidate(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *name, uint32_t name_type, uint32_t flags)
-{
- struct srvsvc_NetNameValidate r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.name = name;
- r.in.name_type = name_type;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetNameValidate, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETNAMEVALIDATE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetNameValidate, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetNameValidate);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetNameValidate, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRPRNAMECANONICALIZE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRPRNAMECANONICALIZE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRPRNAMECANONICALIZE, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRPRNAMECANONICALIZE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetPRNameCompare(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *name1, const char *name2, uint32_t name_type, uint32_t flags)
-{
- struct srvsvc_NetPRNameCompare r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.name1 = name1;
- r.in.name2 = name2;
- r.in.name_type = name_type;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPRNameCompare, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPRNAMECOMPARE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPRNameCompare, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPRNameCompare);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPRNameCompare, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
-{
- struct srvsvc_NetShareEnum r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.ctr = ctr;
- r.in.max_buffer = max_buffer;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnum, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareEnum);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnum, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *level = *r.out.level;
- *ctr = *r.out.ctr;
- *totalentries = *r.out.totalentries;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, uint32_t reserved, struct policy_handle *hnd)
-{
- struct srvsvc_NetShareDelStart r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.share = share;
- r.in.reserved = reserved;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelStart, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDELSTART, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDelStart, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDelStart);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelStart, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( hnd ) {
- *hnd = *r.out.hnd;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *hnd)
-{
- struct srvsvc_NetShareDelCommit r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.hnd = hnd;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelCommit, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDELCOMMIT, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDelCommit, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDelCommit);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelCommit, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( hnd ) {
- *hnd = *r.out.hnd;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf *sd_buf)
-{
- struct srvsvc_NetGetFileSecurity r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.share = share;
- r.in.file = file;
- r.in.securityinformation = securityinformation;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetGetFileSecurity, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETGETFILESECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetGetFileSecurity, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetGetFileSecurity);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetGetFileSecurity, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( sd_buf ) {
- *sd_buf = *r.out.sd_buf;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf sd_buf)
-{
- struct srvsvc_NetSetFileSecurity r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.share = share;
- r.in.file = file;
- r.in.securityinformation = securityinformation;
- r.in.sd_buf = sd_buf;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSetFileSecurity, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSETFILESECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSetFileSecurity, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSetFileSecurity);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSetFileSecurity, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetServerTransportAddEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetTransportInfo info)
-{
- struct srvsvc_NetServerTransportAddEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.level = level;
- r.in.info = info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetServerTransportAddEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSERVERTRANSPORTADDEX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetServerTransportAddEx, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetServerTransportAddEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetServerTransportAddEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *emulated_server_unc, const char *transport, uint32_t servicebitsofinterest, uint32_t servicebits, uint32_t updateimmediately)
-{
- struct srvsvc_NetServerSetServiceBitsEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server_unc = server_unc;
- r.in.emulated_server_unc = emulated_server_unc;
- r.in.transport = transport;
- r.in.servicebitsofinterest = servicebitsofinterest;
- r.in.servicebits = servicebits;
- r.in.updateimmediately = updateimmediately;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSERVERSETSERVICEBITSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetServerSetServiceBitsEx, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetServerSetServiceBitsEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSGETVERSION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSGETVERSION r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSGETVERSION, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSGETVERSION, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSGETVERSION, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSGETVERSION);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSGETVERSION, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSCREATELOCALPARTITION r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSCREATELOCALPARTITION, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSCREATELOCALPARTITION, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSCREATELOCALPARTITION);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSDELETELOCALPARTITION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSDELETELOCALPARTITION r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSDELETELOCALPARTITION, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSDELETELOCALPARTITION, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSDELETELOCALPARTITION);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSSETLOCALVOLUMESTATE r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSSETLOCALVOLUMESTATE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSSETLOCALVOLUMESTATE, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSSETLOCALVOLUMESTATE);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSSETSERVERINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSSETSERVERINFO r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSSETSERVERINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSSETSERVERINFO, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSSETSERVERINFO);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSCREATEEXITPOINT r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSCREATEEXITPOINT, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSCREATEEXITPOINT, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSCREATEEXITPOINT);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSDELETEEXITPOINT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSDELETEEXITPOINT r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSDELETEEXITPOINT, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSDELETEEXITPOINT, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSDELETEEXITPOINT);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSMODIFYPREFIX r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSMODIFYPREFIX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSMODIFYPREFIX, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSMODIFYPREFIX);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSFIXLOCALVOLUME(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSFIXLOCALVOLUME r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSFIXLOCALVOLUME, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSFIXLOCALVOLUME, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSFIXLOCALVOLUME);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRDFSMANAGERREPORTSITEINFO r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMANAGERREPORTSITEINFO, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSMANAGERREPORTSITEINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSMANAGERREPORTSITEINFO, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSMANAGERREPORTSITEINFO);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMANAGERREPORTSITEINFO, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_srvsvc_NETRSERVERTRANSPORTDELEX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct srvsvc_NETRSERVERTRANSPORTDELEX r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRSERVERTRANSPORTDELEX, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRSERVERTRANSPORTDELEX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRSERVERTRANSPORTDELEX, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRSERVERTRANSPORTDELEX);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRSERVERTRANSPORTDELEX, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
diff --git a/source/librpc/gen_ndr/cli_srvsvc.h b/source/librpc/gen_ndr/cli_srvsvc.h
deleted file mode 100644
index 3dcb92bfea7..00000000000
--- a/source/librpc/gen_ndr/cli_srvsvc.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "librpc/gen_ndr/ndr_srvsvc.h"
-#ifndef __CLI_SRVSVC__
-#define __CLI_SRVSVC__
-NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetCharDevCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetCharDevGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, uint32_t level, union srvsvc_NetCharDevInfo *info);
-NTSTATUS rpccli_srvsvc_NetCharDevControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, uint32_t opcode);
-NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *user, uint32_t *level, union srvsvc_NetCharDevQCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, const char *user, uint32_t level, union srvsvc_NetCharDevQInfo *info);
-NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, uint32_t level, union srvsvc_NetCharDevQInfo info, uint32_t *parm_error);
-NTSTATUS rpccli_srvsvc_NetCharDevQPurge(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name);
-NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, const char *computer_name);
-NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t *level, union srvsvc_NetConnCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, const char *user, uint32_t *level, union srvsvc_NetFileCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetFileGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t fid, uint32_t level, union srvsvc_NetFileInfo *info);
-NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t fid);
-NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user, uint32_t *level, union srvsvc_NetSessCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user);
-NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error);
-NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetShareGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo *info);
-NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error);
-NTSTATUS rpccli_srvsvc_NetShareDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t reserved);
-NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t reserved);
-NTSTATUS rpccli_srvsvc_NetShareCheck(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, enum srvsvc_ShareType *type);
-NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo *info);
-NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo info, uint32_t *parm_error);
-NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, struct srvsvc_NetDiskInfo *info, uint32_t maxlen, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *service, uint32_t level, uint32_t options, struct srvsvc_Statistics *stats);
-NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetTransportInfo info);
-NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetTransportCtr *transports, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t unknown, struct srvsvc_NetTransportInfo0 transport);
-NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, struct srvsvc_NetRemoteTODInfo *info);
-NTSTATUS rpccli_srvsvc_NetSetServiceBits(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *transport, uint32_t servicebits, uint32_t updateimmediately);
-NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t pathflags, uint32_t *pathtype);
-NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint8_t *can_path, uint32_t maxbuf, const char *prefix, uint32_t *pathtype, uint32_t pathflags);
-NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path1, const char *path2, uint32_t pathtype, uint32_t pathflags);
-NTSTATUS rpccli_srvsvc_NetNameValidate(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *name, uint32_t name_type, uint32_t flags);
-NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NetPRNameCompare(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *name1, const char *name2, uint32_t name_type, uint32_t flags);
-NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
-NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, uint32_t reserved, struct policy_handle *hnd);
-NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *hnd);
-NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf *sd_buf);
-NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf sd_buf);
-NTSTATUS rpccli_srvsvc_NetServerTransportAddEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetTransportInfo info);
-NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *emulated_server_unc, const char *transport, uint32_t servicebitsofinterest, uint32_t servicebits, uint32_t updateimmediately);
-NTSTATUS rpccli_srvsvc_NETRDFSGETVERSION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSDELETELOCALPARTITION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSSETSERVERINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSDELETEEXITPOINT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSFIXLOCALVOLUME(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_srvsvc_NETRSERVERTRANSPORTDELEX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-#endif /* __CLI_SRVSVC__ */
diff --git a/source/librpc/gen_ndr/cli_svcctl.c b/source/librpc/gen_ndr/cli_svcctl.c
deleted file mode 100644
index ce1904f04f3..00000000000
--- a/source/librpc/gen_ndr/cli_svcctl.c
+++ /dev/null
@@ -1,1510 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_svcctl.h"
-
-NTSTATUS rpccli_svcctl_CloseServiceHandle(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct svcctl_CloseServiceHandle r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_CloseServiceHandle, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CLOSESERVICEHANDLE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_CloseServiceHandle, (ndr_push_flags_fn_t)ndr_push_svcctl_CloseServiceHandle);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_CloseServiceHandle, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_ControlService(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t control, struct SERVICE_STATUS *service_status)
-{
- struct svcctl_ControlService r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.control = control;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ControlService, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CONTROLSERVICE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ControlService, (ndr_push_flags_fn_t)ndr_push_svcctl_ControlService);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ControlService, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *service_status = *r.out.service_status;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_DeleteService(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct svcctl_DeleteService r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_DeleteService, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_DELETESERVICE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_DeleteService, (ndr_push_flags_fn_t)ndr_push_svcctl_DeleteService);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_DeleteService, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_LockServiceDatabase(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct policy_handle *lock)
-{
- struct svcctl_LockServiceDatabase r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_LockServiceDatabase, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_LOCKSERVICEDATABASE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_LockServiceDatabase, (ndr_push_flags_fn_t)ndr_push_svcctl_LockServiceDatabase);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_LockServiceDatabase, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *lock = *r.out.lock;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceObjectSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct svcctl_QueryServiceObjectSecurity r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceObjectSecurity, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICEOBJECTSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceObjectSecurity, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceObjectSecurity);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceObjectSecurity, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_SetServiceObjectSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct svcctl_SetServiceObjectSecurity r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SetServiceObjectSecurity, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SETSERVICEOBJECTSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SetServiceObjectSecurity, (ndr_push_flags_fn_t)ndr_push_svcctl_SetServiceObjectSecurity);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SetServiceObjectSecurity, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceStatus(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct SERVICE_STATUS *service_status)
-{
- struct svcctl_QueryServiceStatus r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceStatus, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICESTATUS, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceStatus, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceStatus);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatus, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *service_status = *r.out.service_status;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_SetServiceStatus(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct svcctl_SetServiceStatus r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SetServiceStatus, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SETSERVICESTATUS, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SetServiceStatus, (ndr_push_flags_fn_t)ndr_push_svcctl_SetServiceStatus);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SetServiceStatus, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_UnlockServiceDatabase(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *lock)
-{
- struct svcctl_UnlockServiceDatabase r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.lock = lock;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_UnlockServiceDatabase, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_UNLOCKSERVICEDATABASE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_UnlockServiceDatabase, (ndr_push_flags_fn_t)ndr_push_svcctl_UnlockServiceDatabase);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_UnlockServiceDatabase, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *lock = *r.out.lock;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_NotifyBootConfigStatus(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct svcctl_NotifyBootConfigStatus r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_NotifyBootConfigStatus, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_NOTIFYBOOTCONFIGSTATUS, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_NotifyBootConfigStatus, (ndr_push_flags_fn_t)ndr_push_svcctl_NotifyBootConfigStatus);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_NotifyBootConfigStatus, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_SCSetServiceBitsW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t bits, uint32_t bitson, uint32_t immediate)
-{
- struct svcctl_SCSetServiceBitsW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.bits = bits;
- r.in.bitson = bitson;
- r.in.immediate = immediate;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SCSetServiceBitsW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SCSETSERVICEBITSW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SCSetServiceBitsW, (ndr_push_flags_fn_t)ndr_push_svcctl_SCSetServiceBitsW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t start, uint32_t error, const char *binary_path, const char *load_order_group, uint32_t *tag_id, const char *dependencies, const char *service_start_name, const char *password, const char *display_name)
-{
- struct svcctl_ChangeServiceConfigW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.type = type;
- r.in.start = start;
- r.in.error = error;
- r.in.binary_path = binary_path;
- r.in.load_order_group = load_order_group;
- r.in.dependencies = dependencies;
- r.in.service_start_name = service_start_name;
- r.in.password = password;
- r.in.display_name = display_name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfigW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIGW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfigW, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfigW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *tag_id = *r.out.tag_id;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, uint8_t *dependencies, uint32_t dependencies_size, const char *service_start_name, uint8_t *password, uint32_t password_size, struct policy_handle *handle)
-{
- struct svcctl_CreateServiceW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.scmanager_handle = scmanager_handle;
- r.in.ServiceName = ServiceName;
- r.in.DisplayName = DisplayName;
- r.in.desired_access = desired_access;
- r.in.type = type;
- r.in.start_type = start_type;
- r.in.error_control = error_control;
- r.in.binary_path = binary_path;
- r.in.LoadOrderGroupKey = LoadOrderGroupKey;
- r.in.TagId = TagId;
- r.in.dependencies = dependencies;
- r.in.dependencies_size = dependencies_size;
- r.in.service_start_name = service_start_name;
- r.in.password = password;
- r.in.password_size = password_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_CreateServiceW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CREATESERVICEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_CreateServiceW, (ndr_push_flags_fn_t)ndr_push_svcctl_CreateServiceW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( TagId ) {
- *TagId = *r.out.TagId;
- }
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *service_status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned)
-{
- struct svcctl_EnumDependentServicesW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.service = service;
- r.in.state = state;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumDependentServicesW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMDEPENDENTSERVICESW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumDependentServicesW, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumDependentServicesW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( service_status ) {
- *service_status = *r.out.service_status;
- }
- *bytes_needed = *r.out.bytes_needed;
- *services_returned = *r.out.services_returned;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle)
-{
- struct svcctl_EnumServicesStatusW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.type = type;
- r.in.state = state;
- r.in.buf_size = buf_size;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMSERVICESSTATUSW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumServicesStatusW, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumServicesStatusW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(service, r.out.service, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
- *services_returned = *r.out.services_returned;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_OpenSCManagerW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *MachineName, const char *DatabaseName, uint32_t access_mask, struct policy_handle *handle)
-{
- struct svcctl_OpenSCManagerW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.MachineName = MachineName;
- r.in.DatabaseName = DatabaseName;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenSCManagerW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSCMANAGERW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenSCManagerW, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenSCManagerW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_OpenServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, uint32_t access_mask, struct policy_handle *handle)
-{
- struct svcctl_OpenServiceW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.scmanager_handle = scmanager_handle;
- r.in.ServiceName = ServiceName;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenServiceW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSERVICEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenServiceW, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenServiceW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed)
-{
- struct svcctl_QueryServiceConfigW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfigW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIGW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfigW, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfigW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(query, r.out.query, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceLockStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t buf_size, struct SERVICE_LOCK_STATUS *lock_status, uint32_t *required_buf_size)
-{
- struct svcctl_QueryServiceLockStatusW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceLockStatusW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceLockStatusW, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceLockStatusW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *lock_status = *r.out.lock_status;
- *required_buf_size = *r.out.required_buf_size;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_StartServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t NumArgs, const char *Arguments)
-{
- struct svcctl_StartServiceW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.NumArgs = NumArgs;
- r.in.Arguments = Arguments;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_StartServiceW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_STARTSERVICEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_StartServiceW, (ndr_push_flags_fn_t)ndr_push_svcctl_StartServiceW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_StartServiceW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length)
-{
- struct svcctl_GetServiceDisplayNameW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.service_name = service_name;
- r.in.display_name_length = display_name_length;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceDisplayNameW, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceDisplayNameW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *display_name = *r.out.display_name;
- if ( display_name_length ) {
- *display_name_length = *r.out.display_name_length;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length)
-{
- struct svcctl_GetServiceKeyNameW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.service_name = service_name;
- r.in.display_name_length = display_name_length;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEKEYNAMEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceKeyNameW, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceKeyNameW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *key_name = *r.out.key_name;
- if ( display_name_length ) {
- *display_name_length = *r.out.display_name_length;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_SCSetServiceBitsA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t bits, uint32_t bitson, uint32_t immediate)
-{
- struct svcctl_SCSetServiceBitsA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.bits = bits;
- r.in.bitson = bitson;
- r.in.immediate = immediate;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SCSetServiceBitsA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SCSETSERVICEBITSA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SCSetServiceBitsA, (ndr_push_flags_fn_t)ndr_push_svcctl_SCSetServiceBitsA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t start, uint32_t error, const char *binary_path, const char *load_order_group, uint32_t *tag_id, const char *dependencies, const char *service_start_name, const char *password, const char *display_name)
-{
- struct svcctl_ChangeServiceConfigA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.type = type;
- r.in.start = start;
- r.in.error = error;
- r.in.binary_path = binary_path;
- r.in.load_order_group = load_order_group;
- r.in.dependencies = dependencies;
- r.in.service_start_name = service_start_name;
- r.in.password = password;
- r.in.display_name = display_name;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfigA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIGA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfigA, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfigA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *tag_id = *r.out.tag_id;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, const char *dependencies, const char *service_start_name, const char *password)
-{
- struct svcctl_CreateServiceA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.ServiceName = ServiceName;
- r.in.DisplayName = DisplayName;
- r.in.desired_access = desired_access;
- r.in.type = type;
- r.in.start_type = start_type;
- r.in.error_control = error_control;
- r.in.binary_path = binary_path;
- r.in.LoadOrderGroupKey = LoadOrderGroupKey;
- r.in.dependencies = dependencies;
- r.in.service_start_name = service_start_name;
- r.in.password = password;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_CreateServiceA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CREATESERVICEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_CreateServiceA, (ndr_push_flags_fn_t)ndr_push_svcctl_CreateServiceA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( TagId ) {
- *TagId = *r.out.TagId;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *service_status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned)
-{
- struct svcctl_EnumDependentServicesA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.service = service;
- r.in.state = state;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumDependentServicesA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMDEPENDENTSERVICESA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumDependentServicesA, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumDependentServicesA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( service_status ) {
- *service_status = *r.out.service_status;
- }
- *bytes_needed = *r.out.bytes_needed;
- *services_returned = *r.out.services_returned;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle)
-{
- struct svcctl_EnumServicesStatusA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.type = type;
- r.in.state = state;
- r.in.buf_size = buf_size;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMSERVICESSTATUSA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumServicesStatusA, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumServicesStatusA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(service, r.out.service, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
- *services_returned = *r.out.services_returned;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_OpenSCManagerA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *MachineName, const char *DatabaseName, uint32_t access_mask, struct policy_handle *handle)
-{
- struct svcctl_OpenSCManagerA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.MachineName = MachineName;
- r.in.DatabaseName = DatabaseName;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenSCManagerA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSCMANAGERA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenSCManagerA, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenSCManagerA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_OpenServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, uint32_t access_mask)
-{
- struct svcctl_OpenServiceA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.scmanager_handle = scmanager_handle;
- r.in.ServiceName = ServiceName;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenServiceA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSERVICEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenServiceA, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenServiceA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed)
-{
- struct svcctl_QueryServiceConfigA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfigA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIGA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfigA, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfigA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(query, r.out.query, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceLockStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t buf_size, struct SERVICE_LOCK_STATUS *lock_status, uint32_t *required_buf_size)
-{
- struct svcctl_QueryServiceLockStatusA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceLockStatusA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceLockStatusA, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceLockStatusA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *lock_status = *r.out.lock_status;
- *required_buf_size = *r.out.required_buf_size;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_StartServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t NumArgs, const char *Arguments)
-{
- struct svcctl_StartServiceA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.NumArgs = NumArgs;
- r.in.Arguments = Arguments;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_StartServiceA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_STARTSERVICEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_StartServiceA, (ndr_push_flags_fn_t)ndr_push_svcctl_StartServiceA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_StartServiceA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length)
-{
- struct svcctl_GetServiceDisplayNameA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.service_name = service_name;
- r.in.display_name_length = display_name_length;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceDisplayNameA, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceDisplayNameA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *display_name = *r.out.display_name;
- if ( display_name_length ) {
- *display_name_length = *r.out.display_name_length;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length)
-{
- struct svcctl_GetServiceKeyNameA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.service_name = service_name;
- r.in.display_name_length = display_name_length;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEKEYNAMEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceKeyNameA, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceKeyNameA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *key_name = *r.out.key_name;
- if ( display_name_length ) {
- *display_name_length = *r.out.display_name_length;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_GetCurrentGroupeStateW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct svcctl_GetCurrentGroupeStateW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetCurrentGroupeStateW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETCURRENTGROUPESTATEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetCurrentGroupeStateW, (ndr_push_flags_fn_t)ndr_push_svcctl_GetCurrentGroupeStateW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetCurrentGroupeStateW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_EnumServiceGroupW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct svcctl_EnumServiceGroupW r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumServiceGroupW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMSERVICEGROUPW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumServiceGroupW, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumServiceGroupW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumServiceGroupW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_ChangeServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *info)
-{
- struct svcctl_ChangeServiceConfig2A r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.info_level = info_level;
- r.in.info = info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfig2A, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIG2A, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfig2A, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfig2A);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2A, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_ChangeServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *info)
-{
- struct svcctl_ChangeServiceConfig2W r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.info_level = info_level;
- r.in.info = info;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfig2W, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIG2W, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfig2W, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfig2W);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2W, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed)
-{
- struct svcctl_QueryServiceConfig2A r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.info_level = info_level;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfig2A, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIG2A, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfig2A, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfig2A);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2A, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(buffer, r.out.buffer, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed)
-{
- struct svcctl_QueryServiceConfig2W r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.info_level = info_level;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfig2W, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIG2W, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfig2W, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfig2W);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2W, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(buffer, r.out.buffer, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed)
-{
- struct svcctl_QueryServiceStatusEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.info_level = info_level;
- r.in.buf_size = buf_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceStatusEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICESTATUSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceStatusEx, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceStatusEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatusEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(buffer, r.out.buffer, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name)
-{
- struct EnumServicesStatusExA r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.scmanager = scmanager;
- r.in.info_level = info_level;
- r.in.type = type;
- r.in.state = state;
- r.in.buf_size = buf_size;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(EnumServicesStatusExA, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_ENUMSERVICESSTATUSEXA, &r, (ndr_pull_flags_fn_t)ndr_pull_EnumServicesStatusExA, (ndr_push_flags_fn_t)ndr_push_EnumServicesStatusExA);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(EnumServicesStatusExA, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(services, r.out.services, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
- *service_returned = *r.out.service_returned;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
- *group_name = *r.out.group_name;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name)
-{
- struct EnumServicesStatusExW r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.scmanager = scmanager;
- r.in.info_level = info_level;
- r.in.type = type;
- r.in.state = state;
- r.in.buf_size = buf_size;
- r.in.resume_handle = resume_handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(EnumServicesStatusExW, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_ENUMSERVICESSTATUSEXW, &r, (ndr_pull_flags_fn_t)ndr_pull_EnumServicesStatusExW, (ndr_push_flags_fn_t)ndr_push_EnumServicesStatusExW);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(EnumServicesStatusExW, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- memcpy(services, r.out.services, r.in.buf_size);
- *bytes_needed = *r.out.bytes_needed;
- *service_returned = *r.out.service_returned;
- if ( resume_handle ) {
- *resume_handle = *r.out.resume_handle;
- }
- *group_name = *r.out.group_name;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_svcctl_SCSendTSMessage(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct svcctl_SCSendTSMessage r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SCSendTSMessage, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SCSENDTSMESSAGE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SCSendTSMessage, (ndr_push_flags_fn_t)ndr_push_svcctl_SCSendTSMessage);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SCSendTSMessage, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
diff --git a/source/librpc/gen_ndr/cli_svcctl.h b/source/librpc/gen_ndr/cli_svcctl.h
deleted file mode 100644
index 27fed17925a..00000000000
--- a/source/librpc/gen_ndr/cli_svcctl.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "librpc/gen_ndr/ndr_svcctl.h"
-#ifndef __CLI_SVCCTL__
-#define __CLI_SVCCTL__
-NTSTATUS rpccli_svcctl_CloseServiceHandle(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_ControlService(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t control, struct SERVICE_STATUS *service_status);
-NTSTATUS rpccli_svcctl_DeleteService(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_LockServiceDatabase(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct policy_handle *lock);
-NTSTATUS rpccli_svcctl_QueryServiceObjectSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_svcctl_SetServiceObjectSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_svcctl_QueryServiceStatus(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct SERVICE_STATUS *service_status);
-NTSTATUS rpccli_svcctl_SetServiceStatus(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_svcctl_UnlockServiceDatabase(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *lock);
-NTSTATUS rpccli_svcctl_NotifyBootConfigStatus(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_svcctl_SCSetServiceBitsW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t bits, uint32_t bitson, uint32_t immediate);
-NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t start, uint32_t error, const char *binary_path, const char *load_order_group, uint32_t *tag_id, const char *dependencies, const char *service_start_name, const char *password, const char *display_name);
-NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, uint8_t *dependencies, uint32_t dependencies_size, const char *service_start_name, uint8_t *password, uint32_t password_size, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *service_status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned);
-NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle);
-NTSTATUS rpccli_svcctl_OpenSCManagerW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *MachineName, const char *DatabaseName, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_OpenServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_svcctl_QueryServiceLockStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t buf_size, struct SERVICE_LOCK_STATUS *lock_status, uint32_t *required_buf_size);
-NTSTATUS rpccli_svcctl_StartServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t NumArgs, const char *Arguments);
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length);
-NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length);
-NTSTATUS rpccli_svcctl_SCSetServiceBitsA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t bits, uint32_t bitson, uint32_t immediate);
-NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t start, uint32_t error, const char *binary_path, const char *load_order_group, uint32_t *tag_id, const char *dependencies, const char *service_start_name, const char *password, const char *display_name);
-NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, const char *dependencies, const char *service_start_name, const char *password);
-NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *service_status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned);
-NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle);
-NTSTATUS rpccli_svcctl_OpenSCManagerA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *MachineName, const char *DatabaseName, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_OpenServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, uint32_t access_mask);
-NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_svcctl_QueryServiceLockStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t buf_size, struct SERVICE_LOCK_STATUS *lock_status, uint32_t *required_buf_size);
-NTSTATUS rpccli_svcctl_StartServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t NumArgs, const char *Arguments);
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length);
-NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length);
-NTSTATUS rpccli_svcctl_GetCurrentGroupeStateW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_svcctl_EnumServiceGroupW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_svcctl_ChangeServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *info);
-NTSTATUS rpccli_svcctl_ChangeServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *info);
-NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name);
-NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name);
-NTSTATUS rpccli_svcctl_SCSendTSMessage(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-#endif /* __CLI_SVCCTL__ */
diff --git a/source/librpc/gen_ndr/cli_unixinfo.c b/source/librpc/gen_ndr/cli_unixinfo.c
deleted file mode 100644
index 687ba7e5c1c..00000000000
--- a/source/librpc/gen_ndr/cli_unixinfo.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_unixinfo.h"
-
-NTSTATUS rpccli_unixinfo_SidToUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct dom_sid sid, uint64_t *uid)
-{
- struct unixinfo_SidToUid r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.sid = sid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_SidToUid, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_SIDTOUID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_SidToUid, (ndr_push_flags_fn_t)ndr_push_unixinfo_SidToUid);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_SidToUid, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *uid = *r.out.uid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_unixinfo_UidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint64_t uid, struct dom_sid *sid)
-{
- struct unixinfo_UidToSid r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.uid = uid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_UidToSid, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_UIDTOSID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_UidToSid, (ndr_push_flags_fn_t)ndr_push_unixinfo_UidToSid);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_UidToSid, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *sid = *r.out.sid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_unixinfo_SidToGid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct dom_sid sid, uint64_t *gid)
-{
- struct unixinfo_SidToGid r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.sid = sid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_SidToGid, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_SIDTOGID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_SidToGid, (ndr_push_flags_fn_t)ndr_push_unixinfo_SidToGid);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_SidToGid, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *gid = *r.out.gid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_unixinfo_GidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint64_t gid, struct dom_sid *sid)
-{
- struct unixinfo_GidToSid r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.gid = gid;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_GidToSid, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_GIDTOSID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_GidToSid, (ndr_push_flags_fn_t)ndr_push_unixinfo_GidToSid);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_GidToSid, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *sid = *r.out.sid;
-
- /* Return result */
- return r.out.result;
-}
-
-NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t *count, uint64_t *uids, struct unixinfo_GetPWUidInfo *infos)
-{
- struct unixinfo_GetPWUid r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.count = count;
- r.in.uids = uids;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_GetPWUid, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_GETPWUID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_GetPWUid, (ndr_push_flags_fn_t)ndr_push_unixinfo_GetPWUid);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_GetPWUid, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *count = *r.out.count;
- memcpy(infos, r.out.infos, *r.in.count);
-
- /* Return result */
- return r.out.result;
-}
-
diff --git a/source/librpc/gen_ndr/cli_unixinfo.h b/source/librpc/gen_ndr/cli_unixinfo.h
deleted file mode 100644
index f0f2b54626b..00000000000
--- a/source/librpc/gen_ndr/cli_unixinfo.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "librpc/gen_ndr/ndr_unixinfo.h"
-#ifndef __CLI_UNIXINFO__
-#define __CLI_UNIXINFO__
-NTSTATUS rpccli_unixinfo_SidToUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct dom_sid sid, uint64_t *uid);
-NTSTATUS rpccli_unixinfo_UidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint64_t uid, struct dom_sid *sid);
-NTSTATUS rpccli_unixinfo_SidToGid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct dom_sid sid, uint64_t *gid);
-NTSTATUS rpccli_unixinfo_GidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint64_t gid, struct dom_sid *sid);
-NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t *count, uint64_t *uids, struct unixinfo_GetPWUidInfo *infos);
-#endif /* __CLI_UNIXINFO__ */
diff --git a/source/librpc/gen_ndr/cli_winreg.c b/source/librpc/gen_ndr/cli_winreg.c
deleted file mode 100644
index 9b25a6113bd..00000000000
--- a/source/librpc/gen_ndr/cli_winreg.c
+++ /dev/null
@@ -1,1186 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_winreg.h"
-
-NTSTATUS rpccli_winreg_OpenHKCR(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKCR r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKCR, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKCR, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKCR, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKCR);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKCR, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKCU(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKCU r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKCU, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKCU, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKCU, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKCU);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKCU, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKLM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKLM r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKLM, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKLM, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKLM, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKLM);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKLM, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKPD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKPD r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKPD, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKPD, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKPD, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKPD);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKPD, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKU(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKU r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKU, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKU, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKU, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKU);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKU, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_CloseKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct winreg_CloseKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_CloseKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_CLOSEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_CloseKey, (ndr_push_flags_fn_t)ndr_push_winreg_CloseKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_CloseKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, struct winreg_String keyclass, uint32_t options, uint32_t access_mask, struct winreg_SecBuf *secdesc, struct policy_handle *new_handle, enum winreg_CreateAction *action_taken)
-{
- struct winreg_CreateKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
- r.in.keyclass = keyclass;
- r.in.options = options;
- r.in.access_mask = access_mask;
- r.in.secdesc = secdesc;
- r.in.action_taken = action_taken;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_CreateKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_CREATEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_CreateKey, (ndr_push_flags_fn_t)ndr_push_winreg_CreateKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_CreateKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *new_handle = *r.out.new_handle;
- if ( action_taken ) {
- *action_taken = *r.out.action_taken;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_DeleteKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String key)
-{
- struct winreg_DeleteKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.key = key;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_DeleteKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_DELETEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_DeleteKey, (ndr_push_flags_fn_t)ndr_push_winreg_DeleteKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_DeleteKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_DeleteValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String value)
-{
- struct winreg_DeleteValue r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.value = value;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_DeleteValue, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_DELETEVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_DeleteValue, (ndr_push_flags_fn_t)ndr_push_winreg_DeleteValue);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_DeleteValue, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_StringBuf *name, struct winreg_StringBuf *keyclass, NTTIME *last_changed_time)
-{
- struct winreg_EnumKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.enum_index = enum_index;
- r.in.name = name;
- r.in.keyclass = keyclass;
- r.in.last_changed_time = last_changed_time;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_EnumKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_ENUMKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_EnumKey, (ndr_push_flags_fn_t)ndr_push_winreg_EnumKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_EnumKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *name = *r.out.name;
- if ( keyclass ) {
- *keyclass = *r.out.keyclass;
- }
- if ( last_changed_time ) {
- *last_changed_time = *r.out.last_changed_time;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type *type, uint8_t *value, uint32_t *size, uint32_t *length)
-{
- struct winreg_EnumValue r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.enum_index = enum_index;
- r.in.name = name;
- r.in.type = type;
- r.in.value = value;
- r.in.size = size;
- r.in.length = length;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_EnumValue, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_ENUMVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_EnumValue, (ndr_push_flags_fn_t)ndr_push_winreg_EnumValue);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_EnumValue, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *name = *r.out.name;
- if ( type ) {
- *type = *r.out.type;
- }
- if ( value ) {
- *value = *r.out.value;
- }
- if ( size ) {
- *size = *r.out.size;
- }
- if ( length ) {
- *length = *r.out.length;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_FlushKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle)
-{
- struct winreg_FlushKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_FlushKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_FLUSHKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_FlushKey, (ndr_push_flags_fn_t)ndr_push_winreg_FlushKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_FlushKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_GetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct KeySecurityData *sd)
-{
- struct winreg_GetKeySecurity r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.sec_info = sec_info;
- r.in.sd = sd;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_GetKeySecurity, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_GETKEYSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_GetKeySecurity, (ndr_push_flags_fn_t)ndr_push_winreg_GetKeySecurity);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_GetKeySecurity, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *sd = *r.out.sd;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_LoadKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *keyname, struct winreg_String *filename)
-{
- struct winreg_LoadKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.keyname = keyname;
- r.in.filename = filename;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_LoadKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_LOADKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_LoadKey, (ndr_push_flags_fn_t)ndr_push_winreg_LoadKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_LoadKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_NotifyChangeKeyValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t watch_subtree, uint32_t notify_filter, uint32_t unknown, struct winreg_String string1, struct winreg_String string2, uint32_t unknown2)
-{
- struct winreg_NotifyChangeKeyValue r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.watch_subtree = watch_subtree;
- r.in.notify_filter = notify_filter;
- r.in.unknown = unknown;
- r.in.string1 = string1;
- r.in.string2 = string2;
- r.in.unknown2 = unknown2;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_NotifyChangeKeyValue, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_NOTIFYCHANGEKEYVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_NotifyChangeKeyValue, (ndr_push_flags_fn_t)ndr_push_winreg_NotifyChangeKeyValue);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_NotifyChangeKeyValue, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *parent_handle, struct winreg_String keyname, uint32_t unknown, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.parent_handle = parent_handle;
- r.in.keyname = keyname;
- r.in.unknown = unknown;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenKey, (ndr_push_flags_fn_t)ndr_push_winreg_OpenKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_classlen, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time)
-{
- struct winreg_QueryInfoKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.classname = classname;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryInfoKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYINFOKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryInfoKey, (ndr_push_flags_fn_t)ndr_push_winreg_QueryInfoKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryInfoKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *classname = *r.out.classname;
- *num_subkeys = *r.out.num_subkeys;
- *max_subkeylen = *r.out.max_subkeylen;
- *max_classlen = *r.out.max_classlen;
- *num_values = *r.out.num_values;
- *max_valnamelen = *r.out.max_valnamelen;
- *max_valbufsize = *r.out.max_valbufsize;
- *secdescsize = *r.out.secdescsize;
- *last_changed_time = *r.out.last_changed_time;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String value_name, enum winreg_Type *type, uint8_t *data, uint32_t *data_size, uint32_t *value_length)
-{
- struct winreg_QueryValue r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.value_name = value_name;
- r.in.type = type;
- r.in.data = data;
- r.in.data_size = data_size;
- r.in.value_length = value_length;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryValue, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryValue, (ndr_push_flags_fn_t)ndr_push_winreg_QueryValue);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryValue, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- if ( type ) {
- *type = *r.out.type;
- }
- if ( data ) {
- *data = *r.out.data;
- }
- if ( data_size ) {
- *data_size = *r.out.data_size;
- }
- if ( value_length ) {
- *value_length = *r.out.value_length;
- }
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_ReplaceKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct winreg_ReplaceKey r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_ReplaceKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_REPLACEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_ReplaceKey, (ndr_push_flags_fn_t)ndr_push_winreg_ReplaceKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_ReplaceKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_RestoreKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *filename, uint32_t flags)
-{
- struct winreg_RestoreKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.filename = filename;
- r.in.flags = flags;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_RestoreKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_RESTOREKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_RestoreKey, (ndr_push_flags_fn_t)ndr_push_winreg_RestoreKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_RestoreKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_SaveKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *filename, struct KeySecurityAttribute *sec_attrib)
-{
- struct winreg_SaveKey r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.filename = filename;
- r.in.sec_attrib = sec_attrib;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SaveKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SAVEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SaveKey, (ndr_push_flags_fn_t)ndr_push_winreg_SaveKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SaveKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_SetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t access_mask, struct KeySecurityData *sd)
-{
- struct winreg_SetKeySecurity r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.access_mask = access_mask;
- r.in.sd = sd;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SetKeySecurity, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SETKEYSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SetKeySecurity, (ndr_push_flags_fn_t)ndr_push_winreg_SetKeySecurity);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SetKeySecurity, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_SetValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, enum winreg_Type type, uint8_t *data, uint32_t size)
-{
- struct winreg_SetValue r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
- r.in.name = name;
- r.in.type = type;
- r.in.data = data;
- r.in.size = size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SetValue, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SETVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SetValue, (ndr_push_flags_fn_t)ndr_push_winreg_SetValue);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SetValue, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_UnLoadKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct winreg_UnLoadKey r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_UnLoadKey, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_UNLOADKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_UnLoadKey, (ndr_push_flags_fn_t)ndr_push_winreg_UnLoadKey);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_UnLoadKey, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_InitiateSystemShutdown(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot)
-{
- struct winreg_InitiateSystemShutdown r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.hostname = hostname;
- r.in.message = message;
- r.in.timeout = timeout;
- r.in.force_apps = force_apps;
- r.in.reboot = reboot;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdown, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_INITIATESYSTEMSHUTDOWN, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_InitiateSystemShutdown, (ndr_push_flags_fn_t)ndr_push_winreg_InitiateSystemShutdown);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdown, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *server)
-{
- struct winreg_AbortSystemShutdown r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.server = server;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_AbortSystemShutdown, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_ABORTSYSTEMSHUTDOWN, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_AbortSystemShutdown, (ndr_push_flags_fn_t)ndr_push_winreg_AbortSystemShutdown);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_AbortSystemShutdown, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_GetVersion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *version)
-{
- struct winreg_GetVersion r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.handle = handle;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_GetVersion, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_GETVERSION, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_GetVersion, (ndr_push_flags_fn_t)ndr_push_winreg_GetVersion);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_GetVersion, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *version = *r.out.version;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKCC(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKCC r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKCC, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKCC, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKCC, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKCC);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKCC, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKDD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKDD r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKDD, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKDD, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKDD, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKDD);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKDD, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *key_handle, struct QueryMultipleValue *values, uint32_t num_values, uint8_t *buffer, uint32_t *buffer_size)
-{
- struct winreg_QueryMultipleValues r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.key_handle = key_handle;
- r.in.values = values;
- r.in.num_values = num_values;
- r.in.buffer = buffer;
- r.in.buffer_size = buffer_size;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYMULTIPLEVALUES, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryMultipleValues, (ndr_push_flags_fn_t)ndr_push_winreg_QueryMultipleValues);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *values = *r.out.values;
- if ( buffer ) {
- *buffer = *r.out.buffer;
- }
- *buffer_size = *r.out.buffer_size;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_InitiateSystemShutdownEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot, uint32_t reason)
-{
- struct winreg_InitiateSystemShutdownEx r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.hostname = hostname;
- r.in.message = message;
- r.in.timeout = timeout;
- r.in.force_apps = force_apps;
- r.in.reboot = reboot;
- r.in.reason = reason;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdownEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_INITIATESYSTEMSHUTDOWNEX, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_InitiateSystemShutdownEx, (ndr_push_flags_fn_t)ndr_push_winreg_InitiateSystemShutdownEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdownEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_SaveKeyEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct winreg_SaveKeyEx r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SaveKeyEx, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SAVEKEYEX, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SaveKeyEx, (ndr_push_flags_fn_t)ndr_push_winreg_SaveKeyEx);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SaveKeyEx, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKPT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKPT r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKPT, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKPT, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKPT, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKPT);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKPT, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_OpenHKPN(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle)
-{
- struct winreg_OpenHKPN r;
- NTSTATUS status;
-
- /* In parameters */
- r.in.system_name = system_name;
- r.in.access_mask = access_mask;
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKPN, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKPN, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKPN, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKPN);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKPN, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
- *handle = *r.out.handle;
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
-{
- struct winreg_QueryMultipleValues2 r;
- NTSTATUS status;
-
- /* In parameters */
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues2, &r);
-
- status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYMULTIPLEVALUES2, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryMultipleValues2, (ndr_push_flags_fn_t)ndr_push_winreg_QueryMultipleValues2);
-
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues2, &r);
-
- if (NT_STATUS_IS_ERR(status)) {
- return status;
- }
-
- /* Return variables */
-
- /* Return result */
- return werror_to_ntstatus(r.out.result);
-}
-
diff --git a/source/librpc/gen_ndr/cli_winreg.h b/source/librpc/gen_ndr/cli_winreg.h
deleted file mode 100644
index 712f7cdfca5..00000000000
--- a/source/librpc/gen_ndr/cli_winreg.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "librpc/gen_ndr/ndr_winreg.h"
-#ifndef __CLI_WINREG__
-#define __CLI_WINREG__
-NTSTATUS rpccli_winreg_OpenHKCR(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_OpenHKCU(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_OpenHKLM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_OpenHKPD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_OpenHKU(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_CloseKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, struct winreg_String keyclass, uint32_t options, uint32_t access_mask, struct winreg_SecBuf *secdesc, struct policy_handle *new_handle, enum winreg_CreateAction *action_taken);
-NTSTATUS rpccli_winreg_DeleteKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String key);
-NTSTATUS rpccli_winreg_DeleteValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String value);
-NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_StringBuf *name, struct winreg_StringBuf *keyclass, NTTIME *last_changed_time);
-NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type *type, uint8_t *value, uint32_t *size, uint32_t *length);
-NTSTATUS rpccli_winreg_FlushKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_GetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct KeySecurityData *sd);
-NTSTATUS rpccli_winreg_LoadKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *keyname, struct winreg_String *filename);
-NTSTATUS rpccli_winreg_NotifyChangeKeyValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t watch_subtree, uint32_t notify_filter, uint32_t unknown, struct winreg_String string1, struct winreg_String string2, uint32_t unknown2);
-NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *parent_handle, struct winreg_String keyname, uint32_t unknown, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_classlen, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time);
-NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String value_name, enum winreg_Type *type, uint8_t *data, uint32_t *data_size, uint32_t *value_length);
-NTSTATUS rpccli_winreg_ReplaceKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_winreg_RestoreKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *filename, uint32_t flags);
-NTSTATUS rpccli_winreg_SaveKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *filename, struct KeySecurityAttribute *sec_attrib);
-NTSTATUS rpccli_winreg_SetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t access_mask, struct KeySecurityData *sd);
-NTSTATUS rpccli_winreg_SetValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, enum winreg_Type type, uint8_t *data, uint32_t size);
-NTSTATUS rpccli_winreg_UnLoadKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_winreg_InitiateSystemShutdown(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot);
-NTSTATUS rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *server);
-NTSTATUS rpccli_winreg_GetVersion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *version);
-NTSTATUS rpccli_winreg_OpenHKCC(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_OpenHKDD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *key_handle, struct QueryMultipleValue *values, uint32_t num_values, uint8_t *buffer, uint32_t *buffer_size);
-NTSTATUS rpccli_winreg_InitiateSystemShutdownEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot, uint32_t reason);
-NTSTATUS rpccli_winreg_SaveKeyEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_winreg_OpenHKPT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_OpenHKPN(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-#endif /* __CLI_WINREG__ */
diff --git a/source/librpc/gen_ndr/cli_wkssvc.c b/source/librpc/gen_ndr/cli_wkssvc.c
index 18d171827ea..918851a15e2 100644
--- a/source/librpc/gen_ndr/cli_wkssvc.c
+++ b/source/librpc/gen_ndr/cli_wkssvc.c
@@ -20,7 +20,7 @@ NTSTATUS rpccli_wkssvc_NetWkstaGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTAGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaGetInfo, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaGetInfo);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -54,7 +54,7 @@ NTSTATUS rpccli_wkssvc_NetWkstaSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTASETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaSetInfo, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaSetInfo);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -89,7 +89,7 @@ NTSTATUS rpccli_wkssvc_NetWkstaEnumUsers(struct rpc_pipe_client *cli, TALLOC_CTX
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTAENUMUSERS, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaEnumUsers, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaEnumUsers);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -126,7 +126,7 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTAUSERGETINFO(struct rpc_pipe_client *cli, TALLOC_
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTAUSERGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTAUSERGETINFO, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTAUSERGETINFO);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -155,7 +155,7 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTAUSERSETINFO(struct rpc_pipe_client *cli, TALLOC_
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTAUSERSETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTAUSERSETINFO, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTAUSERSETINFO);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -189,7 +189,7 @@ NTSTATUS rpccli_wkssvc_NetWkstaTransportEnum(struct rpc_pipe_client *cli, TALLOC
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTATRANSPORTENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaTransportEnum, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaTransportEnum);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -224,7 +224,7 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTATRANSPORTADD(struct rpc_pipe_client *cli, TALLOC
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTATRANSPORTADD, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTATRANSPORTADD, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTATRANSPORTADD);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -253,7 +253,7 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTATRANSPORTDEL(struct rpc_pipe_client *cli, TALLOC
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTATRANSPORTDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTATRANSPORTDEL, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTATRANSPORTDEL);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -282,7 +282,7 @@ NTSTATUS rpccli_WKSSVC_NETRUSEADD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEADD, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEADD, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEADD);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -311,7 +311,7 @@ NTSTATUS rpccli_WKSSVC_NETRUSEGETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *m
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEGETINFO, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEGETINFO);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -340,7 +340,7 @@ NTSTATUS rpccli_WKSSVC_NETRUSEDEL(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEDEL, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEDEL);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -369,7 +369,7 @@ NTSTATUS rpccli_WKSSVC_NETRUSEENUM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEENUM, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEENUM);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -398,7 +398,7 @@ NTSTATUS rpccli_WKSSVC_NETRMESSAGEBUFFERSEND(struct rpc_pipe_client *cli, TALLOC
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRMESSAGEBUFFERSEND, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRMESSAGEBUFFERSEND, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRMESSAGEBUFFERSEND);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -427,7 +427,7 @@ NTSTATUS rpccli_WKSSVC_NETRWORKSTATIONSTATISTICSGET(struct rpc_pipe_client *cli,
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWORKSTATIONSTATISTICSGET, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWORKSTATIONSTATISTICSGET, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWORKSTATIONSTATISTICSGET);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -456,7 +456,7 @@ NTSTATUS rpccli_WKSSVC_NETRLOGONDOMAINNAMEADD(struct rpc_pipe_client *cli, TALLO
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRLOGONDOMAINNAMEADD, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRLOGONDOMAINNAMEADD, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRLOGONDOMAINNAMEADD);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -485,7 +485,7 @@ NTSTATUS rpccli_WKSSVC_NETRLOGONDOMAINNAMEDEL(struct rpc_pipe_client *cli, TALLO
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRLOGONDOMAINNAMEDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRLOGONDOMAINNAMEDEL, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRLOGONDOMAINNAMEDEL);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -514,7 +514,7 @@ NTSTATUS rpccli_WKSSVC_NETRJOINDOMAIN(struct rpc_pipe_client *cli, TALLOC_CTX *m
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRJOINDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRJOINDOMAIN, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRJOINDOMAIN);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -543,7 +543,7 @@ NTSTATUS rpccli_WKSSVC_NETRUNJOINDOMAIN(struct rpc_pipe_client *cli, TALLOC_CTX
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUNJOINDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUNJOINDOMAIN, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUNJOINDOMAIN);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -572,7 +572,7 @@ NTSTATUS rpccli_WKSSVC_NETRRENAMEMACHINEINDOMAIN(struct rpc_pipe_client *cli, TA
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRRENAMEMACHINEINDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRRENAMEMACHINEINDOMAIN, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRRENAMEMACHINEINDOMAIN);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -601,7 +601,7 @@ NTSTATUS rpccli_WKSSVC_NETRVALIDATENAME(struct rpc_pipe_client *cli, TALLOC_CTX
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRVALIDATENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRVALIDATENAME, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRVALIDATENAME);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -630,7 +630,7 @@ NTSTATUS rpccli_WKSSVC_NETRGETJOININFORMATION(struct rpc_pipe_client *cli, TALLO
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRGETJOININFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRGETJOININFORMATION, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRGETJOININFORMATION);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -659,7 +659,7 @@ NTSTATUS rpccli_WKSSVC_NETRGETJOINABLEOUS(struct rpc_pipe_client *cli, TALLOC_CT
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRGETJOINABLEOUS, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRGETJOINABLEOUS, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRGETJOINABLEOUS);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -694,7 +694,7 @@ NTSTATUS rpccli_wkssvc_NetrJoinDomain2(struct rpc_pipe_client *cli, TALLOC_CTX *
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRJOINDOMAIN2, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrJoinDomain2, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrJoinDomain2);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -727,7 +727,7 @@ NTSTATUS rpccli_wkssvc_NetrUnjoinDomain2(struct rpc_pipe_client *cli, TALLOC_CTX
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUNJOINDOMAIN2, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrUnjoinDomain2, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrUnjoinDomain2);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -761,7 +761,7 @@ NTSTATUS rpccli_wkssvc_NetrRenameMachineInDomain2(struct rpc_pipe_client *cli, T
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRRENAMEMACHINEINDOMAIN2, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrRenameMachineInDomain2, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrRenameMachineInDomain2);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -790,7 +790,7 @@ NTSTATUS rpccli_WKSSVC_NETRVALIDATENAME2(struct rpc_pipe_client *cli, TALLOC_CTX
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRVALIDATENAME2, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRVALIDATENAME2, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRVALIDATENAME2);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -819,7 +819,7 @@ NTSTATUS rpccli_WKSSVC_NETRGETJOINABLEOUS2(struct rpc_pipe_client *cli, TALLOC_C
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRGETJOINABLEOUS2, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRGETJOINABLEOUS2, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRGETJOINABLEOUS2);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -853,7 +853,7 @@ NTSTATUS rpccli_wkssvc_NetrAddAlternateComputerName(struct rpc_pipe_client *cli,
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRADDALTERNATECOMPUTERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrAddAlternateComputerName, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrAddAlternateComputerName);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -887,7 +887,7 @@ NTSTATUS rpccli_wkssvc_NetrRemoveAlternateComputerName(struct rpc_pipe_client *c
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrRemoveAlternateComputerName, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrRemoveAlternateComputerName);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -916,7 +916,7 @@ NTSTATUS rpccli_WKSSVC_NETRSETPRIMARYCOMPUTERNAME(struct rpc_pipe_client *cli, T
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRSETPRIMARYCOMPUTERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRSETPRIMARYCOMPUTERNAME, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRSETPRIMARYCOMPUTERNAME);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
@@ -945,7 +945,7 @@ NTSTATUS rpccli_WKSSVC_NETRENUMERATECOMPUTERNAMES(struct rpc_pipe_client *cli, T
status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRENUMERATECOMPUTERNAMES, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRENUMERATECOMPUTERNAMES, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRENUMERATECOMPUTERNAMES);
- if (!NT_STATUS_IS_OK(status)) {
+ if ( !NT_STATUS_IS_OK(status) ) {
return status;
}
diff --git a/source/librpc/gen_ndr/dfs.h b/source/librpc/gen_ndr/dfs.h
deleted file mode 100644
index 58eb34f0dea..00000000000
--- a/source/librpc/gen_ndr/dfs.h
+++ /dev/null
@@ -1,553 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#ifndef _HEADER_netdfs
-#define _HEADER_netdfs
-
-#define DFS_STORAGE_STATES ( 0xf )
-#ifndef USE_UINT_ENUMS
-enum dfs_ManagerVersion {
- DFS_MANAGER_VERSION_NT4=1,
- DFS_MANAGER_VERSION_W2K=2,
- DFS_MANAGER_VERSION_W2K3=4
-}
-#else
-enum dfs_ManagerVersion { __donnot_use_enum_dfs_ManagerVersion=0x7FFFFFFF}
-#define DFS_MANAGER_VERSION_NT4 ( 1 )
-#define DFS_MANAGER_VERSION_W2K ( 2 )
-#define DFS_MANAGER_VERSION_W2K3 ( 4 )
-#endif
-;
-
-struct dfs_Info0 {
- char _empty_;
-};
-
-struct dfs_Info1 {
- const char *path;/* [unique,charset(UTF16)] */
-};
-
-/* bitmap dfs_VolumeState */
-#define DFS_VOLUME_STATE_OK ( 0x1 )
-#define DFS_VOLUME_STATE_INCONSISTENT ( 0x2 )
-#define DFS_VOLUME_STATE_OFFLINE ( 0x4 )
-#define DFS_VOLUME_STATE_ONLINE ( 0x8 )
-#define DFS_VOLUME_STATE_STANDALONE ( DFS_VOLUME_FLAVOR_STANDALONE )
-#define DFS_VOLUME_STATE_AD_BLOB ( DFS_VOLUME_FLAVOR_AD_BLOB )
-
-;
-
-struct dfs_Info2 {
- const char *path;/* [unique,charset(UTF16)] */
- const char *comment;/* [unique,charset(UTF16)] */
- uint32_t state;
- uint32_t num_stores;
-};
-
-/* bitmap dfs_StorageState */
-#define DFS_STORAGE_STATE_OFFLINE ( 1 )
-#define DFS_STORAGE_STATE_ONLINE ( 2 )
-#define DFS_STORAGE_STATE_ACTIVE ( 4 )
-
-;
-
-struct dfs_StorageInfo {
- uint32_t state;
- const char *server;/* [unique,charset(UTF16)] */
- const char *share;/* [unique,charset(UTF16)] */
-};
-
-struct dfs_Info3 {
- const char *path;/* [unique,charset(UTF16)] */
- const char *comment;/* [unique,charset(UTF16)] */
- uint32_t state;
- uint32_t num_stores;
- struct dfs_StorageInfo *stores;/* [unique,size_is(num_stores)] */
-};
-
-struct dfs_Info4 {
- const char *path;/* [unique,charset(UTF16)] */
- const char *comment;/* [unique,charset(UTF16)] */
- uint32_t state;
- uint32_t timeout;
- struct GUID guid;
- uint32_t num_stores;
- struct dfs_StorageInfo *stores;/* [unique,size_is(num_stores)] */
-};
-
-/* bitmap dfs_PropertyFlags */
-#define DFS_PROPERTY_FLAG_INSITE_REFERRALS ( 0x01 )
-#define DFS_PROPERTY_FLAG_ROOT_SCALABILITY ( 0x02 )
-#define DFS_PROPERTY_FLAG_SITE_COSTING ( 0x04 )
-#define DFS_PROPERTY_FLAG_TARGET_FAILBACK ( 0x08 )
-#define DFS_PROPERTY_FLAG_CLUSTER_ENABLED ( 0x10 )
-
-;
-
-struct dfs_Info5 {
- const char *path;/* [unique,charset(UTF16)] */
- const char *comment;/* [unique,charset(UTF16)] */
- uint32_t state;
- uint32_t timeout;
- struct GUID guid;
- uint32_t flags;
- uint32_t pktsize;
- uint32_t num_stores;
-};
-
-#ifndef USE_UINT_ENUMS
-enum dfs_Target_PriorityClass {
- DFS_INVALID_PRIORITY_CLASS=-1,
- DFS_SITE_COST_NORMAL_PRIORITY_CLASS=0,
- DFS_GLOBAL_HIGH_PRIORITY_CLASS=1,
- DFS_SITE_COST_HIGH_PRIORITY_CLASS=2,
- DFS_SITE_COST_LOW_PRIORITY_CLASS=3,
- DFS_GLOBAL_LOW_PRIORITY_CLASS=4
-}
-#else
-enum dfs_Target_PriorityClass { __donnot_use_enum_dfs_Target_PriorityClass=0x7FFFFFFF}
-#define DFS_INVALID_PRIORITY_CLASS ( -1 )
-#define DFS_SITE_COST_NORMAL_PRIORITY_CLASS ( 0 )
-#define DFS_GLOBAL_HIGH_PRIORITY_CLASS ( 1 )
-#define DFS_SITE_COST_HIGH_PRIORITY_CLASS ( 2 )
-#define DFS_SITE_COST_LOW_PRIORITY_CLASS ( 3 )
-#define DFS_GLOBAL_LOW_PRIORITY_CLASS ( 4 )
-#endif
-;
-
-struct dfs_Target_Priority {
- enum dfs_Target_PriorityClass target_priority_class;
- uint16_t target_priority_rank;
- uint16_t reserved;
-};
-
-struct dfs_StorageInfo2 {
- struct dfs_StorageInfo info;
- struct dfs_Target_Priority target_priority;
-};
-
-struct dfs_Info6 {
- const char *entry_path;/* [unique,charset(UTF16)] */
- const char *comment;/* [unique,charset(UTF16)] */
- uint32_t state;
- uint32_t timeout;
- struct GUID guid;
- uint32_t flags;
- uint32_t pktsize;
- uint16_t num_stores;
- struct dfs_StorageInfo2 *stores;/* [unique,size_is(num_stores)] */
-};
-
-struct dfs_Info7 {
- struct GUID generation_guid;
-};
-
-struct dfs_Info100 {
- const char *comment;/* [unique,charset(UTF16)] */
-};
-
-struct dfs_Info101 {
- uint32_t state;
-};
-
-struct dfs_Info102 {
- uint32_t timeout;
-};
-
-struct dfs_Info103 {
- uint32_t flags;
-};
-
-struct dfs_Info104 {
- struct dfs_Target_Priority priority;
-};
-
-struct dfs_Info105 {
- const char *comment;/* [unique,charset(UTF16)] */
- uint32_t state;
- uint32_t timeout;
- uint32_t property_flag_mask;
- uint32_t property_flags;
-};
-
-struct dfs_Info106 {
- uint32_t state;
- struct dfs_Target_Priority priority;
-};
-
-struct dfs_Info200 {
- const char *dom_root;/* [unique,charset(UTF16)] */
-};
-
-#ifndef USE_UINT_ENUMS
-enum dfs_VolumeFlavor {
- DFS_VOLUME_FLAVOR_STANDALONE=0x100,
- DFS_VOLUME_FLAVOR_AD_BLOB=0x200
-}
-#else
-enum dfs_VolumeFlavor { __donnot_use_enum_dfs_VolumeFlavor=0x7FFFFFFF}
-#define DFS_VOLUME_FLAVOR_STANDALONE ( 0x100 )
-#define DFS_VOLUME_FLAVOR_AD_BLOB ( 0x200 )
-#endif
-;
-
-struct dfs_Info300 {
- enum dfs_VolumeFlavor flavor;
- const char *dom_root;/* [unique,charset(UTF16)] */
-};
-
-union dfs_Info {
- struct dfs_Info0 *info0;/* [unique,case(0)] */
- struct dfs_Info1 *info1;/* [unique,case] */
- struct dfs_Info2 *info2;/* [unique,case(2)] */
- struct dfs_Info3 *info3;/* [unique,case(3)] */
- struct dfs_Info4 *info4;/* [unique,case(4)] */
- struct dfs_Info5 *info5;/* [unique,case(5)] */
- struct dfs_Info6 *info6;/* [unique,case(6)] */
- struct dfs_Info7 *info7;/* [unique,case(7)] */
- struct dfs_Info100 *info100;/* [unique,case(100)] */
- struct dfs_Info101 *info101;/* [unique,case(101)] */
- struct dfs_Info102 *info102;/* [unique,case(102)] */
- struct dfs_Info103 *info103;/* [unique,case(103)] */
- struct dfs_Info104 *info104;/* [unique,case(104)] */
- struct dfs_Info105 *info105;/* [unique,case(105)] */
- struct dfs_Info106 *info106;/* [unique,case(106)] */
-};
-
-struct dfs_EnumArray1 {
- uint32_t count;
- struct dfs_Info1 *s;/* [unique,size_is(count)] */
-};
-
-struct dfs_EnumArray2 {
- uint32_t count;
- struct dfs_Info2 *s;/* [unique,size_is(count)] */
-};
-
-struct dfs_EnumArray3 {
- uint32_t count;
- struct dfs_Info3 *s;/* [unique,size_is(count)] */
-};
-
-struct dfs_EnumArray4 {
- uint32_t count;
- struct dfs_Info4 *s;/* [unique,size_is(count)] */
-};
-
-struct dfs_EnumArray200 {
- uint32_t count;
- struct dfs_Info200 *s;/* [unique,size_is(count)] */
-};
-
-struct dfs_EnumArray300 {
- uint32_t count;
- struct dfs_Info300 *s;/* [unique,size_is(count)] */
-};
-
-union dfs_EnumInfo {
- struct dfs_EnumArray1 *info1;/* [unique,case] */
- struct dfs_EnumArray2 *info2;/* [unique,case(2)] */
- struct dfs_EnumArray3 *info3;/* [unique,case(3)] */
- struct dfs_EnumArray4 *info4;/* [unique,case(4)] */
- struct dfs_EnumArray200 *info200;/* [unique,case(200)] */
- struct dfs_EnumArray300 *info300;/* [unique,case(300)] */
-};
-
-struct dfs_EnumStruct {
- uint32_t level;
- union dfs_EnumInfo e;/* [switch_is(level)] */
-};
-
-struct dfs_UnknownStruct {
- uint32_t unknown1;
- const char *unknown2;/* [unique,charset(UTF16)] */
-};
-
-
-struct dfs_GetManagerVersion {
- struct {
- enum dfs_ManagerVersion *version;/* [ref] */
- } out;
-
-};
-
-
-struct dfs_Add {
- struct {
- const char *path;/* [ref,charset(UTF16)] */
- const char *server;/* [ref,charset(UTF16)] */
- const char *share;/* [unique,charset(UTF16)] */
- const char *comment;/* [unique,charset(UTF16)] */
- uint32_t flags;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_Remove {
- struct {
- const char *dfs_entry_path;/* [ref,charset(UTF16)] */
- const char *servername;/* [unique,charset(UTF16)] */
- const char *sharename;/* [unique,charset(UTF16)] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_SetInfo {
- struct {
- const char *dfs_entry_path;/* [charset(UTF16)] */
- const char *servername;/* [unique,charset(UTF16)] */
- const char *sharename;/* [unique,charset(UTF16)] */
- uint32_t level;
- union dfs_Info *info;/* [ref,switch_is(level)] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_GetInfo {
- struct {
- const char *dfs_entry_path;/* [charset(UTF16)] */
- const char *servername;/* [unique,charset(UTF16)] */
- const char *sharename;/* [unique,charset(UTF16)] */
- uint32_t level;
- } in;
-
- struct {
- union dfs_Info *info;/* [ref,switch_is(level)] */
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_Enum {
- struct {
- uint32_t level;
- uint32_t bufsize;
- struct dfs_EnumStruct *info;/* [unique] */
- uint32_t *total;/* [unique] */
- } in;
-
- struct {
- struct dfs_EnumStruct *info;/* [unique] */
- uint32_t *total;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_Rename {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_Move {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_ManagerGetConfigInfo {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_ManagerSendSiteInfo {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_AddFtRoot {
- struct {
- const char *servername;/* [charset(UTF16)] */
- const char *dns_servername;/* [charset(UTF16)] */
- const char *dfsname;/* [charset(UTF16)] */
- const char *rootshare;/* [charset(UTF16)] */
- const char *comment;/* [charset(UTF16)] */
- const char *dfs_config_dn;/* [charset(UTF16)] */
- uint8_t unknown1;
- uint32_t flags;
- struct dfs_UnknownStruct **unknown2;/* [unique] */
- } in;
-
- struct {
- struct dfs_UnknownStruct **unknown2;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_RemoveFtRoot {
- struct {
- const char *servername;/* [charset(UTF16)] */
- const char *dns_servername;/* [charset(UTF16)] */
- const char *dfsname;/* [charset(UTF16)] */
- const char *rootshare;/* [charset(UTF16)] */
- uint32_t flags;
- struct dfs_UnknownStruct **unknown;/* [unique] */
- } in;
-
- struct {
- struct dfs_UnknownStruct **unknown;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_AddStdRoot {
- struct {
- const char *servername;/* [charset(UTF16)] */
- const char *rootshare;/* [charset(UTF16)] */
- const char *comment;/* [charset(UTF16)] */
- uint32_t flags;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_RemoveStdRoot {
- struct {
- const char *servername;/* [charset(UTF16)] */
- const char *rootshare;/* [charset(UTF16)] */
- uint32_t flags;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_ManagerInitialize {
- struct {
- const char *servername;/* [ref,charset(UTF16)] */
- uint32_t flags;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_AddStdRootForced {
- struct {
- const char *servername;/* [charset(UTF16)] */
- const char *rootshare;/* [charset(UTF16)] */
- const char *comment;/* [charset(UTF16)] */
- const char *store;/* [charset(UTF16)] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_GetDcAddress {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_SetDcAddress {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_FlushFtTable {
- struct {
- const char *servername;/* [charset(UTF16)] */
- const char *rootshare;/* [charset(UTF16)] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_Add2 {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_Remove2 {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_EnumEx {
- struct {
- const char *dfs_name;/* [charset(UTF16)] */
- uint32_t level;
- uint32_t bufsize;
- struct dfs_EnumStruct *info;/* [unique] */
- uint32_t *total;/* [unique] */
- } in;
-
- struct {
- struct dfs_EnumStruct *info;/* [unique] */
- uint32_t *total;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct dfs_SetInfo2 {
- struct {
- WERROR result;
- } out;
-
-};
-
-#endif /* _HEADER_netdfs */
diff --git a/source/librpc/gen_ndr/echo.h b/source/librpc/gen_ndr/echo.h
deleted file mode 100644
index 4b03578cdc1..00000000000
--- a/source/librpc/gen_ndr/echo.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#ifndef _HEADER_rpcecho
-#define _HEADER_rpcecho
-
-struct echo_info1 {
- uint8_t v;
-};
-
-struct echo_info2 {
- uint16_t v;
-};
-
-struct echo_info3 {
- uint32_t v;
-};
-
-struct echo_info4 {
- uint64_t v;
-};
-
-struct echo_info5 {
- uint8_t v1;
- uint64_t v2;
-};
-
-struct echo_info6 {
- uint8_t v1;
- struct echo_info1 info1;
-};
-
-struct echo_info7 {
- uint8_t v1;
- struct echo_info4 info4;
-};
-
-union echo_Info {
- struct echo_info1 info1;/* [case] */
- struct echo_info2 info2;/* [case(2)] */
- struct echo_info3 info3;/* [case(3)] */
- struct echo_info4 info4;/* [case(4)] */
- struct echo_info5 info5;/* [case(5)] */
- struct echo_info6 info6;/* [case(6)] */
- struct echo_info7 info7;/* [case(7)] */
-}/* [switch_type(uint16)] */;
-
-#ifndef USE_UINT_ENUMS
-enum echo_Enum1 {
- ECHO_ENUM1=1,
- ECHO_ENUM2=2
-}
-#else
-enum echo_Enum1 { __donnot_use_enum_echo_Enum1=0x7FFFFFFF}
-#define ECHO_ENUM1 ( 1 )
-#define ECHO_ENUM2 ( 2 )
-#endif
-;
-
-#ifndef USE_UINT_ENUMS
-enum echo_Enum1_32 {
- ECHO_ENUM1_32=1,
- ECHO_ENUM2_32=2
-}
-#else
-enum echo_Enum1_32 { __donnot_use_enum_echo_Enum1_32=0x7FFFFFFF}
-#define ECHO_ENUM1_32 ( 1 )
-#define ECHO_ENUM2_32 ( 2 )
-#endif
-;
-
-struct echo_Enum2 {
- enum echo_Enum1 e1;
- enum echo_Enum1_32 e2;
-};
-
-union echo_Enum3 {
- enum echo_Enum1 e1;/* [case(ECHO_ENUM1)] */
- struct echo_Enum2 e2;/* [case(ECHO_ENUM2)] */
-}/* [switch_type(uint16)] */;
-
-struct echo_Surrounding {
- uint32_t x;
- uint16_t *surrounding;/* [size_is(x)] */
-};
-
-
-struct echo_AddOne {
- struct {
- uint32_t in_data;
- } in;
-
- struct {
- uint32_t *out_data;/* [ref] */
- } out;
-
-};
-
-
-struct echo_EchoData {
- struct {
- uint32_t len;
- uint8_t *in_data;/* [size_is(len)] */
- } in;
-
- struct {
- uint8_t *out_data;/* [size_is(len)] */
- } out;
-
-};
-
-
-struct echo_SinkData {
- struct {
- uint32_t len;
- uint8_t *data;/* [size_is(len)] */
- } in;
-
-};
-
-
-struct echo_SourceData {
- struct {
- uint32_t len;
- } in;
-
- struct {
- uint8_t *data;/* [size_is(len)] */
- } out;
-
-};
-
-
-struct echo_TestCall {
- struct {
- const char *s1;/* [ref,charset(UTF16)] */
- } in;
-
- struct {
- const char **s2;/* [ref,charset(UTF16)] */
- } out;
-
-};
-
-
-struct echo_TestCall2 {
- struct {
- uint16_t level;
- } in;
-
- struct {
- union echo_Info *info;/* [ref,switch_is(level)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct echo_TestSleep {
- struct {
- uint32_t seconds;
- } in;
-
- struct {
- uint32_t result;
- } out;
-
-};
-
-
-struct echo_TestEnum {
- struct {
- enum echo_Enum1 *foo1;/* [ref] */
- struct echo_Enum2 *foo2;/* [ref] */
- union echo_Enum3 *foo3;/* [ref,switch_is(*foo1)] */
- } in;
-
- struct {
- enum echo_Enum1 *foo1;/* [ref] */
- struct echo_Enum2 *foo2;/* [ref] */
- union echo_Enum3 *foo3;/* [ref,switch_is(*foo1)] */
- } out;
-
-};
-
-
-struct echo_TestSurrounding {
- struct {
- struct echo_Surrounding *data;/* [ref] */
- } in;
-
- struct {
- struct echo_Surrounding *data;/* [ref] */
- } out;
-
-};
-
-
-struct echo_TestDoublePointer {
- struct {
- uint16_t ***data;/* [ref] */
- } in;
-
- struct {
- uint16_t result;
- } out;
-
-};
-
-#endif /* _HEADER_rpcecho */
diff --git a/source/librpc/gen_ndr/epmapper.h b/source/librpc/gen_ndr/epmapper.h
deleted file mode 100644
index 0fb5ed048e5..00000000000
--- a/source/librpc/gen_ndr/epmapper.h
+++ /dev/null
@@ -1,353 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#ifndef _HEADER_epmapper
-#define _HEADER_epmapper
-
-#define EPMAPPER_STATUS_NO_MORE_ENTRIES ( 0x16c9a0d6 )
-#define EPMAPPER_STATUS_NO_MEMORY ( 0x16C9A012 )
-#define EPMAPPER_STATUS_OK ( 0 )
-#ifndef USE_UINT_ENUMS
-enum epm_protocol {
- EPM_PROTOCOL_DNET_NSP=0x04,
- EPM_PROTOCOL_OSI_TP4=0x05,
- EPM_PROTOCOL_OSI_CLNS=0x06,
- EPM_PROTOCOL_TCP=0x07,
- EPM_PROTOCOL_UDP=0x08,
- EPM_PROTOCOL_IP=0x09,
- EPM_PROTOCOL_NCADG=0x0a,
- EPM_PROTOCOL_NCACN=0x0b,
- EPM_PROTOCOL_NCALRPC=0x0c,
- EPM_PROTOCOL_UUID=0x0d,
- EPM_PROTOCOL_IPX=0x0e,
- EPM_PROTOCOL_SMB=0x0f,
- EPM_PROTOCOL_PIPE=0x10,
- EPM_PROTOCOL_NETBIOS=0x11,
- EPM_PROTOCOL_NETBEUI=0x12,
- EPM_PROTOCOL_SPX=0x13,
- EPM_PROTOCOL_NB_IPX=0x14,
- EPM_PROTOCOL_DSP=0x16,
- EPM_PROTOCOL_DDP=0x17,
- EPM_PROTOCOL_APPLETALK=0x18,
- EPM_PROTOCOL_VINES_SPP=0x1a,
- EPM_PROTOCOL_VINES_IPC=0x1b,
- EPM_PROTOCOL_STREETTALK=0x1c,
- EPM_PROTOCOL_HTTP=0x1f,
- EPM_PROTOCOL_UNIX_DS=0x20,
- EPM_PROTOCOL_NULL=0x21
-}
-#else
-enum epm_protocol { __donnot_use_enum_epm_protocol=0x7FFFFFFF}
-#define EPM_PROTOCOL_DNET_NSP ( 0x04 )
-#define EPM_PROTOCOL_OSI_TP4 ( 0x05 )
-#define EPM_PROTOCOL_OSI_CLNS ( 0x06 )
-#define EPM_PROTOCOL_TCP ( 0x07 )
-#define EPM_PROTOCOL_UDP ( 0x08 )
-#define EPM_PROTOCOL_IP ( 0x09 )
-#define EPM_PROTOCOL_NCADG ( 0x0a )
-#define EPM_PROTOCOL_NCACN ( 0x0b )
-#define EPM_PROTOCOL_NCALRPC ( 0x0c )
-#define EPM_PROTOCOL_UUID ( 0x0d )
-#define EPM_PROTOCOL_IPX ( 0x0e )
-#define EPM_PROTOCOL_SMB ( 0x0f )
-#define EPM_PROTOCOL_PIPE ( 0x10 )
-#define EPM_PROTOCOL_NETBIOS ( 0x11 )
-#define EPM_PROTOCOL_NETBEUI ( 0x12 )
-#define EPM_PROTOCOL_SPX ( 0x13 )
-#define EPM_PROTOCOL_NB_IPX ( 0x14 )
-#define EPM_PROTOCOL_DSP ( 0x16 )
-#define EPM_PROTOCOL_DDP ( 0x17 )
-#define EPM_PROTOCOL_APPLETALK ( 0x18 )
-#define EPM_PROTOCOL_VINES_SPP ( 0x1a )
-#define EPM_PROTOCOL_VINES_IPC ( 0x1b )
-#define EPM_PROTOCOL_STREETTALK ( 0x1c )
-#define EPM_PROTOCOL_HTTP ( 0x1f )
-#define EPM_PROTOCOL_UNIX_DS ( 0x20 )
-#define EPM_PROTOCOL_NULL ( 0x21 )
-#endif
-;
-
-struct epm_rhs_dnet_nsp {
- char _empty_;
-};
-
-struct epm_rhs_osi_tp4 {
- char _empty_;
-};
-
-struct epm_rhs_osi_clns {
- char _empty_;
-};
-
-struct epm_rhs_udp {
- uint16_t port;
-};
-
-struct epm_rhs_tcp {
- uint16_t port;
-};
-
-struct epm_rhs_ip {
- const char * ipaddr;
-};
-
-struct epm_rhs_ncadg {
- uint16_t minor_version;
-};
-
-struct epm_rhs_ncacn {
- uint16_t minor_version;
-};
-
-struct epm_rhs_uuid {
- DATA_BLOB unknown;/* [flag(LIBNDR_FLAG_REMAINING)] */
-};
-
-struct epm_rhs_ipx {
- char _empty_;
-};
-
-struct epm_rhs_smb {
- const char * unc;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-};
-
-struct epm_rhs_pipe {
- const char * path;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-};
-
-struct epm_rhs_netbios {
- const char * name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-};
-
-struct epm_rhs_netbeui {
- char _empty_;
-};
-
-struct epm_rhs_spx {
- char _empty_;
-};
-
-struct epm_rhs_nb_ipx {
- char _empty_;
-};
-
-struct epm_rhs_http {
- uint16_t port;
-};
-
-struct epm_rhs_unix_ds {
- const char * path;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-};
-
-struct epm_rhs_null {
- char _empty_;
-};
-
-struct epm_rhs_ncalrpc {
- uint16_t minor_version;
-};
-
-struct epm_rhs_appletalk {
- char _empty_;
-};
-
-struct epm_rhs_atalk_stream {
- char _empty_;
-};
-
-struct epm_rhs_atalk_datagram {
- char _empty_;
-};
-
-struct epm_rhs_vines_spp {
- uint16_t port;
-};
-
-struct epm_rhs_vines_ipc {
- uint16_t port;
-};
-
-struct epm_rhs_streettalk {
- const char * streettalk;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-};
-
-union epm_rhs {
- struct epm_rhs_dnet_nsp dnet_nsp;/* [case(EPM_PROTOCOL_DNET_NSP)] */
- struct epm_rhs_osi_tp4 osi_tp4;/* [case(EPM_PROTOCOL_OSI_TP4)] */
- struct epm_rhs_osi_clns osi_clns;/* [case(EPM_PROTOCOL_OSI_CLNS)] */
- struct epm_rhs_tcp tcp;/* [case(EPM_PROTOCOL_TCP)] */
- struct epm_rhs_udp udp;/* [case(EPM_PROTOCOL_UDP)] */
- struct epm_rhs_ip ip;/* [case(EPM_PROTOCOL_IP)] */
- struct epm_rhs_ncadg ncadg;/* [case(EPM_PROTOCOL_NCADG)] */
- struct epm_rhs_ncacn ncacn;/* [case(EPM_PROTOCOL_NCACN)] */
- struct epm_rhs_ncalrpc ncalrpc;/* [case(EPM_PROTOCOL_NCALRPC)] */
- struct epm_rhs_uuid uuid;/* [case(EPM_PROTOCOL_UUID)] */
- struct epm_rhs_ipx ipx;/* [case(EPM_PROTOCOL_IPX)] */
- struct epm_rhs_smb smb;/* [case(EPM_PROTOCOL_SMB)] */
- struct epm_rhs_pipe pipe;/* [case(EPM_PROTOCOL_PIPE)] */
- struct epm_rhs_netbios netbios;/* [case(EPM_PROTOCOL_NETBIOS)] */
- struct epm_rhs_netbeui netbeui;/* [case(EPM_PROTOCOL_NETBEUI)] */
- struct epm_rhs_spx spx;/* [case(EPM_PROTOCOL_SPX)] */
- struct epm_rhs_nb_ipx nb_ipx;/* [case(EPM_PROTOCOL_NB_IPX)] */
- struct epm_rhs_atalk_stream atalk_stream;/* [case(EPM_PROTOCOL_DSP)] */
- struct epm_rhs_atalk_datagram atalk_datagram;/* [case(EPM_PROTOCOL_DDP)] */
- struct epm_rhs_appletalk appletalk;/* [case(EPM_PROTOCOL_APPLETALK)] */
- struct epm_rhs_vines_spp vines_spp;/* [case(EPM_PROTOCOL_VINES_SPP)] */
- struct epm_rhs_vines_ipc vines_ipc;/* [case(EPM_PROTOCOL_VINES_IPC)] */
- struct epm_rhs_streettalk streettalk;/* [case(EPM_PROTOCOL_STREETTALK)] */
- struct epm_rhs_http http;/* [case(EPM_PROTOCOL_HTTP)] */
- struct epm_rhs_unix_ds unix_ds;/* [case(EPM_PROTOCOL_UNIX_DS)] */
- struct epm_rhs_null null;/* [case(EPM_PROTOCOL_NULL)] */
- DATA_BLOB unknown;/* [default,flag(LIBNDR_FLAG_REMAINING)] */
-}/* [nodiscriminant,flag(LIBNDR_FLAG_BIGENDIAN)] */;
-
-struct epm_lhs {
- enum epm_protocol protocol;
- DATA_BLOB lhs_data;/* [flag(LIBNDR_FLAG_REMAINING)] */
-};
-
-struct epm_floor {
- struct epm_lhs lhs;/* [subcontext(2)] */
- union epm_rhs rhs;/* [subcontext(2),switch_is(lhs.protocol)] */
-};
-
-struct epm_tower {
- uint16_t num_floors;
- struct epm_floor *floors;
-}/* [gensize,flag(LIBNDR_FLAG_NOALIGN|LIBNDR_FLAG_LITTLE_ENDIAN)] */;
-
-struct epm_twr_t {
- uint32_t tower_length;/* [value(ndr_size_epm_tower(&tower,ndr->flags))] */
- struct epm_tower tower;/* [subcontext(4)] */
-};
-
-struct epm_entry_t {
- struct GUID object;
- struct epm_twr_t *tower;/* [ptr] */
- const char * annotation;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_LEN4)] */
-};
-
-struct rpc_if_id_t {
- struct GUID uuid;
- uint16_t vers_major;
- uint16_t vers_minor;
-};
-
-struct epm_twr_p_t {
- struct epm_twr_t *twr;/* [ptr] */
-};
-
-
-struct epm_Insert {
- struct {
- uint32_t num_ents;
- struct epm_entry_t *entries;/* [size_is(num_ents)] */
- uint32_t replace;
- } in;
-
- struct {
- uint32_t result;
- } out;
-
-};
-
-
-struct epm_Delete {
- struct {
- uint32_t num_ents;
- struct epm_entry_t *entries;/* [size_is(num_ents)] */
- } in;
-
- struct {
- uint32_t result;
- } out;
-
-};
-
-
-struct epm_Lookup {
- struct {
- uint32_t inquiry_type;
- struct GUID *object;/* [ptr] */
- struct rpc_if_id_t *interface_id;/* [ptr] */
- uint32_t vers_option;
- uint32_t max_ents;
- struct policy_handle *entry_handle;/* [ref] */
- } in;
-
- struct {
- uint32_t *num_ents;/* [ref] */
- struct epm_entry_t *entries;/* [length_is(*num_ents),size_is(max_ents)] */
- struct policy_handle *entry_handle;/* [ref] */
- uint32_t result;
- } out;
-
-};
-
-
-struct epm_Map {
- struct {
- struct GUID *object;/* [ptr] */
- struct epm_twr_t *map_tower;/* [ptr] */
- uint32_t max_towers;
- struct policy_handle *entry_handle;/* [ref] */
- } in;
-
- struct {
- uint32_t *num_towers;/* [ref] */
- struct epm_twr_p_t *towers;/* [length_is(*num_towers),size_is(max_towers)] */
- struct policy_handle *entry_handle;/* [ref] */
- uint32_t result;
- } out;
-
-};
-
-
-struct epm_LookupHandleFree {
- struct {
- struct policy_handle *entry_handle;/* [ref] */
- } in;
-
- struct {
- struct policy_handle *entry_handle;/* [ref] */
- uint32_t result;
- } out;
-
-};
-
-
-struct epm_InqObject {
- struct {
- struct GUID *epm_object;/* [ref] */
- } in;
-
- struct {
- uint32_t result;
- } out;
-
-};
-
-
-struct epm_MgmtDelete {
- struct {
- uint32_t object_speced;
- struct GUID *object;/* [ptr] */
- struct epm_twr_t *tower;/* [ptr] */
- } in;
-
- struct {
- uint32_t result;
- } out;
-
-};
-
-
-struct epm_MapAuth {
- struct {
- uint32_t result;
- } out;
-
-};
-
-#endif /* _HEADER_epmapper */
diff --git a/source/librpc/gen_ndr/eventlog.h b/source/librpc/gen_ndr/eventlog.h
deleted file mode 100644
index e13fb50a5d6..00000000000
--- a/source/librpc/gen_ndr/eventlog.h
+++ /dev/null
@@ -1,286 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#include "librpc/gen_ndr/lsa.h"
-#include "librpc/gen_ndr/security.h"
-#ifndef _HEADER_eventlog
-#define _HEADER_eventlog
-
-/* bitmap eventlogReadFlags */
-#define EVENTLOG_SEQUENTIAL_READ ( 0x0001 )
-#define EVENTLOG_SEEK_READ ( 0x0002 )
-#define EVENTLOG_FORWARDS_READ ( 0x0004 )
-#define EVENTLOG_BACKWARDS_READ ( 0x0008 )
-
-;
-
-/* bitmap eventlogEventTypes */
-#define EVENTLOG_SUCCESS ( 0x0000 )
-#define EVENTLOG_ERROR_TYPE ( 0x0001 )
-#define EVENTLOG_WARNING_TYPE ( 0x0002 )
-#define EVENTLOG_INFORMATION_TYPE ( 0x0004 )
-#define EVENTLOG_AUDIT_SUCCESS ( 0x0008 )
-#define EVENTLOG_AUDIT_FAILURE ( 0x0010 )
-
-;
-
-struct eventlog_OpenUnknown0 {
- uint16_t unknown0;
- uint16_t unknown1;
-};
-
-struct eventlog_Record {
- uint32_t size;
- uint32_t reserved;
- uint32_t record_number;
- uint32_t time_generated;
- uint32_t time_written;
- uint32_t event_id;
- uint16_t event_type;
- uint16_t num_of_strings;
- uint16_t event_category;
- uint16_t reserved_flags;
- uint32_t closing_record_number;
- uint32_t stringoffset;
- uint32_t sid_length;
- uint32_t sid_offset;
- uint32_t data_length;
- uint32_t data_offset;
- const char * source_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
- const char * computer_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
- const char * *strings;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
- const char * raw_data;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-}/* [public] */;
-
-
-struct eventlog_ClearEventLogW {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String *unknown;/* [unique] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_BackupEventLogW {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_CloseEventLog {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_DeregisterEventSource {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_GetNumRecords {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- uint32_t *number;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_GetOldestRecord {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_ChangeNotify {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_OpenEventLogW {
- struct {
- struct eventlog_OpenUnknown0 *unknown0;/* [unique] */
- struct lsa_String logname;
- struct lsa_String servername;
- uint32_t unknown2;
- uint32_t unknown3;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_RegisterEventSourceW {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_OpenBackupEventLogW {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_ReadEventLogW {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t flags;
- uint32_t offset;
- uint32_t number_of_bytes;
- } in;
-
- struct {
- uint8_t *data;/* [ref,size_is(number_of_bytes)] */
- uint32_t *sent_size;/* [ref] */
- uint32_t *real_size;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_ReportEventW {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_ClearEventLogA {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_BackupEventLogA {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_OpenEventLogA {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_RegisterEventSourceA {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_OpenBackupEventLogA {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_ReadEventLogA {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_ReportEventA {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_RegisterClusterSvc {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_DeregisterClusterSvc {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_WriteClusterEvents {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_GetLogIntormation {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct eventlog_FlushEventLog {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-#endif /* _HEADER_eventlog */
diff --git a/source/librpc/gen_ndr/initshutdown.h b/source/librpc/gen_ndr/initshutdown.h
deleted file mode 100644
index 665d435919b..00000000000
--- a/source/librpc/gen_ndr/initshutdown.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#ifndef _HEADER_initshutdown
-#define _HEADER_initshutdown
-
-struct initshutdown_String_sub {
- uint32_t name_size;/* [value(strlen_m_term(name))] */
- const char * name;/* [flag(LIBNDR_FLAG_STR_LEN4|LIBNDR_FLAG_STR_NOTERM)] */
-};
-
-struct initshutdown_String {
- uint16_t name_len;/* [value(strlen_m(r->name->name)*2)] */
- uint16_t name_size;/* [value(strlen_m_term(r->name->name)*2)] */
- struct initshutdown_String_sub *name;/* [unique] */
-}/* [public] */;
-
-
-struct initshutdown_Init {
- struct {
- uint16_t *hostname;/* [unique] */
- struct initshutdown_String *message;/* [unique] */
- uint32_t timeout;
- uint8_t force_apps;
- uint8_t reboot;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct initshutdown_Abort {
- struct {
- uint16_t *server;/* [unique] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct initshutdown_InitEx {
- struct {
- uint16_t *hostname;/* [unique] */
- struct initshutdown_String *message;/* [unique] */
- uint32_t timeout;
- uint8_t force_apps;
- uint8_t reboot;
- uint32_t reason;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-#endif /* _HEADER_initshutdown */
diff --git a/source/librpc/gen_ndr/lsa.h b/source/librpc/gen_ndr/lsa.h
deleted file mode 100644
index e356b9fc78d..00000000000
--- a/source/librpc/gen_ndr/lsa.h
+++ /dev/null
@@ -1,1465 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#include "librpc/gen_ndr/security.h"
-#ifndef _HEADER_lsarpc
-#define _HEADER_lsarpc
-
-#define LSA_ENUM_TRUST_DOMAIN_MULTIPLIER ( 60 )
-#define LSA_REF_DOMAIN_LIST_MULTIPLIER ( 32 )
-#define LSA_ENUM_TRUST_DOMAIN_EX_MULTIPLIER ( 82 )
-struct lsa_String {
- uint16_t length;/* [value(2*strlen_m(string))] */
- uint16_t size;/* [value(2*strlen_m(string))] */
- const char *string;/* [unique,charset(UTF16),length_is(length/2),size_is(size/2)] */
-}/* [public,noejs] */;
-
-struct lsa_StringLarge {
- uint16_t length;/* [value(2*strlen_m(string))] */
- uint16_t size;/* [value(2*(strlen_m(string)+1))] */
- const char *string;/* [unique,charset(UTF16),length_is(length/2),size_is(size/2)] */
-}/* [public] */;
-
-struct lsa_Strings {
- uint32_t count;
- struct lsa_String *names;/* [unique,size_is(count)] */
-}/* [public] */;
-
-struct lsa_AsciiString {
- uint16_t length;/* [value(strlen_m(string))] */
- uint16_t size;/* [value(strlen_m(string))] */
- const char * string;/* [unique,flag(LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_LEN4)] */
-}/* [public] */;
-
-struct lsa_LUID {
- uint32_t low;
- uint32_t high;
-};
-
-struct lsa_PrivEntry {
- struct lsa_StringLarge name;
- struct lsa_LUID luid;
-};
-
-struct lsa_PrivArray {
- uint32_t count;
- struct lsa_PrivEntry *privs;/* [unique,size_is(count)] */
-};
-
-struct lsa_QosInfo {
- uint32_t len;
- uint16_t impersonation_level;
- uint8_t context_mode;
- uint8_t effective_only;
-};
-
-struct lsa_ObjectAttribute {
- uint32_t len;
- uint8_t *root_dir;/* [unique] */
- const char *object_name;/* [unique,charset(UTF16)] */
- uint32_t attributes;
- struct security_descriptor *sec_desc;/* [unique] */
- struct lsa_QosInfo *sec_qos;/* [unique] */
-};
-
-struct lsa_AuditLogInfo {
- uint32_t percent_full;
- uint32_t log_size;
- NTTIME retention_time;
- uint8_t shutdown_in_progress;
- NTTIME time_to_shutdown;
- uint32_t next_audit_record;
- uint32_t unknown;
-};
-
-struct lsa_AuditEventsInfo {
- uint32_t auditing_mode;
- uint32_t *settings;/* [unique,size_is(count)] */
- uint32_t count;
-};
-
-struct lsa_DomainInfo {
- struct lsa_StringLarge name;
- struct dom_sid2 *sid;/* [unique] */
-};
-
-struct lsa_PDAccountInfo {
- struct lsa_String name;
-};
-
-struct lsa_ServerRole {
- uint16_t unknown;
- uint16_t role;
-};
-
-struct lsa_ReplicaSourceInfo {
- struct lsa_String source;
- struct lsa_String account;
-};
-
-struct lsa_DefaultQuotaInfo {
- uint32_t paged_pool;
- uint32_t non_paged_pool;
- uint32_t min_wss;
- uint32_t max_wss;
- uint32_t pagefile;
- uint64_t unknown;
-};
-
-struct lsa_ModificationInfo {
- uint64_t modified_id;
- NTTIME db_create_time;
-};
-
-struct lsa_AuditFullSetInfo {
- uint8_t shutdown_on_full;
-};
-
-struct lsa_AuditFullQueryInfo {
- uint16_t unknown;
- uint8_t shutdown_on_full;
- uint8_t log_is_full;
-};
-
-struct lsa_DnsDomainInfo {
- struct lsa_StringLarge name;
- struct lsa_StringLarge dns_domain;
- struct lsa_StringLarge dns_forest;
- struct GUID domain_guid;
- struct dom_sid2 *sid;/* [unique] */
-};
-
-#ifndef USE_UINT_ENUMS
-enum lsaPolicyInfo {
- LSA_POLICY_INFO_AUDIT_LOG=1,
- LSA_POLICY_INFO_AUDIT_EVENTS=2,
- LSA_POLICY_INFO_DOMAIN=3,
- LSA_POLICY_INFO_PD=4,
- LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
- LSA_POLICY_INFO_ROLE=6,
- LSA_POLICY_INFO_REPLICA=7,
- LSA_POLICY_INFO_QUOTA=8,
- LSA_POLICY_INFO_DB=9,
- LSA_POLICY_INFO_AUDIT_FULL_SET=10,
- LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
- LSA_POLICY_INFO_DNS=12
-}
-#else
-enum lsaPolicyInfo { __donnot_use_enum_lsaPolicyInfo=0x7FFFFFFF}
-#define LSA_POLICY_INFO_AUDIT_LOG ( 1 )
-#define LSA_POLICY_INFO_AUDIT_EVENTS ( 2 )
-#define LSA_POLICY_INFO_DOMAIN ( 3 )
-#define LSA_POLICY_INFO_PD ( 4 )
-#define LSA_POLICY_INFO_ACCOUNT_DOMAIN ( 5 )
-#define LSA_POLICY_INFO_ROLE ( 6 )
-#define LSA_POLICY_INFO_REPLICA ( 7 )
-#define LSA_POLICY_INFO_QUOTA ( 8 )
-#define LSA_POLICY_INFO_DB ( 9 )
-#define LSA_POLICY_INFO_AUDIT_FULL_SET ( 10 )
-#define LSA_POLICY_INFO_AUDIT_FULL_QUERY ( 11 )
-#define LSA_POLICY_INFO_DNS ( 12 )
-#endif
-;
-
-union lsa_PolicyInformation {
- struct lsa_AuditLogInfo audit_log;/* [case(LSA_POLICY_INFO_AUDIT_LOG)] */
- struct lsa_AuditEventsInfo audit_events;/* [case(LSA_POLICY_INFO_AUDIT_EVENTS)] */
- struct lsa_DomainInfo domain;/* [case(LSA_POLICY_INFO_DOMAIN)] */
- struct lsa_PDAccountInfo pd;/* [case(LSA_POLICY_INFO_PD)] */
- struct lsa_DomainInfo account_domain;/* [case(LSA_POLICY_INFO_ACCOUNT_DOMAIN)] */
- struct lsa_ServerRole role;/* [case(LSA_POLICY_INFO_ROLE)] */
- struct lsa_ReplicaSourceInfo replica;/* [case(LSA_POLICY_INFO_REPLICA)] */
- struct lsa_DefaultQuotaInfo quota;/* [case(LSA_POLICY_INFO_QUOTA)] */
- struct lsa_ModificationInfo db;/* [case(LSA_POLICY_INFO_DB)] */
- struct lsa_AuditFullSetInfo auditfullset;/* [case(LSA_POLICY_INFO_AUDIT_FULL_SET)] */
- struct lsa_AuditFullQueryInfo auditfullquery;/* [case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] */
- struct lsa_DnsDomainInfo dns;/* [case(LSA_POLICY_INFO_DNS)] */
-}/* [switch_type(uint16)] */;
-
-struct lsa_SidPtr {
- struct dom_sid2 *sid;/* [unique] */
-};
-
-struct lsa_SidArray {
- uint32_t num_sids;/* [range(0 1000)] */
- struct lsa_SidPtr *sids;/* [unique,size_is(num_sids)] */
-}/* [public] */;
-
-struct lsa_DomainList {
- uint32_t count;
- struct lsa_DomainInfo *domains;/* [unique,size_is(count)] */
-};
-
-#ifndef USE_UINT_ENUMS
-enum lsa_SidType {
- SID_NAME_USE_NONE=0,
- SID_NAME_USER=1,
- SID_NAME_DOM_GRP=2,
- SID_NAME_DOMAIN=3,
- SID_NAME_ALIAS=4,
- SID_NAME_WKN_GRP=5,
- SID_NAME_DELETED=6,
- SID_NAME_INVALID=7,
- SID_NAME_UNKNOWN=8,
- SID_NAME_COMPUTER=9
-}
-#else
-enum lsa_SidType { __donnot_use_enum_lsa_SidType=0x7FFFFFFF}
-#define SID_NAME_USE_NONE ( 0 )
-#define SID_NAME_USER ( 1 )
-#define SID_NAME_DOM_GRP ( 2 )
-#define SID_NAME_DOMAIN ( 3 )
-#define SID_NAME_ALIAS ( 4 )
-#define SID_NAME_WKN_GRP ( 5 )
-#define SID_NAME_DELETED ( 6 )
-#define SID_NAME_INVALID ( 7 )
-#define SID_NAME_UNKNOWN ( 8 )
-#define SID_NAME_COMPUTER ( 9 )
-#endif
-;
-
-struct lsa_TranslatedSid {
- enum lsa_SidType sid_type;
- uint32_t rid;
- uint32_t sid_index;
-};
-
-struct lsa_TransSidArray {
- uint32_t count;/* [range(0 1000)] */
- struct lsa_TranslatedSid *sids;/* [unique,size_is(count)] */
-};
-
-struct lsa_RefDomainList {
- uint32_t count;/* [range(0 1000)] */
- struct lsa_DomainInfo *domains;/* [unique,size_is(count)] */
- uint32_t max_size;
-};
-
-struct lsa_TranslatedName {
- enum lsa_SidType sid_type;
- struct lsa_String name;
- uint32_t sid_index;
-};
-
-struct lsa_TransNameArray {
- uint32_t count;/* [range(0 1000)] */
- struct lsa_TranslatedName *names;/* [unique,size_is(count)] */
-};
-
-struct lsa_LUIDAttribute {
- struct lsa_LUID luid;
- uint32_t attribute;
-};
-
-struct lsa_PrivilegeSet {
- uint32_t count;/* [range(0 1000)] */
- uint32_t unknown;
- struct lsa_LUIDAttribute *set;/* [size_is(count)] */
-};
-
-struct lsa_DATA_BUF {
- uint32_t length;
- uint32_t size;
- uint8_t *data;/* [unique,length_is(length),size_is(size)] */
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct lsa_DATA_BUF2 {
- uint32_t size;/* [range(0 65536)] */
- uint8_t *data;/* [unique,size_is(size)] */
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-#ifndef USE_UINT_ENUMS
-enum lsa_TrustDomInfoEnum {
- LSA_TRUSTED_DOMAIN_INFO_NAME=1,
- LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO=2,
- LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET=3,
- LSA_TRUSTED_DOMAIN_INFO_PASSWORD=4,
- LSA_TRUSTED_DOMAIN_INFO_BASIC=5,
- LSA_TRUSTED_DOMAIN_INFO_INFO_EX=6,
- LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO=7,
- LSA_TRUSTED_DOMAIN_INFO_FULL_INFO=8,
- LSA_TRUSTED_DOMAIN_INFO_11=11,
- LSA_TRUSTED_DOMAIN_INFO_INFO_ALL=12
-}
-#else
-enum lsa_TrustDomInfoEnum { __donnot_use_enum_lsa_TrustDomInfoEnum=0x7FFFFFFF}
-#define LSA_TRUSTED_DOMAIN_INFO_NAME ( 1 )
-#define LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO ( 2 )
-#define LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET ( 3 )
-#define LSA_TRUSTED_DOMAIN_INFO_PASSWORD ( 4 )
-#define LSA_TRUSTED_DOMAIN_INFO_BASIC ( 5 )
-#define LSA_TRUSTED_DOMAIN_INFO_INFO_EX ( 6 )
-#define LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO ( 7 )
-#define LSA_TRUSTED_DOMAIN_INFO_FULL_INFO ( 8 )
-#define LSA_TRUSTED_DOMAIN_INFO_11 ( 11 )
-#define LSA_TRUSTED_DOMAIN_INFO_INFO_ALL ( 12 )
-#endif
-;
-
-struct lsa_TrustDomainInfoName {
- struct lsa_StringLarge netbios_name;
-};
-
-struct lsa_TrustDomainInfoPosixOffset {
- uint32_t posix_offset;
-};
-
-struct lsa_TrustDomainInfoPassword {
- struct lsa_DATA_BUF *password;/* [unique] */
- struct lsa_DATA_BUF *old_password;/* [unique] */
-};
-
-struct lsa_TrustDomainInfoBasic {
- struct lsa_String netbios_name;
- struct dom_sid2 *sid;/* [unique] */
-};
-
-struct lsa_TrustDomainInfoInfoEx {
- struct lsa_StringLarge domain_name;
- struct lsa_StringLarge netbios_name;
- struct dom_sid2 *sid;/* [unique] */
- uint32_t trust_direction;
- uint32_t trust_type;
- uint32_t trust_attributes;
-};
-
-struct lsa_TrustDomainInfoBuffer {
- NTTIME last_update_time;
- uint32_t secret_type;
- struct lsa_DATA_BUF2 data;
-};
-
-struct lsa_TrustDomainInfoAuthInfo {
- uint32_t incoming_count;
- struct lsa_TrustDomainInfoBuffer *incoming_current_auth_info;/* [unique] */
- struct lsa_TrustDomainInfoBuffer *incoming_previous_auth_info;/* [unique] */
- uint32_t outgoing_count;
- struct lsa_TrustDomainInfoBuffer *outgoing_current_auth_info;/* [unique] */
- struct lsa_TrustDomainInfoBuffer *outgoing_previous_auth_info;/* [unique] */
-};
-
-struct lsa_TrustDomainInfoFullInfo {
- struct lsa_TrustDomainInfoInfoEx info_ex;
- struct lsa_TrustDomainInfoPosixOffset posix_offset;
- struct lsa_TrustDomainInfoAuthInfo auth_info;
-};
-
-struct lsa_TrustDomainInfo11 {
- struct lsa_TrustDomainInfoInfoEx info_ex;
- struct lsa_DATA_BUF2 data1;
-};
-
-struct lsa_TrustDomainInfoInfoAll {
- struct lsa_TrustDomainInfoInfoEx info_ex;
- struct lsa_DATA_BUF2 data1;
- struct lsa_TrustDomainInfoPosixOffset posix_offset;
- struct lsa_TrustDomainInfoAuthInfo auth_info;
-};
-
-union lsa_TrustedDomainInfo {
- struct lsa_TrustDomainInfoName name;/* [case(LSA_TRUSTED_DOMAIN_INFO_NAME)] */
- struct lsa_TrustDomainInfoPosixOffset posix_offset;/* [case(LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET)] */
- struct lsa_TrustDomainInfoPassword password;/* [case(LSA_TRUSTED_DOMAIN_INFO_PASSWORD)] */
- struct lsa_TrustDomainInfoBasic info_basic;/* [case(LSA_TRUSTED_DOMAIN_INFO_BASIC)] */
- struct lsa_TrustDomainInfoInfoEx info_ex;/* [case(LSA_TRUSTED_DOMAIN_INFO_INFO_EX)] */
- struct lsa_TrustDomainInfoAuthInfo auth_info;/* [case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO)] */
- struct lsa_TrustDomainInfoFullInfo full_info;/* [case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO)] */
- struct lsa_TrustDomainInfo11 info11;/* [case(LSA_TRUSTED_DOMAIN_INFO_11)] */
- struct lsa_TrustDomainInfoInfoAll info_all;/* [case(LSA_TRUSTED_DOMAIN_INFO_INFO_ALL)] */
-}/* [switch_type(lsa_TrustDomInfoEnum)] */;
-
-struct lsa_DATA_BUF_PTR {
- struct lsa_DATA_BUF *buf;/* [unique] */
-};
-
-struct lsa_RightAttribute {
- const char *name;/* [unique,charset(UTF16)] */
-};
-
-struct lsa_RightSet {
- uint32_t count;
- struct lsa_StringLarge *names;/* [unique,size_is(count)] */
-};
-
-struct lsa_StringPointer {
- struct lsa_String *string;/* [unique] */
-};
-
-struct lsa_DomainListEx {
- uint32_t count;
- struct lsa_TrustDomainInfoInfoEx *domains;/* [unique,size_is(count)] */
-};
-
-struct lsa_DomainInfoKerberos {
- uint32_t enforce_restrictions;
- uint64_t service_tkt_lifetime;
- uint64_t user_tkt_lifetime;
- uint64_t user_tkt_renewaltime;
- uint64_t clock_skew;
- uint64_t unknown6;
-};
-
-struct lsa_DomainInfoEfs {
- uint32_t blob_size;
- uint8_t *efs_blob;/* [unique,size_is(blob_size)] */
-};
-
-#ifndef USE_UINT_ENUMS
-enum lsa_DomainInfoEnum {
- LSA_DOMAIN_INFO_POLICY_EFS=2,
- LSA_DOMAIN_INFO_POLICY_KERBEROS=3
-}
-#else
-enum lsa_DomainInfoEnum { __donnot_use_enum_lsa_DomainInfoEnum=0x7FFFFFFF}
-#define LSA_DOMAIN_INFO_POLICY_EFS ( 2 )
-#define LSA_DOMAIN_INFO_POLICY_KERBEROS ( 3 )
-#endif
-;
-
-union lsa_DomainInformationPolicy {
- struct lsa_DomainInfoEfs efs_info;/* [case(LSA_DOMAIN_INFO_POLICY_EFS)] */
- struct lsa_DomainInfoKerberos kerberos_info;/* [case(LSA_DOMAIN_INFO_POLICY_KERBEROS)] */
-}/* [switch_type(uint16)] */;
-
-struct lsa_TranslatedName2 {
- enum lsa_SidType sid_type;
- struct lsa_String name;
- uint32_t sid_index;
- uint32_t unknown;
-};
-
-struct lsa_TransNameArray2 {
- uint32_t count;/* [range(0 1000)] */
- struct lsa_TranslatedName2 *names;/* [unique,size_is(count)] */
-};
-
-struct lsa_TranslatedSid2 {
- enum lsa_SidType sid_type;
- uint32_t rid;
- uint32_t sid_index;
- uint32_t unknown;
-};
-
-struct lsa_TransSidArray2 {
- uint32_t count;/* [range(0 1000)] */
- struct lsa_TranslatedSid2 *sids;/* [unique,size_is(count)] */
-};
-
-struct lsa_TranslatedSid3 {
- enum lsa_SidType sid_type;
- struct dom_sid2 *sid;/* [unique] */
- uint32_t sid_index;
- uint32_t unknown;
-};
-
-struct lsa_TransSidArray3 {
- uint32_t count;/* [range(0 1000)] */
- struct lsa_TranslatedSid3 *sids;/* [unique,size_is(count)] */
-};
-
-
-struct lsa_Close {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_Delete {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_EnumPrivs {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t max_count;
- uint32_t *resume_handle;/* [ref] */
- } in;
-
- struct {
- struct lsa_PrivArray *privs;/* [ref] */
- uint32_t *resume_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QuerySecurity {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t sec_info;
- } in;
-
- struct {
- struct sec_desc_buf *sdbuf;/* [unique] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetSecObj {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_ChangePassword {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_OpenPolicy {
- struct {
- uint16_t *system_name;/* [unique] */
- struct lsa_ObjectAttribute *attr;/* [ref] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QueryInfoPolicy {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint16_t level;
- } in;
-
- struct {
- union lsa_PolicyInformation *info;/* [unique,switch_is(level)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetInfoPolicy {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_ClearAuditLog {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CreateAccount {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *sid;/* [ref] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *acct_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_EnumAccounts {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t num_entries;/* [range(0 8192)] */
- uint32_t *resume_handle;/* [ref] */
- } in;
-
- struct {
- struct lsa_SidArray *sids;/* [ref] */
- uint32_t *resume_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CreateTrustedDomain {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_DomainInfo *info;/* [ref] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *trustdom_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_EnumTrustDom {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t max_size;/* [range(0 1000)] */
- uint32_t *resume_handle;/* [ref] */
- } in;
-
- struct {
- struct lsa_DomainList *domains;/* [ref] */
- uint32_t *resume_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupNames {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t num_names;/* [range(0 1000)] */
- struct lsa_String *names;/* [size_is(num_names)] */
- uint16_t level;
- struct lsa_TransSidArray *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- } in;
-
- struct {
- struct lsa_RefDomainList *domains;/* [unique] */
- struct lsa_TransSidArray *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupSids {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_SidArray *sids;/* [ref] */
- uint16_t level;
- struct lsa_TransNameArray *names;/* [ref] */
- uint32_t *count;/* [ref] */
- } in;
-
- struct {
- struct lsa_RefDomainList *domains;/* [unique] */
- struct lsa_TransNameArray *names;/* [ref] */
- uint32_t *count;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CreateSecret {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String name;
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *sec_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_OpenAccount {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *sid;/* [ref] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *acct_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_EnumPrivsAccount {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- struct lsa_PrivilegeSet *privs;/* [unique] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_AddPrivilegesToAccount {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_PrivilegeSet *privs;/* [ref] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_RemovePrivilegesFromAccount {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint8_t remove_all;
- struct lsa_PrivilegeSet *privs;/* [unique] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_GetQuotasForAccount {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetQuotasForAccount {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_GetSystemAccessAccount {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetSystemAccessAccount {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_OpenTrustedDomain {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *sid;/* [ref] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *trustdom_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QueryTrustedDomainInfo {
- struct {
- struct policy_handle *trustdom_handle;/* [ref] */
- enum lsa_TrustDomInfoEnum level;
- } in;
-
- struct {
- union lsa_TrustedDomainInfo *info;/* [unique,switch_is(level)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetInformationTrustedDomain {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_OpenSecret {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String name;
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *sec_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetSecret {
- struct {
- struct policy_handle *sec_handle;/* [ref] */
- struct lsa_DATA_BUF *new_val;/* [unique] */
- struct lsa_DATA_BUF *old_val;/* [unique] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QuerySecret {
- struct {
- struct policy_handle *sec_handle;/* [ref] */
- struct lsa_DATA_BUF_PTR *new_val;/* [unique] */
- NTTIME *new_mtime;/* [unique] */
- struct lsa_DATA_BUF_PTR *old_val;/* [unique] */
- NTTIME *old_mtime;/* [unique] */
- } in;
-
- struct {
- struct lsa_DATA_BUF_PTR *new_val;/* [unique] */
- NTTIME *new_mtime;/* [unique] */
- struct lsa_DATA_BUF_PTR *old_val;/* [unique] */
- NTTIME *old_mtime;/* [unique] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupPrivValue {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String *name;/* [ref] */
- } in;
-
- struct {
- struct lsa_LUID *luid;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupPrivName {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_LUID *luid;/* [ref] */
- } in;
-
- struct {
- struct lsa_StringLarge *name;/* [unique] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupPrivDisplayName {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String *name;/* [ref] */
- uint16_t unknown;
- uint16_t *language_id;/* [ref] */
- } in;
-
- struct {
- struct lsa_StringLarge *disp_name;/* [unique] */
- uint16_t *language_id;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_DeleteObject {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_EnumAccountsWithUserRight {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String *name;/* [unique] */
- } in;
-
- struct {
- struct lsa_SidArray *sids;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_EnumAccountRights {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *sid;/* [ref] */
- } in;
-
- struct {
- struct lsa_RightSet *rights;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_AddAccountRights {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *sid;/* [ref] */
- struct lsa_RightSet *rights;/* [ref] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_RemoveAccountRights {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *sid;/* [ref] */
- uint32_t unknown;
- struct lsa_RightSet *rights;/* [ref] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QueryTrustedDomainInfoBySid {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *dom_sid;/* [ref] */
- enum lsa_TrustDomInfoEnum level;
- } in;
-
- struct {
- union lsa_TrustedDomainInfo *info;/* [unique,switch_is(level)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetTrustedDomainInfo {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_DeleteTrustedDomain {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct dom_sid2 *dom_sid;/* [ref] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_StorePrivateData {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_RetrievePrivateData {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_OpenPolicy2 {
- struct {
- const char *system_name;/* [unique,charset(UTF16)] */
- struct lsa_ObjectAttribute *attr;/* [ref] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_GetUserName {
- struct {
- const char *system_name;/* [unique,charset(UTF16)] */
- struct lsa_String *account_name;/* [unique] */
- struct lsa_StringPointer *authority_name;/* [unique] */
- } in;
-
- struct {
- struct lsa_String *account_name;/* [unique] */
- struct lsa_StringPointer *authority_name;/* [unique] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QueryInfoPolicy2 {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint16_t level;
- } in;
-
- struct {
- union lsa_PolicyInformation *info;/* [unique,switch_is(level)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetInfoPolicy2 {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QueryTrustedDomainInfoByName {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String trusted_domain;
- enum lsa_TrustDomInfoEnum level;
- } in;
-
- struct {
- union lsa_TrustedDomainInfo *info;/* [unique,switch_is(level)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetTrustedDomainInfoByName {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String trusted_domain;
- enum lsa_TrustDomInfoEnum level;
- union lsa_TrustedDomainInfo *info;/* [unique,switch_is(level)] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_EnumTrustedDomainsEx {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t max_size;
- uint32_t *resume_handle;/* [ref] */
- } in;
-
- struct {
- struct lsa_DomainListEx *domains;/* [ref] */
- uint32_t *resume_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CreateTrustedDomainEx {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CloseTrustedDomainEx {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_QueryDomainInformationPolicy {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint16_t level;
- } in;
-
- struct {
- union lsa_DomainInformationPolicy *info;/* [unique,switch_is(level)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_SetDomainInformationPolicy {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint16_t level;
- union lsa_DomainInformationPolicy *info;/* [unique,switch_is(level)] */
- } in;
-
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_OpenTrustedDomainByName {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_String name;
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *trustdom_handle;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_TestCall {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupSids2 {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct lsa_SidArray *sids;/* [ref] */
- uint16_t level;
- uint32_t unknown1;
- uint32_t unknown2;
- struct lsa_TransNameArray2 *names;/* [ref] */
- uint32_t *count;/* [ref] */
- } in;
-
- struct {
- struct lsa_RefDomainList *domains;/* [unique] */
- struct lsa_TransNameArray2 *names;/* [ref] */
- uint32_t *count;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupNames2 {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t num_names;/* [range(0 1000)] */
- struct lsa_String *names;/* [size_is(num_names)] */
- uint16_t level;
- uint32_t unknown1;
- uint32_t unknown2;
- struct lsa_TransSidArray2 *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- } in;
-
- struct {
- struct lsa_RefDomainList *domains;/* [unique] */
- struct lsa_TransSidArray2 *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CreateTrustedDomainEx2 {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRWRITE {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRREAD {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRENUMERATE {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRWRITEDOMAINCREDENTIALS {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRREADDOMAINCREDENTIALS {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRDELETE {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRGETTARGETINFO {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRPROFILELOADED {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupNames3 {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t num_names;/* [range(0 1000)] */
- struct lsa_String *names;/* [size_is(num_names)] */
- uint16_t level;
- uint32_t unknown1;
- uint32_t unknown2;
- struct lsa_TransSidArray3 *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- } in;
-
- struct {
- struct lsa_RefDomainList *domains;/* [unique] */
- struct lsa_TransSidArray3 *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRGETSESSIONTYPES {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARREGISTERAUDITEVENT {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARGENAUDITEVENT {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARUNREGISTERAUDITEVENT {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARQUERYFORESTTRUSTINFORMATION {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARSETFORESTTRUSTINFORMATION {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_CREDRRENAME {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupSids3 {
- struct {
- struct lsa_SidArray *sids;/* [ref] */
- uint16_t level;
- uint32_t unknown1;
- uint32_t unknown2;
- struct lsa_TransNameArray2 *names;/* [ref] */
- uint32_t *count;/* [ref] */
- } in;
-
- struct {
- struct lsa_RefDomainList *domains;/* [unique] */
- struct lsa_TransNameArray2 *names;/* [ref] */
- uint32_t *count;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LookupNames4 {
- struct {
- uint32_t num_names;/* [range(0 1000)] */
- struct lsa_String *names;/* [size_is(num_names)] */
- uint16_t level;
- uint32_t unknown1;
- uint32_t unknown2;
- struct lsa_TransSidArray3 *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- } in;
-
- struct {
- struct lsa_RefDomainList *domains;/* [unique] */
- struct lsa_TransSidArray3 *sids;/* [ref] */
- uint32_t *count;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSAROPENPOLICYSCE {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-
-struct lsa_LSARADTREPORTSECURITYEVENT {
- struct {
- NTSTATUS result;
- } out;
-
-};
-
-#endif /* _HEADER_lsarpc */
diff --git a/source/librpc/gen_ndr/messaging.h b/source/librpc/gen_ndr/messaging.h
deleted file mode 100644
index 71340c09874..00000000000
--- a/source/librpc/gen_ndr/messaging.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#ifndef _HEADER_messaging
-#define _HEADER_messaging
-
-struct messaging_rec {
- uint32_t msg_version;
- uint32_t msg_type;
- struct server_id dest;
- struct server_id src;
- DATA_BLOB buf;
-}/* [public] */;
-
-struct messaging_array {
- uint32_t num_messages;
- struct messaging_rec *messages;
-}/* [public] */;
-
-#endif /* _HEADER_messaging */
diff --git a/source/librpc/gen_ndr/ndr_dcerpc.h b/source/librpc/gen_ndr/ndr_dcerpc.h
deleted file mode 100644
index 292e9011c62..00000000000
--- a/source/librpc/gen_ndr/ndr_dcerpc.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* empty header to deal with pidl */
-
diff --git a/source/librpc/gen_ndr/ndr_dfs.c b/source/librpc/gen_ndr/ndr_dfs.c
deleted file mode 100644
index 137c189c461..00000000000
--- a/source/librpc/gen_ndr/ndr_dfs.c
+++ /dev/null
@@ -1,5343 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_dfs.h"
-
-NTSTATUS ndr_push_dfs_ManagerVersion(struct ndr_push *ndr, int ndr_flags, enum dfs_ManagerVersion r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_ManagerVersion(struct ndr_pull *ndr, int ndr_flags, enum dfs_ManagerVersion *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_ManagerVersion(struct ndr_print *ndr, const char *name, enum dfs_ManagerVersion r)
-{
- const char *val = NULL;
-
- switch (r) {
- case DFS_MANAGER_VERSION_NT4: val = "DFS_MANAGER_VERSION_NT4"; break;
- case DFS_MANAGER_VERSION_W2K: val = "DFS_MANAGER_VERSION_W2K"; break;
- case DFS_MANAGER_VERSION_W2K3: val = "DFS_MANAGER_VERSION_W2K3"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_dfs_Info0(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info0(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info0(struct ndr_print *ndr, const char *name, const struct dfs_Info0 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info0");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info1(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info1(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info1 *r)
-{
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info1(struct ndr_print *ndr, const char *name, const struct dfs_Info1 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info1");
- ndr->depth++;
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_dfs_VolumeState(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_dfs_VolumeState(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_VolumeState(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_VOLUME_STATE_OK", DFS_VOLUME_STATE_OK, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_VOLUME_STATE_INCONSISTENT", DFS_VOLUME_STATE_INCONSISTENT, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_VOLUME_STATE_OFFLINE", DFS_VOLUME_STATE_OFFLINE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_VOLUME_STATE_ONLINE", DFS_VOLUME_STATE_ONLINE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_VOLUME_STATE_STANDALONE", DFS_VOLUME_STATE_STANDALONE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_VOLUME_STATE_AD_BLOB", DFS_VOLUME_STATE_AD_BLOB, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info2(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_dfs_VolumeState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_stores));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info2(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info2 *r)
-{
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_dfs_VolumeState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_stores));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info2(struct ndr_print *ndr, const char *name, const struct dfs_Info2 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info2");
- ndr->depth++;
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_dfs_VolumeState(ndr, "state", r->state);
- ndr_print_uint32(ndr, "num_stores", r->num_stores);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_dfs_StorageState(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_dfs_StorageState(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_StorageState(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_STORAGE_STATE_OFFLINE", DFS_STORAGE_STATE_OFFLINE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_STORAGE_STATE_ONLINE", DFS_STORAGE_STATE_ONLINE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_STORAGE_STATE_ACTIVE", DFS_STORAGE_STATE_ACTIVE, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_StorageInfo(struct ndr_push *ndr, int ndr_flags, const struct dfs_StorageInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_StorageState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->server));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->share));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server, ndr_charset_length(r->server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->share) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->share, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->share, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->share, ndr_charset_length(r->share, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_StorageInfo(struct ndr_pull *ndr, int ndr_flags, struct dfs_StorageInfo *r)
-{
- uint32_t _ptr_server;
- TALLOC_CTX *_mem_save_server_0;
- uint32_t _ptr_share;
- TALLOC_CTX *_mem_save_share_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_StorageState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
- if (_ptr_server) {
- NDR_PULL_ALLOC(ndr, r->server);
- } else {
- r->server = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_share));
- if (_ptr_share) {
- NDR_PULL_ALLOC(ndr, r->share);
- } else {
- r->share = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server) {
- _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->server, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->server));
- if (ndr_get_array_length(ndr, &r->server) > ndr_get_array_size(ndr, &r->server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server), ndr_get_array_length(ndr, &r->server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server, ndr_get_array_length(ndr, &r->server), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
- }
- if (r->share) {
- _mem_save_share_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->share, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->share));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->share));
- if (ndr_get_array_length(ndr, &r->share) > ndr_get_array_size(ndr, &r->share)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->share), ndr_get_array_length(ndr, &r->share));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->share), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->share, ndr_get_array_length(ndr, &r->share), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_share_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_StorageInfo(struct ndr_print *ndr, const char *name, const struct dfs_StorageInfo *r)
-{
- ndr_print_struct(ndr, name, "dfs_StorageInfo");
- ndr->depth++;
- ndr_print_dfs_StorageState(ndr, "state", r->state);
- ndr_print_ptr(ndr, "server", r->server);
- ndr->depth++;
- if (r->server) {
- ndr_print_string(ndr, "server", r->server);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "share", r->share);
- ndr->depth++;
- if (r->share) {
- ndr_print_string(ndr, "share", r->share);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info3(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info3 *r)
-{
- uint32_t cntr_stores_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_dfs_VolumeState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_stores));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->stores));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->stores) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_stores));
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_push_dfs_StorageInfo(ndr, NDR_SCALARS, &r->stores[cntr_stores_1]));
- }
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_push_dfs_StorageInfo(ndr, NDR_BUFFERS, &r->stores[cntr_stores_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info3(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info3 *r)
-{
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- uint32_t _ptr_stores;
- uint32_t cntr_stores_1;
- TALLOC_CTX *_mem_save_stores_0;
- TALLOC_CTX *_mem_save_stores_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_dfs_VolumeState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_stores));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_stores));
- if (_ptr_stores) {
- NDR_PULL_ALLOC(ndr, r->stores);
- } else {
- r->stores = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- if (r->stores) {
- _mem_save_stores_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->stores, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->stores));
- NDR_PULL_ALLOC_N(ndr, r->stores, ndr_get_array_size(ndr, &r->stores));
- _mem_save_stores_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->stores, 0);
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_pull_dfs_StorageInfo(ndr, NDR_SCALARS, &r->stores[cntr_stores_1]));
- }
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_pull_dfs_StorageInfo(ndr, NDR_BUFFERS, &r->stores[cntr_stores_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stores_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stores_0, 0);
- }
- if (r->stores) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->stores, r->num_stores));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info3(struct ndr_print *ndr, const char *name, const struct dfs_Info3 *r)
-{
- uint32_t cntr_stores_1;
- ndr_print_struct(ndr, name, "dfs_Info3");
- ndr->depth++;
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_dfs_VolumeState(ndr, "state", r->state);
- ndr_print_uint32(ndr, "num_stores", r->num_stores);
- ndr_print_ptr(ndr, "stores", r->stores);
- ndr->depth++;
- if (r->stores) {
- ndr->print(ndr, "%s: ARRAY(%d)", "stores", r->num_stores);
- ndr->depth++;
- for (cntr_stores_1=0;cntr_stores_1<r->num_stores;cntr_stores_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_stores_1);
- if (idx_1) {
- ndr_print_dfs_StorageInfo(ndr, "stores", &r->stores[cntr_stores_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info4(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info4 *r)
-{
- uint32_t cntr_stores_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_dfs_VolumeState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timeout));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_stores));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->stores));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->guid));
- if (r->stores) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_stores));
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_push_dfs_StorageInfo(ndr, NDR_SCALARS, &r->stores[cntr_stores_1]));
- }
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_push_dfs_StorageInfo(ndr, NDR_BUFFERS, &r->stores[cntr_stores_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info4(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info4 *r)
-{
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- uint32_t _ptr_stores;
- uint32_t cntr_stores_1;
- TALLOC_CTX *_mem_save_stores_0;
- TALLOC_CTX *_mem_save_stores_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_dfs_VolumeState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timeout));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_stores));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_stores));
- if (_ptr_stores) {
- NDR_PULL_ALLOC(ndr, r->stores);
- } else {
- r->stores = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->guid));
- if (r->stores) {
- _mem_save_stores_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->stores, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->stores));
- NDR_PULL_ALLOC_N(ndr, r->stores, ndr_get_array_size(ndr, &r->stores));
- _mem_save_stores_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->stores, 0);
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_pull_dfs_StorageInfo(ndr, NDR_SCALARS, &r->stores[cntr_stores_1]));
- }
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_pull_dfs_StorageInfo(ndr, NDR_BUFFERS, &r->stores[cntr_stores_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stores_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stores_0, 0);
- }
- if (r->stores) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->stores, r->num_stores));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info4(struct ndr_print *ndr, const char *name, const struct dfs_Info4 *r)
-{
- uint32_t cntr_stores_1;
- ndr_print_struct(ndr, name, "dfs_Info4");
- ndr->depth++;
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_dfs_VolumeState(ndr, "state", r->state);
- ndr_print_uint32(ndr, "timeout", r->timeout);
- ndr_print_GUID(ndr, "guid", &r->guid);
- ndr_print_uint32(ndr, "num_stores", r->num_stores);
- ndr_print_ptr(ndr, "stores", r->stores);
- ndr->depth++;
- if (r->stores) {
- ndr->print(ndr, "%s: ARRAY(%d)", "stores", r->num_stores);
- ndr->depth++;
- for (cntr_stores_1=0;cntr_stores_1<r->num_stores;cntr_stores_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_stores_1);
- if (idx_1) {
- ndr_print_dfs_StorageInfo(ndr, "stores", &r->stores[cntr_stores_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_dfs_PropertyFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_dfs_PropertyFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_PropertyFlags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_PROPERTY_FLAG_INSITE_REFERRALS", DFS_PROPERTY_FLAG_INSITE_REFERRALS, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_PROPERTY_FLAG_ROOT_SCALABILITY", DFS_PROPERTY_FLAG_ROOT_SCALABILITY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_PROPERTY_FLAG_SITE_COSTING", DFS_PROPERTY_FLAG_SITE_COSTING, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_PROPERTY_FLAG_TARGET_FAILBACK", DFS_PROPERTY_FLAG_TARGET_FAILBACK, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DFS_PROPERTY_FLAG_CLUSTER_ENABLED", DFS_PROPERTY_FLAG_CLUSTER_ENABLED, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info5(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info5 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_dfs_VolumeState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timeout));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_push_dfs_PropertyFlags(ndr, NDR_SCALARS, r->flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pktsize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_stores));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->guid));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info5(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info5 *r)
-{
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_dfs_VolumeState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timeout));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_pull_dfs_PropertyFlags(ndr, NDR_SCALARS, &r->flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pktsize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_stores));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->guid));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info5(struct ndr_print *ndr, const char *name, const struct dfs_Info5 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info5");
- ndr->depth++;
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_dfs_VolumeState(ndr, "state", r->state);
- ndr_print_uint32(ndr, "timeout", r->timeout);
- ndr_print_GUID(ndr, "guid", &r->guid);
- ndr_print_dfs_PropertyFlags(ndr, "flags", r->flags);
- ndr_print_uint32(ndr, "pktsize", r->pktsize);
- ndr_print_uint32(ndr, "num_stores", r->num_stores);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Target_PriorityClass(struct ndr_push *ndr, int ndr_flags, enum dfs_Target_PriorityClass r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Target_PriorityClass(struct ndr_pull *ndr, int ndr_flags, enum dfs_Target_PriorityClass *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Target_PriorityClass(struct ndr_print *ndr, const char *name, enum dfs_Target_PriorityClass r)
-{
- const char *val = NULL;
-
- switch (r) {
- case DFS_INVALID_PRIORITY_CLASS: val = "DFS_INVALID_PRIORITY_CLASS"; break;
- case DFS_SITE_COST_NORMAL_PRIORITY_CLASS: val = "DFS_SITE_COST_NORMAL_PRIORITY_CLASS"; break;
- case DFS_GLOBAL_HIGH_PRIORITY_CLASS: val = "DFS_GLOBAL_HIGH_PRIORITY_CLASS"; break;
- case DFS_SITE_COST_HIGH_PRIORITY_CLASS: val = "DFS_SITE_COST_HIGH_PRIORITY_CLASS"; break;
- case DFS_SITE_COST_LOW_PRIORITY_CLASS: val = "DFS_SITE_COST_LOW_PRIORITY_CLASS"; break;
- case DFS_GLOBAL_LOW_PRIORITY_CLASS: val = "DFS_GLOBAL_LOW_PRIORITY_CLASS"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_dfs_Target_Priority(struct ndr_push *ndr, int ndr_flags, const struct dfs_Target_Priority *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_Target_PriorityClass(ndr, NDR_SCALARS, r->target_priority_class));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->target_priority_rank));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->reserved));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Target_Priority(struct ndr_pull *ndr, int ndr_flags, struct dfs_Target_Priority *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_Target_PriorityClass(ndr, NDR_SCALARS, &r->target_priority_class));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->target_priority_rank));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Target_Priority(struct ndr_print *ndr, const char *name, const struct dfs_Target_Priority *r)
-{
- ndr_print_struct(ndr, name, "dfs_Target_Priority");
- ndr->depth++;
- ndr_print_dfs_Target_PriorityClass(ndr, "target_priority_class", r->target_priority_class);
- ndr_print_uint16(ndr, "target_priority_rank", r->target_priority_rank);
- ndr_print_uint16(ndr, "reserved", r->reserved);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_StorageInfo2(struct ndr_push *ndr, int ndr_flags, const struct dfs_StorageInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_StorageInfo(ndr, NDR_SCALARS, &r->info));
- NDR_CHECK(ndr_push_dfs_Target_Priority(ndr, NDR_SCALARS, &r->target_priority));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_dfs_StorageInfo(ndr, NDR_BUFFERS, &r->info));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_StorageInfo2(struct ndr_pull *ndr, int ndr_flags, struct dfs_StorageInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_StorageInfo(ndr, NDR_SCALARS, &r->info));
- NDR_CHECK(ndr_pull_dfs_Target_Priority(ndr, NDR_SCALARS, &r->target_priority));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_dfs_StorageInfo(ndr, NDR_BUFFERS, &r->info));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_StorageInfo2(struct ndr_print *ndr, const char *name, const struct dfs_StorageInfo2 *r)
-{
- ndr_print_struct(ndr, name, "dfs_StorageInfo2");
- ndr->depth++;
- ndr_print_dfs_StorageInfo(ndr, "info", &r->info);
- ndr_print_dfs_Target_Priority(ndr, "target_priority", &r->target_priority);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info6(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info6 *r)
-{
- uint32_t cntr_stores_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->entry_path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_dfs_VolumeState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timeout));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_push_dfs_PropertyFlags(ndr, NDR_SCALARS, r->flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pktsize));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_stores));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->stores));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->entry_path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->entry_path, ndr_charset_length(r->entry_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->guid));
- if (r->stores) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_stores));
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_push_dfs_StorageInfo2(ndr, NDR_SCALARS, &r->stores[cntr_stores_1]));
- }
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_push_dfs_StorageInfo2(ndr, NDR_BUFFERS, &r->stores[cntr_stores_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info6(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info6 *r)
-{
- uint32_t _ptr_entry_path;
- TALLOC_CTX *_mem_save_entry_path_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- uint32_t _ptr_stores;
- uint32_t cntr_stores_1;
- TALLOC_CTX *_mem_save_stores_0;
- TALLOC_CTX *_mem_save_stores_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_entry_path));
- if (_ptr_entry_path) {
- NDR_PULL_ALLOC(ndr, r->entry_path);
- } else {
- r->entry_path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_dfs_VolumeState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timeout));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_pull_dfs_PropertyFlags(ndr, NDR_SCALARS, &r->flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pktsize));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_stores));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_stores));
- if (_ptr_stores) {
- NDR_PULL_ALLOC(ndr, r->stores);
- } else {
- r->stores = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->entry_path) {
- _mem_save_entry_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->entry_path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->entry_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->entry_path));
- if (ndr_get_array_length(ndr, &r->entry_path) > ndr_get_array_size(ndr, &r->entry_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->entry_path), ndr_get_array_length(ndr, &r->entry_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->entry_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->entry_path, ndr_get_array_length(ndr, &r->entry_path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entry_path_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->guid));
- if (r->stores) {
- _mem_save_stores_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->stores, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->stores));
- NDR_PULL_ALLOC_N(ndr, r->stores, ndr_get_array_size(ndr, &r->stores));
- _mem_save_stores_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->stores, 0);
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_pull_dfs_StorageInfo2(ndr, NDR_SCALARS, &r->stores[cntr_stores_1]));
- }
- for (cntr_stores_1 = 0; cntr_stores_1 < r->num_stores; cntr_stores_1++) {
- NDR_CHECK(ndr_pull_dfs_StorageInfo2(ndr, NDR_BUFFERS, &r->stores[cntr_stores_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stores_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stores_0, 0);
- }
- if (r->stores) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->stores, r->num_stores));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info6(struct ndr_print *ndr, const char *name, const struct dfs_Info6 *r)
-{
- uint32_t cntr_stores_1;
- ndr_print_struct(ndr, name, "dfs_Info6");
- ndr->depth++;
- ndr_print_ptr(ndr, "entry_path", r->entry_path);
- ndr->depth++;
- if (r->entry_path) {
- ndr_print_string(ndr, "entry_path", r->entry_path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_dfs_VolumeState(ndr, "state", r->state);
- ndr_print_uint32(ndr, "timeout", r->timeout);
- ndr_print_GUID(ndr, "guid", &r->guid);
- ndr_print_dfs_PropertyFlags(ndr, "flags", r->flags);
- ndr_print_uint32(ndr, "pktsize", r->pktsize);
- ndr_print_uint16(ndr, "num_stores", r->num_stores);
- ndr_print_ptr(ndr, "stores", r->stores);
- ndr->depth++;
- if (r->stores) {
- ndr->print(ndr, "%s: ARRAY(%d)", "stores", r->num_stores);
- ndr->depth++;
- for (cntr_stores_1=0;cntr_stores_1<r->num_stores;cntr_stores_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_stores_1);
- if (idx_1) {
- ndr_print_dfs_StorageInfo2(ndr, "stores", &r->stores[cntr_stores_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info7(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info7 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->generation_guid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->generation_guid));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info7(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info7 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->generation_guid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->generation_guid));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info7(struct ndr_print *ndr, const char *name, const struct dfs_Info7 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info7");
- ndr->depth++;
- ndr_print_GUID(ndr, "generation_guid", &r->generation_guid);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info100(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info100 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info100(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info100 *r)
-{
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info100(struct ndr_print *ndr, const char *name, const struct dfs_Info100 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info100");
- ndr->depth++;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info101(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info101 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_StorageState(ndr, NDR_SCALARS, r->state));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info101(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info101 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_StorageState(ndr, NDR_SCALARS, &r->state));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info101(struct ndr_print *ndr, const char *name, const struct dfs_Info101 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info101");
- ndr->depth++;
- ndr_print_dfs_StorageState(ndr, "state", r->state);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info102(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info102 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timeout));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info102(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info102 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timeout));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info102(struct ndr_print *ndr, const char *name, const struct dfs_Info102 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info102");
- ndr->depth++;
- ndr_print_uint32(ndr, "timeout", r->timeout);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info103(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info103 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_PropertyFlags(ndr, NDR_SCALARS, r->flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info103(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info103 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_PropertyFlags(ndr, NDR_SCALARS, &r->flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info103(struct ndr_print *ndr, const char *name, const struct dfs_Info103 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info103");
- ndr->depth++;
- ndr_print_dfs_PropertyFlags(ndr, "flags", r->flags);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info104(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info104 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_Target_Priority(ndr, NDR_SCALARS, &r->priority));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info104(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info104 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_Target_Priority(ndr, NDR_SCALARS, &r->priority));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info104(struct ndr_print *ndr, const char *name, const struct dfs_Info104 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info104");
- ndr->depth++;
- ndr_print_dfs_Target_Priority(ndr, "priority", &r->priority);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info105(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info105 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_dfs_VolumeState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timeout));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->property_flag_mask));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->property_flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info105(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info105 *r)
-{
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_dfs_VolumeState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timeout));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->property_flag_mask));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->property_flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info105(struct ndr_print *ndr, const char *name, const struct dfs_Info105 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info105");
- ndr->depth++;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_dfs_VolumeState(ndr, "state", r->state);
- ndr_print_uint32(ndr, "timeout", r->timeout);
- ndr_print_uint32(ndr, "property_flag_mask", r->property_flag_mask);
- ndr_print_uint32(ndr, "property_flags", r->property_flags);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info106(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info106 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_StorageState(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_dfs_Target_Priority(ndr, NDR_SCALARS, &r->priority));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info106(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info106 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_StorageState(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_dfs_Target_Priority(ndr, NDR_SCALARS, &r->priority));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info106(struct ndr_print *ndr, const char *name, const struct dfs_Info106 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info106");
- ndr->depth++;
- ndr_print_dfs_StorageState(ndr, "state", r->state);
- ndr_print_dfs_Target_Priority(ndr, "priority", &r->priority);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info200(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info200 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->dom_root));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->dom_root) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dom_root, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dom_root, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dom_root, ndr_charset_length(r->dom_root, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info200(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info200 *r)
-{
- uint32_t _ptr_dom_root;
- TALLOC_CTX *_mem_save_dom_root_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dom_root));
- if (_ptr_dom_root) {
- NDR_PULL_ALLOC(ndr, r->dom_root);
- } else {
- r->dom_root = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->dom_root) {
- _mem_save_dom_root_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->dom_root, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->dom_root));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->dom_root));
- if (ndr_get_array_length(ndr, &r->dom_root) > ndr_get_array_size(ndr, &r->dom_root)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dom_root), ndr_get_array_length(ndr, &r->dom_root));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dom_root), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dom_root, ndr_get_array_length(ndr, &r->dom_root), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_root_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info200(struct ndr_print *ndr, const char *name, const struct dfs_Info200 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info200");
- ndr->depth++;
- ndr_print_ptr(ndr, "dom_root", r->dom_root);
- ndr->depth++;
- if (r->dom_root) {
- ndr_print_string(ndr, "dom_root", r->dom_root);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_VolumeFlavor(struct ndr_push *ndr, int ndr_flags, enum dfs_VolumeFlavor r)
-{
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_VolumeFlavor(struct ndr_pull *ndr, int ndr_flags, enum dfs_VolumeFlavor *r)
-{
- uint16_t v;
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_VolumeFlavor(struct ndr_print *ndr, const char *name, enum dfs_VolumeFlavor r)
-{
- const char *val = NULL;
-
- switch (r) {
- case DFS_VOLUME_FLAVOR_STANDALONE: val = "DFS_VOLUME_FLAVOR_STANDALONE"; break;
- case DFS_VOLUME_FLAVOR_AD_BLOB: val = "DFS_VOLUME_FLAVOR_AD_BLOB"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_dfs_Info300(struct ndr_push *ndr, int ndr_flags, const struct dfs_Info300 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_dfs_VolumeFlavor(ndr, NDR_SCALARS, r->flavor));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->dom_root));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->dom_root) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dom_root, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dom_root, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dom_root, ndr_charset_length(r->dom_root, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info300(struct ndr_pull *ndr, int ndr_flags, struct dfs_Info300 *r)
-{
- uint32_t _ptr_dom_root;
- TALLOC_CTX *_mem_save_dom_root_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_dfs_VolumeFlavor(ndr, NDR_SCALARS, &r->flavor));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dom_root));
- if (_ptr_dom_root) {
- NDR_PULL_ALLOC(ndr, r->dom_root);
- } else {
- r->dom_root = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->dom_root) {
- _mem_save_dom_root_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->dom_root, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->dom_root));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->dom_root));
- if (ndr_get_array_length(ndr, &r->dom_root) > ndr_get_array_size(ndr, &r->dom_root)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dom_root), ndr_get_array_length(ndr, &r->dom_root));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dom_root), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dom_root, ndr_get_array_length(ndr, &r->dom_root), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_root_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info300(struct ndr_print *ndr, const char *name, const struct dfs_Info300 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Info300");
- ndr->depth++;
- ndr_print_dfs_VolumeFlavor(ndr, "flavor", r->flavor);
- ndr_print_ptr(ndr, "dom_root", r->dom_root);
- ndr->depth++;
- if (r->dom_root) {
- ndr_print_string(ndr, "dom_root", r->dom_root);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Info(struct ndr_push *ndr, int ndr_flags, const union dfs_Info *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
- break;
-
- case 4:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info4));
- break;
-
- case 5:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info5));
- break;
-
- case 6:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info6));
- break;
-
- case 7:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info7));
- break;
-
- case 100:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info100));
- break;
-
- case 101:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info101));
- break;
-
- case 102:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info102));
- break;
-
- case 103:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info103));
- break;
-
- case 104:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info104));
- break;
-
- case 105:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info105));
- break;
-
- case 106:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info106));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->info0) {
- NDR_CHECK(ndr_push_dfs_Info0(ndr, NDR_SCALARS, r->info0));
- }
- break;
-
- case 1:
- if (r->info1) {
- NDR_CHECK(ndr_push_dfs_Info1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- }
- break;
-
- case 2:
- if (r->info2) {
- NDR_CHECK(ndr_push_dfs_Info2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
- }
- break;
-
- case 3:
- if (r->info3) {
- NDR_CHECK(ndr_push_dfs_Info3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
- }
- break;
-
- case 4:
- if (r->info4) {
- NDR_CHECK(ndr_push_dfs_Info4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
- }
- break;
-
- case 5:
- if (r->info5) {
- NDR_CHECK(ndr_push_dfs_Info5(ndr, NDR_SCALARS|NDR_BUFFERS, r->info5));
- }
- break;
-
- case 6:
- if (r->info6) {
- NDR_CHECK(ndr_push_dfs_Info6(ndr, NDR_SCALARS|NDR_BUFFERS, r->info6));
- }
- break;
-
- case 7:
- if (r->info7) {
- NDR_CHECK(ndr_push_dfs_Info7(ndr, NDR_SCALARS|NDR_BUFFERS, r->info7));
- }
- break;
-
- case 100:
- if (r->info100) {
- NDR_CHECK(ndr_push_dfs_Info100(ndr, NDR_SCALARS|NDR_BUFFERS, r->info100));
- }
- break;
-
- case 101:
- if (r->info101) {
- NDR_CHECK(ndr_push_dfs_Info101(ndr, NDR_SCALARS, r->info101));
- }
- break;
-
- case 102:
- if (r->info102) {
- NDR_CHECK(ndr_push_dfs_Info102(ndr, NDR_SCALARS, r->info102));
- }
- break;
-
- case 103:
- if (r->info103) {
- NDR_CHECK(ndr_push_dfs_Info103(ndr, NDR_SCALARS, r->info103));
- }
- break;
-
- case 104:
- if (r->info104) {
- NDR_CHECK(ndr_push_dfs_Info104(ndr, NDR_SCALARS, r->info104));
- }
- break;
-
- case 105:
- if (r->info105) {
- NDR_CHECK(ndr_push_dfs_Info105(ndr, NDR_SCALARS|NDR_BUFFERS, r->info105));
- }
- break;
-
- case 106:
- if (r->info106) {
- NDR_CHECK(ndr_push_dfs_Info106(ndr, NDR_SCALARS, r->info106));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Info(struct ndr_pull *ndr, int ndr_flags, union dfs_Info *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info0_0;
- TALLOC_CTX *_mem_save_info1_0;
- TALLOC_CTX *_mem_save_info2_0;
- TALLOC_CTX *_mem_save_info3_0;
- TALLOC_CTX *_mem_save_info4_0;
- TALLOC_CTX *_mem_save_info5_0;
- TALLOC_CTX *_mem_save_info6_0;
- TALLOC_CTX *_mem_save_info7_0;
- TALLOC_CTX *_mem_save_info100_0;
- TALLOC_CTX *_mem_save_info101_0;
- TALLOC_CTX *_mem_save_info102_0;
- TALLOC_CTX *_mem_save_info103_0;
- TALLOC_CTX *_mem_save_info104_0;
- TALLOC_CTX *_mem_save_info105_0;
- TALLOC_CTX *_mem_save_info106_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_info0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info0));
- if (_ptr_info0) {
- NDR_PULL_ALLOC(ndr, r->info0);
- } else {
- r->info0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_info2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
- if (_ptr_info2) {
- NDR_PULL_ALLOC(ndr, r->info2);
- } else {
- r->info2 = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_info3;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
- if (_ptr_info3) {
- NDR_PULL_ALLOC(ndr, r->info3);
- } else {
- r->info3 = NULL;
- }
- break; }
-
- case 4: {
- uint32_t _ptr_info4;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info4));
- if (_ptr_info4) {
- NDR_PULL_ALLOC(ndr, r->info4);
- } else {
- r->info4 = NULL;
- }
- break; }
-
- case 5: {
- uint32_t _ptr_info5;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info5));
- if (_ptr_info5) {
- NDR_PULL_ALLOC(ndr, r->info5);
- } else {
- r->info5 = NULL;
- }
- break; }
-
- case 6: {
- uint32_t _ptr_info6;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info6));
- if (_ptr_info6) {
- NDR_PULL_ALLOC(ndr, r->info6);
- } else {
- r->info6 = NULL;
- }
- break; }
-
- case 7: {
- uint32_t _ptr_info7;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info7));
- if (_ptr_info7) {
- NDR_PULL_ALLOC(ndr, r->info7);
- } else {
- r->info7 = NULL;
- }
- break; }
-
- case 100: {
- uint32_t _ptr_info100;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info100));
- if (_ptr_info100) {
- NDR_PULL_ALLOC(ndr, r->info100);
- } else {
- r->info100 = NULL;
- }
- break; }
-
- case 101: {
- uint32_t _ptr_info101;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info101));
- if (_ptr_info101) {
- NDR_PULL_ALLOC(ndr, r->info101);
- } else {
- r->info101 = NULL;
- }
- break; }
-
- case 102: {
- uint32_t _ptr_info102;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info102));
- if (_ptr_info102) {
- NDR_PULL_ALLOC(ndr, r->info102);
- } else {
- r->info102 = NULL;
- }
- break; }
-
- case 103: {
- uint32_t _ptr_info103;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info103));
- if (_ptr_info103) {
- NDR_PULL_ALLOC(ndr, r->info103);
- } else {
- r->info103 = NULL;
- }
- break; }
-
- case 104: {
- uint32_t _ptr_info104;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info104));
- if (_ptr_info104) {
- NDR_PULL_ALLOC(ndr, r->info104);
- } else {
- r->info104 = NULL;
- }
- break; }
-
- case 105: {
- uint32_t _ptr_info105;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info105));
- if (_ptr_info105) {
- NDR_PULL_ALLOC(ndr, r->info105);
- } else {
- r->info105 = NULL;
- }
- break; }
-
- case 106: {
- uint32_t _ptr_info106;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info106));
- if (_ptr_info106) {
- NDR_PULL_ALLOC(ndr, r->info106);
- } else {
- r->info106 = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->info0) {
- _mem_save_info0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info0, 0);
- NDR_CHECK(ndr_pull_dfs_Info0(ndr, NDR_SCALARS, r->info0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info0_0, 0);
- }
- break;
-
- case 1:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_dfs_Info1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- case 2:
- if (r->info2) {
- _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
- NDR_CHECK(ndr_pull_dfs_Info2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
- }
- break;
-
- case 3:
- if (r->info3) {
- _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
- NDR_CHECK(ndr_pull_dfs_Info3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
- }
- break;
-
- case 4:
- if (r->info4) {
- _mem_save_info4_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info4, 0);
- NDR_CHECK(ndr_pull_dfs_Info4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info4_0, 0);
- }
- break;
-
- case 5:
- if (r->info5) {
- _mem_save_info5_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info5, 0);
- NDR_CHECK(ndr_pull_dfs_Info5(ndr, NDR_SCALARS|NDR_BUFFERS, r->info5));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info5_0, 0);
- }
- break;
-
- case 6:
- if (r->info6) {
- _mem_save_info6_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info6, 0);
- NDR_CHECK(ndr_pull_dfs_Info6(ndr, NDR_SCALARS|NDR_BUFFERS, r->info6));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info6_0, 0);
- }
- break;
-
- case 7:
- if (r->info7) {
- _mem_save_info7_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info7, 0);
- NDR_CHECK(ndr_pull_dfs_Info7(ndr, NDR_SCALARS|NDR_BUFFERS, r->info7));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info7_0, 0);
- }
- break;
-
- case 100:
- if (r->info100) {
- _mem_save_info100_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info100, 0);
- NDR_CHECK(ndr_pull_dfs_Info100(ndr, NDR_SCALARS|NDR_BUFFERS, r->info100));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info100_0, 0);
- }
- break;
-
- case 101:
- if (r->info101) {
- _mem_save_info101_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info101, 0);
- NDR_CHECK(ndr_pull_dfs_Info101(ndr, NDR_SCALARS, r->info101));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info101_0, 0);
- }
- break;
-
- case 102:
- if (r->info102) {
- _mem_save_info102_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info102, 0);
- NDR_CHECK(ndr_pull_dfs_Info102(ndr, NDR_SCALARS, r->info102));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info102_0, 0);
- }
- break;
-
- case 103:
- if (r->info103) {
- _mem_save_info103_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info103, 0);
- NDR_CHECK(ndr_pull_dfs_Info103(ndr, NDR_SCALARS, r->info103));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info103_0, 0);
- }
- break;
-
- case 104:
- if (r->info104) {
- _mem_save_info104_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info104, 0);
- NDR_CHECK(ndr_pull_dfs_Info104(ndr, NDR_SCALARS, r->info104));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info104_0, 0);
- }
- break;
-
- case 105:
- if (r->info105) {
- _mem_save_info105_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info105, 0);
- NDR_CHECK(ndr_pull_dfs_Info105(ndr, NDR_SCALARS|NDR_BUFFERS, r->info105));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info105_0, 0);
- }
- break;
-
- case 106:
- if (r->info106) {
- _mem_save_info106_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info106, 0);
- NDR_CHECK(ndr_pull_dfs_Info106(ndr, NDR_SCALARS, r->info106));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info106_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Info(struct ndr_print *ndr, const char *name, const union dfs_Info *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "dfs_Info");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "info0", r->info0);
- ndr->depth++;
- if (r->info0) {
- ndr_print_dfs_Info0(ndr, "info0", r->info0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_dfs_Info1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "info2", r->info2);
- ndr->depth++;
- if (r->info2) {
- ndr_print_dfs_Info2(ndr, "info2", r->info2);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "info3", r->info3);
- ndr->depth++;
- if (r->info3) {
- ndr_print_dfs_Info3(ndr, "info3", r->info3);
- }
- ndr->depth--;
- break;
-
- case 4:
- ndr_print_ptr(ndr, "info4", r->info4);
- ndr->depth++;
- if (r->info4) {
- ndr_print_dfs_Info4(ndr, "info4", r->info4);
- }
- ndr->depth--;
- break;
-
- case 5:
- ndr_print_ptr(ndr, "info5", r->info5);
- ndr->depth++;
- if (r->info5) {
- ndr_print_dfs_Info5(ndr, "info5", r->info5);
- }
- ndr->depth--;
- break;
-
- case 6:
- ndr_print_ptr(ndr, "info6", r->info6);
- ndr->depth++;
- if (r->info6) {
- ndr_print_dfs_Info6(ndr, "info6", r->info6);
- }
- ndr->depth--;
- break;
-
- case 7:
- ndr_print_ptr(ndr, "info7", r->info7);
- ndr->depth++;
- if (r->info7) {
- ndr_print_dfs_Info7(ndr, "info7", r->info7);
- }
- ndr->depth--;
- break;
-
- case 100:
- ndr_print_ptr(ndr, "info100", r->info100);
- ndr->depth++;
- if (r->info100) {
- ndr_print_dfs_Info100(ndr, "info100", r->info100);
- }
- ndr->depth--;
- break;
-
- case 101:
- ndr_print_ptr(ndr, "info101", r->info101);
- ndr->depth++;
- if (r->info101) {
- ndr_print_dfs_Info101(ndr, "info101", r->info101);
- }
- ndr->depth--;
- break;
-
- case 102:
- ndr_print_ptr(ndr, "info102", r->info102);
- ndr->depth++;
- if (r->info102) {
- ndr_print_dfs_Info102(ndr, "info102", r->info102);
- }
- ndr->depth--;
- break;
-
- case 103:
- ndr_print_ptr(ndr, "info103", r->info103);
- ndr->depth++;
- if (r->info103) {
- ndr_print_dfs_Info103(ndr, "info103", r->info103);
- }
- ndr->depth--;
- break;
-
- case 104:
- ndr_print_ptr(ndr, "info104", r->info104);
- ndr->depth++;
- if (r->info104) {
- ndr_print_dfs_Info104(ndr, "info104", r->info104);
- }
- ndr->depth--;
- break;
-
- case 105:
- ndr_print_ptr(ndr, "info105", r->info105);
- ndr->depth++;
- if (r->info105) {
- ndr_print_dfs_Info105(ndr, "info105", r->info105);
- }
- ndr->depth--;
- break;
-
- case 106:
- ndr_print_ptr(ndr, "info106", r->info106);
- ndr->depth++;
- if (r->info106) {
- ndr_print_dfs_Info106(ndr, "info106", r->info106);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_dfs_EnumArray1(struct ndr_push *ndr, int ndr_flags, const struct dfs_EnumArray1 *r)
-{
- uint32_t cntr_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->s));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info1(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info1(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumArray1(struct ndr_pull *ndr, int ndr_flags, struct dfs_EnumArray1 *r)
-{
- uint32_t _ptr_s;
- uint32_t cntr_s_1;
- TALLOC_CTX *_mem_save_s_0;
- TALLOC_CTX *_mem_save_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_s));
- if (_ptr_s) {
- NDR_PULL_ALLOC(ndr, r->s);
- } else {
- r->s = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- _mem_save_s_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->s));
- NDR_PULL_ALLOC_N(ndr, r->s, ndr_get_array_size(ndr, &r->s));
- _mem_save_s_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info1(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info1(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_0, 0);
- }
- if (r->s) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumArray1(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray1 *r)
-{
- uint32_t cntr_s_1;
- ndr_print_struct(ndr, name, "dfs_EnumArray1");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "s", r->s);
- ndr->depth++;
- if (r->s) {
- ndr->print(ndr, "%s: ARRAY(%d)", "s", r->count);
- ndr->depth++;
- for (cntr_s_1=0;cntr_s_1<r->count;cntr_s_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_s_1);
- if (idx_1) {
- ndr_print_dfs_Info1(ndr, "s", &r->s[cntr_s_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_EnumArray2(struct ndr_push *ndr, int ndr_flags, const struct dfs_EnumArray2 *r)
-{
- uint32_t cntr_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->s));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info2(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info2(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumArray2(struct ndr_pull *ndr, int ndr_flags, struct dfs_EnumArray2 *r)
-{
- uint32_t _ptr_s;
- uint32_t cntr_s_1;
- TALLOC_CTX *_mem_save_s_0;
- TALLOC_CTX *_mem_save_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_s));
- if (_ptr_s) {
- NDR_PULL_ALLOC(ndr, r->s);
- } else {
- r->s = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- _mem_save_s_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->s));
- NDR_PULL_ALLOC_N(ndr, r->s, ndr_get_array_size(ndr, &r->s));
- _mem_save_s_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info2(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info2(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_0, 0);
- }
- if (r->s) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumArray2(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray2 *r)
-{
- uint32_t cntr_s_1;
- ndr_print_struct(ndr, name, "dfs_EnumArray2");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "s", r->s);
- ndr->depth++;
- if (r->s) {
- ndr->print(ndr, "%s: ARRAY(%d)", "s", r->count);
- ndr->depth++;
- for (cntr_s_1=0;cntr_s_1<r->count;cntr_s_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_s_1);
- if (idx_1) {
- ndr_print_dfs_Info2(ndr, "s", &r->s[cntr_s_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_EnumArray3(struct ndr_push *ndr, int ndr_flags, const struct dfs_EnumArray3 *r)
-{
- uint32_t cntr_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->s));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info3(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info3(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumArray3(struct ndr_pull *ndr, int ndr_flags, struct dfs_EnumArray3 *r)
-{
- uint32_t _ptr_s;
- uint32_t cntr_s_1;
- TALLOC_CTX *_mem_save_s_0;
- TALLOC_CTX *_mem_save_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_s));
- if (_ptr_s) {
- NDR_PULL_ALLOC(ndr, r->s);
- } else {
- r->s = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- _mem_save_s_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->s));
- NDR_PULL_ALLOC_N(ndr, r->s, ndr_get_array_size(ndr, &r->s));
- _mem_save_s_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info3(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info3(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_0, 0);
- }
- if (r->s) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumArray3(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray3 *r)
-{
- uint32_t cntr_s_1;
- ndr_print_struct(ndr, name, "dfs_EnumArray3");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "s", r->s);
- ndr->depth++;
- if (r->s) {
- ndr->print(ndr, "%s: ARRAY(%d)", "s", r->count);
- ndr->depth++;
- for (cntr_s_1=0;cntr_s_1<r->count;cntr_s_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_s_1);
- if (idx_1) {
- ndr_print_dfs_Info3(ndr, "s", &r->s[cntr_s_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_EnumArray4(struct ndr_push *ndr, int ndr_flags, const struct dfs_EnumArray4 *r)
-{
- uint32_t cntr_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->s));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info4(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info4(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumArray4(struct ndr_pull *ndr, int ndr_flags, struct dfs_EnumArray4 *r)
-{
- uint32_t _ptr_s;
- uint32_t cntr_s_1;
- TALLOC_CTX *_mem_save_s_0;
- TALLOC_CTX *_mem_save_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_s));
- if (_ptr_s) {
- NDR_PULL_ALLOC(ndr, r->s);
- } else {
- r->s = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- _mem_save_s_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->s));
- NDR_PULL_ALLOC_N(ndr, r->s, ndr_get_array_size(ndr, &r->s));
- _mem_save_s_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info4(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info4(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_0, 0);
- }
- if (r->s) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumArray4(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray4 *r)
-{
- uint32_t cntr_s_1;
- ndr_print_struct(ndr, name, "dfs_EnumArray4");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "s", r->s);
- ndr->depth++;
- if (r->s) {
- ndr->print(ndr, "%s: ARRAY(%d)", "s", r->count);
- ndr->depth++;
- for (cntr_s_1=0;cntr_s_1<r->count;cntr_s_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_s_1);
- if (idx_1) {
- ndr_print_dfs_Info4(ndr, "s", &r->s[cntr_s_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_EnumArray200(struct ndr_push *ndr, int ndr_flags, const struct dfs_EnumArray200 *r)
-{
- uint32_t cntr_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->s));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info200(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info200(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumArray200(struct ndr_pull *ndr, int ndr_flags, struct dfs_EnumArray200 *r)
-{
- uint32_t _ptr_s;
- uint32_t cntr_s_1;
- TALLOC_CTX *_mem_save_s_0;
- TALLOC_CTX *_mem_save_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_s));
- if (_ptr_s) {
- NDR_PULL_ALLOC(ndr, r->s);
- } else {
- r->s = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- _mem_save_s_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->s));
- NDR_PULL_ALLOC_N(ndr, r->s, ndr_get_array_size(ndr, &r->s));
- _mem_save_s_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info200(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info200(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_0, 0);
- }
- if (r->s) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumArray200(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray200 *r)
-{
- uint32_t cntr_s_1;
- ndr_print_struct(ndr, name, "dfs_EnumArray200");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "s", r->s);
- ndr->depth++;
- if (r->s) {
- ndr->print(ndr, "%s: ARRAY(%d)", "s", r->count);
- ndr->depth++;
- for (cntr_s_1=0;cntr_s_1<r->count;cntr_s_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_s_1);
- if (idx_1) {
- ndr_print_dfs_Info200(ndr, "s", &r->s[cntr_s_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_EnumArray300(struct ndr_push *ndr, int ndr_flags, const struct dfs_EnumArray300 *r)
-{
- uint32_t cntr_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->s));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info300(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_push_dfs_Info300(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumArray300(struct ndr_pull *ndr, int ndr_flags, struct dfs_EnumArray300 *r)
-{
- uint32_t _ptr_s;
- uint32_t cntr_s_1;
- TALLOC_CTX *_mem_save_s_0;
- TALLOC_CTX *_mem_save_s_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_s));
- if (_ptr_s) {
- NDR_PULL_ALLOC(ndr, r->s);
- } else {
- r->s = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->s) {
- _mem_save_s_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->s));
- NDR_PULL_ALLOC_N(ndr, r->s, ndr_get_array_size(ndr, &r->s));
- _mem_save_s_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->s, 0);
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info300(ndr, NDR_SCALARS, &r->s[cntr_s_1]));
- }
- for (cntr_s_1 = 0; cntr_s_1 < r->count; cntr_s_1++) {
- NDR_CHECK(ndr_pull_dfs_Info300(ndr, NDR_BUFFERS, &r->s[cntr_s_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s_0, 0);
- }
- if (r->s) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumArray300(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray300 *r)
-{
- uint32_t cntr_s_1;
- ndr_print_struct(ndr, name, "dfs_EnumArray300");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "s", r->s);
- ndr->depth++;
- if (r->s) {
- ndr->print(ndr, "%s: ARRAY(%d)", "s", r->count);
- ndr->depth++;
- for (cntr_s_1=0;cntr_s_1<r->count;cntr_s_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_s_1);
- if (idx_1) {
- ndr_print_dfs_Info300(ndr, "s", &r->s[cntr_s_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_EnumInfo(struct ndr_push *ndr, int ndr_flags, const union dfs_EnumInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
- break;
-
- case 4:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info4));
- break;
-
- case 200:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info200));
- break;
-
- case 300:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info300));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 1:
- if (r->info1) {
- NDR_CHECK(ndr_push_dfs_EnumArray1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- }
- break;
-
- case 2:
- if (r->info2) {
- NDR_CHECK(ndr_push_dfs_EnumArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
- }
- break;
-
- case 3:
- if (r->info3) {
- NDR_CHECK(ndr_push_dfs_EnumArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
- }
- break;
-
- case 4:
- if (r->info4) {
- NDR_CHECK(ndr_push_dfs_EnumArray4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
- }
- break;
-
- case 200:
- if (r->info200) {
- NDR_CHECK(ndr_push_dfs_EnumArray200(ndr, NDR_SCALARS|NDR_BUFFERS, r->info200));
- }
- break;
-
- case 300:
- if (r->info300) {
- NDR_CHECK(ndr_push_dfs_EnumArray300(ndr, NDR_SCALARS|NDR_BUFFERS, r->info300));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumInfo(struct ndr_pull *ndr, int ndr_flags, union dfs_EnumInfo *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info1_0;
- TALLOC_CTX *_mem_save_info2_0;
- TALLOC_CTX *_mem_save_info3_0;
- TALLOC_CTX *_mem_save_info4_0;
- TALLOC_CTX *_mem_save_info200_0;
- TALLOC_CTX *_mem_save_info300_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 1: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_info2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
- if (_ptr_info2) {
- NDR_PULL_ALLOC(ndr, r->info2);
- } else {
- r->info2 = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_info3;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
- if (_ptr_info3) {
- NDR_PULL_ALLOC(ndr, r->info3);
- } else {
- r->info3 = NULL;
- }
- break; }
-
- case 4: {
- uint32_t _ptr_info4;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info4));
- if (_ptr_info4) {
- NDR_PULL_ALLOC(ndr, r->info4);
- } else {
- r->info4 = NULL;
- }
- break; }
-
- case 200: {
- uint32_t _ptr_info200;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info200));
- if (_ptr_info200) {
- NDR_PULL_ALLOC(ndr, r->info200);
- } else {
- r->info200 = NULL;
- }
- break; }
-
- case 300: {
- uint32_t _ptr_info300;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info300));
- if (_ptr_info300) {
- NDR_PULL_ALLOC(ndr, r->info300);
- } else {
- r->info300 = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 1:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_dfs_EnumArray1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- case 2:
- if (r->info2) {
- _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
- NDR_CHECK(ndr_pull_dfs_EnumArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
- }
- break;
-
- case 3:
- if (r->info3) {
- _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
- NDR_CHECK(ndr_pull_dfs_EnumArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
- }
- break;
-
- case 4:
- if (r->info4) {
- _mem_save_info4_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info4, 0);
- NDR_CHECK(ndr_pull_dfs_EnumArray4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info4_0, 0);
- }
- break;
-
- case 200:
- if (r->info200) {
- _mem_save_info200_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info200, 0);
- NDR_CHECK(ndr_pull_dfs_EnumArray200(ndr, NDR_SCALARS|NDR_BUFFERS, r->info200));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info200_0, 0);
- }
- break;
-
- case 300:
- if (r->info300) {
- _mem_save_info300_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info300, 0);
- NDR_CHECK(ndr_pull_dfs_EnumArray300(ndr, NDR_SCALARS|NDR_BUFFERS, r->info300));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info300_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumInfo(struct ndr_print *ndr, const char *name, const union dfs_EnumInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "dfs_EnumInfo");
- switch (level) {
- case 1:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_dfs_EnumArray1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "info2", r->info2);
- ndr->depth++;
- if (r->info2) {
- ndr_print_dfs_EnumArray2(ndr, "info2", r->info2);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "info3", r->info3);
- ndr->depth++;
- if (r->info3) {
- ndr_print_dfs_EnumArray3(ndr, "info3", r->info3);
- }
- ndr->depth--;
- break;
-
- case 4:
- ndr_print_ptr(ndr, "info4", r->info4);
- ndr->depth++;
- if (r->info4) {
- ndr_print_dfs_EnumArray4(ndr, "info4", r->info4);
- }
- ndr->depth--;
- break;
-
- case 200:
- ndr_print_ptr(ndr, "info200", r->info200);
- ndr->depth++;
- if (r->info200) {
- ndr_print_dfs_EnumArray200(ndr, "info200", r->info200);
- }
- ndr->depth--;
- break;
-
- case 300:
- ndr_print_ptr(ndr, "info300", r->info300);
- ndr->depth++;
- if (r->info300) {
- ndr_print_dfs_EnumArray300(ndr, "info300", r->info300);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_dfs_EnumStruct(struct ndr_push *ndr, int ndr_flags, const struct dfs_EnumStruct *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->e, r->level));
- NDR_CHECK(ndr_push_dfs_EnumInfo(ndr, NDR_SCALARS, &r->e));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_dfs_EnumInfo(ndr, NDR_BUFFERS, &r->e));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_EnumStruct(struct ndr_pull *ndr, int ndr_flags, struct dfs_EnumStruct *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->e, r->level));
- NDR_CHECK(ndr_pull_dfs_EnumInfo(ndr, NDR_SCALARS, &r->e));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_dfs_EnumInfo(ndr, NDR_BUFFERS, &r->e));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumStruct(struct ndr_print *ndr, const char *name, const struct dfs_EnumStruct *r)
-{
- ndr_print_struct(ndr, name, "dfs_EnumStruct");
- ndr->depth++;
- ndr_print_uint32(ndr, "level", r->level);
- ndr_print_set_switch_value(ndr, &r->e, r->level);
- ndr_print_dfs_EnumInfo(ndr, "e", &r->e);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_UnknownStruct(struct ndr_push *ndr, int ndr_flags, const struct dfs_UnknownStruct *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown2));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->unknown2) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown2, ndr_charset_length(r->unknown2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_UnknownStruct(struct ndr_pull *ndr, int ndr_flags, struct dfs_UnknownStruct *r)
-{
- uint32_t _ptr_unknown2;
- TALLOC_CTX *_mem_save_unknown2_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2));
- if (_ptr_unknown2) {
- NDR_PULL_ALLOC(ndr, r->unknown2);
- } else {
- r->unknown2 = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->unknown2) {
- _mem_save_unknown2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->unknown2, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown2));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown2));
- if (ndr_get_array_length(ndr, &r->unknown2) > ndr_get_array_size(ndr, &r->unknown2)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown2), ndr_get_array_length(ndr, &r->unknown2));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown2, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_UnknownStruct(struct ndr_print *ndr, const char *name, const struct dfs_UnknownStruct *r)
-{
- ndr_print_struct(ndr, name, "dfs_UnknownStruct");
- ndr->depth++;
- ndr_print_uint32(ndr, "unknown1", r->unknown1);
- ndr_print_ptr(ndr, "unknown2", r->unknown2);
- ndr->depth++;
- if (r->unknown2) {
- ndr_print_string(ndr, "unknown2", r->unknown2);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_dfs_GetManagerVersion(struct ndr_push *ndr, int flags, const struct dfs_GetManagerVersion *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- if (r->out.version == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dfs_ManagerVersion(ndr, NDR_SCALARS, *r->out.version));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_dfs_GetManagerVersion(struct ndr_pull *ndr, int flags, struct dfs_GetManagerVersion *r)
-{
- TALLOC_CTX *_mem_save_version_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_PULL_ALLOC(ndr, r->out.version);
- ZERO_STRUCTP(r->out.version);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.version);
- }
- _mem_save_version_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.version, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dfs_ManagerVersion(ndr, NDR_SCALARS, r->out.version));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_version_0, LIBNDR_FLAG_REF_ALLOC);
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_GetManagerVersion(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetManagerVersion *r)
-{
- ndr_print_struct(ndr, name, "dfs_GetManagerVersion");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_GetManagerVersion");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_GetManagerVersion");
- ndr->depth++;
- ndr_print_ptr(ndr, "version", r->out.version);
- ndr->depth++;
- ndr_print_dfs_ManagerVersion(ndr, "version", *r->out.version);
- ndr->depth--;
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Add(struct ndr_push *ndr, int flags, const struct dfs_Add *r)
-{
- if (flags & NDR_IN) {
- if (r->in.path == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path, ndr_charset_length(r->in.path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- if (r->in.server == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.share));
- if (r->in.share) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share, ndr_charset_length(r->in.share, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.comment));
- if (r->in.comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.comment, ndr_charset_length(r->in.comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Add(struct ndr_pull *ndr, int flags, struct dfs_Add *r)
-{
- uint32_t _ptr_share;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_share_0;
- TALLOC_CTX *_mem_save_comment_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path));
- if (ndr_get_array_length(ndr, &r->in.path) > ndr_get_array_size(ndr, &r->in.path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.path), ndr_get_array_length(ndr, &r->in.path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
- if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server), ndr_get_array_length(ndr, &r->in.server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_share));
- if (_ptr_share) {
- NDR_PULL_ALLOC(ndr, r->in.share);
- } else {
- r->in.share = NULL;
- }
- if (r->in.share) {
- _mem_save_share_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.share, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share));
- if (ndr_get_array_length(ndr, &r->in.share) > ndr_get_array_size(ndr, &r->in.share)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share), ndr_get_array_length(ndr, &r->in.share));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_share_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->in.comment);
- } else {
- r->in.comment = NULL;
- }
- if (r->in.comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.comment));
- if (ndr_get_array_length(ndr, &r->in.comment) > ndr_get_array_size(ndr, &r->in.comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.comment), ndr_get_array_length(ndr, &r->in.comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.comment, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Add(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Add *r)
-{
- ndr_print_struct(ndr, name, "dfs_Add");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_Add");
- ndr->depth++;
- ndr_print_ptr(ndr, "path", r->in.path);
- ndr->depth++;
- ndr_print_string(ndr, "path", r->in.path);
- ndr->depth--;
- ndr_print_ptr(ndr, "server", r->in.server);
- ndr->depth++;
- ndr_print_string(ndr, "server", r->in.server);
- ndr->depth--;
- ndr_print_ptr(ndr, "share", r->in.share);
- ndr->depth++;
- if (r->in.share) {
- ndr_print_string(ndr, "share", r->in.share);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "comment", r->in.comment);
- ndr->depth++;
- if (r->in.comment) {
- ndr_print_string(ndr, "comment", r->in.comment);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_Add");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Remove(struct ndr_push *ndr, int flags, const struct dfs_Remove *r)
-{
- if (flags & NDR_IN) {
- if (r->in.dfs_entry_path == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dfs_entry_path, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
- if (r->in.servername) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.sharename));
- if (r->in.sharename) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.sharename, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.sharename, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.sharename, ndr_charset_length(r->in.sharename, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Remove(struct ndr_pull *ndr, int flags, struct dfs_Remove *r)
-{
- uint32_t _ptr_servername;
- uint32_t _ptr_sharename;
- TALLOC_CTX *_mem_save_servername_0;
- TALLOC_CTX *_mem_save_sharename_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dfs_entry_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dfs_entry_path));
- if (ndr_get_array_length(ndr, &r->in.dfs_entry_path) > ndr_get_array_size(ndr, &r->in.dfs_entry_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dfs_entry_path), ndr_get_array_length(ndr, &r->in.dfs_entry_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dfs_entry_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dfs_entry_path, ndr_get_array_length(ndr, &r->in.dfs_entry_path), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
- if (_ptr_servername) {
- NDR_PULL_ALLOC(ndr, r->in.servername);
- } else {
- r->in.servername = NULL;
- }
- if (r->in.servername) {
- _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sharename));
- if (_ptr_sharename) {
- NDR_PULL_ALLOC(ndr, r->in.sharename);
- } else {
- r->in.sharename = NULL;
- }
- if (r->in.sharename) {
- _mem_save_sharename_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sharename, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.sharename));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.sharename));
- if (ndr_get_array_length(ndr, &r->in.sharename) > ndr_get_array_size(ndr, &r->in.sharename)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.sharename), ndr_get_array_length(ndr, &r->in.sharename));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.sharename), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.sharename, ndr_get_array_length(ndr, &r->in.sharename), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sharename_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Remove(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Remove *r)
-{
- ndr_print_struct(ndr, name, "dfs_Remove");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_Remove");
- ndr->depth++;
- ndr_print_ptr(ndr, "dfs_entry_path", r->in.dfs_entry_path);
- ndr->depth++;
- ndr_print_string(ndr, "dfs_entry_path", r->in.dfs_entry_path);
- ndr->depth--;
- ndr_print_ptr(ndr, "servername", r->in.servername);
- ndr->depth++;
- if (r->in.servername) {
- ndr_print_string(ndr, "servername", r->in.servername);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sharename", r->in.sharename);
- ndr->depth++;
- if (r->in.sharename) {
- ndr_print_string(ndr, "sharename", r->in.sharename);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_Remove");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_SetInfo(struct ndr_push *ndr, int flags, const struct dfs_SetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dfs_entry_path, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
- if (r->in.servername) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.sharename));
- if (r->in.sharename) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.sharename, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.sharename, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.sharename, ndr_charset_length(r->in.sharename, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- if (r->in.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.info, r->in.level));
- NDR_CHECK(ndr_push_dfs_Info(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_SetInfo(struct ndr_pull *ndr, int flags, struct dfs_SetInfo *r)
-{
- uint32_t _ptr_servername;
- uint32_t _ptr_sharename;
- TALLOC_CTX *_mem_save_servername_0;
- TALLOC_CTX *_mem_save_sharename_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dfs_entry_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dfs_entry_path));
- if (ndr_get_array_length(ndr, &r->in.dfs_entry_path) > ndr_get_array_size(ndr, &r->in.dfs_entry_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dfs_entry_path), ndr_get_array_length(ndr, &r->in.dfs_entry_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dfs_entry_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dfs_entry_path, ndr_get_array_length(ndr, &r->in.dfs_entry_path), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
- if (_ptr_servername) {
- NDR_PULL_ALLOC(ndr, r->in.servername);
- } else {
- r->in.servername = NULL;
- }
- if (r->in.servername) {
- _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sharename));
- if (_ptr_sharename) {
- NDR_PULL_ALLOC(ndr, r->in.sharename);
- } else {
- r->in.sharename = NULL;
- }
- if (r->in.sharename) {
- _mem_save_sharename_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sharename, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.sharename));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.sharename));
- if (ndr_get_array_length(ndr, &r->in.sharename) > ndr_get_array_size(ndr, &r->in.sharename)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.sharename), ndr_get_array_length(ndr, &r->in.sharename));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.sharename), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.sharename, ndr_get_array_length(ndr, &r->in.sharename), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sharename_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_dfs_Info(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_SetInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetInfo *r)
-{
- ndr_print_struct(ndr, name, "dfs_SetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_SetInfo");
- ndr->depth++;
- ndr_print_string(ndr, "dfs_entry_path", r->in.dfs_entry_path);
- ndr_print_ptr(ndr, "servername", r->in.servername);
- ndr->depth++;
- if (r->in.servername) {
- ndr_print_string(ndr, "servername", r->in.servername);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sharename", r->in.sharename);
- ndr->depth++;
- if (r->in.sharename) {
- ndr_print_string(ndr, "sharename", r->in.sharename);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.info, r->in.level);
- ndr_print_dfs_Info(ndr, "info", r->in.info);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_SetInfo");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_GetInfo(struct ndr_push *ndr, int flags, const struct dfs_GetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dfs_entry_path, ndr_charset_length(r->in.dfs_entry_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
- if (r->in.servername) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.sharename));
- if (r->in.sharename) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.sharename, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.sharename, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.sharename, ndr_charset_length(r->in.sharename, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_dfs_Info(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_GetInfo(struct ndr_pull *ndr, int flags, struct dfs_GetInfo *r)
-{
- uint32_t _ptr_servername;
- uint32_t _ptr_sharename;
- TALLOC_CTX *_mem_save_servername_0;
- TALLOC_CTX *_mem_save_sharename_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dfs_entry_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dfs_entry_path));
- if (ndr_get_array_length(ndr, &r->in.dfs_entry_path) > ndr_get_array_size(ndr, &r->in.dfs_entry_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dfs_entry_path), ndr_get_array_length(ndr, &r->in.dfs_entry_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dfs_entry_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dfs_entry_path, ndr_get_array_length(ndr, &r->in.dfs_entry_path), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
- if (_ptr_servername) {
- NDR_PULL_ALLOC(ndr, r->in.servername);
- } else {
- r->in.servername = NULL;
- }
- if (r->in.servername) {
- _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sharename));
- if (_ptr_sharename) {
- NDR_PULL_ALLOC(ndr, r->in.sharename);
- } else {
- r->in.sharename = NULL;
- }
- if (r->in.sharename) {
- _mem_save_sharename_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sharename, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.sharename));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.sharename));
- if (ndr_get_array_length(ndr, &r->in.sharename) > ndr_get_array_size(ndr, &r->in.sharename)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.sharename), ndr_get_array_length(ndr, &r->in.sharename));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.sharename), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.sharename, ndr_get_array_length(ndr, &r->in.sharename), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sharename_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_dfs_Info(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_GetInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetInfo *r)
-{
- ndr_print_struct(ndr, name, "dfs_GetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_GetInfo");
- ndr->depth++;
- ndr_print_string(ndr, "dfs_entry_path", r->in.dfs_entry_path);
- ndr_print_ptr(ndr, "servername", r->in.servername);
- ndr->depth++;
- if (r->in.servername) {
- ndr_print_string(ndr, "servername", r->in.servername);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sharename", r->in.sharename);
- ndr->depth++;
- if (r->in.sharename) {
- ndr_print_string(ndr, "sharename", r->in.sharename);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_GetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_dfs_Info(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Enum(struct ndr_push *ndr, int flags, const struct dfs_Enum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bufsize));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
- if (r->in.info) {
- NDR_CHECK(ndr_push_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.total));
- if (r->in.total) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.total));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.total));
- if (r->out.total) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Enum(struct ndr_pull *ndr, int flags, struct dfs_Enum *r)
-{
- uint32_t _ptr_info;
- uint32_t _ptr_total;
- TALLOC_CTX *_mem_save_info_0;
- TALLOC_CTX *_mem_save_total_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bufsize));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- } else {
- r->in.info = NULL;
- }
- if (r->in.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
- NDR_CHECK(ndr_pull_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_total));
- if (_ptr_total) {
- NDR_PULL_ALLOC(ndr, r->in.total);
- } else {
- r->in.total = NULL;
- }
- if (r->in.total) {
- _mem_save_total_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.total, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.total));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_total));
- if (_ptr_total) {
- NDR_PULL_ALLOC(ndr, r->out.total);
- } else {
- r->out.total = NULL;
- }
- if (r->out.total) {
- _mem_save_total_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.total, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Enum(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Enum *r)
-{
- ndr_print_struct(ndr, name, "dfs_Enum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_Enum");
- ndr->depth++;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_uint32(ndr, "bufsize", r->in.bufsize);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- if (r->in.info) {
- ndr_print_dfs_EnumStruct(ndr, "info", r->in.info);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "total", r->in.total);
- ndr->depth++;
- if (r->in.total) {
- ndr_print_uint32(ndr, "total", *r->in.total);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_Enum");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_dfs_EnumStruct(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "total", r->out.total);
- ndr->depth++;
- if (r->out.total) {
- ndr_print_uint32(ndr, "total", *r->out.total);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Rename(struct ndr_push *ndr, int flags, const struct dfs_Rename *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Rename(struct ndr_pull *ndr, int flags, struct dfs_Rename *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Rename(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Rename *r)
-{
- ndr_print_struct(ndr, name, "dfs_Rename");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_Rename");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_Rename");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Move(struct ndr_push *ndr, int flags, const struct dfs_Move *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Move(struct ndr_pull *ndr, int flags, struct dfs_Move *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Move(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Move *r)
-{
- ndr_print_struct(ndr, name, "dfs_Move");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_Move");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_Move");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_ManagerGetConfigInfo(struct ndr_push *ndr, int flags, const struct dfs_ManagerGetConfigInfo *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_ManagerGetConfigInfo(struct ndr_pull *ndr, int flags, struct dfs_ManagerGetConfigInfo *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_ManagerGetConfigInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerGetConfigInfo *r)
-{
- ndr_print_struct(ndr, name, "dfs_ManagerGetConfigInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_ManagerGetConfigInfo");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_ManagerGetConfigInfo");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_ManagerSendSiteInfo(struct ndr_push *ndr, int flags, const struct dfs_ManagerSendSiteInfo *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_ManagerSendSiteInfo(struct ndr_pull *ndr, int flags, struct dfs_ManagerSendSiteInfo *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_ManagerSendSiteInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerSendSiteInfo *r)
-{
- ndr_print_struct(ndr, name, "dfs_ManagerSendSiteInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_ManagerSendSiteInfo");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_ManagerSendSiteInfo");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_AddFtRoot(struct ndr_push *ndr, int flags, const struct dfs_AddFtRoot *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dns_servername, ndr_charset_length(r->in.dns_servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfsname, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfsname, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dfsname, ndr_charset_length(r->in.dfsname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.rootshare, ndr_charset_length(r->in.rootshare, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.comment, ndr_charset_length(r->in.comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_config_dn, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_config_dn, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dfs_config_dn, ndr_charset_length(r->in.dfs_config_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.unknown2));
- if (r->in.unknown2) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, *r->in.unknown2));
- if (*r->in.unknown2) {
- NDR_CHECK(ndr_push_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->in.unknown2));
- }
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.unknown2));
- if (r->out.unknown2) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.unknown2));
- if (*r->out.unknown2) {
- NDR_CHECK(ndr_push_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.unknown2));
- }
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_AddFtRoot(struct ndr_pull *ndr, int flags, struct dfs_AddFtRoot *r)
-{
- uint32_t _ptr_unknown2;
- TALLOC_CTX *_mem_save_unknown2_0;
- TALLOC_CTX *_mem_save_unknown2_1;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dns_servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dns_servername));
- if (ndr_get_array_length(ndr, &r->in.dns_servername) > ndr_get_array_size(ndr, &r->in.dns_servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dns_servername), ndr_get_array_length(ndr, &r->in.dns_servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dns_servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dns_servername, ndr_get_array_length(ndr, &r->in.dns_servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dfsname));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dfsname));
- if (ndr_get_array_length(ndr, &r->in.dfsname) > ndr_get_array_size(ndr, &r->in.dfsname)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dfsname), ndr_get_array_length(ndr, &r->in.dfsname));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dfsname), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dfsname, ndr_get_array_length(ndr, &r->in.dfsname), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.rootshare));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.rootshare));
- if (ndr_get_array_length(ndr, &r->in.rootshare) > ndr_get_array_size(ndr, &r->in.rootshare)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.rootshare), ndr_get_array_length(ndr, &r->in.rootshare));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.rootshare, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.comment));
- if (ndr_get_array_length(ndr, &r->in.comment) > ndr_get_array_size(ndr, &r->in.comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.comment), ndr_get_array_length(ndr, &r->in.comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.comment, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dfs_config_dn));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dfs_config_dn));
- if (ndr_get_array_length(ndr, &r->in.dfs_config_dn) > ndr_get_array_size(ndr, &r->in.dfs_config_dn)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dfs_config_dn), ndr_get_array_length(ndr, &r->in.dfs_config_dn));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dfs_config_dn), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dfs_config_dn, ndr_get_array_length(ndr, &r->in.dfs_config_dn), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2));
- if (_ptr_unknown2) {
- NDR_PULL_ALLOC(ndr, r->in.unknown2);
- } else {
- r->in.unknown2 = NULL;
- }
- if (r->in.unknown2) {
- _mem_save_unknown2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.unknown2, 0);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2));
- if (_ptr_unknown2) {
- NDR_PULL_ALLOC(ndr, *r->in.unknown2);
- } else {
- *r->in.unknown2 = NULL;
- }
- if (*r->in.unknown2) {
- _mem_save_unknown2_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, *r->in.unknown2, 0);
- NDR_CHECK(ndr_pull_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->in.unknown2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_1, 0);
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2));
- if (_ptr_unknown2) {
- NDR_PULL_ALLOC(ndr, r->out.unknown2);
- } else {
- r->out.unknown2 = NULL;
- }
- if (r->out.unknown2) {
- _mem_save_unknown2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.unknown2, 0);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2));
- if (_ptr_unknown2) {
- NDR_PULL_ALLOC(ndr, *r->out.unknown2);
- } else {
- *r->out.unknown2 = NULL;
- }
- if (*r->out.unknown2) {
- _mem_save_unknown2_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, *r->out.unknown2, 0);
- NDR_CHECK(ndr_pull_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.unknown2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_1, 0);
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_AddFtRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddFtRoot *r)
-{
- ndr_print_struct(ndr, name, "dfs_AddFtRoot");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_AddFtRoot");
- ndr->depth++;
- ndr_print_string(ndr, "servername", r->in.servername);
- ndr_print_string(ndr, "dns_servername", r->in.dns_servername);
- ndr_print_string(ndr, "dfsname", r->in.dfsname);
- ndr_print_string(ndr, "rootshare", r->in.rootshare);
- ndr_print_string(ndr, "comment", r->in.comment);
- ndr_print_string(ndr, "dfs_config_dn", r->in.dfs_config_dn);
- ndr_print_uint8(ndr, "unknown1", r->in.unknown1);
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr_print_ptr(ndr, "unknown2", r->in.unknown2);
- ndr->depth++;
- if (r->in.unknown2) {
- ndr_print_ptr(ndr, "unknown2", *r->in.unknown2);
- ndr->depth++;
- if (*r->in.unknown2) {
- ndr_print_dfs_UnknownStruct(ndr, "unknown2", *r->in.unknown2);
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_AddFtRoot");
- ndr->depth++;
- ndr_print_ptr(ndr, "unknown2", r->out.unknown2);
- ndr->depth++;
- if (r->out.unknown2) {
- ndr_print_ptr(ndr, "unknown2", *r->out.unknown2);
- ndr->depth++;
- if (*r->out.unknown2) {
- ndr_print_dfs_UnknownStruct(ndr, "unknown2", *r->out.unknown2);
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_RemoveFtRoot(struct ndr_push *ndr, int flags, const struct dfs_RemoveFtRoot *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dns_servername, ndr_charset_length(r->in.dns_servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfsname, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfsname, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dfsname, ndr_charset_length(r->in.dfsname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.rootshare, ndr_charset_length(r->in.rootshare, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.unknown));
- if (r->in.unknown) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, *r->in.unknown));
- if (*r->in.unknown) {
- NDR_CHECK(ndr_push_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->in.unknown));
- }
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.unknown));
- if (r->out.unknown) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.unknown));
- if (*r->out.unknown) {
- NDR_CHECK(ndr_push_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.unknown));
- }
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_RemoveFtRoot(struct ndr_pull *ndr, int flags, struct dfs_RemoveFtRoot *r)
-{
- uint32_t _ptr_unknown;
- TALLOC_CTX *_mem_save_unknown_0;
- TALLOC_CTX *_mem_save_unknown_1;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dns_servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dns_servername));
- if (ndr_get_array_length(ndr, &r->in.dns_servername) > ndr_get_array_size(ndr, &r->in.dns_servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dns_servername), ndr_get_array_length(ndr, &r->in.dns_servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dns_servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dns_servername, ndr_get_array_length(ndr, &r->in.dns_servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dfsname));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dfsname));
- if (ndr_get_array_length(ndr, &r->in.dfsname) > ndr_get_array_size(ndr, &r->in.dfsname)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dfsname), ndr_get_array_length(ndr, &r->in.dfsname));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dfsname), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dfsname, ndr_get_array_length(ndr, &r->in.dfsname), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.rootshare));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.rootshare));
- if (ndr_get_array_length(ndr, &r->in.rootshare) > ndr_get_array_size(ndr, &r->in.rootshare)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.rootshare), ndr_get_array_length(ndr, &r->in.rootshare));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.rootshare, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown));
- if (_ptr_unknown) {
- NDR_PULL_ALLOC(ndr, r->in.unknown);
- } else {
- r->in.unknown = NULL;
- }
- if (r->in.unknown) {
- _mem_save_unknown_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.unknown, 0);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown));
- if (_ptr_unknown) {
- NDR_PULL_ALLOC(ndr, *r->in.unknown);
- } else {
- *r->in.unknown = NULL;
- }
- if (*r->in.unknown) {
- _mem_save_unknown_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, *r->in.unknown, 0);
- NDR_CHECK(ndr_pull_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->in.unknown));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown_1, 0);
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown));
- if (_ptr_unknown) {
- NDR_PULL_ALLOC(ndr, r->out.unknown);
- } else {
- r->out.unknown = NULL;
- }
- if (r->out.unknown) {
- _mem_save_unknown_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.unknown, 0);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown));
- if (_ptr_unknown) {
- NDR_PULL_ALLOC(ndr, *r->out.unknown);
- } else {
- *r->out.unknown = NULL;
- }
- if (*r->out.unknown) {
- _mem_save_unknown_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, *r->out.unknown, 0);
- NDR_CHECK(ndr_pull_dfs_UnknownStruct(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.unknown));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown_1, 0);
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_RemoveFtRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_RemoveFtRoot *r)
-{
- ndr_print_struct(ndr, name, "dfs_RemoveFtRoot");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_RemoveFtRoot");
- ndr->depth++;
- ndr_print_string(ndr, "servername", r->in.servername);
- ndr_print_string(ndr, "dns_servername", r->in.dns_servername);
- ndr_print_string(ndr, "dfsname", r->in.dfsname);
- ndr_print_string(ndr, "rootshare", r->in.rootshare);
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr_print_ptr(ndr, "unknown", r->in.unknown);
- ndr->depth++;
- if (r->in.unknown) {
- ndr_print_ptr(ndr, "unknown", *r->in.unknown);
- ndr->depth++;
- if (*r->in.unknown) {
- ndr_print_dfs_UnknownStruct(ndr, "unknown", *r->in.unknown);
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_RemoveFtRoot");
- ndr->depth++;
- ndr_print_ptr(ndr, "unknown", r->out.unknown);
- ndr->depth++;
- if (r->out.unknown) {
- ndr_print_ptr(ndr, "unknown", *r->out.unknown);
- ndr->depth++;
- if (*r->out.unknown) {
- ndr_print_dfs_UnknownStruct(ndr, "unknown", *r->out.unknown);
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_AddStdRoot(struct ndr_push *ndr, int flags, const struct dfs_AddStdRoot *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.rootshare, ndr_charset_length(r->in.rootshare, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.comment, ndr_charset_length(r->in.comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_AddStdRoot(struct ndr_pull *ndr, int flags, struct dfs_AddStdRoot *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.rootshare));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.rootshare));
- if (ndr_get_array_length(ndr, &r->in.rootshare) > ndr_get_array_size(ndr, &r->in.rootshare)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.rootshare), ndr_get_array_length(ndr, &r->in.rootshare));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.rootshare, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.comment));
- if (ndr_get_array_length(ndr, &r->in.comment) > ndr_get_array_size(ndr, &r->in.comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.comment), ndr_get_array_length(ndr, &r->in.comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.comment, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_AddStdRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddStdRoot *r)
-{
- ndr_print_struct(ndr, name, "dfs_AddStdRoot");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_AddStdRoot");
- ndr->depth++;
- ndr_print_string(ndr, "servername", r->in.servername);
- ndr_print_string(ndr, "rootshare", r->in.rootshare);
- ndr_print_string(ndr, "comment", r->in.comment);
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_AddStdRoot");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_RemoveStdRoot(struct ndr_push *ndr, int flags, const struct dfs_RemoveStdRoot *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.rootshare, ndr_charset_length(r->in.rootshare, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_RemoveStdRoot(struct ndr_pull *ndr, int flags, struct dfs_RemoveStdRoot *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.rootshare));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.rootshare));
- if (ndr_get_array_length(ndr, &r->in.rootshare) > ndr_get_array_size(ndr, &r->in.rootshare)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.rootshare), ndr_get_array_length(ndr, &r->in.rootshare));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.rootshare, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_RemoveStdRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_RemoveStdRoot *r)
-{
- ndr_print_struct(ndr, name, "dfs_RemoveStdRoot");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_RemoveStdRoot");
- ndr->depth++;
- ndr_print_string(ndr, "servername", r->in.servername);
- ndr_print_string(ndr, "rootshare", r->in.rootshare);
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_RemoveStdRoot");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_ManagerInitialize(struct ndr_push *ndr, int flags, const struct dfs_ManagerInitialize *r)
-{
- if (flags & NDR_IN) {
- if (r->in.servername == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_ManagerInitialize(struct ndr_pull *ndr, int flags, struct dfs_ManagerInitialize *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_ManagerInitialize(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerInitialize *r)
-{
- ndr_print_struct(ndr, name, "dfs_ManagerInitialize");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_ManagerInitialize");
- ndr->depth++;
- ndr_print_ptr(ndr, "servername", r->in.servername);
- ndr->depth++;
- ndr_print_string(ndr, "servername", r->in.servername);
- ndr->depth--;
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_ManagerInitialize");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_AddStdRootForced(struct ndr_push *ndr, int flags, const struct dfs_AddStdRootForced *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.rootshare, ndr_charset_length(r->in.rootshare, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.comment, ndr_charset_length(r->in.comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.store, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.store, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.store, ndr_charset_length(r->in.store, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_AddStdRootForced(struct ndr_pull *ndr, int flags, struct dfs_AddStdRootForced *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.rootshare));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.rootshare));
- if (ndr_get_array_length(ndr, &r->in.rootshare) > ndr_get_array_size(ndr, &r->in.rootshare)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.rootshare), ndr_get_array_length(ndr, &r->in.rootshare));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.rootshare, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.comment));
- if (ndr_get_array_length(ndr, &r->in.comment) > ndr_get_array_size(ndr, &r->in.comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.comment), ndr_get_array_length(ndr, &r->in.comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.comment, ndr_get_array_length(ndr, &r->in.comment), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.store));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.store));
- if (ndr_get_array_length(ndr, &r->in.store) > ndr_get_array_size(ndr, &r->in.store)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.store), ndr_get_array_length(ndr, &r->in.store));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.store), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.store, ndr_get_array_length(ndr, &r->in.store), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_AddStdRootForced(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddStdRootForced *r)
-{
- ndr_print_struct(ndr, name, "dfs_AddStdRootForced");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_AddStdRootForced");
- ndr->depth++;
- ndr_print_string(ndr, "servername", r->in.servername);
- ndr_print_string(ndr, "rootshare", r->in.rootshare);
- ndr_print_string(ndr, "comment", r->in.comment);
- ndr_print_string(ndr, "store", r->in.store);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_AddStdRootForced");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_GetDcAddress(struct ndr_push *ndr, int flags, const struct dfs_GetDcAddress *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_GetDcAddress(struct ndr_pull *ndr, int flags, struct dfs_GetDcAddress *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_GetDcAddress(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetDcAddress *r)
-{
- ndr_print_struct(ndr, name, "dfs_GetDcAddress");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_GetDcAddress");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_GetDcAddress");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_SetDcAddress(struct ndr_push *ndr, int flags, const struct dfs_SetDcAddress *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_SetDcAddress(struct ndr_pull *ndr, int flags, struct dfs_SetDcAddress *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_SetDcAddress(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetDcAddress *r)
-{
- ndr_print_struct(ndr, name, "dfs_SetDcAddress");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_SetDcAddress");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_SetDcAddress");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_FlushFtTable(struct ndr_push *ndr, int flags, const struct dfs_FlushFtTable *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.rootshare, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.rootshare, ndr_charset_length(r->in.rootshare, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_FlushFtTable(struct ndr_pull *ndr, int flags, struct dfs_FlushFtTable *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
- if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.servername), ndr_get_array_length(ndr, &r->in.servername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.rootshare));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.rootshare));
- if (ndr_get_array_length(ndr, &r->in.rootshare) > ndr_get_array_size(ndr, &r->in.rootshare)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.rootshare), ndr_get_array_length(ndr, &r->in.rootshare));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.rootshare, ndr_get_array_length(ndr, &r->in.rootshare), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_FlushFtTable(struct ndr_print *ndr, const char *name, int flags, const struct dfs_FlushFtTable *r)
-{
- ndr_print_struct(ndr, name, "dfs_FlushFtTable");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_FlushFtTable");
- ndr->depth++;
- ndr_print_string(ndr, "servername", r->in.servername);
- ndr_print_string(ndr, "rootshare", r->in.rootshare);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_FlushFtTable");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Add2(struct ndr_push *ndr, int flags, const struct dfs_Add2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Add2(struct ndr_pull *ndr, int flags, struct dfs_Add2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Add2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Add2 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Add2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_Add2");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_Add2");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_Remove2(struct ndr_push *ndr, int flags, const struct dfs_Remove2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_Remove2(struct ndr_pull *ndr, int flags, struct dfs_Remove2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_Remove2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Remove2 *r)
-{
- ndr_print_struct(ndr, name, "dfs_Remove2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_Remove2");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_Remove2");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_dfs_EnumEx(struct ndr_push *ndr, int flags, const struct dfs_EnumEx *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dfs_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dfs_name, ndr_charset_length(r->in.dfs_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bufsize));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
- if (r->in.info) {
- NDR_CHECK(ndr_push_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.total));
- if (r->in.total) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.total));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.total));
- if (r->out.total) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_dfs_EnumEx(struct ndr_pull *ndr, int flags, struct dfs_EnumEx *r)
-{
- uint32_t _ptr_info;
- uint32_t _ptr_total;
- TALLOC_CTX *_mem_save_info_0;
- TALLOC_CTX *_mem_save_total_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dfs_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dfs_name));
- if (ndr_get_array_length(ndr, &r->in.dfs_name) > ndr_get_array_size(ndr, &r->in.dfs_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dfs_name), ndr_get_array_length(ndr, &r->in.dfs_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dfs_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dfs_name, ndr_get_array_length(ndr, &r->in.dfs_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bufsize));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- } else {
- r->in.info = NULL;
- }
- if (r->in.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
- NDR_CHECK(ndr_pull_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_total));
- if (_ptr_total) {
- NDR_PULL_ALLOC(ndr, r->in.total);
- } else {
- r->in.total = NULL;
- }
- if (r->in.total) {
- _mem_save_total_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.total, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.total));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_dfs_EnumStruct(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_total));
- if (_ptr_total) {
- NDR_PULL_ALLOC(ndr, r->out.total);
- } else {
- r->out.total = NULL;
- }
- if (r->out.total) {
- _mem_save_total_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.total, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_EnumEx(struct ndr_print *ndr, const char *name, int flags, const struct dfs_EnumEx *r)
-{
- ndr_print_struct(ndr, name, "dfs_EnumEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_EnumEx");
- ndr->depth++;
- ndr_print_string(ndr, "dfs_name", r->in.dfs_name);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_uint32(ndr, "bufsize", r->in.bufsize);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- if (r->in.info) {
- ndr_print_dfs_EnumStruct(ndr, "info", r->in.info);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "total", r->in.total);
- ndr->depth++;
- if (r->in.total) {
- ndr_print_uint32(ndr, "total", *r->in.total);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_EnumEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_dfs_EnumStruct(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "total", r->out.total);
- ndr->depth++;
- if (r->out.total) {
- ndr_print_uint32(ndr, "total", *r->out.total);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_dfs_SetInfo2(struct ndr_push *ndr, int flags, const struct dfs_SetInfo2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_dfs_SetInfo2(struct ndr_pull *ndr, int flags, struct dfs_SetInfo2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_dfs_SetInfo2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetInfo2 *r)
-{
- ndr_print_struct(ndr, name, "dfs_SetInfo2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "dfs_SetInfo2");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "dfs_SetInfo2");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call netdfs_calls[] = {
- {
- "dfs_GetManagerVersion",
- sizeof(struct dfs_GetManagerVersion),
- (ndr_push_flags_fn_t) ndr_push_dfs_GetManagerVersion,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_GetManagerVersion,
- (ndr_print_function_t) ndr_print_dfs_GetManagerVersion,
- False,
- },
- {
- "dfs_Add",
- sizeof(struct dfs_Add),
- (ndr_push_flags_fn_t) ndr_push_dfs_Add,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_Add,
- (ndr_print_function_t) ndr_print_dfs_Add,
- False,
- },
- {
- "dfs_Remove",
- sizeof(struct dfs_Remove),
- (ndr_push_flags_fn_t) ndr_push_dfs_Remove,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_Remove,
- (ndr_print_function_t) ndr_print_dfs_Remove,
- False,
- },
- {
- "dfs_SetInfo",
- sizeof(struct dfs_SetInfo),
- (ndr_push_flags_fn_t) ndr_push_dfs_SetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_SetInfo,
- (ndr_print_function_t) ndr_print_dfs_SetInfo,
- False,
- },
- {
- "dfs_GetInfo",
- sizeof(struct dfs_GetInfo),
- (ndr_push_flags_fn_t) ndr_push_dfs_GetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_GetInfo,
- (ndr_print_function_t) ndr_print_dfs_GetInfo,
- False,
- },
- {
- "dfs_Enum",
- sizeof(struct dfs_Enum),
- (ndr_push_flags_fn_t) ndr_push_dfs_Enum,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_Enum,
- (ndr_print_function_t) ndr_print_dfs_Enum,
- False,
- },
- {
- "dfs_Rename",
- sizeof(struct dfs_Rename),
- (ndr_push_flags_fn_t) ndr_push_dfs_Rename,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_Rename,
- (ndr_print_function_t) ndr_print_dfs_Rename,
- False,
- },
- {
- "dfs_Move",
- sizeof(struct dfs_Move),
- (ndr_push_flags_fn_t) ndr_push_dfs_Move,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_Move,
- (ndr_print_function_t) ndr_print_dfs_Move,
- False,
- },
- {
- "dfs_ManagerGetConfigInfo",
- sizeof(struct dfs_ManagerGetConfigInfo),
- (ndr_push_flags_fn_t) ndr_push_dfs_ManagerGetConfigInfo,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_ManagerGetConfigInfo,
- (ndr_print_function_t) ndr_print_dfs_ManagerGetConfigInfo,
- False,
- },
- {
- "dfs_ManagerSendSiteInfo",
- sizeof(struct dfs_ManagerSendSiteInfo),
- (ndr_push_flags_fn_t) ndr_push_dfs_ManagerSendSiteInfo,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_ManagerSendSiteInfo,
- (ndr_print_function_t) ndr_print_dfs_ManagerSendSiteInfo,
- False,
- },
- {
- "dfs_AddFtRoot",
- sizeof(struct dfs_AddFtRoot),
- (ndr_push_flags_fn_t) ndr_push_dfs_AddFtRoot,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_AddFtRoot,
- (ndr_print_function_t) ndr_print_dfs_AddFtRoot,
- False,
- },
- {
- "dfs_RemoveFtRoot",
- sizeof(struct dfs_RemoveFtRoot),
- (ndr_push_flags_fn_t) ndr_push_dfs_RemoveFtRoot,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_RemoveFtRoot,
- (ndr_print_function_t) ndr_print_dfs_RemoveFtRoot,
- False,
- },
- {
- "dfs_AddStdRoot",
- sizeof(struct dfs_AddStdRoot),
- (ndr_push_flags_fn_t) ndr_push_dfs_AddStdRoot,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_AddStdRoot,
- (ndr_print_function_t) ndr_print_dfs_AddStdRoot,
- False,
- },
- {
- "dfs_RemoveStdRoot",
- sizeof(struct dfs_RemoveStdRoot),
- (ndr_push_flags_fn_t) ndr_push_dfs_RemoveStdRoot,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_RemoveStdRoot,
- (ndr_print_function_t) ndr_print_dfs_RemoveStdRoot,
- False,
- },
- {
- "dfs_ManagerInitialize",
- sizeof(struct dfs_ManagerInitialize),
- (ndr_push_flags_fn_t) ndr_push_dfs_ManagerInitialize,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_ManagerInitialize,
- (ndr_print_function_t) ndr_print_dfs_ManagerInitialize,
- False,
- },
- {
- "dfs_AddStdRootForced",
- sizeof(struct dfs_AddStdRootForced),
- (ndr_push_flags_fn_t) ndr_push_dfs_AddStdRootForced,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_AddStdRootForced,
- (ndr_print_function_t) ndr_print_dfs_AddStdRootForced,
- False,
- },
- {
- "dfs_GetDcAddress",
- sizeof(struct dfs_GetDcAddress),
- (ndr_push_flags_fn_t) ndr_push_dfs_GetDcAddress,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_GetDcAddress,
- (ndr_print_function_t) ndr_print_dfs_GetDcAddress,
- False,
- },
- {
- "dfs_SetDcAddress",
- sizeof(struct dfs_SetDcAddress),
- (ndr_push_flags_fn_t) ndr_push_dfs_SetDcAddress,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_SetDcAddress,
- (ndr_print_function_t) ndr_print_dfs_SetDcAddress,
- False,
- },
- {
- "dfs_FlushFtTable",
- sizeof(struct dfs_FlushFtTable),
- (ndr_push_flags_fn_t) ndr_push_dfs_FlushFtTable,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_FlushFtTable,
- (ndr_print_function_t) ndr_print_dfs_FlushFtTable,
- False,
- },
- {
- "dfs_Add2",
- sizeof(struct dfs_Add2),
- (ndr_push_flags_fn_t) ndr_push_dfs_Add2,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_Add2,
- (ndr_print_function_t) ndr_print_dfs_Add2,
- False,
- },
- {
- "dfs_Remove2",
- sizeof(struct dfs_Remove2),
- (ndr_push_flags_fn_t) ndr_push_dfs_Remove2,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_Remove2,
- (ndr_print_function_t) ndr_print_dfs_Remove2,
- False,
- },
- {
- "dfs_EnumEx",
- sizeof(struct dfs_EnumEx),
- (ndr_push_flags_fn_t) ndr_push_dfs_EnumEx,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_EnumEx,
- (ndr_print_function_t) ndr_print_dfs_EnumEx,
- False,
- },
- {
- "dfs_SetInfo2",
- sizeof(struct dfs_SetInfo2),
- (ndr_push_flags_fn_t) ndr_push_dfs_SetInfo2,
- (ndr_pull_flags_fn_t) ndr_pull_dfs_SetInfo2,
- (ndr_print_function_t) ndr_print_dfs_SetInfo2,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const netdfs_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\netdfs]",
-};
-
-const struct dcerpc_endpoint_list netdfs_endpoints = {
- .count = 1,
- .names = netdfs_endpoint_strings
-};
-
-const char * const netdfs_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list netdfs_authservices = {
- .count = 1,
- .names = netdfs_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_netdfs = {
- .name = "netdfs",
- .syntax_id = {
- {0x4fc742e0,0x4a10,0x11cf,{0x82,0x73},{0x00,0xaa,0x00,0x4a,0xe6,0x73}},
- DCERPC_NETDFS_VERSION
- },
- .helpstring = DCERPC_NETDFS_HELPSTRING,
- .num_calls = 23,
- .calls = netdfs_calls,
- .endpoints = &netdfs_endpoints,
- .authservices = &netdfs_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_dfs.h b/source/librpc/gen_ndr/ndr_dfs.h
deleted file mode 100644
index 3fab6e857de..00000000000
--- a/source/librpc/gen_ndr/ndr_dfs.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/dfs.h"
-
-#ifndef _HEADER_NDR_netdfs
-#define _HEADER_NDR_netdfs
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_NETDFS_UUID "4fc742e0-4a10-11cf-8273-00aa004ae673"
-#define DCERPC_NETDFS_VERSION 3.0
-#define DCERPC_NETDFS_NAME "netdfs"
-#define DCERPC_NETDFS_HELPSTRING "Settings for Microsoft Distributed File System"
-extern const struct dcerpc_interface_table dcerpc_table_netdfs;
-NTSTATUS dcerpc_server_netdfs_init(void);
-#define DCERPC_DFS_GETMANAGERVERSION (0x00)
-
-#define DCERPC_DFS_ADD (0x01)
-
-#define DCERPC_DFS_REMOVE (0x02)
-
-#define DCERPC_DFS_SETINFO (0x03)
-
-#define DCERPC_DFS_GETINFO (0x04)
-
-#define DCERPC_DFS_ENUM (0x05)
-
-#define DCERPC_DFS_RENAME (0x06)
-
-#define DCERPC_DFS_MOVE (0x07)
-
-#define DCERPC_DFS_MANAGERGETCONFIGINFO (0x08)
-
-#define DCERPC_DFS_MANAGERSENDSITEINFO (0x09)
-
-#define DCERPC_DFS_ADDFTROOT (0x0a)
-
-#define DCERPC_DFS_REMOVEFTROOT (0x0b)
-
-#define DCERPC_DFS_ADDSTDROOT (0x0c)
-
-#define DCERPC_DFS_REMOVESTDROOT (0x0d)
-
-#define DCERPC_DFS_MANAGERINITIALIZE (0x0e)
-
-#define DCERPC_DFS_ADDSTDROOTFORCED (0x0f)
-
-#define DCERPC_DFS_GETDCADDRESS (0x10)
-
-#define DCERPC_DFS_SETDCADDRESS (0x11)
-
-#define DCERPC_DFS_FLUSHFTTABLE (0x12)
-
-#define DCERPC_DFS_ADD2 (0x13)
-
-#define DCERPC_DFS_REMOVE2 (0x14)
-
-#define DCERPC_DFS_ENUMEX (0x15)
-
-#define DCERPC_DFS_SETINFO2 (0x16)
-
-#define DCERPC_NETDFS_CALL_COUNT (23)
-void ndr_print_dfs_ManagerVersion(struct ndr_print *ndr, const char *name, enum dfs_ManagerVersion r);
-void ndr_print_dfs_Info0(struct ndr_print *ndr, const char *name, const struct dfs_Info0 *r);
-void ndr_print_dfs_Info1(struct ndr_print *ndr, const char *name, const struct dfs_Info1 *r);
-NTSTATUS ndr_push_dfs_VolumeState(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-NTSTATUS ndr_pull_dfs_VolumeState(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_dfs_VolumeState(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_dfs_Info2(struct ndr_print *ndr, const char *name, const struct dfs_Info2 *r);
-NTSTATUS ndr_push_dfs_StorageState(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-NTSTATUS ndr_pull_dfs_StorageState(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_dfs_StorageState(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_dfs_StorageInfo(struct ndr_print *ndr, const char *name, const struct dfs_StorageInfo *r);
-void ndr_print_dfs_Info3(struct ndr_print *ndr, const char *name, const struct dfs_Info3 *r);
-void ndr_print_dfs_Info4(struct ndr_print *ndr, const char *name, const struct dfs_Info4 *r);
-NTSTATUS ndr_push_dfs_PropertyFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-NTSTATUS ndr_pull_dfs_PropertyFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_dfs_PropertyFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_dfs_Info5(struct ndr_print *ndr, const char *name, const struct dfs_Info5 *r);
-void ndr_print_dfs_Target_PriorityClass(struct ndr_print *ndr, const char *name, enum dfs_Target_PriorityClass r);
-void ndr_print_dfs_Target_Priority(struct ndr_print *ndr, const char *name, const struct dfs_Target_Priority *r);
-void ndr_print_dfs_StorageInfo2(struct ndr_print *ndr, const char *name, const struct dfs_StorageInfo2 *r);
-void ndr_print_dfs_Info6(struct ndr_print *ndr, const char *name, const struct dfs_Info6 *r);
-void ndr_print_dfs_Info7(struct ndr_print *ndr, const char *name, const struct dfs_Info7 *r);
-void ndr_print_dfs_Info100(struct ndr_print *ndr, const char *name, const struct dfs_Info100 *r);
-void ndr_print_dfs_Info101(struct ndr_print *ndr, const char *name, const struct dfs_Info101 *r);
-void ndr_print_dfs_Info102(struct ndr_print *ndr, const char *name, const struct dfs_Info102 *r);
-void ndr_print_dfs_Info103(struct ndr_print *ndr, const char *name, const struct dfs_Info103 *r);
-void ndr_print_dfs_Info104(struct ndr_print *ndr, const char *name, const struct dfs_Info104 *r);
-void ndr_print_dfs_Info105(struct ndr_print *ndr, const char *name, const struct dfs_Info105 *r);
-void ndr_print_dfs_Info106(struct ndr_print *ndr, const char *name, const struct dfs_Info106 *r);
-void ndr_print_dfs_Info200(struct ndr_print *ndr, const char *name, const struct dfs_Info200 *r);
-void ndr_print_dfs_VolumeFlavor(struct ndr_print *ndr, const char *name, enum dfs_VolumeFlavor r);
-void ndr_print_dfs_Info300(struct ndr_print *ndr, const char *name, const struct dfs_Info300 *r);
-void ndr_print_dfs_Info(struct ndr_print *ndr, const char *name, const union dfs_Info *r);
-void ndr_print_dfs_EnumArray1(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray1 *r);
-void ndr_print_dfs_EnumArray2(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray2 *r);
-void ndr_print_dfs_EnumArray3(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray3 *r);
-void ndr_print_dfs_EnumArray4(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray4 *r);
-void ndr_print_dfs_EnumArray200(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray200 *r);
-void ndr_print_dfs_EnumArray300(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray300 *r);
-void ndr_print_dfs_EnumInfo(struct ndr_print *ndr, const char *name, const union dfs_EnumInfo *r);
-void ndr_print_dfs_EnumStruct(struct ndr_print *ndr, const char *name, const struct dfs_EnumStruct *r);
-void ndr_print_dfs_UnknownStruct(struct ndr_print *ndr, const char *name, const struct dfs_UnknownStruct *r);
-NTSTATUS ndr_push_dfs_GetManagerVersion(struct ndr_push *ndr, int flags, const struct dfs_GetManagerVersion *r);
-NTSTATUS ndr_pull_dfs_GetManagerVersion(struct ndr_pull *ndr, int flags, struct dfs_GetManagerVersion *r);
-void ndr_print_dfs_GetManagerVersion(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetManagerVersion *r);
-void ndr_print_dfs_Add(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Add *r);
-void ndr_print_dfs_Remove(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Remove *r);
-void ndr_print_dfs_SetInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetInfo *r);
-void ndr_print_dfs_GetInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetInfo *r);
-void ndr_print_dfs_Enum(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Enum *r);
-void ndr_print_dfs_Rename(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Rename *r);
-void ndr_print_dfs_Move(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Move *r);
-void ndr_print_dfs_ManagerGetConfigInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerGetConfigInfo *r);
-void ndr_print_dfs_ManagerSendSiteInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerSendSiteInfo *r);
-void ndr_print_dfs_AddFtRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddFtRoot *r);
-void ndr_print_dfs_RemoveFtRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_RemoveFtRoot *r);
-void ndr_print_dfs_AddStdRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddStdRoot *r);
-void ndr_print_dfs_RemoveStdRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_RemoveStdRoot *r);
-void ndr_print_dfs_ManagerInitialize(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerInitialize *r);
-void ndr_print_dfs_AddStdRootForced(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddStdRootForced *r);
-void ndr_print_dfs_GetDcAddress(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetDcAddress *r);
-void ndr_print_dfs_SetDcAddress(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetDcAddress *r);
-void ndr_print_dfs_FlushFtTable(struct ndr_print *ndr, const char *name, int flags, const struct dfs_FlushFtTable *r);
-void ndr_print_dfs_Add2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Add2 *r);
-void ndr_print_dfs_Remove2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Remove2 *r);
-NTSTATUS ndr_push_dfs_EnumEx(struct ndr_push *ndr, int flags, const struct dfs_EnumEx *r);
-NTSTATUS ndr_pull_dfs_EnumEx(struct ndr_pull *ndr, int flags, struct dfs_EnumEx *r);
-void ndr_print_dfs_EnumEx(struct ndr_print *ndr, const char *name, int flags, const struct dfs_EnumEx *r);
-void ndr_print_dfs_SetInfo2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetInfo2 *r);
-#endif /* _HEADER_NDR_netdfs */
diff --git a/source/librpc/gen_ndr/ndr_echo.c b/source/librpc/gen_ndr/ndr_echo.c
deleted file mode 100644
index 8c2695ab209..00000000000
--- a/source/librpc/gen_ndr/ndr_echo.c
+++ /dev/null
@@ -1,1460 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_echo.h"
-
-NTSTATUS ndr_push_echo_info1(struct ndr_push *ndr, int ndr_flags, const struct echo_info1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_info1(struct ndr_pull *ndr, int ndr_flags, struct echo_info1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_info1(struct ndr_print *ndr, const char *name, const struct echo_info1 *r)
-{
- ndr_print_struct(ndr, name, "echo_info1");
- ndr->depth++;
- ndr_print_uint8(ndr, "v", r->v);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_info2(struct ndr_push *ndr, int ndr_flags, const struct echo_info2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_info2(struct ndr_pull *ndr, int ndr_flags, struct echo_info2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_info2(struct ndr_print *ndr, const char *name, const struct echo_info2 *r)
-{
- ndr_print_struct(ndr, name, "echo_info2");
- ndr->depth++;
- ndr_print_uint16(ndr, "v", r->v);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_info3(struct ndr_push *ndr, int ndr_flags, const struct echo_info3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_info3(struct ndr_pull *ndr, int ndr_flags, struct echo_info3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_info3(struct ndr_print *ndr, const char *name, const struct echo_info3 *r)
-{
- ndr_print_struct(ndr, name, "echo_info3");
- ndr->depth++;
- ndr_print_uint32(ndr, "v", r->v);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_info4(struct ndr_push *ndr, int ndr_flags, const struct echo_info4 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 8));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_info4(struct ndr_pull *ndr, int ndr_flags, struct echo_info4 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 8));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->v));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_info4(struct ndr_print *ndr, const char *name, const struct echo_info4 *r)
-{
- ndr_print_struct(ndr, name, "echo_info4");
- ndr->depth++;
- ndr_print_hyper(ndr, "v", r->v);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_info5(struct ndr_push *ndr, int ndr_flags, const struct echo_info5 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 8));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->v1));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->v2));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_info5(struct ndr_pull *ndr, int ndr_flags, struct echo_info5 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 8));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->v1));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->v2));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_info5(struct ndr_print *ndr, const char *name, const struct echo_info5 *r)
-{
- ndr_print_struct(ndr, name, "echo_info5");
- ndr->depth++;
- ndr_print_uint8(ndr, "v1", r->v1);
- ndr_print_hyper(ndr, "v2", r->v2);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_info6(struct ndr_push *ndr, int ndr_flags, const struct echo_info6 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->v1));
- NDR_CHECK(ndr_push_echo_info1(ndr, NDR_SCALARS, &r->info1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_info6(struct ndr_pull *ndr, int ndr_flags, struct echo_info6 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->v1));
- NDR_CHECK(ndr_pull_echo_info1(ndr, NDR_SCALARS, &r->info1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_info6(struct ndr_print *ndr, const char *name, const struct echo_info6 *r)
-{
- ndr_print_struct(ndr, name, "echo_info6");
- ndr->depth++;
- ndr_print_uint8(ndr, "v1", r->v1);
- ndr_print_echo_info1(ndr, "info1", &r->info1);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_info7(struct ndr_push *ndr, int ndr_flags, const struct echo_info7 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 8));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->v1));
- NDR_CHECK(ndr_push_echo_info4(ndr, NDR_SCALARS, &r->info4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_info7(struct ndr_pull *ndr, int ndr_flags, struct echo_info7 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 8));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->v1));
- NDR_CHECK(ndr_pull_echo_info4(ndr, NDR_SCALARS, &r->info4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_info7(struct ndr_print *ndr, const char *name, const struct echo_info7 *r)
-{
- ndr_print_struct(ndr, name, "echo_info7");
- ndr->depth++;
- ndr_print_uint8(ndr, "v1", r->v1);
- ndr_print_echo_info4(ndr, "info4", &r->info4);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_Info(struct ndr_push *ndr, int ndr_flags, const union echo_Info *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
- switch (level) {
- case 1:
- NDR_CHECK(ndr_push_echo_info1(ndr, NDR_SCALARS, &r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_echo_info2(ndr, NDR_SCALARS, &r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_echo_info3(ndr, NDR_SCALARS, &r->info3));
- break;
-
- case 4:
- NDR_CHECK(ndr_push_echo_info4(ndr, NDR_SCALARS, &r->info4));
- break;
-
- case 5:
- NDR_CHECK(ndr_push_echo_info5(ndr, NDR_SCALARS, &r->info5));
- break;
-
- case 6:
- NDR_CHECK(ndr_push_echo_info6(ndr, NDR_SCALARS, &r->info6));
- break;
-
- case 7:
- NDR_CHECK(ndr_push_echo_info7(ndr, NDR_SCALARS, &r->info7));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 1:
- break;
-
- case 2:
- break;
-
- case 3:
- break;
-
- case 4:
- break;
-
- case 5:
- break;
-
- case 6:
- break;
-
- case 7:
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_Info(struct ndr_pull *ndr, int ndr_flags, union echo_Info *r)
-{
- int level;
- uint16_t _level;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 1: {
- NDR_CHECK(ndr_pull_echo_info1(ndr, NDR_SCALARS, &r->info1));
- break; }
-
- case 2: {
- NDR_CHECK(ndr_pull_echo_info2(ndr, NDR_SCALARS, &r->info2));
- break; }
-
- case 3: {
- NDR_CHECK(ndr_pull_echo_info3(ndr, NDR_SCALARS, &r->info3));
- break; }
-
- case 4: {
- NDR_CHECK(ndr_pull_echo_info4(ndr, NDR_SCALARS, &r->info4));
- break; }
-
- case 5: {
- NDR_CHECK(ndr_pull_echo_info5(ndr, NDR_SCALARS, &r->info5));
- break; }
-
- case 6: {
- NDR_CHECK(ndr_pull_echo_info6(ndr, NDR_SCALARS, &r->info6));
- break; }
-
- case 7: {
- NDR_CHECK(ndr_pull_echo_info7(ndr, NDR_SCALARS, &r->info7));
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 1:
- break;
-
- case 2:
- break;
-
- case 3:
- break;
-
- case 4:
- break;
-
- case 5:
- break;
-
- case 6:
- break;
-
- case 7:
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_Info(struct ndr_print *ndr, const char *name, const union echo_Info *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "echo_Info");
- switch (level) {
- case 1:
- ndr_print_echo_info1(ndr, "info1", &r->info1);
- break;
-
- case 2:
- ndr_print_echo_info2(ndr, "info2", &r->info2);
- break;
-
- case 3:
- ndr_print_echo_info3(ndr, "info3", &r->info3);
- break;
-
- case 4:
- ndr_print_echo_info4(ndr, "info4", &r->info4);
- break;
-
- case 5:
- ndr_print_echo_info5(ndr, "info5", &r->info5);
- break;
-
- case 6:
- ndr_print_echo_info6(ndr, "info6", &r->info6);
- break;
-
- case 7:
- ndr_print_echo_info7(ndr, "info7", &r->info7);
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_echo_Enum1(struct ndr_push *ndr, int ndr_flags, enum echo_Enum1 r)
-{
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_Enum1(struct ndr_pull *ndr, int ndr_flags, enum echo_Enum1 *r)
-{
- uint16_t v;
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_Enum1(struct ndr_print *ndr, const char *name, enum echo_Enum1 r)
-{
- const char *val = NULL;
-
- switch (r) {
- case ECHO_ENUM1: val = "ECHO_ENUM1"; break;
- case ECHO_ENUM2: val = "ECHO_ENUM2"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_echo_Enum1_32(struct ndr_push *ndr, int ndr_flags, enum echo_Enum1_32 r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_Enum1_32(struct ndr_pull *ndr, int ndr_flags, enum echo_Enum1_32 *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_Enum1_32(struct ndr_print *ndr, const char *name, enum echo_Enum1_32 r)
-{
- const char *val = NULL;
-
- switch (r) {
- case ECHO_ENUM1_32: val = "ECHO_ENUM1_32"; break;
- case ECHO_ENUM2_32: val = "ECHO_ENUM2_32"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_echo_Enum2(struct ndr_push *ndr, int ndr_flags, const struct echo_Enum2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_echo_Enum1(ndr, NDR_SCALARS, r->e1));
- NDR_CHECK(ndr_push_echo_Enum1_32(ndr, NDR_SCALARS, r->e2));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_Enum2(struct ndr_pull *ndr, int ndr_flags, struct echo_Enum2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_echo_Enum1(ndr, NDR_SCALARS, &r->e1));
- NDR_CHECK(ndr_pull_echo_Enum1_32(ndr, NDR_SCALARS, &r->e2));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_Enum2(struct ndr_print *ndr, const char *name, const struct echo_Enum2 *r)
-{
- ndr_print_struct(ndr, name, "echo_Enum2");
- ndr->depth++;
- ndr_print_echo_Enum1(ndr, "e1", r->e1);
- ndr_print_echo_Enum1_32(ndr, "e2", r->e2);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_Enum3(struct ndr_push *ndr, int ndr_flags, const union echo_Enum3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
- switch (level) {
- case ECHO_ENUM1:
- NDR_CHECK(ndr_push_echo_Enum1(ndr, NDR_SCALARS, r->e1));
- break;
-
- case ECHO_ENUM2:
- NDR_CHECK(ndr_push_echo_Enum2(ndr, NDR_SCALARS, &r->e2));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case ECHO_ENUM1:
- break;
-
- case ECHO_ENUM2:
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_Enum3(struct ndr_pull *ndr, int ndr_flags, union echo_Enum3 *r)
-{
- int level;
- uint16_t _level;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case ECHO_ENUM1: {
- NDR_CHECK(ndr_pull_echo_Enum1(ndr, NDR_SCALARS, &r->e1));
- break; }
-
- case ECHO_ENUM2: {
- NDR_CHECK(ndr_pull_echo_Enum2(ndr, NDR_SCALARS, &r->e2));
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case ECHO_ENUM1:
- break;
-
- case ECHO_ENUM2:
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_Enum3(struct ndr_print *ndr, const char *name, const union echo_Enum3 *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "echo_Enum3");
- switch (level) {
- case ECHO_ENUM1:
- ndr_print_echo_Enum1(ndr, "e1", r->e1);
- break;
-
- case ECHO_ENUM2:
- ndr_print_echo_Enum2(ndr, "e2", &r->e2);
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_echo_Surrounding(struct ndr_push *ndr, int ndr_flags, const struct echo_Surrounding *r)
-{
- uint32_t cntr_surrounding_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->x));
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->x));
- for (cntr_surrounding_0 = 0; cntr_surrounding_0 < r->x; cntr_surrounding_0++) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->surrounding[cntr_surrounding_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_Surrounding(struct ndr_pull *ndr, int ndr_flags, struct echo_Surrounding *r)
-{
- uint32_t cntr_surrounding_0;
- TALLOC_CTX *_mem_save_surrounding_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->surrounding));
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->x));
- NDR_PULL_ALLOC_N(ndr, r->surrounding, ndr_get_array_size(ndr, &r->surrounding));
- _mem_save_surrounding_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->surrounding, 0);
- for (cntr_surrounding_0 = 0; cntr_surrounding_0 < r->x; cntr_surrounding_0++) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->surrounding[cntr_surrounding_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_surrounding_0, 0);
- if (r->surrounding) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->surrounding, r->x));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_Surrounding(struct ndr_print *ndr, const char *name, const struct echo_Surrounding *r)
-{
- uint32_t cntr_surrounding_0;
- ndr_print_struct(ndr, name, "echo_Surrounding");
- ndr->depth++;
- ndr_print_uint32(ndr, "x", r->x);
- ndr->print(ndr, "%s: ARRAY(%d)", "surrounding", r->x);
- ndr->depth++;
- for (cntr_surrounding_0=0;cntr_surrounding_0<r->x;cntr_surrounding_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_surrounding_0);
- if (idx_0) {
- ndr_print_uint16(ndr, "surrounding", r->surrounding[cntr_surrounding_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_AddOne(struct ndr_push *ndr, int flags, const struct echo_AddOne *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.in_data));
- }
- if (flags & NDR_OUT) {
- if (r->out.out_data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.out_data));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_AddOne(struct ndr_pull *ndr, int flags, struct echo_AddOne *r)
-{
- TALLOC_CTX *_mem_save_out_data_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.in_data));
- NDR_PULL_ALLOC(ndr, r->out.out_data);
- ZERO_STRUCTP(r->out.out_data);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.out_data);
- }
- _mem_save_out_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.out_data, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.out_data));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_out_data_0, LIBNDR_FLAG_REF_ALLOC);
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_AddOne(struct ndr_print *ndr, const char *name, int flags, const struct echo_AddOne *r)
-{
- ndr_print_struct(ndr, name, "echo_AddOne");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_AddOne");
- ndr->depth++;
- ndr_print_uint32(ndr, "in_data", r->in.in_data);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_AddOne");
- ndr->depth++;
- ndr_print_ptr(ndr, "out_data", r->out.out_data);
- ndr->depth++;
- ndr_print_uint32(ndr, "out_data", *r->out.out_data);
- ndr->depth--;
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_EchoData(struct ndr_push *ndr, int flags, const struct echo_EchoData *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.len));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.in_data, r->in.len));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.out_data, r->in.len));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_EchoData(struct ndr_pull *ndr, int flags, struct echo_EchoData *r)
-{
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.len));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.in_data));
- NDR_PULL_ALLOC_N(ndr, r->in.in_data, ndr_get_array_size(ndr, &r->in.in_data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.in_data, ndr_get_array_size(ndr, &r->in.in_data)));
- if (r->in.in_data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.in_data, r->in.len));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.out_data));
- NDR_PULL_ALLOC_N(ndr, r->out.out_data, ndr_get_array_size(ndr, &r->out.out_data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.out_data, ndr_get_array_size(ndr, &r->out.out_data)));
- if (r->out.out_data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.out_data, r->in.len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_EchoData(struct ndr_print *ndr, const char *name, int flags, const struct echo_EchoData *r)
-{
- ndr_print_struct(ndr, name, "echo_EchoData");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_EchoData");
- ndr->depth++;
- ndr_print_uint32(ndr, "len", r->in.len);
- ndr_print_array_uint8(ndr, "in_data", r->in.in_data, r->in.len);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_EchoData");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "out_data", r->out.out_data, r->in.len);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_SinkData(struct ndr_push *ndr, int flags, const struct echo_SinkData *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.len));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, r->in.len));
- }
- if (flags & NDR_OUT) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_SinkData(struct ndr_pull *ndr, int flags, struct echo_SinkData *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.len));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
- NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_size(ndr, &r->in.data)));
- if (r->in.data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.len));
- }
- }
- if (flags & NDR_OUT) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_SinkData(struct ndr_print *ndr, const char *name, int flags, const struct echo_SinkData *r)
-{
- ndr_print_struct(ndr, name, "echo_SinkData");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_SinkData");
- ndr->depth++;
- ndr_print_uint32(ndr, "len", r->in.len);
- ndr_print_array_uint8(ndr, "data", r->in.data, r->in.len);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_SinkData");
- ndr->depth++;
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_SourceData(struct ndr_push *ndr, int flags, const struct echo_SourceData *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.len));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, r->in.len));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_SourceData(struct ndr_pull *ndr, int flags, struct echo_SourceData *r)
-{
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.len));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
- NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_size(ndr, &r->out.data)));
- if (r->out.data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_SourceData(struct ndr_print *ndr, const char *name, int flags, const struct echo_SourceData *r)
-{
- ndr_print_struct(ndr, name, "echo_SourceData");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_SourceData");
- ndr->depth++;
- ndr_print_uint32(ndr, "len", r->in.len);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_SourceData");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "data", r->out.data, r->in.len);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_TestCall(struct ndr_push *ndr, int flags, const struct echo_TestCall *r)
-{
- if (flags & NDR_IN) {
- if (r->in.s1 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.s1, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.s1, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.s1, ndr_charset_length(r->in.s1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- if (r->out.s2 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.s2 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.s2, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.s2, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.s2, ndr_charset_length(*r->out.s2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_TestCall(struct ndr_pull *ndr, int flags, struct echo_TestCall *r)
-{
- uint32_t _ptr_s2;
- TALLOC_CTX *_mem_save_s2_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.s1));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.s1));
- if (ndr_get_array_length(ndr, &r->in.s1) > ndr_get_array_size(ndr, &r->in.s1)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.s1), ndr_get_array_length(ndr, &r->in.s1));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.s1), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.s1, ndr_get_array_length(ndr, &r->in.s1), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_ALLOC(ndr, r->out.s2);
- ZERO_STRUCTP(r->out.s2);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.s2);
- }
- _mem_save_s2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.s2, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_s2));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.s2));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.s2));
- if (ndr_get_array_length(ndr, r->out.s2) > ndr_get_array_size(ndr, r->out.s2)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.s2), ndr_get_array_length(ndr, r->out.s2));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.s2), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.s2, ndr_get_array_length(ndr, r->out.s2), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_s2_0, LIBNDR_FLAG_REF_ALLOC);
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_TestCall(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestCall *r)
-{
- ndr_print_struct(ndr, name, "echo_TestCall");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_TestCall");
- ndr->depth++;
- ndr_print_ptr(ndr, "s1", r->in.s1);
- ndr->depth++;
- ndr_print_string(ndr, "s1", r->in.s1);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_TestCall");
- ndr->depth++;
- ndr_print_ptr(ndr, "s2", r->out.s2);
- ndr->depth++;
- ndr_print_ptr(ndr, "s2", *r->out.s2);
- ndr->depth++;
- ndr_print_string(ndr, "s2", *r->out.s2);
- ndr->depth--;
- ndr->depth--;
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_TestCall2(struct ndr_push *ndr, int flags, const struct echo_TestCall2 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_echo_Info(ndr, NDR_SCALARS, r->out.info));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_TestCall2(struct ndr_pull *ndr, int flags, struct echo_TestCall2 *r)
-{
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_echo_Info(ndr, NDR_SCALARS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_TestCall2(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestCall2 *r)
-{
- ndr_print_struct(ndr, name, "echo_TestCall2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_TestCall2");
- ndr->depth++;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_TestCall2");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_echo_Info(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_TestSleep(struct ndr_push *ndr, int flags, const struct echo_TestSleep *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.seconds));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_TestSleep(struct ndr_pull *ndr, int flags, struct echo_TestSleep *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.seconds));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_TestSleep(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestSleep *r)
-{
- ndr_print_struct(ndr, name, "echo_TestSleep");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_TestSleep");
- ndr->depth++;
- ndr_print_uint32(ndr, "seconds", r->in.seconds);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_TestSleep");
- ndr->depth++;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_TestEnum(struct ndr_push *ndr, int flags, const struct echo_TestEnum *r)
-{
- if (flags & NDR_IN) {
- if (r->in.foo1 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_echo_Enum1(ndr, NDR_SCALARS, *r->in.foo1));
- if (r->in.foo2 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_echo_Enum2(ndr, NDR_SCALARS, r->in.foo2));
- if (r->in.foo3 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.foo3, *r->in.foo1));
- NDR_CHECK(ndr_push_echo_Enum3(ndr, NDR_SCALARS, r->in.foo3));
- }
- if (flags & NDR_OUT) {
- if (r->out.foo1 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_echo_Enum1(ndr, NDR_SCALARS, *r->out.foo1));
- if (r->out.foo2 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_echo_Enum2(ndr, NDR_SCALARS, r->out.foo2));
- if (r->out.foo3 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.foo3, *r->out.foo1));
- NDR_CHECK(ndr_push_echo_Enum3(ndr, NDR_SCALARS, r->out.foo3));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_TestEnum(struct ndr_pull *ndr, int flags, struct echo_TestEnum *r)
-{
- TALLOC_CTX *_mem_save_foo1_0;
- TALLOC_CTX *_mem_save_foo2_0;
- TALLOC_CTX *_mem_save_foo3_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.foo1);
- }
- _mem_save_foo1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.foo1, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_echo_Enum1(ndr, NDR_SCALARS, r->in.foo1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_foo1_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.foo2);
- }
- _mem_save_foo2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.foo2, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_echo_Enum2(ndr, NDR_SCALARS, r->in.foo2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_foo2_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.foo3);
- }
- _mem_save_foo3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.foo3, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.foo3, *r->in.foo1));
- NDR_CHECK(ndr_pull_echo_Enum3(ndr, NDR_SCALARS, r->in.foo3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_foo3_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.foo1);
- *r->out.foo1 = *r->in.foo1;
- NDR_PULL_ALLOC(ndr, r->out.foo2);
- *r->out.foo2 = *r->in.foo2;
- NDR_PULL_ALLOC(ndr, r->out.foo3);
- *r->out.foo3 = *r->in.foo3;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.foo1);
- }
- _mem_save_foo1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.foo1, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_echo_Enum1(ndr, NDR_SCALARS, r->out.foo1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_foo1_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.foo2);
- }
- _mem_save_foo2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.foo2, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_echo_Enum2(ndr, NDR_SCALARS, r->out.foo2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_foo2_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.foo3);
- }
- _mem_save_foo3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.foo3, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.foo3, *r->out.foo1));
- NDR_CHECK(ndr_pull_echo_Enum3(ndr, NDR_SCALARS, r->out.foo3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_foo3_0, LIBNDR_FLAG_REF_ALLOC);
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_TestEnum(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestEnum *r)
-{
- ndr_print_struct(ndr, name, "echo_TestEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_TestEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "foo1", r->in.foo1);
- ndr->depth++;
- ndr_print_echo_Enum1(ndr, "foo1", *r->in.foo1);
- ndr->depth--;
- ndr_print_ptr(ndr, "foo2", r->in.foo2);
- ndr->depth++;
- ndr_print_echo_Enum2(ndr, "foo2", r->in.foo2);
- ndr->depth--;
- ndr_print_ptr(ndr, "foo3", r->in.foo3);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.foo3, *r->in.foo1);
- ndr_print_echo_Enum3(ndr, "foo3", r->in.foo3);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_TestEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "foo1", r->out.foo1);
- ndr->depth++;
- ndr_print_echo_Enum1(ndr, "foo1", *r->out.foo1);
- ndr->depth--;
- ndr_print_ptr(ndr, "foo2", r->out.foo2);
- ndr->depth++;
- ndr_print_echo_Enum2(ndr, "foo2", r->out.foo2);
- ndr->depth--;
- ndr_print_ptr(ndr, "foo3", r->out.foo3);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.foo3, *r->out.foo1);
- ndr_print_echo_Enum3(ndr, "foo3", r->out.foo3);
- ndr->depth--;
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_TestSurrounding(struct ndr_push *ndr, int flags, const struct echo_TestSurrounding *r)
-{
- if (flags & NDR_IN) {
- if (r->in.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_echo_Surrounding(ndr, NDR_SCALARS, r->in.data));
- }
- if (flags & NDR_OUT) {
- if (r->out.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_echo_Surrounding(ndr, NDR_SCALARS, r->out.data));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_TestSurrounding(struct ndr_pull *ndr, int flags, struct echo_TestSurrounding *r)
-{
- TALLOC_CTX *_mem_save_data_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.data);
- }
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.data, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_echo_Surrounding(ndr, NDR_SCALARS, r->in.data));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.data);
- *r->out.data = *r->in.data;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.data);
- }
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.data, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_echo_Surrounding(ndr, NDR_SCALARS, r->out.data));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_TestSurrounding(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestSurrounding *r)
-{
- ndr_print_struct(ndr, name, "echo_TestSurrounding");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_TestSurrounding");
- ndr->depth++;
- ndr_print_ptr(ndr, "data", r->in.data);
- ndr->depth++;
- ndr_print_echo_Surrounding(ndr, "data", r->in.data);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_TestSurrounding");
- ndr->depth++;
- ndr_print_ptr(ndr, "data", r->out.data);
- ndr->depth++;
- ndr_print_echo_Surrounding(ndr, "data", r->out.data);
- ndr->depth--;
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_echo_TestDoublePointer(struct ndr_push *ndr, int flags, const struct echo_TestDoublePointer *r)
-{
- if (flags & NDR_IN) {
- if (r->in.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->in.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- if (**r->in.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ***r->in.data));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_echo_TestDoublePointer(struct ndr_pull *ndr, int flags, struct echo_TestDoublePointer *r)
-{
- uint32_t _ptr_data;
- TALLOC_CTX *_mem_save_data_0;
- TALLOC_CTX *_mem_save_data_1;
- TALLOC_CTX *_mem_save_data_2;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.data);
- }
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.data, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_data));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, *r->in.data);
- }
- _mem_save_data_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, *r->in.data, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_data));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, **r->in.data);
- }
- _mem_save_data_2 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, **r->in.data, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, **r->in.data));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_2, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_1, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_echo_TestDoublePointer(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestDoublePointer *r)
-{
- ndr_print_struct(ndr, name, "echo_TestDoublePointer");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "echo_TestDoublePointer");
- ndr->depth++;
- ndr_print_ptr(ndr, "data", r->in.data);
- ndr->depth++;
- ndr_print_ptr(ndr, "data", *r->in.data);
- ndr->depth++;
- ndr_print_ptr(ndr, "data", **r->in.data);
- ndr->depth++;
- ndr_print_uint16(ndr, "data", ***r->in.data);
- ndr->depth--;
- ndr->depth--;
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "echo_TestDoublePointer");
- ndr->depth++;
- ndr_print_uint16(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call rpcecho_calls[] = {
- {
- "echo_AddOne",
- sizeof(struct echo_AddOne),
- (ndr_push_flags_fn_t) ndr_push_echo_AddOne,
- (ndr_pull_flags_fn_t) ndr_pull_echo_AddOne,
- (ndr_print_function_t) ndr_print_echo_AddOne,
- False,
- },
- {
- "echo_EchoData",
- sizeof(struct echo_EchoData),
- (ndr_push_flags_fn_t) ndr_push_echo_EchoData,
- (ndr_pull_flags_fn_t) ndr_pull_echo_EchoData,
- (ndr_print_function_t) ndr_print_echo_EchoData,
- False,
- },
- {
- "echo_SinkData",
- sizeof(struct echo_SinkData),
- (ndr_push_flags_fn_t) ndr_push_echo_SinkData,
- (ndr_pull_flags_fn_t) ndr_pull_echo_SinkData,
- (ndr_print_function_t) ndr_print_echo_SinkData,
- False,
- },
- {
- "echo_SourceData",
- sizeof(struct echo_SourceData),
- (ndr_push_flags_fn_t) ndr_push_echo_SourceData,
- (ndr_pull_flags_fn_t) ndr_pull_echo_SourceData,
- (ndr_print_function_t) ndr_print_echo_SourceData,
- False,
- },
- {
- "echo_TestCall",
- sizeof(struct echo_TestCall),
- (ndr_push_flags_fn_t) ndr_push_echo_TestCall,
- (ndr_pull_flags_fn_t) ndr_pull_echo_TestCall,
- (ndr_print_function_t) ndr_print_echo_TestCall,
- False,
- },
- {
- "echo_TestCall2",
- sizeof(struct echo_TestCall2),
- (ndr_push_flags_fn_t) ndr_push_echo_TestCall2,
- (ndr_pull_flags_fn_t) ndr_pull_echo_TestCall2,
- (ndr_print_function_t) ndr_print_echo_TestCall2,
- False,
- },
- {
- "echo_TestSleep",
- sizeof(struct echo_TestSleep),
- (ndr_push_flags_fn_t) ndr_push_echo_TestSleep,
- (ndr_pull_flags_fn_t) ndr_pull_echo_TestSleep,
- (ndr_print_function_t) ndr_print_echo_TestSleep,
- False,
- },
- {
- "echo_TestEnum",
- sizeof(struct echo_TestEnum),
- (ndr_push_flags_fn_t) ndr_push_echo_TestEnum,
- (ndr_pull_flags_fn_t) ndr_pull_echo_TestEnum,
- (ndr_print_function_t) ndr_print_echo_TestEnum,
- False,
- },
- {
- "echo_TestSurrounding",
- sizeof(struct echo_TestSurrounding),
- (ndr_push_flags_fn_t) ndr_push_echo_TestSurrounding,
- (ndr_pull_flags_fn_t) ndr_pull_echo_TestSurrounding,
- (ndr_print_function_t) ndr_print_echo_TestSurrounding,
- False,
- },
- {
- "echo_TestDoublePointer",
- sizeof(struct echo_TestDoublePointer),
- (ndr_push_flags_fn_t) ndr_push_echo_TestDoublePointer,
- (ndr_pull_flags_fn_t) ndr_pull_echo_TestDoublePointer,
- (ndr_print_function_t) ndr_print_echo_TestDoublePointer,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const rpcecho_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\rpcecho]",
- "ncacn_ip_tcp:",
- "ncalrpc:",
-};
-
-const struct dcerpc_endpoint_list rpcecho_endpoints = {
- .count = 3,
- .names = rpcecho_endpoint_strings
-};
-
-const char * const rpcecho_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list rpcecho_authservices = {
- .count = 3,
- .names = rpcecho_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_rpcecho = {
- .name = "rpcecho",
- .syntax_id = {
- {0x60a15ec5,0x4de8,0x11d7,{0xa6,0x37},{0x00,0x50,0x56,0xa2,0x01,0x82}},
- DCERPC_RPCECHO_VERSION
- },
- .helpstring = DCERPC_RPCECHO_HELPSTRING,
- .num_calls = 10,
- .calls = rpcecho_calls,
- .endpoints = &rpcecho_endpoints,
- .authservices = &rpcecho_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_echo.h b/source/librpc/gen_ndr/ndr_echo.h
deleted file mode 100644
index 9c4603bc11e..00000000000
--- a/source/librpc/gen_ndr/ndr_echo.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/echo.h"
-
-#ifndef _HEADER_NDR_rpcecho
-#define _HEADER_NDR_rpcecho
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_RPCECHO_UUID "60a15ec5-4de8-11d7-a637-005056a20182"
-#define DCERPC_RPCECHO_VERSION 1.0
-#define DCERPC_RPCECHO_NAME "rpcecho"
-#define DCERPC_RPCECHO_HELPSTRING "Simple echo pipe"
-extern const struct dcerpc_interface_table dcerpc_table_rpcecho;
-NTSTATUS dcerpc_server_rpcecho_init(void);
-#define DCERPC_ECHO_ADDONE (0x00)
-
-#define DCERPC_ECHO_ECHODATA (0x01)
-
-#define DCERPC_ECHO_SINKDATA (0x02)
-
-#define DCERPC_ECHO_SOURCEDATA (0x03)
-
-#define DCERPC_ECHO_TESTCALL (0x04)
-
-#define DCERPC_ECHO_TESTCALL2 (0x05)
-
-#define DCERPC_ECHO_TESTSLEEP (0x06)
-
-#define DCERPC_ECHO_TESTENUM (0x07)
-
-#define DCERPC_ECHO_TESTSURROUNDING (0x08)
-
-#define DCERPC_ECHO_TESTDOUBLEPOINTER (0x09)
-
-#define DCERPC_RPCECHO_CALL_COUNT (10)
-void ndr_print_echo_info1(struct ndr_print *ndr, const char *name, const struct echo_info1 *r);
-void ndr_print_echo_info2(struct ndr_print *ndr, const char *name, const struct echo_info2 *r);
-void ndr_print_echo_info3(struct ndr_print *ndr, const char *name, const struct echo_info3 *r);
-void ndr_print_echo_info4(struct ndr_print *ndr, const char *name, const struct echo_info4 *r);
-void ndr_print_echo_info5(struct ndr_print *ndr, const char *name, const struct echo_info5 *r);
-void ndr_print_echo_info6(struct ndr_print *ndr, const char *name, const struct echo_info6 *r);
-void ndr_print_echo_info7(struct ndr_print *ndr, const char *name, const struct echo_info7 *r);
-void ndr_print_echo_Info(struct ndr_print *ndr, const char *name, const union echo_Info *r);
-void ndr_print_echo_Enum1(struct ndr_print *ndr, const char *name, enum echo_Enum1 r);
-void ndr_print_echo_Enum1_32(struct ndr_print *ndr, const char *name, enum echo_Enum1_32 r);
-void ndr_print_echo_Enum2(struct ndr_print *ndr, const char *name, const struct echo_Enum2 *r);
-void ndr_print_echo_Enum3(struct ndr_print *ndr, const char *name, const union echo_Enum3 *r);
-void ndr_print_echo_Surrounding(struct ndr_print *ndr, const char *name, const struct echo_Surrounding *r);
-void ndr_print_echo_AddOne(struct ndr_print *ndr, const char *name, int flags, const struct echo_AddOne *r);
-void ndr_print_echo_EchoData(struct ndr_print *ndr, const char *name, int flags, const struct echo_EchoData *r);
-void ndr_print_echo_SinkData(struct ndr_print *ndr, const char *name, int flags, const struct echo_SinkData *r);
-void ndr_print_echo_SourceData(struct ndr_print *ndr, const char *name, int flags, const struct echo_SourceData *r);
-void ndr_print_echo_TestCall(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestCall *r);
-void ndr_print_echo_TestCall2(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestCall2 *r);
-void ndr_print_echo_TestSleep(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestSleep *r);
-void ndr_print_echo_TestEnum(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestEnum *r);
-void ndr_print_echo_TestSurrounding(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestSurrounding *r);
-void ndr_print_echo_TestDoublePointer(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestDoublePointer *r);
-#endif /* _HEADER_NDR_rpcecho */
diff --git a/source/librpc/gen_ndr/ndr_epmapper.c b/source/librpc/gen_ndr/ndr_epmapper.c
deleted file mode 100644
index 1ef21a414c0..00000000000
--- a/source/librpc/gen_ndr/ndr_epmapper.c
+++ /dev/null
@@ -1,2686 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_epmapper.h"
-
-NTSTATUS ndr_push_epm_protocol(struct ndr_push *ndr, int ndr_flags, enum epm_protocol r)
-{
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_protocol(struct ndr_pull *ndr, int ndr_flags, enum epm_protocol *r)
-{
- uint8_t v;
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_protocol(struct ndr_print *ndr, const char *name, enum epm_protocol r)
-{
- const char *val = NULL;
-
- switch (r) {
- case EPM_PROTOCOL_DNET_NSP: val = "EPM_PROTOCOL_DNET_NSP"; break;
- case EPM_PROTOCOL_OSI_TP4: val = "EPM_PROTOCOL_OSI_TP4"; break;
- case EPM_PROTOCOL_OSI_CLNS: val = "EPM_PROTOCOL_OSI_CLNS"; break;
- case EPM_PROTOCOL_TCP: val = "EPM_PROTOCOL_TCP"; break;
- case EPM_PROTOCOL_UDP: val = "EPM_PROTOCOL_UDP"; break;
- case EPM_PROTOCOL_IP: val = "EPM_PROTOCOL_IP"; break;
- case EPM_PROTOCOL_NCADG: val = "EPM_PROTOCOL_NCADG"; break;
- case EPM_PROTOCOL_NCACN: val = "EPM_PROTOCOL_NCACN"; break;
- case EPM_PROTOCOL_NCALRPC: val = "EPM_PROTOCOL_NCALRPC"; break;
- case EPM_PROTOCOL_UUID: val = "EPM_PROTOCOL_UUID"; break;
- case EPM_PROTOCOL_IPX: val = "EPM_PROTOCOL_IPX"; break;
- case EPM_PROTOCOL_SMB: val = "EPM_PROTOCOL_SMB"; break;
- case EPM_PROTOCOL_PIPE: val = "EPM_PROTOCOL_PIPE"; break;
- case EPM_PROTOCOL_NETBIOS: val = "EPM_PROTOCOL_NETBIOS"; break;
- case EPM_PROTOCOL_NETBEUI: val = "EPM_PROTOCOL_NETBEUI"; break;
- case EPM_PROTOCOL_SPX: val = "EPM_PROTOCOL_SPX"; break;
- case EPM_PROTOCOL_NB_IPX: val = "EPM_PROTOCOL_NB_IPX"; break;
- case EPM_PROTOCOL_DSP: val = "EPM_PROTOCOL_DSP"; break;
- case EPM_PROTOCOL_DDP: val = "EPM_PROTOCOL_DDP"; break;
- case EPM_PROTOCOL_APPLETALK: val = "EPM_PROTOCOL_APPLETALK"; break;
- case EPM_PROTOCOL_VINES_SPP: val = "EPM_PROTOCOL_VINES_SPP"; break;
- case EPM_PROTOCOL_VINES_IPC: val = "EPM_PROTOCOL_VINES_IPC"; break;
- case EPM_PROTOCOL_STREETTALK: val = "EPM_PROTOCOL_STREETTALK"; break;
- case EPM_PROTOCOL_HTTP: val = "EPM_PROTOCOL_HTTP"; break;
- case EPM_PROTOCOL_UNIX_DS: val = "EPM_PROTOCOL_UNIX_DS"; break;
- case EPM_PROTOCOL_NULL: val = "EPM_PROTOCOL_NULL"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_epm_rhs_dnet_nsp(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_dnet_nsp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_dnet_nsp(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_dnet_nsp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_dnet_nsp(struct ndr_print *ndr, const char *name, const struct epm_rhs_dnet_nsp *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_dnet_nsp");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_osi_tp4(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_osi_tp4 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_osi_tp4(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_osi_tp4 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_osi_tp4(struct ndr_print *ndr, const char *name, const struct epm_rhs_osi_tp4 *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_osi_tp4");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_osi_clns(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_osi_clns *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_osi_clns(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_osi_clns *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_osi_clns(struct ndr_print *ndr, const char *name, const struct epm_rhs_osi_clns *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_osi_clns");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_udp(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_udp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_udp(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_udp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_udp(struct ndr_print *ndr, const char *name, const struct epm_rhs_udp *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_udp");
- ndr->depth++;
- ndr_print_uint16(ndr, "port", r->port);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_tcp(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_tcp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_tcp(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_tcp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_tcp(struct ndr_print *ndr, const char *name, const struct epm_rhs_tcp *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_tcp");
- ndr->depth++;
- ndr_print_uint16(ndr, "port", r->port);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_ip(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_ip *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_ipv4address(ndr, NDR_SCALARS, r->ipaddr));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_ip(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_ip *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_ipv4address(ndr, NDR_SCALARS, &r->ipaddr));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_ip(struct ndr_print *ndr, const char *name, const struct epm_rhs_ip *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_ip");
- ndr->depth++;
- ndr_print_ipv4address(ndr, "ipaddr", r->ipaddr);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_ncadg(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_ncadg *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->minor_version));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_ncadg(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_ncadg *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->minor_version));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_ncadg(struct ndr_print *ndr, const char *name, const struct epm_rhs_ncadg *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_ncadg");
- ndr->depth++;
- ndr_print_uint16(ndr, "minor_version", r->minor_version);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_ncacn(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_ncacn *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->minor_version));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_ncacn(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_ncacn *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->minor_version));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_ncacn(struct ndr_print *ndr, const char *name, const struct epm_rhs_ncacn *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_ncacn");
- ndr->depth++;
- ndr_print_uint16(ndr, "minor_version", r->minor_version);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_uuid(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_uuid *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->unknown));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_uuid(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_uuid *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->unknown));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_uuid(struct ndr_print *ndr, const char *name, const struct epm_rhs_uuid *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_uuid");
- ndr->depth++;
- ndr_print_DATA_BLOB(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_ipx(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_ipx *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_ipx(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_ipx *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_ipx(struct ndr_print *ndr, const char *name, const struct epm_rhs_ipx *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_ipx");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_smb(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_smb *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->unc));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_smb(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_smb *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->unc));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_smb(struct ndr_print *ndr, const char *name, const struct epm_rhs_smb *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_smb");
- ndr->depth++;
- ndr_print_string(ndr, "unc", r->unc);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_pipe(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_pipe *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->path));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_pipe(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_pipe *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->path));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_pipe *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_pipe");
- ndr->depth++;
- ndr_print_string(ndr, "path", r->path);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_netbios(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_netbios *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_netbios(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_netbios *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_netbios(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbios *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_netbios");
- ndr->depth++;
- ndr_print_string(ndr, "name", r->name);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_netbeui(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_netbeui *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_netbeui(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_netbeui *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_netbeui(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbeui *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_netbeui");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_spx(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_spx *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_spx(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_spx *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_spx(struct ndr_print *ndr, const char *name, const struct epm_rhs_spx *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_spx");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_nb_ipx(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_nb_ipx *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_nb_ipx(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_nb_ipx *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_nb_ipx(struct ndr_print *ndr, const char *name, const struct epm_rhs_nb_ipx *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_nb_ipx");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_http(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_http *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_http(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_http *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_http(struct ndr_print *ndr, const char *name, const struct epm_rhs_http *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_http");
- ndr->depth++;
- ndr_print_uint16(ndr, "port", r->port);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_unix_ds(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_unix_ds *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->path));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_unix_ds(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_unix_ds *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->path));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_unix_ds(struct ndr_print *ndr, const char *name, const struct epm_rhs_unix_ds *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_unix_ds");
- ndr->depth++;
- ndr_print_string(ndr, "path", r->path);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_null(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_null *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_null(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_null *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_null(struct ndr_print *ndr, const char *name, const struct epm_rhs_null *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_null");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_ncalrpc(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_ncalrpc *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->minor_version));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_ncalrpc(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_ncalrpc *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->minor_version));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_ncalrpc(struct ndr_print *ndr, const char *name, const struct epm_rhs_ncalrpc *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_ncalrpc");
- ndr->depth++;
- ndr_print_uint16(ndr, "minor_version", r->minor_version);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_appletalk(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_appletalk *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_appletalk(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_appletalk *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_appletalk(struct ndr_print *ndr, const char *name, const struct epm_rhs_appletalk *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_appletalk");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_atalk_stream(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_atalk_stream *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_atalk_stream(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_atalk_stream *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_atalk_stream(struct ndr_print *ndr, const char *name, const struct epm_rhs_atalk_stream *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_atalk_stream");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_atalk_datagram(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_atalk_datagram *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_atalk_datagram(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_atalk_datagram *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_atalk_datagram(struct ndr_print *ndr, const char *name, const struct epm_rhs_atalk_datagram *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_atalk_datagram");
- ndr->depth++;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_vines_spp(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_vines_spp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_vines_spp(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_vines_spp *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_vines_spp(struct ndr_print *ndr, const char *name, const struct epm_rhs_vines_spp *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_vines_spp");
- ndr->depth++;
- ndr_print_uint16(ndr, "port", r->port);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_vines_ipc(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_vines_ipc *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_vines_ipc(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_vines_ipc *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->port));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_vines_ipc(struct ndr_print *ndr, const char *name, const struct epm_rhs_vines_ipc *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_vines_ipc");
- ndr->depth++;
- ndr_print_uint16(ndr, "port", r->port);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs_streettalk(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_streettalk *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->streettalk));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs_streettalk(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_streettalk *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->streettalk));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs_streettalk(struct ndr_print *ndr, const char *name, const struct epm_rhs_streettalk *r)
-{
- ndr_print_struct(ndr, name, "epm_rhs_streettalk");
- ndr->depth++;
- ndr_print_string(ndr, "streettalk", r->streettalk);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_rhs(struct ndr_push *ndr, int ndr_flags, const union epm_rhs *r)
-{
- {
- uint32_t _flags_save_UNION = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case EPM_PROTOCOL_DNET_NSP:
- NDR_CHECK(ndr_push_epm_rhs_dnet_nsp(ndr, NDR_SCALARS, &r->dnet_nsp));
- break;
-
- case EPM_PROTOCOL_OSI_TP4:
- NDR_CHECK(ndr_push_epm_rhs_osi_tp4(ndr, NDR_SCALARS, &r->osi_tp4));
- break;
-
- case EPM_PROTOCOL_OSI_CLNS:
- NDR_CHECK(ndr_push_epm_rhs_osi_clns(ndr, NDR_SCALARS, &r->osi_clns));
- break;
-
- case EPM_PROTOCOL_TCP:
- NDR_CHECK(ndr_push_epm_rhs_tcp(ndr, NDR_SCALARS, &r->tcp));
- break;
-
- case EPM_PROTOCOL_UDP:
- NDR_CHECK(ndr_push_epm_rhs_udp(ndr, NDR_SCALARS, &r->udp));
- break;
-
- case EPM_PROTOCOL_IP:
- NDR_CHECK(ndr_push_epm_rhs_ip(ndr, NDR_SCALARS, &r->ip));
- break;
-
- case EPM_PROTOCOL_NCADG:
- NDR_CHECK(ndr_push_epm_rhs_ncadg(ndr, NDR_SCALARS, &r->ncadg));
- break;
-
- case EPM_PROTOCOL_NCACN:
- NDR_CHECK(ndr_push_epm_rhs_ncacn(ndr, NDR_SCALARS, &r->ncacn));
- break;
-
- case EPM_PROTOCOL_NCALRPC:
- NDR_CHECK(ndr_push_epm_rhs_ncalrpc(ndr, NDR_SCALARS, &r->ncalrpc));
- break;
-
- case EPM_PROTOCOL_UUID:
- NDR_CHECK(ndr_push_epm_rhs_uuid(ndr, NDR_SCALARS, &r->uuid));
- break;
-
- case EPM_PROTOCOL_IPX:
- NDR_CHECK(ndr_push_epm_rhs_ipx(ndr, NDR_SCALARS, &r->ipx));
- break;
-
- case EPM_PROTOCOL_SMB:
- NDR_CHECK(ndr_push_epm_rhs_smb(ndr, NDR_SCALARS, &r->smb));
- break;
-
- case EPM_PROTOCOL_PIPE:
- NDR_CHECK(ndr_push_epm_rhs_pipe(ndr, NDR_SCALARS, &r->pipe));
- break;
-
- case EPM_PROTOCOL_NETBIOS:
- NDR_CHECK(ndr_push_epm_rhs_netbios(ndr, NDR_SCALARS, &r->netbios));
- break;
-
- case EPM_PROTOCOL_NETBEUI:
- NDR_CHECK(ndr_push_epm_rhs_netbeui(ndr, NDR_SCALARS, &r->netbeui));
- break;
-
- case EPM_PROTOCOL_SPX:
- NDR_CHECK(ndr_push_epm_rhs_spx(ndr, NDR_SCALARS, &r->spx));
- break;
-
- case EPM_PROTOCOL_NB_IPX:
- NDR_CHECK(ndr_push_epm_rhs_nb_ipx(ndr, NDR_SCALARS, &r->nb_ipx));
- break;
-
- case EPM_PROTOCOL_DSP:
- NDR_CHECK(ndr_push_epm_rhs_atalk_stream(ndr, NDR_SCALARS, &r->atalk_stream));
- break;
-
- case EPM_PROTOCOL_DDP:
- NDR_CHECK(ndr_push_epm_rhs_atalk_datagram(ndr, NDR_SCALARS, &r->atalk_datagram));
- break;
-
- case EPM_PROTOCOL_APPLETALK:
- NDR_CHECK(ndr_push_epm_rhs_appletalk(ndr, NDR_SCALARS, &r->appletalk));
- break;
-
- case EPM_PROTOCOL_VINES_SPP:
- NDR_CHECK(ndr_push_epm_rhs_vines_spp(ndr, NDR_SCALARS, &r->vines_spp));
- break;
-
- case EPM_PROTOCOL_VINES_IPC:
- NDR_CHECK(ndr_push_epm_rhs_vines_ipc(ndr, NDR_SCALARS, &r->vines_ipc));
- break;
-
- case EPM_PROTOCOL_STREETTALK:
- NDR_CHECK(ndr_push_epm_rhs_streettalk(ndr, NDR_SCALARS, &r->streettalk));
- break;
-
- case EPM_PROTOCOL_HTTP:
- NDR_CHECK(ndr_push_epm_rhs_http(ndr, NDR_SCALARS, &r->http));
- break;
-
- case EPM_PROTOCOL_UNIX_DS:
- NDR_CHECK(ndr_push_epm_rhs_unix_ds(ndr, NDR_SCALARS, &r->unix_ds));
- break;
-
- case EPM_PROTOCOL_NULL:
- NDR_CHECK(ndr_push_epm_rhs_null(ndr, NDR_SCALARS, &r->null));
- break;
-
- default:
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->unknown));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case EPM_PROTOCOL_DNET_NSP:
- break;
-
- case EPM_PROTOCOL_OSI_TP4:
- break;
-
- case EPM_PROTOCOL_OSI_CLNS:
- break;
-
- case EPM_PROTOCOL_TCP:
- break;
-
- case EPM_PROTOCOL_UDP:
- break;
-
- case EPM_PROTOCOL_IP:
- break;
-
- case EPM_PROTOCOL_NCADG:
- break;
-
- case EPM_PROTOCOL_NCACN:
- break;
-
- case EPM_PROTOCOL_NCALRPC:
- break;
-
- case EPM_PROTOCOL_UUID:
- break;
-
- case EPM_PROTOCOL_IPX:
- break;
-
- case EPM_PROTOCOL_SMB:
- break;
-
- case EPM_PROTOCOL_PIPE:
- break;
-
- case EPM_PROTOCOL_NETBIOS:
- break;
-
- case EPM_PROTOCOL_NETBEUI:
- break;
-
- case EPM_PROTOCOL_SPX:
- break;
-
- case EPM_PROTOCOL_NB_IPX:
- break;
-
- case EPM_PROTOCOL_DSP:
- break;
-
- case EPM_PROTOCOL_DDP:
- break;
-
- case EPM_PROTOCOL_APPLETALK:
- break;
-
- case EPM_PROTOCOL_VINES_SPP:
- break;
-
- case EPM_PROTOCOL_VINES_IPC:
- break;
-
- case EPM_PROTOCOL_STREETTALK:
- break;
-
- case EPM_PROTOCOL_HTTP:
- break;
-
- case EPM_PROTOCOL_UNIX_DS:
- break;
-
- case EPM_PROTOCOL_NULL:
- break;
-
- default:
- break;
-
- }
- }
- ndr->flags = _flags_save_UNION;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_rhs(struct ndr_pull *ndr, int ndr_flags, union epm_rhs *r)
-{
- int level;
- {
- uint32_t _flags_save_UNION = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- switch (level) {
- case EPM_PROTOCOL_DNET_NSP: {
- NDR_CHECK(ndr_pull_epm_rhs_dnet_nsp(ndr, NDR_SCALARS, &r->dnet_nsp));
- break; }
-
- case EPM_PROTOCOL_OSI_TP4: {
- NDR_CHECK(ndr_pull_epm_rhs_osi_tp4(ndr, NDR_SCALARS, &r->osi_tp4));
- break; }
-
- case EPM_PROTOCOL_OSI_CLNS: {
- NDR_CHECK(ndr_pull_epm_rhs_osi_clns(ndr, NDR_SCALARS, &r->osi_clns));
- break; }
-
- case EPM_PROTOCOL_TCP: {
- NDR_CHECK(ndr_pull_epm_rhs_tcp(ndr, NDR_SCALARS, &r->tcp));
- break; }
-
- case EPM_PROTOCOL_UDP: {
- NDR_CHECK(ndr_pull_epm_rhs_udp(ndr, NDR_SCALARS, &r->udp));
- break; }
-
- case EPM_PROTOCOL_IP: {
- NDR_CHECK(ndr_pull_epm_rhs_ip(ndr, NDR_SCALARS, &r->ip));
- break; }
-
- case EPM_PROTOCOL_NCADG: {
- NDR_CHECK(ndr_pull_epm_rhs_ncadg(ndr, NDR_SCALARS, &r->ncadg));
- break; }
-
- case EPM_PROTOCOL_NCACN: {
- NDR_CHECK(ndr_pull_epm_rhs_ncacn(ndr, NDR_SCALARS, &r->ncacn));
- break; }
-
- case EPM_PROTOCOL_NCALRPC: {
- NDR_CHECK(ndr_pull_epm_rhs_ncalrpc(ndr, NDR_SCALARS, &r->ncalrpc));
- break; }
-
- case EPM_PROTOCOL_UUID: {
- NDR_CHECK(ndr_pull_epm_rhs_uuid(ndr, NDR_SCALARS, &r->uuid));
- break; }
-
- case EPM_PROTOCOL_IPX: {
- NDR_CHECK(ndr_pull_epm_rhs_ipx(ndr, NDR_SCALARS, &r->ipx));
- break; }
-
- case EPM_PROTOCOL_SMB: {
- NDR_CHECK(ndr_pull_epm_rhs_smb(ndr, NDR_SCALARS, &r->smb));
- break; }
-
- case EPM_PROTOCOL_PIPE: {
- NDR_CHECK(ndr_pull_epm_rhs_pipe(ndr, NDR_SCALARS, &r->pipe));
- break; }
-
- case EPM_PROTOCOL_NETBIOS: {
- NDR_CHECK(ndr_pull_epm_rhs_netbios(ndr, NDR_SCALARS, &r->netbios));
- break; }
-
- case EPM_PROTOCOL_NETBEUI: {
- NDR_CHECK(ndr_pull_epm_rhs_netbeui(ndr, NDR_SCALARS, &r->netbeui));
- break; }
-
- case EPM_PROTOCOL_SPX: {
- NDR_CHECK(ndr_pull_epm_rhs_spx(ndr, NDR_SCALARS, &r->spx));
- break; }
-
- case EPM_PROTOCOL_NB_IPX: {
- NDR_CHECK(ndr_pull_epm_rhs_nb_ipx(ndr, NDR_SCALARS, &r->nb_ipx));
- break; }
-
- case EPM_PROTOCOL_DSP: {
- NDR_CHECK(ndr_pull_epm_rhs_atalk_stream(ndr, NDR_SCALARS, &r->atalk_stream));
- break; }
-
- case EPM_PROTOCOL_DDP: {
- NDR_CHECK(ndr_pull_epm_rhs_atalk_datagram(ndr, NDR_SCALARS, &r->atalk_datagram));
- break; }
-
- case EPM_PROTOCOL_APPLETALK: {
- NDR_CHECK(ndr_pull_epm_rhs_appletalk(ndr, NDR_SCALARS, &r->appletalk));
- break; }
-
- case EPM_PROTOCOL_VINES_SPP: {
- NDR_CHECK(ndr_pull_epm_rhs_vines_spp(ndr, NDR_SCALARS, &r->vines_spp));
- break; }
-
- case EPM_PROTOCOL_VINES_IPC: {
- NDR_CHECK(ndr_pull_epm_rhs_vines_ipc(ndr, NDR_SCALARS, &r->vines_ipc));
- break; }
-
- case EPM_PROTOCOL_STREETTALK: {
- NDR_CHECK(ndr_pull_epm_rhs_streettalk(ndr, NDR_SCALARS, &r->streettalk));
- break; }
-
- case EPM_PROTOCOL_HTTP: {
- NDR_CHECK(ndr_pull_epm_rhs_http(ndr, NDR_SCALARS, &r->http));
- break; }
-
- case EPM_PROTOCOL_UNIX_DS: {
- NDR_CHECK(ndr_pull_epm_rhs_unix_ds(ndr, NDR_SCALARS, &r->unix_ds));
- break; }
-
- case EPM_PROTOCOL_NULL: {
- NDR_CHECK(ndr_pull_epm_rhs_null(ndr, NDR_SCALARS, &r->null));
- break; }
-
- default: {
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->unknown));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case EPM_PROTOCOL_DNET_NSP:
- break;
-
- case EPM_PROTOCOL_OSI_TP4:
- break;
-
- case EPM_PROTOCOL_OSI_CLNS:
- break;
-
- case EPM_PROTOCOL_TCP:
- break;
-
- case EPM_PROTOCOL_UDP:
- break;
-
- case EPM_PROTOCOL_IP:
- break;
-
- case EPM_PROTOCOL_NCADG:
- break;
-
- case EPM_PROTOCOL_NCACN:
- break;
-
- case EPM_PROTOCOL_NCALRPC:
- break;
-
- case EPM_PROTOCOL_UUID:
- break;
-
- case EPM_PROTOCOL_IPX:
- break;
-
- case EPM_PROTOCOL_SMB:
- break;
-
- case EPM_PROTOCOL_PIPE:
- break;
-
- case EPM_PROTOCOL_NETBIOS:
- break;
-
- case EPM_PROTOCOL_NETBEUI:
- break;
-
- case EPM_PROTOCOL_SPX:
- break;
-
- case EPM_PROTOCOL_NB_IPX:
- break;
-
- case EPM_PROTOCOL_DSP:
- break;
-
- case EPM_PROTOCOL_DDP:
- break;
-
- case EPM_PROTOCOL_APPLETALK:
- break;
-
- case EPM_PROTOCOL_VINES_SPP:
- break;
-
- case EPM_PROTOCOL_VINES_IPC:
- break;
-
- case EPM_PROTOCOL_STREETTALK:
- break;
-
- case EPM_PROTOCOL_HTTP:
- break;
-
- case EPM_PROTOCOL_UNIX_DS:
- break;
-
- case EPM_PROTOCOL_NULL:
- break;
-
- default:
- break;
-
- }
- }
- ndr->flags = _flags_save_UNION;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_rhs(struct ndr_print *ndr, const char *name, const union epm_rhs *r)
-{
- int level;
- {
- uint32_t _flags_save_UNION = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "epm_rhs");
- switch (level) {
- case EPM_PROTOCOL_DNET_NSP:
- ndr_print_epm_rhs_dnet_nsp(ndr, "dnet_nsp", &r->dnet_nsp);
- break;
-
- case EPM_PROTOCOL_OSI_TP4:
- ndr_print_epm_rhs_osi_tp4(ndr, "osi_tp4", &r->osi_tp4);
- break;
-
- case EPM_PROTOCOL_OSI_CLNS:
- ndr_print_epm_rhs_osi_clns(ndr, "osi_clns", &r->osi_clns);
- break;
-
- case EPM_PROTOCOL_TCP:
- ndr_print_epm_rhs_tcp(ndr, "tcp", &r->tcp);
- break;
-
- case EPM_PROTOCOL_UDP:
- ndr_print_epm_rhs_udp(ndr, "udp", &r->udp);
- break;
-
- case EPM_PROTOCOL_IP:
- ndr_print_epm_rhs_ip(ndr, "ip", &r->ip);
- break;
-
- case EPM_PROTOCOL_NCADG:
- ndr_print_epm_rhs_ncadg(ndr, "ncadg", &r->ncadg);
- break;
-
- case EPM_PROTOCOL_NCACN:
- ndr_print_epm_rhs_ncacn(ndr, "ncacn", &r->ncacn);
- break;
-
- case EPM_PROTOCOL_NCALRPC:
- ndr_print_epm_rhs_ncalrpc(ndr, "ncalrpc", &r->ncalrpc);
- break;
-
- case EPM_PROTOCOL_UUID:
- ndr_print_epm_rhs_uuid(ndr, "uuid", &r->uuid);
- break;
-
- case EPM_PROTOCOL_IPX:
- ndr_print_epm_rhs_ipx(ndr, "ipx", &r->ipx);
- break;
-
- case EPM_PROTOCOL_SMB:
- ndr_print_epm_rhs_smb(ndr, "smb", &r->smb);
- break;
-
- case EPM_PROTOCOL_PIPE:
- ndr_print_epm_rhs_pipe(ndr, "pipe", &r->pipe);
- break;
-
- case EPM_PROTOCOL_NETBIOS:
- ndr_print_epm_rhs_netbios(ndr, "netbios", &r->netbios);
- break;
-
- case EPM_PROTOCOL_NETBEUI:
- ndr_print_epm_rhs_netbeui(ndr, "netbeui", &r->netbeui);
- break;
-
- case EPM_PROTOCOL_SPX:
- ndr_print_epm_rhs_spx(ndr, "spx", &r->spx);
- break;
-
- case EPM_PROTOCOL_NB_IPX:
- ndr_print_epm_rhs_nb_ipx(ndr, "nb_ipx", &r->nb_ipx);
- break;
-
- case EPM_PROTOCOL_DSP:
- ndr_print_epm_rhs_atalk_stream(ndr, "atalk_stream", &r->atalk_stream);
- break;
-
- case EPM_PROTOCOL_DDP:
- ndr_print_epm_rhs_atalk_datagram(ndr, "atalk_datagram", &r->atalk_datagram);
- break;
-
- case EPM_PROTOCOL_APPLETALK:
- ndr_print_epm_rhs_appletalk(ndr, "appletalk", &r->appletalk);
- break;
-
- case EPM_PROTOCOL_VINES_SPP:
- ndr_print_epm_rhs_vines_spp(ndr, "vines_spp", &r->vines_spp);
- break;
-
- case EPM_PROTOCOL_VINES_IPC:
- ndr_print_epm_rhs_vines_ipc(ndr, "vines_ipc", &r->vines_ipc);
- break;
-
- case EPM_PROTOCOL_STREETTALK:
- ndr_print_epm_rhs_streettalk(ndr, "streettalk", &r->streettalk);
- break;
-
- case EPM_PROTOCOL_HTTP:
- ndr_print_epm_rhs_http(ndr, "http", &r->http);
- break;
-
- case EPM_PROTOCOL_UNIX_DS:
- ndr_print_epm_rhs_unix_ds(ndr, "unix_ds", &r->unix_ds);
- break;
-
- case EPM_PROTOCOL_NULL:
- ndr_print_epm_rhs_null(ndr, "null", &r->null);
- break;
-
- default:
- ndr_print_DATA_BLOB(ndr, "unknown", r->unknown);
- break;
-
- }
- ndr->flags = _flags_save_UNION;
- }
-}
-
-NTSTATUS ndr_push_epm_lhs(struct ndr_push *ndr, int ndr_flags, const struct epm_lhs *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_epm_protocol(ndr, NDR_SCALARS, r->protocol));
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->lhs_data));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_lhs(struct ndr_pull *ndr, int ndr_flags, struct epm_lhs *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_epm_protocol(ndr, NDR_SCALARS, &r->protocol));
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->lhs_data));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_lhs(struct ndr_print *ndr, const char *name, const struct epm_lhs *r)
-{
- ndr_print_struct(ndr, name, "epm_lhs");
- ndr->depth++;
- ndr_print_epm_protocol(ndr, "protocol", r->protocol);
- ndr_print_DATA_BLOB(ndr, "lhs_data", r->lhs_data);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_floor(struct ndr_push *ndr, int ndr_flags, const struct epm_floor *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- {
- struct ndr_push *_ndr_lhs;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_lhs, 2, -1));
- NDR_CHECK(ndr_push_epm_lhs(_ndr_lhs, NDR_SCALARS, &r->lhs));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_lhs, 2, -1));
- }
- {
- struct ndr_push *_ndr_rhs;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_rhs, 2, -1));
- NDR_CHECK(ndr_push_set_switch_value(_ndr_rhs, &r->rhs, r->lhs.protocol));
- NDR_CHECK(ndr_push_epm_rhs(_ndr_rhs, NDR_SCALARS, &r->rhs));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_rhs, 2, -1));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_floor(struct ndr_pull *ndr, int ndr_flags, struct epm_floor *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- {
- struct ndr_pull *_ndr_lhs;
- NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_lhs, 2, -1));
- NDR_CHECK(ndr_pull_epm_lhs(_ndr_lhs, NDR_SCALARS, &r->lhs));
- NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_lhs, 2, -1));
- }
- {
- struct ndr_pull *_ndr_rhs;
- NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_rhs, 2, -1));
- NDR_CHECK(ndr_pull_set_switch_value(_ndr_rhs, &r->rhs, r->lhs.protocol));
- NDR_CHECK(ndr_pull_epm_rhs(_ndr_rhs, NDR_SCALARS, &r->rhs));
- NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_rhs, 2, -1));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_floor(struct ndr_print *ndr, const char *name, const struct epm_floor *r)
-{
- ndr_print_struct(ndr, name, "epm_floor");
- ndr->depth++;
- ndr_print_epm_lhs(ndr, "lhs", &r->lhs);
- ndr_print_set_switch_value(ndr, &r->rhs, r->lhs.protocol);
- ndr_print_epm_rhs(ndr, "rhs", &r->rhs);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_tower(struct ndr_push *ndr, int ndr_flags, const struct epm_tower *r)
-{
- uint32_t cntr_floors_0;
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN|LIBNDR_FLAG_LITTLE_ENDIAN);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_floors));
- for (cntr_floors_0 = 0; cntr_floors_0 < r->num_floors; cntr_floors_0++) {
- NDR_CHECK(ndr_push_epm_floor(ndr, NDR_SCALARS, &r->floors[cntr_floors_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_tower(struct ndr_pull *ndr, int ndr_flags, struct epm_tower *r)
-{
- uint32_t cntr_floors_0;
- TALLOC_CTX *_mem_save_floors_0;
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN|LIBNDR_FLAG_LITTLE_ENDIAN);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_floors));
- NDR_PULL_ALLOC_N(ndr, r->floors, r->num_floors);
- _mem_save_floors_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->floors, 0);
- for (cntr_floors_0 = 0; cntr_floors_0 < r->num_floors; cntr_floors_0++) {
- NDR_CHECK(ndr_pull_epm_floor(ndr, NDR_SCALARS, &r->floors[cntr_floors_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_floors_0, 0);
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_tower(struct ndr_print *ndr, const char *name, const struct epm_tower *r)
-{
- uint32_t cntr_floors_0;
- ndr_print_struct(ndr, name, "epm_tower");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN|LIBNDR_FLAG_LITTLE_ENDIAN);
- ndr->depth++;
- ndr_print_uint16(ndr, "num_floors", r->num_floors);
- ndr->print(ndr, "%s: ARRAY(%d)", "floors", r->num_floors);
- ndr->depth++;
- for (cntr_floors_0=0;cntr_floors_0<r->num_floors;cntr_floors_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_floors_0);
- if (idx_0) {
- ndr_print_epm_floor(ndr, "floors", &r->floors[cntr_floors_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-size_t ndr_size_epm_tower(const struct epm_tower *r, int flags)
-{
- flags |= LIBNDR_FLAG_NOALIGN|LIBNDR_FLAG_LITTLE_ENDIAN;
- return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_epm_tower);
-}
-
-NTSTATUS ndr_push_epm_twr_t(struct ndr_push *ndr, int ndr_flags, const struct epm_twr_t *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_epm_tower(&r->tower, ndr->flags)));
- {
- struct ndr_push *_ndr_tower;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_tower, 4, -1));
- NDR_CHECK(ndr_push_epm_tower(_ndr_tower, NDR_SCALARS, &r->tower));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_tower, 4, -1));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_twr_t(struct ndr_pull *ndr, int ndr_flags, struct epm_twr_t *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tower_length));
- {
- struct ndr_pull *_ndr_tower;
- NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_tower, 4, -1));
- NDR_CHECK(ndr_pull_epm_tower(_ndr_tower, NDR_SCALARS, &r->tower));
- NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_tower, 4, -1));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_twr_t(struct ndr_print *ndr, const char *name, const struct epm_twr_t *r)
-{
- ndr_print_struct(ndr, name, "epm_twr_t");
- ndr->depth++;
- ndr_print_uint32(ndr, "tower_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_epm_tower(&r->tower, ndr->flags):r->tower_length);
- ndr_print_epm_tower(ndr, "tower", &r->tower);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_entry_t(struct ndr_push *ndr, int ndr_flags, const struct epm_entry_t *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->object));
- NDR_CHECK(ndr_push_full_ptr(ndr, r->tower));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_LEN4);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->annotation));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->object));
- if (r->tower) {
- NDR_CHECK(ndr_push_epm_twr_t(ndr, NDR_SCALARS, r->tower));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_entry_t(struct ndr_pull *ndr, int ndr_flags, struct epm_entry_t *r)
-{
- uint32_t _ptr_tower;
- TALLOC_CTX *_mem_save_tower_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->object));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_tower));
- if (_ptr_tower) {
- NDR_PULL_ALLOC(ndr, r->tower);
- } else {
- r->tower = NULL;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_LEN4);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->annotation));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->object));
- if (r->tower) {
- _mem_save_tower_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->tower, 0);
- NDR_CHECK(ndr_pull_epm_twr_t(ndr, NDR_SCALARS, r->tower));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tower_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_entry_t(struct ndr_print *ndr, const char *name, const struct epm_entry_t *r)
-{
- ndr_print_struct(ndr, name, "epm_entry_t");
- ndr->depth++;
- ndr_print_GUID(ndr, "object", &r->object);
- ndr_print_ptr(ndr, "tower", r->tower);
- ndr->depth++;
- if (r->tower) {
- ndr_print_epm_twr_t(ndr, "tower", r->tower);
- }
- ndr->depth--;
- ndr_print_string(ndr, "annotation", r->annotation);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_rpc_if_id_t(struct ndr_push *ndr, int ndr_flags, const struct rpc_if_id_t *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->uuid));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->vers_major));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->vers_minor));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->uuid));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_rpc_if_id_t(struct ndr_pull *ndr, int ndr_flags, struct rpc_if_id_t *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->uuid));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->vers_major));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->vers_minor));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->uuid));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_rpc_if_id_t(struct ndr_print *ndr, const char *name, const struct rpc_if_id_t *r)
-{
- ndr_print_struct(ndr, name, "rpc_if_id_t");
- ndr->depth++;
- ndr_print_GUID(ndr, "uuid", &r->uuid);
- ndr_print_uint16(ndr, "vers_major", r->vers_major);
- ndr_print_uint16(ndr, "vers_minor", r->vers_minor);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_twr_p_t(struct ndr_push *ndr, int ndr_flags, const struct epm_twr_p_t *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_full_ptr(ndr, r->twr));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->twr) {
- NDR_CHECK(ndr_push_epm_twr_t(ndr, NDR_SCALARS, r->twr));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_twr_p_t(struct ndr_pull *ndr, int ndr_flags, struct epm_twr_p_t *r)
-{
- uint32_t _ptr_twr;
- TALLOC_CTX *_mem_save_twr_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_twr));
- if (_ptr_twr) {
- NDR_PULL_ALLOC(ndr, r->twr);
- } else {
- r->twr = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->twr) {
- _mem_save_twr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->twr, 0);
- NDR_CHECK(ndr_pull_epm_twr_t(ndr, NDR_SCALARS, r->twr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_twr_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_twr_p_t(struct ndr_print *ndr, const char *name, const struct epm_twr_p_t *r)
-{
- ndr_print_struct(ndr, name, "epm_twr_p_t");
- ndr->depth++;
- ndr_print_ptr(ndr, "twr", r->twr);
- ndr->depth++;
- if (r->twr) {
- ndr_print_epm_twr_t(ndr, "twr", r->twr);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_Insert(struct ndr_push *ndr, int flags, const struct epm_Insert *r)
-{
- uint32_t cntr_entries_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_ents));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_ents));
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_push_epm_entry_t(ndr, NDR_SCALARS, &r->in.entries[cntr_entries_0]));
- }
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_push_epm_entry_t(ndr, NDR_BUFFERS, &r->in.entries[cntr_entries_0]));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.replace));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_Insert(struct ndr_pull *ndr, int flags, struct epm_Insert *r)
-{
- uint32_t cntr_entries_0;
- TALLOC_CTX *_mem_save_entries_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_ents));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.entries));
- NDR_PULL_ALLOC_N(ndr, r->in.entries, ndr_get_array_size(ndr, &r->in.entries));
- _mem_save_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.entries, 0);
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_pull_epm_entry_t(ndr, NDR_SCALARS, &r->in.entries[cntr_entries_0]));
- }
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_pull_epm_entry_t(ndr, NDR_BUFFERS, &r->in.entries[cntr_entries_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_0, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.replace));
- if (r->in.entries) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.entries, r->in.num_ents));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_Insert(struct ndr_print *ndr, const char *name, int flags, const struct epm_Insert *r)
-{
- uint32_t cntr_entries_0;
- ndr_print_struct(ndr, name, "epm_Insert");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_Insert");
- ndr->depth++;
- ndr_print_uint32(ndr, "num_ents", r->in.num_ents);
- ndr->print(ndr, "%s: ARRAY(%d)", "entries", r->in.num_ents);
- ndr->depth++;
- for (cntr_entries_0=0;cntr_entries_0<r->in.num_ents;cntr_entries_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_entries_0);
- if (idx_0) {
- ndr_print_epm_entry_t(ndr, "entries", &r->in.entries[cntr_entries_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "replace", r->in.replace);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_Insert");
- ndr->depth++;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_Delete(struct ndr_push *ndr, int flags, const struct epm_Delete *r)
-{
- uint32_t cntr_entries_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_ents));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_ents));
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_push_epm_entry_t(ndr, NDR_SCALARS, &r->in.entries[cntr_entries_0]));
- }
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_push_epm_entry_t(ndr, NDR_BUFFERS, &r->in.entries[cntr_entries_0]));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_Delete(struct ndr_pull *ndr, int flags, struct epm_Delete *r)
-{
- uint32_t cntr_entries_0;
- TALLOC_CTX *_mem_save_entries_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_ents));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.entries));
- NDR_PULL_ALLOC_N(ndr, r->in.entries, ndr_get_array_size(ndr, &r->in.entries));
- _mem_save_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.entries, 0);
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_pull_epm_entry_t(ndr, NDR_SCALARS, &r->in.entries[cntr_entries_0]));
- }
- for (cntr_entries_0 = 0; cntr_entries_0 < r->in.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_pull_epm_entry_t(ndr, NDR_BUFFERS, &r->in.entries[cntr_entries_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_0, 0);
- if (r->in.entries) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.entries, r->in.num_ents));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_Delete(struct ndr_print *ndr, const char *name, int flags, const struct epm_Delete *r)
-{
- uint32_t cntr_entries_0;
- ndr_print_struct(ndr, name, "epm_Delete");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_Delete");
- ndr->depth++;
- ndr_print_uint32(ndr, "num_ents", r->in.num_ents);
- ndr->print(ndr, "%s: ARRAY(%d)", "entries", r->in.num_ents);
- ndr->depth++;
- for (cntr_entries_0=0;cntr_entries_0<r->in.num_ents;cntr_entries_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_entries_0);
- if (idx_0) {
- ndr_print_epm_entry_t(ndr, "entries", &r->in.entries[cntr_entries_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_Delete");
- ndr->depth++;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_Lookup(struct ndr_push *ndr, int flags, const struct epm_Lookup *r)
-{
- uint32_t cntr_entries_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.inquiry_type));
- NDR_CHECK(ndr_push_full_ptr(ndr, r->in.object));
- if (r->in.object) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.object));
- }
- NDR_CHECK(ndr_push_full_ptr(ndr, r->in.interface_id));
- if (r->in.interface_id) {
- NDR_CHECK(ndr_push_rpc_if_id_t(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.interface_id));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.vers_option));
- if (r->in.entry_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.entry_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_ents));
- }
- if (flags & NDR_OUT) {
- if (r->out.entry_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.entry_handle));
- if (r->out.num_ents == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_ents));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_ents));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_ents));
- for (cntr_entries_0 = 0; cntr_entries_0 < *r->out.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_push_epm_entry_t(ndr, NDR_SCALARS, &r->out.entries[cntr_entries_0]));
- }
- for (cntr_entries_0 = 0; cntr_entries_0 < *r->out.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_push_epm_entry_t(ndr, NDR_BUFFERS, &r->out.entries[cntr_entries_0]));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_Lookup(struct ndr_pull *ndr, int flags, struct epm_Lookup *r)
-{
- uint32_t _ptr_object;
- uint32_t _ptr_interface_id;
- uint32_t cntr_entries_0;
- TALLOC_CTX *_mem_save_object_0;
- TALLOC_CTX *_mem_save_interface_id_0;
- TALLOC_CTX *_mem_save_entry_handle_0;
- TALLOC_CTX *_mem_save_num_ents_0;
- TALLOC_CTX *_mem_save_entries_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.inquiry_type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object));
- if (_ptr_object) {
- NDR_PULL_ALLOC(ndr, r->in.object);
- } else {
- r->in.object = NULL;
- }
- if (r->in.object) {
- _mem_save_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.object, 0);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.object));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_interface_id));
- if (_ptr_interface_id) {
- NDR_PULL_ALLOC(ndr, r->in.interface_id);
- } else {
- r->in.interface_id = NULL;
- }
- if (r->in.interface_id) {
- _mem_save_interface_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.interface_id, 0);
- NDR_CHECK(ndr_pull_rpc_if_id_t(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.interface_id));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_interface_id_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.vers_option));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.entry_handle);
- }
- _mem_save_entry_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.entry_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.entry_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entry_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_ents));
- NDR_PULL_ALLOC(ndr, r->out.entry_handle);
- *r->out.entry_handle = *r->in.entry_handle;
- NDR_PULL_ALLOC(ndr, r->out.num_ents);
- ZERO_STRUCTP(r->out.num_ents);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.entry_handle);
- }
- _mem_save_entry_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.entry_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.entry_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entry_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.num_ents);
- }
- _mem_save_num_ents_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.num_ents, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_ents));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_ents_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.entries));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->out.entries));
- if (ndr_get_array_length(ndr, &r->out.entries) > ndr_get_array_size(ndr, &r->out.entries)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.entries), ndr_get_array_length(ndr, &r->out.entries));
- }
- NDR_PULL_ALLOC_N(ndr, r->out.entries, ndr_get_array_size(ndr, &r->out.entries));
- _mem_save_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.entries, 0);
- for (cntr_entries_0 = 0; cntr_entries_0 < *r->out.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_pull_epm_entry_t(ndr, NDR_SCALARS, &r->out.entries[cntr_entries_0]));
- }
- for (cntr_entries_0 = 0; cntr_entries_0 < *r->out.num_ents; cntr_entries_0++) {
- NDR_CHECK(ndr_pull_epm_entry_t(ndr, NDR_BUFFERS, &r->out.entries[cntr_entries_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_0, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.entries) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.entries, r->in.max_ents));
- }
- if (r->out.entries) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.entries, *r->out.num_ents));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_Lookup(struct ndr_print *ndr, const char *name, int flags, const struct epm_Lookup *r)
-{
- uint32_t cntr_entries_0;
- ndr_print_struct(ndr, name, "epm_Lookup");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_Lookup");
- ndr->depth++;
- ndr_print_uint32(ndr, "inquiry_type", r->in.inquiry_type);
- ndr_print_ptr(ndr, "object", r->in.object);
- ndr->depth++;
- if (r->in.object) {
- ndr_print_GUID(ndr, "object", r->in.object);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "interface_id", r->in.interface_id);
- ndr->depth++;
- if (r->in.interface_id) {
- ndr_print_rpc_if_id_t(ndr, "interface_id", r->in.interface_id);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "vers_option", r->in.vers_option);
- ndr_print_ptr(ndr, "entry_handle", r->in.entry_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "entry_handle", r->in.entry_handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_ents", r->in.max_ents);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_Lookup");
- ndr->depth++;
- ndr_print_ptr(ndr, "entry_handle", r->out.entry_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "entry_handle", r->out.entry_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "num_ents", r->out.num_ents);
- ndr->depth++;
- ndr_print_uint32(ndr, "num_ents", *r->out.num_ents);
- ndr->depth--;
- ndr->print(ndr, "%s: ARRAY(%d)", "entries", *r->out.num_ents);
- ndr->depth++;
- for (cntr_entries_0=0;cntr_entries_0<*r->out.num_ents;cntr_entries_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_entries_0);
- if (idx_0) {
- ndr_print_epm_entry_t(ndr, "entries", &r->out.entries[cntr_entries_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_epm_Map(struct ndr_push *ndr, int flags, const struct epm_Map *r)
-{
- uint32_t cntr_towers_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_full_ptr(ndr, r->in.object));
- if (r->in.object) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.object));
- }
- NDR_CHECK(ndr_push_full_ptr(ndr, r->in.map_tower));
- if (r->in.map_tower) {
- NDR_CHECK(ndr_push_epm_twr_t(ndr, NDR_SCALARS, r->in.map_tower));
- }
- if (r->in.entry_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.entry_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_towers));
- }
- if (flags & NDR_OUT) {
- if (r->out.entry_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.entry_handle));
- if (r->out.num_towers == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_towers));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_towers));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_towers));
- for (cntr_towers_0 = 0; cntr_towers_0 < *r->out.num_towers; cntr_towers_0++) {
- NDR_CHECK(ndr_push_epm_twr_p_t(ndr, NDR_SCALARS, &r->out.towers[cntr_towers_0]));
- }
- for (cntr_towers_0 = 0; cntr_towers_0 < *r->out.num_towers; cntr_towers_0++) {
- NDR_CHECK(ndr_push_epm_twr_p_t(ndr, NDR_BUFFERS, &r->out.towers[cntr_towers_0]));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_epm_Map(struct ndr_pull *ndr, int flags, struct epm_Map *r)
-{
- uint32_t _ptr_object;
- uint32_t _ptr_map_tower;
- uint32_t cntr_towers_0;
- TALLOC_CTX *_mem_save_object_0;
- TALLOC_CTX *_mem_save_map_tower_0;
- TALLOC_CTX *_mem_save_entry_handle_0;
- TALLOC_CTX *_mem_save_num_towers_0;
- TALLOC_CTX *_mem_save_towers_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object));
- if (_ptr_object) {
- NDR_PULL_ALLOC(ndr, r->in.object);
- } else {
- r->in.object = NULL;
- }
- if (r->in.object) {
- _mem_save_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.object, 0);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.object));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_map_tower));
- if (_ptr_map_tower) {
- NDR_PULL_ALLOC(ndr, r->in.map_tower);
- } else {
- r->in.map_tower = NULL;
- }
- if (r->in.map_tower) {
- _mem_save_map_tower_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.map_tower, 0);
- NDR_CHECK(ndr_pull_epm_twr_t(ndr, NDR_SCALARS, r->in.map_tower));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_map_tower_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.entry_handle);
- }
- _mem_save_entry_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.entry_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.entry_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entry_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_towers));
- NDR_PULL_ALLOC(ndr, r->out.entry_handle);
- *r->out.entry_handle = *r->in.entry_handle;
- NDR_PULL_ALLOC(ndr, r->out.num_towers);
- ZERO_STRUCTP(r->out.num_towers);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.entry_handle);
- }
- _mem_save_entry_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.entry_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.entry_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entry_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.num_towers);
- }
- _mem_save_num_towers_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.num_towers, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_towers));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_towers_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.towers));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->out.towers));
- if (ndr_get_array_length(ndr, &r->out.towers) > ndr_get_array_size(ndr, &r->out.towers)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.towers), ndr_get_array_length(ndr, &r->out.towers));
- }
- NDR_PULL_ALLOC_N(ndr, r->out.towers, ndr_get_array_size(ndr, &r->out.towers));
- _mem_save_towers_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.towers, 0);
- for (cntr_towers_0 = 0; cntr_towers_0 < *r->out.num_towers; cntr_towers_0++) {
- NDR_CHECK(ndr_pull_epm_twr_p_t(ndr, NDR_SCALARS, &r->out.towers[cntr_towers_0]));
- }
- for (cntr_towers_0 = 0; cntr_towers_0 < *r->out.num_towers; cntr_towers_0++) {
- NDR_CHECK(ndr_pull_epm_twr_p_t(ndr, NDR_BUFFERS, &r->out.towers[cntr_towers_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_towers_0, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.towers) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.towers, r->in.max_towers));
- }
- if (r->out.towers) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.towers, *r->out.num_towers));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_Map(struct ndr_print *ndr, const char *name, int flags, const struct epm_Map *r)
-{
- uint32_t cntr_towers_0;
- ndr_print_struct(ndr, name, "epm_Map");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_Map");
- ndr->depth++;
- ndr_print_ptr(ndr, "object", r->in.object);
- ndr->depth++;
- if (r->in.object) {
- ndr_print_GUID(ndr, "object", r->in.object);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "map_tower", r->in.map_tower);
- ndr->depth++;
- if (r->in.map_tower) {
- ndr_print_epm_twr_t(ndr, "map_tower", r->in.map_tower);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "entry_handle", r->in.entry_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "entry_handle", r->in.entry_handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_towers", r->in.max_towers);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_Map");
- ndr->depth++;
- ndr_print_ptr(ndr, "entry_handle", r->out.entry_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "entry_handle", r->out.entry_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "num_towers", r->out.num_towers);
- ndr->depth++;
- ndr_print_uint32(ndr, "num_towers", *r->out.num_towers);
- ndr->depth--;
- ndr->print(ndr, "%s: ARRAY(%d)", "towers", *r->out.num_towers);
- ndr->depth++;
- for (cntr_towers_0=0;cntr_towers_0<*r->out.num_towers;cntr_towers_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_towers_0);
- if (idx_0) {
- ndr_print_epm_twr_p_t(ndr, "towers", &r->out.towers[cntr_towers_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_LookupHandleFree(struct ndr_push *ndr, int flags, const struct epm_LookupHandleFree *r)
-{
- if (flags & NDR_IN) {
- if (r->in.entry_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.entry_handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.entry_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.entry_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_LookupHandleFree(struct ndr_pull *ndr, int flags, struct epm_LookupHandleFree *r)
-{
- TALLOC_CTX *_mem_save_entry_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.entry_handle);
- }
- _mem_save_entry_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.entry_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.entry_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entry_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.entry_handle);
- *r->out.entry_handle = *r->in.entry_handle;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.entry_handle);
- }
- _mem_save_entry_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.entry_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.entry_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entry_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_LookupHandleFree(struct ndr_print *ndr, const char *name, int flags, const struct epm_LookupHandleFree *r)
-{
- ndr_print_struct(ndr, name, "epm_LookupHandleFree");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_LookupHandleFree");
- ndr->depth++;
- ndr_print_ptr(ndr, "entry_handle", r->in.entry_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "entry_handle", r->in.entry_handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_LookupHandleFree");
- ndr->depth++;
- ndr_print_ptr(ndr, "entry_handle", r->out.entry_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "entry_handle", r->out.entry_handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_InqObject(struct ndr_push *ndr, int flags, const struct epm_InqObject *r)
-{
- if (flags & NDR_IN) {
- if (r->in.epm_object == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.epm_object));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_InqObject(struct ndr_pull *ndr, int flags, struct epm_InqObject *r)
-{
- TALLOC_CTX *_mem_save_epm_object_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.epm_object);
- }
- _mem_save_epm_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.epm_object, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.epm_object));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_epm_object_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_InqObject(struct ndr_print *ndr, const char *name, int flags, const struct epm_InqObject *r)
-{
- ndr_print_struct(ndr, name, "epm_InqObject");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_InqObject");
- ndr->depth++;
- ndr_print_ptr(ndr, "epm_object", r->in.epm_object);
- ndr->depth++;
- ndr_print_GUID(ndr, "epm_object", r->in.epm_object);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_InqObject");
- ndr->depth++;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_MgmtDelete(struct ndr_push *ndr, int flags, const struct epm_MgmtDelete *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.object_speced));
- NDR_CHECK(ndr_push_full_ptr(ndr, r->in.object));
- if (r->in.object) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.object));
- }
- NDR_CHECK(ndr_push_full_ptr(ndr, r->in.tower));
- if (r->in.tower) {
- NDR_CHECK(ndr_push_epm_twr_t(ndr, NDR_SCALARS, r->in.tower));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_MgmtDelete(struct ndr_pull *ndr, int flags, struct epm_MgmtDelete *r)
-{
- uint32_t _ptr_object;
- uint32_t _ptr_tower;
- TALLOC_CTX *_mem_save_object_0;
- TALLOC_CTX *_mem_save_tower_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.object_speced));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object));
- if (_ptr_object) {
- NDR_PULL_ALLOC(ndr, r->in.object);
- } else {
- r->in.object = NULL;
- }
- if (r->in.object) {
- _mem_save_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.object, 0);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.object));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_tower));
- if (_ptr_tower) {
- NDR_PULL_ALLOC(ndr, r->in.tower);
- } else {
- r->in.tower = NULL;
- }
- if (r->in.tower) {
- _mem_save_tower_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.tower, 0);
- NDR_CHECK(ndr_pull_epm_twr_t(ndr, NDR_SCALARS, r->in.tower));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tower_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_MgmtDelete(struct ndr_print *ndr, const char *name, int flags, const struct epm_MgmtDelete *r)
-{
- ndr_print_struct(ndr, name, "epm_MgmtDelete");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_MgmtDelete");
- ndr->depth++;
- ndr_print_uint32(ndr, "object_speced", r->in.object_speced);
- ndr_print_ptr(ndr, "object", r->in.object);
- ndr->depth++;
- if (r->in.object) {
- ndr_print_GUID(ndr, "object", r->in.object);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "tower", r->in.tower);
- ndr->depth++;
- if (r->in.tower) {
- ndr_print_epm_twr_t(ndr, "tower", r->in.tower);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_MgmtDelete");
- ndr->depth++;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_epm_MapAuth(struct ndr_push *ndr, int flags, const struct epm_MapAuth *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_epm_MapAuth(struct ndr_pull *ndr, int flags, struct epm_MapAuth *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_epm_MapAuth(struct ndr_print *ndr, const char *name, int flags, const struct epm_MapAuth *r)
-{
- ndr_print_struct(ndr, name, "epm_MapAuth");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "epm_MapAuth");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "epm_MapAuth");
- ndr->depth++;
- ndr_print_uint32(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call epmapper_calls[] = {
- {
- "epm_Insert",
- sizeof(struct epm_Insert),
- (ndr_push_flags_fn_t) ndr_push_epm_Insert,
- (ndr_pull_flags_fn_t) ndr_pull_epm_Insert,
- (ndr_print_function_t) ndr_print_epm_Insert,
- False,
- },
- {
- "epm_Delete",
- sizeof(struct epm_Delete),
- (ndr_push_flags_fn_t) ndr_push_epm_Delete,
- (ndr_pull_flags_fn_t) ndr_pull_epm_Delete,
- (ndr_print_function_t) ndr_print_epm_Delete,
- False,
- },
- {
- "epm_Lookup",
- sizeof(struct epm_Lookup),
- (ndr_push_flags_fn_t) ndr_push_epm_Lookup,
- (ndr_pull_flags_fn_t) ndr_pull_epm_Lookup,
- (ndr_print_function_t) ndr_print_epm_Lookup,
- False,
- },
- {
- "epm_Map",
- sizeof(struct epm_Map),
- (ndr_push_flags_fn_t) ndr_push_epm_Map,
- (ndr_pull_flags_fn_t) ndr_pull_epm_Map,
- (ndr_print_function_t) ndr_print_epm_Map,
- False,
- },
- {
- "epm_LookupHandleFree",
- sizeof(struct epm_LookupHandleFree),
- (ndr_push_flags_fn_t) ndr_push_epm_LookupHandleFree,
- (ndr_pull_flags_fn_t) ndr_pull_epm_LookupHandleFree,
- (ndr_print_function_t) ndr_print_epm_LookupHandleFree,
- False,
- },
- {
- "epm_InqObject",
- sizeof(struct epm_InqObject),
- (ndr_push_flags_fn_t) ndr_push_epm_InqObject,
- (ndr_pull_flags_fn_t) ndr_pull_epm_InqObject,
- (ndr_print_function_t) ndr_print_epm_InqObject,
- False,
- },
- {
- "epm_MgmtDelete",
- sizeof(struct epm_MgmtDelete),
- (ndr_push_flags_fn_t) ndr_push_epm_MgmtDelete,
- (ndr_pull_flags_fn_t) ndr_pull_epm_MgmtDelete,
- (ndr_print_function_t) ndr_print_epm_MgmtDelete,
- False,
- },
- {
- "epm_MapAuth",
- sizeof(struct epm_MapAuth),
- (ndr_push_flags_fn_t) ndr_push_epm_MapAuth,
- (ndr_pull_flags_fn_t) ndr_pull_epm_MapAuth,
- (ndr_print_function_t) ndr_print_epm_MapAuth,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const epmapper_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\epmapper]",
- "ncacn_ip_tcp:[135]",
- "ncalrpc:[EPMAPPER]",
-};
-
-const struct dcerpc_endpoint_list epmapper_endpoints = {
- .count = 3,
- .names = epmapper_endpoint_strings
-};
-
-const char * const epmapper_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list epmapper_authservices = {
- .count = 3,
- .names = epmapper_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_epmapper = {
- .name = "epmapper",
- .syntax_id = {
- {0xe1af8308,0x5d1f,0x11c9,{0x91,0xa4},{0x08,0x00,0x2b,0x14,0xa0,0xfa}},
- DCERPC_EPMAPPER_VERSION
- },
- .helpstring = DCERPC_EPMAPPER_HELPSTRING,
- .num_calls = 8,
- .calls = epmapper_calls,
- .endpoints = &epmapper_endpoints,
- .authservices = &epmapper_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_epmapper.h b/source/librpc/gen_ndr/ndr_epmapper.h
deleted file mode 100644
index b8040f59eb7..00000000000
--- a/source/librpc/gen_ndr/ndr_epmapper.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/epmapper.h"
-
-#ifndef _HEADER_NDR_epmapper
-#define _HEADER_NDR_epmapper
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_EPMAPPER_UUID "e1af8308-5d1f-11c9-91a4-08002b14a0fa"
-#define DCERPC_EPMAPPER_VERSION 3.0
-#define DCERPC_EPMAPPER_NAME "epmapper"
-#define DCERPC_EPMAPPER_HELPSTRING "EndPoint Mapper"
-extern const struct dcerpc_interface_table dcerpc_table_epmapper;
-NTSTATUS dcerpc_server_epmapper_init(void);
-#define DCERPC_EPM_INSERT (0x00)
-
-#define DCERPC_EPM_DELETE (0x01)
-
-#define DCERPC_EPM_LOOKUP (0x02)
-
-#define DCERPC_EPM_MAP (0x03)
-
-#define DCERPC_EPM_LOOKUPHANDLEFREE (0x04)
-
-#define DCERPC_EPM_INQOBJECT (0x05)
-
-#define DCERPC_EPM_MGMTDELETE (0x06)
-
-#define DCERPC_EPM_MAPAUTH (0x07)
-
-#define DCERPC_EPMAPPER_CALL_COUNT (8)
-void ndr_print_epm_protocol(struct ndr_print *ndr, const char *name, enum epm_protocol r);
-void ndr_print_epm_rhs_dnet_nsp(struct ndr_print *ndr, const char *name, const struct epm_rhs_dnet_nsp *r);
-void ndr_print_epm_rhs_osi_tp4(struct ndr_print *ndr, const char *name, const struct epm_rhs_osi_tp4 *r);
-void ndr_print_epm_rhs_osi_clns(struct ndr_print *ndr, const char *name, const struct epm_rhs_osi_clns *r);
-void ndr_print_epm_rhs_udp(struct ndr_print *ndr, const char *name, const struct epm_rhs_udp *r);
-void ndr_print_epm_rhs_tcp(struct ndr_print *ndr, const char *name, const struct epm_rhs_tcp *r);
-void ndr_print_epm_rhs_ip(struct ndr_print *ndr, const char *name, const struct epm_rhs_ip *r);
-void ndr_print_epm_rhs_ncadg(struct ndr_print *ndr, const char *name, const struct epm_rhs_ncadg *r);
-void ndr_print_epm_rhs_ncacn(struct ndr_print *ndr, const char *name, const struct epm_rhs_ncacn *r);
-void ndr_print_epm_rhs_uuid(struct ndr_print *ndr, const char *name, const struct epm_rhs_uuid *r);
-void ndr_print_epm_rhs_ipx(struct ndr_print *ndr, const char *name, const struct epm_rhs_ipx *r);
-void ndr_print_epm_rhs_smb(struct ndr_print *ndr, const char *name, const struct epm_rhs_smb *r);
-void ndr_print_epm_rhs_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_pipe *r);
-void ndr_print_epm_rhs_netbios(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbios *r);
-void ndr_print_epm_rhs_netbeui(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbeui *r);
-void ndr_print_epm_rhs_spx(struct ndr_print *ndr, const char *name, const struct epm_rhs_spx *r);
-void ndr_print_epm_rhs_nb_ipx(struct ndr_print *ndr, const char *name, const struct epm_rhs_nb_ipx *r);
-void ndr_print_epm_rhs_http(struct ndr_print *ndr, const char *name, const struct epm_rhs_http *r);
-void ndr_print_epm_rhs_unix_ds(struct ndr_print *ndr, const char *name, const struct epm_rhs_unix_ds *r);
-void ndr_print_epm_rhs_null(struct ndr_print *ndr, const char *name, const struct epm_rhs_null *r);
-void ndr_print_epm_rhs_ncalrpc(struct ndr_print *ndr, const char *name, const struct epm_rhs_ncalrpc *r);
-void ndr_print_epm_rhs_appletalk(struct ndr_print *ndr, const char *name, const struct epm_rhs_appletalk *r);
-void ndr_print_epm_rhs_atalk_stream(struct ndr_print *ndr, const char *name, const struct epm_rhs_atalk_stream *r);
-void ndr_print_epm_rhs_atalk_datagram(struct ndr_print *ndr, const char *name, const struct epm_rhs_atalk_datagram *r);
-void ndr_print_epm_rhs_vines_spp(struct ndr_print *ndr, const char *name, const struct epm_rhs_vines_spp *r);
-void ndr_print_epm_rhs_vines_ipc(struct ndr_print *ndr, const char *name, const struct epm_rhs_vines_ipc *r);
-void ndr_print_epm_rhs_streettalk(struct ndr_print *ndr, const char *name, const struct epm_rhs_streettalk *r);
-void ndr_print_epm_rhs(struct ndr_print *ndr, const char *name, const union epm_rhs *r);
-void ndr_print_epm_lhs(struct ndr_print *ndr, const char *name, const struct epm_lhs *r);
-void ndr_print_epm_floor(struct ndr_print *ndr, const char *name, const struct epm_floor *r);
-void ndr_print_epm_tower(struct ndr_print *ndr, const char *name, const struct epm_tower *r);
-void ndr_print_epm_twr_t(struct ndr_print *ndr, const char *name, const struct epm_twr_t *r);
-void ndr_print_epm_entry_t(struct ndr_print *ndr, const char *name, const struct epm_entry_t *r);
-void ndr_print_rpc_if_id_t(struct ndr_print *ndr, const char *name, const struct rpc_if_id_t *r);
-void ndr_print_epm_twr_p_t(struct ndr_print *ndr, const char *name, const struct epm_twr_p_t *r);
-void ndr_print_epm_Insert(struct ndr_print *ndr, const char *name, int flags, const struct epm_Insert *r);
-void ndr_print_epm_Delete(struct ndr_print *ndr, const char *name, int flags, const struct epm_Delete *r);
-void ndr_print_epm_Lookup(struct ndr_print *ndr, const char *name, int flags, const struct epm_Lookup *r);
-NTSTATUS ndr_push_epm_Map(struct ndr_push *ndr, int flags, const struct epm_Map *r);
-NTSTATUS ndr_pull_epm_Map(struct ndr_pull *ndr, int flags, struct epm_Map *r);
-void ndr_print_epm_Map(struct ndr_print *ndr, const char *name, int flags, const struct epm_Map *r);
-void ndr_print_epm_LookupHandleFree(struct ndr_print *ndr, const char *name, int flags, const struct epm_LookupHandleFree *r);
-void ndr_print_epm_InqObject(struct ndr_print *ndr, const char *name, int flags, const struct epm_InqObject *r);
-void ndr_print_epm_MgmtDelete(struct ndr_print *ndr, const char *name, int flags, const struct epm_MgmtDelete *r);
-void ndr_print_epm_MapAuth(struct ndr_print *ndr, const char *name, int flags, const struct epm_MapAuth *r);
-#endif /* _HEADER_NDR_epmapper */
diff --git a/source/librpc/gen_ndr/ndr_eventlog.c b/source/librpc/gen_ndr/ndr_eventlog.c
deleted file mode 100644
index dc29a2ae651..00000000000
--- a/source/librpc/gen_ndr/ndr_eventlog.c
+++ /dev/null
@@ -1,1644 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_eventlog.h"
-
-#include "librpc/gen_ndr/ndr_lsa.h"
-#include "librpc/gen_ndr/ndr_security.h"
-NTSTATUS ndr_push_eventlog_OpenUnknown0(struct ndr_push *ndr, int ndr_flags, const struct eventlog_OpenUnknown0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown0));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_OpenUnknown0(struct ndr_pull *ndr, int ndr_flags, struct eventlog_OpenUnknown0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown0));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_OpenUnknown0(struct ndr_print *ndr, const char *name, const struct eventlog_OpenUnknown0 *r)
-{
- ndr_print_struct(ndr, name, "eventlog_OpenUnknown0");
- ndr->depth++;
- ndr_print_uint16(ndr, "unknown0", r->unknown0);
- ndr_print_uint16(ndr, "unknown1", r->unknown1);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_eventlog_Record(struct ndr_push *ndr, int ndr_flags, const struct eventlog_Record *r)
-{
- uint32_t cntr_strings_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->record_number));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time_generated));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time_written));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->event_id));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->event_type));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_of_strings));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->event_category));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->reserved_flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->closing_record_number));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->stringoffset));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_length));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_offset));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data_length));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data_offset));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->source_name));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->computer_name));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- for (cntr_strings_0 = 0; cntr_strings_0 < r->num_of_strings; cntr_strings_0++) {
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->strings[cntr_strings_0]));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->raw_data));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_eventlog_Record(struct ndr_pull *ndr, int ndr_flags, struct eventlog_Record *r)
-{
- uint32_t cntr_strings_0;
- TALLOC_CTX *_mem_save_strings_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->record_number));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time_generated));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time_written));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->event_id));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->event_type));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_of_strings));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->event_category));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved_flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->closing_record_number));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->stringoffset));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_length));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_offset));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_length));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_offset));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->source_name));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->computer_name));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_PULL_ALLOC_N(ndr, r->strings, r->num_of_strings);
- _mem_save_strings_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, *r->strings, 0);
- for (cntr_strings_0 = 0; cntr_strings_0 < r->num_of_strings; cntr_strings_0++) {
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->strings[cntr_strings_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_strings_0, 0);
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->raw_data));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_Record(struct ndr_print *ndr, const char *name, const struct eventlog_Record *r)
-{
- uint32_t cntr_strings_0;
- ndr_print_struct(ndr, name, "eventlog_Record");
- ndr->depth++;
- ndr_print_uint32(ndr, "size", r->size);
- ndr_print_uint32(ndr, "reserved", r->reserved);
- ndr_print_uint32(ndr, "record_number", r->record_number);
- ndr_print_uint32(ndr, "time_generated", r->time_generated);
- ndr_print_uint32(ndr, "time_written", r->time_written);
- ndr_print_uint32(ndr, "event_id", r->event_id);
- ndr_print_uint16(ndr, "event_type", r->event_type);
- ndr_print_uint16(ndr, "num_of_strings", r->num_of_strings);
- ndr_print_uint16(ndr, "event_category", r->event_category);
- ndr_print_uint16(ndr, "reserved_flags", r->reserved_flags);
- ndr_print_uint32(ndr, "closing_record_number", r->closing_record_number);
- ndr_print_uint32(ndr, "stringoffset", r->stringoffset);
- ndr_print_uint32(ndr, "sid_length", r->sid_length);
- ndr_print_uint32(ndr, "sid_offset", r->sid_offset);
- ndr_print_uint32(ndr, "data_length", r->data_length);
- ndr_print_uint32(ndr, "data_offset", r->data_offset);
- ndr_print_string(ndr, "source_name", r->source_name);
- ndr_print_string(ndr, "computer_name", r->computer_name);
- ndr->print(ndr, "%s: ARRAY(%d)", "strings", r->num_of_strings);
- ndr->depth++;
- for (cntr_strings_0=0;cntr_strings_0<r->num_of_strings;cntr_strings_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_strings_0);
- if (idx_0) {
- ndr_print_string(ndr, "strings", r->strings[cntr_strings_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_string(ndr, "raw_data", r->raw_data);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_ClearEventLogW(struct ndr_push *ndr, int flags, const struct eventlog_ClearEventLogW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.unknown));
- if (r->in.unknown) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.unknown));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_ClearEventLogW(struct ndr_pull *ndr, int flags, struct eventlog_ClearEventLogW *r)
-{
- uint32_t _ptr_unknown;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_unknown_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown));
- if (_ptr_unknown) {
- NDR_PULL_ALLOC(ndr, r->in.unknown);
- } else {
- r->in.unknown = NULL;
- }
- if (r->in.unknown) {
- _mem_save_unknown_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.unknown, 0);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.unknown));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_ClearEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ClearEventLogW *r)
-{
- ndr_print_struct(ndr, name, "eventlog_ClearEventLogW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_ClearEventLogW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "unknown", r->in.unknown);
- ndr->depth++;
- if (r->in.unknown) {
- ndr_print_lsa_String(ndr, "unknown", r->in.unknown);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_ClearEventLogW");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_BackupEventLogW(struct ndr_push *ndr, int flags, const struct eventlog_BackupEventLogW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_BackupEventLogW(struct ndr_pull *ndr, int flags, struct eventlog_BackupEventLogW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_BackupEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_BackupEventLogW *r)
-{
- ndr_print_struct(ndr, name, "eventlog_BackupEventLogW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_BackupEventLogW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_BackupEventLogW");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_CloseEventLog(struct ndr_push *ndr, int flags, const struct eventlog_CloseEventLog *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_CloseEventLog(struct ndr_pull *ndr, int flags, struct eventlog_CloseEventLog *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.handle);
- *r->out.handle = *r->in.handle;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_CloseEventLog(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_CloseEventLog *r)
-{
- ndr_print_struct(ndr, name, "eventlog_CloseEventLog");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_CloseEventLog");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_CloseEventLog");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_DeregisterEventSource(struct ndr_push *ndr, int flags, const struct eventlog_DeregisterEventSource *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_DeregisterEventSource(struct ndr_pull *ndr, int flags, struct eventlog_DeregisterEventSource *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_DeregisterEventSource(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_DeregisterEventSource *r)
-{
- ndr_print_struct(ndr, name, "eventlog_DeregisterEventSource");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_DeregisterEventSource");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_DeregisterEventSource");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_GetNumRecords(struct ndr_push *ndr, int flags, const struct eventlog_GetNumRecords *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.number == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.number));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_GetNumRecords(struct ndr_pull *ndr, int flags, struct eventlog_GetNumRecords *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_number_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.number);
- ZERO_STRUCTP(r->out.number);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.number);
- }
- _mem_save_number_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.number, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.number));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_number_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_GetNumRecords(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetNumRecords *r)
-{
- ndr_print_struct(ndr, name, "eventlog_GetNumRecords");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_GetNumRecords");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_GetNumRecords");
- ndr->depth++;
- ndr_print_ptr(ndr, "number", r->out.number);
- ndr->depth++;
- ndr_print_uint32(ndr, "number", *r->out.number);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_GetOldestRecord(struct ndr_push *ndr, int flags, const struct eventlog_GetOldestRecord *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_GetOldestRecord(struct ndr_pull *ndr, int flags, struct eventlog_GetOldestRecord *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_GetOldestRecord(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetOldestRecord *r)
-{
- ndr_print_struct(ndr, name, "eventlog_GetOldestRecord");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_GetOldestRecord");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_GetOldestRecord");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_ChangeNotify(struct ndr_push *ndr, int flags, const struct eventlog_ChangeNotify *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_ChangeNotify(struct ndr_pull *ndr, int flags, struct eventlog_ChangeNotify *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_ChangeNotify(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ChangeNotify *r)
-{
- ndr_print_struct(ndr, name, "eventlog_ChangeNotify");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_ChangeNotify");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_ChangeNotify");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_OpenEventLogW(struct ndr_push *ndr, int flags, const struct eventlog_OpenEventLogW *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.unknown0));
- if (r->in.unknown0) {
- NDR_CHECK(ndr_push_eventlog_OpenUnknown0(ndr, NDR_SCALARS, r->in.unknown0));
- }
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logname));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.servername));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown3));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_OpenEventLogW(struct ndr_pull *ndr, int flags, struct eventlog_OpenEventLogW *r)
-{
- uint32_t _ptr_unknown0;
- TALLOC_CTX *_mem_save_unknown0_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown0));
- if (_ptr_unknown0) {
- NDR_PULL_ALLOC(ndr, r->in.unknown0);
- } else {
- r->in.unknown0 = NULL;
- }
- if (r->in.unknown0) {
- _mem_save_unknown0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.unknown0, 0);
- NDR_CHECK(ndr_pull_eventlog_OpenUnknown0(ndr, NDR_SCALARS, r->in.unknown0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown0_0, 0);
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logname));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.servername));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown3));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_OpenEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenEventLogW *r)
-{
- ndr_print_struct(ndr, name, "eventlog_OpenEventLogW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_OpenEventLogW");
- ndr->depth++;
- ndr_print_ptr(ndr, "unknown0", r->in.unknown0);
- ndr->depth++;
- if (r->in.unknown0) {
- ndr_print_eventlog_OpenUnknown0(ndr, "unknown0", r->in.unknown0);
- }
- ndr->depth--;
- ndr_print_lsa_String(ndr, "logname", &r->in.logname);
- ndr_print_lsa_String(ndr, "servername", &r->in.servername);
- ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
- ndr_print_uint32(ndr, "unknown3", r->in.unknown3);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_OpenEventLogW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_RegisterEventSourceW(struct ndr_push *ndr, int flags, const struct eventlog_RegisterEventSourceW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_RegisterEventSourceW(struct ndr_pull *ndr, int flags, struct eventlog_RegisterEventSourceW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_RegisterEventSourceW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterEventSourceW *r)
-{
- ndr_print_struct(ndr, name, "eventlog_RegisterEventSourceW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_RegisterEventSourceW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_RegisterEventSourceW");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_OpenBackupEventLogW(struct ndr_push *ndr, int flags, const struct eventlog_OpenBackupEventLogW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_OpenBackupEventLogW(struct ndr_pull *ndr, int flags, struct eventlog_OpenBackupEventLogW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_OpenBackupEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenBackupEventLogW *r)
-{
- ndr_print_struct(ndr, name, "eventlog_OpenBackupEventLogW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_OpenBackupEventLogW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_OpenBackupEventLogW");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_ReadEventLogW(struct ndr_push *ndr, int flags, const struct eventlog_ReadEventLogW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offset));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.number_of_bytes));
- }
- if (flags & NDR_OUT) {
- if (r->out.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.number_of_bytes));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, r->in.number_of_bytes));
- if (r->out.sent_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sent_size));
- if (r->out.real_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.real_size));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_ReadEventLogW(struct ndr_pull *ndr, int flags, struct eventlog_ReadEventLogW *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sent_size_0;
- TALLOC_CTX *_mem_save_real_size_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offset));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.number_of_bytes));
- NDR_PULL_ALLOC_N(ndr, r->out.data, r->in.number_of_bytes);
- memset(r->out.data, 0, r->in.number_of_bytes * sizeof(*r->out.data));
- NDR_PULL_ALLOC(ndr, r->out.sent_size);
- ZERO_STRUCTP(r->out.sent_size);
- NDR_PULL_ALLOC(ndr, r->out.real_size);
- ZERO_STRUCTP(r->out.real_size);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
- }
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_size(ndr, &r->out.data)));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sent_size);
- }
- _mem_save_sent_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sent_size, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sent_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sent_size_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.real_size);
- }
- _mem_save_real_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.real_size, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.real_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_real_size_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.number_of_bytes));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_ReadEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReadEventLogW *r)
-{
- ndr_print_struct(ndr, name, "eventlog_ReadEventLogW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_ReadEventLogW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr_print_uint32(ndr, "offset", r->in.offset);
- ndr_print_uint32(ndr, "number_of_bytes", r->in.number_of_bytes);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_ReadEventLogW");
- ndr->depth++;
- ndr_print_ptr(ndr, "data", r->out.data);
- ndr->depth++;
- ndr_print_array_uint8(ndr, "data", r->out.data, r->in.number_of_bytes);
- ndr->depth--;
- ndr_print_ptr(ndr, "sent_size", r->out.sent_size);
- ndr->depth++;
- ndr_print_uint32(ndr, "sent_size", *r->out.sent_size);
- ndr->depth--;
- ndr_print_ptr(ndr, "real_size", r->out.real_size);
- ndr->depth++;
- ndr_print_uint32(ndr, "real_size", *r->out.real_size);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_ReportEventW(struct ndr_push *ndr, int flags, const struct eventlog_ReportEventW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_ReportEventW(struct ndr_pull *ndr, int flags, struct eventlog_ReportEventW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_ReportEventW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReportEventW *r)
-{
- ndr_print_struct(ndr, name, "eventlog_ReportEventW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_ReportEventW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_ReportEventW");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_ClearEventLogA(struct ndr_push *ndr, int flags, const struct eventlog_ClearEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_ClearEventLogA(struct ndr_pull *ndr, int flags, struct eventlog_ClearEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_ClearEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ClearEventLogA *r)
-{
- ndr_print_struct(ndr, name, "eventlog_ClearEventLogA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_ClearEventLogA");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_ClearEventLogA");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_BackupEventLogA(struct ndr_push *ndr, int flags, const struct eventlog_BackupEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_BackupEventLogA(struct ndr_pull *ndr, int flags, struct eventlog_BackupEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_BackupEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_BackupEventLogA *r)
-{
- ndr_print_struct(ndr, name, "eventlog_BackupEventLogA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_BackupEventLogA");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_BackupEventLogA");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_OpenEventLogA(struct ndr_push *ndr, int flags, const struct eventlog_OpenEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_OpenEventLogA(struct ndr_pull *ndr, int flags, struct eventlog_OpenEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_OpenEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenEventLogA *r)
-{
- ndr_print_struct(ndr, name, "eventlog_OpenEventLogA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_OpenEventLogA");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_OpenEventLogA");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_RegisterEventSourceA(struct ndr_push *ndr, int flags, const struct eventlog_RegisterEventSourceA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_RegisterEventSourceA(struct ndr_pull *ndr, int flags, struct eventlog_RegisterEventSourceA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_RegisterEventSourceA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterEventSourceA *r)
-{
- ndr_print_struct(ndr, name, "eventlog_RegisterEventSourceA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_RegisterEventSourceA");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_RegisterEventSourceA");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_OpenBackupEventLogA(struct ndr_push *ndr, int flags, const struct eventlog_OpenBackupEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_OpenBackupEventLogA(struct ndr_pull *ndr, int flags, struct eventlog_OpenBackupEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_OpenBackupEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenBackupEventLogA *r)
-{
- ndr_print_struct(ndr, name, "eventlog_OpenBackupEventLogA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_OpenBackupEventLogA");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_OpenBackupEventLogA");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_ReadEventLogA(struct ndr_push *ndr, int flags, const struct eventlog_ReadEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_ReadEventLogA(struct ndr_pull *ndr, int flags, struct eventlog_ReadEventLogA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_ReadEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReadEventLogA *r)
-{
- ndr_print_struct(ndr, name, "eventlog_ReadEventLogA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_ReadEventLogA");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_ReadEventLogA");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_ReportEventA(struct ndr_push *ndr, int flags, const struct eventlog_ReportEventA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_ReportEventA(struct ndr_pull *ndr, int flags, struct eventlog_ReportEventA *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_ReportEventA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReportEventA *r)
-{
- ndr_print_struct(ndr, name, "eventlog_ReportEventA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_ReportEventA");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_ReportEventA");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_RegisterClusterSvc(struct ndr_push *ndr, int flags, const struct eventlog_RegisterClusterSvc *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_RegisterClusterSvc(struct ndr_pull *ndr, int flags, struct eventlog_RegisterClusterSvc *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_RegisterClusterSvc(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterClusterSvc *r)
-{
- ndr_print_struct(ndr, name, "eventlog_RegisterClusterSvc");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_RegisterClusterSvc");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_RegisterClusterSvc");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_DeregisterClusterSvc(struct ndr_push *ndr, int flags, const struct eventlog_DeregisterClusterSvc *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_DeregisterClusterSvc(struct ndr_pull *ndr, int flags, struct eventlog_DeregisterClusterSvc *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_DeregisterClusterSvc(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_DeregisterClusterSvc *r)
-{
- ndr_print_struct(ndr, name, "eventlog_DeregisterClusterSvc");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_DeregisterClusterSvc");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_DeregisterClusterSvc");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_WriteClusterEvents(struct ndr_push *ndr, int flags, const struct eventlog_WriteClusterEvents *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_WriteClusterEvents(struct ndr_pull *ndr, int flags, struct eventlog_WriteClusterEvents *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_WriteClusterEvents(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_WriteClusterEvents *r)
-{
- ndr_print_struct(ndr, name, "eventlog_WriteClusterEvents");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_WriteClusterEvents");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_WriteClusterEvents");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_GetLogIntormation(struct ndr_push *ndr, int flags, const struct eventlog_GetLogIntormation *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_GetLogIntormation(struct ndr_pull *ndr, int flags, struct eventlog_GetLogIntormation *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_GetLogIntormation(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetLogIntormation *r)
-{
- ndr_print_struct(ndr, name, "eventlog_GetLogIntormation");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_GetLogIntormation");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_GetLogIntormation");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_eventlog_FlushEventLog(struct ndr_push *ndr, int flags, const struct eventlog_FlushEventLog *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_eventlog_FlushEventLog(struct ndr_pull *ndr, int flags, struct eventlog_FlushEventLog *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_eventlog_FlushEventLog(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_FlushEventLog *r)
-{
- ndr_print_struct(ndr, name, "eventlog_FlushEventLog");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "eventlog_FlushEventLog");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "eventlog_FlushEventLog");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call eventlog_calls[] = {
- {
- "eventlog_ClearEventLogW",
- sizeof(struct eventlog_ClearEventLogW),
- (ndr_push_flags_fn_t) ndr_push_eventlog_ClearEventLogW,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_ClearEventLogW,
- (ndr_print_function_t) ndr_print_eventlog_ClearEventLogW,
- False,
- },
- {
- "eventlog_BackupEventLogW",
- sizeof(struct eventlog_BackupEventLogW),
- (ndr_push_flags_fn_t) ndr_push_eventlog_BackupEventLogW,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_BackupEventLogW,
- (ndr_print_function_t) ndr_print_eventlog_BackupEventLogW,
- False,
- },
- {
- "eventlog_CloseEventLog",
- sizeof(struct eventlog_CloseEventLog),
- (ndr_push_flags_fn_t) ndr_push_eventlog_CloseEventLog,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_CloseEventLog,
- (ndr_print_function_t) ndr_print_eventlog_CloseEventLog,
- False,
- },
- {
- "eventlog_DeregisterEventSource",
- sizeof(struct eventlog_DeregisterEventSource),
- (ndr_push_flags_fn_t) ndr_push_eventlog_DeregisterEventSource,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_DeregisterEventSource,
- (ndr_print_function_t) ndr_print_eventlog_DeregisterEventSource,
- False,
- },
- {
- "eventlog_GetNumRecords",
- sizeof(struct eventlog_GetNumRecords),
- (ndr_push_flags_fn_t) ndr_push_eventlog_GetNumRecords,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_GetNumRecords,
- (ndr_print_function_t) ndr_print_eventlog_GetNumRecords,
- False,
- },
- {
- "eventlog_GetOldestRecord",
- sizeof(struct eventlog_GetOldestRecord),
- (ndr_push_flags_fn_t) ndr_push_eventlog_GetOldestRecord,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_GetOldestRecord,
- (ndr_print_function_t) ndr_print_eventlog_GetOldestRecord,
- False,
- },
- {
- "eventlog_ChangeNotify",
- sizeof(struct eventlog_ChangeNotify),
- (ndr_push_flags_fn_t) ndr_push_eventlog_ChangeNotify,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_ChangeNotify,
- (ndr_print_function_t) ndr_print_eventlog_ChangeNotify,
- False,
- },
- {
- "eventlog_OpenEventLogW",
- sizeof(struct eventlog_OpenEventLogW),
- (ndr_push_flags_fn_t) ndr_push_eventlog_OpenEventLogW,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_OpenEventLogW,
- (ndr_print_function_t) ndr_print_eventlog_OpenEventLogW,
- False,
- },
- {
- "eventlog_RegisterEventSourceW",
- sizeof(struct eventlog_RegisterEventSourceW),
- (ndr_push_flags_fn_t) ndr_push_eventlog_RegisterEventSourceW,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_RegisterEventSourceW,
- (ndr_print_function_t) ndr_print_eventlog_RegisterEventSourceW,
- False,
- },
- {
- "eventlog_OpenBackupEventLogW",
- sizeof(struct eventlog_OpenBackupEventLogW),
- (ndr_push_flags_fn_t) ndr_push_eventlog_OpenBackupEventLogW,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_OpenBackupEventLogW,
- (ndr_print_function_t) ndr_print_eventlog_OpenBackupEventLogW,
- False,
- },
- {
- "eventlog_ReadEventLogW",
- sizeof(struct eventlog_ReadEventLogW),
- (ndr_push_flags_fn_t) ndr_push_eventlog_ReadEventLogW,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_ReadEventLogW,
- (ndr_print_function_t) ndr_print_eventlog_ReadEventLogW,
- False,
- },
- {
- "eventlog_ReportEventW",
- sizeof(struct eventlog_ReportEventW),
- (ndr_push_flags_fn_t) ndr_push_eventlog_ReportEventW,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_ReportEventW,
- (ndr_print_function_t) ndr_print_eventlog_ReportEventW,
- False,
- },
- {
- "eventlog_ClearEventLogA",
- sizeof(struct eventlog_ClearEventLogA),
- (ndr_push_flags_fn_t) ndr_push_eventlog_ClearEventLogA,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_ClearEventLogA,
- (ndr_print_function_t) ndr_print_eventlog_ClearEventLogA,
- False,
- },
- {
- "eventlog_BackupEventLogA",
- sizeof(struct eventlog_BackupEventLogA),
- (ndr_push_flags_fn_t) ndr_push_eventlog_BackupEventLogA,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_BackupEventLogA,
- (ndr_print_function_t) ndr_print_eventlog_BackupEventLogA,
- False,
- },
- {
- "eventlog_OpenEventLogA",
- sizeof(struct eventlog_OpenEventLogA),
- (ndr_push_flags_fn_t) ndr_push_eventlog_OpenEventLogA,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_OpenEventLogA,
- (ndr_print_function_t) ndr_print_eventlog_OpenEventLogA,
- False,
- },
- {
- "eventlog_RegisterEventSourceA",
- sizeof(struct eventlog_RegisterEventSourceA),
- (ndr_push_flags_fn_t) ndr_push_eventlog_RegisterEventSourceA,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_RegisterEventSourceA,
- (ndr_print_function_t) ndr_print_eventlog_RegisterEventSourceA,
- False,
- },
- {
- "eventlog_OpenBackupEventLogA",
- sizeof(struct eventlog_OpenBackupEventLogA),
- (ndr_push_flags_fn_t) ndr_push_eventlog_OpenBackupEventLogA,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_OpenBackupEventLogA,
- (ndr_print_function_t) ndr_print_eventlog_OpenBackupEventLogA,
- False,
- },
- {
- "eventlog_ReadEventLogA",
- sizeof(struct eventlog_ReadEventLogA),
- (ndr_push_flags_fn_t) ndr_push_eventlog_ReadEventLogA,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_ReadEventLogA,
- (ndr_print_function_t) ndr_print_eventlog_ReadEventLogA,
- False,
- },
- {
- "eventlog_ReportEventA",
- sizeof(struct eventlog_ReportEventA),
- (ndr_push_flags_fn_t) ndr_push_eventlog_ReportEventA,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_ReportEventA,
- (ndr_print_function_t) ndr_print_eventlog_ReportEventA,
- False,
- },
- {
- "eventlog_RegisterClusterSvc",
- sizeof(struct eventlog_RegisterClusterSvc),
- (ndr_push_flags_fn_t) ndr_push_eventlog_RegisterClusterSvc,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_RegisterClusterSvc,
- (ndr_print_function_t) ndr_print_eventlog_RegisterClusterSvc,
- False,
- },
- {
- "eventlog_DeregisterClusterSvc",
- sizeof(struct eventlog_DeregisterClusterSvc),
- (ndr_push_flags_fn_t) ndr_push_eventlog_DeregisterClusterSvc,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_DeregisterClusterSvc,
- (ndr_print_function_t) ndr_print_eventlog_DeregisterClusterSvc,
- False,
- },
- {
- "eventlog_WriteClusterEvents",
- sizeof(struct eventlog_WriteClusterEvents),
- (ndr_push_flags_fn_t) ndr_push_eventlog_WriteClusterEvents,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_WriteClusterEvents,
- (ndr_print_function_t) ndr_print_eventlog_WriteClusterEvents,
- False,
- },
- {
- "eventlog_GetLogIntormation",
- sizeof(struct eventlog_GetLogIntormation),
- (ndr_push_flags_fn_t) ndr_push_eventlog_GetLogIntormation,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_GetLogIntormation,
- (ndr_print_function_t) ndr_print_eventlog_GetLogIntormation,
- False,
- },
- {
- "eventlog_FlushEventLog",
- sizeof(struct eventlog_FlushEventLog),
- (ndr_push_flags_fn_t) ndr_push_eventlog_FlushEventLog,
- (ndr_pull_flags_fn_t) ndr_pull_eventlog_FlushEventLog,
- (ndr_print_function_t) ndr_print_eventlog_FlushEventLog,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const eventlog_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\eventlog]",
-};
-
-const struct dcerpc_endpoint_list eventlog_endpoints = {
- .count = 1,
- .names = eventlog_endpoint_strings
-};
-
-const char * const eventlog_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list eventlog_authservices = {
- .count = 1,
- .names = eventlog_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_eventlog = {
- .name = "eventlog",
- .syntax_id = {
- {0x82273fdc,0xe32a,0x18c3,{0x3f,0x78},{0x82,0x79,0x29,0xdc,0x23,0xea}},
- DCERPC_EVENTLOG_VERSION
- },
- .helpstring = DCERPC_EVENTLOG_HELPSTRING,
- .num_calls = 24,
- .calls = eventlog_calls,
- .endpoints = &eventlog_endpoints,
- .authservices = &eventlog_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_eventlog.h b/source/librpc/gen_ndr/ndr_eventlog.h
deleted file mode 100644
index da43bcf9fcf..00000000000
--- a/source/librpc/gen_ndr/ndr_eventlog.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/eventlog.h"
-
-#ifndef _HEADER_NDR_eventlog
-#define _HEADER_NDR_eventlog
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_EVENTLOG_UUID "82273fdc-e32a-18c3-3f78-827929dc23ea"
-#define DCERPC_EVENTLOG_VERSION 0.0
-#define DCERPC_EVENTLOG_NAME "eventlog"
-#define DCERPC_EVENTLOG_HELPSTRING "Event Logger"
-extern const struct dcerpc_interface_table dcerpc_table_eventlog;
-NTSTATUS dcerpc_server_eventlog_init(void);
-#define DCERPC_EVENTLOG_CLEAREVENTLOGW (0x00)
-
-#define DCERPC_EVENTLOG_BACKUPEVENTLOGW (0x01)
-
-#define DCERPC_EVENTLOG_CLOSEEVENTLOG (0x02)
-
-#define DCERPC_EVENTLOG_DEREGISTEREVENTSOURCE (0x03)
-
-#define DCERPC_EVENTLOG_GETNUMRECORDS (0x04)
-
-#define DCERPC_EVENTLOG_GETOLDESTRECORD (0x05)
-
-#define DCERPC_EVENTLOG_CHANGENOTIFY (0x06)
-
-#define DCERPC_EVENTLOG_OPENEVENTLOGW (0x07)
-
-#define DCERPC_EVENTLOG_REGISTEREVENTSOURCEW (0x08)
-
-#define DCERPC_EVENTLOG_OPENBACKUPEVENTLOGW (0x09)
-
-#define DCERPC_EVENTLOG_READEVENTLOGW (0x0a)
-
-#define DCERPC_EVENTLOG_REPORTEVENTW (0x0b)
-
-#define DCERPC_EVENTLOG_CLEAREVENTLOGA (0x0c)
-
-#define DCERPC_EVENTLOG_BACKUPEVENTLOGA (0x0d)
-
-#define DCERPC_EVENTLOG_OPENEVENTLOGA (0x0e)
-
-#define DCERPC_EVENTLOG_REGISTEREVENTSOURCEA (0x0f)
-
-#define DCERPC_EVENTLOG_OPENBACKUPEVENTLOGA (0x10)
-
-#define DCERPC_EVENTLOG_READEVENTLOGA (0x11)
-
-#define DCERPC_EVENTLOG_REPORTEVENTA (0x12)
-
-#define DCERPC_EVENTLOG_REGISTERCLUSTERSVC (0x13)
-
-#define DCERPC_EVENTLOG_DEREGISTERCLUSTERSVC (0x14)
-
-#define DCERPC_EVENTLOG_WRITECLUSTEREVENTS (0x15)
-
-#define DCERPC_EVENTLOG_GETLOGINTORMATION (0x16)
-
-#define DCERPC_EVENTLOG_FLUSHEVENTLOG (0x17)
-
-#define DCERPC_EVENTLOG_CALL_COUNT (24)
-void ndr_print_eventlog_OpenUnknown0(struct ndr_print *ndr, const char *name, const struct eventlog_OpenUnknown0 *r);
-NTSTATUS ndr_push_eventlog_Record(struct ndr_push *ndr, int ndr_flags, const struct eventlog_Record *r);
-NTSTATUS ndr_pull_eventlog_Record(struct ndr_pull *ndr, int ndr_flags, struct eventlog_Record *r);
-void ndr_print_eventlog_Record(struct ndr_print *ndr, const char *name, const struct eventlog_Record *r);
-void ndr_print_eventlog_ClearEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ClearEventLogW *r);
-void ndr_print_eventlog_BackupEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_BackupEventLogW *r);
-void ndr_print_eventlog_CloseEventLog(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_CloseEventLog *r);
-void ndr_print_eventlog_DeregisterEventSource(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_DeregisterEventSource *r);
-void ndr_print_eventlog_GetNumRecords(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetNumRecords *r);
-void ndr_print_eventlog_GetOldestRecord(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetOldestRecord *r);
-void ndr_print_eventlog_ChangeNotify(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ChangeNotify *r);
-void ndr_print_eventlog_OpenEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenEventLogW *r);
-void ndr_print_eventlog_RegisterEventSourceW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterEventSourceW *r);
-void ndr_print_eventlog_OpenBackupEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenBackupEventLogW *r);
-void ndr_print_eventlog_ReadEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReadEventLogW *r);
-void ndr_print_eventlog_ReportEventW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReportEventW *r);
-void ndr_print_eventlog_ClearEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ClearEventLogA *r);
-void ndr_print_eventlog_BackupEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_BackupEventLogA *r);
-void ndr_print_eventlog_OpenEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenEventLogA *r);
-void ndr_print_eventlog_RegisterEventSourceA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterEventSourceA *r);
-void ndr_print_eventlog_OpenBackupEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenBackupEventLogA *r);
-void ndr_print_eventlog_ReadEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReadEventLogA *r);
-void ndr_print_eventlog_ReportEventA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReportEventA *r);
-void ndr_print_eventlog_RegisterClusterSvc(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterClusterSvc *r);
-void ndr_print_eventlog_DeregisterClusterSvc(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_DeregisterClusterSvc *r);
-void ndr_print_eventlog_WriteClusterEvents(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_WriteClusterEvents *r);
-void ndr_print_eventlog_GetLogIntormation(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetLogIntormation *r);
-void ndr_print_eventlog_FlushEventLog(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_FlushEventLog *r);
-#endif /* _HEADER_NDR_eventlog */
diff --git a/source/librpc/gen_ndr/ndr_initshutdown.c b/source/librpc/gen_ndr/ndr_initshutdown.c
deleted file mode 100644
index aa35a8dd050..00000000000
--- a/source/librpc/gen_ndr/ndr_initshutdown.c
+++ /dev/null
@@ -1,429 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_initshutdown.h"
-
-NTSTATUS ndr_push_initshutdown_String_sub(struct ndr_push *ndr, int ndr_flags, const struct initshutdown_String_sub *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term(r->name)));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_LEN4|LIBNDR_FLAG_STR_NOTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_initshutdown_String_sub(struct ndr_pull *ndr, int ndr_flags, struct initshutdown_String_sub *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->name_size));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_LEN4|LIBNDR_FLAG_STR_NOTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_initshutdown_String_sub(struct ndr_print *ndr, const char *name, const struct initshutdown_String_sub *r)
-{
- ndr_print_struct(ndr, name, "initshutdown_String_sub");
- ndr->depth++;
- ndr_print_uint32(ndr, "name_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name):r->name_size);
- ndr_print_string(ndr, "name", r->name);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_initshutdown_String(struct ndr_push *ndr, int ndr_flags, const struct initshutdown_String *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m(r->name->name) * 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name->name) * 2));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_initshutdown_String_sub(ndr, NDR_SCALARS, r->name));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_initshutdown_String(struct ndr_pull *ndr, int ndr_flags, struct initshutdown_String *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_len));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_initshutdown_String_sub(ndr, NDR_SCALARS, r->name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_initshutdown_String(struct ndr_print *ndr, const char *name, const struct initshutdown_String *r)
-{
- ndr_print_struct(ndr, name, "initshutdown_String");
- ndr->depth++;
- ndr_print_uint16(ndr, "name_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->name->name) * 2:r->name_len);
- ndr_print_uint16(ndr, "name_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name->name) * 2:r->name_size);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_initshutdown_String_sub(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_initshutdown_Init(struct ndr_push *ndr, int flags, const struct initshutdown_Init *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
- if (r->in.hostname) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
- if (r->in.message) {
- NDR_CHECK(ndr_push_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_initshutdown_Init(struct ndr_pull *ndr, int flags, struct initshutdown_Init *r)
-{
- uint32_t _ptr_hostname;
- uint32_t _ptr_message;
- TALLOC_CTX *_mem_save_hostname_0;
- TALLOC_CTX *_mem_save_message_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
- if (_ptr_hostname) {
- NDR_PULL_ALLOC(ndr, r->in.hostname);
- } else {
- r->in.hostname = NULL;
- }
- if (r->in.hostname) {
- _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
- if (_ptr_message) {
- NDR_PULL_ALLOC(ndr, r->in.message);
- } else {
- r->in.message = NULL;
- }
- if (r->in.message) {
- _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
- NDR_CHECK(ndr_pull_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_initshutdown_Init(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_Init *r)
-{
- ndr_print_struct(ndr, name, "initshutdown_Init");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "initshutdown_Init");
- ndr->depth++;
- ndr_print_ptr(ndr, "hostname", r->in.hostname);
- ndr->depth++;
- if (r->in.hostname) {
- ndr_print_uint16(ndr, "hostname", *r->in.hostname);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "message", r->in.message);
- ndr->depth++;
- if (r->in.message) {
- ndr_print_initshutdown_String(ndr, "message", r->in.message);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "timeout", r->in.timeout);
- ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
- ndr_print_uint8(ndr, "reboot", r->in.reboot);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "initshutdown_Init");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_initshutdown_Abort(struct ndr_push *ndr, int flags, const struct initshutdown_Abort *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
- if (r->in.server) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.server));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_initshutdown_Abort(struct ndr_pull *ndr, int flags, struct initshutdown_Abort *r)
-{
- uint32_t _ptr_server;
- TALLOC_CTX *_mem_save_server_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
- if (_ptr_server) {
- NDR_PULL_ALLOC(ndr, r->in.server);
- } else {
- r->in.server = NULL;
- }
- if (r->in.server) {
- _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.server));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_initshutdown_Abort(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_Abort *r)
-{
- ndr_print_struct(ndr, name, "initshutdown_Abort");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "initshutdown_Abort");
- ndr->depth++;
- ndr_print_ptr(ndr, "server", r->in.server);
- ndr->depth++;
- if (r->in.server) {
- ndr_print_uint16(ndr, "server", *r->in.server);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "initshutdown_Abort");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_initshutdown_InitEx(struct ndr_push *ndr, int flags, const struct initshutdown_InitEx *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
- if (r->in.hostname) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
- if (r->in.message) {
- NDR_CHECK(ndr_push_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reason));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_initshutdown_InitEx(struct ndr_pull *ndr, int flags, struct initshutdown_InitEx *r)
-{
- uint32_t _ptr_hostname;
- uint32_t _ptr_message;
- TALLOC_CTX *_mem_save_hostname_0;
- TALLOC_CTX *_mem_save_message_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
- if (_ptr_hostname) {
- NDR_PULL_ALLOC(ndr, r->in.hostname);
- } else {
- r->in.hostname = NULL;
- }
- if (r->in.hostname) {
- _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
- if (_ptr_message) {
- NDR_PULL_ALLOC(ndr, r->in.message);
- } else {
- r->in.message = NULL;
- }
- if (r->in.message) {
- _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
- NDR_CHECK(ndr_pull_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reason));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_initshutdown_InitEx(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_InitEx *r)
-{
- ndr_print_struct(ndr, name, "initshutdown_InitEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "initshutdown_InitEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "hostname", r->in.hostname);
- ndr->depth++;
- if (r->in.hostname) {
- ndr_print_uint16(ndr, "hostname", *r->in.hostname);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "message", r->in.message);
- ndr->depth++;
- if (r->in.message) {
- ndr_print_initshutdown_String(ndr, "message", r->in.message);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "timeout", r->in.timeout);
- ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
- ndr_print_uint8(ndr, "reboot", r->in.reboot);
- ndr_print_uint32(ndr, "reason", r->in.reason);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "initshutdown_InitEx");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call initshutdown_calls[] = {
- {
- "initshutdown_Init",
- sizeof(struct initshutdown_Init),
- (ndr_push_flags_fn_t) ndr_push_initshutdown_Init,
- (ndr_pull_flags_fn_t) ndr_pull_initshutdown_Init,
- (ndr_print_function_t) ndr_print_initshutdown_Init,
- False,
- },
- {
- "initshutdown_Abort",
- sizeof(struct initshutdown_Abort),
- (ndr_push_flags_fn_t) ndr_push_initshutdown_Abort,
- (ndr_pull_flags_fn_t) ndr_pull_initshutdown_Abort,
- (ndr_print_function_t) ndr_print_initshutdown_Abort,
- False,
- },
- {
- "initshutdown_InitEx",
- sizeof(struct initshutdown_InitEx),
- (ndr_push_flags_fn_t) ndr_push_initshutdown_InitEx,
- (ndr_pull_flags_fn_t) ndr_pull_initshutdown_InitEx,
- (ndr_print_function_t) ndr_print_initshutdown_InitEx,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const initshutdown_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\InitShutdown]",
-};
-
-const struct dcerpc_endpoint_list initshutdown_endpoints = {
- .count = 1,
- .names = initshutdown_endpoint_strings
-};
-
-const char * const initshutdown_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list initshutdown_authservices = {
- .count = 1,
- .names = initshutdown_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_initshutdown = {
- .name = "initshutdown",
- .syntax_id = {
- {0x894de0c0,0x0d55,0x11d3,{0xa3,0x22},{0x00,0xc0,0x4f,0xa3,0x21,0xa1}},
- DCERPC_INITSHUTDOWN_VERSION
- },
- .helpstring = DCERPC_INITSHUTDOWN_HELPSTRING,
- .num_calls = 3,
- .calls = initshutdown_calls,
- .endpoints = &initshutdown_endpoints,
- .authservices = &initshutdown_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_initshutdown.h b/source/librpc/gen_ndr/ndr_initshutdown.h
deleted file mode 100644
index 0df80cb7070..00000000000
--- a/source/librpc/gen_ndr/ndr_initshutdown.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/initshutdown.h"
-
-#ifndef _HEADER_NDR_initshutdown
-#define _HEADER_NDR_initshutdown
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_INITSHUTDOWN_UUID "894de0c0-0d55-11d3-a322-00c04fa321a1"
-#define DCERPC_INITSHUTDOWN_VERSION 1.0
-#define DCERPC_INITSHUTDOWN_NAME "initshutdown"
-#define DCERPC_INITSHUTDOWN_HELPSTRING "Init shutdown service"
-extern const struct dcerpc_interface_table dcerpc_table_initshutdown;
-NTSTATUS dcerpc_server_initshutdown_init(void);
-#define DCERPC_INITSHUTDOWN_INIT (0x00)
-
-#define DCERPC_INITSHUTDOWN_ABORT (0x01)
-
-#define DCERPC_INITSHUTDOWN_INITEX (0x02)
-
-#define DCERPC_INITSHUTDOWN_CALL_COUNT (3)
-void ndr_print_initshutdown_String_sub(struct ndr_print *ndr, const char *name, const struct initshutdown_String_sub *r);
-NTSTATUS ndr_push_initshutdown_String(struct ndr_push *ndr, int ndr_flags, const struct initshutdown_String *r);
-NTSTATUS ndr_pull_initshutdown_String(struct ndr_pull *ndr, int ndr_flags, struct initshutdown_String *r);
-void ndr_print_initshutdown_String(struct ndr_print *ndr, const char *name, const struct initshutdown_String *r);
-void ndr_print_initshutdown_Init(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_Init *r);
-void ndr_print_initshutdown_Abort(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_Abort *r);
-void ndr_print_initshutdown_InitEx(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_InitEx *r);
-#endif /* _HEADER_NDR_initshutdown */
diff --git a/source/librpc/gen_ndr/ndr_lsa.c b/source/librpc/gen_ndr/ndr_lsa.c
deleted file mode 100644
index 205d3745499..00000000000
--- a/source/librpc/gen_ndr/ndr_lsa.c
+++ /dev/null
@@ -1,11074 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_lsa.h"
-
-#include "librpc/gen_ndr/ndr_security.h"
-_PUBLIC_ NTSTATUS ndr_push_lsa_String(struct ndr_push *ndr, int ndr_flags, const struct lsa_String *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->string)));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->string)));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->string) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * strlen_m(r->string) / 2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * strlen_m(r->string) / 2));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, 2 * strlen_m(r->string) / 2, sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_lsa_String(struct ndr_pull *ndr, int ndr_flags, struct lsa_String *r)
-{
- uint32_t _ptr_string;
- TALLOC_CTX *_mem_save_string_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
- if (_ptr_string) {
- NDR_PULL_ALLOC(ndr, r->string);
- } else {
- r->string = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->string) {
- _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->string));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->string));
- if (ndr_get_array_length(ndr, &r->string) > ndr_get_array_size(ndr, &r->string)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->string), ndr_get_array_length(ndr, &r->string));
- }
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
- }
- if (r->string) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size / 2));
- }
- if (r->string) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->string, r->length / 2));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_String(struct ndr_print *ndr, const char *name, const struct lsa_String *r)
-{
- ndr_print_struct(ndr, name, "lsa_String");
- ndr->depth++;
- ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->string):r->length);
- ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->string):r->size);
- ndr_print_ptr(ndr, "string", r->string);
- ndr->depth++;
- if (r->string) {
- ndr_print_string(ndr, "string", r->string);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_lsa_StringLarge(struct ndr_push *ndr, int ndr_flags, const struct lsa_StringLarge *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->string)));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * (strlen_m(r->string) + 1)));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->string) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * (strlen_m(r->string) + 1) / 2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * strlen_m(r->string) / 2));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, 2 * strlen_m(r->string) / 2, sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_lsa_StringLarge(struct ndr_pull *ndr, int ndr_flags, struct lsa_StringLarge *r)
-{
- uint32_t _ptr_string;
- TALLOC_CTX *_mem_save_string_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
- if (_ptr_string) {
- NDR_PULL_ALLOC(ndr, r->string);
- } else {
- r->string = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->string) {
- _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->string));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->string));
- if (ndr_get_array_length(ndr, &r->string) > ndr_get_array_size(ndr, &r->string)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->string), ndr_get_array_length(ndr, &r->string));
- }
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
- }
- if (r->string) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size / 2));
- }
- if (r->string) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->string, r->length / 2));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_StringLarge(struct ndr_print *ndr, const char *name, const struct lsa_StringLarge *r)
-{
- ndr_print_struct(ndr, name, "lsa_StringLarge");
- ndr->depth++;
- ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->string):r->length);
- ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * (strlen_m(r->string) + 1):r->size);
- ndr_print_ptr(ndr, "string", r->string);
- ndr->depth++;
- if (r->string) {
- ndr_print_string(ndr, "string", r->string);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_lsa_Strings(struct ndr_push *ndr, int ndr_flags, const struct lsa_Strings *r)
-{
- uint32_t cntr_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->names));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_lsa_Strings(struct ndr_pull *ndr, int ndr_flags, struct lsa_Strings *r)
-{
- uint32_t _ptr_names;
- uint32_t cntr_names_1;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_names));
- if (_ptr_names) {
- NDR_PULL_ALLOC(ndr, r->names);
- } else {
- r->names = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->names));
- NDR_PULL_ALLOC_N(ndr, r->names, ndr_get_array_size(ndr, &r->names));
- _mem_save_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- }
- if (r->names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_Strings(struct ndr_print *ndr, const char *name, const struct lsa_Strings *r)
-{
- uint32_t cntr_names_1;
- ndr_print_struct(ndr, name, "lsa_Strings");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "names", r->names);
- ndr->depth++;
- if (r->names) {
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->count);
- ndr->depth++;
- for (cntr_names_1=0;cntr_names_1<r->count;cntr_names_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_names_1);
- if (idx_1) {
- ndr_print_lsa_String(ndr, "names", &r->names[cntr_names_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_lsa_AsciiString(struct ndr_push *ndr, int ndr_flags, const struct lsa_AsciiString *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m(r->string)));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m(r->string)));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_LEN4);
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_LEN4);
- if (r->string) {
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
- }
- ndr->flags = _flags_save_string;
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_lsa_AsciiString(struct ndr_pull *ndr, int ndr_flags, struct lsa_AsciiString *r)
-{
- uint32_t _ptr_string;
- TALLOC_CTX *_mem_save_string_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_LEN4);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
- if (_ptr_string) {
- NDR_PULL_ALLOC(ndr, r->string);
- } else {
- r->string = NULL;
- }
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_LEN4);
- if (r->string) {
- _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
- }
- ndr->flags = _flags_save_string;
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_AsciiString(struct ndr_print *ndr, const char *name, const struct lsa_AsciiString *r)
-{
- ndr_print_struct(ndr, name, "lsa_AsciiString");
- ndr->depth++;
- ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->string):r->length);
- ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->string):r->size);
- ndr_print_ptr(ndr, "string", r->string);
- ndr->depth++;
- if (r->string) {
- ndr_print_string(ndr, "string", r->string);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LUID(struct ndr_push *ndr, int ndr_flags, const struct lsa_LUID *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->low));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->high));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LUID(struct ndr_pull *ndr, int ndr_flags, struct lsa_LUID *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->low));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->high));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LUID(struct ndr_print *ndr, const char *name, const struct lsa_LUID *r)
-{
- ndr_print_struct(ndr, name, "lsa_LUID");
- ndr->depth++;
- ndr_print_uint32(ndr, "low", r->low);
- ndr_print_uint32(ndr, "high", r->high);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_PrivEntry(struct ndr_push *ndr, int ndr_flags, const struct lsa_PrivEntry *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_push_lsa_LUID(ndr, NDR_SCALARS, &r->luid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_PrivEntry(struct ndr_pull *ndr, int ndr_flags, struct lsa_PrivEntry *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_pull_lsa_LUID(ndr, NDR_SCALARS, &r->luid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_PrivEntry(struct ndr_print *ndr, const char *name, const struct lsa_PrivEntry *r)
-{
- ndr_print_struct(ndr, name, "lsa_PrivEntry");
- ndr->depth++;
- ndr_print_lsa_StringLarge(ndr, "name", &r->name);
- ndr_print_lsa_LUID(ndr, "luid", &r->luid);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_PrivArray(struct ndr_push *ndr, int ndr_flags, const struct lsa_PrivArray *r)
-{
- uint32_t cntr_privs_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->privs));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->privs) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_privs_1 = 0; cntr_privs_1 < r->count; cntr_privs_1++) {
- NDR_CHECK(ndr_push_lsa_PrivEntry(ndr, NDR_SCALARS, &r->privs[cntr_privs_1]));
- }
- for (cntr_privs_1 = 0; cntr_privs_1 < r->count; cntr_privs_1++) {
- NDR_CHECK(ndr_push_lsa_PrivEntry(ndr, NDR_BUFFERS, &r->privs[cntr_privs_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_PrivArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_PrivArray *r)
-{
- uint32_t _ptr_privs;
- uint32_t cntr_privs_1;
- TALLOC_CTX *_mem_save_privs_0;
- TALLOC_CTX *_mem_save_privs_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privs));
- if (_ptr_privs) {
- NDR_PULL_ALLOC(ndr, r->privs);
- } else {
- r->privs = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->privs) {
- _mem_save_privs_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->privs, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->privs));
- NDR_PULL_ALLOC_N(ndr, r->privs, ndr_get_array_size(ndr, &r->privs));
- _mem_save_privs_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->privs, 0);
- for (cntr_privs_1 = 0; cntr_privs_1 < r->count; cntr_privs_1++) {
- NDR_CHECK(ndr_pull_lsa_PrivEntry(ndr, NDR_SCALARS, &r->privs[cntr_privs_1]));
- }
- for (cntr_privs_1 = 0; cntr_privs_1 < r->count; cntr_privs_1++) {
- NDR_CHECK(ndr_pull_lsa_PrivEntry(ndr, NDR_BUFFERS, &r->privs[cntr_privs_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privs_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privs_0, 0);
- }
- if (r->privs) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privs, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_PrivArray(struct ndr_print *ndr, const char *name, const struct lsa_PrivArray *r)
-{
- uint32_t cntr_privs_1;
- ndr_print_struct(ndr, name, "lsa_PrivArray");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "privs", r->privs);
- ndr->depth++;
- if (r->privs) {
- ndr->print(ndr, "%s: ARRAY(%d)", "privs", r->count);
- ndr->depth++;
- for (cntr_privs_1=0;cntr_privs_1<r->count;cntr_privs_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_privs_1);
- if (idx_1) {
- ndr_print_lsa_PrivEntry(ndr, "privs", &r->privs[cntr_privs_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QosInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_QosInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->impersonation_level));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->context_mode));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->effective_only));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QosInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_QosInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->impersonation_level));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->context_mode));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->effective_only));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QosInfo(struct ndr_print *ndr, const char *name, const struct lsa_QosInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_QosInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "len", r->len);
- ndr_print_uint16(ndr, "impersonation_level", r->impersonation_level);
- ndr_print_uint8(ndr, "context_mode", r->context_mode);
- ndr_print_uint8(ndr, "effective_only", r->effective_only);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_ObjectAttribute(struct ndr_push *ndr, int ndr_flags, const struct lsa_ObjectAttribute *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->root_dir));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->object_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attributes));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sec_desc));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sec_qos));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->root_dir) {
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->root_dir));
- }
- if (r->object_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->object_name, ndr_charset_length(r->object_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->sec_desc) {
- NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sec_desc));
- }
- if (r->sec_qos) {
- NDR_CHECK(ndr_push_lsa_QosInfo(ndr, NDR_SCALARS, r->sec_qos));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_ObjectAttribute(struct ndr_pull *ndr, int ndr_flags, struct lsa_ObjectAttribute *r)
-{
- uint32_t _ptr_root_dir;
- TALLOC_CTX *_mem_save_root_dir_0;
- uint32_t _ptr_object_name;
- TALLOC_CTX *_mem_save_object_name_0;
- uint32_t _ptr_sec_desc;
- TALLOC_CTX *_mem_save_sec_desc_0;
- uint32_t _ptr_sec_qos;
- TALLOC_CTX *_mem_save_sec_qos_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_root_dir));
- if (_ptr_root_dir) {
- NDR_PULL_ALLOC(ndr, r->root_dir);
- } else {
- r->root_dir = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object_name));
- if (_ptr_object_name) {
- NDR_PULL_ALLOC(ndr, r->object_name);
- } else {
- r->object_name = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attributes));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sec_desc));
- if (_ptr_sec_desc) {
- NDR_PULL_ALLOC(ndr, r->sec_desc);
- } else {
- r->sec_desc = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sec_qos));
- if (_ptr_sec_qos) {
- NDR_PULL_ALLOC(ndr, r->sec_qos);
- } else {
- r->sec_qos = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->root_dir) {
- _mem_save_root_dir_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->root_dir, 0);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->root_dir));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_root_dir_0, 0);
- }
- if (r->object_name) {
- _mem_save_object_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->object_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->object_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->object_name));
- if (ndr_get_array_length(ndr, &r->object_name) > ndr_get_array_size(ndr, &r->object_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->object_name), ndr_get_array_length(ndr, &r->object_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->object_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->object_name, ndr_get_array_length(ndr, &r->object_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_name_0, 0);
- }
- if (r->sec_desc) {
- _mem_save_sec_desc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sec_desc, 0);
- NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sec_desc));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_desc_0, 0);
- }
- if (r->sec_qos) {
- _mem_save_sec_qos_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sec_qos, 0);
- NDR_CHECK(ndr_pull_lsa_QosInfo(ndr, NDR_SCALARS, r->sec_qos));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_qos_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_ObjectAttribute(struct ndr_print *ndr, const char *name, const struct lsa_ObjectAttribute *r)
-{
- ndr_print_struct(ndr, name, "lsa_ObjectAttribute");
- ndr->depth++;
- ndr_print_uint32(ndr, "len", r->len);
- ndr_print_ptr(ndr, "root_dir", r->root_dir);
- ndr->depth++;
- if (r->root_dir) {
- ndr_print_uint8(ndr, "root_dir", *r->root_dir);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "object_name", r->object_name);
- ndr->depth++;
- if (r->object_name) {
- ndr_print_string(ndr, "object_name", r->object_name);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "attributes", r->attributes);
- ndr_print_ptr(ndr, "sec_desc", r->sec_desc);
- ndr->depth++;
- if (r->sec_desc) {
- ndr_print_security_descriptor(ndr, "sec_desc", r->sec_desc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sec_qos", r->sec_qos);
- ndr->depth++;
- if (r->sec_qos) {
- ndr_print_lsa_QosInfo(ndr, "sec_qos", r->sec_qos);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_AuditLogInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_AuditLogInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->percent_full));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->log_size));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->retention_time));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->shutdown_in_progress));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time_to_shutdown));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->next_audit_record));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_AuditLogInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_AuditLogInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->percent_full));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->log_size));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->retention_time));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->shutdown_in_progress));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time_to_shutdown));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->next_audit_record));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_AuditLogInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditLogInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_AuditLogInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "percent_full", r->percent_full);
- ndr_print_uint32(ndr, "log_size", r->log_size);
- ndr_print_NTTIME(ndr, "retention_time", r->retention_time);
- ndr_print_uint8(ndr, "shutdown_in_progress", r->shutdown_in_progress);
- ndr_print_NTTIME(ndr, "time_to_shutdown", r->time_to_shutdown);
- ndr_print_uint32(ndr, "next_audit_record", r->next_audit_record);
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_AuditEventsInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_AuditEventsInfo *r)
-{
- uint32_t cntr_settings_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auditing_mode));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->settings));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->settings) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_settings_1 = 0; cntr_settings_1 < r->count; cntr_settings_1++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->settings[cntr_settings_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_AuditEventsInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_AuditEventsInfo *r)
-{
- uint32_t _ptr_settings;
- uint32_t cntr_settings_1;
- TALLOC_CTX *_mem_save_settings_0;
- TALLOC_CTX *_mem_save_settings_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auditing_mode));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_settings));
- if (_ptr_settings) {
- NDR_PULL_ALLOC(ndr, r->settings);
- } else {
- r->settings = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->settings) {
- _mem_save_settings_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->settings, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->settings));
- NDR_PULL_ALLOC_N(ndr, r->settings, ndr_get_array_size(ndr, &r->settings));
- _mem_save_settings_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->settings, 0);
- for (cntr_settings_1 = 0; cntr_settings_1 < r->count; cntr_settings_1++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->settings[cntr_settings_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_settings_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_settings_0, 0);
- }
- if (r->settings) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->settings, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_AuditEventsInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditEventsInfo *r)
-{
- uint32_t cntr_settings_1;
- ndr_print_struct(ndr, name, "lsa_AuditEventsInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "auditing_mode", r->auditing_mode);
- ndr_print_ptr(ndr, "settings", r->settings);
- ndr->depth++;
- if (r->settings) {
- ndr->print(ndr, "%s: ARRAY(%d)", "settings", r->count);
- ndr->depth++;
- for (cntr_settings_1=0;cntr_settings_1<r->count;cntr_settings_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_settings_1);
- if (idx_1) {
- ndr_print_uint32(ndr, "settings", r->settings[cntr_settings_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "count", r->count);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DomainInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_DomainInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->name));
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DomainInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_DomainInfo *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->name));
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DomainInfo(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_DomainInfo");
- ndr->depth++;
- ndr_print_lsa_StringLarge(ndr, "name", &r->name);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_PDAccountInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_PDAccountInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_PDAccountInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_PDAccountInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_PDAccountInfo(struct ndr_print *ndr, const char *name, const struct lsa_PDAccountInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_PDAccountInfo");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "name", &r->name);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_ServerRole(struct ndr_push *ndr, int ndr_flags, const struct lsa_ServerRole *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->role));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_ServerRole(struct ndr_pull *ndr, int ndr_flags, struct lsa_ServerRole *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->role));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_ServerRole(struct ndr_print *ndr, const char *name, const struct lsa_ServerRole *r)
-{
- ndr_print_struct(ndr, name, "lsa_ServerRole");
- ndr->depth++;
- ndr_print_uint16(ndr, "unknown", r->unknown);
- ndr_print_uint16(ndr, "role", r->role);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_ReplicaSourceInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_ReplicaSourceInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->source));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->source));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_ReplicaSourceInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_ReplicaSourceInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->source));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->source));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_ReplicaSourceInfo(struct ndr_print *ndr, const char *name, const struct lsa_ReplicaSourceInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_ReplicaSourceInfo");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "source", &r->source);
- ndr_print_lsa_String(ndr, "account", &r->account);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DefaultQuotaInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_DefaultQuotaInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 8));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->paged_pool));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->non_paged_pool));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->min_wss));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_wss));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pagefile));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DefaultQuotaInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_DefaultQuotaInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 8));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->paged_pool));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->non_paged_pool));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->min_wss));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_wss));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pagefile));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DefaultQuotaInfo(struct ndr_print *ndr, const char *name, const struct lsa_DefaultQuotaInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_DefaultQuotaInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "paged_pool", r->paged_pool);
- ndr_print_uint32(ndr, "non_paged_pool", r->non_paged_pool);
- ndr_print_uint32(ndr, "min_wss", r->min_wss);
- ndr_print_uint32(ndr, "max_wss", r->max_wss);
- ndr_print_uint32(ndr, "pagefile", r->pagefile);
- ndr_print_hyper(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_ModificationInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_ModificationInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 8));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->modified_id));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->db_create_time));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_ModificationInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_ModificationInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 8));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->modified_id));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->db_create_time));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_ModificationInfo(struct ndr_print *ndr, const char *name, const struct lsa_ModificationInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_ModificationInfo");
- ndr->depth++;
- ndr_print_hyper(ndr, "modified_id", r->modified_id);
- ndr_print_NTTIME(ndr, "db_create_time", r->db_create_time);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_AuditFullSetInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_AuditFullSetInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->shutdown_on_full));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_AuditFullSetInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_AuditFullSetInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->shutdown_on_full));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_AuditFullSetInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditFullSetInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_AuditFullSetInfo");
- ndr->depth++;
- ndr_print_uint8(ndr, "shutdown_on_full", r->shutdown_on_full);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_AuditFullQueryInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_AuditFullQueryInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->shutdown_on_full));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->log_is_full));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_AuditFullQueryInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_AuditFullQueryInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->shutdown_on_full));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->log_is_full));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_AuditFullQueryInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditFullQueryInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_AuditFullQueryInfo");
- ndr->depth++;
- ndr_print_uint16(ndr, "unknown", r->unknown);
- ndr_print_uint8(ndr, "shutdown_on_full", r->shutdown_on_full);
- ndr_print_uint8(ndr, "log_is_full", r->log_is_full);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DnsDomainInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_DnsDomainInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->dns_domain));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->dns_forest));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->name));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->dns_domain));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->dns_forest));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->domain_guid));
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DnsDomainInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_DnsDomainInfo *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->dns_domain));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->dns_forest));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->name));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->dns_domain));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->dns_forest));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->domain_guid));
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DnsDomainInfo(struct ndr_print *ndr, const char *name, const struct lsa_DnsDomainInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_DnsDomainInfo");
- ndr->depth++;
- ndr_print_lsa_StringLarge(ndr, "name", &r->name);
- ndr_print_lsa_StringLarge(ndr, "dns_domain", &r->dns_domain);
- ndr_print_lsa_StringLarge(ndr, "dns_forest", &r->dns_forest);
- ndr_print_GUID(ndr, "domain_guid", &r->domain_guid);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_PolicyInformation(struct ndr_push *ndr, int ndr_flags, const union lsa_PolicyInformation *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
- switch (level) {
- case LSA_POLICY_INFO_AUDIT_LOG:
- NDR_CHECK(ndr_push_lsa_AuditLogInfo(ndr, NDR_SCALARS, &r->audit_log));
- break;
-
- case LSA_POLICY_INFO_AUDIT_EVENTS:
- NDR_CHECK(ndr_push_lsa_AuditEventsInfo(ndr, NDR_SCALARS, &r->audit_events));
- break;
-
- case LSA_POLICY_INFO_DOMAIN:
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_SCALARS, &r->domain));
- break;
-
- case LSA_POLICY_INFO_PD:
- NDR_CHECK(ndr_push_lsa_PDAccountInfo(ndr, NDR_SCALARS, &r->pd));
- break;
-
- case LSA_POLICY_INFO_ACCOUNT_DOMAIN:
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_SCALARS, &r->account_domain));
- break;
-
- case LSA_POLICY_INFO_ROLE:
- NDR_CHECK(ndr_push_lsa_ServerRole(ndr, NDR_SCALARS, &r->role));
- break;
-
- case LSA_POLICY_INFO_REPLICA:
- NDR_CHECK(ndr_push_lsa_ReplicaSourceInfo(ndr, NDR_SCALARS, &r->replica));
- break;
-
- case LSA_POLICY_INFO_QUOTA:
- NDR_CHECK(ndr_push_lsa_DefaultQuotaInfo(ndr, NDR_SCALARS, &r->quota));
- break;
-
- case LSA_POLICY_INFO_DB:
- NDR_CHECK(ndr_push_lsa_ModificationInfo(ndr, NDR_SCALARS, &r->db));
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_SET:
- NDR_CHECK(ndr_push_lsa_AuditFullSetInfo(ndr, NDR_SCALARS, &r->auditfullset));
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_QUERY:
- NDR_CHECK(ndr_push_lsa_AuditFullQueryInfo(ndr, NDR_SCALARS, &r->auditfullquery));
- break;
-
- case LSA_POLICY_INFO_DNS:
- NDR_CHECK(ndr_push_lsa_DnsDomainInfo(ndr, NDR_SCALARS, &r->dns));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case LSA_POLICY_INFO_AUDIT_LOG:
- break;
-
- case LSA_POLICY_INFO_AUDIT_EVENTS:
- NDR_CHECK(ndr_push_lsa_AuditEventsInfo(ndr, NDR_BUFFERS, &r->audit_events));
- break;
-
- case LSA_POLICY_INFO_DOMAIN:
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->domain));
- break;
-
- case LSA_POLICY_INFO_PD:
- NDR_CHECK(ndr_push_lsa_PDAccountInfo(ndr, NDR_BUFFERS, &r->pd));
- break;
-
- case LSA_POLICY_INFO_ACCOUNT_DOMAIN:
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->account_domain));
- break;
-
- case LSA_POLICY_INFO_ROLE:
- break;
-
- case LSA_POLICY_INFO_REPLICA:
- NDR_CHECK(ndr_push_lsa_ReplicaSourceInfo(ndr, NDR_BUFFERS, &r->replica));
- break;
-
- case LSA_POLICY_INFO_QUOTA:
- break;
-
- case LSA_POLICY_INFO_DB:
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_SET:
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_QUERY:
- break;
-
- case LSA_POLICY_INFO_DNS:
- NDR_CHECK(ndr_push_lsa_DnsDomainInfo(ndr, NDR_BUFFERS, &r->dns));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_PolicyInformation(struct ndr_pull *ndr, int ndr_flags, union lsa_PolicyInformation *r)
-{
- int level;
- uint16_t _level;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case LSA_POLICY_INFO_AUDIT_LOG: {
- NDR_CHECK(ndr_pull_lsa_AuditLogInfo(ndr, NDR_SCALARS, &r->audit_log));
- break; }
-
- case LSA_POLICY_INFO_AUDIT_EVENTS: {
- NDR_CHECK(ndr_pull_lsa_AuditEventsInfo(ndr, NDR_SCALARS, &r->audit_events));
- break; }
-
- case LSA_POLICY_INFO_DOMAIN: {
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_SCALARS, &r->domain));
- break; }
-
- case LSA_POLICY_INFO_PD: {
- NDR_CHECK(ndr_pull_lsa_PDAccountInfo(ndr, NDR_SCALARS, &r->pd));
- break; }
-
- case LSA_POLICY_INFO_ACCOUNT_DOMAIN: {
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_SCALARS, &r->account_domain));
- break; }
-
- case LSA_POLICY_INFO_ROLE: {
- NDR_CHECK(ndr_pull_lsa_ServerRole(ndr, NDR_SCALARS, &r->role));
- break; }
-
- case LSA_POLICY_INFO_REPLICA: {
- NDR_CHECK(ndr_pull_lsa_ReplicaSourceInfo(ndr, NDR_SCALARS, &r->replica));
- break; }
-
- case LSA_POLICY_INFO_QUOTA: {
- NDR_CHECK(ndr_pull_lsa_DefaultQuotaInfo(ndr, NDR_SCALARS, &r->quota));
- break; }
-
- case LSA_POLICY_INFO_DB: {
- NDR_CHECK(ndr_pull_lsa_ModificationInfo(ndr, NDR_SCALARS, &r->db));
- break; }
-
- case LSA_POLICY_INFO_AUDIT_FULL_SET: {
- NDR_CHECK(ndr_pull_lsa_AuditFullSetInfo(ndr, NDR_SCALARS, &r->auditfullset));
- break; }
-
- case LSA_POLICY_INFO_AUDIT_FULL_QUERY: {
- NDR_CHECK(ndr_pull_lsa_AuditFullQueryInfo(ndr, NDR_SCALARS, &r->auditfullquery));
- break; }
-
- case LSA_POLICY_INFO_DNS: {
- NDR_CHECK(ndr_pull_lsa_DnsDomainInfo(ndr, NDR_SCALARS, &r->dns));
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case LSA_POLICY_INFO_AUDIT_LOG:
- break;
-
- case LSA_POLICY_INFO_AUDIT_EVENTS:
- NDR_CHECK(ndr_pull_lsa_AuditEventsInfo(ndr, NDR_BUFFERS, &r->audit_events));
- break;
-
- case LSA_POLICY_INFO_DOMAIN:
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->domain));
- break;
-
- case LSA_POLICY_INFO_PD:
- NDR_CHECK(ndr_pull_lsa_PDAccountInfo(ndr, NDR_BUFFERS, &r->pd));
- break;
-
- case LSA_POLICY_INFO_ACCOUNT_DOMAIN:
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->account_domain));
- break;
-
- case LSA_POLICY_INFO_ROLE:
- break;
-
- case LSA_POLICY_INFO_REPLICA:
- NDR_CHECK(ndr_pull_lsa_ReplicaSourceInfo(ndr, NDR_BUFFERS, &r->replica));
- break;
-
- case LSA_POLICY_INFO_QUOTA:
- break;
-
- case LSA_POLICY_INFO_DB:
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_SET:
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_QUERY:
- break;
-
- case LSA_POLICY_INFO_DNS:
- NDR_CHECK(ndr_pull_lsa_DnsDomainInfo(ndr, NDR_BUFFERS, &r->dns));
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_PolicyInformation(struct ndr_print *ndr, const char *name, const union lsa_PolicyInformation *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "lsa_PolicyInformation");
- switch (level) {
- case LSA_POLICY_INFO_AUDIT_LOG:
- ndr_print_lsa_AuditLogInfo(ndr, "audit_log", &r->audit_log);
- break;
-
- case LSA_POLICY_INFO_AUDIT_EVENTS:
- ndr_print_lsa_AuditEventsInfo(ndr, "audit_events", &r->audit_events);
- break;
-
- case LSA_POLICY_INFO_DOMAIN:
- ndr_print_lsa_DomainInfo(ndr, "domain", &r->domain);
- break;
-
- case LSA_POLICY_INFO_PD:
- ndr_print_lsa_PDAccountInfo(ndr, "pd", &r->pd);
- break;
-
- case LSA_POLICY_INFO_ACCOUNT_DOMAIN:
- ndr_print_lsa_DomainInfo(ndr, "account_domain", &r->account_domain);
- break;
-
- case LSA_POLICY_INFO_ROLE:
- ndr_print_lsa_ServerRole(ndr, "role", &r->role);
- break;
-
- case LSA_POLICY_INFO_REPLICA:
- ndr_print_lsa_ReplicaSourceInfo(ndr, "replica", &r->replica);
- break;
-
- case LSA_POLICY_INFO_QUOTA:
- ndr_print_lsa_DefaultQuotaInfo(ndr, "quota", &r->quota);
- break;
-
- case LSA_POLICY_INFO_DB:
- ndr_print_lsa_ModificationInfo(ndr, "db", &r->db);
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_SET:
- ndr_print_lsa_AuditFullSetInfo(ndr, "auditfullset", &r->auditfullset);
- break;
-
- case LSA_POLICY_INFO_AUDIT_FULL_QUERY:
- ndr_print_lsa_AuditFullQueryInfo(ndr, "auditfullquery", &r->auditfullquery);
- break;
-
- case LSA_POLICY_INFO_DNS:
- ndr_print_lsa_DnsDomainInfo(ndr, "dns", &r->dns);
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_lsa_SidPtr(struct ndr_push *ndr, int ndr_flags, const struct lsa_SidPtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SidPtr(struct ndr_pull *ndr, int ndr_flags, struct lsa_SidPtr *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SidPtr(struct ndr_print *ndr, const char *name, const struct lsa_SidPtr *r)
-{
- ndr_print_struct(ndr, name, "lsa_SidPtr");
- ndr->depth++;
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_lsa_SidArray(struct ndr_push *ndr, int ndr_flags, const struct lsa_SidArray *r)
-{
- uint32_t cntr_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sids));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sids));
- for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
- NDR_CHECK(ndr_push_lsa_SidPtr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
- NDR_CHECK(ndr_push_lsa_SidPtr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_lsa_SidArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_SidArray *r)
-{
- uint32_t _ptr_sids;
- uint32_t cntr_sids_1;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sids));
- if (r->num_sids < 0 || r->num_sids > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
- if (_ptr_sids) {
- NDR_PULL_ALLOC(ndr, r->sids);
- } else {
- r->sids = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
- NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
- _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_lsa_SidPtr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_lsa_SidPtr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
- }
- if (r->sids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SidArray(struct ndr_print *ndr, const char *name, const struct lsa_SidArray *r)
-{
- uint32_t cntr_sids_1;
- ndr_print_struct(ndr, name, "lsa_SidArray");
- ndr->depth++;
- ndr_print_uint32(ndr, "num_sids", r->num_sids);
- ndr_print_ptr(ndr, "sids", r->sids);
- ndr->depth++;
- if (r->sids) {
- ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->num_sids);
- ndr->depth++;
- for (cntr_sids_1=0;cntr_sids_1<r->num_sids;cntr_sids_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_sids_1);
- if (idx_1) {
- ndr_print_lsa_SidPtr(ndr, "sids", &r->sids[cntr_sids_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DomainList(struct ndr_push *ndr, int ndr_flags, const struct lsa_DomainList *r)
-{
- uint32_t cntr_domains_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domains));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domains) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_SCALARS, &r->domains[cntr_domains_1]));
- }
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->domains[cntr_domains_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DomainList(struct ndr_pull *ndr, int ndr_flags, struct lsa_DomainList *r)
-{
- uint32_t _ptr_domains;
- uint32_t cntr_domains_1;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_domains_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->domains);
- } else {
- r->domains = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domains, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domains));
- NDR_PULL_ALLOC_N(ndr, r->domains, ndr_get_array_size(ndr, &r->domains));
- _mem_save_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domains, 0);
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_SCALARS, &r->domains[cntr_domains_1]));
- }
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->domains[cntr_domains_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (r->domains) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->domains, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DomainList(struct ndr_print *ndr, const char *name, const struct lsa_DomainList *r)
-{
- uint32_t cntr_domains_1;
- ndr_print_struct(ndr, name, "lsa_DomainList");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "domains", r->domains);
- ndr->depth++;
- if (r->domains) {
- ndr->print(ndr, "%s: ARRAY(%d)", "domains", r->count);
- ndr->depth++;
- for (cntr_domains_1=0;cntr_domains_1<r->count;cntr_domains_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_domains_1);
- if (idx_1) {
- ndr_print_lsa_DomainInfo(ndr, "domains", &r->domains[cntr_domains_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SidType(struct ndr_push *ndr, int ndr_flags, enum lsa_SidType r)
-{
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SidType(struct ndr_pull *ndr, int ndr_flags, enum lsa_SidType *r)
-{
- uint16_t v;
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SidType(struct ndr_print *ndr, const char *name, enum lsa_SidType r)
-{
- const char *val = NULL;
-
- switch (r) {
- case SID_NAME_USE_NONE: val = "SID_NAME_USE_NONE"; break;
- case SID_NAME_USER: val = "SID_NAME_USER"; break;
- case SID_NAME_DOM_GRP: val = "SID_NAME_DOM_GRP"; break;
- case SID_NAME_DOMAIN: val = "SID_NAME_DOMAIN"; break;
- case SID_NAME_ALIAS: val = "SID_NAME_ALIAS"; break;
- case SID_NAME_WKN_GRP: val = "SID_NAME_WKN_GRP"; break;
- case SID_NAME_DELETED: val = "SID_NAME_DELETED"; break;
- case SID_NAME_INVALID: val = "SID_NAME_INVALID"; break;
- case SID_NAME_UNKNOWN: val = "SID_NAME_UNKNOWN"; break;
- case SID_NAME_COMPUTER: val = "SID_NAME_COMPUTER"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_lsa_TranslatedSid(struct ndr_push *ndr, int ndr_flags, const struct lsa_TranslatedSid *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_SidType(ndr, NDR_SCALARS, r->sid_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_index));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TranslatedSid(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedSid *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_SidType(ndr, NDR_SCALARS, &r->sid_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_index));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TranslatedSid(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid *r)
-{
- ndr_print_struct(ndr, name, "lsa_TranslatedSid");
- ndr->depth++;
- ndr_print_lsa_SidType(ndr, "sid_type", r->sid_type);
- ndr_print_uint32(ndr, "rid", r->rid);
- ndr_print_uint32(ndr, "sid_index", r->sid_index);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TransSidArray(struct ndr_push *ndr, int ndr_flags, const struct lsa_TransSidArray *r)
-{
- uint32_t cntr_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedSid(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TransSidArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransSidArray *r)
-{
- uint32_t _ptr_sids;
- uint32_t cntr_sids_1;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- if (r->count < 0 || r->count > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
- if (_ptr_sids) {
- NDR_PULL_ALLOC(ndr, r->sids);
- } else {
- r->sids = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
- NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
- _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedSid(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
- }
- if (r->sids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TransSidArray(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray *r)
-{
- uint32_t cntr_sids_1;
- ndr_print_struct(ndr, name, "lsa_TransSidArray");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "sids", r->sids);
- ndr->depth++;
- if (r->sids) {
- ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->count);
- ndr->depth++;
- for (cntr_sids_1=0;cntr_sids_1<r->count;cntr_sids_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_sids_1);
- if (idx_1) {
- ndr_print_lsa_TranslatedSid(ndr, "sids", &r->sids[cntr_sids_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_RefDomainList(struct ndr_push *ndr, int ndr_flags, const struct lsa_RefDomainList *r)
-{
- uint32_t cntr_domains_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domains));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_size));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domains) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_SCALARS, &r->domains[cntr_domains_1]));
- }
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->domains[cntr_domains_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_RefDomainList(struct ndr_pull *ndr, int ndr_flags, struct lsa_RefDomainList *r)
-{
- uint32_t _ptr_domains;
- uint32_t cntr_domains_1;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_domains_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- if (r->count < 0 || r->count > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->domains);
- } else {
- r->domains = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_size));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domains, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domains));
- NDR_PULL_ALLOC_N(ndr, r->domains, ndr_get_array_size(ndr, &r->domains));
- _mem_save_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domains, 0);
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_SCALARS, &r->domains[cntr_domains_1]));
- }
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_BUFFERS, &r->domains[cntr_domains_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (r->domains) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->domains, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_RefDomainList(struct ndr_print *ndr, const char *name, const struct lsa_RefDomainList *r)
-{
- uint32_t cntr_domains_1;
- ndr_print_struct(ndr, name, "lsa_RefDomainList");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "domains", r->domains);
- ndr->depth++;
- if (r->domains) {
- ndr->print(ndr, "%s: ARRAY(%d)", "domains", r->count);
- ndr->depth++;
- for (cntr_domains_1=0;cntr_domains_1<r->count;cntr_domains_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_domains_1);
- if (idx_1) {
- ndr_print_lsa_DomainInfo(ndr, "domains", &r->domains[cntr_domains_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "max_size", r->max_size);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TranslatedName(struct ndr_push *ndr, int ndr_flags, const struct lsa_TranslatedName *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_SidType(ndr, NDR_SCALARS, r->sid_type));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_index));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TranslatedName(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedName *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_SidType(ndr, NDR_SCALARS, &r->sid_type));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_index));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TranslatedName(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedName *r)
-{
- ndr_print_struct(ndr, name, "lsa_TranslatedName");
- ndr->depth++;
- ndr_print_lsa_SidType(ndr, "sid_type", r->sid_type);
- ndr_print_lsa_String(ndr, "name", &r->name);
- ndr_print_uint32(ndr, "sid_index", r->sid_index);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TransNameArray(struct ndr_push *ndr, int ndr_flags, const struct lsa_TransNameArray *r)
-{
- uint32_t cntr_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->names));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedName(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedName(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TransNameArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransNameArray *r)
-{
- uint32_t _ptr_names;
- uint32_t cntr_names_1;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- if (r->count < 0 || r->count > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_names));
- if (_ptr_names) {
- NDR_PULL_ALLOC(ndr, r->names);
- } else {
- r->names = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->names));
- NDR_PULL_ALLOC_N(ndr, r->names, ndr_get_array_size(ndr, &r->names));
- _mem_save_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedName(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedName(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- }
- if (r->names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TransNameArray(struct ndr_print *ndr, const char *name, const struct lsa_TransNameArray *r)
-{
- uint32_t cntr_names_1;
- ndr_print_struct(ndr, name, "lsa_TransNameArray");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "names", r->names);
- ndr->depth++;
- if (r->names) {
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->count);
- ndr->depth++;
- for (cntr_names_1=0;cntr_names_1<r->count;cntr_names_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_names_1);
- if (idx_1) {
- ndr_print_lsa_TranslatedName(ndr, "names", &r->names[cntr_names_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LUIDAttribute(struct ndr_push *ndr, int ndr_flags, const struct lsa_LUIDAttribute *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_LUID(ndr, NDR_SCALARS, &r->luid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attribute));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LUIDAttribute(struct ndr_pull *ndr, int ndr_flags, struct lsa_LUIDAttribute *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_LUID(ndr, NDR_SCALARS, &r->luid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attribute));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LUIDAttribute(struct ndr_print *ndr, const char *name, const struct lsa_LUIDAttribute *r)
-{
- ndr_print_struct(ndr, name, "lsa_LUIDAttribute");
- ndr->depth++;
- ndr_print_lsa_LUID(ndr, "luid", &r->luid);
- ndr_print_uint32(ndr, "attribute", r->attribute);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_PrivilegeSet(struct ndr_push *ndr, int ndr_flags, const struct lsa_PrivilegeSet *r)
-{
- uint32_t cntr_set_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- for (cntr_set_0 = 0; cntr_set_0 < r->count; cntr_set_0++) {
- NDR_CHECK(ndr_push_lsa_LUIDAttribute(ndr, NDR_SCALARS, &r->set[cntr_set_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_PrivilegeSet(struct ndr_pull *ndr, int ndr_flags, struct lsa_PrivilegeSet *r)
-{
- uint32_t cntr_set_0;
- TALLOC_CTX *_mem_save_set_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->set));
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- if (r->count < 0 || r->count > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- NDR_PULL_ALLOC_N(ndr, r->set, ndr_get_array_size(ndr, &r->set));
- _mem_save_set_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->set, 0);
- for (cntr_set_0 = 0; cntr_set_0 < r->count; cntr_set_0++) {
- NDR_CHECK(ndr_pull_lsa_LUIDAttribute(ndr, NDR_SCALARS, &r->set[cntr_set_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_set_0, 0);
- if (r->set) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->set, r->count));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_PrivilegeSet(struct ndr_print *ndr, const char *name, const struct lsa_PrivilegeSet *r)
-{
- uint32_t cntr_set_0;
- ndr_print_struct(ndr, name, "lsa_PrivilegeSet");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr->print(ndr, "%s: ARRAY(%d)", "set", r->count);
- ndr->depth++;
- for (cntr_set_0=0;cntr_set_0<r->count;cntr_set_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_set_0);
- if (idx_0) {
- ndr_print_lsa_LUIDAttribute(ndr, "set", &r->set[cntr_set_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DATA_BUF(struct ndr_push *ndr, int ndr_flags, const struct lsa_DATA_BUF *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DATA_BUF(struct ndr_pull *ndr, int ndr_flags, struct lsa_DATA_BUF *r)
-{
- uint32_t _ptr_data;
- TALLOC_CTX *_mem_save_data_0;
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->data);
- } else {
- r->data = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
- if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
- }
- NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_length(ndr, &r->data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size));
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length));
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DATA_BUF(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF *r)
-{
- ndr_print_struct(ndr, name, "lsa_DATA_BUF");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_uint32(ndr, "length", r->length);
- ndr_print_uint32(ndr, "size", r->size);
- ndr_print_ptr(ndr, "data", r->data);
- ndr->depth++;
- if (r->data) {
- ndr_print_array_uint8(ndr, "data", r->data, r->length);
- }
- ndr->depth--;
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-NTSTATUS ndr_push_lsa_DATA_BUF2(struct ndr_push *ndr, int ndr_flags, const struct lsa_DATA_BUF2 *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->size));
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DATA_BUF2(struct ndr_pull *ndr, int ndr_flags, struct lsa_DATA_BUF2 *r)
-{
- uint32_t _ptr_data;
- TALLOC_CTX *_mem_save_data_0;
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
- if (r->size < 0 || r->size > 65536) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->data);
- } else {
- r->data = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
- NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size));
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DATA_BUF2(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_DATA_BUF2");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_uint32(ndr, "size", r->size);
- ndr_print_ptr(ndr, "data", r->data);
- ndr->depth++;
- if (r->data) {
- ndr_print_array_uint8(ndr, "data", r->data, r->size);
- }
- ndr->depth--;
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-NTSTATUS ndr_push_lsa_TrustDomInfoEnum(struct ndr_push *ndr, int ndr_flags, enum lsa_TrustDomInfoEnum r)
-{
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomInfoEnum(struct ndr_pull *ndr, int ndr_flags, enum lsa_TrustDomInfoEnum *r)
-{
- uint16_t v;
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomInfoEnum(struct ndr_print *ndr, const char *name, enum lsa_TrustDomInfoEnum r)
-{
- const char *val = NULL;
-
- switch (r) {
- case LSA_TRUSTED_DOMAIN_INFO_NAME: val = "LSA_TRUSTED_DOMAIN_INFO_NAME"; break;
- case LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO: val = "LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO"; break;
- case LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET: val = "LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET"; break;
- case LSA_TRUSTED_DOMAIN_INFO_PASSWORD: val = "LSA_TRUSTED_DOMAIN_INFO_PASSWORD"; break;
- case LSA_TRUSTED_DOMAIN_INFO_BASIC: val = "LSA_TRUSTED_DOMAIN_INFO_BASIC"; break;
- case LSA_TRUSTED_DOMAIN_INFO_INFO_EX: val = "LSA_TRUSTED_DOMAIN_INFO_INFO_EX"; break;
- case LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO: val = "LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO"; break;
- case LSA_TRUSTED_DOMAIN_INFO_FULL_INFO: val = "LSA_TRUSTED_DOMAIN_INFO_FULL_INFO"; break;
- case LSA_TRUSTED_DOMAIN_INFO_11: val = "LSA_TRUSTED_DOMAIN_INFO_11"; break;
- case LSA_TRUSTED_DOMAIN_INFO_INFO_ALL: val = "LSA_TRUSTED_DOMAIN_INFO_INFO_ALL"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoName(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoName *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->netbios_name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->netbios_name));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoName(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoName *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->netbios_name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->netbios_name));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoName(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoName *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoName");
- ndr->depth++;
- ndr_print_lsa_StringLarge(ndr, "netbios_name", &r->netbios_name);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoPosixOffset(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoPosixOffset *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->posix_offset));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoPosixOffset(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoPosixOffset *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->posix_offset));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoPosixOffset(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoPosixOffset *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoPosixOffset");
- ndr->depth++;
- ndr_print_uint32(ndr, "posix_offset", r->posix_offset);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoPassword(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoPassword *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->old_password));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->password) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- }
- if (r->old_password) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->old_password));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoPassword(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoPassword *r)
-{
- uint32_t _ptr_password;
- TALLOC_CTX *_mem_save_password_0;
- uint32_t _ptr_old_password;
- TALLOC_CTX *_mem_save_old_password_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->password);
- } else {
- r->password = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_old_password));
- if (_ptr_old_password) {
- NDR_PULL_ALLOC(ndr, r->old_password);
- } else {
- r->old_password = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- if (r->old_password) {
- _mem_save_old_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->old_password, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->old_password));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_password_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoPassword(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoPassword *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoPassword");
- ndr->depth++;
- ndr_print_ptr(ndr, "password", r->password);
- ndr->depth++;
- if (r->password) {
- ndr_print_lsa_DATA_BUF(ndr, "password", r->password);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "old_password", r->old_password);
- ndr->depth++;
- if (r->old_password) {
- ndr_print_lsa_DATA_BUF(ndr, "old_password", r->old_password);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoBasic(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoBasic *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->netbios_name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->netbios_name));
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoBasic(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoBasic *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->netbios_name));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->netbios_name));
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoBasic(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoBasic *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoBasic");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "netbios_name", &r->netbios_name);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoInfoEx(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoInfoEx *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->netbios_name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trust_direction));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trust_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trust_attributes));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->netbios_name));
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoInfoEx(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoInfoEx *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->netbios_name));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trust_direction));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trust_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trust_attributes));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->netbios_name));
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoInfoEx(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoInfoEx *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoInfoEx");
- ndr->depth++;
- ndr_print_lsa_StringLarge(ndr, "domain_name", &r->domain_name);
- ndr_print_lsa_StringLarge(ndr, "netbios_name", &r->netbios_name);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "trust_direction", r->trust_direction);
- ndr_print_uint32(ndr, "trust_type", r->trust_type);
- ndr_print_uint32(ndr, "trust_attributes", r->trust_attributes);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoBuffer(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoBuffer *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 8));
- NDR_CHECK(ndr_push_NTTIME_hyper(ndr, NDR_SCALARS, r->last_update_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->secret_type));
- NDR_CHECK(ndr_push_lsa_DATA_BUF2(ndr, NDR_SCALARS, &r->data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF2(ndr, NDR_BUFFERS, &r->data));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoBuffer(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoBuffer *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 8));
- NDR_CHECK(ndr_pull_NTTIME_hyper(ndr, NDR_SCALARS, &r->last_update_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->secret_type));
- NDR_CHECK(ndr_pull_lsa_DATA_BUF2(ndr, NDR_SCALARS, &r->data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_DATA_BUF2(ndr, NDR_BUFFERS, &r->data));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoBuffer(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoBuffer *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoBuffer");
- ndr->depth++;
- ndr_print_NTTIME_hyper(ndr, "last_update_time", r->last_update_time);
- ndr_print_uint32(ndr, "secret_type", r->secret_type);
- ndr_print_lsa_DATA_BUF2(ndr, "data", &r->data);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoAuthInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoAuthInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->incoming_count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->incoming_current_auth_info));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->incoming_previous_auth_info));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->outgoing_count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->outgoing_current_auth_info));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->outgoing_previous_auth_info));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->incoming_current_auth_info) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->incoming_current_auth_info));
- }
- if (r->incoming_previous_auth_info) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->incoming_previous_auth_info));
- }
- if (r->outgoing_current_auth_info) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->outgoing_current_auth_info));
- }
- if (r->outgoing_previous_auth_info) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->outgoing_previous_auth_info));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoAuthInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoAuthInfo *r)
-{
- uint32_t _ptr_incoming_current_auth_info;
- TALLOC_CTX *_mem_save_incoming_current_auth_info_0;
- uint32_t _ptr_incoming_previous_auth_info;
- TALLOC_CTX *_mem_save_incoming_previous_auth_info_0;
- uint32_t _ptr_outgoing_current_auth_info;
- TALLOC_CTX *_mem_save_outgoing_current_auth_info_0;
- uint32_t _ptr_outgoing_previous_auth_info;
- TALLOC_CTX *_mem_save_outgoing_previous_auth_info_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->incoming_count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_incoming_current_auth_info));
- if (_ptr_incoming_current_auth_info) {
- NDR_PULL_ALLOC(ndr, r->incoming_current_auth_info);
- } else {
- r->incoming_current_auth_info = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_incoming_previous_auth_info));
- if (_ptr_incoming_previous_auth_info) {
- NDR_PULL_ALLOC(ndr, r->incoming_previous_auth_info);
- } else {
- r->incoming_previous_auth_info = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->outgoing_count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_outgoing_current_auth_info));
- if (_ptr_outgoing_current_auth_info) {
- NDR_PULL_ALLOC(ndr, r->outgoing_current_auth_info);
- } else {
- r->outgoing_current_auth_info = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_outgoing_previous_auth_info));
- if (_ptr_outgoing_previous_auth_info) {
- NDR_PULL_ALLOC(ndr, r->outgoing_previous_auth_info);
- } else {
- r->outgoing_previous_auth_info = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->incoming_current_auth_info) {
- _mem_save_incoming_current_auth_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->incoming_current_auth_info, 0);
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->incoming_current_auth_info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_incoming_current_auth_info_0, 0);
- }
- if (r->incoming_previous_auth_info) {
- _mem_save_incoming_previous_auth_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->incoming_previous_auth_info, 0);
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->incoming_previous_auth_info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_incoming_previous_auth_info_0, 0);
- }
- if (r->outgoing_current_auth_info) {
- _mem_save_outgoing_current_auth_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->outgoing_current_auth_info, 0);
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->outgoing_current_auth_info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_outgoing_current_auth_info_0, 0);
- }
- if (r->outgoing_previous_auth_info) {
- _mem_save_outgoing_previous_auth_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->outgoing_previous_auth_info, 0);
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoBuffer(ndr, NDR_SCALARS|NDR_BUFFERS, r->outgoing_previous_auth_info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_outgoing_previous_auth_info_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoAuthInfo(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoAuthInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoAuthInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "incoming_count", r->incoming_count);
- ndr_print_ptr(ndr, "incoming_current_auth_info", r->incoming_current_auth_info);
- ndr->depth++;
- if (r->incoming_current_auth_info) {
- ndr_print_lsa_TrustDomainInfoBuffer(ndr, "incoming_current_auth_info", r->incoming_current_auth_info);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "incoming_previous_auth_info", r->incoming_previous_auth_info);
- ndr->depth++;
- if (r->incoming_previous_auth_info) {
- ndr_print_lsa_TrustDomainInfoBuffer(ndr, "incoming_previous_auth_info", r->incoming_previous_auth_info);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "outgoing_count", r->outgoing_count);
- ndr_print_ptr(ndr, "outgoing_current_auth_info", r->outgoing_current_auth_info);
- ndr->depth++;
- if (r->outgoing_current_auth_info) {
- ndr_print_lsa_TrustDomainInfoBuffer(ndr, "outgoing_current_auth_info", r->outgoing_current_auth_info);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "outgoing_previous_auth_info", r->outgoing_previous_auth_info);
- ndr->depth++;
- if (r->outgoing_previous_auth_info) {
- ndr_print_lsa_TrustDomainInfoBuffer(ndr, "outgoing_previous_auth_info", r->outgoing_previous_auth_info);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoFullInfo(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoFullInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoPosixOffset(ndr, NDR_SCALARS, &r->posix_offset));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoAuthInfo(ndr, NDR_SCALARS, &r->auth_info));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoAuthInfo(ndr, NDR_BUFFERS, &r->auth_info));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoFullInfo(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoFullInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoPosixOffset(ndr, NDR_SCALARS, &r->posix_offset));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoAuthInfo(ndr, NDR_SCALARS, &r->auth_info));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoAuthInfo(ndr, NDR_BUFFERS, &r->auth_info));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoFullInfo(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoFullInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoFullInfo");
- ndr->depth++;
- ndr_print_lsa_TrustDomainInfoInfoEx(ndr, "info_ex", &r->info_ex);
- ndr_print_lsa_TrustDomainInfoPosixOffset(ndr, "posix_offset", &r->posix_offset);
- ndr_print_lsa_TrustDomainInfoAuthInfo(ndr, "auth_info", &r->auth_info);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfo11(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfo11 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- NDR_CHECK(ndr_push_lsa_DATA_BUF2(ndr, NDR_SCALARS, &r->data1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- NDR_CHECK(ndr_push_lsa_DATA_BUF2(ndr, NDR_BUFFERS, &r->data1));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfo11(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfo11 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- NDR_CHECK(ndr_pull_lsa_DATA_BUF2(ndr, NDR_SCALARS, &r->data1));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- NDR_CHECK(ndr_pull_lsa_DATA_BUF2(ndr, NDR_BUFFERS, &r->data1));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfo11(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfo11 *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfo11");
- ndr->depth++;
- ndr_print_lsa_TrustDomainInfoInfoEx(ndr, "info_ex", &r->info_ex);
- ndr_print_lsa_DATA_BUF2(ndr, "data1", &r->data1);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustDomainInfoInfoAll(struct ndr_push *ndr, int ndr_flags, const struct lsa_TrustDomainInfoInfoAll *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- NDR_CHECK(ndr_push_lsa_DATA_BUF2(ndr, NDR_SCALARS, &r->data1));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoPosixOffset(ndr, NDR_SCALARS, &r->posix_offset));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoAuthInfo(ndr, NDR_SCALARS, &r->auth_info));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- NDR_CHECK(ndr_push_lsa_DATA_BUF2(ndr, NDR_BUFFERS, &r->data1));
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoAuthInfo(ndr, NDR_BUFFERS, &r->auth_info));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustDomainInfoInfoAll(struct ndr_pull *ndr, int ndr_flags, struct lsa_TrustDomainInfoInfoAll *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- NDR_CHECK(ndr_pull_lsa_DATA_BUF2(ndr, NDR_SCALARS, &r->data1));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoPosixOffset(ndr, NDR_SCALARS, &r->posix_offset));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoAuthInfo(ndr, NDR_SCALARS, &r->auth_info));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- NDR_CHECK(ndr_pull_lsa_DATA_BUF2(ndr, NDR_BUFFERS, &r->data1));
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoAuthInfo(ndr, NDR_BUFFERS, &r->auth_info));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoInfoAll(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoInfoAll *r)
-{
- ndr_print_struct(ndr, name, "lsa_TrustDomainInfoInfoAll");
- ndr->depth++;
- ndr_print_lsa_TrustDomainInfoInfoEx(ndr, "info_ex", &r->info_ex);
- ndr_print_lsa_DATA_BUF2(ndr, "data1", &r->data1);
- ndr_print_lsa_TrustDomainInfoPosixOffset(ndr, "posix_offset", &r->posix_offset);
- ndr_print_lsa_TrustDomainInfoAuthInfo(ndr, "auth_info", &r->auth_info);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TrustedDomainInfo(struct ndr_push *ndr, int ndr_flags, const union lsa_TrustedDomainInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, level));
- switch (level) {
- case LSA_TRUSTED_DOMAIN_INFO_NAME:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoName(ndr, NDR_SCALARS, &r->name));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoPosixOffset(ndr, NDR_SCALARS, &r->posix_offset));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_PASSWORD:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoPassword(ndr, NDR_SCALARS, &r->password));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_BASIC:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoBasic(ndr, NDR_SCALARS, &r->info_basic));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_EX:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoAuthInfo(ndr, NDR_SCALARS, &r->auth_info));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_FULL_INFO:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoFullInfo(ndr, NDR_SCALARS, &r->full_info));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_11:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfo11(ndr, NDR_SCALARS, &r->info11));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_ALL:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoAll(ndr, NDR_SCALARS, &r->info_all));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case LSA_TRUSTED_DOMAIN_INFO_NAME:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoName(ndr, NDR_BUFFERS, &r->name));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET:
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_PASSWORD:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoPassword(ndr, NDR_BUFFERS, &r->password));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_BASIC:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoBasic(ndr, NDR_BUFFERS, &r->info_basic));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_EX:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoAuthInfo(ndr, NDR_BUFFERS, &r->auth_info));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_FULL_INFO:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoFullInfo(ndr, NDR_BUFFERS, &r->full_info));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_11:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfo11(ndr, NDR_BUFFERS, &r->info11));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_ALL:
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoAll(ndr, NDR_BUFFERS, &r->info_all));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TrustedDomainInfo(struct ndr_pull *ndr, int ndr_flags, union lsa_TrustedDomainInfo *r)
-{
- int level;
- uint16_t _level;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case LSA_TRUSTED_DOMAIN_INFO_NAME: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoName(ndr, NDR_SCALARS, &r->name));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoPosixOffset(ndr, NDR_SCALARS, &r->posix_offset));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_PASSWORD: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoPassword(ndr, NDR_SCALARS, &r->password));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_BASIC: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoBasic(ndr, NDR_SCALARS, &r->info_basic));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_EX: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->info_ex));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoAuthInfo(ndr, NDR_SCALARS, &r->auth_info));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_FULL_INFO: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoFullInfo(ndr, NDR_SCALARS, &r->full_info));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_11: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfo11(ndr, NDR_SCALARS, &r->info11));
- break; }
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_ALL: {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoAll(ndr, NDR_SCALARS, &r->info_all));
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case LSA_TRUSTED_DOMAIN_INFO_NAME:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoName(ndr, NDR_BUFFERS, &r->name));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET:
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_PASSWORD:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoPassword(ndr, NDR_BUFFERS, &r->password));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_BASIC:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoBasic(ndr, NDR_BUFFERS, &r->info_basic));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_EX:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->info_ex));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoAuthInfo(ndr, NDR_BUFFERS, &r->auth_info));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_FULL_INFO:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoFullInfo(ndr, NDR_BUFFERS, &r->full_info));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_11:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfo11(ndr, NDR_BUFFERS, &r->info11));
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_ALL:
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoAll(ndr, NDR_BUFFERS, &r->info_all));
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TrustedDomainInfo(struct ndr_print *ndr, const char *name, const union lsa_TrustedDomainInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "lsa_TrustedDomainInfo");
- switch (level) {
- case LSA_TRUSTED_DOMAIN_INFO_NAME:
- ndr_print_lsa_TrustDomainInfoName(ndr, "name", &r->name);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET:
- ndr_print_lsa_TrustDomainInfoPosixOffset(ndr, "posix_offset", &r->posix_offset);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_PASSWORD:
- ndr_print_lsa_TrustDomainInfoPassword(ndr, "password", &r->password);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_BASIC:
- ndr_print_lsa_TrustDomainInfoBasic(ndr, "info_basic", &r->info_basic);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_EX:
- ndr_print_lsa_TrustDomainInfoInfoEx(ndr, "info_ex", &r->info_ex);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO:
- ndr_print_lsa_TrustDomainInfoAuthInfo(ndr, "auth_info", &r->auth_info);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_FULL_INFO:
- ndr_print_lsa_TrustDomainInfoFullInfo(ndr, "full_info", &r->full_info);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_11:
- ndr_print_lsa_TrustDomainInfo11(ndr, "info11", &r->info11);
- break;
-
- case LSA_TRUSTED_DOMAIN_INFO_INFO_ALL:
- ndr_print_lsa_TrustDomainInfoInfoAll(ndr, "info_all", &r->info_all);
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_lsa_DATA_BUF_PTR(struct ndr_push *ndr, int ndr_flags, const struct lsa_DATA_BUF_PTR *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->buf));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->buf) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->buf));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DATA_BUF_PTR(struct ndr_pull *ndr, int ndr_flags, struct lsa_DATA_BUF_PTR *r)
-{
- uint32_t _ptr_buf;
- TALLOC_CTX *_mem_save_buf_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buf));
- if (_ptr_buf) {
- NDR_PULL_ALLOC(ndr, r->buf);
- } else {
- r->buf = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->buf) {
- _mem_save_buf_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->buf, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->buf));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buf_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DATA_BUF_PTR(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF_PTR *r)
-{
- ndr_print_struct(ndr, name, "lsa_DATA_BUF_PTR");
- ndr->depth++;
- ndr_print_ptr(ndr, "buf", r->buf);
- ndr->depth++;
- if (r->buf) {
- ndr_print_lsa_DATA_BUF(ndr, "buf", r->buf);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_RightSet(struct ndr_push *ndr, int ndr_flags, const struct lsa_RightSet *r)
-{
- uint32_t cntr_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->names));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_RightSet(struct ndr_pull *ndr, int ndr_flags, struct lsa_RightSet *r)
-{
- uint32_t _ptr_names;
- uint32_t cntr_names_1;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_names));
- if (_ptr_names) {
- NDR_PULL_ALLOC(ndr, r->names);
- } else {
- r->names = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->names));
- NDR_PULL_ALLOC_N(ndr, r->names, ndr_get_array_size(ndr, &r->names));
- _mem_save_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- }
- if (r->names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_RightSet(struct ndr_print *ndr, const char *name, const struct lsa_RightSet *r)
-{
- uint32_t cntr_names_1;
- ndr_print_struct(ndr, name, "lsa_RightSet");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "names", r->names);
- ndr->depth++;
- if (r->names) {
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->count);
- ndr->depth++;
- for (cntr_names_1=0;cntr_names_1<r->count;cntr_names_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_names_1);
- if (idx_1) {
- ndr_print_lsa_StringLarge(ndr, "names", &r->names[cntr_names_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_StringPointer(struct ndr_push *ndr, int ndr_flags, const struct lsa_StringPointer *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->string) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->string));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_StringPointer(struct ndr_pull *ndr, int ndr_flags, struct lsa_StringPointer *r)
-{
- uint32_t _ptr_string;
- TALLOC_CTX *_mem_save_string_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
- if (_ptr_string) {
- NDR_PULL_ALLOC(ndr, r->string);
- } else {
- r->string = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->string) {
- _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->string));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_StringPointer(struct ndr_print *ndr, const char *name, const struct lsa_StringPointer *r)
-{
- ndr_print_struct(ndr, name, "lsa_StringPointer");
- ndr->depth++;
- ndr_print_ptr(ndr, "string", r->string);
- ndr->depth++;
- if (r->string) {
- ndr_print_lsa_String(ndr, "string", r->string);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DomainListEx(struct ndr_push *ndr, int ndr_flags, const struct lsa_DomainListEx *r)
-{
- uint32_t cntr_domains_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domains));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domains) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->domains[cntr_domains_1]));
- }
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_push_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->domains[cntr_domains_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DomainListEx(struct ndr_pull *ndr, int ndr_flags, struct lsa_DomainListEx *r)
-{
- uint32_t _ptr_domains;
- uint32_t cntr_domains_1;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_domains_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->domains);
- } else {
- r->domains = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domains, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domains));
- NDR_PULL_ALLOC_N(ndr, r->domains, ndr_get_array_size(ndr, &r->domains));
- _mem_save_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domains, 0);
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_SCALARS, &r->domains[cntr_domains_1]));
- }
- for (cntr_domains_1 = 0; cntr_domains_1 < r->count; cntr_domains_1++) {
- NDR_CHECK(ndr_pull_lsa_TrustDomainInfoInfoEx(ndr, NDR_BUFFERS, &r->domains[cntr_domains_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (r->domains) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->domains, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DomainListEx(struct ndr_print *ndr, const char *name, const struct lsa_DomainListEx *r)
-{
- uint32_t cntr_domains_1;
- ndr_print_struct(ndr, name, "lsa_DomainListEx");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "domains", r->domains);
- ndr->depth++;
- if (r->domains) {
- ndr->print(ndr, "%s: ARRAY(%d)", "domains", r->count);
- ndr->depth++;
- for (cntr_domains_1=0;cntr_domains_1<r->count;cntr_domains_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_domains_1);
- if (idx_1) {
- ndr_print_lsa_TrustDomainInfoInfoEx(ndr, "domains", &r->domains[cntr_domains_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DomainInfoKerberos(struct ndr_push *ndr, int ndr_flags, const struct lsa_DomainInfoKerberos *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 8));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enforce_restrictions));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->service_tkt_lifetime));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->user_tkt_lifetime));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->user_tkt_renewaltime));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->clock_skew));
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown6));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DomainInfoKerberos(struct ndr_pull *ndr, int ndr_flags, struct lsa_DomainInfoKerberos *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 8));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enforce_restrictions));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->service_tkt_lifetime));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->user_tkt_lifetime));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->user_tkt_renewaltime));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->clock_skew));
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown6));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DomainInfoKerberos(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfoKerberos *r)
-{
- ndr_print_struct(ndr, name, "lsa_DomainInfoKerberos");
- ndr->depth++;
- ndr_print_uint32(ndr, "enforce_restrictions", r->enforce_restrictions);
- ndr_print_hyper(ndr, "service_tkt_lifetime", r->service_tkt_lifetime);
- ndr_print_hyper(ndr, "user_tkt_lifetime", r->user_tkt_lifetime);
- ndr_print_hyper(ndr, "user_tkt_renewaltime", r->user_tkt_renewaltime);
- ndr_print_hyper(ndr, "clock_skew", r->clock_skew);
- ndr_print_hyper(ndr, "unknown6", r->unknown6);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DomainInfoEfs(struct ndr_push *ndr, int ndr_flags, const struct lsa_DomainInfoEfs *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->blob_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->efs_blob));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->efs_blob) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->blob_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->efs_blob, r->blob_size));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DomainInfoEfs(struct ndr_pull *ndr, int ndr_flags, struct lsa_DomainInfoEfs *r)
-{
- uint32_t _ptr_efs_blob;
- TALLOC_CTX *_mem_save_efs_blob_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->blob_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_efs_blob));
- if (_ptr_efs_blob) {
- NDR_PULL_ALLOC(ndr, r->efs_blob);
- } else {
- r->efs_blob = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->efs_blob) {
- _mem_save_efs_blob_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->efs_blob, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->efs_blob));
- NDR_PULL_ALLOC_N(ndr, r->efs_blob, ndr_get_array_size(ndr, &r->efs_blob));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->efs_blob, ndr_get_array_size(ndr, &r->efs_blob)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_efs_blob_0, 0);
- }
- if (r->efs_blob) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->efs_blob, r->blob_size));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DomainInfoEfs(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfoEfs *r)
-{
- ndr_print_struct(ndr, name, "lsa_DomainInfoEfs");
- ndr->depth++;
- ndr_print_uint32(ndr, "blob_size", r->blob_size);
- ndr_print_ptr(ndr, "efs_blob", r->efs_blob);
- ndr->depth++;
- if (r->efs_blob) {
- ndr_print_array_uint8(ndr, "efs_blob", r->efs_blob, r->blob_size);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DomainInformationPolicy(struct ndr_push *ndr, int ndr_flags, const union lsa_DomainInformationPolicy *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
- switch (level) {
- case LSA_DOMAIN_INFO_POLICY_EFS:
- NDR_CHECK(ndr_push_lsa_DomainInfoEfs(ndr, NDR_SCALARS, &r->efs_info));
- break;
-
- case LSA_DOMAIN_INFO_POLICY_KERBEROS:
- NDR_CHECK(ndr_push_lsa_DomainInfoKerberos(ndr, NDR_SCALARS, &r->kerberos_info));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case LSA_DOMAIN_INFO_POLICY_EFS:
- NDR_CHECK(ndr_push_lsa_DomainInfoEfs(ndr, NDR_BUFFERS, &r->efs_info));
- break;
-
- case LSA_DOMAIN_INFO_POLICY_KERBEROS:
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DomainInformationPolicy(struct ndr_pull *ndr, int ndr_flags, union lsa_DomainInformationPolicy *r)
-{
- int level;
- uint16_t _level;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case LSA_DOMAIN_INFO_POLICY_EFS: {
- NDR_CHECK(ndr_pull_lsa_DomainInfoEfs(ndr, NDR_SCALARS, &r->efs_info));
- break; }
-
- case LSA_DOMAIN_INFO_POLICY_KERBEROS: {
- NDR_CHECK(ndr_pull_lsa_DomainInfoKerberos(ndr, NDR_SCALARS, &r->kerberos_info));
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case LSA_DOMAIN_INFO_POLICY_EFS:
- NDR_CHECK(ndr_pull_lsa_DomainInfoEfs(ndr, NDR_BUFFERS, &r->efs_info));
- break;
-
- case LSA_DOMAIN_INFO_POLICY_KERBEROS:
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DomainInformationPolicy(struct ndr_print *ndr, const char *name, const union lsa_DomainInformationPolicy *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "lsa_DomainInformationPolicy");
- switch (level) {
- case LSA_DOMAIN_INFO_POLICY_EFS:
- ndr_print_lsa_DomainInfoEfs(ndr, "efs_info", &r->efs_info);
- break;
-
- case LSA_DOMAIN_INFO_POLICY_KERBEROS:
- ndr_print_lsa_DomainInfoKerberos(ndr, "kerberos_info", &r->kerberos_info);
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_lsa_TranslatedName2(struct ndr_push *ndr, int ndr_flags, const struct lsa_TranslatedName2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_SidType(ndr, NDR_SCALARS, r->sid_type));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_index));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TranslatedName2(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedName2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_SidType(ndr, NDR_SCALARS, &r->sid_type));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_index));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->name));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TranslatedName2(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedName2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_TranslatedName2");
- ndr->depth++;
- ndr_print_lsa_SidType(ndr, "sid_type", r->sid_type);
- ndr_print_lsa_String(ndr, "name", &r->name);
- ndr_print_uint32(ndr, "sid_index", r->sid_index);
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TransNameArray2(struct ndr_push *ndr, int ndr_flags, const struct lsa_TransNameArray2 *r)
-{
- uint32_t cntr_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->names));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedName2(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedName2(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TransNameArray2(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransNameArray2 *r)
-{
- uint32_t _ptr_names;
- uint32_t cntr_names_1;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- if (r->count < 0 || r->count > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_names));
- if (_ptr_names) {
- NDR_PULL_ALLOC(ndr, r->names);
- } else {
- r->names = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->names) {
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->names));
- NDR_PULL_ALLOC_N(ndr, r->names, ndr_get_array_size(ndr, &r->names));
- _mem_save_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedName2(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
- }
- for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedName2(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- }
- if (r->names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TransNameArray2(struct ndr_print *ndr, const char *name, const struct lsa_TransNameArray2 *r)
-{
- uint32_t cntr_names_1;
- ndr_print_struct(ndr, name, "lsa_TransNameArray2");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "names", r->names);
- ndr->depth++;
- if (r->names) {
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->count);
- ndr->depth++;
- for (cntr_names_1=0;cntr_names_1<r->count;cntr_names_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_names_1);
- if (idx_1) {
- ndr_print_lsa_TranslatedName2(ndr, "names", &r->names[cntr_names_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TranslatedSid2(struct ndr_push *ndr, int ndr_flags, const struct lsa_TranslatedSid2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_SidType(ndr, NDR_SCALARS, r->sid_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_index));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TranslatedSid2(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedSid2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_SidType(ndr, NDR_SCALARS, &r->sid_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_index));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TranslatedSid2(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_TranslatedSid2");
- ndr->depth++;
- ndr_print_lsa_SidType(ndr, "sid_type", r->sid_type);
- ndr_print_uint32(ndr, "rid", r->rid);
- ndr_print_uint32(ndr, "sid_index", r->sid_index);
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TransSidArray2(struct ndr_push *ndr, int ndr_flags, const struct lsa_TransSidArray2 *r)
-{
- uint32_t cntr_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedSid2(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TransSidArray2(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransSidArray2 *r)
-{
- uint32_t _ptr_sids;
- uint32_t cntr_sids_1;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- if (r->count < 0 || r->count > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
- if (_ptr_sids) {
- NDR_PULL_ALLOC(ndr, r->sids);
- } else {
- r->sids = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
- NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
- _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedSid2(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
- }
- if (r->sids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TransSidArray2(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray2 *r)
-{
- uint32_t cntr_sids_1;
- ndr_print_struct(ndr, name, "lsa_TransSidArray2");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "sids", r->sids);
- ndr->depth++;
- if (r->sids) {
- ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->count);
- ndr->depth++;
- for (cntr_sids_1=0;cntr_sids_1<r->count;cntr_sids_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_sids_1);
- if (idx_1) {
- ndr_print_lsa_TranslatedSid2(ndr, "sids", &r->sids[cntr_sids_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TranslatedSid3(struct ndr_push *ndr, int ndr_flags, const struct lsa_TranslatedSid3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_SidType(ndr, NDR_SCALARS, r->sid_type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_index));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TranslatedSid3(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedSid3 *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_SidType(ndr, NDR_SCALARS, &r->sid_type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_index));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TranslatedSid3(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid3 *r)
-{
- ndr_print_struct(ndr, name, "lsa_TranslatedSid3");
- ndr->depth++;
- ndr_print_lsa_SidType(ndr, "sid_type", r->sid_type);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "sid_index", r->sid_index);
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TransSidArray3(struct ndr_push *ndr, int ndr_flags, const struct lsa_TransSidArray3 *r)
-{
- uint32_t cntr_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedSid3(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_push_lsa_TranslatedSid3(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TransSidArray3(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransSidArray3 *r)
-{
- uint32_t _ptr_sids;
- uint32_t cntr_sids_1;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- if (r->count < 0 || r->count > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
- if (_ptr_sids) {
- NDR_PULL_ALLOC(ndr, r->sids);
- } else {
- r->sids = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sids) {
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
- NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
- _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedSid3(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->count; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_lsa_TranslatedSid3(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
- }
- if (r->sids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TransSidArray3(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray3 *r)
-{
- uint32_t cntr_sids_1;
- ndr_print_struct(ndr, name, "lsa_TransSidArray3");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "sids", r->sids);
- ndr->depth++;
- if (r->sids) {
- ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->count);
- ndr->depth++;
- for (cntr_sids_1=0;cntr_sids_1<r->count;cntr_sids_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_sids_1);
- if (idx_1) {
- ndr_print_lsa_TranslatedSid3(ndr, "sids", &r->sids[cntr_sids_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_Close(struct ndr_push *ndr, int flags, const struct lsa_Close *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_Close(struct ndr_pull *ndr, int flags, struct lsa_Close *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.handle);
- *r->out.handle = *r->in.handle;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_Close(struct ndr_print *ndr, const char *name, int flags, const struct lsa_Close *r)
-{
- ndr_print_struct(ndr, name, "lsa_Close");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_Close");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_Close");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_Delete(struct ndr_push *ndr, int flags, const struct lsa_Delete *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_Delete(struct ndr_pull *ndr, int flags, struct lsa_Delete *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_Delete(struct ndr_print *ndr, const char *name, int flags, const struct lsa_Delete *r)
-{
- ndr_print_struct(ndr, name, "lsa_Delete");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_Delete");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_Delete");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_EnumPrivs(struct ndr_push *ndr, int flags, const struct lsa_EnumPrivs *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_count));
- }
- if (flags & NDR_OUT) {
- if (r->out.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- if (r->out.privs == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_PrivArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.privs));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_EnumPrivs(struct ndr_pull *ndr, int flags, struct lsa_EnumPrivs *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- TALLOC_CTX *_mem_save_privs_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_count));
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- *r->out.resume_handle = *r->in.resume_handle;
- NDR_PULL_ALLOC(ndr, r->out.privs);
- ZERO_STRUCTP(r->out.privs);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.privs);
- }
- _mem_save_privs_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.privs, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_PrivArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.privs));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privs_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_EnumPrivs(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumPrivs *r)
-{
- ndr_print_struct(ndr, name, "lsa_EnumPrivs");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_EnumPrivs");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_count", r->in.max_count);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_EnumPrivs");
- ndr->depth++;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "privs", r->out.privs);
- ndr->depth++;
- ndr_print_lsa_PrivArray(ndr, "privs", r->out.privs);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QuerySecurity(struct ndr_push *ndr, int flags, const struct lsa_QuerySecurity *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.sec_info));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.sdbuf));
- if (r->out.sdbuf) {
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sdbuf));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QuerySecurity(struct ndr_pull *ndr, int flags, struct lsa_QuerySecurity *r)
-{
- uint32_t _ptr_sdbuf;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sdbuf_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.sec_info));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sdbuf));
- if (_ptr_sdbuf) {
- NDR_PULL_ALLOC(ndr, r->out.sdbuf);
- } else {
- r->out.sdbuf = NULL;
- }
- if (r->out.sdbuf) {
- _mem_save_sdbuf_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sdbuf, 0);
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sdbuf));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sdbuf_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QuerySecurity(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QuerySecurity *r)
-{
- ndr_print_struct(ndr, name, "lsa_QuerySecurity");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QuerySecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_security_secinfo(ndr, "sec_info", r->in.sec_info);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QuerySecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "sdbuf", r->out.sdbuf);
- ndr->depth++;
- if (r->out.sdbuf) {
- ndr_print_sec_desc_buf(ndr, "sdbuf", r->out.sdbuf);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetSecObj(struct ndr_push *ndr, int flags, const struct lsa_SetSecObj *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetSecObj(struct ndr_pull *ndr, int flags, struct lsa_SetSecObj *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetSecObj(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSecObj *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetSecObj");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetSecObj");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetSecObj");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_ChangePassword(struct ndr_push *ndr, int flags, const struct lsa_ChangePassword *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_ChangePassword(struct ndr_pull *ndr, int flags, struct lsa_ChangePassword *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_ChangePassword(struct ndr_print *ndr, const char *name, int flags, const struct lsa_ChangePassword *r)
-{
- ndr_print_struct(ndr, name, "lsa_ChangePassword");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_ChangePassword");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_ChangePassword");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_OpenPolicy(struct ndr_push *ndr, int flags, const struct lsa_OpenPolicy *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- if (r->in.attr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_ObjectAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.attr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_OpenPolicy(struct ndr_pull *ndr, int flags, struct lsa_OpenPolicy *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_attr_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.attr);
- }
- _mem_save_attr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.attr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_ObjectAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.attr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_OpenPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenPolicy *r)
-{
- ndr_print_struct(ndr, name, "lsa_OpenPolicy");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_OpenPolicy");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "attr", r->in.attr);
- ndr->depth++;
- ndr_print_lsa_ObjectAttribute(ndr, "attr", r->in.attr);
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_OpenPolicy");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QueryInfoPolicy(struct ndr_push *ndr, int flags, const struct lsa_QueryInfoPolicy *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_PolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QueryInfoPolicy(struct ndr_pull *ndr, int flags, struct lsa_QueryInfoPolicy *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_PolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QueryInfoPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryInfoPolicy *r)
-{
- ndr_print_struct(ndr, name, "lsa_QueryInfoPolicy");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QueryInfoPolicy");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QueryInfoPolicy");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_lsa_PolicyInformation(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetInfoPolicy(struct ndr_push *ndr, int flags, const struct lsa_SetInfoPolicy *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetInfoPolicy(struct ndr_pull *ndr, int flags, struct lsa_SetInfoPolicy *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetInfoPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInfoPolicy *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetInfoPolicy");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetInfoPolicy");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetInfoPolicy");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_ClearAuditLog(struct ndr_push *ndr, int flags, const struct lsa_ClearAuditLog *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_ClearAuditLog(struct ndr_pull *ndr, int flags, struct lsa_ClearAuditLog *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_ClearAuditLog(struct ndr_print *ndr, const char *name, int flags, const struct lsa_ClearAuditLog *r)
-{
- ndr_print_struct(ndr, name, "lsa_ClearAuditLog");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_ClearAuditLog");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_ClearAuditLog");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CreateAccount(struct ndr_push *ndr, int flags, const struct lsa_CreateAccount *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.acct_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.acct_handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CreateAccount(struct ndr_pull *ndr, int flags, struct lsa_CreateAccount *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sid_0;
- TALLOC_CTX *_mem_save_acct_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.acct_handle);
- ZERO_STRUCTP(r->out.acct_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.acct_handle);
- }
- _mem_save_acct_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.acct_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.acct_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_acct_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CreateAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_CreateAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CreateAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sid", r->in.sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "sid", r->in.sid);
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CreateAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "acct_handle", r->out.acct_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "acct_handle", r->out.acct_handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_EnumAccounts(struct ndr_push *ndr, int flags, const struct lsa_EnumAccounts *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_entries));
- }
- if (flags & NDR_OUT) {
- if (r->out.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- if (r->out.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_EnumAccounts(struct ndr_pull *ndr, int flags, struct lsa_EnumAccounts *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- TALLOC_CTX *_mem_save_sids_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_entries));
- if (r->in.num_entries < 0 || r->in.num_entries > 8192) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- *r->out.resume_handle = *r->in.resume_handle;
- NDR_PULL_ALLOC(ndr, r->out.sids);
- ZERO_STRUCTP(r->out.sids);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_EnumAccounts(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccounts *r)
-{
- ndr_print_struct(ndr, name, "lsa_EnumAccounts");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_EnumAccounts");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "num_entries", r->in.num_entries);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_EnumAccounts");
- ndr->depth++;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->out.sids);
- ndr->depth++;
- ndr_print_lsa_SidArray(ndr, "sids", r->out.sids);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CreateTrustedDomain(struct ndr_push *ndr, int flags, const struct lsa_CreateTrustedDomain *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.trustdom_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trustdom_handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CreateTrustedDomain(struct ndr_pull *ndr, int flags, struct lsa_CreateTrustedDomain *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- TALLOC_CTX *_mem_save_trustdom_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.trustdom_handle);
- ZERO_STRUCTP(r->out.trustdom_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.trustdom_handle);
- }
- _mem_save_trustdom_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.trustdom_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trustdom_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trustdom_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CreateTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomain *r)
-{
- ndr_print_struct(ndr, name, "lsa_CreateTrustedDomain");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CreateTrustedDomain");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- ndr_print_lsa_DomainInfo(ndr, "info", r->in.info);
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CreateTrustedDomain");
- ndr->depth++;
- ndr_print_ptr(ndr, "trustdom_handle", r->out.trustdom_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "trustdom_handle", r->out.trustdom_handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_EnumTrustDom(struct ndr_push *ndr, int flags, const struct lsa_EnumTrustDom *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_size));
- }
- if (flags & NDR_OUT) {
- if (r->out.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- if (r->out.domains == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_DomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_EnumTrustDom(struct ndr_pull *ndr, int flags, struct lsa_EnumTrustDom *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- TALLOC_CTX *_mem_save_domains_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_size));
- if (r->in.max_size < 0 || r->in.max_size > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- *r->out.resume_handle = *r->in.resume_handle;
- NDR_PULL_ALLOC(ndr, r->out.domains);
- ZERO_STRUCTP(r->out.domains);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- }
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_DomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_EnumTrustDom(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumTrustDom *r)
-{
- ndr_print_struct(ndr, name, "lsa_EnumTrustDom");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_EnumTrustDom");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_size", r->in.max_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_EnumTrustDom");
- ndr->depth++;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- ndr_print_lsa_DomainList(ndr, "domains", r->out.domains);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupNames(struct ndr_push *ndr, int flags, const struct lsa_LookupNames *r)
-{
- uint32_t cntr_names_0;
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- if (r->in.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
- if (r->out.domains) {
- NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- }
- if (r->out.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, int flags, struct lsa_LookupNames *r)
-{
- uint32_t cntr_names_0;
- uint32_t _ptr_domains;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_count_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_names));
- if (r->in.num_names < 0 || r->in.num_names > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.names));
- NDR_PULL_ALLOC_N(ndr, r->in.names, ndr_get_array_size(ndr, &r->in.names));
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.names, 0);
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.sids);
- *r->out.sids = *r->in.sids;
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- if (r->in.names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- } else {
- r->out.domains = NULL;
- }
- if (r->out.domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
- NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupNames(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames *r)
-{
- uint32_t cntr_names_0;
- ndr_print_struct(ndr, name, "lsa_LookupNames");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupNames");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "num_names", r->in.num_names);
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->in.num_names);
- ndr->depth++;
- for (cntr_names_0=0;cntr_names_0<r->in.num_names;cntr_names_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_names_0);
- if (idx_0) {
- ndr_print_lsa_String(ndr, "names", &r->in.names[cntr_names_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->in.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray(ndr, "sids", r->in.sids);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupNames");
- ndr->depth++;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- if (r->out.domains) {
- ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->out.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray(ndr, "sids", r->out.sids);
- ndr->depth--;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupSids(struct ndr_push *ndr, int flags, const struct lsa_LookupSids *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- if (r->in.names == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
- if (r->out.domains) {
- NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- }
- if (r->out.names == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names));
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupSids(struct ndr_pull *ndr, int flags, struct lsa_LookupSids *r)
-{
- uint32_t _ptr_domains;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_count_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.names);
- }
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.names, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.names);
- *r->out.names = *r->in.names;
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- } else {
- r->out.domains = NULL;
- }
- if (r->out.domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
- NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.names);
- }
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.names, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupSids(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids *r)
-{
- ndr_print_struct(ndr, name, "lsa_LookupSids");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupSids");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->in.sids);
- ndr->depth++;
- ndr_print_lsa_SidArray(ndr, "sids", r->in.sids);
- ndr->depth--;
- ndr_print_ptr(ndr, "names", r->in.names);
- ndr->depth++;
- ndr_print_lsa_TransNameArray(ndr, "names", r->in.names);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupSids");
- ndr->depth++;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- if (r->out.domains) {
- ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "names", r->out.names);
- ndr->depth++;
- ndr_print_lsa_TransNameArray(ndr, "names", r->out.names);
- ndr->depth--;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CreateSecret(struct ndr_push *ndr, int flags, const struct lsa_CreateSecret *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.sec_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sec_handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CreateSecret(struct ndr_pull *ndr, int flags, struct lsa_CreateSecret *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sec_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.sec_handle);
- ZERO_STRUCTP(r->out.sec_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sec_handle);
- }
- _mem_save_sec_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sec_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sec_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CreateSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateSecret *r)
-{
- ndr_print_struct(ndr, name, "lsa_CreateSecret");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CreateSecret");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_lsa_String(ndr, "name", &r->in.name);
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CreateSecret");
- ndr->depth++;
- ndr_print_ptr(ndr, "sec_handle", r->out.sec_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "sec_handle", r->out.sec_handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_OpenAccount(struct ndr_push *ndr, int flags, const struct lsa_OpenAccount *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.acct_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.acct_handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_OpenAccount(struct ndr_pull *ndr, int flags, struct lsa_OpenAccount *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sid_0;
- TALLOC_CTX *_mem_save_acct_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.acct_handle);
- ZERO_STRUCTP(r->out.acct_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.acct_handle);
- }
- _mem_save_acct_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.acct_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.acct_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_acct_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_OpenAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_OpenAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_OpenAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sid", r->in.sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "sid", r->in.sid);
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_OpenAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "acct_handle", r->out.acct_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "acct_handle", r->out.acct_handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_EnumPrivsAccount(struct ndr_push *ndr, int flags, const struct lsa_EnumPrivsAccount *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.privs));
- if (r->out.privs) {
- NDR_CHECK(ndr_push_lsa_PrivilegeSet(ndr, NDR_SCALARS, r->out.privs));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_EnumPrivsAccount(struct ndr_pull *ndr, int flags, struct lsa_EnumPrivsAccount *r)
-{
- uint32_t _ptr_privs;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_privs_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privs));
- if (_ptr_privs) {
- NDR_PULL_ALLOC(ndr, r->out.privs);
- } else {
- r->out.privs = NULL;
- }
- if (r->out.privs) {
- _mem_save_privs_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.privs, 0);
- NDR_CHECK(ndr_pull_lsa_PrivilegeSet(ndr, NDR_SCALARS, r->out.privs));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privs_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_EnumPrivsAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumPrivsAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_EnumPrivsAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_EnumPrivsAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_EnumPrivsAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "privs", r->out.privs);
- ndr->depth++;
- if (r->out.privs) {
- ndr_print_lsa_PrivilegeSet(ndr, "privs", r->out.privs);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_AddPrivilegesToAccount(struct ndr_push *ndr, int flags, const struct lsa_AddPrivilegesToAccount *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.privs == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_PrivilegeSet(ndr, NDR_SCALARS, r->in.privs));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_AddPrivilegesToAccount(struct ndr_pull *ndr, int flags, struct lsa_AddPrivilegesToAccount *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_privs_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.privs);
- }
- _mem_save_privs_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.privs, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_PrivilegeSet(ndr, NDR_SCALARS, r->in.privs));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privs_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_AddPrivilegesToAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_AddPrivilegesToAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_AddPrivilegesToAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_AddPrivilegesToAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "privs", r->in.privs);
- ndr->depth++;
- ndr_print_lsa_PrivilegeSet(ndr, "privs", r->in.privs);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_AddPrivilegesToAccount");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_RemovePrivilegesFromAccount(struct ndr_push *ndr, int flags, const struct lsa_RemovePrivilegesFromAccount *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.remove_all));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.privs));
- if (r->in.privs) {
- NDR_CHECK(ndr_push_lsa_PrivilegeSet(ndr, NDR_SCALARS, r->in.privs));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_RemovePrivilegesFromAccount(struct ndr_pull *ndr, int flags, struct lsa_RemovePrivilegesFromAccount *r)
-{
- uint32_t _ptr_privs;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_privs_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.remove_all));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privs));
- if (_ptr_privs) {
- NDR_PULL_ALLOC(ndr, r->in.privs);
- } else {
- r->in.privs = NULL;
- }
- if (r->in.privs) {
- _mem_save_privs_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.privs, 0);
- NDR_CHECK(ndr_pull_lsa_PrivilegeSet(ndr, NDR_SCALARS, r->in.privs));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privs_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_RemovePrivilegesFromAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RemovePrivilegesFromAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_RemovePrivilegesFromAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_RemovePrivilegesFromAccount");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint8(ndr, "remove_all", r->in.remove_all);
- ndr_print_ptr(ndr, "privs", r->in.privs);
- ndr->depth++;
- if (r->in.privs) {
- ndr_print_lsa_PrivilegeSet(ndr, "privs", r->in.privs);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_RemovePrivilegesFromAccount");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_GetQuotasForAccount(struct ndr_push *ndr, int flags, const struct lsa_GetQuotasForAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_GetQuotasForAccount(struct ndr_pull *ndr, int flags, struct lsa_GetQuotasForAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_GetQuotasForAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetQuotasForAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_GetQuotasForAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_GetQuotasForAccount");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_GetQuotasForAccount");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetQuotasForAccount(struct ndr_push *ndr, int flags, const struct lsa_SetQuotasForAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetQuotasForAccount(struct ndr_pull *ndr, int flags, struct lsa_SetQuotasForAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetQuotasForAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetQuotasForAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetQuotasForAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetQuotasForAccount");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetQuotasForAccount");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_GetSystemAccessAccount(struct ndr_push *ndr, int flags, const struct lsa_GetSystemAccessAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_GetSystemAccessAccount(struct ndr_pull *ndr, int flags, struct lsa_GetSystemAccessAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_GetSystemAccessAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetSystemAccessAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_GetSystemAccessAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_GetSystemAccessAccount");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_GetSystemAccessAccount");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetSystemAccessAccount(struct ndr_push *ndr, int flags, const struct lsa_SetSystemAccessAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetSystemAccessAccount(struct ndr_pull *ndr, int flags, struct lsa_SetSystemAccessAccount *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetSystemAccessAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSystemAccessAccount *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetSystemAccessAccount");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetSystemAccessAccount");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetSystemAccessAccount");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_OpenTrustedDomain(struct ndr_push *ndr, int flags, const struct lsa_OpenTrustedDomain *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.trustdom_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trustdom_handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_OpenTrustedDomain(struct ndr_pull *ndr, int flags, struct lsa_OpenTrustedDomain *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sid_0;
- TALLOC_CTX *_mem_save_trustdom_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.trustdom_handle);
- ZERO_STRUCTP(r->out.trustdom_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.trustdom_handle);
- }
- _mem_save_trustdom_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.trustdom_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trustdom_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trustdom_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_OpenTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenTrustedDomain *r)
-{
- ndr_print_struct(ndr, name, "lsa_OpenTrustedDomain");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_OpenTrustedDomain");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sid", r->in.sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "sid", r->in.sid);
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_OpenTrustedDomain");
- ndr->depth++;
- ndr_print_ptr(ndr, "trustdom_handle", r->out.trustdom_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "trustdom_handle", r->out.trustdom_handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QueryTrustedDomainInfo(struct ndr_push *ndr, int flags, const struct lsa_QueryTrustedDomainInfo *r)
-{
- if (flags & NDR_IN) {
- if (r->in.trustdom_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.trustdom_handle));
- NDR_CHECK(ndr_push_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QueryTrustedDomainInfo(struct ndr_pull *ndr, int flags, struct lsa_QueryTrustedDomainInfo *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_trustdom_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.trustdom_handle);
- }
- _mem_save_trustdom_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.trustdom_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.trustdom_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trustdom_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, &r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QueryTrustedDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_QueryTrustedDomainInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QueryTrustedDomainInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "trustdom_handle", r->in.trustdom_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "trustdom_handle", r->in.trustdom_handle);
- ndr->depth--;
- ndr_print_lsa_TrustDomInfoEnum(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QueryTrustedDomainInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_lsa_TrustedDomainInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetInformationTrustedDomain(struct ndr_push *ndr, int flags, const struct lsa_SetInformationTrustedDomain *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetInformationTrustedDomain(struct ndr_pull *ndr, int flags, struct lsa_SetInformationTrustedDomain *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetInformationTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInformationTrustedDomain *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetInformationTrustedDomain");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetInformationTrustedDomain");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetInformationTrustedDomain");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_OpenSecret(struct ndr_push *ndr, int flags, const struct lsa_OpenSecret *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.sec_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sec_handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_OpenSecret(struct ndr_pull *ndr, int flags, struct lsa_OpenSecret *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sec_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.sec_handle);
- ZERO_STRUCTP(r->out.sec_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sec_handle);
- }
- _mem_save_sec_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sec_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sec_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_OpenSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenSecret *r)
-{
- ndr_print_struct(ndr, name, "lsa_OpenSecret");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_OpenSecret");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_lsa_String(ndr, "name", &r->in.name);
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_OpenSecret");
- ndr->depth++;
- ndr_print_ptr(ndr, "sec_handle", r->out.sec_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "sec_handle", r->out.sec_handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetSecret(struct ndr_push *ndr, int flags, const struct lsa_SetSecret *r)
-{
- if (flags & NDR_IN) {
- if (r->in.sec_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.new_val));
- if (r->in.new_val) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.new_val));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.old_val));
- if (r->in.old_val) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.old_val));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetSecret(struct ndr_pull *ndr, int flags, struct lsa_SetSecret *r)
-{
- uint32_t _ptr_new_val;
- uint32_t _ptr_old_val;
- TALLOC_CTX *_mem_save_sec_handle_0;
- TALLOC_CTX *_mem_save_new_val_0;
- TALLOC_CTX *_mem_save_old_val_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sec_handle);
- }
- _mem_save_sec_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sec_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_new_val));
- if (_ptr_new_val) {
- NDR_PULL_ALLOC(ndr, r->in.new_val);
- } else {
- r->in.new_val = NULL;
- }
- if (r->in.new_val) {
- _mem_save_new_val_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.new_val, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.new_val));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_val_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_old_val));
- if (_ptr_old_val) {
- NDR_PULL_ALLOC(ndr, r->in.old_val);
- } else {
- r->in.old_val = NULL;
- }
- if (r->in.old_val) {
- _mem_save_old_val_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.old_val, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.old_val));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_val_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSecret *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetSecret");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetSecret");
- ndr->depth++;
- ndr_print_ptr(ndr, "sec_handle", r->in.sec_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "sec_handle", r->in.sec_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "new_val", r->in.new_val);
- ndr->depth++;
- if (r->in.new_val) {
- ndr_print_lsa_DATA_BUF(ndr, "new_val", r->in.new_val);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "old_val", r->in.old_val);
- ndr->depth++;
- if (r->in.old_val) {
- ndr_print_lsa_DATA_BUF(ndr, "old_val", r->in.old_val);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetSecret");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QuerySecret(struct ndr_push *ndr, int flags, const struct lsa_QuerySecret *r)
-{
- if (flags & NDR_IN) {
- if (r->in.sec_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.new_val));
- if (r->in.new_val) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.new_val));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.new_mtime));
- if (r->in.new_mtime) {
- NDR_CHECK(ndr_push_NTTIME_hyper(ndr, NDR_SCALARS, *r->in.new_mtime));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.old_val));
- if (r->in.old_val) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.old_val));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.old_mtime));
- if (r->in.old_mtime) {
- NDR_CHECK(ndr_push_NTTIME_hyper(ndr, NDR_SCALARS, *r->in.old_mtime));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.new_val));
- if (r->out.new_val) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.new_val));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.new_mtime));
- if (r->out.new_mtime) {
- NDR_CHECK(ndr_push_NTTIME_hyper(ndr, NDR_SCALARS, *r->out.new_mtime));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.old_val));
- if (r->out.old_val) {
- NDR_CHECK(ndr_push_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.old_val));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.old_mtime));
- if (r->out.old_mtime) {
- NDR_CHECK(ndr_push_NTTIME_hyper(ndr, NDR_SCALARS, *r->out.old_mtime));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QuerySecret(struct ndr_pull *ndr, int flags, struct lsa_QuerySecret *r)
-{
- uint32_t _ptr_new_val;
- uint32_t _ptr_new_mtime;
- uint32_t _ptr_old_val;
- uint32_t _ptr_old_mtime;
- TALLOC_CTX *_mem_save_sec_handle_0;
- TALLOC_CTX *_mem_save_new_val_0;
- TALLOC_CTX *_mem_save_new_mtime_0;
- TALLOC_CTX *_mem_save_old_val_0;
- TALLOC_CTX *_mem_save_old_mtime_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sec_handle);
- }
- _mem_save_sec_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sec_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_new_val));
- if (_ptr_new_val) {
- NDR_PULL_ALLOC(ndr, r->in.new_val);
- } else {
- r->in.new_val = NULL;
- }
- if (r->in.new_val) {
- _mem_save_new_val_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.new_val, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.new_val));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_val_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_new_mtime));
- if (_ptr_new_mtime) {
- NDR_PULL_ALLOC(ndr, r->in.new_mtime);
- } else {
- r->in.new_mtime = NULL;
- }
- if (r->in.new_mtime) {
- _mem_save_new_mtime_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.new_mtime, 0);
- NDR_CHECK(ndr_pull_NTTIME_hyper(ndr, NDR_SCALARS, r->in.new_mtime));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_mtime_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_old_val));
- if (_ptr_old_val) {
- NDR_PULL_ALLOC(ndr, r->in.old_val);
- } else {
- r->in.old_val = NULL;
- }
- if (r->in.old_val) {
- _mem_save_old_val_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.old_val, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.old_val));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_val_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_old_mtime));
- if (_ptr_old_mtime) {
- NDR_PULL_ALLOC(ndr, r->in.old_mtime);
- } else {
- r->in.old_mtime = NULL;
- }
- if (r->in.old_mtime) {
- _mem_save_old_mtime_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.old_mtime, 0);
- NDR_CHECK(ndr_pull_NTTIME_hyper(ndr, NDR_SCALARS, r->in.old_mtime));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_mtime_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_new_val));
- if (_ptr_new_val) {
- NDR_PULL_ALLOC(ndr, r->out.new_val);
- } else {
- r->out.new_val = NULL;
- }
- if (r->out.new_val) {
- _mem_save_new_val_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.new_val, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.new_val));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_val_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_new_mtime));
- if (_ptr_new_mtime) {
- NDR_PULL_ALLOC(ndr, r->out.new_mtime);
- } else {
- r->out.new_mtime = NULL;
- }
- if (r->out.new_mtime) {
- _mem_save_new_mtime_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.new_mtime, 0);
- NDR_CHECK(ndr_pull_NTTIME_hyper(ndr, NDR_SCALARS, r->out.new_mtime));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_mtime_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_old_val));
- if (_ptr_old_val) {
- NDR_PULL_ALLOC(ndr, r->out.old_val);
- } else {
- r->out.old_val = NULL;
- }
- if (r->out.old_val) {
- _mem_save_old_val_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.old_val, 0);
- NDR_CHECK(ndr_pull_lsa_DATA_BUF_PTR(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.old_val));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_val_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_old_mtime));
- if (_ptr_old_mtime) {
- NDR_PULL_ALLOC(ndr, r->out.old_mtime);
- } else {
- r->out.old_mtime = NULL;
- }
- if (r->out.old_mtime) {
- _mem_save_old_mtime_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.old_mtime, 0);
- NDR_CHECK(ndr_pull_NTTIME_hyper(ndr, NDR_SCALARS, r->out.old_mtime));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_mtime_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QuerySecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QuerySecret *r)
-{
- ndr_print_struct(ndr, name, "lsa_QuerySecret");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QuerySecret");
- ndr->depth++;
- ndr_print_ptr(ndr, "sec_handle", r->in.sec_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "sec_handle", r->in.sec_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "new_val", r->in.new_val);
- ndr->depth++;
- if (r->in.new_val) {
- ndr_print_lsa_DATA_BUF_PTR(ndr, "new_val", r->in.new_val);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "new_mtime", r->in.new_mtime);
- ndr->depth++;
- if (r->in.new_mtime) {
- ndr_print_NTTIME_hyper(ndr, "new_mtime", *r->in.new_mtime);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "old_val", r->in.old_val);
- ndr->depth++;
- if (r->in.old_val) {
- ndr_print_lsa_DATA_BUF_PTR(ndr, "old_val", r->in.old_val);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "old_mtime", r->in.old_mtime);
- ndr->depth++;
- if (r->in.old_mtime) {
- ndr_print_NTTIME_hyper(ndr, "old_mtime", *r->in.old_mtime);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QuerySecret");
- ndr->depth++;
- ndr_print_ptr(ndr, "new_val", r->out.new_val);
- ndr->depth++;
- if (r->out.new_val) {
- ndr_print_lsa_DATA_BUF_PTR(ndr, "new_val", r->out.new_val);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "new_mtime", r->out.new_mtime);
- ndr->depth++;
- if (r->out.new_mtime) {
- ndr_print_NTTIME_hyper(ndr, "new_mtime", *r->out.new_mtime);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "old_val", r->out.old_val);
- ndr->depth++;
- if (r->out.old_val) {
- ndr_print_lsa_DATA_BUF_PTR(ndr, "old_val", r->out.old_val);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "old_mtime", r->out.old_mtime);
- ndr->depth++;
- if (r->out.old_mtime) {
- ndr_print_NTTIME_hyper(ndr, "old_mtime", *r->out.old_mtime);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupPrivValue(struct ndr_push *ndr, int flags, const struct lsa_LookupPrivValue *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- }
- if (flags & NDR_OUT) {
- if (r->out.luid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_LUID(ndr, NDR_SCALARS, r->out.luid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupPrivValue(struct ndr_pull *ndr, int flags, struct lsa_LookupPrivValue *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_name_0;
- TALLOC_CTX *_mem_save_luid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.name);
- }
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.luid);
- ZERO_STRUCTP(r->out.luid);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.luid);
- }
- _mem_save_luid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.luid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_LUID(ndr, NDR_SCALARS, r->out.luid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_luid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupPrivValue(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivValue *r)
-{
- ndr_print_struct(ndr, name, "lsa_LookupPrivValue");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupPrivValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "name", r->in.name);
- ndr->depth++;
- ndr_print_lsa_String(ndr, "name", r->in.name);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupPrivValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "luid", r->out.luid);
- ndr->depth++;
- ndr_print_lsa_LUID(ndr, "luid", r->out.luid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupPrivName(struct ndr_push *ndr, int flags, const struct lsa_LookupPrivName *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.luid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_LUID(ndr, NDR_SCALARS, r->in.luid));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.name));
- if (r->out.name) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupPrivName(struct ndr_pull *ndr, int flags, struct lsa_LookupPrivName *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_luid_0;
- TALLOC_CTX *_mem_save_name_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.luid);
- }
- _mem_save_luid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.luid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_LUID(ndr, NDR_SCALARS, r->in.luid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_luid_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->out.name);
- } else {
- r->out.name = NULL;
- }
- if (r->out.name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.name, 0);
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupPrivName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivName *r)
-{
- ndr_print_struct(ndr, name, "lsa_LookupPrivName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupPrivName");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "luid", r->in.luid);
- ndr->depth++;
- ndr_print_lsa_LUID(ndr, "luid", r->in.luid);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupPrivName");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->out.name);
- ndr->depth++;
- if (r->out.name) {
- ndr_print_lsa_StringLarge(ndr, "name", r->out.name);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupPrivDisplayName(struct ndr_push *ndr, int flags, const struct lsa_LookupPrivDisplayName *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- if (r->in.language_id == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.language_id));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.unknown));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.disp_name));
- if (r->out.disp_name) {
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.disp_name));
- }
- if (r->out.language_id == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->out.language_id));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupPrivDisplayName(struct ndr_pull *ndr, int flags, struct lsa_LookupPrivDisplayName *r)
-{
- uint32_t _ptr_disp_name;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_name_0;
- TALLOC_CTX *_mem_save_disp_name_0;
- TALLOC_CTX *_mem_save_language_id_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.name);
- }
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.language_id);
- }
- _mem_save_language_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.language_id, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.language_id));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_language_id_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.unknown));
- NDR_PULL_ALLOC(ndr, r->out.language_id);
- *r->out.language_id = *r->in.language_id;
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_disp_name));
- if (_ptr_disp_name) {
- NDR_PULL_ALLOC(ndr, r->out.disp_name);
- } else {
- r->out.disp_name = NULL;
- }
- if (r->out.disp_name) {
- _mem_save_disp_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.disp_name, 0);
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.disp_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_disp_name_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.language_id);
- }
- _mem_save_language_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.language_id, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->out.language_id));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_language_id_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupPrivDisplayName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivDisplayName *r)
-{
- ndr_print_struct(ndr, name, "lsa_LookupPrivDisplayName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupPrivDisplayName");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "name", r->in.name);
- ndr->depth++;
- ndr_print_lsa_String(ndr, "name", r->in.name);
- ndr->depth--;
- ndr_print_ptr(ndr, "language_id", r->in.language_id);
- ndr->depth++;
- ndr_print_uint16(ndr, "language_id", *r->in.language_id);
- ndr->depth--;
- ndr_print_uint16(ndr, "unknown", r->in.unknown);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupPrivDisplayName");
- ndr->depth++;
- ndr_print_ptr(ndr, "disp_name", r->out.disp_name);
- ndr->depth++;
- if (r->out.disp_name) {
- ndr_print_lsa_StringLarge(ndr, "disp_name", r->out.disp_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "language_id", r->out.language_id);
- ndr->depth++;
- ndr_print_uint16(ndr, "language_id", *r->out.language_id);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DeleteObject(struct ndr_push *ndr, int flags, const struct lsa_DeleteObject *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DeleteObject(struct ndr_pull *ndr, int flags, struct lsa_DeleteObject *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DeleteObject(struct ndr_print *ndr, const char *name, int flags, const struct lsa_DeleteObject *r)
-{
- ndr_print_struct(ndr, name, "lsa_DeleteObject");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_DeleteObject");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_DeleteObject");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_EnumAccountsWithUserRight(struct ndr_push *ndr, int flags, const struct lsa_EnumAccountsWithUserRight *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.name));
- if (r->in.name) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_EnumAccountsWithUserRight(struct ndr_pull *ndr, int flags, struct lsa_EnumAccountsWithUserRight *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_name_0;
- TALLOC_CTX *_mem_save_sids_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->in.name);
- } else {
- r->in.name = NULL;
- }
- if (r->in.name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.name, 0);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.sids);
- ZERO_STRUCTP(r->out.sids);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_EnumAccountsWithUserRight(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccountsWithUserRight *r)
-{
- ndr_print_struct(ndr, name, "lsa_EnumAccountsWithUserRight");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_EnumAccountsWithUserRight");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "name", r->in.name);
- ndr->depth++;
- if (r->in.name) {
- ndr_print_lsa_String(ndr, "name", r->in.name);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_EnumAccountsWithUserRight");
- ndr->depth++;
- ndr_print_ptr(ndr, "sids", r->out.sids);
- ndr->depth++;
- ndr_print_lsa_SidArray(ndr, "sids", r->out.sids);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_EnumAccountRights(struct ndr_push *ndr, int flags, const struct lsa_EnumAccountRights *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- }
- if (flags & NDR_OUT) {
- if (r->out.rights == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_RightSet(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.rights));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_EnumAccountRights(struct ndr_pull *ndr, int flags, struct lsa_EnumAccountRights *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sid_0;
- TALLOC_CTX *_mem_save_rights_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.rights);
- ZERO_STRUCTP(r->out.rights);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.rights);
- }
- _mem_save_rights_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.rights, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_RightSet(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.rights));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rights_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_EnumAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccountRights *r)
-{
- ndr_print_struct(ndr, name, "lsa_EnumAccountRights");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_EnumAccountRights");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sid", r->in.sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "sid", r->in.sid);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_EnumAccountRights");
- ndr->depth++;
- ndr_print_ptr(ndr, "rights", r->out.rights);
- ndr->depth++;
- ndr_print_lsa_RightSet(ndr, "rights", r->out.rights);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_AddAccountRights(struct ndr_push *ndr, int flags, const struct lsa_AddAccountRights *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- if (r->in.rights == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_RightSet(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.rights));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_AddAccountRights(struct ndr_pull *ndr, int flags, struct lsa_AddAccountRights *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sid_0;
- TALLOC_CTX *_mem_save_rights_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.rights);
- }
- _mem_save_rights_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.rights, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_RightSet(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.rights));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rights_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_AddAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_AddAccountRights *r)
-{
- ndr_print_struct(ndr, name, "lsa_AddAccountRights");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_AddAccountRights");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sid", r->in.sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "sid", r->in.sid);
- ndr->depth--;
- ndr_print_ptr(ndr, "rights", r->in.rights);
- ndr->depth++;
- ndr_print_lsa_RightSet(ndr, "rights", r->in.rights);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_AddAccountRights");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_RemoveAccountRights(struct ndr_push *ndr, int flags, const struct lsa_RemoveAccountRights *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
- if (r->in.rights == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_RightSet(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.rights));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_RemoveAccountRights(struct ndr_pull *ndr, int flags, struct lsa_RemoveAccountRights *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sid_0;
- TALLOC_CTX *_mem_save_rights_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.rights);
- }
- _mem_save_rights_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.rights, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_RightSet(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.rights));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rights_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_RemoveAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RemoveAccountRights *r)
-{
- ndr_print_struct(ndr, name, "lsa_RemoveAccountRights");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_RemoveAccountRights");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sid", r->in.sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "sid", r->in.sid);
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown", r->in.unknown);
- ndr_print_ptr(ndr, "rights", r->in.rights);
- ndr->depth++;
- ndr_print_lsa_RightSet(ndr, "rights", r->in.rights);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_RemoveAccountRights");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QueryTrustedDomainInfoBySid(struct ndr_push *ndr, int flags, const struct lsa_QueryTrustedDomainInfoBySid *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.dom_sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.dom_sid));
- NDR_CHECK(ndr_push_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QueryTrustedDomainInfoBySid(struct ndr_pull *ndr, int flags, struct lsa_QueryTrustedDomainInfoBySid *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_dom_sid_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.dom_sid);
- }
- _mem_save_dom_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.dom_sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.dom_sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, &r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QueryTrustedDomainInfoBySid(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfoBySid *r)
-{
- ndr_print_struct(ndr, name, "lsa_QueryTrustedDomainInfoBySid");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QueryTrustedDomainInfoBySid");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "dom_sid", r->in.dom_sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "dom_sid", r->in.dom_sid);
- ndr->depth--;
- ndr_print_lsa_TrustDomInfoEnum(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QueryTrustedDomainInfoBySid");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_lsa_TrustedDomainInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetTrustedDomainInfo(struct ndr_push *ndr, int flags, const struct lsa_SetTrustedDomainInfo *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetTrustedDomainInfo(struct ndr_pull *ndr, int flags, struct lsa_SetTrustedDomainInfo *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetTrustedDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetTrustedDomainInfo *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetTrustedDomainInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetTrustedDomainInfo");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetTrustedDomainInfo");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_DeleteTrustedDomain(struct ndr_push *ndr, int flags, const struct lsa_DeleteTrustedDomain *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.dom_sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.dom_sid));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_DeleteTrustedDomain(struct ndr_pull *ndr, int flags, struct lsa_DeleteTrustedDomain *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_dom_sid_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.dom_sid);
- }
- _mem_save_dom_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.dom_sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.dom_sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_sid_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_DeleteTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_DeleteTrustedDomain *r)
-{
- ndr_print_struct(ndr, name, "lsa_DeleteTrustedDomain");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_DeleteTrustedDomain");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "dom_sid", r->in.dom_sid);
- ndr->depth++;
- ndr_print_dom_sid2(ndr, "dom_sid", r->in.dom_sid);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_DeleteTrustedDomain");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_StorePrivateData(struct ndr_push *ndr, int flags, const struct lsa_StorePrivateData *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_StorePrivateData(struct ndr_pull *ndr, int flags, struct lsa_StorePrivateData *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_StorePrivateData(struct ndr_print *ndr, const char *name, int flags, const struct lsa_StorePrivateData *r)
-{
- ndr_print_struct(ndr, name, "lsa_StorePrivateData");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_StorePrivateData");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_StorePrivateData");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_RetrievePrivateData(struct ndr_push *ndr, int flags, const struct lsa_RetrievePrivateData *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_RetrievePrivateData(struct ndr_pull *ndr, int flags, struct lsa_RetrievePrivateData *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_RetrievePrivateData(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RetrievePrivateData *r)
-{
- ndr_print_struct(ndr, name, "lsa_RetrievePrivateData");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_RetrievePrivateData");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_RetrievePrivateData");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_OpenPolicy2(struct ndr_push *ndr, int flags, const struct lsa_OpenPolicy2 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.system_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.system_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.system_name, ndr_charset_length(r->in.system_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.attr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_ObjectAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.attr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_OpenPolicy2(struct ndr_pull *ndr, int flags, struct lsa_OpenPolicy2 *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_attr_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.system_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.system_name));
- if (ndr_get_array_length(ndr, &r->in.system_name) > ndr_get_array_size(ndr, &r->in.system_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.system_name), ndr_get_array_length(ndr, &r->in.system_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.system_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.system_name, ndr_get_array_length(ndr, &r->in.system_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.attr);
- }
- _mem_save_attr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.attr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_ObjectAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.attr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_OpenPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenPolicy2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_OpenPolicy2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_OpenPolicy2");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_string(ndr, "system_name", r->in.system_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "attr", r->in.attr);
- ndr->depth++;
- ndr_print_lsa_ObjectAttribute(ndr, "attr", r->in.attr);
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_OpenPolicy2");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_GetUserName(struct ndr_push *ndr, int flags, const struct lsa_GetUserName *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.system_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.system_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.system_name, ndr_charset_length(r->in.system_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.account_name));
- if (r->in.account_name) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.account_name));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.authority_name));
- if (r->in.authority_name) {
- NDR_CHECK(ndr_push_lsa_StringPointer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.authority_name));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.account_name));
- if (r->out.account_name) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.account_name));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.authority_name));
- if (r->out.authority_name) {
- NDR_CHECK(ndr_push_lsa_StringPointer(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.authority_name));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_GetUserName(struct ndr_pull *ndr, int flags, struct lsa_GetUserName *r)
-{
- uint32_t _ptr_system_name;
- uint32_t _ptr_account_name;
- uint32_t _ptr_authority_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_account_name_0;
- TALLOC_CTX *_mem_save_authority_name_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.system_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.system_name));
- if (ndr_get_array_length(ndr, &r->in.system_name) > ndr_get_array_size(ndr, &r->in.system_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.system_name), ndr_get_array_length(ndr, &r->in.system_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.system_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.system_name, ndr_get_array_length(ndr, &r->in.system_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
- if (_ptr_account_name) {
- NDR_PULL_ALLOC(ndr, r->in.account_name);
- } else {
- r->in.account_name = NULL;
- }
- if (r->in.account_name) {
- _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.account_name, 0);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.account_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_authority_name));
- if (_ptr_authority_name) {
- NDR_PULL_ALLOC(ndr, r->in.authority_name);
- } else {
- r->in.authority_name = NULL;
- }
- if (r->in.authority_name) {
- _mem_save_authority_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.authority_name, 0);
- NDR_CHECK(ndr_pull_lsa_StringPointer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.authority_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authority_name_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
- if (_ptr_account_name) {
- NDR_PULL_ALLOC(ndr, r->out.account_name);
- } else {
- r->out.account_name = NULL;
- }
- if (r->out.account_name) {
- _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.account_name, 0);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.account_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_authority_name));
- if (_ptr_authority_name) {
- NDR_PULL_ALLOC(ndr, r->out.authority_name);
- } else {
- r->out.authority_name = NULL;
- }
- if (r->out.authority_name) {
- _mem_save_authority_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.authority_name, 0);
- NDR_CHECK(ndr_pull_lsa_StringPointer(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.authority_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authority_name_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_GetUserName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetUserName *r)
-{
- ndr_print_struct(ndr, name, "lsa_GetUserName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_GetUserName");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_string(ndr, "system_name", r->in.system_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "account_name", r->in.account_name);
- ndr->depth++;
- if (r->in.account_name) {
- ndr_print_lsa_String(ndr, "account_name", r->in.account_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "authority_name", r->in.authority_name);
- ndr->depth++;
- if (r->in.authority_name) {
- ndr_print_lsa_StringPointer(ndr, "authority_name", r->in.authority_name);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_GetUserName");
- ndr->depth++;
- ndr_print_ptr(ndr, "account_name", r->out.account_name);
- ndr->depth++;
- if (r->out.account_name) {
- ndr_print_lsa_String(ndr, "account_name", r->out.account_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "authority_name", r->out.authority_name);
- ndr->depth++;
- if (r->out.authority_name) {
- ndr_print_lsa_StringPointer(ndr, "authority_name", r->out.authority_name);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QueryInfoPolicy2(struct ndr_push *ndr, int flags, const struct lsa_QueryInfoPolicy2 *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_PolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QueryInfoPolicy2(struct ndr_pull *ndr, int flags, struct lsa_QueryInfoPolicy2 *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_PolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QueryInfoPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryInfoPolicy2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_QueryInfoPolicy2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QueryInfoPolicy2");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QueryInfoPolicy2");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_lsa_PolicyInformation(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetInfoPolicy2(struct ndr_push *ndr, int flags, const struct lsa_SetInfoPolicy2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetInfoPolicy2(struct ndr_pull *ndr, int flags, struct lsa_SetInfoPolicy2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetInfoPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInfoPolicy2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetInfoPolicy2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetInfoPolicy2");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetInfoPolicy2");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QueryTrustedDomainInfoByName(struct ndr_push *ndr, int flags, const struct lsa_QueryTrustedDomainInfoByName *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.trusted_domain));
- NDR_CHECK(ndr_push_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QueryTrustedDomainInfoByName(struct ndr_pull *ndr, int flags, struct lsa_QueryTrustedDomainInfoByName *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.trusted_domain));
- NDR_CHECK(ndr_pull_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, &r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QueryTrustedDomainInfoByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfoByName *r)
-{
- ndr_print_struct(ndr, name, "lsa_QueryTrustedDomainInfoByName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QueryTrustedDomainInfoByName");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_lsa_String(ndr, "trusted_domain", &r->in.trusted_domain);
- ndr_print_lsa_TrustDomInfoEnum(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QueryTrustedDomainInfoByName");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_lsa_TrustedDomainInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetTrustedDomainInfoByName(struct ndr_push *ndr, int flags, const struct lsa_SetTrustedDomainInfoByName *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.trusted_domain));
- NDR_CHECK(ndr_push_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
- if (r->in.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetTrustedDomainInfoByName(struct ndr_pull *ndr, int flags, struct lsa_SetTrustedDomainInfoByName *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.trusted_domain));
- NDR_CHECK(ndr_pull_lsa_TrustDomInfoEnum(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- } else {
- r->in.info = NULL;
- }
- if (r->in.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_TrustedDomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetTrustedDomainInfoByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetTrustedDomainInfoByName *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetTrustedDomainInfoByName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetTrustedDomainInfoByName");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_lsa_String(ndr, "trusted_domain", &r->in.trusted_domain);
- ndr_print_lsa_TrustDomInfoEnum(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- if (r->in.info) {
- ndr_print_set_switch_value(ndr, r->in.info, r->in.level);
- ndr_print_lsa_TrustedDomainInfo(ndr, "info", r->in.info);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetTrustedDomainInfoByName");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_EnumTrustedDomainsEx(struct ndr_push *ndr, int flags, const struct lsa_EnumTrustedDomainsEx *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_size));
- }
- if (flags & NDR_OUT) {
- if (r->out.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- if (r->out.domains == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_DomainListEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_EnumTrustedDomainsEx(struct ndr_pull *ndr, int flags, struct lsa_EnumTrustedDomainsEx *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- TALLOC_CTX *_mem_save_domains_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_size));
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- *r->out.resume_handle = *r->in.resume_handle;
- NDR_PULL_ALLOC(ndr, r->out.domains);
- ZERO_STRUCTP(r->out.domains);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- }
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- }
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_DomainListEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_EnumTrustedDomainsEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumTrustedDomainsEx *r)
-{
- ndr_print_struct(ndr, name, "lsa_EnumTrustedDomainsEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_EnumTrustedDomainsEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_size", r->in.max_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_EnumTrustedDomainsEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- ndr_print_lsa_DomainListEx(ndr, "domains", r->out.domains);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CreateTrustedDomainEx(struct ndr_push *ndr, int flags, const struct lsa_CreateTrustedDomainEx *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CreateTrustedDomainEx(struct ndr_pull *ndr, int flags, struct lsa_CreateTrustedDomainEx *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CreateTrustedDomainEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomainEx *r)
-{
- ndr_print_struct(ndr, name, "lsa_CreateTrustedDomainEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CreateTrustedDomainEx");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CreateTrustedDomainEx");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CloseTrustedDomainEx(struct ndr_push *ndr, int flags, const struct lsa_CloseTrustedDomainEx *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CloseTrustedDomainEx(struct ndr_pull *ndr, int flags, struct lsa_CloseTrustedDomainEx *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.handle);
- *r->out.handle = *r->in.handle;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CloseTrustedDomainEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CloseTrustedDomainEx *r)
-{
- ndr_print_struct(ndr, name, "lsa_CloseTrustedDomainEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CloseTrustedDomainEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CloseTrustedDomainEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_QueryDomainInformationPolicy(struct ndr_push *ndr, int flags, const struct lsa_QueryDomainInformationPolicy *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_DomainInformationPolicy(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_QueryDomainInformationPolicy(struct ndr_pull *ndr, int flags, struct lsa_QueryDomainInformationPolicy *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_DomainInformationPolicy(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_QueryDomainInformationPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryDomainInformationPolicy *r)
-{
- ndr_print_struct(ndr, name, "lsa_QueryDomainInformationPolicy");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_QueryDomainInformationPolicy");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_QueryDomainInformationPolicy");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_lsa_DomainInformationPolicy(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_SetDomainInformationPolicy(struct ndr_push *ndr, int flags, const struct lsa_SetDomainInformationPolicy *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
- if (r->in.info) {
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.info, r->in.level));
- NDR_CHECK(ndr_push_lsa_DomainInformationPolicy(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_SetDomainInformationPolicy(struct ndr_pull *ndr, int flags, struct lsa_SetDomainInformationPolicy *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- } else {
- r->in.info = NULL;
- }
- if (r->in.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_lsa_DomainInformationPolicy(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_SetDomainInformationPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetDomainInformationPolicy *r)
-{
- ndr_print_struct(ndr, name, "lsa_SetDomainInformationPolicy");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_SetDomainInformationPolicy");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- if (r->in.info) {
- ndr_print_set_switch_value(ndr, r->in.info, r->in.level);
- ndr_print_lsa_DomainInformationPolicy(ndr, "info", r->in.info);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_SetDomainInformationPolicy");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_OpenTrustedDomainByName(struct ndr_push *ndr, int flags, const struct lsa_OpenTrustedDomainByName *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.trustdom_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trustdom_handle));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_OpenTrustedDomainByName(struct ndr_pull *ndr, int flags, struct lsa_OpenTrustedDomainByName *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_trustdom_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.trustdom_handle);
- ZERO_STRUCTP(r->out.trustdom_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.trustdom_handle);
- }
- _mem_save_trustdom_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.trustdom_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trustdom_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trustdom_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_OpenTrustedDomainByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenTrustedDomainByName *r)
-{
- ndr_print_struct(ndr, name, "lsa_OpenTrustedDomainByName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_OpenTrustedDomainByName");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_lsa_String(ndr, "name", &r->in.name);
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_OpenTrustedDomainByName");
- ndr->depth++;
- ndr_print_ptr(ndr, "trustdom_handle", r->out.trustdom_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "trustdom_handle", r->out.trustdom_handle);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_TestCall(struct ndr_push *ndr, int flags, const struct lsa_TestCall *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_TestCall(struct ndr_pull *ndr, int flags, struct lsa_TestCall *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_TestCall(struct ndr_print *ndr, const char *name, int flags, const struct lsa_TestCall *r)
-{
- ndr_print_struct(ndr, name, "lsa_TestCall");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_TestCall");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_TestCall");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupSids2(struct ndr_push *ndr, int flags, const struct lsa_LookupSids2 *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- if (r->in.names == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
- if (r->out.domains) {
- NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- }
- if (r->out.names == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names));
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupSids2(struct ndr_pull *ndr, int flags, struct lsa_LookupSids2 *r)
-{
- uint32_t _ptr_domains;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_count_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.names);
- }
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.names, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
- NDR_PULL_ALLOC(ndr, r->out.names);
- *r->out.names = *r->in.names;
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- } else {
- r->out.domains = NULL;
- }
- if (r->out.domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
- NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.names);
- }
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.names, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupSids2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_LookupSids2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupSids2");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->in.sids);
- ndr->depth++;
- ndr_print_lsa_SidArray(ndr, "sids", r->in.sids);
- ndr->depth--;
- ndr_print_ptr(ndr, "names", r->in.names);
- ndr->depth++;
- ndr_print_lsa_TransNameArray2(ndr, "names", r->in.names);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown1", r->in.unknown1);
- ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupSids2");
- ndr->depth++;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- if (r->out.domains) {
- ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "names", r->out.names);
- ndr->depth++;
- ndr_print_lsa_TransNameArray2(ndr, "names", r->out.names);
- ndr->depth--;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupNames2(struct ndr_push *ndr, int flags, const struct lsa_LookupNames2 *r)
-{
- uint32_t cntr_names_0;
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- if (r->in.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
- if (r->out.domains) {
- NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- }
- if (r->out.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupNames2(struct ndr_pull *ndr, int flags, struct lsa_LookupNames2 *r)
-{
- uint32_t cntr_names_0;
- uint32_t _ptr_domains;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_count_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_names));
- if (r->in.num_names < 0 || r->in.num_names > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.names));
- NDR_PULL_ALLOC_N(ndr, r->in.names, ndr_get_array_size(ndr, &r->in.names));
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.names, 0);
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
- NDR_PULL_ALLOC(ndr, r->out.sids);
- *r->out.sids = *r->in.sids;
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- if (r->in.names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- } else {
- r->out.domains = NULL;
- }
- if (r->out.domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
- NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupNames2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames2 *r)
-{
- uint32_t cntr_names_0;
- ndr_print_struct(ndr, name, "lsa_LookupNames2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupNames2");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "num_names", r->in.num_names);
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->in.num_names);
- ndr->depth++;
- for (cntr_names_0=0;cntr_names_0<r->in.num_names;cntr_names_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_names_0);
- if (idx_0) {
- ndr_print_lsa_String(ndr, "names", &r->in.names[cntr_names_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->in.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray2(ndr, "sids", r->in.sids);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown1", r->in.unknown1);
- ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupNames2");
- ndr->depth++;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- if (r->out.domains) {
- ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->out.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray2(ndr, "sids", r->out.sids);
- ndr->depth--;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CreateTrustedDomainEx2(struct ndr_push *ndr, int flags, const struct lsa_CreateTrustedDomainEx2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CreateTrustedDomainEx2(struct ndr_pull *ndr, int flags, struct lsa_CreateTrustedDomainEx2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CreateTrustedDomainEx2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomainEx2 *r)
-{
- ndr_print_struct(ndr, name, "lsa_CreateTrustedDomainEx2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CreateTrustedDomainEx2");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CreateTrustedDomainEx2");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRWRITE(struct ndr_push *ndr, int flags, const struct lsa_CREDRWRITE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRWRITE(struct ndr_pull *ndr, int flags, struct lsa_CREDRWRITE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRWRITE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRWRITE *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRWRITE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRWRITE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRWRITE");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRREAD(struct ndr_push *ndr, int flags, const struct lsa_CREDRREAD *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRREAD(struct ndr_pull *ndr, int flags, struct lsa_CREDRREAD *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRREAD(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRREAD *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRREAD");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRREAD");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRREAD");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRENUMERATE(struct ndr_push *ndr, int flags, const struct lsa_CREDRENUMERATE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRENUMERATE(struct ndr_pull *ndr, int flags, struct lsa_CREDRENUMERATE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRENUMERATE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRENUMERATE *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRENUMERATE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRENUMERATE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRENUMERATE");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRWRITEDOMAINCREDENTIALS(struct ndr_push *ndr, int flags, const struct lsa_CREDRWRITEDOMAINCREDENTIALS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRWRITEDOMAINCREDENTIALS(struct ndr_pull *ndr, int flags, struct lsa_CREDRWRITEDOMAINCREDENTIALS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRWRITEDOMAINCREDENTIALS(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRWRITEDOMAINCREDENTIALS *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRWRITEDOMAINCREDENTIALS");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRWRITEDOMAINCREDENTIALS");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRWRITEDOMAINCREDENTIALS");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRREADDOMAINCREDENTIALS(struct ndr_push *ndr, int flags, const struct lsa_CREDRREADDOMAINCREDENTIALS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRREADDOMAINCREDENTIALS(struct ndr_pull *ndr, int flags, struct lsa_CREDRREADDOMAINCREDENTIALS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRREADDOMAINCREDENTIALS(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRREADDOMAINCREDENTIALS *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRREADDOMAINCREDENTIALS");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRREADDOMAINCREDENTIALS");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRREADDOMAINCREDENTIALS");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRDELETE(struct ndr_push *ndr, int flags, const struct lsa_CREDRDELETE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRDELETE(struct ndr_pull *ndr, int flags, struct lsa_CREDRDELETE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRDELETE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRDELETE *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRDELETE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRDELETE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRDELETE");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRGETTARGETINFO(struct ndr_push *ndr, int flags, const struct lsa_CREDRGETTARGETINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRGETTARGETINFO(struct ndr_pull *ndr, int flags, struct lsa_CREDRGETTARGETINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRGETTARGETINFO(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRGETTARGETINFO *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRGETTARGETINFO");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRGETTARGETINFO");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRGETTARGETINFO");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRPROFILELOADED(struct ndr_push *ndr, int flags, const struct lsa_CREDRPROFILELOADED *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRPROFILELOADED(struct ndr_pull *ndr, int flags, struct lsa_CREDRPROFILELOADED *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRPROFILELOADED(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRPROFILELOADED *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRPROFILELOADED");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRPROFILELOADED");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRPROFILELOADED");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupNames3(struct ndr_push *ndr, int flags, const struct lsa_LookupNames3 *r)
-{
- uint32_t cntr_names_0;
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- if (r->in.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
- if (r->out.domains) {
- NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- }
- if (r->out.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupNames3(struct ndr_pull *ndr, int flags, struct lsa_LookupNames3 *r)
-{
- uint32_t cntr_names_0;
- uint32_t _ptr_domains;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_count_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_names));
- if (r->in.num_names < 0 || r->in.num_names > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.names));
- NDR_PULL_ALLOC_N(ndr, r->in.names, ndr_get_array_size(ndr, &r->in.names));
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.names, 0);
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
- NDR_PULL_ALLOC(ndr, r->out.sids);
- *r->out.sids = *r->in.sids;
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- if (r->in.names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- } else {
- r->out.domains = NULL;
- }
- if (r->out.domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
- NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupNames3(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames3 *r)
-{
- uint32_t cntr_names_0;
- ndr_print_struct(ndr, name, "lsa_LookupNames3");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupNames3");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "num_names", r->in.num_names);
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->in.num_names);
- ndr->depth++;
- for (cntr_names_0=0;cntr_names_0<r->in.num_names;cntr_names_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_names_0);
- if (idx_0) {
- ndr_print_lsa_String(ndr, "names", &r->in.names[cntr_names_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->in.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray3(ndr, "sids", r->in.sids);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown1", r->in.unknown1);
- ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupNames3");
- ndr->depth++;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- if (r->out.domains) {
- ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->out.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray3(ndr, "sids", r->out.sids);
- ndr->depth--;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRGETSESSIONTYPES(struct ndr_push *ndr, int flags, const struct lsa_CREDRGETSESSIONTYPES *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRGETSESSIONTYPES(struct ndr_pull *ndr, int flags, struct lsa_CREDRGETSESSIONTYPES *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRGETSESSIONTYPES(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRGETSESSIONTYPES *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRGETSESSIONTYPES");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRGETSESSIONTYPES");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRGETSESSIONTYPES");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARREGISTERAUDITEVENT(struct ndr_push *ndr, int flags, const struct lsa_LSARREGISTERAUDITEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARREGISTERAUDITEVENT(struct ndr_pull *ndr, int flags, struct lsa_LSARREGISTERAUDITEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARREGISTERAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARREGISTERAUDITEVENT *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARREGISTERAUDITEVENT");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARREGISTERAUDITEVENT");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARREGISTERAUDITEVENT");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARGENAUDITEVENT(struct ndr_push *ndr, int flags, const struct lsa_LSARGENAUDITEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARGENAUDITEVENT(struct ndr_pull *ndr, int flags, struct lsa_LSARGENAUDITEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARGENAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARGENAUDITEVENT *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARGENAUDITEVENT");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARGENAUDITEVENT");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARGENAUDITEVENT");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARUNREGISTERAUDITEVENT(struct ndr_push *ndr, int flags, const struct lsa_LSARUNREGISTERAUDITEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARUNREGISTERAUDITEVENT(struct ndr_pull *ndr, int flags, struct lsa_LSARUNREGISTERAUDITEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARUNREGISTERAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARUNREGISTERAUDITEVENT *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARUNREGISTERAUDITEVENT");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARUNREGISTERAUDITEVENT");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARUNREGISTERAUDITEVENT");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct ndr_push *ndr, int flags, const struct lsa_LSARQUERYFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct ndr_pull *ndr, int flags, struct lsa_LSARQUERYFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARQUERYFORESTTRUSTINFORMATION *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARQUERYFORESTTRUSTINFORMATION");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARQUERYFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARQUERYFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARSETFORESTTRUSTINFORMATION(struct ndr_push *ndr, int flags, const struct lsa_LSARSETFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARSETFORESTTRUSTINFORMATION(struct ndr_pull *ndr, int flags, struct lsa_LSARSETFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARSETFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARSETFORESTTRUSTINFORMATION *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARSETFORESTTRUSTINFORMATION");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARSETFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARSETFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_CREDRRENAME(struct ndr_push *ndr, int flags, const struct lsa_CREDRRENAME *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_CREDRRENAME(struct ndr_pull *ndr, int flags, struct lsa_CREDRRENAME *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_CREDRRENAME(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRRENAME *r)
-{
- ndr_print_struct(ndr, name, "lsa_CREDRRENAME");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_CREDRRENAME");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_CREDRRENAME");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupSids3(struct ndr_push *ndr, int flags, const struct lsa_LookupSids3 *r)
-{
- if (flags & NDR_IN) {
- if (r->in.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- if (r->in.names == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
- if (r->out.domains) {
- NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- }
- if (r->out.names == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names));
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupSids3(struct ndr_pull *ndr, int flags, struct lsa_LookupSids3 *r)
-{
- uint32_t _ptr_domains;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_count_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.names);
- }
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.names, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
- NDR_PULL_ALLOC(ndr, r->out.names);
- *r->out.names = *r->in.names;
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- } else {
- r->out.domains = NULL;
- }
- if (r->out.domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
- NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.names);
- }
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.names, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransNameArray2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupSids3(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids3 *r)
-{
- ndr_print_struct(ndr, name, "lsa_LookupSids3");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupSids3");
- ndr->depth++;
- ndr_print_ptr(ndr, "sids", r->in.sids);
- ndr->depth++;
- ndr_print_lsa_SidArray(ndr, "sids", r->in.sids);
- ndr->depth--;
- ndr_print_ptr(ndr, "names", r->in.names);
- ndr->depth++;
- ndr_print_lsa_TransNameArray2(ndr, "names", r->in.names);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown1", r->in.unknown1);
- ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupSids3");
- ndr->depth++;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- if (r->out.domains) {
- ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "names", r->out.names);
- ndr->depth++;
- ndr_print_lsa_TransNameArray2(ndr, "names", r->out.names);
- ndr->depth--;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LookupNames4(struct ndr_push *ndr, int flags, const struct lsa_LookupNames4 *r)
-{
- uint32_t cntr_names_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_names));
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- if (r->in.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
- if (r->out.domains) {
- NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- }
- if (r->out.sids == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LookupNames4(struct ndr_pull *ndr, int flags, struct lsa_LookupNames4 *r)
-{
- uint32_t cntr_names_0;
- uint32_t _ptr_domains;
- TALLOC_CTX *_mem_save_names_0;
- TALLOC_CTX *_mem_save_domains_0;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_count_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_names));
- if (r->in.num_names < 0 || r->in.num_names > 1000) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.names));
- NDR_PULL_ALLOC_N(ndr, r->in.names, ndr_get_array_size(ndr, &r->in.names));
- _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.names, 0);
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->in.names[cntr_names_0]));
- }
- for (cntr_names_0 = 0; cntr_names_0 < r->in.num_names; cntr_names_0++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->in.names[cntr_names_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
- NDR_PULL_ALLOC(ndr, r->out.sids);
- *r->out.sids = *r->in.sids;
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- if (r->in.names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
- if (_ptr_domains) {
- NDR_PULL_ALLOC(ndr, r->out.domains);
- } else {
- r->out.domains = NULL;
- }
- if (r->out.domains) {
- _mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
- NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sids);
- }
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sids, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_lsa_TransSidArray3(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LookupNames4(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames4 *r)
-{
- uint32_t cntr_names_0;
- ndr_print_struct(ndr, name, "lsa_LookupNames4");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LookupNames4");
- ndr->depth++;
- ndr_print_uint32(ndr, "num_names", r->in.num_names);
- ndr->print(ndr, "%s: ARRAY(%d)", "names", r->in.num_names);
- ndr->depth++;
- for (cntr_names_0=0;cntr_names_0<r->in.num_names;cntr_names_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_names_0);
- if (idx_0) {
- ndr_print_lsa_String(ndr, "names", &r->in.names[cntr_names_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->in.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray3(ndr, "sids", r->in.sids);
- ndr->depth--;
- ndr_print_uint16(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown1", r->in.unknown1);
- ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LookupNames4");
- ndr->depth++;
- ndr_print_ptr(ndr, "domains", r->out.domains);
- ndr->depth++;
- if (r->out.domains) {
- ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "sids", r->out.sids);
- ndr->depth++;
- ndr_print_lsa_TransSidArray3(ndr, "sids", r->out.sids);
- ndr->depth--;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSAROPENPOLICYSCE(struct ndr_push *ndr, int flags, const struct lsa_LSAROPENPOLICYSCE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSAROPENPOLICYSCE(struct ndr_pull *ndr, int flags, struct lsa_LSAROPENPOLICYSCE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSAROPENPOLICYSCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSAROPENPOLICYSCE *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSAROPENPOLICYSCE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSAROPENPOLICYSCE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSAROPENPOLICYSCE");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct ndr_push *ndr, int flags, const struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct ndr_pull *ndr, int flags, struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARADTREGISTERSECURITYEVENTSOURCE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARADTREGISTERSECURITYEVENTSOURCE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARADTREGISTERSECURITYEVENTSOURCE");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct ndr_push *ndr, int flags, const struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct ndr_pull *ndr, int flags, struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_lsa_LSARADTREPORTSECURITYEVENT(struct ndr_push *ndr, int flags, const struct lsa_LSARADTREPORTSECURITYEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_lsa_LSARADTREPORTSECURITYEVENT(struct ndr_pull *ndr, int flags, struct lsa_LSARADTREPORTSECURITYEVENT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_lsa_LSARADTREPORTSECURITYEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTREPORTSECURITYEVENT *r)
-{
- ndr_print_struct(ndr, name, "lsa_LSARADTREPORTSECURITYEVENT");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "lsa_LSARADTREPORTSECURITYEVENT");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "lsa_LSARADTREPORTSECURITYEVENT");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call lsarpc_calls[] = {
- {
- "lsa_Close",
- sizeof(struct lsa_Close),
- (ndr_push_flags_fn_t) ndr_push_lsa_Close,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_Close,
- (ndr_print_function_t) ndr_print_lsa_Close,
- False,
- },
- {
- "lsa_Delete",
- sizeof(struct lsa_Delete),
- (ndr_push_flags_fn_t) ndr_push_lsa_Delete,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_Delete,
- (ndr_print_function_t) ndr_print_lsa_Delete,
- False,
- },
- {
- "lsa_EnumPrivs",
- sizeof(struct lsa_EnumPrivs),
- (ndr_push_flags_fn_t) ndr_push_lsa_EnumPrivs,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_EnumPrivs,
- (ndr_print_function_t) ndr_print_lsa_EnumPrivs,
- False,
- },
- {
- "lsa_QuerySecurity",
- sizeof(struct lsa_QuerySecurity),
- (ndr_push_flags_fn_t) ndr_push_lsa_QuerySecurity,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QuerySecurity,
- (ndr_print_function_t) ndr_print_lsa_QuerySecurity,
- False,
- },
- {
- "lsa_SetSecObj",
- sizeof(struct lsa_SetSecObj),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetSecObj,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetSecObj,
- (ndr_print_function_t) ndr_print_lsa_SetSecObj,
- False,
- },
- {
- "lsa_ChangePassword",
- sizeof(struct lsa_ChangePassword),
- (ndr_push_flags_fn_t) ndr_push_lsa_ChangePassword,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_ChangePassword,
- (ndr_print_function_t) ndr_print_lsa_ChangePassword,
- False,
- },
- {
- "lsa_OpenPolicy",
- sizeof(struct lsa_OpenPolicy),
- (ndr_push_flags_fn_t) ndr_push_lsa_OpenPolicy,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_OpenPolicy,
- (ndr_print_function_t) ndr_print_lsa_OpenPolicy,
- False,
- },
- {
- "lsa_QueryInfoPolicy",
- sizeof(struct lsa_QueryInfoPolicy),
- (ndr_push_flags_fn_t) ndr_push_lsa_QueryInfoPolicy,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QueryInfoPolicy,
- (ndr_print_function_t) ndr_print_lsa_QueryInfoPolicy,
- False,
- },
- {
- "lsa_SetInfoPolicy",
- sizeof(struct lsa_SetInfoPolicy),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetInfoPolicy,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetInfoPolicy,
- (ndr_print_function_t) ndr_print_lsa_SetInfoPolicy,
- False,
- },
- {
- "lsa_ClearAuditLog",
- sizeof(struct lsa_ClearAuditLog),
- (ndr_push_flags_fn_t) ndr_push_lsa_ClearAuditLog,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_ClearAuditLog,
- (ndr_print_function_t) ndr_print_lsa_ClearAuditLog,
- False,
- },
- {
- "lsa_CreateAccount",
- sizeof(struct lsa_CreateAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_CreateAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CreateAccount,
- (ndr_print_function_t) ndr_print_lsa_CreateAccount,
- False,
- },
- {
- "lsa_EnumAccounts",
- sizeof(struct lsa_EnumAccounts),
- (ndr_push_flags_fn_t) ndr_push_lsa_EnumAccounts,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_EnumAccounts,
- (ndr_print_function_t) ndr_print_lsa_EnumAccounts,
- False,
- },
- {
- "lsa_CreateTrustedDomain",
- sizeof(struct lsa_CreateTrustedDomain),
- (ndr_push_flags_fn_t) ndr_push_lsa_CreateTrustedDomain,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CreateTrustedDomain,
- (ndr_print_function_t) ndr_print_lsa_CreateTrustedDomain,
- False,
- },
- {
- "lsa_EnumTrustDom",
- sizeof(struct lsa_EnumTrustDom),
- (ndr_push_flags_fn_t) ndr_push_lsa_EnumTrustDom,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_EnumTrustDom,
- (ndr_print_function_t) ndr_print_lsa_EnumTrustDom,
- False,
- },
- {
- "lsa_LookupNames",
- sizeof(struct lsa_LookupNames),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupNames,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupNames,
- (ndr_print_function_t) ndr_print_lsa_LookupNames,
- False,
- },
- {
- "lsa_LookupSids",
- sizeof(struct lsa_LookupSids),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupSids,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupSids,
- (ndr_print_function_t) ndr_print_lsa_LookupSids,
- False,
- },
- {
- "lsa_CreateSecret",
- sizeof(struct lsa_CreateSecret),
- (ndr_push_flags_fn_t) ndr_push_lsa_CreateSecret,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CreateSecret,
- (ndr_print_function_t) ndr_print_lsa_CreateSecret,
- False,
- },
- {
- "lsa_OpenAccount",
- sizeof(struct lsa_OpenAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_OpenAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_OpenAccount,
- (ndr_print_function_t) ndr_print_lsa_OpenAccount,
- False,
- },
- {
- "lsa_EnumPrivsAccount",
- sizeof(struct lsa_EnumPrivsAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_EnumPrivsAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_EnumPrivsAccount,
- (ndr_print_function_t) ndr_print_lsa_EnumPrivsAccount,
- False,
- },
- {
- "lsa_AddPrivilegesToAccount",
- sizeof(struct lsa_AddPrivilegesToAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_AddPrivilegesToAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_AddPrivilegesToAccount,
- (ndr_print_function_t) ndr_print_lsa_AddPrivilegesToAccount,
- False,
- },
- {
- "lsa_RemovePrivilegesFromAccount",
- sizeof(struct lsa_RemovePrivilegesFromAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_RemovePrivilegesFromAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_RemovePrivilegesFromAccount,
- (ndr_print_function_t) ndr_print_lsa_RemovePrivilegesFromAccount,
- False,
- },
- {
- "lsa_GetQuotasForAccount",
- sizeof(struct lsa_GetQuotasForAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_GetQuotasForAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_GetQuotasForAccount,
- (ndr_print_function_t) ndr_print_lsa_GetQuotasForAccount,
- False,
- },
- {
- "lsa_SetQuotasForAccount",
- sizeof(struct lsa_SetQuotasForAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetQuotasForAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetQuotasForAccount,
- (ndr_print_function_t) ndr_print_lsa_SetQuotasForAccount,
- False,
- },
- {
- "lsa_GetSystemAccessAccount",
- sizeof(struct lsa_GetSystemAccessAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_GetSystemAccessAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_GetSystemAccessAccount,
- (ndr_print_function_t) ndr_print_lsa_GetSystemAccessAccount,
- False,
- },
- {
- "lsa_SetSystemAccessAccount",
- sizeof(struct lsa_SetSystemAccessAccount),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetSystemAccessAccount,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetSystemAccessAccount,
- (ndr_print_function_t) ndr_print_lsa_SetSystemAccessAccount,
- False,
- },
- {
- "lsa_OpenTrustedDomain",
- sizeof(struct lsa_OpenTrustedDomain),
- (ndr_push_flags_fn_t) ndr_push_lsa_OpenTrustedDomain,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_OpenTrustedDomain,
- (ndr_print_function_t) ndr_print_lsa_OpenTrustedDomain,
- False,
- },
- {
- "lsa_QueryTrustedDomainInfo",
- sizeof(struct lsa_QueryTrustedDomainInfo),
- (ndr_push_flags_fn_t) ndr_push_lsa_QueryTrustedDomainInfo,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QueryTrustedDomainInfo,
- (ndr_print_function_t) ndr_print_lsa_QueryTrustedDomainInfo,
- False,
- },
- {
- "lsa_SetInformationTrustedDomain",
- sizeof(struct lsa_SetInformationTrustedDomain),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetInformationTrustedDomain,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetInformationTrustedDomain,
- (ndr_print_function_t) ndr_print_lsa_SetInformationTrustedDomain,
- False,
- },
- {
- "lsa_OpenSecret",
- sizeof(struct lsa_OpenSecret),
- (ndr_push_flags_fn_t) ndr_push_lsa_OpenSecret,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_OpenSecret,
- (ndr_print_function_t) ndr_print_lsa_OpenSecret,
- False,
- },
- {
- "lsa_SetSecret",
- sizeof(struct lsa_SetSecret),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetSecret,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetSecret,
- (ndr_print_function_t) ndr_print_lsa_SetSecret,
- False,
- },
- {
- "lsa_QuerySecret",
- sizeof(struct lsa_QuerySecret),
- (ndr_push_flags_fn_t) ndr_push_lsa_QuerySecret,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QuerySecret,
- (ndr_print_function_t) ndr_print_lsa_QuerySecret,
- False,
- },
- {
- "lsa_LookupPrivValue",
- sizeof(struct lsa_LookupPrivValue),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupPrivValue,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupPrivValue,
- (ndr_print_function_t) ndr_print_lsa_LookupPrivValue,
- False,
- },
- {
- "lsa_LookupPrivName",
- sizeof(struct lsa_LookupPrivName),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupPrivName,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupPrivName,
- (ndr_print_function_t) ndr_print_lsa_LookupPrivName,
- False,
- },
- {
- "lsa_LookupPrivDisplayName",
- sizeof(struct lsa_LookupPrivDisplayName),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupPrivDisplayName,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupPrivDisplayName,
- (ndr_print_function_t) ndr_print_lsa_LookupPrivDisplayName,
- False,
- },
- {
- "lsa_DeleteObject",
- sizeof(struct lsa_DeleteObject),
- (ndr_push_flags_fn_t) ndr_push_lsa_DeleteObject,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_DeleteObject,
- (ndr_print_function_t) ndr_print_lsa_DeleteObject,
- False,
- },
- {
- "lsa_EnumAccountsWithUserRight",
- sizeof(struct lsa_EnumAccountsWithUserRight),
- (ndr_push_flags_fn_t) ndr_push_lsa_EnumAccountsWithUserRight,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_EnumAccountsWithUserRight,
- (ndr_print_function_t) ndr_print_lsa_EnumAccountsWithUserRight,
- False,
- },
- {
- "lsa_EnumAccountRights",
- sizeof(struct lsa_EnumAccountRights),
- (ndr_push_flags_fn_t) ndr_push_lsa_EnumAccountRights,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_EnumAccountRights,
- (ndr_print_function_t) ndr_print_lsa_EnumAccountRights,
- False,
- },
- {
- "lsa_AddAccountRights",
- sizeof(struct lsa_AddAccountRights),
- (ndr_push_flags_fn_t) ndr_push_lsa_AddAccountRights,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_AddAccountRights,
- (ndr_print_function_t) ndr_print_lsa_AddAccountRights,
- False,
- },
- {
- "lsa_RemoveAccountRights",
- sizeof(struct lsa_RemoveAccountRights),
- (ndr_push_flags_fn_t) ndr_push_lsa_RemoveAccountRights,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_RemoveAccountRights,
- (ndr_print_function_t) ndr_print_lsa_RemoveAccountRights,
- False,
- },
- {
- "lsa_QueryTrustedDomainInfoBySid",
- sizeof(struct lsa_QueryTrustedDomainInfoBySid),
- (ndr_push_flags_fn_t) ndr_push_lsa_QueryTrustedDomainInfoBySid,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QueryTrustedDomainInfoBySid,
- (ndr_print_function_t) ndr_print_lsa_QueryTrustedDomainInfoBySid,
- False,
- },
- {
- "lsa_SetTrustedDomainInfo",
- sizeof(struct lsa_SetTrustedDomainInfo),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetTrustedDomainInfo,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetTrustedDomainInfo,
- (ndr_print_function_t) ndr_print_lsa_SetTrustedDomainInfo,
- False,
- },
- {
- "lsa_DeleteTrustedDomain",
- sizeof(struct lsa_DeleteTrustedDomain),
- (ndr_push_flags_fn_t) ndr_push_lsa_DeleteTrustedDomain,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_DeleteTrustedDomain,
- (ndr_print_function_t) ndr_print_lsa_DeleteTrustedDomain,
- False,
- },
- {
- "lsa_StorePrivateData",
- sizeof(struct lsa_StorePrivateData),
- (ndr_push_flags_fn_t) ndr_push_lsa_StorePrivateData,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_StorePrivateData,
- (ndr_print_function_t) ndr_print_lsa_StorePrivateData,
- False,
- },
- {
- "lsa_RetrievePrivateData",
- sizeof(struct lsa_RetrievePrivateData),
- (ndr_push_flags_fn_t) ndr_push_lsa_RetrievePrivateData,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_RetrievePrivateData,
- (ndr_print_function_t) ndr_print_lsa_RetrievePrivateData,
- False,
- },
- {
- "lsa_OpenPolicy2",
- sizeof(struct lsa_OpenPolicy2),
- (ndr_push_flags_fn_t) ndr_push_lsa_OpenPolicy2,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_OpenPolicy2,
- (ndr_print_function_t) ndr_print_lsa_OpenPolicy2,
- False,
- },
- {
- "lsa_GetUserName",
- sizeof(struct lsa_GetUserName),
- (ndr_push_flags_fn_t) ndr_push_lsa_GetUserName,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_GetUserName,
- (ndr_print_function_t) ndr_print_lsa_GetUserName,
- False,
- },
- {
- "lsa_QueryInfoPolicy2",
- sizeof(struct lsa_QueryInfoPolicy2),
- (ndr_push_flags_fn_t) ndr_push_lsa_QueryInfoPolicy2,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QueryInfoPolicy2,
- (ndr_print_function_t) ndr_print_lsa_QueryInfoPolicy2,
- False,
- },
- {
- "lsa_SetInfoPolicy2",
- sizeof(struct lsa_SetInfoPolicy2),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetInfoPolicy2,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetInfoPolicy2,
- (ndr_print_function_t) ndr_print_lsa_SetInfoPolicy2,
- False,
- },
- {
- "lsa_QueryTrustedDomainInfoByName",
- sizeof(struct lsa_QueryTrustedDomainInfoByName),
- (ndr_push_flags_fn_t) ndr_push_lsa_QueryTrustedDomainInfoByName,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QueryTrustedDomainInfoByName,
- (ndr_print_function_t) ndr_print_lsa_QueryTrustedDomainInfoByName,
- False,
- },
- {
- "lsa_SetTrustedDomainInfoByName",
- sizeof(struct lsa_SetTrustedDomainInfoByName),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetTrustedDomainInfoByName,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetTrustedDomainInfoByName,
- (ndr_print_function_t) ndr_print_lsa_SetTrustedDomainInfoByName,
- False,
- },
- {
- "lsa_EnumTrustedDomainsEx",
- sizeof(struct lsa_EnumTrustedDomainsEx),
- (ndr_push_flags_fn_t) ndr_push_lsa_EnumTrustedDomainsEx,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_EnumTrustedDomainsEx,
- (ndr_print_function_t) ndr_print_lsa_EnumTrustedDomainsEx,
- False,
- },
- {
- "lsa_CreateTrustedDomainEx",
- sizeof(struct lsa_CreateTrustedDomainEx),
- (ndr_push_flags_fn_t) ndr_push_lsa_CreateTrustedDomainEx,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CreateTrustedDomainEx,
- (ndr_print_function_t) ndr_print_lsa_CreateTrustedDomainEx,
- False,
- },
- {
- "lsa_CloseTrustedDomainEx",
- sizeof(struct lsa_CloseTrustedDomainEx),
- (ndr_push_flags_fn_t) ndr_push_lsa_CloseTrustedDomainEx,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CloseTrustedDomainEx,
- (ndr_print_function_t) ndr_print_lsa_CloseTrustedDomainEx,
- False,
- },
- {
- "lsa_QueryDomainInformationPolicy",
- sizeof(struct lsa_QueryDomainInformationPolicy),
- (ndr_push_flags_fn_t) ndr_push_lsa_QueryDomainInformationPolicy,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_QueryDomainInformationPolicy,
- (ndr_print_function_t) ndr_print_lsa_QueryDomainInformationPolicy,
- False,
- },
- {
- "lsa_SetDomainInformationPolicy",
- sizeof(struct lsa_SetDomainInformationPolicy),
- (ndr_push_flags_fn_t) ndr_push_lsa_SetDomainInformationPolicy,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_SetDomainInformationPolicy,
- (ndr_print_function_t) ndr_print_lsa_SetDomainInformationPolicy,
- False,
- },
- {
- "lsa_OpenTrustedDomainByName",
- sizeof(struct lsa_OpenTrustedDomainByName),
- (ndr_push_flags_fn_t) ndr_push_lsa_OpenTrustedDomainByName,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_OpenTrustedDomainByName,
- (ndr_print_function_t) ndr_print_lsa_OpenTrustedDomainByName,
- False,
- },
- {
- "lsa_TestCall",
- sizeof(struct lsa_TestCall),
- (ndr_push_flags_fn_t) ndr_push_lsa_TestCall,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_TestCall,
- (ndr_print_function_t) ndr_print_lsa_TestCall,
- False,
- },
- {
- "lsa_LookupSids2",
- sizeof(struct lsa_LookupSids2),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupSids2,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupSids2,
- (ndr_print_function_t) ndr_print_lsa_LookupSids2,
- False,
- },
- {
- "lsa_LookupNames2",
- sizeof(struct lsa_LookupNames2),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupNames2,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupNames2,
- (ndr_print_function_t) ndr_print_lsa_LookupNames2,
- False,
- },
- {
- "lsa_CreateTrustedDomainEx2",
- sizeof(struct lsa_CreateTrustedDomainEx2),
- (ndr_push_flags_fn_t) ndr_push_lsa_CreateTrustedDomainEx2,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CreateTrustedDomainEx2,
- (ndr_print_function_t) ndr_print_lsa_CreateTrustedDomainEx2,
- False,
- },
- {
- "lsa_CREDRWRITE",
- sizeof(struct lsa_CREDRWRITE),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRWRITE,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRWRITE,
- (ndr_print_function_t) ndr_print_lsa_CREDRWRITE,
- False,
- },
- {
- "lsa_CREDRREAD",
- sizeof(struct lsa_CREDRREAD),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRREAD,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRREAD,
- (ndr_print_function_t) ndr_print_lsa_CREDRREAD,
- False,
- },
- {
- "lsa_CREDRENUMERATE",
- sizeof(struct lsa_CREDRENUMERATE),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRENUMERATE,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRENUMERATE,
- (ndr_print_function_t) ndr_print_lsa_CREDRENUMERATE,
- False,
- },
- {
- "lsa_CREDRWRITEDOMAINCREDENTIALS",
- sizeof(struct lsa_CREDRWRITEDOMAINCREDENTIALS),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRWRITEDOMAINCREDENTIALS,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRWRITEDOMAINCREDENTIALS,
- (ndr_print_function_t) ndr_print_lsa_CREDRWRITEDOMAINCREDENTIALS,
- False,
- },
- {
- "lsa_CREDRREADDOMAINCREDENTIALS",
- sizeof(struct lsa_CREDRREADDOMAINCREDENTIALS),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRREADDOMAINCREDENTIALS,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRREADDOMAINCREDENTIALS,
- (ndr_print_function_t) ndr_print_lsa_CREDRREADDOMAINCREDENTIALS,
- False,
- },
- {
- "lsa_CREDRDELETE",
- sizeof(struct lsa_CREDRDELETE),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRDELETE,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRDELETE,
- (ndr_print_function_t) ndr_print_lsa_CREDRDELETE,
- False,
- },
- {
- "lsa_CREDRGETTARGETINFO",
- sizeof(struct lsa_CREDRGETTARGETINFO),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRGETTARGETINFO,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRGETTARGETINFO,
- (ndr_print_function_t) ndr_print_lsa_CREDRGETTARGETINFO,
- False,
- },
- {
- "lsa_CREDRPROFILELOADED",
- sizeof(struct lsa_CREDRPROFILELOADED),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRPROFILELOADED,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRPROFILELOADED,
- (ndr_print_function_t) ndr_print_lsa_CREDRPROFILELOADED,
- False,
- },
- {
- "lsa_LookupNames3",
- sizeof(struct lsa_LookupNames3),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupNames3,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupNames3,
- (ndr_print_function_t) ndr_print_lsa_LookupNames3,
- False,
- },
- {
- "lsa_CREDRGETSESSIONTYPES",
- sizeof(struct lsa_CREDRGETSESSIONTYPES),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRGETSESSIONTYPES,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRGETSESSIONTYPES,
- (ndr_print_function_t) ndr_print_lsa_CREDRGETSESSIONTYPES,
- False,
- },
- {
- "lsa_LSARREGISTERAUDITEVENT",
- sizeof(struct lsa_LSARREGISTERAUDITEVENT),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARREGISTERAUDITEVENT,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARREGISTERAUDITEVENT,
- (ndr_print_function_t) ndr_print_lsa_LSARREGISTERAUDITEVENT,
- False,
- },
- {
- "lsa_LSARGENAUDITEVENT",
- sizeof(struct lsa_LSARGENAUDITEVENT),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARGENAUDITEVENT,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARGENAUDITEVENT,
- (ndr_print_function_t) ndr_print_lsa_LSARGENAUDITEVENT,
- False,
- },
- {
- "lsa_LSARUNREGISTERAUDITEVENT",
- sizeof(struct lsa_LSARUNREGISTERAUDITEVENT),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARUNREGISTERAUDITEVENT,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARUNREGISTERAUDITEVENT,
- (ndr_print_function_t) ndr_print_lsa_LSARUNREGISTERAUDITEVENT,
- False,
- },
- {
- "lsa_LSARQUERYFORESTTRUSTINFORMATION",
- sizeof(struct lsa_LSARQUERYFORESTTRUSTINFORMATION),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARQUERYFORESTTRUSTINFORMATION,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARQUERYFORESTTRUSTINFORMATION,
- (ndr_print_function_t) ndr_print_lsa_LSARQUERYFORESTTRUSTINFORMATION,
- False,
- },
- {
- "lsa_LSARSETFORESTTRUSTINFORMATION",
- sizeof(struct lsa_LSARSETFORESTTRUSTINFORMATION),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARSETFORESTTRUSTINFORMATION,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARSETFORESTTRUSTINFORMATION,
- (ndr_print_function_t) ndr_print_lsa_LSARSETFORESTTRUSTINFORMATION,
- False,
- },
- {
- "lsa_CREDRRENAME",
- sizeof(struct lsa_CREDRRENAME),
- (ndr_push_flags_fn_t) ndr_push_lsa_CREDRRENAME,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_CREDRRENAME,
- (ndr_print_function_t) ndr_print_lsa_CREDRRENAME,
- False,
- },
- {
- "lsa_LookupSids3",
- sizeof(struct lsa_LookupSids3),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupSids3,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupSids3,
- (ndr_print_function_t) ndr_print_lsa_LookupSids3,
- False,
- },
- {
- "lsa_LookupNames4",
- sizeof(struct lsa_LookupNames4),
- (ndr_push_flags_fn_t) ndr_push_lsa_LookupNames4,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LookupNames4,
- (ndr_print_function_t) ndr_print_lsa_LookupNames4,
- False,
- },
- {
- "lsa_LSAROPENPOLICYSCE",
- sizeof(struct lsa_LSAROPENPOLICYSCE),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSAROPENPOLICYSCE,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSAROPENPOLICYSCE,
- (ndr_print_function_t) ndr_print_lsa_LSAROPENPOLICYSCE,
- False,
- },
- {
- "lsa_LSARADTREGISTERSECURITYEVENTSOURCE",
- sizeof(struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARADTREGISTERSECURITYEVENTSOURCE,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARADTREGISTERSECURITYEVENTSOURCE,
- (ndr_print_function_t) ndr_print_lsa_LSARADTREGISTERSECURITYEVENTSOURCE,
- False,
- },
- {
- "lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE",
- sizeof(struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE,
- (ndr_print_function_t) ndr_print_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE,
- False,
- },
- {
- "lsa_LSARADTREPORTSECURITYEVENT",
- sizeof(struct lsa_LSARADTREPORTSECURITYEVENT),
- (ndr_push_flags_fn_t) ndr_push_lsa_LSARADTREPORTSECURITYEVENT,
- (ndr_pull_flags_fn_t) ndr_pull_lsa_LSARADTREPORTSECURITYEVENT,
- (ndr_print_function_t) ndr_print_lsa_LSARADTREPORTSECURITYEVENT,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const lsarpc_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\lsarpc]",
- "ncacn_np:[\\pipe\\netlogon]",
- "ncacn_np:[\\pipe\\lsass]",
- "ncacn_ip_tcp:",
- "ncalrpc:",
-};
-
-const struct dcerpc_endpoint_list lsarpc_endpoints = {
- .count = 5,
- .names = lsarpc_endpoint_strings
-};
-
-const char * const lsarpc_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list lsarpc_authservices = {
- .count = 5,
- .names = lsarpc_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_lsarpc = {
- .name = "lsarpc",
- .syntax_id = {
- {0x12345778,0x1234,0xabcd,{0xef,0x00},{0x01,0x23,0x45,0x67,0x89,0xab}},
- DCERPC_LSARPC_VERSION
- },
- .helpstring = DCERPC_LSARPC_HELPSTRING,
- .num_calls = 82,
- .calls = lsarpc_calls,
- .endpoints = &lsarpc_endpoints,
- .authservices = &lsarpc_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_lsa.h b/source/librpc/gen_ndr/ndr_lsa.h
deleted file mode 100644
index 13501b139e9..00000000000
--- a/source/librpc/gen_ndr/ndr_lsa.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/lsa.h"
-
-#ifndef _HEADER_NDR_lsarpc
-#define _HEADER_NDR_lsarpc
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_LSARPC_UUID "12345778-1234-abcd-ef00-0123456789ab"
-#define DCERPC_LSARPC_VERSION 0.0
-#define DCERPC_LSARPC_NAME "lsarpc"
-#define DCERPC_LSARPC_HELPSTRING "Local Security Authority"
-extern const struct dcerpc_interface_table dcerpc_table_lsarpc;
-NTSTATUS dcerpc_server_lsarpc_init(void);
-#define DCERPC_LSA_CLOSE (0x00)
-
-#define DCERPC_LSA_DELETE (0x01)
-
-#define DCERPC_LSA_ENUMPRIVS (0x02)
-
-#define DCERPC_LSA_QUERYSECURITY (0x03)
-
-#define DCERPC_LSA_SETSECOBJ (0x04)
-
-#define DCERPC_LSA_CHANGEPASSWORD (0x05)
-
-#define DCERPC_LSA_OPENPOLICY (0x06)
-
-#define DCERPC_LSA_QUERYINFOPOLICY (0x07)
-
-#define DCERPC_LSA_SETINFOPOLICY (0x08)
-
-#define DCERPC_LSA_CLEARAUDITLOG (0x09)
-
-#define DCERPC_LSA_CREATEACCOUNT (0x0a)
-
-#define DCERPC_LSA_ENUMACCOUNTS (0x0b)
-
-#define DCERPC_LSA_CREATETRUSTEDDOMAIN (0x0c)
-
-#define DCERPC_LSA_ENUMTRUSTDOM (0x0d)
-
-#define DCERPC_LSA_LOOKUPNAMES (0x0e)
-
-#define DCERPC_LSA_LOOKUPSIDS (0x0f)
-
-#define DCERPC_LSA_CREATESECRET (0x10)
-
-#define DCERPC_LSA_OPENACCOUNT (0x11)
-
-#define DCERPC_LSA_ENUMPRIVSACCOUNT (0x12)
-
-#define DCERPC_LSA_ADDPRIVILEGESTOACCOUNT (0x13)
-
-#define DCERPC_LSA_REMOVEPRIVILEGESFROMACCOUNT (0x14)
-
-#define DCERPC_LSA_GETQUOTASFORACCOUNT (0x15)
-
-#define DCERPC_LSA_SETQUOTASFORACCOUNT (0x16)
-
-#define DCERPC_LSA_GETSYSTEMACCESSACCOUNT (0x17)
-
-#define DCERPC_LSA_SETSYSTEMACCESSACCOUNT (0x18)
-
-#define DCERPC_LSA_OPENTRUSTEDDOMAIN (0x19)
-
-#define DCERPC_LSA_QUERYTRUSTEDDOMAININFO (0x1a)
-
-#define DCERPC_LSA_SETINFORMATIONTRUSTEDDOMAIN (0x1b)
-
-#define DCERPC_LSA_OPENSECRET (0x1c)
-
-#define DCERPC_LSA_SETSECRET (0x1d)
-
-#define DCERPC_LSA_QUERYSECRET (0x1e)
-
-#define DCERPC_LSA_LOOKUPPRIVVALUE (0x1f)
-
-#define DCERPC_LSA_LOOKUPPRIVNAME (0x20)
-
-#define DCERPC_LSA_LOOKUPPRIVDISPLAYNAME (0x21)
-
-#define DCERPC_LSA_DELETEOBJECT (0x22)
-
-#define DCERPC_LSA_ENUMACCOUNTSWITHUSERRIGHT (0x23)
-
-#define DCERPC_LSA_ENUMACCOUNTRIGHTS (0x24)
-
-#define DCERPC_LSA_ADDACCOUNTRIGHTS (0x25)
-
-#define DCERPC_LSA_REMOVEACCOUNTRIGHTS (0x26)
-
-#define DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYSID (0x27)
-
-#define DCERPC_LSA_SETTRUSTEDDOMAININFO (0x28)
-
-#define DCERPC_LSA_DELETETRUSTEDDOMAIN (0x29)
-
-#define DCERPC_LSA_STOREPRIVATEDATA (0x2a)
-
-#define DCERPC_LSA_RETRIEVEPRIVATEDATA (0x2b)
-
-#define DCERPC_LSA_OPENPOLICY2 (0x2c)
-
-#define DCERPC_LSA_GETUSERNAME (0x2d)
-
-#define DCERPC_LSA_QUERYINFOPOLICY2 (0x2e)
-
-#define DCERPC_LSA_SETINFOPOLICY2 (0x2f)
-
-#define DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYNAME (0x30)
-
-#define DCERPC_LSA_SETTRUSTEDDOMAININFOBYNAME (0x31)
-
-#define DCERPC_LSA_ENUMTRUSTEDDOMAINSEX (0x32)
-
-#define DCERPC_LSA_CREATETRUSTEDDOMAINEX (0x33)
-
-#define DCERPC_LSA_CLOSETRUSTEDDOMAINEX (0x34)
-
-#define DCERPC_LSA_QUERYDOMAININFORMATIONPOLICY (0x35)
-
-#define DCERPC_LSA_SETDOMAININFORMATIONPOLICY (0x36)
-
-#define DCERPC_LSA_OPENTRUSTEDDOMAINBYNAME (0x37)
-
-#define DCERPC_LSA_TESTCALL (0x38)
-
-#define DCERPC_LSA_LOOKUPSIDS2 (0x39)
-
-#define DCERPC_LSA_LOOKUPNAMES2 (0x3a)
-
-#define DCERPC_LSA_CREATETRUSTEDDOMAINEX2 (0x3b)
-
-#define DCERPC_LSA_CREDRWRITE (0x3c)
-
-#define DCERPC_LSA_CREDRREAD (0x3d)
-
-#define DCERPC_LSA_CREDRENUMERATE (0x3e)
-
-#define DCERPC_LSA_CREDRWRITEDOMAINCREDENTIALS (0x3f)
-
-#define DCERPC_LSA_CREDRREADDOMAINCREDENTIALS (0x40)
-
-#define DCERPC_LSA_CREDRDELETE (0x41)
-
-#define DCERPC_LSA_CREDRGETTARGETINFO (0x42)
-
-#define DCERPC_LSA_CREDRPROFILELOADED (0x43)
-
-#define DCERPC_LSA_LOOKUPNAMES3 (0x44)
-
-#define DCERPC_LSA_CREDRGETSESSIONTYPES (0x45)
-
-#define DCERPC_LSA_LSARREGISTERAUDITEVENT (0x46)
-
-#define DCERPC_LSA_LSARGENAUDITEVENT (0x47)
-
-#define DCERPC_LSA_LSARUNREGISTERAUDITEVENT (0x48)
-
-#define DCERPC_LSA_LSARQUERYFORESTTRUSTINFORMATION (0x49)
-
-#define DCERPC_LSA_LSARSETFORESTTRUSTINFORMATION (0x4a)
-
-#define DCERPC_LSA_CREDRRENAME (0x4b)
-
-#define DCERPC_LSA_LOOKUPSIDS3 (0x4c)
-
-#define DCERPC_LSA_LOOKUPNAMES4 (0x4d)
-
-#define DCERPC_LSA_LSAROPENPOLICYSCE (0x4e)
-
-#define DCERPC_LSA_LSARADTREGISTERSECURITYEVENTSOURCE (0x4f)
-
-#define DCERPC_LSA_LSARADTUNREGISTERSECURITYEVENTSOURCE (0x50)
-
-#define DCERPC_LSA_LSARADTREPORTSECURITYEVENT (0x51)
-
-#define DCERPC_LSARPC_CALL_COUNT (82)
-NTSTATUS ndr_push_lsa_String(struct ndr_push *ndr, int ndr_flags, const struct lsa_String *r);
-NTSTATUS ndr_pull_lsa_String(struct ndr_pull *ndr, int ndr_flags, struct lsa_String *r);
-void ndr_print_lsa_String(struct ndr_print *ndr, const char *name, const struct lsa_String *r);
-NTSTATUS ndr_push_lsa_StringLarge(struct ndr_push *ndr, int ndr_flags, const struct lsa_StringLarge *r);
-NTSTATUS ndr_pull_lsa_StringLarge(struct ndr_pull *ndr, int ndr_flags, struct lsa_StringLarge *r);
-void ndr_print_lsa_StringLarge(struct ndr_print *ndr, const char *name, const struct lsa_StringLarge *r);
-NTSTATUS ndr_push_lsa_Strings(struct ndr_push *ndr, int ndr_flags, const struct lsa_Strings *r);
-NTSTATUS ndr_pull_lsa_Strings(struct ndr_pull *ndr, int ndr_flags, struct lsa_Strings *r);
-void ndr_print_lsa_Strings(struct ndr_print *ndr, const char *name, const struct lsa_Strings *r);
-NTSTATUS ndr_push_lsa_AsciiString(struct ndr_push *ndr, int ndr_flags, const struct lsa_AsciiString *r);
-NTSTATUS ndr_pull_lsa_AsciiString(struct ndr_pull *ndr, int ndr_flags, struct lsa_AsciiString *r);
-void ndr_print_lsa_AsciiString(struct ndr_print *ndr, const char *name, const struct lsa_AsciiString *r);
-void ndr_print_lsa_LUID(struct ndr_print *ndr, const char *name, const struct lsa_LUID *r);
-void ndr_print_lsa_PrivEntry(struct ndr_print *ndr, const char *name, const struct lsa_PrivEntry *r);
-void ndr_print_lsa_PrivArray(struct ndr_print *ndr, const char *name, const struct lsa_PrivArray *r);
-void ndr_print_lsa_QosInfo(struct ndr_print *ndr, const char *name, const struct lsa_QosInfo *r);
-void ndr_print_lsa_ObjectAttribute(struct ndr_print *ndr, const char *name, const struct lsa_ObjectAttribute *r);
-void ndr_print_lsa_AuditLogInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditLogInfo *r);
-void ndr_print_lsa_AuditEventsInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditEventsInfo *r);
-void ndr_print_lsa_DomainInfo(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfo *r);
-void ndr_print_lsa_PDAccountInfo(struct ndr_print *ndr, const char *name, const struct lsa_PDAccountInfo *r);
-void ndr_print_lsa_ServerRole(struct ndr_print *ndr, const char *name, const struct lsa_ServerRole *r);
-void ndr_print_lsa_ReplicaSourceInfo(struct ndr_print *ndr, const char *name, const struct lsa_ReplicaSourceInfo *r);
-void ndr_print_lsa_DefaultQuotaInfo(struct ndr_print *ndr, const char *name, const struct lsa_DefaultQuotaInfo *r);
-void ndr_print_lsa_ModificationInfo(struct ndr_print *ndr, const char *name, const struct lsa_ModificationInfo *r);
-void ndr_print_lsa_AuditFullSetInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditFullSetInfo *r);
-void ndr_print_lsa_AuditFullQueryInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditFullQueryInfo *r);
-void ndr_print_lsa_DnsDomainInfo(struct ndr_print *ndr, const char *name, const struct lsa_DnsDomainInfo *r);
-void ndr_print_lsa_PolicyInformation(struct ndr_print *ndr, const char *name, const union lsa_PolicyInformation *r);
-void ndr_print_lsa_SidPtr(struct ndr_print *ndr, const char *name, const struct lsa_SidPtr *r);
-NTSTATUS ndr_push_lsa_SidArray(struct ndr_push *ndr, int ndr_flags, const struct lsa_SidArray *r);
-NTSTATUS ndr_pull_lsa_SidArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_SidArray *r);
-void ndr_print_lsa_SidArray(struct ndr_print *ndr, const char *name, const struct lsa_SidArray *r);
-void ndr_print_lsa_DomainList(struct ndr_print *ndr, const char *name, const struct lsa_DomainList *r);
-void ndr_print_lsa_SidType(struct ndr_print *ndr, const char *name, enum lsa_SidType r);
-void ndr_print_lsa_TranslatedSid(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid *r);
-void ndr_print_lsa_TransSidArray(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray *r);
-void ndr_print_lsa_RefDomainList(struct ndr_print *ndr, const char *name, const struct lsa_RefDomainList *r);
-void ndr_print_lsa_TranslatedName(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedName *r);
-void ndr_print_lsa_TransNameArray(struct ndr_print *ndr, const char *name, const struct lsa_TransNameArray *r);
-void ndr_print_lsa_LUIDAttribute(struct ndr_print *ndr, const char *name, const struct lsa_LUIDAttribute *r);
-void ndr_print_lsa_PrivilegeSet(struct ndr_print *ndr, const char *name, const struct lsa_PrivilegeSet *r);
-void ndr_print_lsa_DATA_BUF(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF *r);
-void ndr_print_lsa_DATA_BUF2(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF2 *r);
-void ndr_print_lsa_TrustDomInfoEnum(struct ndr_print *ndr, const char *name, enum lsa_TrustDomInfoEnum r);
-void ndr_print_lsa_TrustDomainInfoName(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoName *r);
-void ndr_print_lsa_TrustDomainInfoPosixOffset(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoPosixOffset *r);
-void ndr_print_lsa_TrustDomainInfoPassword(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoPassword *r);
-void ndr_print_lsa_TrustDomainInfoBasic(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoBasic *r);
-void ndr_print_lsa_TrustDomainInfoInfoEx(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoInfoEx *r);
-void ndr_print_lsa_TrustDomainInfoBuffer(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoBuffer *r);
-void ndr_print_lsa_TrustDomainInfoAuthInfo(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoAuthInfo *r);
-void ndr_print_lsa_TrustDomainInfoFullInfo(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoFullInfo *r);
-void ndr_print_lsa_TrustDomainInfo11(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfo11 *r);
-void ndr_print_lsa_TrustDomainInfoInfoAll(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoInfoAll *r);
-void ndr_print_lsa_TrustedDomainInfo(struct ndr_print *ndr, const char *name, const union lsa_TrustedDomainInfo *r);
-void ndr_print_lsa_DATA_BUF_PTR(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF_PTR *r);
-void ndr_print_lsa_RightSet(struct ndr_print *ndr, const char *name, const struct lsa_RightSet *r);
-void ndr_print_lsa_StringPointer(struct ndr_print *ndr, const char *name, const struct lsa_StringPointer *r);
-void ndr_print_lsa_DomainListEx(struct ndr_print *ndr, const char *name, const struct lsa_DomainListEx *r);
-void ndr_print_lsa_DomainInfoKerberos(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfoKerberos *r);
-void ndr_print_lsa_DomainInfoEfs(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfoEfs *r);
-void ndr_print_lsa_DomainInformationPolicy(struct ndr_print *ndr, const char *name, const union lsa_DomainInformationPolicy *r);
-void ndr_print_lsa_TranslatedName2(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedName2 *r);
-void ndr_print_lsa_TransNameArray2(struct ndr_print *ndr, const char *name, const struct lsa_TransNameArray2 *r);
-void ndr_print_lsa_TranslatedSid2(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid2 *r);
-void ndr_print_lsa_TransSidArray2(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray2 *r);
-void ndr_print_lsa_TranslatedSid3(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid3 *r);
-void ndr_print_lsa_TransSidArray3(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray3 *r);
-void ndr_print_lsa_Close(struct ndr_print *ndr, const char *name, int flags, const struct lsa_Close *r);
-void ndr_print_lsa_Delete(struct ndr_print *ndr, const char *name, int flags, const struct lsa_Delete *r);
-void ndr_print_lsa_EnumPrivs(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumPrivs *r);
-void ndr_print_lsa_QuerySecurity(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QuerySecurity *r);
-void ndr_print_lsa_SetSecObj(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSecObj *r);
-void ndr_print_lsa_ChangePassword(struct ndr_print *ndr, const char *name, int flags, const struct lsa_ChangePassword *r);
-void ndr_print_lsa_OpenPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenPolicy *r);
-void ndr_print_lsa_QueryInfoPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryInfoPolicy *r);
-void ndr_print_lsa_SetInfoPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInfoPolicy *r);
-void ndr_print_lsa_ClearAuditLog(struct ndr_print *ndr, const char *name, int flags, const struct lsa_ClearAuditLog *r);
-void ndr_print_lsa_CreateAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateAccount *r);
-void ndr_print_lsa_EnumAccounts(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccounts *r);
-void ndr_print_lsa_CreateTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomain *r);
-void ndr_print_lsa_EnumTrustDom(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumTrustDom *r);
-void ndr_print_lsa_LookupNames(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames *r);
-void ndr_print_lsa_LookupSids(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids *r);
-void ndr_print_lsa_CreateSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateSecret *r);
-void ndr_print_lsa_OpenAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenAccount *r);
-void ndr_print_lsa_EnumPrivsAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumPrivsAccount *r);
-void ndr_print_lsa_AddPrivilegesToAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_AddPrivilegesToAccount *r);
-void ndr_print_lsa_RemovePrivilegesFromAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RemovePrivilegesFromAccount *r);
-void ndr_print_lsa_GetQuotasForAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetQuotasForAccount *r);
-void ndr_print_lsa_SetQuotasForAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetQuotasForAccount *r);
-void ndr_print_lsa_GetSystemAccessAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetSystemAccessAccount *r);
-void ndr_print_lsa_SetSystemAccessAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSystemAccessAccount *r);
-void ndr_print_lsa_OpenTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenTrustedDomain *r);
-void ndr_print_lsa_QueryTrustedDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfo *r);
-void ndr_print_lsa_SetInformationTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInformationTrustedDomain *r);
-void ndr_print_lsa_OpenSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenSecret *r);
-void ndr_print_lsa_SetSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSecret *r);
-void ndr_print_lsa_QuerySecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QuerySecret *r);
-void ndr_print_lsa_LookupPrivValue(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivValue *r);
-void ndr_print_lsa_LookupPrivName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivName *r);
-void ndr_print_lsa_LookupPrivDisplayName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivDisplayName *r);
-void ndr_print_lsa_DeleteObject(struct ndr_print *ndr, const char *name, int flags, const struct lsa_DeleteObject *r);
-void ndr_print_lsa_EnumAccountsWithUserRight(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccountsWithUserRight *r);
-void ndr_print_lsa_EnumAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccountRights *r);
-void ndr_print_lsa_AddAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_AddAccountRights *r);
-void ndr_print_lsa_RemoveAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RemoveAccountRights *r);
-void ndr_print_lsa_QueryTrustedDomainInfoBySid(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfoBySid *r);
-void ndr_print_lsa_SetTrustedDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetTrustedDomainInfo *r);
-void ndr_print_lsa_DeleteTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_DeleteTrustedDomain *r);
-void ndr_print_lsa_StorePrivateData(struct ndr_print *ndr, const char *name, int flags, const struct lsa_StorePrivateData *r);
-void ndr_print_lsa_RetrievePrivateData(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RetrievePrivateData *r);
-void ndr_print_lsa_OpenPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenPolicy2 *r);
-void ndr_print_lsa_GetUserName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetUserName *r);
-void ndr_print_lsa_QueryInfoPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryInfoPolicy2 *r);
-void ndr_print_lsa_SetInfoPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInfoPolicy2 *r);
-void ndr_print_lsa_QueryTrustedDomainInfoByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfoByName *r);
-void ndr_print_lsa_SetTrustedDomainInfoByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetTrustedDomainInfoByName *r);
-void ndr_print_lsa_EnumTrustedDomainsEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumTrustedDomainsEx *r);
-void ndr_print_lsa_CreateTrustedDomainEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomainEx *r);
-void ndr_print_lsa_CloseTrustedDomainEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CloseTrustedDomainEx *r);
-void ndr_print_lsa_QueryDomainInformationPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryDomainInformationPolicy *r);
-void ndr_print_lsa_SetDomainInformationPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetDomainInformationPolicy *r);
-void ndr_print_lsa_OpenTrustedDomainByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenTrustedDomainByName *r);
-void ndr_print_lsa_TestCall(struct ndr_print *ndr, const char *name, int flags, const struct lsa_TestCall *r);
-void ndr_print_lsa_LookupSids2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids2 *r);
-void ndr_print_lsa_LookupNames2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames2 *r);
-void ndr_print_lsa_CreateTrustedDomainEx2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomainEx2 *r);
-void ndr_print_lsa_CREDRWRITE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRWRITE *r);
-void ndr_print_lsa_CREDRREAD(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRREAD *r);
-void ndr_print_lsa_CREDRENUMERATE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRENUMERATE *r);
-void ndr_print_lsa_CREDRWRITEDOMAINCREDENTIALS(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRWRITEDOMAINCREDENTIALS *r);
-void ndr_print_lsa_CREDRREADDOMAINCREDENTIALS(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRREADDOMAINCREDENTIALS *r);
-void ndr_print_lsa_CREDRDELETE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRDELETE *r);
-void ndr_print_lsa_CREDRGETTARGETINFO(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRGETTARGETINFO *r);
-void ndr_print_lsa_CREDRPROFILELOADED(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRPROFILELOADED *r);
-void ndr_print_lsa_LookupNames3(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames3 *r);
-void ndr_print_lsa_CREDRGETSESSIONTYPES(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRGETSESSIONTYPES *r);
-void ndr_print_lsa_LSARREGISTERAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARREGISTERAUDITEVENT *r);
-void ndr_print_lsa_LSARGENAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARGENAUDITEVENT *r);
-void ndr_print_lsa_LSARUNREGISTERAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARUNREGISTERAUDITEVENT *r);
-void ndr_print_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARQUERYFORESTTRUSTINFORMATION *r);
-void ndr_print_lsa_LSARSETFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARSETFORESTTRUSTINFORMATION *r);
-void ndr_print_lsa_CREDRRENAME(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRRENAME *r);
-void ndr_print_lsa_LookupSids3(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids3 *r);
-void ndr_print_lsa_LookupNames4(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames4 *r);
-void ndr_print_lsa_LSAROPENPOLICYSCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSAROPENPOLICYSCE *r);
-void ndr_print_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r);
-void ndr_print_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r);
-void ndr_print_lsa_LSARADTREPORTSECURITYEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTREPORTSECURITYEVENT *r);
-#endif /* _HEADER_NDR_lsarpc */
diff --git a/source/librpc/gen_ndr/ndr_messaging.c b/source/librpc/gen_ndr/ndr_messaging.c
deleted file mode 100644
index 21aec98a989..00000000000
--- a/source/librpc/gen_ndr/ndr_messaging.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_messaging.h"
-
-_PUBLIC_ NTSTATUS ndr_push_messaging_rec(struct ndr_push *ndr, int ndr_flags, const struct messaging_rec *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->msg_version));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->msg_type));
- NDR_CHECK(ndr_push_server_id(ndr, NDR_SCALARS, &r->dest));
- NDR_CHECK(ndr_push_server_id(ndr, NDR_SCALARS, &r->src));
- NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->buf));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_server_id(ndr, NDR_BUFFERS, &r->dest));
- NDR_CHECK(ndr_push_server_id(ndr, NDR_BUFFERS, &r->src));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_messaging_rec(struct ndr_pull *ndr, int ndr_flags, struct messaging_rec *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->msg_version));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->msg_type));
- NDR_CHECK(ndr_pull_server_id(ndr, NDR_SCALARS, &r->dest));
- NDR_CHECK(ndr_pull_server_id(ndr, NDR_SCALARS, &r->src));
- NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->buf));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_server_id(ndr, NDR_BUFFERS, &r->dest));
- NDR_CHECK(ndr_pull_server_id(ndr, NDR_BUFFERS, &r->src));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_messaging_rec(struct ndr_print *ndr, const char *name, const struct messaging_rec *r)
-{
- ndr_print_struct(ndr, name, "messaging_rec");
- ndr->depth++;
- ndr_print_uint32(ndr, "msg_version", r->msg_version);
- ndr_print_uint32(ndr, "msg_type", r->msg_type);
- ndr_print_server_id(ndr, "dest", &r->dest);
- ndr_print_server_id(ndr, "src", &r->src);
- ndr_print_DATA_BLOB(ndr, "buf", r->buf);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_messaging_array(struct ndr_push *ndr, int ndr_flags, const struct messaging_array *r)
-{
- uint32_t cntr_messages_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_messages));
- for (cntr_messages_0 = 0; cntr_messages_0 < r->num_messages; cntr_messages_0++) {
- NDR_CHECK(ndr_push_messaging_rec(ndr, NDR_SCALARS, &r->messages[cntr_messages_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- for (cntr_messages_0 = 0; cntr_messages_0 < r->num_messages; cntr_messages_0++) {
- NDR_CHECK(ndr_push_messaging_rec(ndr, NDR_BUFFERS, &r->messages[cntr_messages_0]));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_messaging_array(struct ndr_pull *ndr, int ndr_flags, struct messaging_array *r)
-{
- uint32_t cntr_messages_0;
- TALLOC_CTX *_mem_save_messages_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_messages));
- NDR_PULL_ALLOC_N(ndr, r->messages, r->num_messages);
- _mem_save_messages_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->messages, 0);
- for (cntr_messages_0 = 0; cntr_messages_0 < r->num_messages; cntr_messages_0++) {
- NDR_CHECK(ndr_pull_messaging_rec(ndr, NDR_SCALARS, &r->messages[cntr_messages_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_messages_0, 0);
- }
- if (ndr_flags & NDR_BUFFERS) {
- _mem_save_messages_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->messages, 0);
- for (cntr_messages_0 = 0; cntr_messages_0 < r->num_messages; cntr_messages_0++) {
- NDR_CHECK(ndr_pull_messaging_rec(ndr, NDR_BUFFERS, &r->messages[cntr_messages_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_messages_0, 0);
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_messaging_array(struct ndr_print *ndr, const char *name, const struct messaging_array *r)
-{
- uint32_t cntr_messages_0;
- ndr_print_struct(ndr, name, "messaging_array");
- ndr->depth++;
- ndr_print_uint32(ndr, "num_messages", r->num_messages);
- ndr->print(ndr, "%s: ARRAY(%d)", "messages", r->num_messages);
- ndr->depth++;
- for (cntr_messages_0=0;cntr_messages_0<r->num_messages;cntr_messages_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_messages_0);
- if (idx_0) {
- ndr_print_messaging_rec(ndr, "messages", &r->messages[cntr_messages_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
diff --git a/source/librpc/gen_ndr/ndr_messaging.h b/source/librpc/gen_ndr/ndr_messaging.h
deleted file mode 100644
index c1093c76fe1..00000000000
--- a/source/librpc/gen_ndr/ndr_messaging.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/messaging.h"
-
-#ifndef _HEADER_NDR_messaging
-#define _HEADER_NDR_messaging
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_MESSAGING_CALL_COUNT (0)
-NTSTATUS ndr_push_messaging_rec(struct ndr_push *ndr, int ndr_flags, const struct messaging_rec *r);
-NTSTATUS ndr_pull_messaging_rec(struct ndr_pull *ndr, int ndr_flags, struct messaging_rec *r);
-void ndr_print_messaging_rec(struct ndr_print *ndr, const char *name, const struct messaging_rec *r);
-NTSTATUS ndr_push_messaging_array(struct ndr_push *ndr, int ndr_flags, const struct messaging_array *r);
-NTSTATUS ndr_pull_messaging_array(struct ndr_pull *ndr, int ndr_flags, struct messaging_array *r);
-void ndr_print_messaging_array(struct ndr_print *ndr, const char *name, const struct messaging_array *r);
-#endif /* _HEADER_NDR_messaging */
diff --git a/source/librpc/gen_ndr/ndr_misc.h b/source/librpc/gen_ndr/ndr_misc.h
deleted file mode 100644
index d43a7d8b4a7..00000000000
--- a/source/librpc/gen_ndr/ndr_misc.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "ndr/ndr_misc.h"
diff --git a/source/librpc/gen_ndr/ndr_netlogon.c b/source/librpc/gen_ndr/ndr_netlogon.c
deleted file mode 100644
index 0e0fa196e81..00000000000
--- a/source/librpc/gen_ndr/ndr_netlogon.c
+++ /dev/null
@@ -1,13129 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_netlogon.h"
-
-#include "librpc/gen_ndr/ndr_lsa.h"
-#include "librpc/gen_ndr/ndr_samr.h"
-#include "librpc/gen_ndr/ndr_security.h"
-NTSTATUS ndr_push_netr_UasInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_UasInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->account_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priv));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bad_pw_count));
- NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->last_logon));
- NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->last_logoff));
- NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->logoff_time));
- NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->kickoff_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->password_age));
- NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->pw_can_change));
- NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->pw_must_change));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->computer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->script_path));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->account_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->account_name, ndr_charset_length(r->account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->computer) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->computer, ndr_charset_length(r->computer, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->script_path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->script_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->script_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->script_path, ndr_charset_length(r->script_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_UasInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_UasInfo *r)
-{
- uint32_t _ptr_account_name;
- TALLOC_CTX *_mem_save_account_name_0;
- uint32_t _ptr_computer;
- TALLOC_CTX *_mem_save_computer_0;
- uint32_t _ptr_domain;
- TALLOC_CTX *_mem_save_domain_0;
- uint32_t _ptr_script_path;
- TALLOC_CTX *_mem_save_script_path_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
- if (_ptr_account_name) {
- NDR_PULL_ALLOC(ndr, r->account_name);
- } else {
- r->account_name = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priv));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auth_flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_count));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bad_pw_count));
- NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->last_logon));
- NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->last_logoff));
- NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->logoff_time));
- NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->kickoff_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->password_age));
- NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->pw_can_change));
- NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->pw_must_change));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer));
- if (_ptr_computer) {
- NDR_PULL_ALLOC(ndr, r->computer);
- } else {
- r->computer = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_script_path));
- if (_ptr_script_path) {
- NDR_PULL_ALLOC(ndr, r->script_path);
- } else {
- r->script_path = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->account_name) {
- _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->account_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->account_name));
- if (ndr_get_array_length(ndr, &r->account_name) > ndr_get_array_size(ndr, &r->account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->account_name), ndr_get_array_length(ndr, &r->account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
- }
- if (r->computer) {
- _mem_save_computer_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->computer, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->computer));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->computer));
- if (ndr_get_array_length(ndr, &r->computer) > ndr_get_array_size(ndr, &r->computer)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->computer), ndr_get_array_length(ndr, &r->computer));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->computer), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->computer, ndr_get_array_length(ndr, &r->computer), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_0, 0);
- }
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- if (r->script_path) {
- _mem_save_script_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->script_path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->script_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->script_path));
- if (ndr_get_array_length(ndr, &r->script_path) > ndr_get_array_size(ndr, &r->script_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->script_path), ndr_get_array_length(ndr, &r->script_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->script_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->script_path, ndr_get_array_length(ndr, &r->script_path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_script_path_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_UasInfo(struct ndr_print *ndr, const char *name, const struct netr_UasInfo *r)
-{
- ndr_print_struct(ndr, name, "netr_UasInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "account_name", r->account_name);
- ndr->depth++;
- if (r->account_name) {
- ndr_print_string(ndr, "account_name", r->account_name);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "priv", r->priv);
- ndr_print_uint32(ndr, "auth_flags", r->auth_flags);
- ndr_print_uint32(ndr, "logon_count", r->logon_count);
- ndr_print_uint32(ndr, "bad_pw_count", r->bad_pw_count);
- ndr_print_time_t(ndr, "last_logon", r->last_logon);
- ndr_print_time_t(ndr, "last_logoff", r->last_logoff);
- ndr_print_time_t(ndr, "logoff_time", r->logoff_time);
- ndr_print_time_t(ndr, "kickoff_time", r->kickoff_time);
- ndr_print_uint32(ndr, "password_age", r->password_age);
- ndr_print_time_t(ndr, "pw_can_change", r->pw_can_change);
- ndr_print_time_t(ndr, "pw_must_change", r->pw_must_change);
- ndr_print_ptr(ndr, "computer", r->computer);
- ndr->depth++;
- if (r->computer) {
- ndr_print_string(ndr, "computer", r->computer);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "script_path", r->script_path);
- ndr->depth++;
- if (r->script_path) {
- ndr_print_string(ndr, "script_path", r->script_path);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_UasLogoffInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_UasLogoffInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->duration));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_UasLogoffInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_UasLogoffInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->duration));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_UasLogoffInfo(struct ndr_print *ndr, const char *name, const struct netr_UasLogoffInfo *r)
-{
- ndr_print_struct(ndr, name, "netr_UasLogoffInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "duration", r->duration);
- ndr_print_uint16(ndr, "logon_count", r->logon_count);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_AcctLockStr(struct ndr_push *ndr, int ndr_flags, const struct netr_AcctLockStr *r)
-{
- uint32_t cntr_bindata_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->bindata));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->bindata) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length / 2));
- for (cntr_bindata_1 = 0; cntr_bindata_1 < r->length / 2; cntr_bindata_1++) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bindata[cntr_bindata_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_AcctLockStr(struct ndr_pull *ndr, int ndr_flags, struct netr_AcctLockStr *r)
-{
- uint32_t _ptr_bindata;
- uint32_t cntr_bindata_1;
- TALLOC_CTX *_mem_save_bindata_0;
- TALLOC_CTX *_mem_save_bindata_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_bindata));
- if (_ptr_bindata) {
- NDR_PULL_ALLOC(ndr, r->bindata);
- } else {
- r->bindata = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->bindata) {
- _mem_save_bindata_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->bindata, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->bindata));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->bindata));
- if (ndr_get_array_length(ndr, &r->bindata) > ndr_get_array_size(ndr, &r->bindata)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->bindata), ndr_get_array_length(ndr, &r->bindata));
- }
- NDR_PULL_ALLOC_N(ndr, r->bindata, ndr_get_array_size(ndr, &r->bindata));
- _mem_save_bindata_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->bindata, 0);
- for (cntr_bindata_1 = 0; cntr_bindata_1 < r->length / 2; cntr_bindata_1++) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bindata[cntr_bindata_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bindata_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bindata_0, 0);
- }
- if (r->bindata) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->bindata, r->size / 2));
- }
- if (r->bindata) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->bindata, r->length / 2));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_AcctLockStr(struct ndr_print *ndr, const char *name, const struct netr_AcctLockStr *r)
-{
- uint32_t cntr_bindata_1;
- ndr_print_struct(ndr, name, "netr_AcctLockStr");
- ndr->depth++;
- ndr_print_uint16(ndr, "size", r->size);
- ndr_print_uint16(ndr, "length", r->length);
- ndr_print_ptr(ndr, "bindata", r->bindata);
- ndr->depth++;
- if (r->bindata) {
- ndr->print(ndr, "%s: ARRAY(%d)", "bindata", r->length / 2);
- ndr->depth++;
- for (cntr_bindata_1=0;cntr_bindata_1<r->length / 2;cntr_bindata_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_bindata_1);
- if (idx_1) {
- ndr_print_uint16(ndr, "bindata", r->bindata[cntr_bindata_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_IdentityInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_IdentityInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->parameter_control));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_id_low));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_id_high));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->workstation));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->workstation));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_IdentityInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_IdentityInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->parameter_control));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_id_low));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_id_high));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->workstation));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->workstation));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_IdentityInfo(struct ndr_print *ndr, const char *name, const struct netr_IdentityInfo *r)
-{
- ndr_print_struct(ndr, name, "netr_IdentityInfo");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
- ndr_print_uint32(ndr, "parameter_control", r->parameter_control);
- ndr_print_uint32(ndr, "logon_id_low", r->logon_id_low);
- ndr_print_uint32(ndr, "logon_id_high", r->logon_id_high);
- ndr_print_lsa_String(ndr, "account_name", &r->account_name);
- ndr_print_lsa_String(ndr, "workstation", &r->workstation);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_PasswordInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_PasswordInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_PasswordInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_PasswordInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_PasswordInfo(struct ndr_print *ndr, const char *name, const struct netr_PasswordInfo *r)
-{
- ndr_print_struct(ndr, name, "netr_PasswordInfo");
- ndr->depth++;
- ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
- ndr_print_samr_Password(ndr, "lmpassword", &r->lmpassword);
- ndr_print_samr_Password(ndr, "ntpassword", &r->ntpassword);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_ChallengeResponse(struct ndr_push *ndr, int ndr_flags, const struct netr_ChallengeResponse *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_ChallengeResponse(struct ndr_pull *ndr, int ndr_flags, struct netr_ChallengeResponse *r)
-{
- uint32_t _ptr_data;
- TALLOC_CTX *_mem_save_data_0;
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->data);
- } else {
- r->data = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
- if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
- }
- NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_length(ndr, &r->data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length));
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_ChallengeResponse(struct ndr_print *ndr, const char *name, const struct netr_ChallengeResponse *r)
-{
- ndr_print_struct(ndr, name, "netr_ChallengeResponse");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_uint16(ndr, "length", r->length);
- ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
- ndr_print_ptr(ndr, "data", r->data);
- ndr->depth++;
- if (r->data) {
- ndr_print_array_uint8(ndr, "data", r->data, r->length);
- }
- ndr->depth--;
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-NTSTATUS ndr_push_netr_NetworkInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_NetworkInfo *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->challenge, 8));
- NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->nt));
- NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->lm));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
- NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->nt));
- NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->lm));
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NetworkInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_NetworkInfo *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->challenge, 8));
- NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->nt));
- NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->lm));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
- NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->nt));
- NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->lm));
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name, const struct netr_NetworkInfo *r)
-{
- ndr_print_struct(ndr, name, "netr_NetworkInfo");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
- ndr_print_array_uint8(ndr, "challenge", r->challenge, 8);
- ndr_print_netr_ChallengeResponse(ndr, "nt", &r->nt);
- ndr_print_netr_ChallengeResponse(ndr, "lm", &r->lm);
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, const union netr_LogonLevel *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
- switch (level) {
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
- break;
-
- case 5:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
- break;
-
- case 6:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 1:
- if (r->password) {
- NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- }
- break;
-
- case 2:
- if (r->network) {
- NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
- }
- break;
-
- case 3:
- if (r->password) {
- NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- }
- break;
-
- case 5:
- if (r->password) {
- NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- }
- break;
-
- case 6:
- if (r->network) {
- NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, union netr_LogonLevel *r)
-{
- int level;
- uint16_t _level;
- TALLOC_CTX *_mem_save_password_0;
- TALLOC_CTX *_mem_save_network_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 1: {
- uint32_t _ptr_password;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->password);
- } else {
- r->password = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_network;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
- if (_ptr_network) {
- NDR_PULL_ALLOC(ndr, r->network);
- } else {
- r->network = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_password;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->password);
- } else {
- r->password = NULL;
- }
- break; }
-
- case 5: {
- uint32_t _ptr_password;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->password);
- } else {
- r->password = NULL;
- }
- break; }
-
- case 6: {
- uint32_t _ptr_network;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
- if (_ptr_network) {
- NDR_PULL_ALLOC(ndr, r->network);
- } else {
- r->network = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 1:
- if (r->password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
- NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- break;
-
- case 2:
- if (r->network) {
- _mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
- NDR_CHECK(ndr_pull_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_network_0, 0);
- }
- break;
-
- case 3:
- if (r->password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
- NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- break;
-
- case 5:
- if (r->password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
- NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- break;
-
- case 6:
- if (r->network) {
- _mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
- NDR_CHECK(ndr_pull_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_network_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, const union netr_LogonLevel *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_LogonLevel");
- switch (level) {
- case 1:
- ndr_print_ptr(ndr, "password", r->password);
- ndr->depth++;
- if (r->password) {
- ndr_print_netr_PasswordInfo(ndr, "password", r->password);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "network", r->network);
- ndr->depth++;
- if (r->network) {
- ndr_print_netr_NetworkInfo(ndr, "network", r->network);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "password", r->password);
- ndr->depth++;
- if (r->password) {
- ndr_print_netr_PasswordInfo(ndr, "password", r->password);
- }
- ndr->depth--;
- break;
-
- case 5:
- ndr_print_ptr(ndr, "password", r->password);
- ndr->depth++;
- if (r->password) {
- ndr_print_netr_PasswordInfo(ndr, "password", r->password);
- }
- ndr->depth--;
- break;
-
- case 6:
- ndr_print_ptr(ndr, "network", r->network);
- ndr->depth++;
- if (r->network) {
- ndr_print_netr_NetworkInfo(ndr, "network", r->network);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_GroupMembership(struct ndr_push *ndr, int ndr_flags, const struct netr_GroupMembership *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attributes));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_GroupMembership(struct ndr_pull *ndr, int ndr_flags, struct netr_GroupMembership *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attributes));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_GroupMembership(struct ndr_print *ndr, const char *name, const struct netr_GroupMembership *r)
-{
- ndr_print_struct(ndr, name, "netr_GroupMembership");
- ndr->depth++;
- ndr_print_uint32(ndr, "rid", r->rid);
- ndr_print_uint32(ndr, "attributes", r->attributes);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_UserSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_UserSessionKey *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->key, 16));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_UserSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_UserSessionKey *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->key, 16));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_UserSessionKey(struct ndr_print *ndr, const char *name, const struct netr_UserSessionKey *r)
-{
- ndr_print_struct(ndr, name, "netr_UserSessionKey");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_array_uint8(ndr, "key", r->key, 16);
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_LMSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_LMSessionKey *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->key, 8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_LMSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_LMSessionKey *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->key, 8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LMSessionKey(struct ndr_print *ndr, const char *name, const struct netr_LMSessionKey *r)
-{
- ndr_print_struct(ndr, name, "netr_LMSessionKey");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_array_uint8(ndr, "key", r->key, 8);
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_UserFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_UserFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_UserFlags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_GUEST", NETLOGON_GUEST, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NOENCRYPTION", NETLOGON_NOENCRYPTION, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_CACHED_ACCOUNT", NETLOGON_CACHED_ACCOUNT, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_USED_LM_PASSWORD", NETLOGON_USED_LM_PASSWORD, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_EXTRA_SIDS", NETLOGON_EXTRA_SIDS, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_SUBAUTH_SESSION_KEY", NETLOGON_SUBAUTH_SESSION_KEY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_SERVER_TRUST_ACCOUNT", NETLOGON_SERVER_TRUST_ACCOUNT, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NTLMV2_ENABLED", NETLOGON_NTLMV2_ENABLED, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_RESOURCE_GROUPS", NETLOGON_RESOURCE_GROUPS, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_PROFILE_PATH_RETURNED", NETLOGON_PROFILE_PATH_RETURNED, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_SamBaseInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_SamBaseInfo *r)
-{
- uint32_t cntr_unknown_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logon));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logoff));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->acct_expiry));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_password_change));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->allow_password_change));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->force_password_change));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->full_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bad_password_count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->primary_gid));
- NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->groups));
- NDR_CHECK(ndr_push_netr_UserFlags(ndr, NDR_SCALARS, r->user_flags));
- NDR_CHECK(ndr_push_netr_UserSessionKey(ndr, NDR_SCALARS, &r->key));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->logon_server));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_sid));
- NDR_CHECK(ndr_push_netr_LMSessionKey(ndr, NDR_SCALARS, &r->LMSessKey));
- NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->acct_flags));
- for (cntr_unknown_0 = 0; cntr_unknown_0 < 7; cntr_unknown_0++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
- NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->groups));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->logon_server));
- NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain));
- if (r->domain_sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_SamBaseInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_SamBaseInfo *r)
-{
- uint32_t _ptr_domain_sid;
- TALLOC_CTX *_mem_save_domain_sid_0;
- uint32_t cntr_unknown_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logon));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logoff));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->acct_expiry));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_password_change));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->allow_password_change));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->force_password_change));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->full_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bad_password_count));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->primary_gid));
- NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->groups));
- NDR_CHECK(ndr_pull_netr_UserFlags(ndr, NDR_SCALARS, &r->user_flags));
- NDR_CHECK(ndr_pull_netr_UserSessionKey(ndr, NDR_SCALARS, &r->key));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->logon_server));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_sid));
- if (_ptr_domain_sid) {
- NDR_PULL_ALLOC(ndr, r->domain_sid);
- } else {
- r->domain_sid = NULL;
- }
- NDR_CHECK(ndr_pull_netr_LMSessionKey(ndr, NDR_SCALARS, &r->LMSessKey));
- NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->acct_flags));
- for (cntr_unknown_0 = 0; cntr_unknown_0 < 7; cntr_unknown_0++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
- NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->groups));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->logon_server));
- NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain));
- if (r->domain_sid) {
- _mem_save_domain_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain_sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_SamBaseInfo(struct ndr_print *ndr, const char *name, const struct netr_SamBaseInfo *r)
-{
- uint32_t cntr_unknown_0;
- ndr_print_struct(ndr, name, "netr_SamBaseInfo");
- ndr->depth++;
- ndr_print_NTTIME(ndr, "last_logon", r->last_logon);
- ndr_print_NTTIME(ndr, "last_logoff", r->last_logoff);
- ndr_print_NTTIME(ndr, "acct_expiry", r->acct_expiry);
- ndr_print_NTTIME(ndr, "last_password_change", r->last_password_change);
- ndr_print_NTTIME(ndr, "allow_password_change", r->allow_password_change);
- ndr_print_NTTIME(ndr, "force_password_change", r->force_password_change);
- ndr_print_lsa_String(ndr, "account_name", &r->account_name);
- ndr_print_lsa_String(ndr, "full_name", &r->full_name);
- ndr_print_lsa_String(ndr, "logon_script", &r->logon_script);
- ndr_print_lsa_String(ndr, "profile_path", &r->profile_path);
- ndr_print_lsa_String(ndr, "home_directory", &r->home_directory);
- ndr_print_lsa_String(ndr, "home_drive", &r->home_drive);
- ndr_print_uint16(ndr, "logon_count", r->logon_count);
- ndr_print_uint16(ndr, "bad_password_count", r->bad_password_count);
- ndr_print_uint32(ndr, "rid", r->rid);
- ndr_print_uint32(ndr, "primary_gid", r->primary_gid);
- ndr_print_samr_RidWithAttributeArray(ndr, "groups", &r->groups);
- ndr_print_netr_UserFlags(ndr, "user_flags", r->user_flags);
- ndr_print_netr_UserSessionKey(ndr, "key", &r->key);
- ndr_print_lsa_StringLarge(ndr, "logon_server", &r->logon_server);
- ndr_print_lsa_StringLarge(ndr, "domain", &r->domain);
- ndr_print_ptr(ndr, "domain_sid", r->domain_sid);
- ndr->depth++;
- if (r->domain_sid) {
- ndr_print_dom_sid2(ndr, "domain_sid", r->domain_sid);
- }
- ndr->depth--;
- ndr_print_netr_LMSessionKey(ndr, "LMSessKey", &r->LMSessKey);
- ndr_print_samr_AcctFlags(ndr, "acct_flags", r->acct_flags);
- ndr->print(ndr, "%s: ARRAY(%d)", "unknown", 7);
- ndr->depth++;
- for (cntr_unknown_0=0;cntr_unknown_0<7;cntr_unknown_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_unknown_0);
- if (idx_0) {
- ndr_print_uint32(ndr, "unknown", r->unknown[cntr_unknown_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_SamInfo2(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_SamInfo2(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_SamInfo2(struct ndr_print *ndr, const char *name, const struct netr_SamInfo2 *r)
-{
- ndr_print_struct(ndr, name, "netr_SamInfo2");
- ndr->depth++;
- ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_SidAttr(struct ndr_push *ndr, int ndr_flags, const struct netr_SidAttr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attribute));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_SidAttr(struct ndr_pull *ndr, int ndr_flags, struct netr_SidAttr *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attribute));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_SidAttr(struct ndr_print *ndr, const char *name, const struct netr_SidAttr *r)
-{
- ndr_print_struct(ndr, name, "netr_SidAttr");
- ndr->depth++;
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "attribute", r->attribute);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_SamInfo3(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo3 *r)
-{
- uint32_t cntr_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
- if (r->sids) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo3 *r)
-{
- uint32_t _ptr_sids;
- uint32_t cntr_sids_1;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_sids_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sidcount));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
- if (_ptr_sids) {
- NDR_PULL_ALLOC(ndr, r->sids);
- } else {
- r->sids = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
- if (r->sids) {
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
- NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
- _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
- }
- if (r->sids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_SamInfo3(struct ndr_print *ndr, const char *name, const struct netr_SamInfo3 *r)
-{
- uint32_t cntr_sids_1;
- ndr_print_struct(ndr, name, "netr_SamInfo3");
- ndr->depth++;
- ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
- ndr_print_uint32(ndr, "sidcount", r->sidcount);
- ndr_print_ptr(ndr, "sids", r->sids);
- ndr->depth++;
- if (r->sids) {
- ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->sidcount);
- ndr->depth++;
- for (cntr_sids_1=0;cntr_sids_1<r->sidcount;cntr_sids_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_sids_1);
- if (idx_1) {
- ndr_print_netr_SidAttr(ndr, "sids", &r->sids[cntr_sids_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_SamInfo6(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo6 *r)
-{
- uint32_t cntr_sids_1;
- uint32_t cntr_unknown4_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->forest));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->principle));
- for (cntr_unknown4_0 = 0; cntr_unknown4_0 < 20; cntr_unknown4_0++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4[cntr_unknown4_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
- if (r->sids) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- }
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->forest));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->principle));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_SamInfo6(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo6 *r)
-{
- uint32_t _ptr_sids;
- uint32_t cntr_sids_1;
- TALLOC_CTX *_mem_save_sids_0;
- TALLOC_CTX *_mem_save_sids_1;
- uint32_t cntr_unknown4_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sidcount));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
- if (_ptr_sids) {
- NDR_PULL_ALLOC(ndr, r->sids);
- } else {
- r->sids = NULL;
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->forest));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->principle));
- for (cntr_unknown4_0 = 0; cntr_unknown4_0 < 20; cntr_unknown4_0++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4[cntr_unknown4_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
- if (r->sids) {
- _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
- NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
- _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
- }
- for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
- NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->forest));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->principle));
- if (r->sids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_SamInfo6(struct ndr_print *ndr, const char *name, const struct netr_SamInfo6 *r)
-{
- uint32_t cntr_sids_1;
- uint32_t cntr_unknown4_0;
- ndr_print_struct(ndr, name, "netr_SamInfo6");
- ndr->depth++;
- ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
- ndr_print_uint32(ndr, "sidcount", r->sidcount);
- ndr_print_ptr(ndr, "sids", r->sids);
- ndr->depth++;
- if (r->sids) {
- ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->sidcount);
- ndr->depth++;
- for (cntr_sids_1=0;cntr_sids_1<r->sidcount;cntr_sids_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_sids_1);
- if (idx_1) {
- ndr_print_netr_SidAttr(ndr, "sids", &r->sids[cntr_sids_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_lsa_String(ndr, "forest", &r->forest);
- ndr_print_lsa_String(ndr, "principle", &r->principle);
- ndr->print(ndr, "%s: ARRAY(%d)", "unknown4", 20);
- ndr->depth++;
- for (cntr_unknown4_0=0;cntr_unknown4_0<20;cntr_unknown4_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_unknown4_0);
- if (idx_0) {
- ndr_print_uint32(ndr, "unknown4", r->unknown4[cntr_unknown4_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_PacInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_PacInfo *r)
-{
- uint32_t cntr_expansionroom_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pac_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_domain));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_server));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->principal_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->auth));
- NDR_CHECK(ndr_push_netr_UserSessionKey(ndr, NDR_SCALARS, &r->user_session_key));
- for (cntr_expansionroom_0 = 0; cntr_expansionroom_0 < 10; cntr_expansionroom_0++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->expansionroom[cntr_expansionroom_0]));
- }
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->pac) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pac_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->pac, r->pac_size));
- }
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_domain));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_server));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->principal_name));
- if (r->auth) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->auth, r->auth_size));
- }
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_PacInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_PacInfo *r)
-{
- uint32_t _ptr_pac;
- TALLOC_CTX *_mem_save_pac_0;
- uint32_t _ptr_auth;
- TALLOC_CTX *_mem_save_auth_0;
- uint32_t cntr_expansionroom_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pac_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
- if (_ptr_pac) {
- NDR_PULL_ALLOC(ndr, r->pac);
- } else {
- r->pac = NULL;
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_domain));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_server));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->principal_name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auth_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_auth));
- if (_ptr_auth) {
- NDR_PULL_ALLOC(ndr, r->auth);
- } else {
- r->auth = NULL;
- }
- NDR_CHECK(ndr_pull_netr_UserSessionKey(ndr, NDR_SCALARS, &r->user_session_key));
- for (cntr_expansionroom_0 = 0; cntr_expansionroom_0 < 10; cntr_expansionroom_0++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->expansionroom[cntr_expansionroom_0]));
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->pac) {
- _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->pac));
- NDR_PULL_ALLOC_N(ndr, r->pac, ndr_get_array_size(ndr, &r->pac));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->pac, ndr_get_array_size(ndr, &r->pac)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_domain));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_server));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->principal_name));
- if (r->auth) {
- _mem_save_auth_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->auth, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->auth));
- NDR_PULL_ALLOC_N(ndr, r->auth, ndr_get_array_size(ndr, &r->auth));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->auth, ndr_get_array_size(ndr, &r->auth)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_auth_0, 0);
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- if (r->pac) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pac, r->pac_size));
- }
- if (r->auth) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->auth, r->auth_size));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, const struct netr_PacInfo *r)
-{
- uint32_t cntr_expansionroom_0;
- ndr_print_struct(ndr, name, "netr_PacInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "pac_size", r->pac_size);
- ndr_print_ptr(ndr, "pac", r->pac);
- ndr->depth++;
- if (r->pac) {
- ndr_print_array_uint8(ndr, "pac", r->pac, r->pac_size);
- }
- ndr->depth--;
- ndr_print_lsa_String(ndr, "logon_domain", &r->logon_domain);
- ndr_print_lsa_String(ndr, "logon_server", &r->logon_server);
- ndr_print_lsa_String(ndr, "principal_name", &r->principal_name);
- ndr_print_uint32(ndr, "auth_size", r->auth_size);
- ndr_print_ptr(ndr, "auth", r->auth);
- ndr->depth++;
- if (r->auth) {
- ndr_print_array_uint8(ndr, "auth", r->auth, r->auth_size);
- }
- ndr->depth--;
- ndr_print_netr_UserSessionKey(ndr, "user_session_key", &r->user_session_key);
- ndr->print(ndr, "%s: ARRAY(%d)", "expansionroom", 10);
- ndr->depth++;
- for (cntr_expansionroom_0=0;cntr_expansionroom_0<10;cntr_expansionroom_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_expansionroom_0);
- if (idx_0) {
- ndr_print_uint32(ndr, "expansionroom", r->expansionroom[cntr_expansionroom_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
- switch (level) {
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam3));
- break;
-
- case 4:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
- break;
-
- case 5:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
- break;
-
- case 6:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam6));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 2:
- if (r->sam2) {
- NDR_CHECK(ndr_push_netr_SamInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam2));
- }
- break;
-
- case 3:
- if (r->sam3) {
- NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam3));
- }
- break;
-
- case 4:
- if (r->pac) {
- NDR_CHECK(ndr_push_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
- }
- break;
-
- case 5:
- if (r->pac) {
- NDR_CHECK(ndr_push_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
- }
- break;
-
- case 6:
- if (r->sam6) {
- NDR_CHECK(ndr_push_netr_SamInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam6));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_Validation(struct ndr_pull *ndr, int ndr_flags, union netr_Validation *r)
-{
- int level;
- uint16_t _level;
- TALLOC_CTX *_mem_save_sam2_0;
- TALLOC_CTX *_mem_save_sam3_0;
- TALLOC_CTX *_mem_save_pac_0;
- TALLOC_CTX *_mem_save_sam6_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 2: {
- uint32_t _ptr_sam2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam2));
- if (_ptr_sam2) {
- NDR_PULL_ALLOC(ndr, r->sam2);
- } else {
- r->sam2 = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_sam3;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam3));
- if (_ptr_sam3) {
- NDR_PULL_ALLOC(ndr, r->sam3);
- } else {
- r->sam3 = NULL;
- }
- break; }
-
- case 4: {
- uint32_t _ptr_pac;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
- if (_ptr_pac) {
- NDR_PULL_ALLOC(ndr, r->pac);
- } else {
- r->pac = NULL;
- }
- break; }
-
- case 5: {
- uint32_t _ptr_pac;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
- if (_ptr_pac) {
- NDR_PULL_ALLOC(ndr, r->pac);
- } else {
- r->pac = NULL;
- }
- break; }
-
- case 6: {
- uint32_t _ptr_sam6;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam6));
- if (_ptr_sam6) {
- NDR_PULL_ALLOC(ndr, r->sam6);
- } else {
- r->sam6 = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 2:
- if (r->sam2) {
- _mem_save_sam2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sam2, 0);
- NDR_CHECK(ndr_pull_netr_SamInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam2_0, 0);
- }
- break;
-
- case 3:
- if (r->sam3) {
- _mem_save_sam3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sam3, 0);
- NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam3_0, 0);
- }
- break;
-
- case 4:
- if (r->pac) {
- _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
- NDR_CHECK(ndr_pull_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
- }
- break;
-
- case 5:
- if (r->pac) {
- _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
- NDR_CHECK(ndr_pull_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
- }
- break;
-
- case 6:
- if (r->sam6) {
- _mem_save_sam6_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sam6, 0);
- NDR_CHECK(ndr_pull_netr_SamInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam6));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam6_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name, const union netr_Validation *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_Validation");
- switch (level) {
- case 2:
- ndr_print_ptr(ndr, "sam2", r->sam2);
- ndr->depth++;
- if (r->sam2) {
- ndr_print_netr_SamInfo2(ndr, "sam2", r->sam2);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "sam3", r->sam3);
- ndr->depth++;
- if (r->sam3) {
- ndr_print_netr_SamInfo3(ndr, "sam3", r->sam3);
- }
- ndr->depth--;
- break;
-
- case 4:
- ndr_print_ptr(ndr, "pac", r->pac);
- ndr->depth++;
- if (r->pac) {
- ndr_print_netr_PacInfo(ndr, "pac", r->pac);
- }
- ndr->depth--;
- break;
-
- case 5:
- ndr_print_ptr(ndr, "pac", r->pac);
- ndr->depth++;
- if (r->pac) {
- ndr_print_netr_PacInfo(ndr, "pac", r->pac);
- }
- ndr->depth--;
- break;
-
- case 6:
- ndr_print_ptr(ndr, "sam6", r->sam6);
- ndr->depth++;
- if (r->sam6) {
- ndr_print_netr_SamInfo6(ndr, "sam6", r->sam6);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_Credential(struct ndr_push *ndr, int ndr_flags, const struct netr_Credential *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 1));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, 8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_Credential(struct ndr_pull *ndr, int ndr_flags, struct netr_Credential *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 1));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, 8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_Credential(struct ndr_print *ndr, const char *name, const struct netr_Credential *r)
-{
- ndr_print_struct(ndr, name, "netr_Credential");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_array_uint8(ndr, "data", r->data, 8);
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_Authenticator(struct ndr_push *ndr, int ndr_flags, const struct netr_Authenticator *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, &r->cred));
- NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->timestamp));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_Authenticator(struct ndr_pull *ndr, int ndr_flags, struct netr_Authenticator *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, &r->cred));
- NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->timestamp));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *name, const struct netr_Authenticator *r)
-{
- ndr_print_struct(ndr, name, "netr_Authenticator");
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "cred", &r->cred);
- ndr_print_time_t(ndr, "timestamp", r->timestamp);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_DELETE_USER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_USER *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->account_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->account_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->account_name, ndr_charset_length(r->account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_DELETE_USER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_USER *r)
-{
- uint32_t _ptr_account_name;
- TALLOC_CTX *_mem_save_account_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
- if (_ptr_account_name) {
- NDR_PULL_ALLOC(ndr, r->account_name);
- } else {
- r->account_name = NULL;
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->account_name) {
- _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->account_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->account_name));
- if (ndr_get_array_length(ndr, &r->account_name) > ndr_get_array_size(ndr, &r->account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->account_name), ndr_get_array_length(ndr, &r->account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_USER *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_DELETE_USER");
- ndr->depth++;
- ndr_print_ptr(ndr, "account_name", r->account_name);
- ndr->depth++;
- if (r->account_name) {
- ndr_print_string(ndr, "account_name", r->account_name);
- }
- ndr->depth--;
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_USER_KEY16(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEY16 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->pwd));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->pwd));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_USER_KEY16(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEY16 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->pwd));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->pwd));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_USER_KEY16(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY16 *r)
-{
- ndr_print_struct(ndr, name, "netr_USER_KEY16");
- ndr->depth++;
- ndr_print_uint16(ndr, "length", r->length);
- ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
- ndr_print_uint32(ndr, "flags", r->flags);
- ndr_print_samr_Password(ndr, "pwd", &r->pwd);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_PasswordHistory(struct ndr_push *ndr, int ndr_flags, const struct netr_PasswordHistory *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->nt_length));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->nt_size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nt_flags));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm_length));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm_size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lm_flags));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->nt_history, r->nt_length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->lm_history, r->lm_length));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_PasswordHistory(struct ndr_pull *ndr, int ndr_flags, struct netr_PasswordHistory *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->nt_length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->nt_size));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nt_flags));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm_length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm_size));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lm_flags));
- NDR_PULL_ALLOC_N(ndr, r->nt_history, r->nt_length);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->nt_history, r->nt_length));
- NDR_PULL_ALLOC_N(ndr, r->lm_history, r->lm_length);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->lm_history, r->lm_length));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_PasswordHistory(struct ndr_print *ndr, const char *name, const struct netr_PasswordHistory *r)
-{
- ndr_print_struct(ndr, name, "netr_PasswordHistory");
- ndr->depth++;
- ndr_print_uint16(ndr, "nt_length", r->nt_length);
- ndr_print_uint16(ndr, "nt_size", r->nt_size);
- ndr_print_uint32(ndr, "nt_flags", r->nt_flags);
- ndr_print_uint16(ndr, "lm_length", r->lm_length);
- ndr_print_uint16(ndr, "lm_size", r->lm_size);
- ndr_print_uint32(ndr, "lm_flags", r->lm_flags);
- ndr_print_array_uint8(ndr, "nt_history", r->nt_history, r->nt_length);
- ndr_print_array_uint8(ndr, "lm_history", r->lm_history, r->lm_length);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_USER_KEYS2(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_SCALARS, &r->lmpassword));
- NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_SCALARS, &r->ntpassword));
- NDR_CHECK(ndr_push_netr_PasswordHistory(ndr, NDR_SCALARS, &r->lmhistory));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->lmpassword));
- NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->ntpassword));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_USER_KEYS2(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_SCALARS, &r->lmpassword));
- NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_SCALARS, &r->ntpassword));
- NDR_CHECK(ndr_pull_netr_PasswordHistory(ndr, NDR_SCALARS, &r->lmhistory));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->lmpassword));
- NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->ntpassword));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_USER_KEYS2(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS2 *r)
-{
- ndr_print_struct(ndr, name, "netr_USER_KEYS2");
- ndr->depth++;
- ndr_print_netr_USER_KEY16(ndr, "lmpassword", &r->lmpassword);
- ndr_print_netr_USER_KEY16(ndr, "ntpassword", &r->ntpassword);
- ndr_print_netr_PasswordHistory(ndr, "lmhistory", &r->lmhistory);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_USER_KEY_UNION(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEY_UNION *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_USER_KEYS2(ndr, NDR_SCALARS, &r->keys2));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_USER_KEYS2(ndr, NDR_BUFFERS, &r->keys2));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_USER_KEY_UNION(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEY_UNION *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_USER_KEYS2(ndr, NDR_SCALARS, &r->keys2));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_USER_KEYS2(ndr, NDR_BUFFERS, &r->keys2));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_USER_KEY_UNION(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY_UNION *r)
-{
- ndr_print_struct(ndr, name, "netr_USER_KEY_UNION");
- ndr->depth++;
- ndr_print_netr_USER_KEYS2(ndr, "keys2", &r->keys2);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_netr_USER_KEYS(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
- NDR_CHECK(ndr_push_netr_USER_KEY_UNION(ndr, NDR_SCALARS, &r->keys));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_USER_KEY_UNION(ndr, NDR_BUFFERS, &r->keys));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_netr_USER_KEYS(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
- NDR_CHECK(ndr_pull_netr_USER_KEY_UNION(ndr, NDR_SCALARS, &r->keys));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_USER_KEY_UNION(ndr, NDR_BUFFERS, &r->keys));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_USER_KEYS(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS *r)
-{
- ndr_print_struct(ndr, name, "netr_USER_KEYS");
- ndr->depth++;
- ndr_print_uint32(ndr, "version", r->version);
- ndr_print_netr_USER_KEY_UNION(ndr, "keys", &r->keys);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_USER_PRIVATE_INFO(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_PRIVATE_INFO *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->SensitiveDataFlag));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->DataLength));
- {
- uint32_t _flags_save_uint8 = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->SensitiveData));
- ndr->flags = _flags_save_uint8;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- {
- uint32_t _flags_save_uint8 = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (r->SensitiveData) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->DataLength));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->SensitiveData, r->DataLength));
- }
- ndr->flags = _flags_save_uint8;
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_USER_PRIVATE_INFO(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_PRIVATE_INFO *r)
-{
- uint32_t _ptr_SensitiveData;
- TALLOC_CTX *_mem_save_SensitiveData_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->SensitiveDataFlag));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->DataLength));
- {
- uint32_t _flags_save_uint8 = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_SensitiveData));
- if (_ptr_SensitiveData) {
- NDR_PULL_ALLOC(ndr, r->SensitiveData);
- } else {
- r->SensitiveData = NULL;
- }
- ndr->flags = _flags_save_uint8;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- {
- uint32_t _flags_save_uint8 = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (r->SensitiveData) {
- _mem_save_SensitiveData_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->SensitiveData, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->SensitiveData));
- NDR_PULL_ALLOC_N(ndr, r->SensitiveData, ndr_get_array_size(ndr, &r->SensitiveData));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->SensitiveData, ndr_get_array_size(ndr, &r->SensitiveData)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_SensitiveData_0, 0);
- }
- ndr->flags = _flags_save_uint8;
- }
- if (r->SensitiveData) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->SensitiveData, r->DataLength));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_USER_PRIVATE_INFO(struct ndr_print *ndr, const char *name, const struct netr_USER_PRIVATE_INFO *r)
-{
- ndr_print_struct(ndr, name, "netr_USER_PRIVATE_INFO");
- ndr->depth++;
- ndr_print_uint8(ndr, "SensitiveDataFlag", r->SensitiveDataFlag);
- ndr_print_uint32(ndr, "DataLength", r->DataLength);
- ndr_print_ptr(ndr, "SensitiveData", r->SensitiveData);
- ndr->depth++;
- if (r->SensitiveData) {
- ndr_print_array_uint8(ndr, "SensitiveData", r->SensitiveData, r->DataLength);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_USER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_USER *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->full_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->primary_gid));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->workstations));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logon));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logoff));
- NDR_CHECK(ndr_push_samr_LogonHours(ndr, NDR_SCALARS, &r->logon_hours));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bad_password_count));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_password_change));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->acct_expiry));
- NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->acct_flags));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->nt_password_present));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->lm_password_present));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->password_expired));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->parameters));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->country_code));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->code_page));
- NDR_CHECK(ndr_push_netr_USER_PRIVATE_INFO(ndr, NDR_SCALARS, &r->user_private_info));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
- NDR_CHECK(ndr_push_samr_LogonHours(ndr, NDR_BUFFERS, &r->logon_hours));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
- NDR_CHECK(ndr_push_netr_USER_PRIVATE_INFO(ndr, NDR_BUFFERS, &r->user_private_info));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_USER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_USER *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->full_name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->primary_gid));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->workstations));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logon));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logoff));
- NDR_CHECK(ndr_pull_samr_LogonHours(ndr, NDR_SCALARS, &r->logon_hours));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bad_password_count));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_password_change));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->acct_expiry));
- NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->acct_flags));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->nt_password_present));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->lm_password_present));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->password_expired));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->parameters));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->country_code));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->code_page));
- NDR_CHECK(ndr_pull_netr_USER_PRIVATE_INFO(ndr, NDR_SCALARS, &r->user_private_info));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
- NDR_CHECK(ndr_pull_samr_LogonHours(ndr, NDR_BUFFERS, &r->logon_hours));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
- NDR_CHECK(ndr_pull_netr_USER_PRIVATE_INFO(ndr, NDR_BUFFERS, &r->user_private_info));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_USER *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_USER");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "account_name", &r->account_name);
- ndr_print_lsa_String(ndr, "full_name", &r->full_name);
- ndr_print_uint32(ndr, "rid", r->rid);
- ndr_print_uint32(ndr, "primary_gid", r->primary_gid);
- ndr_print_lsa_String(ndr, "home_directory", &r->home_directory);
- ndr_print_lsa_String(ndr, "home_drive", &r->home_drive);
- ndr_print_lsa_String(ndr, "logon_script", &r->logon_script);
- ndr_print_lsa_String(ndr, "description", &r->description);
- ndr_print_lsa_String(ndr, "workstations", &r->workstations);
- ndr_print_NTTIME(ndr, "last_logon", r->last_logon);
- ndr_print_NTTIME(ndr, "last_logoff", r->last_logoff);
- ndr_print_samr_LogonHours(ndr, "logon_hours", &r->logon_hours);
- ndr_print_uint16(ndr, "bad_password_count", r->bad_password_count);
- ndr_print_uint16(ndr, "logon_count", r->logon_count);
- ndr_print_NTTIME(ndr, "last_password_change", r->last_password_change);
- ndr_print_NTTIME(ndr, "acct_expiry", r->acct_expiry);
- ndr_print_samr_AcctFlags(ndr, "acct_flags", r->acct_flags);
- ndr_print_samr_Password(ndr, "lmpassword", &r->lmpassword);
- ndr_print_samr_Password(ndr, "ntpassword", &r->ntpassword);
- ndr_print_uint8(ndr, "nt_password_present", r->nt_password_present);
- ndr_print_uint8(ndr, "lm_password_present", r->lm_password_present);
- ndr_print_uint8(ndr, "password_expired", r->password_expired);
- ndr_print_lsa_String(ndr, "comment", &r->comment);
- ndr_print_lsa_String(ndr, "parameters", &r->parameters);
- ndr_print_uint16(ndr, "country_code", r->country_code);
- ndr_print_uint16(ndr, "code_page", r->code_page);
- ndr_print_netr_USER_PRIVATE_INFO(ndr, "user_private_info", &r->user_private_info);
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_lsa_String(ndr, "profile_path", &r->profile_path);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_DOMAIN(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DOMAIN *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
- NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->force_logoff_time));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->min_password_length));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->password_history_length));
- NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->max_password_age));
- NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->min_password_age));
- NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->sequence_num));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->domain_create_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_netr_AcctLockStr(ndr, NDR_SCALARS, &r->account_lockout));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_to_chgpass));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_netr_AcctLockStr(ndr, NDR_BUFFERS, &r->account_lockout));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_DOMAIN(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DOMAIN *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
- NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->force_logoff_time));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->min_password_length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->password_history_length));
- NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->max_password_age));
- NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->min_password_age));
- NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->sequence_num));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->domain_create_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_netr_AcctLockStr(ndr, NDR_SCALARS, &r->account_lockout));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_to_chgpass));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_netr_AcctLockStr(ndr, NDR_BUFFERS, &r->account_lockout));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DOMAIN *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_DOMAIN");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
- ndr_print_lsa_String(ndr, "comment", &r->comment);
- ndr_print_dlong(ndr, "force_logoff_time", r->force_logoff_time);
- ndr_print_uint16(ndr, "min_password_length", r->min_password_length);
- ndr_print_uint16(ndr, "password_history_length", r->password_history_length);
- ndr_print_dlong(ndr, "max_password_age", r->max_password_age);
- ndr_print_dlong(ndr, "min_password_age", r->min_password_age);
- ndr_print_udlong(ndr, "sequence_num", r->sequence_num);
- ndr_print_NTTIME(ndr, "domain_create_time", r->domain_create_time);
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_netr_AcctLockStr(ndr, "account_lockout", &r->account_lockout);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "logon_to_chgpass", r->logon_to_chgpass);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_GROUP(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_GROUP *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->group_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attributes));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->group_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_GROUP(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_GROUP *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->group_name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attributes));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->group_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_GROUP(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_GROUP");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "group_name", &r->group_name);
- ndr_print_uint32(ndr, "rid", r->rid);
- ndr_print_uint32(ndr, "attributes", r->attributes);
- ndr_print_lsa_String(ndr, "description", &r->description);
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_RENAME(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_RENAME *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->OldName));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->NewName));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->OldName));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->NewName));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_RENAME(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_RENAME *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->OldName));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->NewName));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->OldName));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->NewName));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_RENAME(struct ndr_print *ndr, const char *name, const struct netr_DELTA_RENAME *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_RENAME");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "OldName", &r->OldName);
- ndr_print_lsa_String(ndr, "NewName", &r->NewName);
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_GROUP_MEMBER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_GROUP_MEMBER *r)
-{
- uint32_t cntr_rids_1;
- uint32_t cntr_attribs_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->rids));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->attribs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->rids) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
- for (cntr_rids_1 = 0; cntr_rids_1 < r->num_rids; cntr_rids_1++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rids[cntr_rids_1]));
- }
- }
- if (r->attribs) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
- for (cntr_attribs_1 = 0; cntr_attribs_1 < r->num_rids; cntr_attribs_1++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attribs[cntr_attribs_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_GROUP_MEMBER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_GROUP_MEMBER *r)
-{
- uint32_t _ptr_rids;
- uint32_t cntr_rids_1;
- TALLOC_CTX *_mem_save_rids_0;
- TALLOC_CTX *_mem_save_rids_1;
- uint32_t _ptr_attribs;
- uint32_t cntr_attribs_1;
- TALLOC_CTX *_mem_save_attribs_0;
- TALLOC_CTX *_mem_save_attribs_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rids));
- if (_ptr_rids) {
- NDR_PULL_ALLOC(ndr, r->rids);
- } else {
- r->rids = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attribs));
- if (_ptr_attribs) {
- NDR_PULL_ALLOC(ndr, r->attribs);
- } else {
- r->attribs = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_rids));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->rids) {
- _mem_save_rids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->rids));
- NDR_PULL_ALLOC_N(ndr, r->rids, ndr_get_array_size(ndr, &r->rids));
- _mem_save_rids_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0);
- for (cntr_rids_1 = 0; cntr_rids_1 < r->num_rids; cntr_rids_1++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rids[cntr_rids_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_0, 0);
- }
- if (r->attribs) {
- _mem_save_attribs_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->attribs, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->attribs));
- NDR_PULL_ALLOC_N(ndr, r->attribs, ndr_get_array_size(ndr, &r->attribs));
- _mem_save_attribs_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->attribs, 0);
- for (cntr_attribs_1 = 0; cntr_attribs_1 < r->num_rids; cntr_attribs_1++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attribs[cntr_attribs_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribs_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribs_0, 0);
- }
- if (r->rids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->num_rids));
- }
- if (r->attribs) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attribs, r->num_rids));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_GROUP_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP_MEMBER *r)
-{
- uint32_t cntr_rids_1;
- uint32_t cntr_attribs_1;
- ndr_print_struct(ndr, name, "netr_DELTA_GROUP_MEMBER");
- ndr->depth++;
- ndr_print_ptr(ndr, "rids", r->rids);
- ndr->depth++;
- if (r->rids) {
- ndr->print(ndr, "%s: ARRAY(%d)", "rids", r->num_rids);
- ndr->depth++;
- for (cntr_rids_1=0;cntr_rids_1<r->num_rids;cntr_rids_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_rids_1);
- if (idx_1) {
- ndr_print_uint32(ndr, "rids", r->rids[cntr_rids_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "attribs", r->attribs);
- ndr->depth++;
- if (r->attribs) {
- ndr->print(ndr, "%s: ARRAY(%d)", "attribs", r->num_rids);
- ndr->depth++;
- for (cntr_attribs_1=0;cntr_attribs_1<r->num_rids;cntr_attribs_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_attribs_1);
- if (idx_1) {
- ndr_print_uint32(ndr, "attribs", r->attribs[cntr_attribs_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "num_rids", r->num_rids);
- ndr_print_uint32(ndr, "unknown1", r->unknown1);
- ndr_print_uint32(ndr, "unknown2", r->unknown2);
- ndr_print_uint32(ndr, "unknown3", r->unknown3);
- ndr_print_uint32(ndr, "unknown4", r->unknown4);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_ALIAS(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ALIAS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->alias_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->alias_name));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_ALIAS(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ALIAS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->alias_name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->alias_name));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_ALIAS(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_ALIAS");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "alias_name", &r->alias_name);
- ndr_print_uint32(ndr, "rid", r->rid);
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_lsa_String(ndr, "description", &r->description);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_ALIAS_MEMBER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ALIAS_MEMBER *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS, &r->sids));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_BUFFERS, &r->sids));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_ALIAS_MEMBER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ALIAS_MEMBER *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS, &r->sids));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_BUFFERS, &r->sids));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_ALIAS_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS_MEMBER *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_ALIAS_MEMBER");
- ndr->depth++;
- ndr_print_lsa_SidArray(ndr, "sids", &r->sids);
- ndr_print_uint32(ndr, "unknown1", r->unknown1);
- ndr_print_uint32(ndr, "unknown2", r->unknown2);
- ndr_print_uint32(ndr, "unknown3", r->unknown3);
- ndr_print_uint32(ndr, "unknown4", r->unknown4);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_QUOTA_LIMITS(struct ndr_push *ndr, int ndr_flags, const struct netr_QUOTA_LIMITS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pagedpoollimit));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nonpagedpoollimit));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minimumworkingsetsize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maximumworkingsetsize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pagefilelimit));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->timelimit));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_QUOTA_LIMITS(struct ndr_pull *ndr, int ndr_flags, struct netr_QUOTA_LIMITS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pagedpoollimit));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nonpagedpoollimit));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minimumworkingsetsize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maximumworkingsetsize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pagefilelimit));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->timelimit));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_QUOTA_LIMITS(struct ndr_print *ndr, const char *name, const struct netr_QUOTA_LIMITS *r)
-{
- ndr_print_struct(ndr, name, "netr_QUOTA_LIMITS");
- ndr->depth++;
- ndr_print_uint32(ndr, "pagedpoollimit", r->pagedpoollimit);
- ndr_print_uint32(ndr, "nonpagedpoollimit", r->nonpagedpoollimit);
- ndr_print_uint32(ndr, "minimumworkingsetsize", r->minimumworkingsetsize);
- ndr_print_uint32(ndr, "maximumworkingsetsize", r->maximumworkingsetsize);
- ndr_print_uint32(ndr, "pagefilelimit", r->pagefilelimit);
- ndr_print_NTTIME(ndr, "timelimit", r->timelimit);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_POLICY(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_POLICY *r)
-{
- uint32_t cntr_eventauditoptions_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlogsize));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->auditretentionperiod));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->auditingmode));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxauditeventcount));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->eventauditoptions));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->primary_domain_name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- NDR_CHECK(ndr_push_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quota_limits));
- NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->sequence_num));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->db_create_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->eventauditoptions) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxauditeventcount + 1));
- for (cntr_eventauditoptions_1 = 0; cntr_eventauditoptions_1 < r->maxauditeventcount + 1; cntr_eventauditoptions_1++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->eventauditoptions[cntr_eventauditoptions_1]));
- }
- }
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->primary_domain_name));
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_POLICY(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_POLICY *r)
-{
- uint32_t _ptr_eventauditoptions;
- uint32_t cntr_eventauditoptions_1;
- TALLOC_CTX *_mem_save_eventauditoptions_0;
- TALLOC_CTX *_mem_save_eventauditoptions_1;
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlogsize));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->auditretentionperiod));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->auditingmode));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxauditeventcount));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_eventauditoptions));
- if (_ptr_eventauditoptions) {
- NDR_PULL_ALLOC(ndr, r->eventauditoptions);
- } else {
- r->eventauditoptions = NULL;
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->primary_domain_name));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- NDR_CHECK(ndr_pull_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quota_limits));
- NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->sequence_num));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->db_create_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->eventauditoptions) {
- _mem_save_eventauditoptions_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->eventauditoptions, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->eventauditoptions));
- NDR_PULL_ALLOC_N(ndr, r->eventauditoptions, ndr_get_array_size(ndr, &r->eventauditoptions));
- _mem_save_eventauditoptions_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->eventauditoptions, 0);
- for (cntr_eventauditoptions_1 = 0; cntr_eventauditoptions_1 < r->maxauditeventcount + 1; cntr_eventauditoptions_1++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->eventauditoptions[cntr_eventauditoptions_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eventauditoptions_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eventauditoptions_0, 0);
- }
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->primary_domain_name));
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- if (r->eventauditoptions) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eventauditoptions, r->maxauditeventcount + 1));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_POLICY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_POLICY *r)
-{
- uint32_t cntr_eventauditoptions_1;
- ndr_print_struct(ndr, name, "netr_DELTA_POLICY");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxlogsize", r->maxlogsize);
- ndr_print_NTTIME(ndr, "auditretentionperiod", r->auditretentionperiod);
- ndr_print_uint8(ndr, "auditingmode", r->auditingmode);
- ndr_print_uint32(ndr, "maxauditeventcount", r->maxauditeventcount);
- ndr_print_ptr(ndr, "eventauditoptions", r->eventauditoptions);
- ndr->depth++;
- if (r->eventauditoptions) {
- ndr->print(ndr, "%s: ARRAY(%d)", "eventauditoptions", r->maxauditeventcount + 1);
- ndr->depth++;
- for (cntr_eventauditoptions_1=0;cntr_eventauditoptions_1<r->maxauditeventcount + 1;cntr_eventauditoptions_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_eventauditoptions_1);
- if (idx_1) {
- ndr_print_uint32(ndr, "eventauditoptions", r->eventauditoptions[cntr_eventauditoptions_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_lsa_String(ndr, "primary_domain_name", &r->primary_domain_name);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr_print_netr_QUOTA_LIMITS(ndr, "quota_limits", &r->quota_limits);
- ndr_print_udlong(ndr, "sequence_num", r->sequence_num);
- ndr_print_NTTIME(ndr, "db_create_time", r->db_create_time);
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_TRUSTED_DOMAIN(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_TRUSTED_DOMAIN *r)
-{
- uint32_t cntr_controller_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_controllers));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->controller_names));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->posix_offset));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- if (r->controller_names) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_controllers));
- for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->controller_names[cntr_controller_names_1]));
- }
- for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->controller_names[cntr_controller_names_1]));
- }
- }
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_TRUSTED_DOMAIN(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_TRUSTED_DOMAIN *r)
-{
- uint32_t _ptr_controller_names;
- uint32_t cntr_controller_names_1;
- TALLOC_CTX *_mem_save_controller_names_0;
- TALLOC_CTX *_mem_save_controller_names_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_controllers));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_controller_names));
- if (_ptr_controller_names) {
- NDR_PULL_ALLOC(ndr, r->controller_names);
- } else {
- r->controller_names = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->posix_offset));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- if (r->controller_names) {
- _mem_save_controller_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->controller_names, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->controller_names));
- NDR_PULL_ALLOC_N(ndr, r->controller_names, ndr_get_array_size(ndr, &r->controller_names));
- _mem_save_controller_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->controller_names, 0);
- for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->controller_names[cntr_controller_names_1]));
- }
- for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->controller_names[cntr_controller_names_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_controller_names_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_controller_names_0, 0);
- }
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- if (r->controller_names) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->controller_names, r->num_controllers));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_TRUSTED_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_TRUSTED_DOMAIN *r)
-{
- uint32_t cntr_controller_names_1;
- ndr_print_struct(ndr, name, "netr_DELTA_TRUSTED_DOMAIN");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
- ndr_print_uint32(ndr, "num_controllers", r->num_controllers);
- ndr_print_ptr(ndr, "controller_names", r->controller_names);
- ndr->depth++;
- if (r->controller_names) {
- ndr->print(ndr, "%s: ARRAY(%d)", "controller_names", r->num_controllers);
- ndr->depth++;
- for (cntr_controller_names_1=0;cntr_controller_names_1<r->num_controllers;cntr_controller_names_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_controller_names_1);
- if (idx_1) {
- ndr_print_lsa_String(ndr, "controller_names", &r->controller_names[cntr_controller_names_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "posix_offset", r->posix_offset);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_DELETE_TRUST(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_TRUST *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_DELETE_TRUST(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_TRUST *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_TRUST(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_TRUST *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_DELETE_TRUST");
- ndr->depth++;
- ndr_print_uint16(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_ACCOUNT(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ACCOUNT *r)
-{
- uint32_t cntr_privilege_attrib_1;
- uint32_t cntr_privilege_name_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_control));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->privilege_attrib));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->privilege_name));
- NDR_CHECK(ndr_push_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quotalimits));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->system_flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->privilege_attrib) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
- for (cntr_privilege_attrib_1 = 0; cntr_privilege_attrib_1 < r->privilege_entries; cntr_privilege_attrib_1++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_attrib[cntr_privilege_attrib_1]));
- }
- }
- if (r->privilege_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
- for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->privilege_name[cntr_privilege_name_1]));
- }
- for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->privilege_name[cntr_privilege_name_1]));
- }
- }
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_ACCOUNT(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ACCOUNT *r)
-{
- uint32_t _ptr_privilege_attrib;
- uint32_t cntr_privilege_attrib_1;
- TALLOC_CTX *_mem_save_privilege_attrib_0;
- TALLOC_CTX *_mem_save_privilege_attrib_1;
- uint32_t _ptr_privilege_name;
- uint32_t cntr_privilege_name_1;
- TALLOC_CTX *_mem_save_privilege_name_0;
- TALLOC_CTX *_mem_save_privilege_name_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_entries));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_control));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privilege_attrib));
- if (_ptr_privilege_attrib) {
- NDR_PULL_ALLOC(ndr, r->privilege_attrib);
- } else {
- r->privilege_attrib = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privilege_name));
- if (_ptr_privilege_name) {
- NDR_PULL_ALLOC(ndr, r->privilege_name);
- } else {
- r->privilege_name = NULL;
- }
- NDR_CHECK(ndr_pull_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quotalimits));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->system_flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->privilege_attrib) {
- _mem_save_privilege_attrib_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->privilege_attrib, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->privilege_attrib));
- NDR_PULL_ALLOC_N(ndr, r->privilege_attrib, ndr_get_array_size(ndr, &r->privilege_attrib));
- _mem_save_privilege_attrib_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->privilege_attrib, 0);
- for (cntr_privilege_attrib_1 = 0; cntr_privilege_attrib_1 < r->privilege_entries; cntr_privilege_attrib_1++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_attrib[cntr_privilege_attrib_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_attrib_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_attrib_0, 0);
- }
- if (r->privilege_name) {
- _mem_save_privilege_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->privilege_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->privilege_name));
- NDR_PULL_ALLOC_N(ndr, r->privilege_name, ndr_get_array_size(ndr, &r->privilege_name));
- _mem_save_privilege_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->privilege_name, 0);
- for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->privilege_name[cntr_privilege_name_1]));
- }
- for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->privilege_name[cntr_privilege_name_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_name_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_name_0, 0);
- }
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- if (r->privilege_attrib) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_attrib, r->privilege_entries));
- }
- if (r->privilege_name) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_name, r->privilege_entries));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ACCOUNT *r)
-{
- uint32_t cntr_privilege_attrib_1;
- uint32_t cntr_privilege_name_1;
- ndr_print_struct(ndr, name, "netr_DELTA_ACCOUNT");
- ndr->depth++;
- ndr_print_uint32(ndr, "privilege_entries", r->privilege_entries);
- ndr_print_uint32(ndr, "privilege_control", r->privilege_control);
- ndr_print_ptr(ndr, "privilege_attrib", r->privilege_attrib);
- ndr->depth++;
- if (r->privilege_attrib) {
- ndr->print(ndr, "%s: ARRAY(%d)", "privilege_attrib", r->privilege_entries);
- ndr->depth++;
- for (cntr_privilege_attrib_1=0;cntr_privilege_attrib_1<r->privilege_entries;cntr_privilege_attrib_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_privilege_attrib_1);
- if (idx_1) {
- ndr_print_uint32(ndr, "privilege_attrib", r->privilege_attrib[cntr_privilege_attrib_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "privilege_name", r->privilege_name);
- ndr->depth++;
- if (r->privilege_name) {
- ndr->print(ndr, "%s: ARRAY(%d)", "privilege_name", r->privilege_entries);
- ndr->depth++;
- for (cntr_privilege_name_1=0;cntr_privilege_name_1<r->privilege_entries;cntr_privilege_name_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_privilege_name_1);
- if (idx_1) {
- ndr_print_lsa_String(ndr, "privilege_name", &r->privilege_name[cntr_privilege_name_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr_print_netr_QUOTA_LIMITS(ndr, "quotalimits", &r->quotalimits);
- ndr_print_uint32(ndr, "system_flags", r->system_flags);
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_DELETE_ACCOUNT(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_ACCOUNT *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_DELETE_ACCOUNT(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_ACCOUNT *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_ACCOUNT *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_DELETE_ACCOUNT");
- ndr->depth++;
- ndr_print_uint16(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_DELETE_SECRET(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_SECRET *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_DELETE_SECRET(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_SECRET *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 2));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_SECRET *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_DELETE_SECRET");
- ndr->depth++;
- ndr_print_uint16(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_CIPHER_VALUE(struct ndr_push *ndr, int ndr_flags, const struct netr_CIPHER_VALUE *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlen));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->cipher_data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->cipher_data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->cipher_data, r->len));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_CIPHER_VALUE(struct ndr_pull *ndr, int ndr_flags, struct netr_CIPHER_VALUE *r)
-{
- uint32_t _ptr_cipher_data;
- TALLOC_CTX *_mem_save_cipher_data_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlen));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_cipher_data));
- if (_ptr_cipher_data) {
- NDR_PULL_ALLOC(ndr, r->cipher_data);
- } else {
- r->cipher_data = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->cipher_data) {
- _mem_save_cipher_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->cipher_data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->cipher_data));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->cipher_data));
- if (ndr_get_array_length(ndr, &r->cipher_data) > ndr_get_array_size(ndr, &r->cipher_data)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->cipher_data), ndr_get_array_length(ndr, &r->cipher_data));
- }
- NDR_PULL_ALLOC_N(ndr, r->cipher_data, ndr_get_array_size(ndr, &r->cipher_data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->cipher_data, ndr_get_array_length(ndr, &r->cipher_data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cipher_data_0, 0);
- }
- if (r->cipher_data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cipher_data, r->maxlen));
- }
- if (r->cipher_data) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->cipher_data, r->len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_CIPHER_VALUE(struct ndr_print *ndr, const char *name, const struct netr_CIPHER_VALUE *r)
-{
- ndr_print_struct(ndr, name, "netr_CIPHER_VALUE");
- ndr->depth++;
- ndr_print_uint32(ndr, "len", r->len);
- ndr_print_uint32(ndr, "maxlen", r->maxlen);
- ndr_print_ptr(ndr, "cipher_data", r->cipher_data);
- ndr->depth++;
- if (r->cipher_data) {
- ndr_print_array_uint8(ndr, "cipher_data", r->cipher_data, r->len);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_SECRET(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_SECRET *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->current_cipher));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->current_cipher_set_time));
- NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->old_cipher));
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->old_cipher_set_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->current_cipher));
- NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->old_cipher));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_SECRET(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_SECRET *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->current_cipher));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->current_cipher_set_time));
- NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->old_cipher));
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->old_cipher_set_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->current_cipher));
- NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->old_cipher));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_SECRET *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_SECRET");
- ndr->depth++;
- ndr_print_netr_CIPHER_VALUE(ndr, "current_cipher", &r->current_cipher);
- ndr_print_NTTIME(ndr, "current_cipher_set_time", r->current_cipher_set_time);
- ndr_print_netr_CIPHER_VALUE(ndr, "old_cipher", &r->old_cipher);
- ndr_print_NTTIME(ndr, "old_cipher_set_time", r->old_cipher_set_time);
- ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
- ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
- ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
- ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
- ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
- ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr_print_uint32(ndr, "unknown6", r->unknown6);
- ndr_print_uint32(ndr, "unknown7", r->unknown7);
- ndr_print_uint32(ndr, "unknown8", r->unknown8);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DeltaEnum(struct ndr_push *ndr, int ndr_flags, enum netr_DeltaEnum r)
-{
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DeltaEnum(struct ndr_pull *ndr, int ndr_flags, enum netr_DeltaEnum *r)
-{
- uint16_t v;
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DeltaEnum(struct ndr_print *ndr, const char *name, enum netr_DeltaEnum r)
-{
- const char *val = NULL;
-
- switch (r) {
- case NETR_DELTA_DOMAIN: val = "NETR_DELTA_DOMAIN"; break;
- case NETR_DELTA_GROUP: val = "NETR_DELTA_GROUP"; break;
- case NETR_DELTA_DELETE_GROUP: val = "NETR_DELTA_DELETE_GROUP"; break;
- case NETR_DELTA_RENAME_GROUP: val = "NETR_DELTA_RENAME_GROUP"; break;
- case NETR_DELTA_USER: val = "NETR_DELTA_USER"; break;
- case NETR_DELTA_DELETE_USER: val = "NETR_DELTA_DELETE_USER"; break;
- case NETR_DELTA_RENAME_USER: val = "NETR_DELTA_RENAME_USER"; break;
- case NETR_DELTA_GROUP_MEMBER: val = "NETR_DELTA_GROUP_MEMBER"; break;
- case NETR_DELTA_ALIAS: val = "NETR_DELTA_ALIAS"; break;
- case NETR_DELTA_DELETE_ALIAS: val = "NETR_DELTA_DELETE_ALIAS"; break;
- case NETR_DELTA_RENAME_ALIAS: val = "NETR_DELTA_RENAME_ALIAS"; break;
- case NETR_DELTA_ALIAS_MEMBER: val = "NETR_DELTA_ALIAS_MEMBER"; break;
- case NETR_DELTA_POLICY: val = "NETR_DELTA_POLICY"; break;
- case NETR_DELTA_TRUSTED_DOMAIN: val = "NETR_DELTA_TRUSTED_DOMAIN"; break;
- case NETR_DELTA_DELETE_TRUST: val = "NETR_DELTA_DELETE_TRUST"; break;
- case NETR_DELTA_ACCOUNT: val = "NETR_DELTA_ACCOUNT"; break;
- case NETR_DELTA_DELETE_ACCOUNT: val = "NETR_DELTA_DELETE_ACCOUNT"; break;
- case NETR_DELTA_SECRET: val = "NETR_DELTA_SECRET"; break;
- case NETR_DELTA_DELETE_SECRET: val = "NETR_DELTA_DELETE_SECRET"; break;
- case NETR_DELTA_DELETE_GROUP2: val = "NETR_DELTA_DELETE_GROUP2"; break;
- case NETR_DELTA_DELETE_USER2: val = "NETR_DELTA_DELETE_USER2"; break;
- case NETR_DELTA_MODIFY_COUNT: val = "NETR_DELTA_MODIFY_COUNT"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_netr_DELTA_UNION(struct ndr_push *ndr, int ndr_flags, const union netr_DELTA_UNION *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, level));
- switch (level) {
- case NETR_DELTA_DOMAIN:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- break;
-
- case NETR_DELTA_GROUP:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->group));
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_group));
- break;
-
- case NETR_DELTA_USER:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- break;
-
- case NETR_DELTA_DELETE_USER:
- break;
-
- case NETR_DELTA_RENAME_USER:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_user));
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->group_member));
- break;
-
- case NETR_DELTA_ALIAS:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->alias));
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_alias));
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->alias_member));
- break;
-
- case NETR_DELTA_POLICY:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->policy));
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_domain));
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- NDR_CHECK(ndr_push_netr_DELTA_DELETE_TRUST(ndr, NDR_SCALARS, &r->delete_trust));
- break;
-
- case NETR_DELTA_ACCOUNT:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->account));
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- NDR_CHECK(ndr_push_netr_DELTA_DELETE_ACCOUNT(ndr, NDR_SCALARS, &r->delete_account));
- break;
-
- case NETR_DELTA_SECRET:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->secret));
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- NDR_CHECK(ndr_push_netr_DELTA_DELETE_SECRET(ndr, NDR_SCALARS, &r->delete_secret));
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_group));
- break;
-
- case NETR_DELTA_DELETE_USER2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_user));
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->modified_count));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case NETR_DELTA_DOMAIN:
- if (r->domain) {
- NDR_CHECK(ndr_push_netr_DELTA_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
- }
- break;
-
- case NETR_DELTA_GROUP:
- if (r->group) {
- NDR_CHECK(ndr_push_netr_DELTA_GROUP(ndr, NDR_SCALARS|NDR_BUFFERS, r->group));
- }
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- if (r->rename_group) {
- NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_group));
- }
- break;
-
- case NETR_DELTA_USER:
- if (r->user) {
- NDR_CHECK(ndr_push_netr_DELTA_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user));
- }
- break;
-
- case NETR_DELTA_DELETE_USER:
- break;
-
- case NETR_DELTA_RENAME_USER:
- if (r->rename_user) {
- NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_user));
- }
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- if (r->group_member) {
- NDR_CHECK(ndr_push_netr_DELTA_GROUP_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->group_member));
- }
- break;
-
- case NETR_DELTA_ALIAS:
- if (r->alias) {
- NDR_CHECK(ndr_push_netr_DELTA_ALIAS(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias));
- }
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- if (r->rename_alias) {
- NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_alias));
- }
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- if (r->alias_member) {
- NDR_CHECK(ndr_push_netr_DELTA_ALIAS_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias_member));
- }
- break;
-
- case NETR_DELTA_POLICY:
- if (r->policy) {
- NDR_CHECK(ndr_push_netr_DELTA_POLICY(ndr, NDR_SCALARS|NDR_BUFFERS, r->policy));
- }
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- if (r->trusted_domain) {
- NDR_CHECK(ndr_push_netr_DELTA_TRUSTED_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->trusted_domain));
- }
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- break;
-
- case NETR_DELTA_ACCOUNT:
- if (r->account) {
- NDR_CHECK(ndr_push_netr_DELTA_ACCOUNT(ndr, NDR_SCALARS|NDR_BUFFERS, r->account));
- }
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- break;
-
- case NETR_DELTA_SECRET:
- if (r->secret) {
- NDR_CHECK(ndr_push_netr_DELTA_SECRET(ndr, NDR_SCALARS|NDR_BUFFERS, r->secret));
- }
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- if (r->delete_group) {
- NDR_CHECK(ndr_push_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_group));
- }
- break;
-
- case NETR_DELTA_DELETE_USER2:
- if (r->delete_user) {
- NDR_CHECK(ndr_push_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_user));
- }
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- if (r->modified_count) {
- NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->modified_count));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_UNION(struct ndr_pull *ndr, int ndr_flags, union netr_DELTA_UNION *r)
-{
- int level;
- uint16_t _level;
- TALLOC_CTX *_mem_save_domain_0;
- TALLOC_CTX *_mem_save_group_0;
- TALLOC_CTX *_mem_save_rename_group_0;
- TALLOC_CTX *_mem_save_user_0;
- TALLOC_CTX *_mem_save_rename_user_0;
- TALLOC_CTX *_mem_save_group_member_0;
- TALLOC_CTX *_mem_save_alias_0;
- TALLOC_CTX *_mem_save_rename_alias_0;
- TALLOC_CTX *_mem_save_alias_member_0;
- TALLOC_CTX *_mem_save_policy_0;
- TALLOC_CTX *_mem_save_trusted_domain_0;
- TALLOC_CTX *_mem_save_account_0;
- TALLOC_CTX *_mem_save_secret_0;
- TALLOC_CTX *_mem_save_delete_group_0;
- TALLOC_CTX *_mem_save_delete_user_0;
- TALLOC_CTX *_mem_save_modified_count_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case NETR_DELTA_DOMAIN: {
- uint32_t _ptr_domain;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- break; }
-
- case NETR_DELTA_GROUP: {
- uint32_t _ptr_group;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group));
- if (_ptr_group) {
- NDR_PULL_ALLOC(ndr, r->group);
- } else {
- r->group = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_GROUP: {
- break; }
-
- case NETR_DELTA_RENAME_GROUP: {
- uint32_t _ptr_rename_group;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_group));
- if (_ptr_rename_group) {
- NDR_PULL_ALLOC(ndr, r->rename_group);
- } else {
- r->rename_group = NULL;
- }
- break; }
-
- case NETR_DELTA_USER: {
- uint32_t _ptr_user;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_USER: {
- break; }
-
- case NETR_DELTA_RENAME_USER: {
- uint32_t _ptr_rename_user;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_user));
- if (_ptr_rename_user) {
- NDR_PULL_ALLOC(ndr, r->rename_user);
- } else {
- r->rename_user = NULL;
- }
- break; }
-
- case NETR_DELTA_GROUP_MEMBER: {
- uint32_t _ptr_group_member;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_member));
- if (_ptr_group_member) {
- NDR_PULL_ALLOC(ndr, r->group_member);
- } else {
- r->group_member = NULL;
- }
- break; }
-
- case NETR_DELTA_ALIAS: {
- uint32_t _ptr_alias;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alias));
- if (_ptr_alias) {
- NDR_PULL_ALLOC(ndr, r->alias);
- } else {
- r->alias = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_ALIAS: {
- break; }
-
- case NETR_DELTA_RENAME_ALIAS: {
- uint32_t _ptr_rename_alias;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_alias));
- if (_ptr_rename_alias) {
- NDR_PULL_ALLOC(ndr, r->rename_alias);
- } else {
- r->rename_alias = NULL;
- }
- break; }
-
- case NETR_DELTA_ALIAS_MEMBER: {
- uint32_t _ptr_alias_member;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alias_member));
- if (_ptr_alias_member) {
- NDR_PULL_ALLOC(ndr, r->alias_member);
- } else {
- r->alias_member = NULL;
- }
- break; }
-
- case NETR_DELTA_POLICY: {
- uint32_t _ptr_policy;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_policy));
- if (_ptr_policy) {
- NDR_PULL_ALLOC(ndr, r->policy);
- } else {
- r->policy = NULL;
- }
- break; }
-
- case NETR_DELTA_TRUSTED_DOMAIN: {
- uint32_t _ptr_trusted_domain;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domain));
- if (_ptr_trusted_domain) {
- NDR_PULL_ALLOC(ndr, r->trusted_domain);
- } else {
- r->trusted_domain = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_TRUST: {
- NDR_CHECK(ndr_pull_netr_DELTA_DELETE_TRUST(ndr, NDR_SCALARS, &r->delete_trust));
- break; }
-
- case NETR_DELTA_ACCOUNT: {
- uint32_t _ptr_account;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account));
- if (_ptr_account) {
- NDR_PULL_ALLOC(ndr, r->account);
- } else {
- r->account = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_ACCOUNT: {
- NDR_CHECK(ndr_pull_netr_DELTA_DELETE_ACCOUNT(ndr, NDR_SCALARS, &r->delete_account));
- break; }
-
- case NETR_DELTA_SECRET: {
- uint32_t _ptr_secret;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secret));
- if (_ptr_secret) {
- NDR_PULL_ALLOC(ndr, r->secret);
- } else {
- r->secret = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_SECRET: {
- NDR_CHECK(ndr_pull_netr_DELTA_DELETE_SECRET(ndr, NDR_SCALARS, &r->delete_secret));
- break; }
-
- case NETR_DELTA_DELETE_GROUP2: {
- uint32_t _ptr_delete_group;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_group));
- if (_ptr_delete_group) {
- NDR_PULL_ALLOC(ndr, r->delete_group);
- } else {
- r->delete_group = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_USER2: {
- uint32_t _ptr_delete_user;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_user));
- if (_ptr_delete_user) {
- NDR_PULL_ALLOC(ndr, r->delete_user);
- } else {
- r->delete_user = NULL;
- }
- break; }
-
- case NETR_DELTA_MODIFY_COUNT: {
- uint32_t _ptr_modified_count;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_modified_count));
- if (_ptr_modified_count) {
- NDR_PULL_ALLOC(ndr, r->modified_count);
- } else {
- r->modified_count = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case NETR_DELTA_DOMAIN:
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- break;
-
- case NETR_DELTA_GROUP:
- if (r->group) {
- _mem_save_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->group, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_GROUP(ndr, NDR_SCALARS|NDR_BUFFERS, r->group));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- if (r->rename_group) {
- _mem_save_rename_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->rename_group, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_group));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_group_0, 0);
- }
- break;
-
- case NETR_DELTA_USER:
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_USER:
- break;
-
- case NETR_DELTA_RENAME_USER:
- if (r->rename_user) {
- _mem_save_rename_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->rename_user, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_user));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_user_0, 0);
- }
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- if (r->group_member) {
- _mem_save_group_member_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->group_member, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_GROUP_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->group_member));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_member_0, 0);
- }
- break;
-
- case NETR_DELTA_ALIAS:
- if (r->alias) {
- _mem_save_alias_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->alias, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_ALIAS(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alias_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- if (r->rename_alias) {
- _mem_save_rename_alias_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->rename_alias, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_alias));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_alias_0, 0);
- }
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- if (r->alias_member) {
- _mem_save_alias_member_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->alias_member, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_ALIAS_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias_member));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alias_member_0, 0);
- }
- break;
-
- case NETR_DELTA_POLICY:
- if (r->policy) {
- _mem_save_policy_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->policy, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_POLICY(ndr, NDR_SCALARS|NDR_BUFFERS, r->policy));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_policy_0, 0);
- }
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- if (r->trusted_domain) {
- _mem_save_trusted_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domain, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_TRUSTED_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->trusted_domain));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domain_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- break;
-
- case NETR_DELTA_ACCOUNT:
- if (r->account) {
- _mem_save_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->account, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_ACCOUNT(ndr, NDR_SCALARS|NDR_BUFFERS, r->account));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- break;
-
- case NETR_DELTA_SECRET:
- if (r->secret) {
- _mem_save_secret_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->secret, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_SECRET(ndr, NDR_SCALARS|NDR_BUFFERS, r->secret));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secret_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- if (r->delete_group) {
- _mem_save_delete_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->delete_group, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_group));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delete_group_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_USER2:
- if (r->delete_user) {
- _mem_save_delete_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->delete_user, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_user));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delete_user_0, 0);
- }
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- if (r->modified_count) {
- _mem_save_modified_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->modified_count, 0);
- NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->modified_count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_modified_count_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_UNION *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_DELTA_UNION");
- switch (level) {
- case NETR_DELTA_DOMAIN:
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_netr_DELTA_DOMAIN(ndr, "domain", r->domain);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_GROUP:
- ndr_print_ptr(ndr, "group", r->group);
- ndr->depth++;
- if (r->group) {
- ndr_print_netr_DELTA_GROUP(ndr, "group", r->group);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- ndr_print_ptr(ndr, "rename_group", r->rename_group);
- ndr->depth++;
- if (r->rename_group) {
- ndr_print_netr_DELTA_RENAME(ndr, "rename_group", r->rename_group);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_USER:
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_netr_DELTA_USER(ndr, "user", r->user);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_USER:
- break;
-
- case NETR_DELTA_RENAME_USER:
- ndr_print_ptr(ndr, "rename_user", r->rename_user);
- ndr->depth++;
- if (r->rename_user) {
- ndr_print_netr_DELTA_RENAME(ndr, "rename_user", r->rename_user);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- ndr_print_ptr(ndr, "group_member", r->group_member);
- ndr->depth++;
- if (r->group_member) {
- ndr_print_netr_DELTA_GROUP_MEMBER(ndr, "group_member", r->group_member);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_ALIAS:
- ndr_print_ptr(ndr, "alias", r->alias);
- ndr->depth++;
- if (r->alias) {
- ndr_print_netr_DELTA_ALIAS(ndr, "alias", r->alias);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- ndr_print_ptr(ndr, "rename_alias", r->rename_alias);
- ndr->depth++;
- if (r->rename_alias) {
- ndr_print_netr_DELTA_RENAME(ndr, "rename_alias", r->rename_alias);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- ndr_print_ptr(ndr, "alias_member", r->alias_member);
- ndr->depth++;
- if (r->alias_member) {
- ndr_print_netr_DELTA_ALIAS_MEMBER(ndr, "alias_member", r->alias_member);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_POLICY:
- ndr_print_ptr(ndr, "policy", r->policy);
- ndr->depth++;
- if (r->policy) {
- ndr_print_netr_DELTA_POLICY(ndr, "policy", r->policy);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- ndr_print_ptr(ndr, "trusted_domain", r->trusted_domain);
- ndr->depth++;
- if (r->trusted_domain) {
- ndr_print_netr_DELTA_TRUSTED_DOMAIN(ndr, "trusted_domain", r->trusted_domain);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- ndr_print_netr_DELTA_DELETE_TRUST(ndr, "delete_trust", &r->delete_trust);
- break;
-
- case NETR_DELTA_ACCOUNT:
- ndr_print_ptr(ndr, "account", r->account);
- ndr->depth++;
- if (r->account) {
- ndr_print_netr_DELTA_ACCOUNT(ndr, "account", r->account);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- ndr_print_netr_DELTA_DELETE_ACCOUNT(ndr, "delete_account", &r->delete_account);
- break;
-
- case NETR_DELTA_SECRET:
- ndr_print_ptr(ndr, "secret", r->secret);
- ndr->depth++;
- if (r->secret) {
- ndr_print_netr_DELTA_SECRET(ndr, "secret", r->secret);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- ndr_print_netr_DELTA_DELETE_SECRET(ndr, "delete_secret", &r->delete_secret);
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- ndr_print_ptr(ndr, "delete_group", r->delete_group);
- ndr->depth++;
- if (r->delete_group) {
- ndr_print_netr_DELTA_DELETE_USER(ndr, "delete_group", r->delete_group);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_USER2:
- ndr_print_ptr(ndr, "delete_user", r->delete_user);
- ndr->depth++;
- if (r->delete_user) {
- ndr_print_netr_DELTA_DELETE_USER(ndr, "delete_user", r->delete_user);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- ndr_print_ptr(ndr, "modified_count", r->modified_count);
- ndr->depth++;
- if (r->modified_count) {
- ndr_print_udlong(ndr, "modified_count", *r->modified_count);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_netr_DELTA_ID_UNION(struct ndr_push *ndr, int ndr_flags, const union netr_DELTA_ID_UNION *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, level));
- switch (level) {
- case NETR_DELTA_DOMAIN:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_GROUP:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_USER:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_DELETE_USER:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_RENAME_USER:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_ALIAS:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_POLICY:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- break;
-
- case NETR_DELTA_ACCOUNT:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- break;
-
- case NETR_DELTA_SECRET:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_DELETE_USER2:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case NETR_DELTA_DOMAIN:
- break;
-
- case NETR_DELTA_GROUP:
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- break;
-
- case NETR_DELTA_USER:
- break;
-
- case NETR_DELTA_DELETE_USER:
- break;
-
- case NETR_DELTA_RENAME_USER:
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- break;
-
- case NETR_DELTA_ALIAS:
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- break;
-
- case NETR_DELTA_POLICY:
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- break;
-
- case NETR_DELTA_ACCOUNT:
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- break;
-
- case NETR_DELTA_SECRET:
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- break;
-
- case NETR_DELTA_DELETE_USER2:
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_ID_UNION(struct ndr_pull *ndr, int ndr_flags, union netr_DELTA_ID_UNION *r)
-{
- int level;
- uint16_t _level;
- TALLOC_CTX *_mem_save_sid_0;
- TALLOC_CTX *_mem_save_name_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case NETR_DELTA_DOMAIN: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_GROUP: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_DELETE_GROUP: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_RENAME_GROUP: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_USER: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_DELETE_USER: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_RENAME_USER: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_GROUP_MEMBER: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_ALIAS: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_DELETE_ALIAS: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_RENAME_ALIAS: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_ALIAS_MEMBER: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_POLICY: {
- uint32_t _ptr_sid;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- break; }
-
- case NETR_DELTA_TRUSTED_DOMAIN: {
- uint32_t _ptr_sid;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_TRUST: {
- uint32_t _ptr_sid;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- break; }
-
- case NETR_DELTA_ACCOUNT: {
- uint32_t _ptr_sid;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_ACCOUNT: {
- uint32_t _ptr_sid;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- break; }
-
- case NETR_DELTA_SECRET: {
- uint32_t _ptr_name;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_SECRET: {
- uint32_t _ptr_name;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- break; }
-
- case NETR_DELTA_DELETE_GROUP2: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_DELETE_USER2: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
- break; }
-
- case NETR_DELTA_MODIFY_COUNT: {
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case NETR_DELTA_DOMAIN:
- break;
-
- case NETR_DELTA_GROUP:
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- break;
-
- case NETR_DELTA_USER:
- break;
-
- case NETR_DELTA_DELETE_USER:
- break;
-
- case NETR_DELTA_RENAME_USER:
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- break;
-
- case NETR_DELTA_ALIAS:
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- break;
-
- case NETR_DELTA_POLICY:
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- break;
-
- case NETR_DELTA_ACCOUNT:
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- break;
-
- case NETR_DELTA_SECRET:
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- break;
-
- case NETR_DELTA_DELETE_USER2:
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_ID_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_ID_UNION *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_DELTA_ID_UNION");
- switch (level) {
- case NETR_DELTA_DOMAIN:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_GROUP:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_DELETE_GROUP:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_RENAME_GROUP:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_USER:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_DELETE_USER:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_RENAME_USER:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_GROUP_MEMBER:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_ALIAS:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_DELETE_ALIAS:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_RENAME_ALIAS:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_ALIAS_MEMBER:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_POLICY:
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_TRUSTED_DOMAIN:
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_TRUST:
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_ACCOUNT:
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_ACCOUNT:
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_SECRET:
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_SECRET:
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- break;
-
- case NETR_DELTA_DELETE_GROUP2:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_DELETE_USER2:
- ndr_print_uint32(ndr, "rid", r->rid);
- break;
-
- case NETR_DELTA_MODIFY_COUNT:
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_netr_DELTA_ENUM(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ENUM *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, r->delta_type));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->delta_id_union, r->delta_type));
- NDR_CHECK(ndr_push_netr_DELTA_ID_UNION(ndr, NDR_SCALARS, &r->delta_id_union));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->delta_union, r->delta_type));
- NDR_CHECK(ndr_push_netr_DELTA_UNION(ndr, NDR_SCALARS, &r->delta_union));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_DELTA_ID_UNION(ndr, NDR_BUFFERS, &r->delta_id_union));
- NDR_CHECK(ndr_push_netr_DELTA_UNION(ndr, NDR_BUFFERS, &r->delta_union));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_ENUM(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ENUM *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_DeltaEnum(ndr, NDR_SCALARS, &r->delta_type));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->delta_id_union, r->delta_type));
- NDR_CHECK(ndr_pull_netr_DELTA_ID_UNION(ndr, NDR_SCALARS, &r->delta_id_union));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->delta_union, r->delta_type));
- NDR_CHECK(ndr_pull_netr_DELTA_UNION(ndr, NDR_SCALARS, &r->delta_union));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_DELTA_ID_UNION(ndr, NDR_BUFFERS, &r->delta_id_union));
- NDR_CHECK(ndr_pull_netr_DELTA_UNION(ndr, NDR_BUFFERS, &r->delta_union));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_ENUM(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM *r)
-{
- ndr_print_struct(ndr, name, "netr_DELTA_ENUM");
- ndr->depth++;
- ndr_print_netr_DeltaEnum(ndr, "delta_type", r->delta_type);
- ndr_print_set_switch_value(ndr, &r->delta_id_union, r->delta_type);
- ndr_print_netr_DELTA_ID_UNION(ndr, "delta_id_union", &r->delta_id_union);
- ndr_print_set_switch_value(ndr, &r->delta_union, r->delta_type);
- ndr_print_netr_DELTA_UNION(ndr, "delta_union", &r->delta_union);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DELTA_ENUM_ARRAY(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ENUM_ARRAY *r)
-{
- uint32_t cntr_delta_enum_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_deltas));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->delta_enum));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->delta_enum) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_deltas));
- for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
- NDR_CHECK(ndr_push_netr_DELTA_ENUM(ndr, NDR_SCALARS, &r->delta_enum[cntr_delta_enum_1]));
- }
- for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
- NDR_CHECK(ndr_push_netr_DELTA_ENUM(ndr, NDR_BUFFERS, &r->delta_enum[cntr_delta_enum_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DELTA_ENUM_ARRAY(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ENUM_ARRAY *r)
-{
- uint32_t _ptr_delta_enum;
- uint32_t cntr_delta_enum_1;
- TALLOC_CTX *_mem_save_delta_enum_0;
- TALLOC_CTX *_mem_save_delta_enum_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_deltas));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum));
- if (_ptr_delta_enum) {
- NDR_PULL_ALLOC(ndr, r->delta_enum);
- } else {
- r->delta_enum = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->delta_enum) {
- _mem_save_delta_enum_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->delta_enum, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->delta_enum));
- NDR_PULL_ALLOC_N(ndr, r->delta_enum, ndr_get_array_size(ndr, &r->delta_enum));
- _mem_save_delta_enum_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->delta_enum, 0);
- for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
- NDR_CHECK(ndr_pull_netr_DELTA_ENUM(ndr, NDR_SCALARS, &r->delta_enum[cntr_delta_enum_1]));
- }
- for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
- NDR_CHECK(ndr_pull_netr_DELTA_ENUM(ndr, NDR_BUFFERS, &r->delta_enum[cntr_delta_enum_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_0, 0);
- }
- if (r->delta_enum) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->delta_enum, r->num_deltas));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DELTA_ENUM_ARRAY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM_ARRAY *r)
-{
- uint32_t cntr_delta_enum_1;
- ndr_print_struct(ndr, name, "netr_DELTA_ENUM_ARRAY");
- ndr->depth++;
- ndr_print_uint32(ndr, "num_deltas", r->num_deltas);
- ndr_print_ptr(ndr, "delta_enum", r->delta_enum);
- ndr->depth++;
- if (r->delta_enum) {
- ndr->print(ndr, "%s: ARRAY(%d)", "delta_enum", r->num_deltas);
- ndr->depth++;
- for (cntr_delta_enum_1=0;cntr_delta_enum_1<r->num_deltas;cntr_delta_enum_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_delta_enum_1);
- if (idx_1) {
- ndr_print_netr_DELTA_ENUM(ndr, "delta_enum", &r->delta_enum[cntr_delta_enum_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_UAS_INFO_0(struct ndr_push *ndr, int ndr_flags, const struct netr_UAS_INFO_0 *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->computer_name, 16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timecreated));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_number));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_UAS_INFO_0(struct ndr_pull *ndr, int ndr_flags, struct netr_UAS_INFO_0 *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->computer_name, 16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timecreated));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_number));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_UAS_INFO_0(struct ndr_print *ndr, const char *name, const struct netr_UAS_INFO_0 *r)
-{
- ndr_print_struct(ndr, name, "netr_UAS_INFO_0");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_array_uint8(ndr, "computer_name", r->computer_name, 16);
- ndr_print_uint32(ndr, "timecreated", r->timecreated);
- ndr_print_uint32(ndr, "serial_number", r->serial_number);
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-NTSTATUS ndr_push_netr_AccountBuffer(struct ndr_push *ndr, int ndr_flags, const struct netr_AccountBuffer *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->blob));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_AccountBuffer(struct ndr_pull *ndr, int ndr_flags, struct netr_AccountBuffer *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->blob));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_AccountBuffer(struct ndr_print *ndr, const char *name, const struct netr_AccountBuffer *r)
-{
- ndr_print_struct(ndr, name, "netr_AccountBuffer");
- ndr->depth++;
- ndr_print_DATA_BLOB(ndr, "blob", r->blob);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETLOGON_INFO_1(struct ndr_push *ndr, int ndr_flags, const struct netr_NETLOGON_INFO_1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pdc_connection_status));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETLOGON_INFO_1(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pdc_connection_status));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETLOGON_INFO_1(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_1 *r)
-{
- ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_1");
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", r->flags);
- ndr_print_uint32(ndr, "pdc_connection_status", r->pdc_connection_status);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETLOGON_INFO_2(struct ndr_push *ndr, int ndr_flags, const struct netr_NETLOGON_INFO_2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pdc_connection_status));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->trusted_dc_name, ndr_charset_length(r->trusted_dc_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tc_connection_status));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETLOGON_INFO_2(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pdc_connection_status));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_dc_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->trusted_dc_name));
- if (ndr_get_array_length(ndr, &r->trusted_dc_name) > ndr_get_array_size(ndr, &r->trusted_dc_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->trusted_dc_name), ndr_get_array_length(ndr, &r->trusted_dc_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->trusted_dc_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->trusted_dc_name, ndr_get_array_length(ndr, &r->trusted_dc_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tc_connection_status));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETLOGON_INFO_2(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_2 *r)
-{
- ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_2");
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", r->flags);
- ndr_print_uint32(ndr, "pdc_connection_status", r->pdc_connection_status);
- ndr_print_string(ndr, "trusted_dc_name", r->trusted_dc_name);
- ndr_print_uint32(ndr, "tc_connection_status", r->tc_connection_status);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETLOGON_INFO_3(struct ndr_push *ndr, int ndr_flags, const struct netr_NETLOGON_INFO_3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_attempts));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETLOGON_INFO_3(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_attempts));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETLOGON_INFO_3(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_3 *r)
-{
- ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_3");
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", r->flags);
- ndr_print_uint32(ndr, "logon_attempts", r->logon_attempts);
- ndr_print_uint32(ndr, "unknown1", r->unknown1);
- ndr_print_uint32(ndr, "unknown2", r->unknown2);
- ndr_print_uint32(ndr, "unknown3", r->unknown3);
- ndr_print_uint32(ndr, "unknown4", r->unknown4);
- ndr_print_uint32(ndr, "unknown5", r->unknown5);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_CONTROL_QUERY_INFORMATION(struct ndr_push *ndr, int ndr_flags, const union netr_CONTROL_QUERY_INFORMATION *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 1:
- if (r->info1) {
- NDR_CHECK(ndr_push_netr_NETLOGON_INFO_1(ndr, NDR_SCALARS, r->info1));
- }
- break;
-
- case 2:
- if (r->info2) {
- NDR_CHECK(ndr_push_netr_NETLOGON_INFO_2(ndr, NDR_SCALARS, r->info2));
- }
- break;
-
- case 3:
- if (r->info3) {
- NDR_CHECK(ndr_push_netr_NETLOGON_INFO_3(ndr, NDR_SCALARS, r->info3));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_CONTROL_QUERY_INFORMATION(struct ndr_pull *ndr, int ndr_flags, union netr_CONTROL_QUERY_INFORMATION *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info1_0;
- TALLOC_CTX *_mem_save_info2_0;
- TALLOC_CTX *_mem_save_info3_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 1: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_info2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
- if (_ptr_info2) {
- NDR_PULL_ALLOC(ndr, r->info2);
- } else {
- r->info2 = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_info3;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
- if (_ptr_info3) {
- NDR_PULL_ALLOC(ndr, r->info3);
- } else {
- r->info3 = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 1:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_1(ndr, NDR_SCALARS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- case 2:
- if (r->info2) {
- _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
- NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_2(ndr, NDR_SCALARS, r->info2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
- }
- break;
-
- case 3:
- if (r->info3) {
- _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
- NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_3(ndr, NDR_SCALARS, r->info3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_CONTROL_QUERY_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_QUERY_INFORMATION *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_CONTROL_QUERY_INFORMATION");
- switch (level) {
- case 1:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_netr_NETLOGON_INFO_1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "info2", r->info2);
- ndr->depth++;
- if (r->info2) {
- ndr_print_netr_NETLOGON_INFO_2(ndr, "info2", r->info2);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "info3", r->info3);
- ndr->depth++;
- if (r->info3) {
- ndr_print_netr_NETLOGON_INFO_3(ndr, "info3", r->info3);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_netr_LogonControlCode(struct ndr_push *ndr, int ndr_flags, enum netr_LogonControlCode r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonControlCode(struct ndr_pull *ndr, int ndr_flags, enum netr_LogonControlCode *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonControlCode(struct ndr_print *ndr, const char *name, enum netr_LogonControlCode r)
-{
- const char *val = NULL;
-
- switch (r) {
- case NETLOGON_CONTROL_REDISCOVER: val = "NETLOGON_CONTROL_REDISCOVER"; break;
- case NETLOGON_CONTROL_TC_QUERY: val = "NETLOGON_CONTROL_TC_QUERY"; break;
- case NETLOGON_CONTROL_TRANSPORT_NOTIFY: val = "NETLOGON_CONTROL_TRANSPORT_NOTIFY"; break;
- case NETLOGON_CONTROL_SET_DBFLAG: val = "NETLOGON_CONTROL_SET_DBFLAG"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_netr_CONTROL_DATA_INFORMATION(struct ndr_push *ndr, int ndr_flags, const union netr_CONTROL_DATA_INFORMATION *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case NETLOGON_CONTROL_REDISCOVER:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- break;
-
- case NETLOGON_CONTROL_TC_QUERY:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- break;
-
- case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- break;
-
- case NETLOGON_CONTROL_SET_DBFLAG:
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->debug_level));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case NETLOGON_CONTROL_REDISCOVER:
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- break;
-
- case NETLOGON_CONTROL_TC_QUERY:
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- break;
-
- case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- break;
-
- case NETLOGON_CONTROL_SET_DBFLAG:
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_CONTROL_DATA_INFORMATION(struct ndr_pull *ndr, int ndr_flags, union netr_CONTROL_DATA_INFORMATION *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_domain_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case NETLOGON_CONTROL_REDISCOVER: {
- uint32_t _ptr_domain;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- break; }
-
- case NETLOGON_CONTROL_TC_QUERY: {
- uint32_t _ptr_domain;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- break; }
-
- case NETLOGON_CONTROL_TRANSPORT_NOTIFY: {
- uint32_t _ptr_domain;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- break; }
-
- case NETLOGON_CONTROL_SET_DBFLAG: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->debug_level));
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case NETLOGON_CONTROL_REDISCOVER:
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- break;
-
- case NETLOGON_CONTROL_TC_QUERY:
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- break;
-
- case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- break;
-
- case NETLOGON_CONTROL_SET_DBFLAG:
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_CONTROL_DATA_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_DATA_INFORMATION *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_CONTROL_DATA_INFORMATION");
- switch (level) {
- case NETLOGON_CONTROL_REDISCOVER:
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- break;
-
- case NETLOGON_CONTROL_TC_QUERY:
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- break;
-
- case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- break;
-
- case NETLOGON_CONTROL_SET_DBFLAG:
- ndr_print_uint32(ndr, "debug_level", r->debug_level);
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_netr_DsRGetDCNameInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRGetDCNameInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_unc));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_address));
- NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->dc_address_type));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->forest_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dc_flags));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_site_name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_site_name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->dc_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_unc, ndr_charset_length(r->dc_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->dc_address) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_address, ndr_charset_length(r->dc_address, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->domain_guid));
- if (r->domain_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain_name, ndr_charset_length(r->domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->forest_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->forest_name, ndr_charset_length(r->forest_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->dc_site_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_site_name, ndr_charset_length(r->dc_site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->client_site_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_site_name, ndr_charset_length(r->client_site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DsRGetDCNameInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRGetDCNameInfo *r)
-{
- uint32_t _ptr_dc_unc;
- TALLOC_CTX *_mem_save_dc_unc_0;
- uint32_t _ptr_dc_address;
- TALLOC_CTX *_mem_save_dc_address_0;
- uint32_t _ptr_domain_name;
- TALLOC_CTX *_mem_save_domain_name_0;
- uint32_t _ptr_forest_name;
- TALLOC_CTX *_mem_save_forest_name_0;
- uint32_t _ptr_dc_site_name;
- TALLOC_CTX *_mem_save_dc_site_name_0;
- uint32_t _ptr_client_site_name;
- TALLOC_CTX *_mem_save_client_site_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_unc));
- if (_ptr_dc_unc) {
- NDR_PULL_ALLOC(ndr, r->dc_unc);
- } else {
- r->dc_unc = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_address));
- if (_ptr_dc_address) {
- NDR_PULL_ALLOC(ndr, r->dc_address);
- } else {
- r->dc_address = NULL;
- }
- NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->dc_address_type));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
- if (_ptr_domain_name) {
- NDR_PULL_ALLOC(ndr, r->domain_name);
- } else {
- r->domain_name = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_name));
- if (_ptr_forest_name) {
- NDR_PULL_ALLOC(ndr, r->forest_name);
- } else {
- r->forest_name = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dc_flags));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_site_name));
- if (_ptr_dc_site_name) {
- NDR_PULL_ALLOC(ndr, r->dc_site_name);
- } else {
- r->dc_site_name = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_site_name));
- if (_ptr_client_site_name) {
- NDR_PULL_ALLOC(ndr, r->client_site_name);
- } else {
- r->client_site_name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->dc_unc) {
- _mem_save_dc_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->dc_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_unc));
- if (ndr_get_array_length(ndr, &r->dc_unc) > ndr_get_array_size(ndr, &r->dc_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dc_unc), ndr_get_array_length(ndr, &r->dc_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_unc, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_unc_0, 0);
- }
- if (r->dc_address) {
- _mem_save_dc_address_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->dc_address, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_address));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_address));
- if (ndr_get_array_length(ndr, &r->dc_address) > ndr_get_array_size(ndr, &r->dc_address)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dc_address), ndr_get_array_length(ndr, &r->dc_address));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_address, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_address_0, 0);
- }
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->domain_guid));
- if (r->domain_name) {
- _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain_name));
- if (ndr_get_array_length(ndr, &r->domain_name) > ndr_get_array_size(ndr, &r->domain_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain_name), ndr_get_array_length(ndr, &r->domain_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain_name, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
- }
- if (r->forest_name) {
- _mem_save_forest_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->forest_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->forest_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->forest_name));
- if (ndr_get_array_length(ndr, &r->forest_name) > ndr_get_array_size(ndr, &r->forest_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->forest_name), ndr_get_array_length(ndr, &r->forest_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->forest_name, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_name_0, 0);
- }
- if (r->dc_site_name) {
- _mem_save_dc_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->dc_site_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_site_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_site_name));
- if (ndr_get_array_length(ndr, &r->dc_site_name) > ndr_get_array_size(ndr, &r->dc_site_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dc_site_name), ndr_get_array_length(ndr, &r->dc_site_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_site_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_site_name, ndr_get_array_length(ndr, &r->dc_site_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_site_name_0, 0);
- }
- if (r->client_site_name) {
- _mem_save_client_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client_site_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client_site_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client_site_name));
- if (ndr_get_array_length(ndr, &r->client_site_name) > ndr_get_array_size(ndr, &r->client_site_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_site_name), ndr_get_array_length(ndr, &r->client_site_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_site_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_site_name, ndr_get_array_length(ndr, &r->client_site_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_site_name_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r)
-{
- ndr_print_struct(ndr, name, "netr_DsRGetDCNameInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "dc_unc", r->dc_unc);
- ndr->depth++;
- if (r->dc_unc) {
- ndr_print_string(ndr, "dc_unc", r->dc_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "dc_address", r->dc_address);
- ndr->depth++;
- if (r->dc_address) {
- ndr_print_string(ndr, "dc_address", r->dc_address);
- }
- ndr->depth--;
- ndr_print_int32(ndr, "dc_address_type", r->dc_address_type);
- ndr_print_GUID(ndr, "domain_guid", &r->domain_guid);
- ndr_print_ptr(ndr, "domain_name", r->domain_name);
- ndr->depth++;
- if (r->domain_name) {
- ndr_print_string(ndr, "domain_name", r->domain_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "forest_name", r->forest_name);
- ndr->depth++;
- if (r->forest_name) {
- ndr_print_string(ndr, "forest_name", r->forest_name);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "dc_flags", r->dc_flags);
- ndr_print_ptr(ndr, "dc_site_name", r->dc_site_name);
- ndr->depth++;
- if (r->dc_site_name) {
- ndr_print_string(ndr, "dc_site_name", r->dc_site_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "client_site_name", r->client_site_name);
- ndr->depth++;
- if (r->client_site_name) {
- ndr_print_string(ndr, "client_site_name", r->client_site_name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_Blob(struct ndr_push *ndr, int ndr_flags, const struct netr_Blob *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_Blob(struct ndr_pull *ndr, int ndr_flags, struct netr_Blob *r)
-{
- uint32_t _ptr_data;
- TALLOC_CTX *_mem_save_data_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->data);
- } else {
- r->data = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
- NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_Blob(struct ndr_print *ndr, const char *name, const struct netr_Blob *r)
-{
- ndr_print_struct(ndr, name, "netr_Blob");
- ndr->depth++;
- ndr_print_uint32(ndr, "length", r->length);
- ndr_print_ptr(ndr, "data", r->data);
- ndr->depth++;
- if (r->data) {
- ndr_print_array_uint8(ndr, "data", r->data, r->length);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_BinaryString(struct ndr_push *ndr, int ndr_flags, const struct netr_BinaryString *r)
-{
- uint32_t cntr_data_1;
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length / 2));
- for (cntr_data_1 = 0; cntr_data_1 < r->length / 2; cntr_data_1++) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->data[cntr_data_1]));
- }
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_BinaryString(struct ndr_pull *ndr, int ndr_flags, struct netr_BinaryString *r)
-{
- uint32_t _ptr_data;
- uint32_t cntr_data_1;
- TALLOC_CTX *_mem_save_data_0;
- TALLOC_CTX *_mem_save_data_1;
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->data);
- } else {
- r->data = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
- if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
- }
- NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
- _mem_save_data_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
- for (cntr_data_1 = 0; cntr_data_1 < r->length / 2; cntr_data_1++) {
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->data[cntr_data_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size / 2));
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length / 2));
- }
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_BinaryString(struct ndr_print *ndr, const char *name, const struct netr_BinaryString *r)
-{
- uint32_t cntr_data_1;
- ndr_print_struct(ndr, name, "netr_BinaryString");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_uint16(ndr, "length", r->length);
- ndr_print_uint16(ndr, "size", r->size);
- ndr_print_ptr(ndr, "data", r->data);
- ndr->depth++;
- if (r->data) {
- ndr->print(ndr, "%s: ARRAY(%d)", "data", r->length / 2);
- ndr->depth++;
- for (cntr_data_1=0;cntr_data_1<r->length / 2;cntr_data_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_data_1);
- if (idx_1) {
- ndr_print_uint16(ndr, "data", r->data[cntr_data_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-NTSTATUS ndr_push_netr_DomainQuery1(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainQuery1 *r)
-{
- uint32_t cntr_unknown7_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_SCALARS, &r->blob));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_domain));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_site));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown1));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown2));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown3));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown4));
- NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_SCALARS, &r->blob2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->product));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown6));
- for (cntr_unknown7_0 = 0; cntr_unknown7_0 < 4; cntr_unknown7_0++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7[cntr_unknown7_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_BUFFERS, &r->blob));
- if (r->workstation_domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->workstation_domain, ndr_charset_length(r->workstation_domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->workstation_site) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_site, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_site, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->workstation_site, ndr_charset_length(r->workstation_site, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->unknown1) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown1, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown1, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown1, ndr_charset_length(r->unknown1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->unknown2) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown2, ndr_charset_length(r->unknown2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->unknown3) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown3, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown3, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown3, ndr_charset_length(r->unknown3, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->unknown4) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown4, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown4, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown4, ndr_charset_length(r->unknown4, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_BUFFERS, &r->blob2));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->product));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown5));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown6));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DomainQuery1(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainQuery1 *r)
-{
- uint32_t _ptr_workstation_domain;
- TALLOC_CTX *_mem_save_workstation_domain_0;
- uint32_t _ptr_workstation_site;
- TALLOC_CTX *_mem_save_workstation_site_0;
- uint32_t _ptr_unknown1;
- TALLOC_CTX *_mem_save_unknown1_0;
- uint32_t _ptr_unknown2;
- TALLOC_CTX *_mem_save_unknown2_0;
- uint32_t _ptr_unknown3;
- TALLOC_CTX *_mem_save_unknown3_0;
- uint32_t _ptr_unknown4;
- TALLOC_CTX *_mem_save_unknown4_0;
- uint32_t cntr_unknown7_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_SCALARS, &r->blob));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_domain));
- if (_ptr_workstation_domain) {
- NDR_PULL_ALLOC(ndr, r->workstation_domain);
- } else {
- r->workstation_domain = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_site));
- if (_ptr_workstation_site) {
- NDR_PULL_ALLOC(ndr, r->workstation_site);
- } else {
- r->workstation_site = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown1));
- if (_ptr_unknown1) {
- NDR_PULL_ALLOC(ndr, r->unknown1);
- } else {
- r->unknown1 = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2));
- if (_ptr_unknown2) {
- NDR_PULL_ALLOC(ndr, r->unknown2);
- } else {
- r->unknown2 = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown3));
- if (_ptr_unknown3) {
- NDR_PULL_ALLOC(ndr, r->unknown3);
- } else {
- r->unknown3 = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown4));
- if (_ptr_unknown4) {
- NDR_PULL_ALLOC(ndr, r->unknown4);
- } else {
- r->unknown4 = NULL;
- }
- NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_SCALARS, &r->blob2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->product));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown5));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown6));
- for (cntr_unknown7_0 = 0; cntr_unknown7_0 < 4; cntr_unknown7_0++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7[cntr_unknown7_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_BUFFERS, &r->blob));
- if (r->workstation_domain) {
- _mem_save_workstation_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->workstation_domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->workstation_domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->workstation_domain));
- if (ndr_get_array_length(ndr, &r->workstation_domain) > ndr_get_array_size(ndr, &r->workstation_domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->workstation_domain), ndr_get_array_length(ndr, &r->workstation_domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->workstation_domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->workstation_domain, ndr_get_array_length(ndr, &r->workstation_domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_domain_0, 0);
- }
- if (r->workstation_site) {
- _mem_save_workstation_site_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->workstation_site, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->workstation_site));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->workstation_site));
- if (ndr_get_array_length(ndr, &r->workstation_site) > ndr_get_array_size(ndr, &r->workstation_site)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->workstation_site), ndr_get_array_length(ndr, &r->workstation_site));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->workstation_site), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->workstation_site, ndr_get_array_length(ndr, &r->workstation_site), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_site_0, 0);
- }
- if (r->unknown1) {
- _mem_save_unknown1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->unknown1, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown1));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown1));
- if (ndr_get_array_length(ndr, &r->unknown1) > ndr_get_array_size(ndr, &r->unknown1)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown1), ndr_get_array_length(ndr, &r->unknown1));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown1), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown1, ndr_get_array_length(ndr, &r->unknown1), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown1_0, 0);
- }
- if (r->unknown2) {
- _mem_save_unknown2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->unknown2, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown2));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown2));
- if (ndr_get_array_length(ndr, &r->unknown2) > ndr_get_array_size(ndr, &r->unknown2)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown2), ndr_get_array_length(ndr, &r->unknown2));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown2, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_0, 0);
- }
- if (r->unknown3) {
- _mem_save_unknown3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->unknown3, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown3));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown3));
- if (ndr_get_array_length(ndr, &r->unknown3) > ndr_get_array_size(ndr, &r->unknown3)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown3), ndr_get_array_length(ndr, &r->unknown3));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown3), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown3, ndr_get_array_length(ndr, &r->unknown3), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown3_0, 0);
- }
- if (r->unknown4) {
- _mem_save_unknown4_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->unknown4, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown4));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown4));
- if (ndr_get_array_length(ndr, &r->unknown4) > ndr_get_array_size(ndr, &r->unknown4)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown4), ndr_get_array_length(ndr, &r->unknown4));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown4), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown4, ndr_get_array_length(ndr, &r->unknown4), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown4_0, 0);
- }
- NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_BUFFERS, &r->blob2));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->product));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown5));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown6));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DomainQuery1(struct ndr_print *ndr, const char *name, const struct netr_DomainQuery1 *r)
-{
- uint32_t cntr_unknown7_0;
- ndr_print_struct(ndr, name, "netr_DomainQuery1");
- ndr->depth++;
- ndr_print_netr_Blob(ndr, "blob", &r->blob);
- ndr_print_ptr(ndr, "workstation_domain", r->workstation_domain);
- ndr->depth++;
- if (r->workstation_domain) {
- ndr_print_string(ndr, "workstation_domain", r->workstation_domain);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "workstation_site", r->workstation_site);
- ndr->depth++;
- if (r->workstation_site) {
- ndr_print_string(ndr, "workstation_site", r->workstation_site);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "unknown1", r->unknown1);
- ndr->depth++;
- if (r->unknown1) {
- ndr_print_string(ndr, "unknown1", r->unknown1);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "unknown2", r->unknown2);
- ndr->depth++;
- if (r->unknown2) {
- ndr_print_string(ndr, "unknown2", r->unknown2);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "unknown3", r->unknown3);
- ndr->depth++;
- if (r->unknown3) {
- ndr_print_string(ndr, "unknown3", r->unknown3);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "unknown4", r->unknown4);
- ndr->depth++;
- if (r->unknown4) {
- ndr_print_string(ndr, "unknown4", r->unknown4);
- }
- ndr->depth--;
- ndr_print_netr_BinaryString(ndr, "blob2", &r->blob2);
- ndr_print_lsa_String(ndr, "product", &r->product);
- ndr_print_lsa_String(ndr, "unknown5", &r->unknown5);
- ndr_print_lsa_String(ndr, "unknown6", &r->unknown6);
- ndr->print(ndr, "%s: ARRAY(%d)", "unknown7", 4);
- ndr->depth++;
- for (cntr_unknown7_0=0;cntr_unknown7_0<4;cntr_unknown7_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_unknown7_0);
- if (idx_0) {
- ndr_print_uint32(ndr, "unknown7", r->unknown7[cntr_unknown7_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DomainQuery(struct ndr_push *ndr, int ndr_flags, const union netr_DomainQuery *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->query1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->query1));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 1:
- if (r->query1) {
- NDR_CHECK(ndr_push_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
- }
- break;
-
- case 2:
- if (r->query1) {
- NDR_CHECK(ndr_push_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DomainQuery(struct ndr_pull *ndr, int ndr_flags, union netr_DomainQuery *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_query1_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 1: {
- uint32_t _ptr_query1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_query1));
- if (_ptr_query1) {
- NDR_PULL_ALLOC(ndr, r->query1);
- } else {
- r->query1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_query1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_query1));
- if (_ptr_query1) {
- NDR_PULL_ALLOC(ndr, r->query1);
- } else {
- r->query1 = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 1:
- if (r->query1) {
- _mem_save_query1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->query1, 0);
- NDR_CHECK(ndr_pull_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query1_0, 0);
- }
- break;
-
- case 2:
- if (r->query1) {
- _mem_save_query1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->query1, 0);
- NDR_CHECK(ndr_pull_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query1_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DomainQuery(struct ndr_print *ndr, const char *name, const union netr_DomainQuery *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_DomainQuery");
- switch (level) {
- case 1:
- ndr_print_ptr(ndr, "query1", r->query1);
- ndr->depth++;
- if (r->query1) {
- ndr_print_netr_DomainQuery1(ndr, "query1", r->query1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "query1", r->query1);
- ndr->depth++;
- if (r->query1) {
- ndr_print_netr_DomainQuery1(ndr, "query1", r->query1);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_netr_DomainTrustInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrustInfo *r)
-{
- uint32_t cntr_unknown1_0;
- uint32_t cntr_unknown_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domainname));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->fulldomainname));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->forest));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
- NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_SCALARS, &r->unknown1[cntr_unknown1_0]));
- }
- for (cntr_unknown_0 = 0; cntr_unknown_0 < 4; cntr_unknown_0++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->fulldomainname));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->forest));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->guid));
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
- NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_BUFFERS, &r->unknown1[cntr_unknown1_0]));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DomainTrustInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrustInfo *r)
-{
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- uint32_t cntr_unknown1_0;
- uint32_t cntr_unknown_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domainname));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->fulldomainname));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->forest));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
- NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_SCALARS, &r->unknown1[cntr_unknown1_0]));
- }
- for (cntr_unknown_0 = 0; cntr_unknown_0 < 4; cntr_unknown_0++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->fulldomainname));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->forest));
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->guid));
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
- NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_BUFFERS, &r->unknown1[cntr_unknown1_0]));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DomainTrustInfo(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustInfo *r)
-{
- uint32_t cntr_unknown1_0;
- uint32_t cntr_unknown_0;
- ndr_print_struct(ndr, name, "netr_DomainTrustInfo");
- ndr->depth++;
- ndr_print_lsa_String(ndr, "domainname", &r->domainname);
- ndr_print_lsa_String(ndr, "fulldomainname", &r->fulldomainname);
- ndr_print_lsa_String(ndr, "forest", &r->forest);
- ndr_print_GUID(ndr, "guid", &r->guid);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr->print(ndr, "%s: ARRAY(%d)", "unknown1", 4);
- ndr->depth++;
- for (cntr_unknown1_0=0;cntr_unknown1_0<4;cntr_unknown1_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_unknown1_0);
- if (idx_0) {
- ndr_print_netr_BinaryString(ndr, "unknown1", &r->unknown1[cntr_unknown1_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->print(ndr, "%s: ARRAY(%d)", "unknown", 4);
- ndr->depth++;
- for (cntr_unknown_0=0;cntr_unknown_0<4;cntr_unknown_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_unknown_0);
- if (idx_0) {
- ndr_print_uint32(ndr, "unknown", r->unknown[cntr_unknown_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DomainInfo1(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainInfo1 *r)
-{
- uint32_t cntr_trusts_1;
- uint32_t cntr_unknown_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->domaininfo));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_trusts));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusts));
- for (cntr_unknown_0 = 0; cntr_unknown_0 < 14; cntr_unknown_0++) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->domaininfo));
- if (r->trusts) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_trusts));
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->trusts[cntr_trusts_1]));
- }
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
- NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->trusts[cntr_trusts_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DomainInfo1(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainInfo1 *r)
-{
- uint32_t _ptr_trusts;
- uint32_t cntr_trusts_1;
- TALLOC_CTX *_mem_save_trusts_0;
- TALLOC_CTX *_mem_save_trusts_1;
- uint32_t cntr_unknown_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->domaininfo));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_trusts));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusts));
- if (_ptr_trusts) {
- NDR_PULL_ALLOC(ndr, r->trusts);
- } else {
- r->trusts = NULL;
- }
- for (cntr_unknown_0 = 0; cntr_unknown_0 < 14; cntr_unknown_0++) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->domaininfo));
- if (r->trusts) {
- _mem_save_trusts_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->trusts, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->trusts));
- NDR_PULL_ALLOC_N(ndr, r->trusts, ndr_get_array_size(ndr, &r->trusts));
- _mem_save_trusts_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->trusts, 0);
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->trusts[cntr_trusts_1]));
- }
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
- NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->trusts[cntr_trusts_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_0, 0);
- }
- if (r->trusts) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->trusts, r->num_trusts));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DomainInfo1(struct ndr_print *ndr, const char *name, const struct netr_DomainInfo1 *r)
-{
- uint32_t cntr_trusts_1;
- uint32_t cntr_unknown_0;
- ndr_print_struct(ndr, name, "netr_DomainInfo1");
- ndr->depth++;
- ndr_print_netr_DomainTrustInfo(ndr, "domaininfo", &r->domaininfo);
- ndr_print_uint32(ndr, "num_trusts", r->num_trusts);
- ndr_print_ptr(ndr, "trusts", r->trusts);
- ndr->depth++;
- if (r->trusts) {
- ndr->print(ndr, "%s: ARRAY(%d)", "trusts", r->num_trusts);
- ndr->depth++;
- for (cntr_trusts_1=0;cntr_trusts_1<r->num_trusts;cntr_trusts_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_trusts_1);
- if (idx_1) {
- ndr_print_netr_DomainTrustInfo(ndr, "trusts", &r->trusts[cntr_trusts_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->print(ndr, "%s: ARRAY(%d)", "unknown", 14);
- ndr->depth++;
- for (cntr_unknown_0=0;cntr_unknown_0<14;cntr_unknown_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_unknown_0);
- if (idx_0) {
- ndr_print_uint32(ndr, "unknown", r->unknown[cntr_unknown_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DomainInfo(struct ndr_push *ndr, int ndr_flags, const union netr_DomainInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 1:
- if (r->info1) {
- NDR_CHECK(ndr_push_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- }
- break;
-
- case 2:
- if (r->info1) {
- NDR_CHECK(ndr_push_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- }
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DomainInfo(struct ndr_pull *ndr, int ndr_flags, union netr_DomainInfo *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info1_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 1: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 1:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- case 2:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_DomainInfo");
- switch (level) {
- case 1:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_netr_DomainInfo1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_netr_DomainInfo1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_netr_CryptPassword(struct ndr_push *ndr, int ndr_flags, const struct netr_CryptPassword *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, 512));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_CryptPassword(struct ndr_pull *ndr, int ndr_flags, struct netr_CryptPassword *r)
-{
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, 512));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- ndr->flags = _flags_save_STRUCT;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r)
-{
- ndr_print_struct(ndr, name, "netr_CryptPassword");
- {
- uint32_t _flags_save_STRUCT = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- ndr->depth++;
- ndr_print_array_uint8(ndr, "data", r->data, 512);
- ndr_print_uint32(ndr, "length", r->length);
- ndr->depth--;
- ndr->flags = _flags_save_STRUCT;
- }
-}
-
-NTSTATUS ndr_push_netr_TrustFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_TrustFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_IN_FOREST", NETR_TRUST_FLAG_IN_FOREST, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_OUTBOUND", NETR_TRUST_FLAG_OUTBOUND, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_TREEROOT", NETR_TRUST_FLAG_TREEROOT, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_PRIMARY", NETR_TRUST_FLAG_PRIMARY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_NATIVE", NETR_TRUST_FLAG_NATIVE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_INBOUND", NETR_TRUST_FLAG_INBOUND, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_TrustType(struct ndr_push *ndr, int ndr_flags, enum netr_TrustType r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_TrustType(struct ndr_pull *ndr, int ndr_flags, enum netr_TrustType *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_TrustType(struct ndr_print *ndr, const char *name, enum netr_TrustType r)
-{
- const char *val = NULL;
-
- switch (r) {
- case NETR_TRUST_TYPE_DOWNLEVEL: val = "NETR_TRUST_TYPE_DOWNLEVEL"; break;
- case NETR_TRUST_TYPE_UPLEVEL: val = "NETR_TRUST_TYPE_UPLEVEL"; break;
- case NETR_TRUST_TYPE_MIT: val = "NETR_TRUST_TYPE_MIT"; break;
- case NETR_TRUST_TYPE_DCE: val = "NETR_TRUST_TYPE_DCE"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_netr_TrustAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_TrustAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_TrustAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE", NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY", NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN", NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE", NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION", NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_WITHIN_FOREST", NETR_TRUST_ATTRIBUTE_WITHIN_FOREST, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL", NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DomainTrust(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrust *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->netbios_name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_name));
- NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->trust_flags));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->parent_index));
- NDR_CHECK(ndr_push_netr_TrustType(ndr, NDR_SCALARS, r->trust_type));
- NDR_CHECK(ndr_push_netr_TrustAttributes(ndr, NDR_SCALARS, r->trust_attributes));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->netbios_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->netbios_name, ndr_charset_length(r->netbios_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->dns_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, ndr_charset_length(r->dns_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->sid) {
- NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- }
- NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->guid));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DomainTrust(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrust *r)
-{
- uint32_t _ptr_netbios_name;
- TALLOC_CTX *_mem_save_netbios_name_0;
- uint32_t _ptr_dns_name;
- TALLOC_CTX *_mem_save_dns_name_0;
- uint32_t _ptr_sid;
- TALLOC_CTX *_mem_save_sid_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_netbios_name));
- if (_ptr_netbios_name) {
- NDR_PULL_ALLOC(ndr, r->netbios_name);
- } else {
- r->netbios_name = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name));
- if (_ptr_dns_name) {
- NDR_PULL_ALLOC(ndr, r->dns_name);
- } else {
- r->dns_name = NULL;
- }
- NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->trust_flags));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->parent_index));
- NDR_CHECK(ndr_pull_netr_TrustType(ndr, NDR_SCALARS, &r->trust_type));
- NDR_CHECK(ndr_pull_netr_TrustAttributes(ndr, NDR_SCALARS, &r->trust_attributes));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
- if (_ptr_sid) {
- NDR_PULL_ALLOC(ndr, r->sid);
- } else {
- r->sid = NULL;
- }
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->netbios_name) {
- _mem_save_netbios_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->netbios_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->netbios_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->netbios_name));
- if (ndr_get_array_length(ndr, &r->netbios_name) > ndr_get_array_size(ndr, &r->netbios_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->netbios_name), ndr_get_array_length(ndr, &r->netbios_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->netbios_name, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_netbios_name_0, 0);
- }
- if (r->dns_name) {
- _mem_save_dns_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->dns_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_name));
- if (ndr_get_array_length(ndr, &r->dns_name) > ndr_get_array_size(ndr, &r->dns_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dns_name), ndr_get_array_length(ndr, &r->dns_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name_0, 0);
- }
- if (r->sid) {
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
- NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
- }
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->guid));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DomainTrust(struct ndr_print *ndr, const char *name, const struct netr_DomainTrust *r)
-{
- ndr_print_struct(ndr, name, "netr_DomainTrust");
- ndr->depth++;
- ndr_print_ptr(ndr, "netbios_name", r->netbios_name);
- ndr->depth++;
- if (r->netbios_name) {
- ndr_print_string(ndr, "netbios_name", r->netbios_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "dns_name", r->dns_name);
- ndr->depth++;
- if (r->dns_name) {
- ndr_print_string(ndr, "dns_name", r->dns_name);
- }
- ndr->depth--;
- ndr_print_netr_TrustFlags(ndr, "trust_flags", r->trust_flags);
- ndr_print_uint32(ndr, "parent_index", r->parent_index);
- ndr_print_netr_TrustType(ndr, "trust_type", r->trust_type);
- ndr_print_netr_TrustAttributes(ndr, "trust_attributes", r->trust_attributes);
- ndr_print_ptr(ndr, "sid", r->sid);
- ndr->depth++;
- if (r->sid) {
- ndr_print_dom_sid2(ndr, "sid", r->sid);
- }
- ndr->depth--;
- ndr_print_GUID(ndr, "guid", &r->guid);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonUasLogon(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogon *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonUasLogon(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogon *r)
-{
- uint32_t _ptr_server_name;
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
- if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
- if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.workstation), ndr_get_array_length(ndr, &r->in.workstation));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonUasLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogon *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonUasLogon");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonUasLogon");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "account_name", r->in.account_name);
- ndr_print_string(ndr, "workstation", r->in.workstation);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonUasLogon");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_netr_UasInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonUasLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogoff *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonUasLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogoff *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
- if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
- if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.workstation), ndr_get_array_length(ndr, &r->in.workstation));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonUasLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogoff *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonUasLogoff");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonUasLogoff");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "account_name", r->in.account_name);
- ndr_print_string(ndr, "workstation", r->in.workstation);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonUasLogoff");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_netr_UasLogoffInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonSamLogon(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogon *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
- if (r->in.computer_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
- if (r->in.credential) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
- if (r->in.return_authenticator) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- }
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
- if (r->out.return_authenticator) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- }
- if (r->out.validation == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
- NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
- if (r->out.authoritative == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonSamLogon(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogon *r)
-{
- uint32_t _ptr_server_name;
- uint32_t _ptr_computer_name;
- uint32_t _ptr_credential;
- uint32_t _ptr_return_authenticator;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_computer_name_0;
- TALLOC_CTX *_mem_save_credential_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_validation_0;
- TALLOC_CTX *_mem_save_authoritative_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
- if (_ptr_computer_name) {
- NDR_PULL_ALLOC(ndr, r->in.computer_name);
- } else {
- r->in.computer_name = NULL;
- }
- if (r->in.computer_name) {
- _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
- if (_ptr_credential) {
- NDR_PULL_ALLOC(ndr, r->in.credential);
- } else {
- r->in.credential = NULL;
- }
- if (r->in.credential) {
- _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
- if (_ptr_return_authenticator) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- } else {
- r->in.return_authenticator = NULL;
- }
- if (r->in.return_authenticator) {
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
- }
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
- NDR_PULL_ALLOC(ndr, r->out.validation);
- ZERO_STRUCTP(r->out.validation);
- NDR_PULL_ALLOC(ndr, r->out.authoritative);
- ZERO_STRUCTP(r->out.authoritative);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
- if (_ptr_return_authenticator) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- } else {
- r->out.return_authenticator = NULL;
- }
- if (r->out.return_authenticator) {
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.validation);
- }
- _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
- NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.authoritative);
- }
- _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonSamLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogon *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonSamLogon");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonSamLogon");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
- ndr->depth++;
- if (r->in.computer_name) {
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "credential", r->in.credential);
- ndr->depth++;
- if (r->in.credential) {
- ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- if (r->in.return_authenticator) {
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- }
- ndr->depth--;
- ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
- ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
- ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonSamLogon");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- if (r->out.return_authenticator) {
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "validation", r->out.validation);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
- ndr_print_netr_Validation(ndr, "validation", r->out.validation);
- ndr->depth--;
- ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
- ndr->depth++;
- ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonSamLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogoff *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
- if (r->in.computer_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
- if (r->in.credential) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
- if (r->in.return_authenticator) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- }
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
- if (r->out.return_authenticator) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonSamLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogoff *r)
-{
- uint32_t _ptr_server_name;
- uint32_t _ptr_computer_name;
- uint32_t _ptr_credential;
- uint32_t _ptr_return_authenticator;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_computer_name_0;
- TALLOC_CTX *_mem_save_credential_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
- if (_ptr_computer_name) {
- NDR_PULL_ALLOC(ndr, r->in.computer_name);
- } else {
- r->in.computer_name = NULL;
- }
- if (r->in.computer_name) {
- _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
- if (_ptr_credential) {
- NDR_PULL_ALLOC(ndr, r->in.credential);
- } else {
- r->in.credential = NULL;
- }
- if (r->in.credential) {
- _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
- if (_ptr_return_authenticator) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- } else {
- r->in.return_authenticator = NULL;
- }
- if (r->in.return_authenticator) {
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
- }
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
- if (_ptr_return_authenticator) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- } else {
- r->out.return_authenticator = NULL;
- }
- if (r->out.return_authenticator) {
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonSamLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogoff *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonSamLogoff");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonSamLogoff");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
- ndr->depth++;
- if (r->in.computer_name) {
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "credential", r->in.credential);
- ndr->depth++;
- if (r->in.credential) {
- ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- if (r->in.return_authenticator) {
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- }
- ndr->depth--;
- ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
- ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonSamLogoff");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- if (r->out.return_authenticator) {
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_ServerReqChallenge(struct ndr_push *ndr, int flags, const struct netr_ServerReqChallenge *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- if (r->in.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- }
- if (flags & NDR_OUT) {
- if (r->out.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_ServerReqChallenge(struct ndr_pull *ndr, int flags, struct netr_ServerReqChallenge *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_credentials_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- *r->out.credentials = *r->in.credentials;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_ServerReqChallenge(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerReqChallenge *r)
-{
- ndr_print_struct(ndr, name, "netr_ServerReqChallenge");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_ServerReqChallenge");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- ndr_print_ptr(ndr, "credentials", r->in.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_ServerReqChallenge");
- ndr->depth++;
- ndr_print_ptr(ndr, "credentials", r->out.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->out.credentials);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_ServerAuthenticate(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- if (r->in.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- }
- if (flags & NDR_OUT) {
- if (r->out.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_ServerAuthenticate(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_credentials_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
- if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- *r->out.credentials = *r->in.credentials;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_ServerAuthenticate(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate *r)
-{
- ndr_print_struct(ndr, name, "netr_ServerAuthenticate");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_ServerAuthenticate");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "account_name", r->in.account_name);
- ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- ndr_print_ptr(ndr, "credentials", r->in.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_ServerAuthenticate");
- ndr->depth++;
- ndr_print_ptr(ndr, "credentials", r->out.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->out.credentials);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_ServerPasswordSet(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.new_password));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_ServerPasswordSet(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
- if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.new_password));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- ZERO_STRUCTP(r->out.return_authenticator);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet *r)
-{
- ndr_print_struct(ndr, name, "netr_ServerPasswordSet");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_ServerPasswordSet");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "account_name", r->in.account_name);
- ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_samr_Password(ndr, "new_password", &r->in.new_password);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_ServerPasswordSet");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DatabaseDeltas(struct ndr_push *ndr, int flags, const struct netr_DatabaseDeltas *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (r->in.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
- if (r->in.sequence_num == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->in.sequence_num));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- if (r->out.sequence_num == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->out.sequence_num));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.delta_enum_array));
- if (r->out.delta_enum_array) {
- NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DatabaseDeltas(struct ndr_pull *ndr, int flags, struct netr_DatabaseDeltas *r)
-{
- uint32_t _ptr_delta_enum_array;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_sequence_num_0;
- TALLOC_CTX *_mem_save_delta_enum_array_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
- if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sequence_num);
- }
- _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sequence_num, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->in.sequence_num));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- *r->out.return_authenticator = *r->in.return_authenticator;
- NDR_PULL_ALLOC(ndr, r->out.sequence_num);
- *r->out.sequence_num = *r->in.sequence_num;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sequence_num);
- }
- _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sequence_num, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->out.sequence_num));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
- if (_ptr_delta_enum_array) {
- NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
- } else {
- r->out.delta_enum_array = NULL;
- }
- if (r->out.delta_enum_array) {
- _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseDeltas *r)
-{
- ndr_print_struct(ndr, name, "netr_DatabaseDeltas");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DatabaseDeltas");
- ndr->depth++;
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- ndr_print_string(ndr, "computername", r->in.computername);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth--;
- ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
- ndr_print_ptr(ndr, "sequence_num", r->in.sequence_num);
- ndr->depth++;
- ndr_print_udlong(ndr, "sequence_num", *r->in.sequence_num);
- ndr->depth--;
- ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DatabaseDeltas");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "sequence_num", r->out.sequence_num);
- ndr->depth++;
- ndr_print_udlong(ndr, "sequence_num", *r->out.sequence_num);
- ndr->depth--;
- ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
- ndr->depth++;
- if (r->out.delta_enum_array) {
- ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", r->out.delta_enum_array);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DatabaseSync(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (r->in.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
- if (r->in.sync_context == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- if (r->out.sync_context == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.delta_enum_array));
- if (r->out.delta_enum_array) {
- NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DatabaseSync(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync *r)
-{
- uint32_t _ptr_delta_enum_array;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_sync_context_0;
- TALLOC_CTX *_mem_save_delta_enum_array_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
- if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sync_context);
- }
- _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- *r->out.return_authenticator = *r->in.return_authenticator;
- NDR_PULL_ALLOC(ndr, r->out.sync_context);
- *r->out.sync_context = *r->in.sync_context;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sync_context);
- }
- _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
- if (_ptr_delta_enum_array) {
- NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
- } else {
- r->out.delta_enum_array = NULL;
- }
- if (r->out.delta_enum_array) {
- _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DatabaseSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync *r)
-{
- ndr_print_struct(ndr, name, "netr_DatabaseSync");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DatabaseSync");
- ndr->depth++;
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- ndr_print_string(ndr, "computername", r->in.computername);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth--;
- ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
- ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
- ndr->depth++;
- ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
- ndr->depth--;
- ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DatabaseSync");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
- ndr->depth++;
- ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
- ndr->depth--;
- ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
- ndr->depth++;
- if (r->out.delta_enum_array) {
- ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", r->out.delta_enum_array);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_AccountDeltas(struct ndr_push *ndr, int flags, const struct netr_AccountDeltas *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
- if (r->in.logon_server) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (r->in.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- if (r->out.buffer == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- {
- struct ndr_push *_ndr_buffer;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
- NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
- }
- if (r->out.count_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
- if (r->out.total_entries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
- if (r->out.recordid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_AccountDeltas(struct ndr_pull *ndr, int flags, struct netr_AccountDeltas *r)
-{
- uint32_t _ptr_logon_server;
- TALLOC_CTX *_mem_save_logon_server_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_buffer_0;
- TALLOC_CTX *_mem_save_count_returned_0;
- TALLOC_CTX *_mem_save_total_entries_0;
- TALLOC_CTX *_mem_save_recordid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
- if (_ptr_logon_server) {
- NDR_PULL_ALLOC(ndr, r->in.logon_server);
- } else {
- r->in.logon_server = NULL;
- }
- if (r->in.logon_server) {
- _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
- if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- *r->out.return_authenticator = *r->in.return_authenticator;
- NDR_PULL_ALLOC(ndr, r->out.buffer);
- ZERO_STRUCTP(r->out.buffer);
- NDR_PULL_ALLOC(ndr, r->out.count_returned);
- ZERO_STRUCTP(r->out.count_returned);
- NDR_PULL_ALLOC(ndr, r->out.total_entries);
- ZERO_STRUCTP(r->out.total_entries);
- NDR_PULL_ALLOC(ndr, r->out.recordid);
- ZERO_STRUCTP(r->out.recordid);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.buffer);
- }
- _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
- {
- struct ndr_pull *_ndr_buffer;
- NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
- NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
- NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count_returned);
- }
- _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.total_entries);
- }
- _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.recordid);
- }
- _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_AccountDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountDeltas *r)
-{
- ndr_print_struct(ndr, name, "netr_AccountDeltas");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_AccountDeltas");
- ndr->depth++;
- ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
- ndr->depth++;
- if (r->in.logon_server) {
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- }
- ndr->depth--;
- ndr_print_string(ndr, "computername", r->in.computername);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth--;
- ndr_print_netr_UAS_INFO_0(ndr, "uas", &r->in.uas);
- ndr_print_uint32(ndr, "count", r->in.count);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_AccountDeltas");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "buffer", r->out.buffer);
- ndr->depth++;
- ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
- ndr->depth--;
- ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
- ndr->depth--;
- ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
- ndr->depth++;
- ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
- ndr->depth--;
- ndr_print_ptr(ndr, "recordid", r->out.recordid);
- ndr->depth++;
- ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_AccountSync(struct ndr_push *ndr, int flags, const struct netr_AccountSync *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
- if (r->in.logon_server) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (r->in.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reference));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
- if (r->in.recordid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- if (r->out.buffer == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- {
- struct ndr_push *_ndr_buffer;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
- NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
- }
- if (r->out.count_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
- if (r->out.total_entries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
- if (r->out.next_reference == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.next_reference));
- if (r->out.recordid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_AccountSync(struct ndr_pull *ndr, int flags, struct netr_AccountSync *r)
-{
- uint32_t _ptr_logon_server;
- TALLOC_CTX *_mem_save_logon_server_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_buffer_0;
- TALLOC_CTX *_mem_save_count_returned_0;
- TALLOC_CTX *_mem_save_total_entries_0;
- TALLOC_CTX *_mem_save_next_reference_0;
- TALLOC_CTX *_mem_save_recordid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
- if (_ptr_logon_server) {
- NDR_PULL_ALLOC(ndr, r->in.logon_server);
- } else {
- r->in.logon_server = NULL;
- }
- if (r->in.logon_server) {
- _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
- if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reference));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.recordid);
- }
- _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.recordid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- *r->out.return_authenticator = *r->in.return_authenticator;
- NDR_PULL_ALLOC(ndr, r->out.buffer);
- ZERO_STRUCTP(r->out.buffer);
- NDR_PULL_ALLOC(ndr, r->out.count_returned);
- ZERO_STRUCTP(r->out.count_returned);
- NDR_PULL_ALLOC(ndr, r->out.total_entries);
- ZERO_STRUCTP(r->out.total_entries);
- NDR_PULL_ALLOC(ndr, r->out.next_reference);
- ZERO_STRUCTP(r->out.next_reference);
- NDR_PULL_ALLOC(ndr, r->out.recordid);
- *r->out.recordid = *r->in.recordid;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.buffer);
- }
- _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
- {
- struct ndr_pull *_ndr_buffer;
- NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
- NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
- NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count_returned);
- }
- _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.total_entries);
- }
- _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.next_reference);
- }
- _mem_save_next_reference_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.next_reference, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.next_reference));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_next_reference_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.recordid);
- }
- _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountSync *r)
-{
- ndr_print_struct(ndr, name, "netr_AccountSync");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_AccountSync");
- ndr->depth++;
- ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
- ndr->depth++;
- if (r->in.logon_server) {
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- }
- ndr->depth--;
- ndr_print_string(ndr, "computername", r->in.computername);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth--;
- ndr_print_uint32(ndr, "reference", r->in.reference);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
- ndr_print_ptr(ndr, "recordid", r->in.recordid);
- ndr->depth++;
- ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->in.recordid);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_AccountSync");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "buffer", r->out.buffer);
- ndr->depth++;
- ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
- ndr->depth--;
- ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
- ndr->depth--;
- ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
- ndr->depth++;
- ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
- ndr->depth--;
- ndr_print_ptr(ndr, "next_reference", r->out.next_reference);
- ndr->depth++;
- ndr_print_uint32(ndr, "next_reference", *r->out.next_reference);
- ndr->depth--;
- ndr_print_ptr(ndr, "recordid", r->out.recordid);
- ndr->depth++;
- ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_GetDcName(struct ndr_push *ndr, int flags, const struct netr_GetDcName *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
- if (r->in.domainname) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.dcname == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.dcname == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_GetDcName(struct ndr_pull *ndr, int flags, struct netr_GetDcName *r)
-{
- uint32_t _ptr_domainname;
- uint32_t _ptr_dcname;
- TALLOC_CTX *_mem_save_domainname_0;
- TALLOC_CTX *_mem_save_dcname_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
- if (_ptr_domainname) {
- NDR_PULL_ALLOC(ndr, r->in.domainname);
- } else {
- r->in.domainname = NULL;
- }
- if (r->in.domainname) {
- _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
- if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domainname), ndr_get_array_length(ndr, &r->in.domainname));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.dcname);
- ZERO_STRUCTP(r->out.dcname);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.dcname);
- }
- _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_dcname));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
- if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.dcname), ndr_get_array_length(ndr, r->out.dcname));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_GetDcName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetDcName *r)
-{
- ndr_print_struct(ndr, name, "netr_GetDcName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_GetDcName");
- ndr->depth++;
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- ndr_print_ptr(ndr, "domainname", r->in.domainname);
- ndr->depth++;
- if (r->in.domainname) {
- ndr_print_string(ndr, "domainname", r->in.domainname);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_GetDcName");
- ndr->depth++;
- ndr_print_ptr(ndr, "dcname", r->out.dcname);
- ndr->depth++;
- ndr_print_ptr(ndr, "dcname", *r->out.dcname);
- ndr->depth++;
- ndr_print_string(ndr, "dcname", *r->out.dcname);
- ndr->depth--;
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonControl(struct ndr_push *ndr, int flags, const struct netr_LogonControl *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
- if (r->in.logon_server) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonControl(struct ndr_pull *ndr, int flags, struct netr_LogonControl *r)
-{
- uint32_t _ptr_logon_server;
- TALLOC_CTX *_mem_save_logon_server_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
- if (_ptr_logon_server) {
- NDR_PULL_ALLOC(ndr, r->in.logon_server);
- } else {
- r->in.logon_server = NULL;
- }
- if (r->in.logon_server) {
- _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
- }
- NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonControl(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonControl");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonControl");
- ndr->depth++;
- ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
- ndr->depth++;
- if (r->in.logon_server) {
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- }
- ndr->depth--;
- ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonControl");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_GetAnyDCName(struct ndr_push *ndr, int flags, const struct netr_GetAnyDCName *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
- if (r->in.logon_server) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
- if (r->in.domainname) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.dcname == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.dcname == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_GetAnyDCName(struct ndr_pull *ndr, int flags, struct netr_GetAnyDCName *r)
-{
- uint32_t _ptr_logon_server;
- uint32_t _ptr_domainname;
- uint32_t _ptr_dcname;
- TALLOC_CTX *_mem_save_logon_server_0;
- TALLOC_CTX *_mem_save_domainname_0;
- TALLOC_CTX *_mem_save_dcname_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
- if (_ptr_logon_server) {
- NDR_PULL_ALLOC(ndr, r->in.logon_server);
- } else {
- r->in.logon_server = NULL;
- }
- if (r->in.logon_server) {
- _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
- if (_ptr_domainname) {
- NDR_PULL_ALLOC(ndr, r->in.domainname);
- } else {
- r->in.domainname = NULL;
- }
- if (r->in.domainname) {
- _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
- if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domainname), ndr_get_array_length(ndr, &r->in.domainname));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.dcname);
- ZERO_STRUCTP(r->out.dcname);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.dcname);
- }
- _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_dcname));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
- if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.dcname), ndr_get_array_length(ndr, r->out.dcname));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_GetAnyDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetAnyDCName *r)
-{
- ndr_print_struct(ndr, name, "netr_GetAnyDCName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_GetAnyDCName");
- ndr->depth++;
- ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
- ndr->depth++;
- if (r->in.logon_server) {
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domainname", r->in.domainname);
- ndr->depth++;
- if (r->in.domainname) {
- ndr_print_string(ndr, "domainname", r->in.domainname);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_GetAnyDCName");
- ndr->depth++;
- ndr_print_ptr(ndr, "dcname", r->out.dcname);
- ndr->depth++;
- ndr_print_ptr(ndr, "dcname", *r->out.dcname);
- ndr->depth++;
- ndr_print_string(ndr, "dcname", *r->out.dcname);
- ndr->depth--;
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonControl2(struct ndr_push *ndr, int flags, const struct netr_LogonControl2 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
- if (r->in.logon_server) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.function_code));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.data, r->in.function_code));
- NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.data));
- }
- if (flags & NDR_OUT) {
- if (r->out.query == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
- NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonControl2(struct ndr_pull *ndr, int flags, struct netr_LogonControl2 *r)
-{
- uint32_t _ptr_logon_server;
- TALLOC_CTX *_mem_save_logon_server_0;
- TALLOC_CTX *_mem_save_query_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
- if (_ptr_logon_server) {
- NDR_PULL_ALLOC(ndr, r->in.logon_server);
- } else {
- r->in.logon_server = NULL;
- }
- if (r->in.logon_server) {
- _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.function_code));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.data, r->in.function_code));
- NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.data));
- NDR_PULL_ALLOC(ndr, r->out.query);
- ZERO_STRUCTP(r->out.query);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.query);
- }
- _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
- NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonControl2(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2 *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonControl2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonControl2");
- ndr->depth++;
- ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
- ndr->depth++;
- if (r->in.logon_server) {
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "function_code", r->in.function_code);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.data, r->in.function_code);
- ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", &r->in.data);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonControl2");
- ndr->depth++;
- ndr_print_ptr(ndr, "query", r->out.query);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
- ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_ServerAuthenticate2(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate2 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- if (r->in.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- if (r->in.negotiate_flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.negotiate_flags));
- }
- if (flags & NDR_OUT) {
- if (r->out.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- if (r->out.negotiate_flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.negotiate_flags));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_ServerAuthenticate2(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate2 *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_credentials_0;
- TALLOC_CTX *_mem_save_negotiate_flags_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
- if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
- }
- _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.negotiate_flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- *r->out.credentials = *r->in.credentials;
- NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
- *r->out.negotiate_flags = *r->in.negotiate_flags;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
- }
- _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.negotiate_flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate2 *r)
-{
- ndr_print_struct(ndr, name, "netr_ServerAuthenticate2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_ServerAuthenticate2");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "account_name", r->in.account_name);
- ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- ndr_print_ptr(ndr, "credentials", r->in.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
- ndr->depth--;
- ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "negotiate_flags", *r->in.negotiate_flags);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_ServerAuthenticate2");
- ndr->depth++;
- ndr_print_ptr(ndr, "credentials", r->out.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->out.credentials);
- ndr->depth--;
- ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "negotiate_flags", *r->out.negotiate_flags);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DatabaseSync2(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync2 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (r->in.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.restart_state));
- if (r->in.sync_context == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- if (r->out.sync_context == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.delta_enum_array));
- if (r->out.delta_enum_array) {
- NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DatabaseSync2(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync2 *r)
-{
- uint32_t _ptr_delta_enum_array;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_sync_context_0;
- TALLOC_CTX *_mem_save_delta_enum_array_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
- if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.restart_state));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sync_context);
- }
- _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- *r->out.return_authenticator = *r->in.return_authenticator;
- NDR_PULL_ALLOC(ndr, r->out.sync_context);
- *r->out.sync_context = *r->in.sync_context;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sync_context);
- }
- _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
- if (_ptr_delta_enum_array) {
- NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
- } else {
- r->out.delta_enum_array = NULL;
- }
- if (r->out.delta_enum_array) {
- _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync2 *r)
-{
- ndr_print_struct(ndr, name, "netr_DatabaseSync2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DatabaseSync2");
- ndr->depth++;
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- ndr_print_string(ndr, "computername", r->in.computername);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth--;
- ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
- ndr_print_uint16(ndr, "restart_state", r->in.restart_state);
- ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
- ndr->depth++;
- ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
- ndr->depth--;
- ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DatabaseSync2");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
- ndr->depth++;
- ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
- ndr->depth--;
- ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
- ndr->depth++;
- if (r->out.delta_enum_array) {
- ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", r->out.delta_enum_array);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DatabaseRedo(struct ndr_push *ndr, int flags, const struct netr_DatabaseRedo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (r->in.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.change_log_entry));
- if (r->in.change_log_entry) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.change_log_entry_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.change_log_entry, r->in.change_log_entry_size));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.change_log_entry_size));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.delta_enum_array));
- if (r->out.delta_enum_array) {
- NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DatabaseRedo(struct ndr_pull *ndr, int flags, struct netr_DatabaseRedo *r)
-{
- uint32_t _ptr_change_log_entry;
- uint32_t _ptr_delta_enum_array;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_change_log_entry_0;
- TALLOC_CTX *_mem_save_delta_enum_array_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
- if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_change_log_entry));
- if (_ptr_change_log_entry) {
- NDR_PULL_ALLOC(ndr, r->in.change_log_entry);
- } else {
- r->in.change_log_entry = NULL;
- }
- if (r->in.change_log_entry) {
- _mem_save_change_log_entry_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.change_log_entry, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.change_log_entry));
- NDR_PULL_ALLOC_N(ndr, r->in.change_log_entry, ndr_get_array_size(ndr, &r->in.change_log_entry));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.change_log_entry, ndr_get_array_size(ndr, &r->in.change_log_entry)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_change_log_entry_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.change_log_entry_size));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- *r->out.return_authenticator = *r->in.return_authenticator;
- if (r->in.change_log_entry) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.change_log_entry, r->in.change_log_entry_size));
- }
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
- if (_ptr_delta_enum_array) {
- NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
- } else {
- r->out.delta_enum_array = NULL;
- }
- if (r->out.delta_enum_array) {
- _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, 0);
- NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, 0);
- }
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DatabaseRedo(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseRedo *r)
-{
- ndr_print_struct(ndr, name, "netr_DatabaseRedo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DatabaseRedo");
- ndr->depth++;
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- ndr_print_string(ndr, "computername", r->in.computername);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "change_log_entry", r->in.change_log_entry);
- ndr->depth++;
- if (r->in.change_log_entry) {
- ndr_print_array_uint8(ndr, "change_log_entry", r->in.change_log_entry, r->in.change_log_entry_size);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "change_log_entry_size", r->in.change_log_entry_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DatabaseRedo");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
- ndr->depth++;
- if (r->out.delta_enum_array) {
- ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", r->out.delta_enum_array);
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonControl2Ex(struct ndr_push *ndr, int flags, const struct netr_LogonControl2Ex *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
- if (r->in.logon_server) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.function_code));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.data, r->in.function_code));
- NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.data));
- }
- if (flags & NDR_OUT) {
- if (r->out.query == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
- NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonControl2Ex(struct ndr_pull *ndr, int flags, struct netr_LogonControl2Ex *r)
-{
- uint32_t _ptr_logon_server;
- TALLOC_CTX *_mem_save_logon_server_0;
- TALLOC_CTX *_mem_save_query_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
- if (_ptr_logon_server) {
- NDR_PULL_ALLOC(ndr, r->in.logon_server);
- } else {
- r->in.logon_server = NULL;
- }
- if (r->in.logon_server) {
- _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
- if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.function_code));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.data, r->in.function_code));
- NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.data));
- NDR_PULL_ALLOC(ndr, r->out.query);
- ZERO_STRUCTP(r->out.query);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.query);
- }
- _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
- NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonControl2Ex(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2Ex *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonControl2Ex");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonControl2Ex");
- ndr->depth++;
- ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
- ndr->depth++;
- if (r->in.logon_server) {
- ndr_print_string(ndr, "logon_server", r->in.logon_server);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "function_code", r->in.function_code);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.data, r->in.function_code);
- ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", &r->in.data);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonControl2Ex");
- ndr->depth++;
- ndr_print_ptr(ndr, "query", r->out.query);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
- ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRENUMERATETRUSTEDDOMAINS(struct ndr_push *ndr, int flags, const struct netr_NETRENUMERATETRUSTEDDOMAINS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINS(struct ndr_pull *ndr, int flags, struct netr_NETRENUMERATETRUSTEDDOMAINS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRENUMERATETRUSTEDDOMAINS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRENUMERATETRUSTEDDOMAINS *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRENUMERATETRUSTEDDOMAINS");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRENUMERATETRUSTEDDOMAINS");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRENUMERATETRUSTEDDOMAINS");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DsRGetDCName(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCName *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
- if (r->in.domain_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain_name, ndr_charset_length(r->in.domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
- if (r->in.domain_guid) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_guid));
- if (r->in.site_guid) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.site_guid));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DsRGetDCName(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCName *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_domain_name;
- uint32_t _ptr_domain_guid;
- uint32_t _ptr_site_guid;
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_domain_name_0;
- TALLOC_CTX *_mem_save_domain_guid_0;
- TALLOC_CTX *_mem_save_site_guid_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
- if (_ptr_domain_name) {
- NDR_PULL_ALLOC(ndr, r->in.domain_name);
- } else {
- r->in.domain_name = NULL;
- }
- if (r->in.domain_name) {
- _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
- if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain_name), ndr_get_array_length(ndr, &r->in.domain_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain_name, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
- if (_ptr_domain_guid) {
- NDR_PULL_ALLOC(ndr, r->in.domain_guid);
- } else {
- r->in.domain_guid = NULL;
- }
- if (r->in.domain_guid) {
- _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_guid));
- if (_ptr_site_guid) {
- NDR_PULL_ALLOC(ndr, r->in.site_guid);
- } else {
- r->in.site_guid = NULL;
- }
- if (r->in.site_guid) {
- _mem_save_site_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.site_guid, 0);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.site_guid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_guid_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DsRGetDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCName *r)
-{
- ndr_print_struct(ndr, name, "netr_DsRGetDCName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DsRGetDCName");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
- ndr->depth++;
- if (r->in.domain_name) {
- ndr_print_string(ndr, "domain_name", r->in.domain_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
- ndr->depth++;
- if (r->in.domain_guid) {
- ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "site_guid", r->in.site_guid);
- ndr->depth++;
- if (r->in.site_guid) {
- ndr_print_GUID(ndr, "site_guid", r->in.site_guid);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DsRGetDCName");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_netr_DsRGetDCNameInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRLOGONDUMMYROUTINE1(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONDUMMYROUTINE1 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRLOGONDUMMYROUTINE1(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONDUMMYROUTINE1 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRLOGONDUMMYROUTINE1(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONDUMMYROUTINE1 *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRLOGONDUMMYROUTINE1");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRLOGONDUMMYROUTINE1");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRLOGONDUMMYROUTINE1");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRLOGONSETSERVICEBITS(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRLOGONSETSERVICEBITS(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSETSERVICEBITS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRLOGONSETSERVICEBITS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRLOGONSETSERVICEBITS");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRLOGONSETSERVICEBITS");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRLOGONSETSERVICEBITS");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRLOGONGETTRUSTRID(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONGETTRUSTRID *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRLOGONGETTRUSTRID(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONGETTRUSTRID *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRLOGONGETTRUSTRID(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTRUSTRID *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRLOGONGETTRUSTRID");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRLOGONGETTRUSTRID");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRLOGONGETTRUSTRID");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTESERVERDIGEST");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTESERVERDIGEST");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTESERVERDIGEST");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTECLIENTDIGEST");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_ServerAuthenticate3(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate3 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- if (r->in.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- if (r->in.negotiate_flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.negotiate_flags));
- }
- if (flags & NDR_OUT) {
- if (r->out.credentials == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- if (r->out.negotiate_flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.negotiate_flags));
- if (r->out.rid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.rid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_ServerAuthenticate3(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate3 *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_credentials_0;
- TALLOC_CTX *_mem_save_negotiate_flags_0;
- TALLOC_CTX *_mem_save_rid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
- if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
- }
- _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.negotiate_flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- *r->out.credentials = *r->in.credentials;
- NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
- *r->out.negotiate_flags = *r->in.negotiate_flags;
- NDR_PULL_ALLOC(ndr, r->out.rid);
- ZERO_STRUCTP(r->out.rid);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.credentials);
- }
- _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.credentials, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
- }
- _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.negotiate_flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.rid);
- }
- _mem_save_rid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.rid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.rid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_ServerAuthenticate3(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate3 *r)
-{
- ndr_print_struct(ndr, name, "netr_ServerAuthenticate3");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_ServerAuthenticate3");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "account_name", r->in.account_name);
- ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- ndr_print_ptr(ndr, "credentials", r->in.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
- ndr->depth--;
- ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "negotiate_flags", *r->in.negotiate_flags);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_ServerAuthenticate3");
- ndr->depth++;
- ndr_print_ptr(ndr, "credentials", r->out.credentials);
- ndr->depth++;
- ndr_print_netr_Credential(ndr, "credentials", r->out.credentials);
- ndr->depth--;
- ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "negotiate_flags", *r->out.negotiate_flags);
- ndr->depth--;
- ndr_print_ptr(ndr, "rid", r->out.rid);
- ndr->depth++;
- ndr_print_uint32(ndr, "rid", *r->out.rid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DsRGetDCNameEx(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
- if (r->in.domain_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain_name, ndr_charset_length(r->in.domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
- if (r->in.domain_guid) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
- if (r->in.site_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.site_name, ndr_charset_length(r->in.site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DsRGetDCNameEx(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_domain_name;
- uint32_t _ptr_domain_guid;
- uint32_t _ptr_site_name;
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_domain_name_0;
- TALLOC_CTX *_mem_save_domain_guid_0;
- TALLOC_CTX *_mem_save_site_name_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
- if (_ptr_domain_name) {
- NDR_PULL_ALLOC(ndr, r->in.domain_name);
- } else {
- r->in.domain_name = NULL;
- }
- if (r->in.domain_name) {
- _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
- if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain_name), ndr_get_array_length(ndr, &r->in.domain_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain_name, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
- if (_ptr_domain_guid) {
- NDR_PULL_ALLOC(ndr, r->in.domain_guid);
- } else {
- r->in.domain_guid = NULL;
- }
- if (r->in.domain_guid) {
- _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
- if (_ptr_site_name) {
- NDR_PULL_ALLOC(ndr, r->in.site_name);
- } else {
- r->in.site_name = NULL;
- }
- if (r->in.site_name) {
- _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
- if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.site_name), ndr_get_array_length(ndr, &r->in.site_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.site_name, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DsRGetDCNameEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx *r)
-{
- ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DsRGetDCNameEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
- ndr->depth++;
- if (r->in.domain_name) {
- ndr_print_string(ndr, "domain_name", r->in.domain_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
- ndr->depth++;
- if (r->in.domain_guid) {
- ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "site_name", r->in.site_name);
- ndr->depth++;
- if (r->in.site_name) {
- ndr_print_string(ndr, "site_name", r->in.site_name);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_netr_DsRGetDCNameInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DsRGetSiteName(struct ndr_push *ndr, int flags, const struct netr_DsRGetSiteName *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
- if (r->in.computer_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.site == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.site == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.site, ndr_charset_length(*r->out.site, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DsRGetSiteName(struct ndr_pull *ndr, int flags, struct netr_DsRGetSiteName *r)
-{
- uint32_t _ptr_computer_name;
- uint32_t _ptr_site;
- TALLOC_CTX *_mem_save_computer_name_0;
- TALLOC_CTX *_mem_save_site_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
- if (_ptr_computer_name) {
- NDR_PULL_ALLOC(ndr, r->in.computer_name);
- } else {
- r->in.computer_name = NULL;
- }
- if (r->in.computer_name) {
- _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.site);
- ZERO_STRUCTP(r->out.site);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.site);
- }
- _mem_save_site_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.site, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_site));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.site));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.site));
- if (ndr_get_array_length(ndr, r->out.site) > ndr_get_array_size(ndr, r->out.site)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.site), ndr_get_array_length(ndr, r->out.site));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.site, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DsRGetSiteName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetSiteName *r)
-{
- ndr_print_struct(ndr, name, "netr_DsRGetSiteName");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DsRGetSiteName");
- ndr->depth++;
- ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
- ndr->depth++;
- if (r->in.computer_name) {
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DsRGetSiteName");
- ndr->depth++;
- ndr_print_ptr(ndr, "site", r->out.site);
- ndr->depth++;
- ndr_print_ptr(ndr, "site", *r->out.site);
- ndr->depth++;
- ndr_print_string(ndr, "site", *r->out.site);
- ndr->depth--;
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonGetDomainInfo(struct ndr_push *ndr, int flags, const struct netr_LogonGetDomainInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
- if (r->in.computer_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.credential == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- if (r->in.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.query, r->in.level));
- NDR_CHECK(ndr_push_netr_DomainQuery(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.query));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonGetDomainInfo(struct ndr_pull *ndr, int flags, struct netr_LogonGetDomainInfo *r)
-{
- uint32_t _ptr_computer_name;
- TALLOC_CTX *_mem_save_computer_name_0;
- TALLOC_CTX *_mem_save_credential_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
- if (_ptr_computer_name) {
- NDR_PULL_ALLOC(ndr, r->in.computer_name);
- } else {
- r->in.computer_name = NULL;
- }
- if (r->in.computer_name) {
- _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.credential);
- }
- _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.query, r->in.level));
- NDR_CHECK(ndr_pull_netr_DomainQuery(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.query));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- *r->out.return_authenticator = *r->in.return_authenticator;
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetDomainInfo *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonGetDomainInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonGetDomainInfo");
- ndr->depth++;
- ndr_print_string(ndr, "server_name", r->in.server_name);
- ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
- ndr->depth++;
- if (r->in.computer_name) {
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "credential", r->in.credential);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
- ndr->depth--;
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.query, r->in.level);
- ndr_print_netr_DomainQuery(ndr, "query", &r->in.query);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonGetDomainInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_netr_DomainInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_ServerPasswordSet2(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet2 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- NDR_CHECK(ndr_push_netr_CryptPassword(ndr, NDR_SCALARS, &r->in.new_password));
- }
- if (flags & NDR_OUT) {
- if (r->out.return_authenticator == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_ServerPasswordSet2(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet2 *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
- if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
- NDR_CHECK(ndr_pull_netr_CryptPassword(ndr, NDR_SCALARS, &r->in.new_password));
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- ZERO_STRUCTP(r->out.return_authenticator);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- }
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_ServerPasswordSet2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet2 *r)
-{
- ndr_print_struct(ndr, name, "netr_ServerPasswordSet2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_ServerPasswordSet2");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_string(ndr, "account_name", r->in.account_name);
- ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
- ndr_print_netr_CryptPassword(ndr, "new_password", &r->in.new_password);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_ServerPasswordSet2");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRSERVERPASSWORDGET(struct ndr_push *ndr, int flags, const struct netr_NETRSERVERPASSWORDGET *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRSERVERPASSWORDGET(struct ndr_pull *ndr, int flags, struct netr_NETRSERVERPASSWORDGET *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRSERVERPASSWORDGET(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERPASSWORDGET *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRSERVERPASSWORDGET");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRSERVERPASSWORDGET");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRSERVERPASSWORDGET");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRLOGONSENDTOSAM(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRLOGONSENDTOSAM(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSENDTOSAM *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRLOGONSENDTOSAM(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRLOGONSENDTOSAM");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRLOGONSENDTOSAM");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRLOGONSENDTOSAM");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DSRADDRESSTOSITENAMESW(struct ndr_push *ndr, int flags, const struct netr_DSRADDRESSTOSITENAMESW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DSRADDRESSTOSITENAMESW(struct ndr_pull *ndr, int flags, struct netr_DSRADDRESSTOSITENAMESW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DSRADDRESSTOSITENAMESW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRADDRESSTOSITENAMESW *r)
-{
- ndr_print_struct(ndr, name, "netr_DSRADDRESSTOSITENAMESW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DSRADDRESSTOSITENAMESW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DSRADDRESSTOSITENAMESW");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DsRGetDCNameEx2(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx2 *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.client_account));
- if (r->in.client_account) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.client_account, ndr_charset_length(r->in.client_account, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.mask));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
- if (r->in.domain_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain_name, ndr_charset_length(r->in.domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
- if (r->in.domain_guid) {
- NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
- if (r->in.site_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.site_name, ndr_charset_length(r->in.site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DsRGetDCNameEx2(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx2 *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_client_account;
- uint32_t _ptr_domain_name;
- uint32_t _ptr_domain_guid;
- uint32_t _ptr_site_name;
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_client_account_0;
- TALLOC_CTX *_mem_save_domain_name_0;
- TALLOC_CTX *_mem_save_domain_guid_0;
- TALLOC_CTX *_mem_save_site_name_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_account));
- if (_ptr_client_account) {
- NDR_PULL_ALLOC(ndr, r->in.client_account);
- } else {
- r->in.client_account = NULL;
- }
- if (r->in.client_account) {
- _mem_save_client_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.client_account, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.client_account));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.client_account));
- if (ndr_get_array_length(ndr, &r->in.client_account) > ndr_get_array_size(ndr, &r->in.client_account)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.client_account), ndr_get_array_length(ndr, &r->in.client_account));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.client_account), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.client_account, ndr_get_array_length(ndr, &r->in.client_account), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_account_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.mask));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
- if (_ptr_domain_name) {
- NDR_PULL_ALLOC(ndr, r->in.domain_name);
- } else {
- r->in.domain_name = NULL;
- }
- if (r->in.domain_name) {
- _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
- if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain_name), ndr_get_array_length(ndr, &r->in.domain_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain_name, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
- if (_ptr_domain_guid) {
- NDR_PULL_ALLOC(ndr, r->in.domain_guid);
- } else {
- r->in.domain_guid = NULL;
- }
- if (r->in.domain_guid) {
- _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
- NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
- if (_ptr_site_name) {
- NDR_PULL_ALLOC(ndr, r->in.site_name);
- } else {
- r->in.site_name = NULL;
- }
- if (r->in.site_name) {
- _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
- if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.site_name), ndr_get_array_length(ndr, &r->in.site_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.site_name, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DsRGetDCNameEx2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx2 *r)
-{
- ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DsRGetDCNameEx2");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "client_account", r->in.client_account);
- ndr->depth++;
- if (r->in.client_account) {
- ndr_print_string(ndr, "client_account", r->in.client_account);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "mask", r->in.mask);
- ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
- ndr->depth++;
- if (r->in.domain_name) {
- ndr_print_string(ndr, "domain_name", r->in.domain_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
- ndr->depth++;
- if (r->in.domain_guid) {
- ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "site_name", r->in.site_name);
- ndr->depth++;
- if (r->in.site_name) {
- ndr_print_string(ndr, "site_name", r->in.site_name);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx2");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_netr_DsRGetDCNameInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct ndr_push *ndr, int flags, const struct netr_NETRENUMERATETRUSTEDDOMAINSEX *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct ndr_pull *ndr, int flags, struct netr_NETRENUMERATETRUSTEDDOMAINSEX *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRENUMERATETRUSTEDDOMAINSEX *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRENUMERATETRUSTEDDOMAINSEX");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRENUMERATETRUSTEDDOMAINSEX");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRENUMERATETRUSTEDDOMAINSEX");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DSRADDRESSTOSITENAMESEXW(struct ndr_push *ndr, int flags, const struct netr_DSRADDRESSTOSITENAMESEXW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DSRADDRESSTOSITENAMESEXW(struct ndr_pull *ndr, int flags, struct netr_DSRADDRESSTOSITENAMESEXW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DSRADDRESSTOSITENAMESEXW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRADDRESSTOSITENAMESEXW *r)
-{
- ndr_print_struct(ndr, name, "netr_DSRADDRESSTOSITENAMESEXW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DSRADDRESSTOSITENAMESEXW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DSRADDRESSTOSITENAMESEXW");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DSRGETDCSITECOVERAGEW(struct ndr_push *ndr, int flags, const struct netr_DSRGETDCSITECOVERAGEW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DSRGETDCSITECOVERAGEW(struct ndr_pull *ndr, int flags, struct netr_DSRGETDCSITECOVERAGEW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DSRGETDCSITECOVERAGEW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRGETDCSITECOVERAGEW *r)
-{
- ndr_print_struct(ndr, name, "netr_DSRGETDCSITECOVERAGEW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DSRGETDCSITECOVERAGEW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DSRGETDCSITECOVERAGEW");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonSamLogonEx(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonEx *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
- if (r->in.computer_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
- if (r->in.flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
- }
- if (flags & NDR_OUT) {
- if (r->out.validation == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
- NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
- if (r->out.authoritative == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
- if (r->out.flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonSamLogonEx(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonEx *r)
-{
- uint32_t _ptr_server_name;
- uint32_t _ptr_computer_name;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_computer_name_0;
- TALLOC_CTX *_mem_save_validation_0;
- TALLOC_CTX *_mem_save_authoritative_0;
- TALLOC_CTX *_mem_save_flags_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
- if (_ptr_computer_name) {
- NDR_PULL_ALLOC(ndr, r->in.computer_name);
- } else {
- r->in.computer_name = NULL;
- }
- if (r->in.computer_name) {
- _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
- }
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.flags);
- }
- _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.validation);
- ZERO_STRUCTP(r->out.validation);
- NDR_PULL_ALLOC(ndr, r->out.authoritative);
- ZERO_STRUCTP(r->out.authoritative);
- NDR_PULL_ALLOC(ndr, r->out.flags);
- *r->out.flags = *r->in.flags;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.validation);
- }
- _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
- NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.authoritative);
- }
- _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.flags);
- }
- _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonSamLogonEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonEx *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonSamLogonEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonSamLogonEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
- ndr->depth++;
- if (r->in.computer_name) {
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- }
- ndr->depth--;
- ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
- ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
- ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
- ndr_print_ptr(ndr, "flags", r->in.flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", *r->in.flags);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonSamLogonEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "validation", r->out.validation);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
- ndr_print_netr_Validation(ndr, "validation", r->out.validation);
- ndr->depth--;
- ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
- ndr->depth++;
- ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
- ndr->depth--;
- ndr_print_ptr(ndr, "flags", r->out.flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", *r->out.flags);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DsrEnumerateDomainTrusts(struct ndr_push *ndr, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
-{
- uint32_t cntr_trusts_1;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->in.trust_flags));
- }
- if (flags & NDR_OUT) {
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- if (r->out.trusts == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.count));
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->out.count; cntr_trusts_1++) {
- if (r->out.trusts[cntr_trusts_1] == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- }
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->out.count; cntr_trusts_1++) {
- NDR_CHECK(ndr_push_netr_DomainTrust(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts[cntr_trusts_1]));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DsrEnumerateDomainTrusts(struct ndr_pull *ndr, int flags, struct netr_DsrEnumerateDomainTrusts *r)
-{
- uint32_t _ptr_server_name;
- uint32_t _ptr_trusts;
- uint32_t cntr_trusts_1;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_count_0;
- TALLOC_CTX *_mem_save_trusts_1;
- TALLOC_CTX *_mem_save_trusts_2;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->in.trust_flags));
- NDR_PULL_ALLOC(ndr, r->out.count);
- ZERO_STRUCTP(r->out.count);
- NDR_PULL_ALLOC_N(ndr, r->out.trusts, count);
- memset(r->out.trusts, 0, count * sizeof(*r->out.trusts));
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.trusts));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC_N(ndr, r->out.trusts, ndr_get_array_size(ndr, &r->out.trusts));
- }
- _mem_save_trusts_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.trusts, 0);
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->out.count; cntr_trusts_1++) {
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_trusts));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.trusts[cntr_trusts_1]);
- }
- }
- for (cntr_trusts_1 = 0; cntr_trusts_1 < r->out.count; cntr_trusts_1++) {
- _mem_save_trusts_2 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.trusts[cntr_trusts_1], LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_netr_DomainTrust(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts[cntr_trusts_1]));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_2, LIBNDR_FLAG_REF_ALLOC);
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_1, 0);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.trusts) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.trusts, r->out.count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DsrEnumerateDomainTrusts(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
-{
- uint32_t cntr_trusts_1;
- ndr_print_struct(ndr, name, "netr_DsrEnumerateDomainTrusts");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DsrEnumerateDomainTrusts");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_netr_TrustFlags(ndr, "trust_flags", r->in.trust_flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DsrEnumerateDomainTrusts");
- ndr->depth++;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr_print_ptr(ndr, "trusts", r->out.trusts);
- ndr->depth++;
- ndr->print(ndr, "%s: ARRAY(%d)", "trusts", r->out.count);
- ndr->depth++;
- for (cntr_trusts_1=0;cntr_trusts_1<r->out.count;cntr_trusts_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_trusts_1);
- if (idx_1) {
- ndr_print_ptr(ndr, "trusts", r->out.trusts[cntr_trusts_1]);
- ndr->depth++;
- ndr_print_netr_DomainTrust(ndr, "trusts", r->out.trusts[cntr_trusts_1]);
- ndr->depth--;
- free(idx_1);
- }
- }
- ndr->depth--;
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DSRDEREGISTERDNSHOSTRECORDS(struct ndr_push *ndr, int flags, const struct netr_DSRDEREGISTERDNSHOSTRECORDS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DSRDEREGISTERDNSHOSTRECORDS(struct ndr_pull *ndr, int flags, struct netr_DSRDEREGISTERDNSHOSTRECORDS *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DSRDEREGISTERDNSHOSTRECORDS(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRDEREGISTERDNSHOSTRECORDS *r)
-{
- ndr_print_struct(ndr, name, "netr_DSRDEREGISTERDNSHOSTRECORDS");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DSRDEREGISTERDNSHOSTRECORDS");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DSRDEREGISTERDNSHOSTRECORDS");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRSERVERTRUSTPASSWORDSGET(struct ndr_push *ndr, int flags, const struct netr_NETRSERVERTRUSTPASSWORDSGET *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRSERVERTRUSTPASSWORDSGET(struct ndr_pull *ndr, int flags, struct netr_NETRSERVERTRUSTPASSWORDSGET *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRSERVERTRUSTPASSWORDSGET(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERTRUSTPASSWORDSGET *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRSERVERTRUSTPASSWORDSGET");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRSERVERTRUSTPASSWORDSGET");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRSERVERTRUSTPASSWORDSGET");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_DSRGETFORESTTRUSTINFORMATION(struct ndr_push *ndr, int flags, const struct netr_DSRGETFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_DSRGETFORESTTRUSTINFORMATION(struct ndr_pull *ndr, int flags, struct netr_DSRGETFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_DSRGETFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRGETFORESTTRUSTINFORMATION *r)
-{
- ndr_print_struct(ndr, name, "netr_DSRGETFORESTTRUSTINFORMATION");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_DSRGETFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_DSRGETFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRGETFORESTTRUSTINFORMATION(struct ndr_push *ndr, int flags, const struct netr_NETRGETFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRGETFORESTTRUSTINFORMATION(struct ndr_pull *ndr, int flags, struct netr_NETRGETFORESTTRUSTINFORMATION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRGETFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRGETFORESTTRUSTINFORMATION *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRGETFORESTTRUSTINFORMATION");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRGETFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRGETFORESTTRUSTINFORMATION");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_LogonSamLogonWithFlags(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonWithFlags *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
- if (r->in.server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
- if (r->in.computer_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
- if (r->in.credential) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
- if (r->in.return_authenticator) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- }
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
- if (r->in.flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
- if (r->out.return_authenticator) {
- NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- }
- if (r->out.validation == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
- NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
- if (r->out.authoritative == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
- if (r->out.flags == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_LogonSamLogonWithFlags(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonWithFlags *r)
-{
- uint32_t _ptr_server_name;
- uint32_t _ptr_computer_name;
- uint32_t _ptr_credential;
- uint32_t _ptr_return_authenticator;
- TALLOC_CTX *_mem_save_server_name_0;
- TALLOC_CTX *_mem_save_computer_name_0;
- TALLOC_CTX *_mem_save_credential_0;
- TALLOC_CTX *_mem_save_return_authenticator_0;
- TALLOC_CTX *_mem_save_validation_0;
- TALLOC_CTX *_mem_save_authoritative_0;
- TALLOC_CTX *_mem_save_flags_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->in.server_name);
- } else {
- r->in.server_name = NULL;
- }
- if (r->in.server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
- if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
- if (_ptr_computer_name) {
- NDR_PULL_ALLOC(ndr, r->in.computer_name);
- } else {
- r->in.computer_name = NULL;
- }
- if (r->in.computer_name) {
- _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
- if (_ptr_credential) {
- NDR_PULL_ALLOC(ndr, r->in.credential);
- } else {
- r->in.credential = NULL;
- }
- if (r->in.credential) {
- _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
- if (_ptr_return_authenticator) {
- NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
- } else {
- r->in.return_authenticator = NULL;
- }
- if (r->in.return_authenticator) {
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
- }
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.flags);
- }
- _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.validation);
- ZERO_STRUCTP(r->out.validation);
- NDR_PULL_ALLOC(ndr, r->out.authoritative);
- ZERO_STRUCTP(r->out.authoritative);
- NDR_PULL_ALLOC(ndr, r->out.flags);
- *r->out.flags = *r->in.flags;
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
- if (_ptr_return_authenticator) {
- NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
- } else {
- r->out.return_authenticator = NULL;
- }
- if (r->out.return_authenticator) {
- _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
- NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.validation);
- }
- _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
- NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.authoritative);
- }
- _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.flags);
- }
- _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonSamLogonWithFlags(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonWithFlags *r)
-{
- ndr_print_struct(ndr, name, "netr_LogonSamLogonWithFlags");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_LogonSamLogonWithFlags");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_name", r->in.server_name);
- ndr->depth++;
- if (r->in.server_name) {
- ndr_print_string(ndr, "server_name", r->in.server_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
- ndr->depth++;
- if (r->in.computer_name) {
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "credential", r->in.credential);
- ndr->depth++;
- if (r->in.credential) {
- ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
- ndr->depth++;
- if (r->in.return_authenticator) {
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
- }
- ndr->depth--;
- ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
- ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
- ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
- ndr_print_ptr(ndr, "flags", r->in.flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", *r->in.flags);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_LogonSamLogonWithFlags");
- ndr->depth++;
- ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
- ndr->depth++;
- if (r->out.return_authenticator) {
- ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "validation", r->out.validation);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
- ndr_print_netr_Validation(ndr, "validation", r->out.validation);
- ndr->depth--;
- ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
- ndr->depth++;
- ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
- ndr->depth--;
- ndr_print_ptr(ndr, "flags", r->out.flags);
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", *r->out.flags);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_netr_NETRSERVERGETTRUSTINFO(struct ndr_push *ndr, int flags, const struct netr_NETRSERVERGETTRUSTINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_netr_NETRSERVERGETTRUSTINFO(struct ndr_pull *ndr, int flags, struct netr_NETRSERVERGETTRUSTINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_netr_NETRSERVERGETTRUSTINFO(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERGETTRUSTINFO *r)
-{
- ndr_print_struct(ndr, name, "netr_NETRSERVERGETTRUSTINFO");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "netr_NETRSERVERGETTRUSTINFO");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "netr_NETRSERVERGETTRUSTINFO");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call netlogon_calls[] = {
- {
- "netr_LogonUasLogon",
- sizeof(struct netr_LogonUasLogon),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogon,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogon,
- (ndr_print_function_t) ndr_print_netr_LogonUasLogon,
- False,
- },
- {
- "netr_LogonUasLogoff",
- sizeof(struct netr_LogonUasLogoff),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogoff,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogoff,
- (ndr_print_function_t) ndr_print_netr_LogonUasLogoff,
- False,
- },
- {
- "netr_LogonSamLogon",
- sizeof(struct netr_LogonSamLogon),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogon,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogon,
- (ndr_print_function_t) ndr_print_netr_LogonSamLogon,
- False,
- },
- {
- "netr_LogonSamLogoff",
- sizeof(struct netr_LogonSamLogoff),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogoff,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogoff,
- (ndr_print_function_t) ndr_print_netr_LogonSamLogoff,
- False,
- },
- {
- "netr_ServerReqChallenge",
- sizeof(struct netr_ServerReqChallenge),
- (ndr_push_flags_fn_t) ndr_push_netr_ServerReqChallenge,
- (ndr_pull_flags_fn_t) ndr_pull_netr_ServerReqChallenge,
- (ndr_print_function_t) ndr_print_netr_ServerReqChallenge,
- False,
- },
- {
- "netr_ServerAuthenticate",
- sizeof(struct netr_ServerAuthenticate),
- (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate,
- (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate,
- (ndr_print_function_t) ndr_print_netr_ServerAuthenticate,
- False,
- },
- {
- "netr_ServerPasswordSet",
- sizeof(struct netr_ServerPasswordSet),
- (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet,
- (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet,
- (ndr_print_function_t) ndr_print_netr_ServerPasswordSet,
- False,
- },
- {
- "netr_DatabaseDeltas",
- sizeof(struct netr_DatabaseDeltas),
- (ndr_push_flags_fn_t) ndr_push_netr_DatabaseDeltas,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseDeltas,
- (ndr_print_function_t) ndr_print_netr_DatabaseDeltas,
- False,
- },
- {
- "netr_DatabaseSync",
- sizeof(struct netr_DatabaseSync),
- (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync,
- (ndr_print_function_t) ndr_print_netr_DatabaseSync,
- False,
- },
- {
- "netr_AccountDeltas",
- sizeof(struct netr_AccountDeltas),
- (ndr_push_flags_fn_t) ndr_push_netr_AccountDeltas,
- (ndr_pull_flags_fn_t) ndr_pull_netr_AccountDeltas,
- (ndr_print_function_t) ndr_print_netr_AccountDeltas,
- False,
- },
- {
- "netr_AccountSync",
- sizeof(struct netr_AccountSync),
- (ndr_push_flags_fn_t) ndr_push_netr_AccountSync,
- (ndr_pull_flags_fn_t) ndr_pull_netr_AccountSync,
- (ndr_print_function_t) ndr_print_netr_AccountSync,
- False,
- },
- {
- "netr_GetDcName",
- sizeof(struct netr_GetDcName),
- (ndr_push_flags_fn_t) ndr_push_netr_GetDcName,
- (ndr_pull_flags_fn_t) ndr_pull_netr_GetDcName,
- (ndr_print_function_t) ndr_print_netr_GetDcName,
- False,
- },
- {
- "netr_LogonControl",
- sizeof(struct netr_LogonControl),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonControl,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl,
- (ndr_print_function_t) ndr_print_netr_LogonControl,
- False,
- },
- {
- "netr_GetAnyDCName",
- sizeof(struct netr_GetAnyDCName),
- (ndr_push_flags_fn_t) ndr_push_netr_GetAnyDCName,
- (ndr_pull_flags_fn_t) ndr_pull_netr_GetAnyDCName,
- (ndr_print_function_t) ndr_print_netr_GetAnyDCName,
- False,
- },
- {
- "netr_LogonControl2",
- sizeof(struct netr_LogonControl2),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2,
- (ndr_print_function_t) ndr_print_netr_LogonControl2,
- False,
- },
- {
- "netr_ServerAuthenticate2",
- sizeof(struct netr_ServerAuthenticate2),
- (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate2,
- (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate2,
- (ndr_print_function_t) ndr_print_netr_ServerAuthenticate2,
- False,
- },
- {
- "netr_DatabaseSync2",
- sizeof(struct netr_DatabaseSync2),
- (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync2,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync2,
- (ndr_print_function_t) ndr_print_netr_DatabaseSync2,
- False,
- },
- {
- "netr_DatabaseRedo",
- sizeof(struct netr_DatabaseRedo),
- (ndr_push_flags_fn_t) ndr_push_netr_DatabaseRedo,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseRedo,
- (ndr_print_function_t) ndr_print_netr_DatabaseRedo,
- False,
- },
- {
- "netr_LogonControl2Ex",
- sizeof(struct netr_LogonControl2Ex),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2Ex,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2Ex,
- (ndr_print_function_t) ndr_print_netr_LogonControl2Ex,
- False,
- },
- {
- "netr_NETRENUMERATETRUSTEDDOMAINS",
- sizeof(struct netr_NETRENUMERATETRUSTEDDOMAINS),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRENUMERATETRUSTEDDOMAINS,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINS,
- (ndr_print_function_t) ndr_print_netr_NETRENUMERATETRUSTEDDOMAINS,
- False,
- },
- {
- "netr_DsRGetDCName",
- sizeof(struct netr_DsRGetDCName),
- (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCName,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCName,
- (ndr_print_function_t) ndr_print_netr_DsRGetDCName,
- False,
- },
- {
- "netr_NETRLOGONDUMMYROUTINE1",
- sizeof(struct netr_NETRLOGONDUMMYROUTINE1),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONDUMMYROUTINE1,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONDUMMYROUTINE1,
- (ndr_print_function_t) ndr_print_netr_NETRLOGONDUMMYROUTINE1,
- False,
- },
- {
- "netr_NETRLOGONSETSERVICEBITS",
- sizeof(struct netr_NETRLOGONSETSERVICEBITS),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSETSERVICEBITS,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSETSERVICEBITS,
- (ndr_print_function_t) ndr_print_netr_NETRLOGONSETSERVICEBITS,
- False,
- },
- {
- "netr_NETRLOGONGETTRUSTRID",
- sizeof(struct netr_NETRLOGONGETTRUSTRID),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONGETTRUSTRID,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONGETTRUSTRID,
- (ndr_print_function_t) ndr_print_netr_NETRLOGONGETTRUSTRID,
- False,
- },
- {
- "netr_NETRLOGONCOMPUTESERVERDIGEST",
- sizeof(struct netr_NETRLOGONCOMPUTESERVERDIGEST),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST,
- (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST,
- False,
- },
- {
- "netr_NETRLOGONCOMPUTECLIENTDIGEST",
- sizeof(struct netr_NETRLOGONCOMPUTECLIENTDIGEST),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST,
- (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST,
- False,
- },
- {
- "netr_ServerAuthenticate3",
- sizeof(struct netr_ServerAuthenticate3),
- (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate3,
- (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate3,
- (ndr_print_function_t) ndr_print_netr_ServerAuthenticate3,
- False,
- },
- {
- "netr_DsRGetDCNameEx",
- sizeof(struct netr_DsRGetDCNameEx),
- (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx,
- (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx,
- False,
- },
- {
- "netr_DsRGetSiteName",
- sizeof(struct netr_DsRGetSiteName),
- (ndr_push_flags_fn_t) ndr_push_netr_DsRGetSiteName,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetSiteName,
- (ndr_print_function_t) ndr_print_netr_DsRGetSiteName,
- False,
- },
- {
- "netr_LogonGetDomainInfo",
- sizeof(struct netr_LogonGetDomainInfo),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonGetDomainInfo,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetDomainInfo,
- (ndr_print_function_t) ndr_print_netr_LogonGetDomainInfo,
- False,
- },
- {
- "netr_ServerPasswordSet2",
- sizeof(struct netr_ServerPasswordSet2),
- (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet2,
- (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet2,
- (ndr_print_function_t) ndr_print_netr_ServerPasswordSet2,
- False,
- },
- {
- "netr_NETRSERVERPASSWORDGET",
- sizeof(struct netr_NETRSERVERPASSWORDGET),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRSERVERPASSWORDGET,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRSERVERPASSWORDGET,
- (ndr_print_function_t) ndr_print_netr_NETRSERVERPASSWORDGET,
- False,
- },
- {
- "netr_NETRLOGONSENDTOSAM",
- sizeof(struct netr_NETRLOGONSENDTOSAM),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSENDTOSAM,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSENDTOSAM,
- (ndr_print_function_t) ndr_print_netr_NETRLOGONSENDTOSAM,
- False,
- },
- {
- "netr_DSRADDRESSTOSITENAMESW",
- sizeof(struct netr_DSRADDRESSTOSITENAMESW),
- (ndr_push_flags_fn_t) ndr_push_netr_DSRADDRESSTOSITENAMESW,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DSRADDRESSTOSITENAMESW,
- (ndr_print_function_t) ndr_print_netr_DSRADDRESSTOSITENAMESW,
- False,
- },
- {
- "netr_DsRGetDCNameEx2",
- sizeof(struct netr_DsRGetDCNameEx2),
- (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx2,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx2,
- (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx2,
- False,
- },
- {
- "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN",
- sizeof(struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
- (ndr_print_function_t) ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
- False,
- },
- {
- "netr_NETRENUMERATETRUSTEDDOMAINSEX",
- sizeof(struct netr_NETRENUMERATETRUSTEDDOMAINSEX),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRENUMERATETRUSTEDDOMAINSEX,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINSEX,
- (ndr_print_function_t) ndr_print_netr_NETRENUMERATETRUSTEDDOMAINSEX,
- False,
- },
- {
- "netr_DSRADDRESSTOSITENAMESEXW",
- sizeof(struct netr_DSRADDRESSTOSITENAMESEXW),
- (ndr_push_flags_fn_t) ndr_push_netr_DSRADDRESSTOSITENAMESEXW,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DSRADDRESSTOSITENAMESEXW,
- (ndr_print_function_t) ndr_print_netr_DSRADDRESSTOSITENAMESEXW,
- False,
- },
- {
- "netr_DSRGETDCSITECOVERAGEW",
- sizeof(struct netr_DSRGETDCSITECOVERAGEW),
- (ndr_push_flags_fn_t) ndr_push_netr_DSRGETDCSITECOVERAGEW,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DSRGETDCSITECOVERAGEW,
- (ndr_print_function_t) ndr_print_netr_DSRGETDCSITECOVERAGEW,
- False,
- },
- {
- "netr_LogonSamLogonEx",
- sizeof(struct netr_LogonSamLogonEx),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonEx,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonEx,
- (ndr_print_function_t) ndr_print_netr_LogonSamLogonEx,
- False,
- },
- {
- "netr_DsrEnumerateDomainTrusts",
- sizeof(struct netr_DsrEnumerateDomainTrusts),
- (ndr_push_flags_fn_t) ndr_push_netr_DsrEnumerateDomainTrusts,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DsrEnumerateDomainTrusts,
- (ndr_print_function_t) ndr_print_netr_DsrEnumerateDomainTrusts,
- False,
- },
- {
- "netr_DSRDEREGISTERDNSHOSTRECORDS",
- sizeof(struct netr_DSRDEREGISTERDNSHOSTRECORDS),
- (ndr_push_flags_fn_t) ndr_push_netr_DSRDEREGISTERDNSHOSTRECORDS,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DSRDEREGISTERDNSHOSTRECORDS,
- (ndr_print_function_t) ndr_print_netr_DSRDEREGISTERDNSHOSTRECORDS,
- False,
- },
- {
- "netr_NETRSERVERTRUSTPASSWORDSGET",
- sizeof(struct netr_NETRSERVERTRUSTPASSWORDSGET),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRSERVERTRUSTPASSWORDSGET,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRSERVERTRUSTPASSWORDSGET,
- (ndr_print_function_t) ndr_print_netr_NETRSERVERTRUSTPASSWORDSGET,
- False,
- },
- {
- "netr_DSRGETFORESTTRUSTINFORMATION",
- sizeof(struct netr_DSRGETFORESTTRUSTINFORMATION),
- (ndr_push_flags_fn_t) ndr_push_netr_DSRGETFORESTTRUSTINFORMATION,
- (ndr_pull_flags_fn_t) ndr_pull_netr_DSRGETFORESTTRUSTINFORMATION,
- (ndr_print_function_t) ndr_print_netr_DSRGETFORESTTRUSTINFORMATION,
- False,
- },
- {
- "netr_NETRGETFORESTTRUSTINFORMATION",
- sizeof(struct netr_NETRGETFORESTTRUSTINFORMATION),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRGETFORESTTRUSTINFORMATION,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRGETFORESTTRUSTINFORMATION,
- (ndr_print_function_t) ndr_print_netr_NETRGETFORESTTRUSTINFORMATION,
- False,
- },
- {
- "netr_LogonSamLogonWithFlags",
- sizeof(struct netr_LogonSamLogonWithFlags),
- (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonWithFlags,
- (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonWithFlags,
- (ndr_print_function_t) ndr_print_netr_LogonSamLogonWithFlags,
- False,
- },
- {
- "netr_NETRSERVERGETTRUSTINFO",
- sizeof(struct netr_NETRSERVERGETTRUSTINFO),
- (ndr_push_flags_fn_t) ndr_push_netr_NETRSERVERGETTRUSTINFO,
- (ndr_pull_flags_fn_t) ndr_pull_netr_NETRSERVERGETTRUSTINFO,
- (ndr_print_function_t) ndr_print_netr_NETRSERVERGETTRUSTINFO,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const netlogon_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\netlogon]",
- "ncacn_ip_tcp:",
- "ncalrpc:",
-};
-
-const struct dcerpc_endpoint_list netlogon_endpoints = {
- .count = 3,
- .names = netlogon_endpoint_strings
-};
-
-const char * const netlogon_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list netlogon_authservices = {
- .count = 3,
- .names = netlogon_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_netlogon = {
- .name = "netlogon",
- .syntax_id = {
- {0x12345678,0x1234,0xabcd,{0xef,0x00},{0x01,0x23,0x45,0x67,0xcf,0xfb}},
- DCERPC_NETLOGON_VERSION
- },
- .helpstring = DCERPC_NETLOGON_HELPSTRING,
- .num_calls = 47,
- .calls = netlogon_calls,
- .endpoints = &netlogon_endpoints,
- .authservices = &netlogon_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_netlogon.h b/source/librpc/gen_ndr/ndr_netlogon.h
deleted file mode 100644
index f00a3cbdbf0..00000000000
--- a/source/librpc/gen_ndr/ndr_netlogon.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/netlogon.h"
-
-#ifndef _HEADER_NDR_netlogon
-#define _HEADER_NDR_netlogon
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_NETLOGON_UUID "12345678-1234-abcd-ef00-01234567cffb"
-#define DCERPC_NETLOGON_VERSION 1.0
-#define DCERPC_NETLOGON_NAME "netlogon"
-#define DCERPC_NETLOGON_HELPSTRING NULL
-extern const struct dcerpc_interface_table dcerpc_table_netlogon;
-NTSTATUS dcerpc_server_netlogon_init(void);
-#define DCERPC_NETR_LOGONUASLOGON (0x00)
-
-#define DCERPC_NETR_LOGONUASLOGOFF (0x01)
-
-#define DCERPC_NETR_LOGONSAMLOGON (0x02)
-
-#define DCERPC_NETR_LOGONSAMLOGOFF (0x03)
-
-#define DCERPC_NETR_SERVERREQCHALLENGE (0x04)
-
-#define DCERPC_NETR_SERVERAUTHENTICATE (0x05)
-
-#define DCERPC_NETR_SERVERPASSWORDSET (0x06)
-
-#define DCERPC_NETR_DATABASEDELTAS (0x07)
-
-#define DCERPC_NETR_DATABASESYNC (0x08)
-
-#define DCERPC_NETR_ACCOUNTDELTAS (0x09)
-
-#define DCERPC_NETR_ACCOUNTSYNC (0x0a)
-
-#define DCERPC_NETR_GETDCNAME (0x0b)
-
-#define DCERPC_NETR_LOGONCONTROL (0x0c)
-
-#define DCERPC_NETR_GETANYDCNAME (0x0d)
-
-#define DCERPC_NETR_LOGONCONTROL2 (0x0e)
-
-#define DCERPC_NETR_SERVERAUTHENTICATE2 (0x0f)
-
-#define DCERPC_NETR_DATABASESYNC2 (0x10)
-
-#define DCERPC_NETR_DATABASEREDO (0x11)
-
-#define DCERPC_NETR_LOGONCONTROL2EX (0x12)
-
-#define DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINS (0x13)
-
-#define DCERPC_NETR_DSRGETDCNAME (0x14)
-
-#define DCERPC_NETR_NETRLOGONDUMMYROUTINE1 (0x15)
-
-#define DCERPC_NETR_NETRLOGONSETSERVICEBITS (0x16)
-
-#define DCERPC_NETR_NETRLOGONGETTRUSTRID (0x17)
-
-#define DCERPC_NETR_NETRLOGONCOMPUTESERVERDIGEST (0x18)
-
-#define DCERPC_NETR_NETRLOGONCOMPUTECLIENTDIGEST (0x19)
-
-#define DCERPC_NETR_SERVERAUTHENTICATE3 (0x1a)
-
-#define DCERPC_NETR_DSRGETDCNAMEEX (0x1b)
-
-#define DCERPC_NETR_DSRGETSITENAME (0x1c)
-
-#define DCERPC_NETR_LOGONGETDOMAININFO (0x1d)
-
-#define DCERPC_NETR_SERVERPASSWORDSET2 (0x1e)
-
-#define DCERPC_NETR_NETRSERVERPASSWORDGET (0x1f)
-
-#define DCERPC_NETR_NETRLOGONSENDTOSAM (0x20)
-
-#define DCERPC_NETR_DSRADDRESSTOSITENAMESW (0x21)
-
-#define DCERPC_NETR_DSRGETDCNAMEEX2 (0x22)
-
-#define DCERPC_NETR_NETRLOGONGETTIMESERVICEPARENTDOMAIN (0x23)
-
-#define DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINSEX (0x24)
-
-#define DCERPC_NETR_DSRADDRESSTOSITENAMESEXW (0x25)
-
-#define DCERPC_NETR_DSRGETDCSITECOVERAGEW (0x26)
-
-#define DCERPC_NETR_LOGONSAMLOGONEX (0x27)
-
-#define DCERPC_NETR_DSRENUMERATEDOMAINTRUSTS (0x28)
-
-#define DCERPC_NETR_DSRDEREGISTERDNSHOSTRECORDS (0x29)
-
-#define DCERPC_NETR_NETRSERVERTRUSTPASSWORDSGET (0x2a)
-
-#define DCERPC_NETR_DSRGETFORESTTRUSTINFORMATION (0x2b)
-
-#define DCERPC_NETR_NETRGETFORESTTRUSTINFORMATION (0x2c)
-
-#define DCERPC_NETR_LOGONSAMLOGONWITHFLAGS (0x2d)
-
-#define DCERPC_NETR_NETRSERVERGETTRUSTINFO (0x2e)
-
-#define DCERPC_NETLOGON_CALL_COUNT (47)
-void ndr_print_netr_UasInfo(struct ndr_print *ndr, const char *name, const struct netr_UasInfo *r);
-void ndr_print_netr_UasLogoffInfo(struct ndr_print *ndr, const char *name, const struct netr_UasLogoffInfo *r);
-void ndr_print_netr_AcctLockStr(struct ndr_print *ndr, const char *name, const struct netr_AcctLockStr *r);
-void ndr_print_netr_IdentityInfo(struct ndr_print *ndr, const char *name, const struct netr_IdentityInfo *r);
-void ndr_print_netr_PasswordInfo(struct ndr_print *ndr, const char *name, const struct netr_PasswordInfo *r);
-void ndr_print_netr_ChallengeResponse(struct ndr_print *ndr, const char *name, const struct netr_ChallengeResponse *r);
-void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name, const struct netr_NetworkInfo *r);
-NTSTATUS ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, const union netr_LogonLevel *r);
-NTSTATUS ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, union netr_LogonLevel *r);
-void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, const union netr_LogonLevel *r);
-NTSTATUS ndr_push_netr_GroupMembership(struct ndr_push *ndr, int ndr_flags, const struct netr_GroupMembership *r);
-NTSTATUS ndr_pull_netr_GroupMembership(struct ndr_pull *ndr, int ndr_flags, struct netr_GroupMembership *r);
-void ndr_print_netr_GroupMembership(struct ndr_print *ndr, const char *name, const struct netr_GroupMembership *r);
-NTSTATUS ndr_push_netr_UserSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_UserSessionKey *r);
-NTSTATUS ndr_pull_netr_UserSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_UserSessionKey *r);
-void ndr_print_netr_UserSessionKey(struct ndr_print *ndr, const char *name, const struct netr_UserSessionKey *r);
-NTSTATUS ndr_push_netr_LMSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_LMSessionKey *r);
-NTSTATUS ndr_pull_netr_LMSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_LMSessionKey *r);
-void ndr_print_netr_LMSessionKey(struct ndr_print *ndr, const char *name, const struct netr_LMSessionKey *r);
-NTSTATUS ndr_push_netr_UserFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-NTSTATUS ndr_pull_netr_UserFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_netr_UserFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_netr_SamBaseInfo(struct ndr_print *ndr, const char *name, const struct netr_SamBaseInfo *r);
-void ndr_print_netr_SamInfo2(struct ndr_print *ndr, const char *name, const struct netr_SamInfo2 *r);
-void ndr_print_netr_SidAttr(struct ndr_print *ndr, const char *name, const struct netr_SidAttr *r);
-NTSTATUS ndr_push_netr_SamInfo3(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo3 *r);
-NTSTATUS ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo3 *r);
-void ndr_print_netr_SamInfo3(struct ndr_print *ndr, const char *name, const struct netr_SamInfo3 *r);
-void ndr_print_netr_SamInfo6(struct ndr_print *ndr, const char *name, const struct netr_SamInfo6 *r);
-void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, const struct netr_PacInfo *r);
-NTSTATUS ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r);
-NTSTATUS ndr_pull_netr_Validation(struct ndr_pull *ndr, int ndr_flags, union netr_Validation *r);
-void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name, const union netr_Validation *r);
-NTSTATUS ndr_push_netr_Credential(struct ndr_push *ndr, int ndr_flags, const struct netr_Credential *r);
-NTSTATUS ndr_pull_netr_Credential(struct ndr_pull *ndr, int ndr_flags, struct netr_Credential *r);
-void ndr_print_netr_Credential(struct ndr_print *ndr, const char *name, const struct netr_Credential *r);
-NTSTATUS ndr_push_netr_Authenticator(struct ndr_push *ndr, int ndr_flags, const struct netr_Authenticator *r);
-NTSTATUS ndr_pull_netr_Authenticator(struct ndr_pull *ndr, int ndr_flags, struct netr_Authenticator *r);
-void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *name, const struct netr_Authenticator *r);
-void ndr_print_netr_DELTA_DELETE_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_USER *r);
-void ndr_print_netr_USER_KEY16(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY16 *r);
-void ndr_print_netr_PasswordHistory(struct ndr_print *ndr, const char *name, const struct netr_PasswordHistory *r);
-void ndr_print_netr_USER_KEYS2(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS2 *r);
-void ndr_print_netr_USER_KEY_UNION(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY_UNION *r);
-NTSTATUS ndr_push_netr_USER_KEYS(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS *r);
-NTSTATUS ndr_pull_netr_USER_KEYS(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS *r);
-void ndr_print_netr_USER_KEYS(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS *r);
-void ndr_print_netr_USER_PRIVATE_INFO(struct ndr_print *ndr, const char *name, const struct netr_USER_PRIVATE_INFO *r);
-void ndr_print_netr_DELTA_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_USER *r);
-void ndr_print_netr_DELTA_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DOMAIN *r);
-void ndr_print_netr_DELTA_GROUP(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP *r);
-void ndr_print_netr_DELTA_RENAME(struct ndr_print *ndr, const char *name, const struct netr_DELTA_RENAME *r);
-void ndr_print_netr_DELTA_GROUP_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP_MEMBER *r);
-void ndr_print_netr_DELTA_ALIAS(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS *r);
-void ndr_print_netr_DELTA_ALIAS_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS_MEMBER *r);
-void ndr_print_netr_QUOTA_LIMITS(struct ndr_print *ndr, const char *name, const struct netr_QUOTA_LIMITS *r);
-void ndr_print_netr_DELTA_POLICY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_POLICY *r);
-void ndr_print_netr_DELTA_TRUSTED_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_TRUSTED_DOMAIN *r);
-void ndr_print_netr_DELTA_DELETE_TRUST(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_TRUST *r);
-void ndr_print_netr_DELTA_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ACCOUNT *r);
-void ndr_print_netr_DELTA_DELETE_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_ACCOUNT *r);
-void ndr_print_netr_DELTA_DELETE_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_SECRET *r);
-void ndr_print_netr_CIPHER_VALUE(struct ndr_print *ndr, const char *name, const struct netr_CIPHER_VALUE *r);
-void ndr_print_netr_DELTA_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_SECRET *r);
-void ndr_print_netr_DeltaEnum(struct ndr_print *ndr, const char *name, enum netr_DeltaEnum r);
-void ndr_print_netr_DELTA_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_UNION *r);
-void ndr_print_netr_DELTA_ID_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_ID_UNION *r);
-void ndr_print_netr_DELTA_ENUM(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM *r);
-void ndr_print_netr_DELTA_ENUM_ARRAY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM_ARRAY *r);
-void ndr_print_netr_UAS_INFO_0(struct ndr_print *ndr, const char *name, const struct netr_UAS_INFO_0 *r);
-void ndr_print_netr_AccountBuffer(struct ndr_print *ndr, const char *name, const struct netr_AccountBuffer *r);
-void ndr_print_netr_NETLOGON_INFO_1(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_1 *r);
-void ndr_print_netr_NETLOGON_INFO_2(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_2 *r);
-void ndr_print_netr_NETLOGON_INFO_3(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_3 *r);
-void ndr_print_netr_CONTROL_QUERY_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_QUERY_INFORMATION *r);
-void ndr_print_netr_LogonControlCode(struct ndr_print *ndr, const char *name, enum netr_LogonControlCode r);
-void ndr_print_netr_CONTROL_DATA_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_DATA_INFORMATION *r);
-void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r);
-void ndr_print_netr_Blob(struct ndr_print *ndr, const char *name, const struct netr_Blob *r);
-void ndr_print_netr_BinaryString(struct ndr_print *ndr, const char *name, const struct netr_BinaryString *r);
-void ndr_print_netr_DomainQuery1(struct ndr_print *ndr, const char *name, const struct netr_DomainQuery1 *r);
-void ndr_print_netr_DomainQuery(struct ndr_print *ndr, const char *name, const union netr_DomainQuery *r);
-void ndr_print_netr_DomainTrustInfo(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustInfo *r);
-void ndr_print_netr_DomainInfo1(struct ndr_print *ndr, const char *name, const struct netr_DomainInfo1 *r);
-void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r);
-void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r);
-void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_netr_TrustType(struct ndr_print *ndr, const char *name, enum netr_TrustType r);
-void ndr_print_netr_TrustAttributes(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_netr_DomainTrust(struct ndr_print *ndr, const char *name, const struct netr_DomainTrust *r);
-void ndr_print_netr_LogonUasLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogon *r);
-void ndr_print_netr_LogonUasLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogoff *r);
-void ndr_print_netr_LogonSamLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogon *r);
-void ndr_print_netr_LogonSamLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogoff *r);
-void ndr_print_netr_ServerReqChallenge(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerReqChallenge *r);
-void ndr_print_netr_ServerAuthenticate(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate *r);
-void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet *r);
-void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseDeltas *r);
-void ndr_print_netr_DatabaseSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync *r);
-void ndr_print_netr_AccountDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountDeltas *r);
-void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountSync *r);
-void ndr_print_netr_GetDcName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetDcName *r);
-void ndr_print_netr_LogonControl(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl *r);
-void ndr_print_netr_GetAnyDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetAnyDCName *r);
-void ndr_print_netr_LogonControl2(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2 *r);
-void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate2 *r);
-void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync2 *r);
-void ndr_print_netr_DatabaseRedo(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseRedo *r);
-void ndr_print_netr_LogonControl2Ex(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2Ex *r);
-void ndr_print_netr_NETRENUMERATETRUSTEDDOMAINS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRENUMERATETRUSTEDDOMAINS *r);
-void ndr_print_netr_DsRGetDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCName *r);
-void ndr_print_netr_NETRLOGONDUMMYROUTINE1(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONDUMMYROUTINE1 *r);
-void ndr_print_netr_NETRLOGONSETSERVICEBITS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r);
-void ndr_print_netr_NETRLOGONGETTRUSTRID(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTRUSTRID *r);
-void ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r);
-void ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r);
-void ndr_print_netr_ServerAuthenticate3(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate3 *r);
-void ndr_print_netr_DsRGetDCNameEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx *r);
-void ndr_print_netr_DsRGetSiteName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetSiteName *r);
-void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetDomainInfo *r);
-void ndr_print_netr_ServerPasswordSet2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet2 *r);
-void ndr_print_netr_NETRSERVERPASSWORDGET(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERPASSWORDGET *r);
-void ndr_print_netr_NETRLOGONSENDTOSAM(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSENDTOSAM *r);
-void ndr_print_netr_DSRADDRESSTOSITENAMESW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRADDRESSTOSITENAMESW *r);
-void ndr_print_netr_DsRGetDCNameEx2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx2 *r);
-void ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r);
-void ndr_print_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRENUMERATETRUSTEDDOMAINSEX *r);
-void ndr_print_netr_DSRADDRESSTOSITENAMESEXW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRADDRESSTOSITENAMESEXW *r);
-void ndr_print_netr_DSRGETDCSITECOVERAGEW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRGETDCSITECOVERAGEW *r);
-void ndr_print_netr_LogonSamLogonEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonEx *r);
-void ndr_print_netr_DsrEnumerateDomainTrusts(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrEnumerateDomainTrusts *r);
-void ndr_print_netr_DSRDEREGISTERDNSHOSTRECORDS(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRDEREGISTERDNSHOSTRECORDS *r);
-void ndr_print_netr_NETRSERVERTRUSTPASSWORDSGET(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERTRUSTPASSWORDSGET *r);
-void ndr_print_netr_DSRGETFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct netr_DSRGETFORESTTRUSTINFORMATION *r);
-void ndr_print_netr_NETRGETFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRGETFORESTTRUSTINFORMATION *r);
-void ndr_print_netr_LogonSamLogonWithFlags(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonWithFlags *r);
-void ndr_print_netr_NETRSERVERGETTRUSTINFO(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERGETTRUSTINFO *r);
-#endif /* _HEADER_NDR_netlogon */
diff --git a/source/librpc/gen_ndr/ndr_security.h b/source/librpc/gen_ndr/ndr_security.h
deleted file mode 100644
index 292e9011c62..00000000000
--- a/source/librpc/gen_ndr/ndr_security.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* empty header to deal with pidl */
-
diff --git a/source/librpc/gen_ndr/ndr_srvsvc.c b/source/librpc/gen_ndr/ndr_srvsvc.c
deleted file mode 100644
index 4377b7acfbd..00000000000
--- a/source/librpc/gen_ndr/ndr_srvsvc.c
+++ /dev/null
@@ -1,19569 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_srvsvc.h"
-
-#include "librpc/gen_ndr/ndr_security.h"
-#include "librpc/gen_ndr/ndr_svcctl.h"
-NTSTATUS ndr_push_srvsvc_NetCharDevInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->device));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->device, ndr_charset_length(r->device, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevInfo0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevInfo0 *r)
-{
- uint32_t _ptr_device;
- TALLOC_CTX *_mem_save_device_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_device));
- if (_ptr_device) {
- NDR_PULL_ALLOC(ndr, r->device);
- } else {
- r->device = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- _mem_save_device_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->device, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->device));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->device));
- if (ndr_get_array_length(ndr, &r->device) > ndr_get_array_size(ndr, &r->device)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->device), ndr_get_array_length(ndr, &r->device));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->device, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_device_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevInfo0 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevInfo0");
- ndr->depth++;
- ndr_print_ptr(ndr, "device", r->device);
- ndr->depth++;
- if (r->device) {
- ndr_print_string(ndr, "device", r->device);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevCtr0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevCtr0 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevCtr0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevCtr0 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevCtr0 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevCtr0");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetCharDevInfo0(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevInfo1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevInfo1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->device));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->status));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->device, ndr_charset_length(r->device, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevInfo1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevInfo1 *r)
-{
- uint32_t _ptr_device;
- TALLOC_CTX *_mem_save_device_0;
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_user_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_device));
- if (_ptr_device) {
- NDR_PULL_ALLOC(ndr, r->device);
- } else {
- r->device = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->status));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- _mem_save_device_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->device, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->device));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->device));
- if (ndr_get_array_length(ndr, &r->device) > ndr_get_array_size(ndr, &r->device)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->device), ndr_get_array_length(ndr, &r->device));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->device, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_device_0, 0);
- }
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
- if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevInfo1 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevInfo1");
- ndr->depth++;
- ndr_print_ptr(ndr, "device", r->device);
- ndr->depth++;
- if (r->device) {
- ndr_print_string(ndr, "device", r->device);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "status", r->status);
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_string(ndr, "user", r->user);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "time", r->time);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevCtr1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevCtr1 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevCtr1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevCtr1 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevCtr1 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevCtr1");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetCharDevInfo1(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevInfo(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetCharDevInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->info0) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
- }
- break;
-
- case 1:
- if (r->info1) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevInfo(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetCharDevInfo *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info0_0;
- TALLOC_CTX *_mem_save_info1_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_info0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info0));
- if (_ptr_info0) {
- NDR_PULL_ALLOC(ndr, r->info0);
- } else {
- r->info0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->info0) {
- _mem_save_info0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info0_0, 0);
- }
- break;
-
- case 1:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetCharDevInfo");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "info0", r->info0);
- ndr->depth++;
- if (r->info0) {
- ndr_print_srvsvc_NetCharDevInfo0(ndr, "info0", r->info0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_srvsvc_NetCharDevInfo1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevCtr(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetCharDevCtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->ctr0) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- }
- break;
-
- case 1:
- if (r->ctr1) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevCtr(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetCharDevCtr *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_ctr0_0;
- TALLOC_CTX *_mem_save_ctr1_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_ctr0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr0));
- if (_ptr_ctr0) {
- NDR_PULL_ALLOC(ndr, r->ctr0);
- } else {
- r->ctr0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_ctr1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
- if (_ptr_ctr1) {
- NDR_PULL_ALLOC(ndr, r->ctr1);
- } else {
- r->ctr1 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->ctr0) {
- _mem_save_ctr0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr0_0, 0);
- }
- break;
-
- case 1:
- if (r->ctr1) {
- _mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevCtr *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetCharDevCtr");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "ctr0", r->ctr0);
- ndr->depth++;
- if (r->ctr0) {
- ndr_print_srvsvc_NetCharDevCtr0(ndr, "ctr0", r->ctr0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "ctr1", r->ctr1);
- ndr->depth++;
- if (r->ctr1) {
- ndr_print_srvsvc_NetCharDevCtr1(ndr, "ctr1", r->ctr1);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevQInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->device));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->device, ndr_charset_length(r->device, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQInfo0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevQInfo0 *r)
-{
- uint32_t _ptr_device;
- TALLOC_CTX *_mem_save_device_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_device));
- if (_ptr_device) {
- NDR_PULL_ALLOC(ndr, r->device);
- } else {
- r->device = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- _mem_save_device_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->device, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->device));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->device));
- if (ndr_get_array_length(ndr, &r->device) > ndr_get_array_size(ndr, &r->device)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->device), ndr_get_array_length(ndr, &r->device));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->device, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_device_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfo0 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQInfo0");
- ndr->depth++;
- ndr_print_ptr(ndr, "device", r->device);
- ndr->depth++;
- if (r->device) {
- ndr_print_string(ndr, "device", r->device);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQCtr0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevQCtr0 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQCtr0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevQCtr0 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQCtr0 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQCtr0");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetCharDevQInfo0(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQInfo1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevQInfo1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->device));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->devices));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->users));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_ahead));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->device, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->device, ndr_charset_length(r->device, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->devices) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->devices, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->devices, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->devices, ndr_charset_length(r->devices, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQInfo1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevQInfo1 *r)
-{
- uint32_t _ptr_device;
- TALLOC_CTX *_mem_save_device_0;
- uint32_t _ptr_devices;
- TALLOC_CTX *_mem_save_devices_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_device));
- if (_ptr_device) {
- NDR_PULL_ALLOC(ndr, r->device);
- } else {
- r->device = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devices));
- if (_ptr_devices) {
- NDR_PULL_ALLOC(ndr, r->devices);
- } else {
- r->devices = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->users));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_ahead));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->device) {
- _mem_save_device_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->device, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->device));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->device));
- if (ndr_get_array_length(ndr, &r->device) > ndr_get_array_size(ndr, &r->device)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->device), ndr_get_array_length(ndr, &r->device));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->device, ndr_get_array_length(ndr, &r->device), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_device_0, 0);
- }
- if (r->devices) {
- _mem_save_devices_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->devices, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->devices));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->devices));
- if (ndr_get_array_length(ndr, &r->devices) > ndr_get_array_size(ndr, &r->devices)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->devices), ndr_get_array_length(ndr, &r->devices));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->devices), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->devices, ndr_get_array_length(ndr, &r->devices), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devices_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfo1 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQInfo1");
- ndr->depth++;
- ndr_print_ptr(ndr, "device", r->device);
- ndr->depth++;
- if (r->device) {
- ndr_print_string(ndr, "device", r->device);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "priority", r->priority);
- ndr_print_ptr(ndr, "devices", r->devices);
- ndr->depth++;
- if (r->devices) {
- ndr_print_string(ndr, "devices", r->devices);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "users", r->users);
- ndr_print_uint32(ndr, "num_ahead", r->num_ahead);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQCtr1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevQCtr1 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQCtr1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevQCtr1 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQCtr1 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQCtr1");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetCharDevQInfo1(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQInfo(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetCharDevQInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->info0) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
- }
- break;
-
- case 1:
- if (r->info1) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQInfo(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetCharDevQInfo *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info0_0;
- TALLOC_CTX *_mem_save_info1_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_info0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info0));
- if (_ptr_info0) {
- NDR_PULL_ALLOC(ndr, r->info0);
- } else {
- r->info0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->info0) {
- _mem_save_info0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info0_0, 0);
- }
- break;
-
- case 1:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevQInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetCharDevQInfo");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "info0", r->info0);
- ndr->depth++;
- if (r->info0) {
- ndr_print_srvsvc_NetCharDevQInfo0(ndr, "info0", r->info0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_srvsvc_NetCharDevQInfo1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQCtr(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetCharDevQCtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->ctr0) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- }
- break;
-
- case 1:
- if (r->ctr1) {
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQCtr(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetCharDevQCtr *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_ctr0_0;
- TALLOC_CTX *_mem_save_ctr1_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_ctr0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr0));
- if (_ptr_ctr0) {
- NDR_PULL_ALLOC(ndr, r->ctr0);
- } else {
- r->ctr0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_ctr1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
- if (_ptr_ctr1) {
- NDR_PULL_ALLOC(ndr, r->ctr1);
- } else {
- r->ctr1 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->ctr0) {
- _mem_save_ctr0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr0_0, 0);
- }
- break;
-
- case 1:
- if (r->ctr1) {
- _mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevQCtr *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetCharDevQCtr");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "ctr0", r->ctr0);
- ndr->depth++;
- if (r->ctr0) {
- ndr_print_srvsvc_NetCharDevQCtr0(ndr, "ctr0", r->ctr0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "ctr1", r->ctr1);
- ndr->depth++;
- if (r->ctr1) {
- ndr_print_srvsvc_NetCharDevQCtr1(ndr, "ctr1", r->ctr1);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetConnInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetConnInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->conn_id));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetConnInfo0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetConnInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->conn_id));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetConnInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnInfo0 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetConnInfo0");
- ndr->depth++;
- ndr_print_uint32(ndr, "conn_id", r->conn_id);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetConnCtr0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetConnCtr0 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetConnInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetConnCtr0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetConnCtr0 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetConnInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetConnCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnCtr0 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetConnCtr0");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetConnInfo0(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetConnInfo1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetConnInfo1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->conn_id));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->conn_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_open));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_users));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->conn_time));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->share));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->share) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->share, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->share, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->share, ndr_charset_length(r->share, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetConnInfo1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetConnInfo1 *r)
-{
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_user_0;
- uint32_t _ptr_share;
- TALLOC_CTX *_mem_save_share_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->conn_id));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->conn_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_open));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_users));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->conn_time));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_share));
- if (_ptr_share) {
- NDR_PULL_ALLOC(ndr, r->share);
- } else {
- r->share = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
- if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- if (r->share) {
- _mem_save_share_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->share, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->share));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->share));
- if (ndr_get_array_length(ndr, &r->share) > ndr_get_array_size(ndr, &r->share)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->share), ndr_get_array_length(ndr, &r->share));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->share), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->share, ndr_get_array_length(ndr, &r->share), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_share_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetConnInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnInfo1 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetConnInfo1");
- ndr->depth++;
- ndr_print_uint32(ndr, "conn_id", r->conn_id);
- ndr_print_uint32(ndr, "conn_type", r->conn_type);
- ndr_print_uint32(ndr, "num_open", r->num_open);
- ndr_print_uint32(ndr, "num_users", r->num_users);
- ndr_print_uint32(ndr, "conn_time", r->conn_time);
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_string(ndr, "user", r->user);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "share", r->share);
- ndr->depth++;
- if (r->share) {
- ndr_print_string(ndr, "share", r->share);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetConnCtr1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetConnCtr1 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetConnInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetConnInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetConnCtr1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetConnCtr1 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetConnInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetConnInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetConnCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnCtr1 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetConnCtr1");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetConnInfo1(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetConnCtr(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetConnCtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->ctr0) {
- NDR_CHECK(ndr_push_srvsvc_NetConnCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- }
- break;
-
- case 1:
- if (r->ctr1) {
- NDR_CHECK(ndr_push_srvsvc_NetConnCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetConnCtr(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetConnCtr *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_ctr0_0;
- TALLOC_CTX *_mem_save_ctr1_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_ctr0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr0));
- if (_ptr_ctr0) {
- NDR_PULL_ALLOC(ndr, r->ctr0);
- } else {
- r->ctr0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_ctr1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
- if (_ptr_ctr1) {
- NDR_PULL_ALLOC(ndr, r->ctr1);
- } else {
- r->ctr1 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->ctr0) {
- _mem_save_ctr0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetConnCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr0_0, 0);
- }
- break;
-
- case 1:
- if (r->ctr1) {
- _mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetConnCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetConnCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetConnCtr *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetConnCtr");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "ctr0", r->ctr0);
- ndr->depth++;
- if (r->ctr0) {
- ndr_print_srvsvc_NetConnCtr0(ndr, "ctr0", r->ctr0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "ctr1", r->ctr1);
- ndr->depth++;
- if (r->ctr1) {
- ndr_print_srvsvc_NetConnCtr1(ndr, "ctr1", r->ctr1);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileInfo2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetFileInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->fid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileInfo2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetFileInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->fid));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileInfo2 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetFileInfo2");
- ndr->depth++;
- ndr_print_uint32(ndr, "fid", r->fid);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileCtr2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetFileCtr2 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetFileInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileCtr2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetFileCtr2 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetFileInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileCtr2 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetFileCtr2");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetFileInfo2(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileInfo3(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetFileInfo3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->fid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->permissions));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_locks));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileInfo3(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetFileInfo3 *r)
-{
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_user_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->fid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->permissions));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_locks));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
- if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileInfo3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileInfo3 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetFileInfo3");
- ndr->depth++;
- ndr_print_uint32(ndr, "fid", r->fid);
- ndr_print_uint32(ndr, "permissions", r->permissions);
- ndr_print_uint32(ndr, "num_locks", r->num_locks);
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_string(ndr, "user", r->user);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileCtr3(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetFileCtr3 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetFileInfo3(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetFileInfo3(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileCtr3(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetFileCtr3 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetFileInfo3(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetFileInfo3(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileCtr3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileCtr3 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetFileCtr3");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetFileInfo3(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileInfo(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetFileInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 2:
- if (r->info2) {
- NDR_CHECK(ndr_push_srvsvc_NetFileInfo2(ndr, NDR_SCALARS, r->info2));
- }
- break;
-
- case 3:
- if (r->info3) {
- NDR_CHECK(ndr_push_srvsvc_NetFileInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileInfo(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetFileInfo *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info2_0;
- TALLOC_CTX *_mem_save_info3_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 2: {
- uint32_t _ptr_info2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
- if (_ptr_info2) {
- NDR_PULL_ALLOC(ndr, r->info2);
- } else {
- r->info2 = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_info3;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
- if (_ptr_info3) {
- NDR_PULL_ALLOC(ndr, r->info3);
- } else {
- r->info3 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 2:
- if (r->info2) {
- _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetFileInfo2(ndr, NDR_SCALARS, r->info2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
- }
- break;
-
- case 3:
- if (r->info3) {
- _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetFileInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetFileInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetFileInfo");
- switch (level) {
- case 2:
- ndr_print_ptr(ndr, "info2", r->info2);
- ndr->depth++;
- if (r->info2) {
- ndr_print_srvsvc_NetFileInfo2(ndr, "info2", r->info2);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "info3", r->info3);
- ndr->depth++;
- if (r->info3) {
- ndr_print_srvsvc_NetFileInfo3(ndr, "info3", r->info3);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileCtr(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetFileCtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr3));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 2:
- if (r->ctr2) {
- NDR_CHECK(ndr_push_srvsvc_NetFileCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- }
- break;
-
- case 3:
- if (r->ctr3) {
- NDR_CHECK(ndr_push_srvsvc_NetFileCtr3(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr3));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileCtr(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetFileCtr *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_ctr2_0;
- TALLOC_CTX *_mem_save_ctr3_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 2: {
- uint32_t _ptr_ctr2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr2));
- if (_ptr_ctr2) {
- NDR_PULL_ALLOC(ndr, r->ctr2);
- } else {
- r->ctr2 = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_ctr3;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr3));
- if (_ptr_ctr3) {
- NDR_PULL_ALLOC(ndr, r->ctr3);
- } else {
- r->ctr3 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 2:
- if (r->ctr2) {
- _mem_save_ctr2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr2, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetFileCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr2_0, 0);
- }
- break;
-
- case 3:
- if (r->ctr3) {
- _mem_save_ctr3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr3, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetFileCtr3(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr3_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetFileCtr *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetFileCtr");
- switch (level) {
- case 2:
- ndr_print_ptr(ndr, "ctr2", r->ctr2);
- ndr->depth++;
- if (r->ctr2) {
- ndr_print_srvsvc_NetFileCtr2(ndr, "ctr2", r->ctr2);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "ctr3", r->ctr3);
- ndr->depth++;
- if (r->ctr3) {
- ndr_print_srvsvc_NetFileCtr3(ndr, "ctr3", r->ctr3);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client, ndr_charset_length(r->client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessInfo0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessInfo0 *r)
-{
- uint32_t _ptr_client;
- TALLOC_CTX *_mem_save_client_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
- if (_ptr_client) {
- NDR_PULL_ALLOC(ndr, r->client);
- } else {
- r->client = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client));
- if (ndr_get_array_length(ndr, &r->client) > ndr_get_array_size(ndr, &r->client)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client), ndr_get_array_length(ndr, &r->client));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo0 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSessInfo0");
- ndr->depth++;
- ndr_print_ptr(ndr, "client", r->client);
- ndr->depth++;
- if (r->client) {
- ndr_print_string(ndr, "client", r->client);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessCtr0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessCtr0 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessCtr0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessCtr0 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr0 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetSessCtr0");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetSessInfo0(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessInfo1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessInfo1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_open));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->idle_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->user_flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client, ndr_charset_length(r->client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessInfo1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessInfo1 *r)
-{
- uint32_t _ptr_client;
- TALLOC_CTX *_mem_save_client_0;
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_user_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
- if (_ptr_client) {
- NDR_PULL_ALLOC(ndr, r->client);
- } else {
- r->client = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_open));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->idle_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->user_flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client));
- if (ndr_get_array_length(ndr, &r->client) > ndr_get_array_size(ndr, &r->client)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client), ndr_get_array_length(ndr, &r->client));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
- }
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
- if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo1 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSessInfo1");
- ndr->depth++;
- ndr_print_ptr(ndr, "client", r->client);
- ndr->depth++;
- if (r->client) {
- ndr_print_string(ndr, "client", r->client);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_string(ndr, "user", r->user);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "num_open", r->num_open);
- ndr_print_uint32(ndr, "time", r->time);
- ndr_print_uint32(ndr, "idle_time", r->idle_time);
- ndr_print_uint32(ndr, "user_flags", r->user_flags);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessCtr1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessCtr1 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessCtr1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessCtr1 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr1 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetSessCtr1");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetSessInfo1(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessInfo2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_open));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->idle_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->user_flags));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_type));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client, ndr_charset_length(r->client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->client_type) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_type, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_type, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_type, ndr_charset_length(r->client_type, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessInfo2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessInfo2 *r)
-{
- uint32_t _ptr_client;
- TALLOC_CTX *_mem_save_client_0;
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_user_0;
- uint32_t _ptr_client_type;
- TALLOC_CTX *_mem_save_client_type_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
- if (_ptr_client) {
- NDR_PULL_ALLOC(ndr, r->client);
- } else {
- r->client = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_open));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->idle_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->user_flags));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_type));
- if (_ptr_client_type) {
- NDR_PULL_ALLOC(ndr, r->client_type);
- } else {
- r->client_type = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client));
- if (ndr_get_array_length(ndr, &r->client) > ndr_get_array_size(ndr, &r->client)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client), ndr_get_array_length(ndr, &r->client));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
- }
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
- if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- if (r->client_type) {
- _mem_save_client_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client_type, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client_type));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client_type));
- if (ndr_get_array_length(ndr, &r->client_type) > ndr_get_array_size(ndr, &r->client_type)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_type), ndr_get_array_length(ndr, &r->client_type));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_type), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_type, ndr_get_array_length(ndr, &r->client_type), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_type_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo2 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSessInfo2");
- ndr->depth++;
- ndr_print_ptr(ndr, "client", r->client);
- ndr->depth++;
- if (r->client) {
- ndr_print_string(ndr, "client", r->client);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_string(ndr, "user", r->user);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "num_open", r->num_open);
- ndr_print_uint32(ndr, "time", r->time);
- ndr_print_uint32(ndr, "idle_time", r->idle_time);
- ndr_print_uint32(ndr, "user_flags", r->user_flags);
- ndr_print_ptr(ndr, "client_type", r->client_type);
- ndr->depth++;
- if (r->client_type) {
- ndr_print_string(ndr, "client_type", r->client_type);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessCtr2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessCtr2 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessCtr2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessCtr2 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr2 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetSessCtr2");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetSessInfo2(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessInfo10(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessInfo10 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->idle_time));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client, ndr_charset_length(r->client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessInfo10(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessInfo10 *r)
-{
- uint32_t _ptr_client;
- TALLOC_CTX *_mem_save_client_0;
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_user_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
- if (_ptr_client) {
- NDR_PULL_ALLOC(ndr, r->client);
- } else {
- r->client = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->idle_time));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client));
- if (ndr_get_array_length(ndr, &r->client) > ndr_get_array_size(ndr, &r->client)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client), ndr_get_array_length(ndr, &r->client));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
- }
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
- if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo10(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo10 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSessInfo10");
- ndr->depth++;
- ndr_print_ptr(ndr, "client", r->client);
- ndr->depth++;
- if (r->client) {
- ndr_print_string(ndr, "client", r->client);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_string(ndr, "user", r->user);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "time", r->time);
- ndr_print_uint32(ndr, "idle_time", r->idle_time);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessCtr10(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessCtr10 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo10(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo10(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessCtr10(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessCtr10 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo10(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo10(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr10(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr10 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetSessCtr10");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetSessInfo10(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessInfo502(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessInfo502 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_open));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->idle_time));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->user_flags));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->transport));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client, ndr_charset_length(r->client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->client_type) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_type, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_type, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_type, ndr_charset_length(r->client_type, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->transport) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->transport, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->transport, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->transport, ndr_charset_length(r->transport, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessInfo502(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessInfo502 *r)
-{
- uint32_t _ptr_client;
- TALLOC_CTX *_mem_save_client_0;
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_user_0;
- uint32_t _ptr_client_type;
- TALLOC_CTX *_mem_save_client_type_0;
- uint32_t _ptr_transport;
- TALLOC_CTX *_mem_save_transport_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
- if (_ptr_client) {
- NDR_PULL_ALLOC(ndr, r->client);
- } else {
- r->client = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->user);
- } else {
- r->user = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_open));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->idle_time));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->user_flags));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_type));
- if (_ptr_client_type) {
- NDR_PULL_ALLOC(ndr, r->client_type);
- } else {
- r->client_type = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_transport));
- if (_ptr_transport) {
- NDR_PULL_ALLOC(ndr, r->transport);
- } else {
- r->transport = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->client) {
- _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client));
- if (ndr_get_array_length(ndr, &r->client) > ndr_get_array_size(ndr, &r->client)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client), ndr_get_array_length(ndr, &r->client));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
- }
- if (r->user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
- if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- if (r->client_type) {
- _mem_save_client_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->client_type, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->client_type));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->client_type));
- if (ndr_get_array_length(ndr, &r->client_type) > ndr_get_array_size(ndr, &r->client_type)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_type), ndr_get_array_length(ndr, &r->client_type));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_type), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_type, ndr_get_array_length(ndr, &r->client_type), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_type_0, 0);
- }
- if (r->transport) {
- _mem_save_transport_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->transport, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->transport));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->transport));
- if (ndr_get_array_length(ndr, &r->transport) > ndr_get_array_size(ndr, &r->transport)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->transport), ndr_get_array_length(ndr, &r->transport));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->transport), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->transport, ndr_get_array_length(ndr, &r->transport), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transport_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo502 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSessInfo502");
- ndr->depth++;
- ndr_print_ptr(ndr, "client", r->client);
- ndr->depth++;
- if (r->client) {
- ndr_print_string(ndr, "client", r->client);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->user);
- ndr->depth++;
- if (r->user) {
- ndr_print_string(ndr, "user", r->user);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "num_open", r->num_open);
- ndr_print_uint32(ndr, "time", r->time);
- ndr_print_uint32(ndr, "idle_time", r->idle_time);
- ndr_print_uint32(ndr, "user_flags", r->user_flags);
- ndr_print_ptr(ndr, "client_type", r->client_type);
- ndr->depth++;
- if (r->client_type) {
- ndr_print_string(ndr, "client_type", r->client_type);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "transport", r->transport);
- ndr->depth++;
- if (r->transport) {
- ndr_print_string(ndr, "transport", r->transport);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessCtr502(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessCtr502 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo502(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetSessInfo502(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessCtr502(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessCtr502 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo502(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetSessInfo502(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr502 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetSessCtr502");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetSessInfo502(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessCtr(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetSessCtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr2));
- break;
-
- case 10:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr10));
- break;
-
- case 502:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr502));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->ctr0) {
- NDR_CHECK(ndr_push_srvsvc_NetSessCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- }
- break;
-
- case 1:
- if (r->ctr1) {
- NDR_CHECK(ndr_push_srvsvc_NetSessCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- }
- break;
-
- case 2:
- if (r->ctr2) {
- NDR_CHECK(ndr_push_srvsvc_NetSessCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- }
- break;
-
- case 10:
- if (r->ctr10) {
- NDR_CHECK(ndr_push_srvsvc_NetSessCtr10(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr10));
- }
- break;
-
- case 502:
- if (r->ctr502) {
- NDR_CHECK(ndr_push_srvsvc_NetSessCtr502(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr502));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessCtr(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetSessCtr *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_ctr0_0;
- TALLOC_CTX *_mem_save_ctr1_0;
- TALLOC_CTX *_mem_save_ctr2_0;
- TALLOC_CTX *_mem_save_ctr10_0;
- TALLOC_CTX *_mem_save_ctr502_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_ctr0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr0));
- if (_ptr_ctr0) {
- NDR_PULL_ALLOC(ndr, r->ctr0);
- } else {
- r->ctr0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_ctr1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
- if (_ptr_ctr1) {
- NDR_PULL_ALLOC(ndr, r->ctr1);
- } else {
- r->ctr1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_ctr2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr2));
- if (_ptr_ctr2) {
- NDR_PULL_ALLOC(ndr, r->ctr2);
- } else {
- r->ctr2 = NULL;
- }
- break; }
-
- case 10: {
- uint32_t _ptr_ctr10;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr10));
- if (_ptr_ctr10) {
- NDR_PULL_ALLOC(ndr, r->ctr10);
- } else {
- r->ctr10 = NULL;
- }
- break; }
-
- case 502: {
- uint32_t _ptr_ctr502;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr502));
- if (_ptr_ctr502) {
- NDR_PULL_ALLOC(ndr, r->ctr502);
- } else {
- r->ctr502 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->ctr0) {
- _mem_save_ctr0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSessCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr0_0, 0);
- }
- break;
-
- case 1:
- if (r->ctr1) {
- _mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSessCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
- }
- break;
-
- case 2:
- if (r->ctr2) {
- _mem_save_ctr2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr2, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSessCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr2_0, 0);
- }
- break;
-
- case 10:
- if (r->ctr10) {
- _mem_save_ctr10_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr10, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSessCtr10(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr10));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr10_0, 0);
- }
- break;
-
- case 502:
- if (r->ctr502) {
- _mem_save_ctr502_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr502, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSessCtr502(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr502));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr502_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetSessCtr *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetSessCtr");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "ctr0", r->ctr0);
- ndr->depth++;
- if (r->ctr0) {
- ndr_print_srvsvc_NetSessCtr0(ndr, "ctr0", r->ctr0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "ctr1", r->ctr1);
- ndr->depth++;
- if (r->ctr1) {
- ndr_print_srvsvc_NetSessCtr1(ndr, "ctr1", r->ctr1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "ctr2", r->ctr2);
- ndr->depth++;
- if (r->ctr2) {
- ndr_print_srvsvc_NetSessCtr2(ndr, "ctr2", r->ctr2);
- }
- ndr->depth--;
- break;
-
- case 10:
- ndr_print_ptr(ndr, "ctr10", r->ctr10);
- ndr->depth++;
- if (r->ctr10) {
- ndr_print_srvsvc_NetSessCtr10(ndr, "ctr10", r->ctr10);
- }
- ndr->depth--;
- break;
-
- case 502:
- ndr_print_ptr(ndr, "ctr502", r->ctr502);
- ndr->depth++;
- if (r->ctr502) {
- ndr_print_srvsvc_NetSessCtr502(ndr, "ctr502", r->ctr502);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_ShareType(struct ndr_push *ndr, int ndr_flags, enum srvsvc_ShareType r)
-{
- {
- uint32_t _flags_save_ENUM = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- ndr->flags = _flags_save_ENUM;
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_ShareType(struct ndr_pull *ndr, int ndr_flags, enum srvsvc_ShareType *r)
-{
- uint32_t v;
- {
- uint32_t _flags_save_ENUM = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- ndr->flags = _flags_save_ENUM;
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_ShareType(struct ndr_print *ndr, const char *name, enum srvsvc_ShareType r)
-{
- const char *val = NULL;
-
- {
- uint32_t _flags_save_ENUM = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
- switch (r) {
- case STYPE_DISKTREE: val = "STYPE_DISKTREE"; break;
- case STYPE_DISKTREE_TEMPORARY: val = "STYPE_DISKTREE_TEMPORARY"; break;
- case STYPE_DISKTREE_HIDDEN: val = "STYPE_DISKTREE_HIDDEN"; break;
- case STYPE_PRINTQ: val = "STYPE_PRINTQ"; break;
- case STYPE_PRINTQ_TEMPORARY: val = "STYPE_PRINTQ_TEMPORARY"; break;
- case STYPE_PRINTQ_HIDDEN: val = "STYPE_PRINTQ_HIDDEN"; break;
- case STYPE_DEVICE: val = "STYPE_DEVICE"; break;
- case STYPE_DEVICE_TEMPORARY: val = "STYPE_DEVICE_TEMPORARY"; break;
- case STYPE_DEVICE_HIDDEN: val = "STYPE_DEVICE_HIDDEN"; break;
- case STYPE_IPC: val = "STYPE_IPC"; break;
- case STYPE_IPC_TEMPORARY: val = "STYPE_IPC_TEMPORARY"; break;
- case STYPE_IPC_HIDDEN: val = "STYPE_IPC_HIDDEN"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
- ndr->flags = _flags_save_ENUM;
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo0 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo0 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo0");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr0 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr0 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr0 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr0");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo0(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_srvsvc_ShareType(ndr, NDR_SCALARS, r->type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo1 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_srvsvc_ShareType(ndr, NDR_SCALARS, &r->type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo1");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_srvsvc_ShareType(ndr, "type", r->type);
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr1 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr1 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr1");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo1(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_srvsvc_ShareType(ndr, NDR_SCALARS, r->type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->permissions));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_users));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->current_users));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->password) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->password, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->password, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->password, ndr_charset_length(r->password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo2 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- uint32_t _ptr_password;
- TALLOC_CTX *_mem_save_password_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_srvsvc_ShareType(ndr, NDR_SCALARS, &r->type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->permissions));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_users));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->current_users));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->password);
- } else {
- r->password = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (r->password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->password));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->password));
- if (ndr_get_array_length(ndr, &r->password) > ndr_get_array_size(ndr, &r->password)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->password), ndr_get_array_length(ndr, &r->password));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->password), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->password, ndr_get_array_length(ndr, &r->password), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo2 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo2");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_srvsvc_ShareType(ndr, "type", r->type);
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "permissions", r->permissions);
- ndr_print_uint32(ndr, "max_users", r->max_users);
- ndr_print_uint32(ndr, "current_users", r->current_users);
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "password", r->password);
- ndr->depth++;
- if (r->password) {
- ndr_print_string(ndr, "password", r->password);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr2 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr2 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr2 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr2");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo2(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo501(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo501 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_srvsvc_ShareType(ndr, NDR_SCALARS, r->type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->csc_policy));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo501(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo501 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_srvsvc_ShareType(ndr, NDR_SCALARS, &r->type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->csc_policy));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo501 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo501");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_srvsvc_ShareType(ndr, "type", r->type);
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "csc_policy", r->csc_policy);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr501(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr501 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo501(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo501(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr501(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr501 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo501(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo501(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr501 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr501");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo501(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo502(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo502 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_srvsvc_ShareType(ndr, NDR_SCALARS, r->type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->permissions));
- NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->max_users));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->current_users));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->path, ndr_charset_length(r->path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->password) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->password, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->password, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->password, ndr_charset_length(r->password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->sd) {
- {
- struct ndr_push *_ndr_sd;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_sd, 4, -1));
- NDR_CHECK(ndr_push_security_descriptor(_ndr_sd, NDR_SCALARS|NDR_BUFFERS, r->sd));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_sd, 4, -1));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo502(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo502 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- uint32_t _ptr_path;
- TALLOC_CTX *_mem_save_path_0;
- uint32_t _ptr_password;
- TALLOC_CTX *_mem_save_password_0;
- uint32_t _ptr_sd;
- TALLOC_CTX *_mem_save_sd_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_srvsvc_ShareType(ndr, NDR_SCALARS, &r->type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->permissions));
- NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->max_users));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->current_users));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->path);
- } else {
- r->path = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->password);
- } else {
- r->password = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
- if (_ptr_sd) {
- NDR_PULL_ALLOC(ndr, r->sd);
- } else {
- r->sd = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- if (r->path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->path));
- if (ndr_get_array_length(ndr, &r->path) > ndr_get_array_size(ndr, &r->path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->path), ndr_get_array_length(ndr, &r->path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->path, ndr_get_array_length(ndr, &r->path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (r->password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->password));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->password));
- if (ndr_get_array_length(ndr, &r->password) > ndr_get_array_size(ndr, &r->password)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->password), ndr_get_array_length(ndr, &r->password));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->password), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->password, ndr_get_array_length(ndr, &r->password), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- if (r->sd) {
- _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
- {
- struct ndr_pull *_ndr_sd;
- NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_sd, 4, -1));
- NDR_CHECK(ndr_pull_security_descriptor(_ndr_sd, NDR_SCALARS|NDR_BUFFERS, r->sd));
- NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_sd, 4, -1));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo502 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo502");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_srvsvc_ShareType(ndr, "type", r->type);
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "permissions", r->permissions);
- ndr_print_int32(ndr, "max_users", r->max_users);
- ndr_print_uint32(ndr, "current_users", r->current_users);
- ndr_print_ptr(ndr, "path", r->path);
- ndr->depth++;
- if (r->path) {
- ndr_print_string(ndr, "path", r->path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "password", r->password);
- ndr->depth++;
- if (r->password) {
- ndr_print_string(ndr, "password", r->password);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr_print_ptr(ndr, "sd", r->sd);
- ndr->depth++;
- if (r->sd) {
- ndr_print_security_descriptor(ndr, "sd", r->sd);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr502(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr502 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo502(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo502(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr502(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr502 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo502(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo502(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr502 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr502");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo502(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo1004(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo1004 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo1004(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo1004 *r)
-{
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1004(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1004 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo1004");
- ndr->depth++;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr1004(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr1004 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1004(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1004(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr1004(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr1004 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1004(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1004(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1004(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1004 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr1004");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo1004(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_NetShareInfo1005Flags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_NetShareInfo1005Flags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_NetShareInfo1005Flags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHARE_1005_IN_DFS", SHARE_1005_IN_DFS, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHARE_1005_DFS_ROOT", SHARE_1005_DFS_ROOT, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo1005(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo1005 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_NetShareInfo1005Flags(ndr, NDR_SCALARS, r->dfs_flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo1005(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo1005 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_NetShareInfo1005Flags(ndr, NDR_SCALARS, &r->dfs_flags));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1005(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1005 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo1005");
- ndr->depth++;
- ndr_print_NetShareInfo1005Flags(ndr, "dfs_flags", r->dfs_flags);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr1005(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr1005 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1005(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr1005(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr1005 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1005(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1005(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1005 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr1005");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo1005(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo1006(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo1006 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->max_users));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo1006(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo1006 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->max_users));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1006(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1006 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo1006");
- ndr->depth++;
- ndr_print_int32(ndr, "max_users", r->max_users);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr1006(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr1006 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1006(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr1006(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr1006 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1006(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1006(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1006 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr1006");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo1006(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo1007(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareInfo1007 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->alternate_directory_name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->alternate_directory_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->alternate_directory_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->alternate_directory_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->alternate_directory_name, ndr_charset_length(r->alternate_directory_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo1007(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareInfo1007 *r)
-{
- uint32_t _ptr_alternate_directory_name;
- TALLOC_CTX *_mem_save_alternate_directory_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alternate_directory_name));
- if (_ptr_alternate_directory_name) {
- NDR_PULL_ALLOC(ndr, r->alternate_directory_name);
- } else {
- r->alternate_directory_name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->alternate_directory_name) {
- _mem_save_alternate_directory_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->alternate_directory_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->alternate_directory_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->alternate_directory_name));
- if (ndr_get_array_length(ndr, &r->alternate_directory_name) > ndr_get_array_size(ndr, &r->alternate_directory_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->alternate_directory_name), ndr_get_array_length(ndr, &r->alternate_directory_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->alternate_directory_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->alternate_directory_name, ndr_get_array_length(ndr, &r->alternate_directory_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alternate_directory_name_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1007(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1007 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareInfo1007");
- ndr->depth++;
- ndr_print_uint32(ndr, "flags", r->flags);
- ndr_print_ptr(ndr, "alternate_directory_name", r->alternate_directory_name);
- ndr->depth++;
- if (r->alternate_directory_name) {
- ndr_print_string(ndr, "alternate_directory_name", r->alternate_directory_name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr1007(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr1007 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1007(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1007(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr1007(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr1007 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1007(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1007(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1007(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1007 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr1007");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetShareInfo1007(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr1501(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetShareCtr1501 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr1501(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetShareCtr1501 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1501 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetShareCtr1501");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_sec_desc_buf(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareInfo(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetShareInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
- break;
-
- case 501:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info501));
- break;
-
- case 502:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info502));
- break;
-
- case 1004:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1004));
- break;
-
- case 1005:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1005));
- break;
-
- case 1006:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1006));
- break;
-
- case 1007:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1007));
- break;
-
- case 1501:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1501));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->info0) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
- }
- break;
-
- case 1:
- if (r->info1) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- }
- break;
-
- case 2:
- if (r->info2) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
- }
- break;
-
- case 501:
- if (r->info501) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo501(ndr, NDR_SCALARS|NDR_BUFFERS, r->info501));
- }
- break;
-
- case 502:
- if (r->info502) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo502(ndr, NDR_SCALARS|NDR_BUFFERS, r->info502));
- }
- break;
-
- case 1004:
- if (r->info1004) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1004(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1004));
- }
- break;
-
- case 1005:
- if (r->info1005) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1005(ndr, NDR_SCALARS, r->info1005));
- }
- break;
-
- case 1006:
- if (r->info1006) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1006(ndr, NDR_SCALARS, r->info1006));
- }
- break;
-
- case 1007:
- if (r->info1007) {
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo1007(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1007));
- }
- break;
-
- case 1501:
- if (r->info1501) {
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1501));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareInfo(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetShareInfo *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info0_0;
- TALLOC_CTX *_mem_save_info1_0;
- TALLOC_CTX *_mem_save_info2_0;
- TALLOC_CTX *_mem_save_info501_0;
- TALLOC_CTX *_mem_save_info502_0;
- TALLOC_CTX *_mem_save_info1004_0;
- TALLOC_CTX *_mem_save_info1005_0;
- TALLOC_CTX *_mem_save_info1006_0;
- TALLOC_CTX *_mem_save_info1007_0;
- TALLOC_CTX *_mem_save_info1501_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_info0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info0));
- if (_ptr_info0) {
- NDR_PULL_ALLOC(ndr, r->info0);
- } else {
- r->info0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_info1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
- if (_ptr_info1) {
- NDR_PULL_ALLOC(ndr, r->info1);
- } else {
- r->info1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_info2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
- if (_ptr_info2) {
- NDR_PULL_ALLOC(ndr, r->info2);
- } else {
- r->info2 = NULL;
- }
- break; }
-
- case 501: {
- uint32_t _ptr_info501;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info501));
- if (_ptr_info501) {
- NDR_PULL_ALLOC(ndr, r->info501);
- } else {
- r->info501 = NULL;
- }
- break; }
-
- case 502: {
- uint32_t _ptr_info502;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info502));
- if (_ptr_info502) {
- NDR_PULL_ALLOC(ndr, r->info502);
- } else {
- r->info502 = NULL;
- }
- break; }
-
- case 1004: {
- uint32_t _ptr_info1004;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1004));
- if (_ptr_info1004) {
- NDR_PULL_ALLOC(ndr, r->info1004);
- } else {
- r->info1004 = NULL;
- }
- break; }
-
- case 1005: {
- uint32_t _ptr_info1005;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1005));
- if (_ptr_info1005) {
- NDR_PULL_ALLOC(ndr, r->info1005);
- } else {
- r->info1005 = NULL;
- }
- break; }
-
- case 1006: {
- uint32_t _ptr_info1006;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1006));
- if (_ptr_info1006) {
- NDR_PULL_ALLOC(ndr, r->info1006);
- } else {
- r->info1006 = NULL;
- }
- break; }
-
- case 1007: {
- uint32_t _ptr_info1007;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1007));
- if (_ptr_info1007) {
- NDR_PULL_ALLOC(ndr, r->info1007);
- } else {
- r->info1007 = NULL;
- }
- break; }
-
- case 1501: {
- uint32_t _ptr_info1501;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1501));
- if (_ptr_info1501) {
- NDR_PULL_ALLOC(ndr, r->info1501);
- } else {
- r->info1501 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->info0) {
- _mem_save_info0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info0_0, 0);
- }
- break;
-
- case 1:
- if (r->info1) {
- _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
- }
- break;
-
- case 2:
- if (r->info2) {
- _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
- }
- break;
-
- case 501:
- if (r->info501) {
- _mem_save_info501_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info501, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo501(ndr, NDR_SCALARS|NDR_BUFFERS, r->info501));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info501_0, 0);
- }
- break;
-
- case 502:
- if (r->info502) {
- _mem_save_info502_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info502, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo502(ndr, NDR_SCALARS|NDR_BUFFERS, r->info502));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info502_0, 0);
- }
- break;
-
- case 1004:
- if (r->info1004) {
- _mem_save_info1004_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1004, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1004(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1004));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1004_0, 0);
- }
- break;
-
- case 1005:
- if (r->info1005) {
- _mem_save_info1005_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1005, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1005(ndr, NDR_SCALARS, r->info1005));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1005_0, 0);
- }
- break;
-
- case 1006:
- if (r->info1006) {
- _mem_save_info1006_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1006, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1006(ndr, NDR_SCALARS, r->info1006));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1006_0, 0);
- }
- break;
-
- case 1007:
- if (r->info1007) {
- _mem_save_info1007_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1007, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo1007(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1007));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1007_0, 0);
- }
- break;
-
- case 1501:
- if (r->info1501) {
- _mem_save_info1501_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1501, 0);
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1501));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1501_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetShareInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetShareInfo");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "info0", r->info0);
- ndr->depth++;
- if (r->info0) {
- ndr_print_srvsvc_NetShareInfo0(ndr, "info0", r->info0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "info1", r->info1);
- ndr->depth++;
- if (r->info1) {
- ndr_print_srvsvc_NetShareInfo1(ndr, "info1", r->info1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "info2", r->info2);
- ndr->depth++;
- if (r->info2) {
- ndr_print_srvsvc_NetShareInfo2(ndr, "info2", r->info2);
- }
- ndr->depth--;
- break;
-
- case 501:
- ndr_print_ptr(ndr, "info501", r->info501);
- ndr->depth++;
- if (r->info501) {
- ndr_print_srvsvc_NetShareInfo501(ndr, "info501", r->info501);
- }
- ndr->depth--;
- break;
-
- case 502:
- ndr_print_ptr(ndr, "info502", r->info502);
- ndr->depth++;
- if (r->info502) {
- ndr_print_srvsvc_NetShareInfo502(ndr, "info502", r->info502);
- }
- ndr->depth--;
- break;
-
- case 1004:
- ndr_print_ptr(ndr, "info1004", r->info1004);
- ndr->depth++;
- if (r->info1004) {
- ndr_print_srvsvc_NetShareInfo1004(ndr, "info1004", r->info1004);
- }
- ndr->depth--;
- break;
-
- case 1005:
- ndr_print_ptr(ndr, "info1005", r->info1005);
- ndr->depth++;
- if (r->info1005) {
- ndr_print_srvsvc_NetShareInfo1005(ndr, "info1005", r->info1005);
- }
- ndr->depth--;
- break;
-
- case 1006:
- ndr_print_ptr(ndr, "info1006", r->info1006);
- ndr->depth++;
- if (r->info1006) {
- ndr_print_srvsvc_NetShareInfo1006(ndr, "info1006", r->info1006);
- }
- ndr->depth--;
- break;
-
- case 1007:
- ndr_print_ptr(ndr, "info1007", r->info1007);
- ndr->depth++;
- if (r->info1007) {
- ndr_print_srvsvc_NetShareInfo1007(ndr, "info1007", r->info1007);
- }
- ndr->depth--;
- break;
-
- case 1501:
- ndr_print_ptr(ndr, "info1501", r->info1501);
- ndr->depth++;
- if (r->info1501) {
- ndr_print_sec_desc_buf(ndr, "info1501", r->info1501);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCtr(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetShareCtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr2));
- break;
-
- case 501:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr501));
- break;
-
- case 502:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr502));
- break;
-
- case 1004:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1004));
- break;
-
- case 1005:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1005));
- break;
-
- case 1006:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1006));
- break;
-
- case 1007:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1007));
- break;
-
- case 1501:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1501));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->ctr0) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- }
- break;
-
- case 1:
- if (r->ctr1) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- }
- break;
-
- case 2:
- if (r->ctr2) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- }
- break;
-
- case 501:
- if (r->ctr501) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr501(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr501));
- }
- break;
-
- case 502:
- if (r->ctr502) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr502(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr502));
- }
- break;
-
- case 1004:
- if (r->ctr1004) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr1004(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1004));
- }
- break;
-
- case 1005:
- if (r->ctr1005) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr1005(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1005));
- }
- break;
-
- case 1006:
- if (r->ctr1006) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr1006(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1006));
- }
- break;
-
- case 1007:
- if (r->ctr1007) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr1007(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1007));
- }
- break;
-
- case 1501:
- if (r->ctr1501) {
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr1501(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1501));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCtr(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetShareCtr *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_ctr0_0;
- TALLOC_CTX *_mem_save_ctr1_0;
- TALLOC_CTX *_mem_save_ctr2_0;
- TALLOC_CTX *_mem_save_ctr501_0;
- TALLOC_CTX *_mem_save_ctr502_0;
- TALLOC_CTX *_mem_save_ctr1004_0;
- TALLOC_CTX *_mem_save_ctr1005_0;
- TALLOC_CTX *_mem_save_ctr1006_0;
- TALLOC_CTX *_mem_save_ctr1007_0;
- TALLOC_CTX *_mem_save_ctr1501_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_ctr0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr0));
- if (_ptr_ctr0) {
- NDR_PULL_ALLOC(ndr, r->ctr0);
- } else {
- r->ctr0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_ctr1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
- if (_ptr_ctr1) {
- NDR_PULL_ALLOC(ndr, r->ctr1);
- } else {
- r->ctr1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_ctr2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr2));
- if (_ptr_ctr2) {
- NDR_PULL_ALLOC(ndr, r->ctr2);
- } else {
- r->ctr2 = NULL;
- }
- break; }
-
- case 501: {
- uint32_t _ptr_ctr501;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr501));
- if (_ptr_ctr501) {
- NDR_PULL_ALLOC(ndr, r->ctr501);
- } else {
- r->ctr501 = NULL;
- }
- break; }
-
- case 502: {
- uint32_t _ptr_ctr502;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr502));
- if (_ptr_ctr502) {
- NDR_PULL_ALLOC(ndr, r->ctr502);
- } else {
- r->ctr502 = NULL;
- }
- break; }
-
- case 1004: {
- uint32_t _ptr_ctr1004;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1004));
- if (_ptr_ctr1004) {
- NDR_PULL_ALLOC(ndr, r->ctr1004);
- } else {
- r->ctr1004 = NULL;
- }
- break; }
-
- case 1005: {
- uint32_t _ptr_ctr1005;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1005));
- if (_ptr_ctr1005) {
- NDR_PULL_ALLOC(ndr, r->ctr1005);
- } else {
- r->ctr1005 = NULL;
- }
- break; }
-
- case 1006: {
- uint32_t _ptr_ctr1006;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1006));
- if (_ptr_ctr1006) {
- NDR_PULL_ALLOC(ndr, r->ctr1006);
- } else {
- r->ctr1006 = NULL;
- }
- break; }
-
- case 1007: {
- uint32_t _ptr_ctr1007;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1007));
- if (_ptr_ctr1007) {
- NDR_PULL_ALLOC(ndr, r->ctr1007);
- } else {
- r->ctr1007 = NULL;
- }
- break; }
-
- case 1501: {
- uint32_t _ptr_ctr1501;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1501));
- if (_ptr_ctr1501) {
- NDR_PULL_ALLOC(ndr, r->ctr1501);
- } else {
- r->ctr1501 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->ctr0) {
- _mem_save_ctr0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr0_0, 0);
- }
- break;
-
- case 1:
- if (r->ctr1) {
- _mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
- }
- break;
-
- case 2:
- if (r->ctr2) {
- _mem_save_ctr2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr2, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr2_0, 0);
- }
- break;
-
- case 501:
- if (r->ctr501) {
- _mem_save_ctr501_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr501, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr501(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr501));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr501_0, 0);
- }
- break;
-
- case 502:
- if (r->ctr502) {
- _mem_save_ctr502_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr502, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr502(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr502));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr502_0, 0);
- }
- break;
-
- case 1004:
- if (r->ctr1004) {
- _mem_save_ctr1004_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1004, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr1004(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1004));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1004_0, 0);
- }
- break;
-
- case 1005:
- if (r->ctr1005) {
- _mem_save_ctr1005_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1005, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr1005(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1005));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1005_0, 0);
- }
- break;
-
- case 1006:
- if (r->ctr1006) {
- _mem_save_ctr1006_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1006, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr1006(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1006));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1006_0, 0);
- }
- break;
-
- case 1007:
- if (r->ctr1007) {
- _mem_save_ctr1007_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1007, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr1007(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1007));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1007_0, 0);
- }
- break;
-
- case 1501:
- if (r->ctr1501) {
- _mem_save_ctr1501_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1501, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr1501(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1501));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1501_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetShareCtr *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetShareCtr");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "ctr0", r->ctr0);
- ndr->depth++;
- if (r->ctr0) {
- ndr_print_srvsvc_NetShareCtr0(ndr, "ctr0", r->ctr0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "ctr1", r->ctr1);
- ndr->depth++;
- if (r->ctr1) {
- ndr_print_srvsvc_NetShareCtr1(ndr, "ctr1", r->ctr1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "ctr2", r->ctr2);
- ndr->depth++;
- if (r->ctr2) {
- ndr_print_srvsvc_NetShareCtr2(ndr, "ctr2", r->ctr2);
- }
- ndr->depth--;
- break;
-
- case 501:
- ndr_print_ptr(ndr, "ctr501", r->ctr501);
- ndr->depth++;
- if (r->ctr501) {
- ndr_print_srvsvc_NetShareCtr501(ndr, "ctr501", r->ctr501);
- }
- ndr->depth--;
- break;
-
- case 502:
- ndr_print_ptr(ndr, "ctr502", r->ctr502);
- ndr->depth++;
- if (r->ctr502) {
- ndr_print_srvsvc_NetShareCtr502(ndr, "ctr502", r->ctr502);
- }
- ndr->depth--;
- break;
-
- case 1004:
- ndr_print_ptr(ndr, "ctr1004", r->ctr1004);
- ndr->depth++;
- if (r->ctr1004) {
- ndr_print_srvsvc_NetShareCtr1004(ndr, "ctr1004", r->ctr1004);
- }
- ndr->depth--;
- break;
-
- case 1005:
- ndr_print_ptr(ndr, "ctr1005", r->ctr1005);
- ndr->depth++;
- if (r->ctr1005) {
- ndr_print_srvsvc_NetShareCtr1005(ndr, "ctr1005", r->ctr1005);
- }
- ndr->depth--;
- break;
-
- case 1006:
- ndr_print_ptr(ndr, "ctr1006", r->ctr1006);
- ndr->depth++;
- if (r->ctr1006) {
- ndr_print_srvsvc_NetShareCtr1006(ndr, "ctr1006", r->ctr1006);
- }
- ndr->depth--;
- break;
-
- case 1007:
- ndr_print_ptr(ndr, "ctr1007", r->ctr1007);
- ndr->depth++;
- if (r->ctr1007) {
- ndr_print_srvsvc_NetShareCtr1007(ndr, "ctr1007", r->ctr1007);
- }
- ndr->depth--;
- break;
-
- case 1501:
- ndr_print_ptr(ndr, "ctr1501", r->ctr1501);
- ndr->depth++;
- if (r->ctr1501) {
- ndr_print_srvsvc_NetShareCtr1501(ndr, "ctr1501", r->ctr1501);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-_PUBLIC_ NTSTATUS ndr_push_srvsvc_PlatformId(struct ndr_push *ndr, int ndr_flags, enum srvsvc_PlatformId r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_srvsvc_PlatformId(struct ndr_pull *ndr, int ndr_flags, enum srvsvc_PlatformId *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_PlatformId(struct ndr_print *ndr, const char *name, enum srvsvc_PlatformId r)
-{
- const char *val = NULL;
-
- switch (r) {
- case PLATFORM_ID_DOS: val = "PLATFORM_ID_DOS"; break;
- case PLATFORM_ID_OS2: val = "PLATFORM_ID_OS2"; break;
- case PLATFORM_ID_NT: val = "PLATFORM_ID_NT"; break;
- case PLATFORM_ID_OSF: val = "PLATFORM_ID_OSF"; break;
- case PLATFORM_ID_VMS: val = "PLATFORM_ID_VMS"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo100(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo100 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_srvsvc_PlatformId(ndr, NDR_SCALARS, r->platform_id));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo100(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo100 *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_srvsvc_PlatformId(ndr, NDR_SCALARS, &r->platform_id));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->server_name);
- } else {
- r->server_name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
- if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo100(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo100 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo100");
- ndr->depth++;
- ndr_print_srvsvc_PlatformId(ndr, "platform_id", r->platform_id);
- ndr_print_ptr(ndr, "server_name", r->server_name);
- ndr->depth++;
- if (r->server_name) {
- ndr_print_string(ndr, "server_name", r->server_name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo101(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo101 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_srvsvc_PlatformId(ndr, NDR_SCALARS, r->platform_id));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version_major));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version_minor));
- NDR_CHECK(ndr_push_svcctl_ServerType(ndr, NDR_SCALARS, r->server_type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo101(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo101 *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_srvsvc_PlatformId(ndr, NDR_SCALARS, &r->platform_id));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->server_name);
- } else {
- r->server_name = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version_major));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version_minor));
- NDR_CHECK(ndr_pull_svcctl_ServerType(ndr, NDR_SCALARS, &r->server_type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
- if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo101(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo101 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo101");
- ndr->depth++;
- ndr_print_srvsvc_PlatformId(ndr, "platform_id", r->platform_id);
- ndr_print_ptr(ndr, "server_name", r->server_name);
- ndr->depth++;
- if (r->server_name) {
- ndr_print_string(ndr, "server_name", r->server_name);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "version_major", r->version_major);
- ndr_print_uint32(ndr, "version_minor", r->version_minor);
- ndr_print_svcctl_ServerType(ndr, "server_type", r->server_type);
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo102(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo102 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_srvsvc_PlatformId(ndr, NDR_SCALARS, r->platform_id));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version_major));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version_minor));
- NDR_CHECK(ndr_push_svcctl_ServerType(ndr, NDR_SCALARS, r->server_type));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->users));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->disc));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->hidden));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->announce));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->anndelta));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->licenses));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->userpath));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->userpath) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->userpath, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->userpath, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->userpath, ndr_charset_length(r->userpath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo102(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo102 *r)
-{
- uint32_t _ptr_server_name;
- TALLOC_CTX *_mem_save_server_name_0;
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- uint32_t _ptr_userpath;
- TALLOC_CTX *_mem_save_userpath_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_srvsvc_PlatformId(ndr, NDR_SCALARS, &r->platform_id));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
- if (_ptr_server_name) {
- NDR_PULL_ALLOC(ndr, r->server_name);
- } else {
- r->server_name = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version_major));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version_minor));
- NDR_CHECK(ndr_pull_svcctl_ServerType(ndr, NDR_SCALARS, &r->server_type));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->users));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->disc));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->hidden));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->announce));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->anndelta));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->licenses));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_userpath));
- if (_ptr_userpath) {
- NDR_PULL_ALLOC(ndr, r->userpath);
- } else {
- r->userpath = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->server_name) {
- _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
- if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
- }
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- if (r->userpath) {
- _mem_save_userpath_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->userpath, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->userpath));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->userpath));
- if (ndr_get_array_length(ndr, &r->userpath) > ndr_get_array_size(ndr, &r->userpath)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->userpath), ndr_get_array_length(ndr, &r->userpath));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->userpath), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->userpath, ndr_get_array_length(ndr, &r->userpath), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_userpath_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo102(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo102 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo102");
- ndr->depth++;
- ndr_print_srvsvc_PlatformId(ndr, "platform_id", r->platform_id);
- ndr_print_ptr(ndr, "server_name", r->server_name);
- ndr->depth++;
- if (r->server_name) {
- ndr_print_string(ndr, "server_name", r->server_name);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "version_major", r->version_major);
- ndr_print_uint32(ndr, "version_minor", r->version_minor);
- ndr_print_svcctl_ServerType(ndr, "server_type", r->server_type);
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "users", r->users);
- ndr_print_uint32(ndr, "disc", r->disc);
- ndr_print_uint32(ndr, "hidden", r->hidden);
- ndr_print_uint32(ndr, "announce", r->announce);
- ndr_print_uint32(ndr, "anndelta", r->anndelta);
- ndr_print_uint32(ndr, "licenses", r->licenses);
- ndr_print_ptr(ndr, "userpath", r->userpath);
- ndr->depth++;
- if (r->userpath) {
- ndr_print_string(ndr, "userpath", r->userpath);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo402(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo402 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ulist_mtime));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->glist_mtime));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alist_mtime));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->alerts));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->security));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numadmin));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lanmask));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->guestaccount));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->chdevs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->chdevqs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->chdevjobs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->connections));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->shares));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->openfiles));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessopen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sesssvc));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessreqs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->activelocks));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sizereqbufs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numbigbufs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numfiletasks));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alertsched));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->erroralert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logonalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->accessalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->diskalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->netioalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxaudits));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->srvheuristics));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->alerts) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->alerts, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->alerts, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->alerts, ndr_charset_length(r->alerts, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->guestaccount) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->guestaccount, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->guestaccount, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->guestaccount, ndr_charset_length(r->guestaccount, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->srvheuristics) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->srvheuristics, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->srvheuristics, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->srvheuristics, ndr_charset_length(r->srvheuristics, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo402(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo402 *r)
-{
- uint32_t _ptr_alerts;
- TALLOC_CTX *_mem_save_alerts_0;
- uint32_t _ptr_guestaccount;
- TALLOC_CTX *_mem_save_guestaccount_0;
- uint32_t _ptr_srvheuristics;
- TALLOC_CTX *_mem_save_srvheuristics_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ulist_mtime));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->glist_mtime));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alist_mtime));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alerts));
- if (_ptr_alerts) {
- NDR_PULL_ALLOC(ndr, r->alerts);
- } else {
- r->alerts = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->security));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numadmin));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lanmask));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_guestaccount));
- if (_ptr_guestaccount) {
- NDR_PULL_ALLOC(ndr, r->guestaccount);
- } else {
- r->guestaccount = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->chdevs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->chdevqs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->chdevjobs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->connections));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->shares));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->openfiles));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessopen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sesssvc));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessreqs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->activelocks));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sizereqbufs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numbigbufs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numfiletasks));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alertsched));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->erroralert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logonalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->accessalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->diskalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->netioalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxaudits));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_srvheuristics));
- if (_ptr_srvheuristics) {
- NDR_PULL_ALLOC(ndr, r->srvheuristics);
- } else {
- r->srvheuristics = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->alerts) {
- _mem_save_alerts_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->alerts, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->alerts));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->alerts));
- if (ndr_get_array_length(ndr, &r->alerts) > ndr_get_array_size(ndr, &r->alerts)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->alerts), ndr_get_array_length(ndr, &r->alerts));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->alerts), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->alerts, ndr_get_array_length(ndr, &r->alerts), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alerts_0, 0);
- }
- if (r->guestaccount) {
- _mem_save_guestaccount_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->guestaccount, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->guestaccount));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->guestaccount));
- if (ndr_get_array_length(ndr, &r->guestaccount) > ndr_get_array_size(ndr, &r->guestaccount)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->guestaccount), ndr_get_array_length(ndr, &r->guestaccount));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->guestaccount), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->guestaccount, ndr_get_array_length(ndr, &r->guestaccount), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_guestaccount_0, 0);
- }
- if (r->srvheuristics) {
- _mem_save_srvheuristics_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->srvheuristics, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->srvheuristics));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->srvheuristics));
- if (ndr_get_array_length(ndr, &r->srvheuristics) > ndr_get_array_size(ndr, &r->srvheuristics)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->srvheuristics), ndr_get_array_length(ndr, &r->srvheuristics));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->srvheuristics), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->srvheuristics, ndr_get_array_length(ndr, &r->srvheuristics), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_srvheuristics_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo402(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo402 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo402");
- ndr->depth++;
- ndr_print_uint32(ndr, "ulist_mtime", r->ulist_mtime);
- ndr_print_uint32(ndr, "glist_mtime", r->glist_mtime);
- ndr_print_uint32(ndr, "alist_mtime", r->alist_mtime);
- ndr_print_ptr(ndr, "alerts", r->alerts);
- ndr->depth++;
- if (r->alerts) {
- ndr_print_string(ndr, "alerts", r->alerts);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "security", r->security);
- ndr_print_uint32(ndr, "numadmin", r->numadmin);
- ndr_print_uint32(ndr, "lanmask", r->lanmask);
- ndr_print_ptr(ndr, "guestaccount", r->guestaccount);
- ndr->depth++;
- if (r->guestaccount) {
- ndr_print_string(ndr, "guestaccount", r->guestaccount);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "chdevs", r->chdevs);
- ndr_print_uint32(ndr, "chdevqs", r->chdevqs);
- ndr_print_uint32(ndr, "chdevjobs", r->chdevjobs);
- ndr_print_uint32(ndr, "connections", r->connections);
- ndr_print_uint32(ndr, "shares", r->shares);
- ndr_print_uint32(ndr, "openfiles", r->openfiles);
- ndr_print_uint32(ndr, "sessopen", r->sessopen);
- ndr_print_uint32(ndr, "sesssvc", r->sesssvc);
- ndr_print_uint32(ndr, "sessreqs", r->sessreqs);
- ndr_print_uint32(ndr, "opensearch", r->opensearch);
- ndr_print_uint32(ndr, "activelocks", r->activelocks);
- ndr_print_uint32(ndr, "sizereqbufs", r->sizereqbufs);
- ndr_print_uint32(ndr, "numbigbufs", r->numbigbufs);
- ndr_print_uint32(ndr, "numfiletasks", r->numfiletasks);
- ndr_print_uint32(ndr, "alertsched", r->alertsched);
- ndr_print_uint32(ndr, "erroralert", r->erroralert);
- ndr_print_uint32(ndr, "logonalert", r->logonalert);
- ndr_print_uint32(ndr, "accessalert", r->accessalert);
- ndr_print_uint32(ndr, "diskalert", r->diskalert);
- ndr_print_uint32(ndr, "netioalert", r->netioalert);
- ndr_print_uint32(ndr, "maxaudits", r->maxaudits);
- ndr_print_ptr(ndr, "srvheuristics", r->srvheuristics);
- ndr->depth++;
- if (r->srvheuristics) {
- ndr_print_string(ndr, "srvheuristics", r->srvheuristics);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo403(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo403 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ulist_mtime));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->glist_mtime));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alist_mtime));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->alerts));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->security));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numadmin));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lanmask));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->guestaccount));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->chdevs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->chdevqs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->chdevjobs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->connections));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->shares));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->openfiles));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessopen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sesssvc));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessreqs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->activelocks));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sizereqbufs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numbigbufs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numfiletasks));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alertsched));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->eroralert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logonalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->accessalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->diskalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->netioalert));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxaudits));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->srvheuristics));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auditedevents));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auditprofile));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->autopath));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->alerts) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->alerts, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->alerts, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->alerts, ndr_charset_length(r->alerts, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->guestaccount) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->guestaccount, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->guestaccount, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->guestaccount, ndr_charset_length(r->guestaccount, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->srvheuristics) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->srvheuristics, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->srvheuristics, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->srvheuristics, ndr_charset_length(r->srvheuristics, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->autopath) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->autopath, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->autopath, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->autopath, ndr_charset_length(r->autopath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo403(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo403 *r)
-{
- uint32_t _ptr_alerts;
- TALLOC_CTX *_mem_save_alerts_0;
- uint32_t _ptr_guestaccount;
- TALLOC_CTX *_mem_save_guestaccount_0;
- uint32_t _ptr_srvheuristics;
- TALLOC_CTX *_mem_save_srvheuristics_0;
- uint32_t _ptr_autopath;
- TALLOC_CTX *_mem_save_autopath_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ulist_mtime));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->glist_mtime));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alist_mtime));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alerts));
- if (_ptr_alerts) {
- NDR_PULL_ALLOC(ndr, r->alerts);
- } else {
- r->alerts = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->security));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numadmin));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lanmask));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_guestaccount));
- if (_ptr_guestaccount) {
- NDR_PULL_ALLOC(ndr, r->guestaccount);
- } else {
- r->guestaccount = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->chdevs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->chdevqs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->chdevjobs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->connections));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->shares));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->openfiles));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessopen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sesssvc));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessreqs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->activelocks));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sizereqbufs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numbigbufs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numfiletasks));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alertsched));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->eroralert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logonalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->accessalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->diskalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->netioalert));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxaudits));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_srvheuristics));
- if (_ptr_srvheuristics) {
- NDR_PULL_ALLOC(ndr, r->srvheuristics);
- } else {
- r->srvheuristics = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auditedevents));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auditprofile));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_autopath));
- if (_ptr_autopath) {
- NDR_PULL_ALLOC(ndr, r->autopath);
- } else {
- r->autopath = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->alerts) {
- _mem_save_alerts_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->alerts, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->alerts));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->alerts));
- if (ndr_get_array_length(ndr, &r->alerts) > ndr_get_array_size(ndr, &r->alerts)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->alerts), ndr_get_array_length(ndr, &r->alerts));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->alerts), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->alerts, ndr_get_array_length(ndr, &r->alerts), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alerts_0, 0);
- }
- if (r->guestaccount) {
- _mem_save_guestaccount_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->guestaccount, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->guestaccount));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->guestaccount));
- if (ndr_get_array_length(ndr, &r->guestaccount) > ndr_get_array_size(ndr, &r->guestaccount)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->guestaccount), ndr_get_array_length(ndr, &r->guestaccount));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->guestaccount), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->guestaccount, ndr_get_array_length(ndr, &r->guestaccount), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_guestaccount_0, 0);
- }
- if (r->srvheuristics) {
- _mem_save_srvheuristics_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->srvheuristics, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->srvheuristics));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->srvheuristics));
- if (ndr_get_array_length(ndr, &r->srvheuristics) > ndr_get_array_size(ndr, &r->srvheuristics)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->srvheuristics), ndr_get_array_length(ndr, &r->srvheuristics));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->srvheuristics), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->srvheuristics, ndr_get_array_length(ndr, &r->srvheuristics), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_srvheuristics_0, 0);
- }
- if (r->autopath) {
- _mem_save_autopath_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->autopath, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->autopath));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->autopath));
- if (ndr_get_array_length(ndr, &r->autopath) > ndr_get_array_size(ndr, &r->autopath)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->autopath), ndr_get_array_length(ndr, &r->autopath));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->autopath), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->autopath, ndr_get_array_length(ndr, &r->autopath), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_autopath_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo403(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo403 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo403");
- ndr->depth++;
- ndr_print_uint32(ndr, "ulist_mtime", r->ulist_mtime);
- ndr_print_uint32(ndr, "glist_mtime", r->glist_mtime);
- ndr_print_uint32(ndr, "alist_mtime", r->alist_mtime);
- ndr_print_ptr(ndr, "alerts", r->alerts);
- ndr->depth++;
- if (r->alerts) {
- ndr_print_string(ndr, "alerts", r->alerts);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "security", r->security);
- ndr_print_uint32(ndr, "numadmin", r->numadmin);
- ndr_print_uint32(ndr, "lanmask", r->lanmask);
- ndr_print_ptr(ndr, "guestaccount", r->guestaccount);
- ndr->depth++;
- if (r->guestaccount) {
- ndr_print_string(ndr, "guestaccount", r->guestaccount);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "chdevs", r->chdevs);
- ndr_print_uint32(ndr, "chdevqs", r->chdevqs);
- ndr_print_uint32(ndr, "chdevjobs", r->chdevjobs);
- ndr_print_uint32(ndr, "connections", r->connections);
- ndr_print_uint32(ndr, "shares", r->shares);
- ndr_print_uint32(ndr, "openfiles", r->openfiles);
- ndr_print_uint32(ndr, "sessopen", r->sessopen);
- ndr_print_uint32(ndr, "sesssvc", r->sesssvc);
- ndr_print_uint32(ndr, "sessreqs", r->sessreqs);
- ndr_print_uint32(ndr, "opensearch", r->opensearch);
- ndr_print_uint32(ndr, "activelocks", r->activelocks);
- ndr_print_uint32(ndr, "sizereqbufs", r->sizereqbufs);
- ndr_print_uint32(ndr, "numbigbufs", r->numbigbufs);
- ndr_print_uint32(ndr, "numfiletasks", r->numfiletasks);
- ndr_print_uint32(ndr, "alertsched", r->alertsched);
- ndr_print_uint32(ndr, "eroralert", r->eroralert);
- ndr_print_uint32(ndr, "logonalert", r->logonalert);
- ndr_print_uint32(ndr, "accessalert", r->accessalert);
- ndr_print_uint32(ndr, "diskalert", r->diskalert);
- ndr_print_uint32(ndr, "netioalert", r->netioalert);
- ndr_print_uint32(ndr, "maxaudits", r->maxaudits);
- ndr_print_ptr(ndr, "srvheuristics", r->srvheuristics);
- ndr->depth++;
- if (r->srvheuristics) {
- ndr_print_string(ndr, "srvheuristics", r->srvheuristics);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "auditedevents", r->auditedevents);
- ndr_print_uint32(ndr, "auditprofile", r->auditprofile);
- ndr_print_ptr(ndr, "autopath", r->autopath);
- ndr->depth++;
- if (r->autopath) {
- ndr_print_string(ndr, "autopath", r->autopath);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo502(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo502 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessopen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sesssvc));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sizereqbufs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rawworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->irpstacksize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxrawbuflen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessusers));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessconns));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxpagedmemoryusage));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxnonpagedmemoryusage));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablesoftcompat));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableforcedlogoff));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timesource));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->acceptdownlevelapis));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lmannounce));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo502(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo502 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessopen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sesssvc));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sizereqbufs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rawworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->irpstacksize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxrawbuflen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessusers));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessconns));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxpagedmemoryusage));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxnonpagedmemoryusage));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablesoftcompat));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableforcedlogoff));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timesource));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->acceptdownlevelapis));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lmannounce));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo502 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo502");
- ndr->depth++;
- ndr_print_uint32(ndr, "sessopen", r->sessopen);
- ndr_print_uint32(ndr, "sesssvc", r->sesssvc);
- ndr_print_uint32(ndr, "opensearch", r->opensearch);
- ndr_print_uint32(ndr, "sizereqbufs", r->sizereqbufs);
- ndr_print_uint32(ndr, "initworkitems", r->initworkitems);
- ndr_print_uint32(ndr, "maxworkitems", r->maxworkitems);
- ndr_print_uint32(ndr, "rawworkitems", r->rawworkitems);
- ndr_print_uint32(ndr, "irpstacksize", r->irpstacksize);
- ndr_print_uint32(ndr, "maxrawbuflen", r->maxrawbuflen);
- ndr_print_uint32(ndr, "sessusers", r->sessusers);
- ndr_print_uint32(ndr, "sessconns", r->sessconns);
- ndr_print_uint32(ndr, "maxpagedmemoryusage", r->maxpagedmemoryusage);
- ndr_print_uint32(ndr, "maxnonpagedmemoryusage", r->maxnonpagedmemoryusage);
- ndr_print_uint32(ndr, "enablesoftcompat", r->enablesoftcompat);
- ndr_print_uint32(ndr, "enableforcedlogoff", r->enableforcedlogoff);
- ndr_print_uint32(ndr, "timesource", r->timesource);
- ndr_print_uint32(ndr, "acceptdownlevelapis", r->acceptdownlevelapis);
- ndr_print_uint32(ndr, "lmannounce", r->lmannounce);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo503(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo503 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessopen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sesssvc));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sizereqbufs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rawworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->irpstacksize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxrawbuflen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessusers));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessconns));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxpagedmemoryusage));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxnonpagedmemoryusage));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablesoftcompat));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableforcedlogoff));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timesource));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->acceptdownlevelapis));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lmannounce));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxcopyreadlen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxcopywritelen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minkeepsearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxkeepsearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minkeepcomplsearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxkeepcomplsearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->threadcountadd));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numlockthreads));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->scavtimeout));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minrcvqueue));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minfreeworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->xactmemsize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->threadpriority));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxmpxct));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->oplockbreakwait));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->oplockbreakresponsewait));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableoplocks));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableoplockforceclose));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablefcbopens));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableraw));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablesharednetdrives));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minfreeconnections));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxfreeconnections));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo503(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo503 *r)
-{
- uint32_t _ptr_domain;
- TALLOC_CTX *_mem_save_domain_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessopen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sesssvc));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sizereqbufs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rawworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->irpstacksize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxrawbuflen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessusers));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessconns));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxpagedmemoryusage));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxnonpagedmemoryusage));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablesoftcompat));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableforcedlogoff));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timesource));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->acceptdownlevelapis));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lmannounce));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxcopyreadlen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxcopywritelen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minkeepsearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxkeepsearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minkeepcomplsearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxkeepcomplsearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->threadcountadd));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numlockthreads));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->scavtimeout));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minrcvqueue));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minfreeworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->xactmemsize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->threadpriority));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxmpxct));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->oplockbreakwait));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->oplockbreakresponsewait));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableoplocks));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableoplockforceclose));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablefcbopens));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableraw));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablesharednetdrives));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minfreeconnections));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxfreeconnections));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo503(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo503 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo503");
- ndr->depth++;
- ndr_print_uint32(ndr, "sessopen", r->sessopen);
- ndr_print_uint32(ndr, "sesssvc", r->sesssvc);
- ndr_print_uint32(ndr, "opensearch", r->opensearch);
- ndr_print_uint32(ndr, "sizereqbufs", r->sizereqbufs);
- ndr_print_uint32(ndr, "initworkitems", r->initworkitems);
- ndr_print_uint32(ndr, "maxworkitems", r->maxworkitems);
- ndr_print_uint32(ndr, "rawworkitems", r->rawworkitems);
- ndr_print_uint32(ndr, "irpstacksize", r->irpstacksize);
- ndr_print_uint32(ndr, "maxrawbuflen", r->maxrawbuflen);
- ndr_print_uint32(ndr, "sessusers", r->sessusers);
- ndr_print_uint32(ndr, "sessconns", r->sessconns);
- ndr_print_uint32(ndr, "maxpagedmemoryusage", r->maxpagedmemoryusage);
- ndr_print_uint32(ndr, "maxnonpagedmemoryusage", r->maxnonpagedmemoryusage);
- ndr_print_uint32(ndr, "enablesoftcompat", r->enablesoftcompat);
- ndr_print_uint32(ndr, "enableforcedlogoff", r->enableforcedlogoff);
- ndr_print_uint32(ndr, "timesource", r->timesource);
- ndr_print_uint32(ndr, "acceptdownlevelapis", r->acceptdownlevelapis);
- ndr_print_uint32(ndr, "lmannounce", r->lmannounce);
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "maxcopyreadlen", r->maxcopyreadlen);
- ndr_print_uint32(ndr, "maxcopywritelen", r->maxcopywritelen);
- ndr_print_uint32(ndr, "minkeepsearch", r->minkeepsearch);
- ndr_print_uint32(ndr, "maxkeepsearch", r->maxkeepsearch);
- ndr_print_uint32(ndr, "minkeepcomplsearch", r->minkeepcomplsearch);
- ndr_print_uint32(ndr, "maxkeepcomplsearch", r->maxkeepcomplsearch);
- ndr_print_uint32(ndr, "threadcountadd", r->threadcountadd);
- ndr_print_uint32(ndr, "numlockthreads", r->numlockthreads);
- ndr_print_uint32(ndr, "scavtimeout", r->scavtimeout);
- ndr_print_uint32(ndr, "minrcvqueue", r->minrcvqueue);
- ndr_print_uint32(ndr, "minfreeworkitems", r->minfreeworkitems);
- ndr_print_uint32(ndr, "xactmemsize", r->xactmemsize);
- ndr_print_uint32(ndr, "threadpriority", r->threadpriority);
- ndr_print_uint32(ndr, "maxmpxct", r->maxmpxct);
- ndr_print_uint32(ndr, "oplockbreakwait", r->oplockbreakwait);
- ndr_print_uint32(ndr, "oplockbreakresponsewait", r->oplockbreakresponsewait);
- ndr_print_uint32(ndr, "enableoplocks", r->enableoplocks);
- ndr_print_uint32(ndr, "enableoplockforceclose", r->enableoplockforceclose);
- ndr_print_uint32(ndr, "enablefcbopens", r->enablefcbopens);
- ndr_print_uint32(ndr, "enableraw", r->enableraw);
- ndr_print_uint32(ndr, "enablesharednetdrives", r->enablesharednetdrives);
- ndr_print_uint32(ndr, "minfreeconnections", r->minfreeconnections);
- ndr_print_uint32(ndr, "maxfreeconnections", r->maxfreeconnections);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo599(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo599 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessopen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sesssvc));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sizereqbufs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rawworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->irpstacksize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxrawbuflen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessusers));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessconns));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxpagedmemoryusage));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxnonpagedmemoryusage));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablesoftcompat));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableforcedlogoff));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timesource));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->acceptdownlevelapis));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lmannounce));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxcopyreadlen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxcopywritelen));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minkeepsearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minkeepcomplsearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxkeepcomplsearch));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->threadcountadd));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numlockthreads));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->scavtimeout));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minrcvqueue));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minfreeworkitems));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->xactmemsize));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->threadpriority));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxmpxct));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->oplockbreakwait));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->oplockbreakresponsewait));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableoplocks));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableoplockforceclose));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablefcbopens));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableraw));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablesharednetdrives));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minfreeconnections));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxfreeconnections));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initsesstable));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initconntable));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initfiletable));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initsearchtable));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alertsched));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->errortreshold));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->networkerrortreshold));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->diskspacetreshold));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlinkdelay));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minlinkthroughput));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->linkinfovalidtime));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->scavqosinfoupdatetime));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxworkitemidletime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo599(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo599 *r)
-{
- uint32_t _ptr_domain;
- TALLOC_CTX *_mem_save_domain_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessopen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sesssvc));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sizereqbufs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rawworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->irpstacksize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxrawbuflen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessusers));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessconns));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxpagedmemoryusage));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxnonpagedmemoryusage));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablesoftcompat));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableforcedlogoff));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timesource));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->acceptdownlevelapis));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lmannounce));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxcopyreadlen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxcopywritelen));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minkeepsearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minkeepcomplsearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxkeepcomplsearch));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->threadcountadd));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numlockthreads));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->scavtimeout));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minrcvqueue));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minfreeworkitems));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->xactmemsize));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->threadpriority));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxmpxct));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->oplockbreakwait));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->oplockbreakresponsewait));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableoplocks));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableoplockforceclose));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablefcbopens));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableraw));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablesharednetdrives));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minfreeconnections));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxfreeconnections));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initsesstable));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initconntable));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initfiletable));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initsearchtable));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alertsched));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->errortreshold));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->networkerrortreshold));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->diskspacetreshold));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlinkdelay));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minlinkthroughput));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->linkinfovalidtime));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->scavqosinfoupdatetime));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxworkitemidletime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo599(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo599 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo599");
- ndr->depth++;
- ndr_print_uint32(ndr, "sessopen", r->sessopen);
- ndr_print_uint32(ndr, "sesssvc", r->sesssvc);
- ndr_print_uint32(ndr, "opensearch", r->opensearch);
- ndr_print_uint32(ndr, "sizereqbufs", r->sizereqbufs);
- ndr_print_uint32(ndr, "initworkitems", r->initworkitems);
- ndr_print_uint32(ndr, "maxworkitems", r->maxworkitems);
- ndr_print_uint32(ndr, "rawworkitems", r->rawworkitems);
- ndr_print_uint32(ndr, "irpstacksize", r->irpstacksize);
- ndr_print_uint32(ndr, "maxrawbuflen", r->maxrawbuflen);
- ndr_print_uint32(ndr, "sessusers", r->sessusers);
- ndr_print_uint32(ndr, "sessconns", r->sessconns);
- ndr_print_uint32(ndr, "maxpagedmemoryusage", r->maxpagedmemoryusage);
- ndr_print_uint32(ndr, "maxnonpagedmemoryusage", r->maxnonpagedmemoryusage);
- ndr_print_uint32(ndr, "enablesoftcompat", r->enablesoftcompat);
- ndr_print_uint32(ndr, "enableforcedlogoff", r->enableforcedlogoff);
- ndr_print_uint32(ndr, "timesource", r->timesource);
- ndr_print_uint32(ndr, "acceptdownlevelapis", r->acceptdownlevelapis);
- ndr_print_uint32(ndr, "lmannounce", r->lmannounce);
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "maxcopyreadlen", r->maxcopyreadlen);
- ndr_print_uint32(ndr, "maxcopywritelen", r->maxcopywritelen);
- ndr_print_uint32(ndr, "minkeepsearch", r->minkeepsearch);
- ndr_print_uint32(ndr, "minkeepcomplsearch", r->minkeepcomplsearch);
- ndr_print_uint32(ndr, "maxkeepcomplsearch", r->maxkeepcomplsearch);
- ndr_print_uint32(ndr, "threadcountadd", r->threadcountadd);
- ndr_print_uint32(ndr, "numlockthreads", r->numlockthreads);
- ndr_print_uint32(ndr, "scavtimeout", r->scavtimeout);
- ndr_print_uint32(ndr, "minrcvqueue", r->minrcvqueue);
- ndr_print_uint32(ndr, "minfreeworkitems", r->minfreeworkitems);
- ndr_print_uint32(ndr, "xactmemsize", r->xactmemsize);
- ndr_print_uint32(ndr, "threadpriority", r->threadpriority);
- ndr_print_uint32(ndr, "maxmpxct", r->maxmpxct);
- ndr_print_uint32(ndr, "oplockbreakwait", r->oplockbreakwait);
- ndr_print_uint32(ndr, "oplockbreakresponsewait", r->oplockbreakresponsewait);
- ndr_print_uint32(ndr, "enableoplocks", r->enableoplocks);
- ndr_print_uint32(ndr, "enableoplockforceclose", r->enableoplockforceclose);
- ndr_print_uint32(ndr, "enablefcbopens", r->enablefcbopens);
- ndr_print_uint32(ndr, "enableraw", r->enableraw);
- ndr_print_uint32(ndr, "enablesharednetdrives", r->enablesharednetdrives);
- ndr_print_uint32(ndr, "minfreeconnections", r->minfreeconnections);
- ndr_print_uint32(ndr, "maxfreeconnections", r->maxfreeconnections);
- ndr_print_uint32(ndr, "initsesstable", r->initsesstable);
- ndr_print_uint32(ndr, "initconntable", r->initconntable);
- ndr_print_uint32(ndr, "initfiletable", r->initfiletable);
- ndr_print_uint32(ndr, "initsearchtable", r->initsearchtable);
- ndr_print_uint32(ndr, "alertsched", r->alertsched);
- ndr_print_uint32(ndr, "errortreshold", r->errortreshold);
- ndr_print_uint32(ndr, "networkerrortreshold", r->networkerrortreshold);
- ndr_print_uint32(ndr, "diskspacetreshold", r->diskspacetreshold);
- ndr_print_uint32(ndr, "reserved", r->reserved);
- ndr_print_uint32(ndr, "maxlinkdelay", r->maxlinkdelay);
- ndr_print_uint32(ndr, "minlinkthroughput", r->minlinkthroughput);
- ndr_print_uint32(ndr, "linkinfovalidtime", r->linkinfovalidtime);
- ndr_print_uint32(ndr, "scavqosinfoupdatetime", r->scavqosinfoupdatetime);
- ndr_print_uint32(ndr, "maxworkitemidletime", r->maxworkitemidletime);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1005(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1005 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1005(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1005 *r)
-{
- uint32_t _ptr_comment;
- TALLOC_CTX *_mem_save_comment_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
- if (_ptr_comment) {
- NDR_PULL_ALLOC(ndr, r->comment);
- } else {
- r->comment = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->comment) {
- _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
- if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1005(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1005 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1005");
- ndr->depth++;
- ndr_print_ptr(ndr, "comment", r->comment);
- ndr->depth++;
- if (r->comment) {
- ndr_print_string(ndr, "comment", r->comment);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1010(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1010 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->disc));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1010(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1010 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->disc));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1010(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1010 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1010");
- ndr->depth++;
- ndr_print_uint32(ndr, "disc", r->disc);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1016(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1016 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->hidden));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1016(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1016 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->hidden));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1016(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1016 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1016");
- ndr->depth++;
- ndr_print_uint32(ndr, "hidden", r->hidden);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1017(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1017 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->announce));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1017(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1017 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->announce));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1017(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1017 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1017");
- ndr->depth++;
- ndr_print_uint32(ndr, "announce", r->announce);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1018(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1018 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->anndelta));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1018(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1018 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->anndelta));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1018(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1018 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1018");
- ndr->depth++;
- ndr_print_uint32(ndr, "anndelta", r->anndelta);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1107(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1107 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->users));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1107(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1107 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->users));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1107(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1107 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1107");
- ndr->depth++;
- ndr_print_uint32(ndr, "users", r->users);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1501(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1501 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessopens));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1501(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1501 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessopens));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1501 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1501");
- ndr->depth++;
- ndr_print_uint32(ndr, "sessopens", r->sessopens);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1502(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1502 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessvcs));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1502(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1502 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessvcs));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1502 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1502");
- ndr->depth++;
- ndr_print_uint32(ndr, "sessvcs", r->sessvcs);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1503(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1503 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1503(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1503 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1503(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1503 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1503");
- ndr->depth++;
- ndr_print_uint32(ndr, "opensearch", r->opensearch);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1506(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1506 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxworkitems));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1506(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1506 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxworkitems));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1506(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1506 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1506");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxworkitems", r->maxworkitems);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1509(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1509 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxrawbuflen));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1509(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1509 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxrawbuflen));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1509(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1509 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1509");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxrawbuflen", r->maxrawbuflen);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1510(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1510 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessusers));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1510(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1510 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessusers));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1510(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1510 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1510");
- ndr->depth++;
- ndr_print_uint32(ndr, "sessusers", r->sessusers);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1511(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1511 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sesscons));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1511(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1511 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sesscons));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1511(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1511 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1511");
- ndr->depth++;
- ndr_print_uint32(ndr, "sesscons", r->sesscons);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1512(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1512 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxnonpagedmemoryusage));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1512(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1512 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxnonpagedmemoryusage));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1512(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1512 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1512");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxnonpagedmemoryusage", r->maxnonpagedmemoryusage);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1513(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1513 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxpagedmemoryusage));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1513(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1513 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxpagedmemoryusage));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1513(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1513 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1513");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxpagedmemoryusage", r->maxpagedmemoryusage);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1514(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1514 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablesoftcompat));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1514(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1514 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablesoftcompat));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1514(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1514 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1514");
- ndr->depth++;
- ndr_print_uint32(ndr, "enablesoftcompat", r->enablesoftcompat);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1515(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1515 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableforcedlogoff));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1515(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1515 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableforcedlogoff));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1515(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1515 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1515");
- ndr->depth++;
- ndr_print_uint32(ndr, "enableforcedlogoff", r->enableforcedlogoff);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1516(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1516 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timesource));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1516(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1516 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timesource));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1516(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1516 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1516");
- ndr->depth++;
- ndr_print_uint32(ndr, "timesource", r->timesource);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1518(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1518 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lmannounce));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1518(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1518 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lmannounce));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1518(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1518 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1518");
- ndr->depth++;
- ndr_print_uint32(ndr, "lmannounce", r->lmannounce);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1520(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1520 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxcopyreadlen));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1520(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1520 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxcopyreadlen));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1520(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1520 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1520");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxcopyreadlen", r->maxcopyreadlen);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1521(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1521 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxcopywritelen));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1521(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1521 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxcopywritelen));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1521(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1521 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1521");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxcopywritelen", r->maxcopywritelen);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1522(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1522 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minkeepsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1522(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1522 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minkeepsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1522(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1522 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1522");
- ndr->depth++;
- ndr_print_uint32(ndr, "minkeepsearch", r->minkeepsearch);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1523(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1523 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxkeepsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1523(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1523 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxkeepsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1523(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1523 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1523");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxkeepsearch", r->maxkeepsearch);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1524(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1524 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minkeepcomplsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1524(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1524 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minkeepcomplsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1524(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1524 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1524");
- ndr->depth++;
- ndr_print_uint32(ndr, "minkeepcomplsearch", r->minkeepcomplsearch);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1525(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1525 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxkeepcomplsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1525(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1525 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxkeepcomplsearch));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1525(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1525 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1525");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxkeepcomplsearch", r->maxkeepcomplsearch);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1528(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1528 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->scavtimeout));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1528(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1528 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->scavtimeout));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1528(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1528 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1528");
- ndr->depth++;
- ndr_print_uint32(ndr, "scavtimeout", r->scavtimeout);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1529(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1529 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minrcvqueue));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1529(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1529 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minrcvqueue));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1529(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1529 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1529");
- ndr->depth++;
- ndr_print_uint32(ndr, "minrcvqueue", r->minrcvqueue);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1530(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1530 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minfreeworkitems));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1530(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1530 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minfreeworkitems));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1530(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1530 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1530");
- ndr->depth++;
- ndr_print_uint32(ndr, "minfreeworkitems", r->minfreeworkitems);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1533(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1533 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxmpxct));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1533(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1533 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxmpxct));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1533(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1533 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1533");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxmpxct", r->maxmpxct);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1534(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1534 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->oplockbreakwait));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1534(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1534 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->oplockbreakwait));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1534(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1534 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1534");
- ndr->depth++;
- ndr_print_uint32(ndr, "oplockbreakwait", r->oplockbreakwait);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1535(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1535 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->oplockbreakresponsewait));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1535(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1535 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->oplockbreakresponsewait));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1535(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1535 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1535");
- ndr->depth++;
- ndr_print_uint32(ndr, "oplockbreakresponsewait", r->oplockbreakresponsewait);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1536(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1536 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableoplocks));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1536(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1536 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableoplocks));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1536(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1536 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1536");
- ndr->depth++;
- ndr_print_uint32(ndr, "enableoplocks", r->enableoplocks);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1537(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1537 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableoplockforceclose));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1537(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1537 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableoplockforceclose));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1537(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1537 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1537");
- ndr->depth++;
- ndr_print_uint32(ndr, "enableoplockforceclose", r->enableoplockforceclose);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1538(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1538 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablefcbopens));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1538(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1538 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablefcbopens));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1538(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1538 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1538");
- ndr->depth++;
- ndr_print_uint32(ndr, "enablefcbopens", r->enablefcbopens);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1539(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1539 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enableraw));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1539(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1539 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enableraw));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1539(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1539 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1539");
- ndr->depth++;
- ndr_print_uint32(ndr, "enableraw", r->enableraw);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1540(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1540 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enablesharednetdrives));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1540(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1540 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enablesharednetdrives));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1540(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1540 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1540");
- ndr->depth++;
- ndr_print_uint32(ndr, "enablesharednetdrives", r->enablesharednetdrives);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1541(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1541 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minfreeconnections));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1541(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1541 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minfreeconnections));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1541(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1541 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1541");
- ndr->depth++;
- ndr_print_uint32(ndr, "minfreeconnections", r->minfreeconnections);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1542(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1542 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxfreeconnections));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1542(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1542 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxfreeconnections));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1542(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1542 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1542");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxfreeconnections", r->maxfreeconnections);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1543(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1543 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initsesstable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1543(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1543 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initsesstable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1543(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1543 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1543");
- ndr->depth++;
- ndr_print_uint32(ndr, "initsesstable", r->initsesstable);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1544(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1544 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initconntable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1544(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1544 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initconntable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1544(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1544 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1544");
- ndr->depth++;
- ndr_print_uint32(ndr, "initconntable", r->initconntable);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1545(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1545 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initfiletable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1545(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1545 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initfiletable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1545(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1545 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1545");
- ndr->depth++;
- ndr_print_uint32(ndr, "initfiletable", r->initfiletable);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1546(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1546 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->initsearchtable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1546(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1546 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->initsearchtable));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1546(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1546 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1546");
- ndr->depth++;
- ndr_print_uint32(ndr, "initsearchtable", r->initsearchtable);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1547(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1547 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alertsched));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1547(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1547 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alertsched));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1547(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1547 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1547");
- ndr->depth++;
- ndr_print_uint32(ndr, "alertsched", r->alertsched);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1548(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1548 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->errortreshold));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1548(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1548 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->errortreshold));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1548(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1548 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1548");
- ndr->depth++;
- ndr_print_uint32(ndr, "errortreshold", r->errortreshold);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1549(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1549 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->networkerrortreshold));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1549(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1549 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->networkerrortreshold));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1549(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1549 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1549");
- ndr->depth++;
- ndr_print_uint32(ndr, "networkerrortreshold", r->networkerrortreshold);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1550(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1550 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->diskspacetreshold));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1550(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1550 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->diskspacetreshold));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1550(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1550 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1550");
- ndr->depth++;
- ndr_print_uint32(ndr, "diskspacetreshold", r->diskspacetreshold);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1552(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1552 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlinkdelay));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1552(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1552 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlinkdelay));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1552(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1552 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1552");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxlinkdelay", r->maxlinkdelay);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1553(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1553 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minlinkthroughput));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1553(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1553 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minlinkthroughput));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1553(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1553 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1553");
- ndr->depth++;
- ndr_print_uint32(ndr, "minlinkthroughput", r->minlinkthroughput);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1554(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1554 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->linkinfovalidtime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1554(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1554 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->linkinfovalidtime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1554(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1554 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1554");
- ndr->depth++;
- ndr_print_uint32(ndr, "linkinfovalidtime", r->linkinfovalidtime);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1555(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1555 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->scavqosinfoupdatetime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1555(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1555 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->scavqosinfoupdatetime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1555(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1555 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1555");
- ndr->depth++;
- ndr_print_uint32(ndr, "scavqosinfoupdatetime", r->scavqosinfoupdatetime);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo1556(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSrvInfo1556 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxworkitemidletime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo1556(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSrvInfo1556 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxworkitemidletime));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1556(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1556 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvInfo1556");
- ndr->depth++;
- ndr_print_uint32(ndr, "maxworkitemidletime", r->maxworkitemidletime);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvInfo(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetSrvInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 100:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info100));
- break;
-
- case 101:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info101));
- break;
-
- case 102:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info102));
- break;
-
- case 402:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info402));
- break;
-
- case 403:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info403));
- break;
-
- case 502:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info502));
- break;
-
- case 503:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info503));
- break;
-
- case 599:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info599));
- break;
-
- case 1005:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1005));
- break;
-
- case 1010:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1010));
- break;
-
- case 1016:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1016));
- break;
-
- case 1017:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1017));
- break;
-
- case 1018:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1018));
- break;
-
- case 1107:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1107));
- break;
-
- case 1501:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1501));
- break;
-
- case 1502:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1502));
- break;
-
- case 1503:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1503));
- break;
-
- case 1506:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1506));
- break;
-
- case 1509:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1509));
- break;
-
- case 1510:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1510));
- break;
-
- case 1511:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1511));
- break;
-
- case 1512:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1512));
- break;
-
- case 1513:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1513));
- break;
-
- case 1514:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1514));
- break;
-
- case 1515:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1515));
- break;
-
- case 1516:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1516));
- break;
-
- case 1518:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1518));
- break;
-
- case 1520:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1520));
- break;
-
- case 1521:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1521));
- break;
-
- case 1522:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1522));
- break;
-
- case 1523:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1523));
- break;
-
- case 1524:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1524));
- break;
-
- case 1525:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1525));
- break;
-
- case 1528:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1528));
- break;
-
- case 1529:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1529));
- break;
-
- case 1530:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1530));
- break;
-
- case 1533:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1533));
- break;
-
- case 1534:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1534));
- break;
-
- case 1535:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1535));
- break;
-
- case 1536:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1536));
- break;
-
- case 1537:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1537));
- break;
-
- case 1538:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1538));
- break;
-
- case 1539:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1539));
- break;
-
- case 1540:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1540));
- break;
-
- case 1541:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1541));
- break;
-
- case 1542:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1542));
- break;
-
- case 1543:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1543));
- break;
-
- case 1544:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1544));
- break;
-
- case 1545:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1545));
- break;
-
- case 1546:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1546));
- break;
-
- case 1547:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1547));
- break;
-
- case 1548:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1548));
- break;
-
- case 1549:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1549));
- break;
-
- case 1550:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1550));
- break;
-
- case 1552:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1552));
- break;
-
- case 1553:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1553));
- break;
-
- case 1554:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1554));
- break;
-
- case 1555:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1555));
- break;
-
- case 1556:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1556));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 100:
- if (r->info100) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo100(ndr, NDR_SCALARS|NDR_BUFFERS, r->info100));
- }
- break;
-
- case 101:
- if (r->info101) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo101(ndr, NDR_SCALARS|NDR_BUFFERS, r->info101));
- }
- break;
-
- case 102:
- if (r->info102) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo102(ndr, NDR_SCALARS|NDR_BUFFERS, r->info102));
- }
- break;
-
- case 402:
- if (r->info402) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo402(ndr, NDR_SCALARS|NDR_BUFFERS, r->info402));
- }
- break;
-
- case 403:
- if (r->info403) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo403(ndr, NDR_SCALARS|NDR_BUFFERS, r->info403));
- }
- break;
-
- case 502:
- if (r->info502) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo502(ndr, NDR_SCALARS, r->info502));
- }
- break;
-
- case 503:
- if (r->info503) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo503(ndr, NDR_SCALARS|NDR_BUFFERS, r->info503));
- }
- break;
-
- case 599:
- if (r->info599) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo599(ndr, NDR_SCALARS|NDR_BUFFERS, r->info599));
- }
- break;
-
- case 1005:
- if (r->info1005) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1005(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1005));
- }
- break;
-
- case 1010:
- if (r->info1010) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1010(ndr, NDR_SCALARS, r->info1010));
- }
- break;
-
- case 1016:
- if (r->info1016) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1016(ndr, NDR_SCALARS, r->info1016));
- }
- break;
-
- case 1017:
- if (r->info1017) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1017(ndr, NDR_SCALARS, r->info1017));
- }
- break;
-
- case 1018:
- if (r->info1018) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1018(ndr, NDR_SCALARS, r->info1018));
- }
- break;
-
- case 1107:
- if (r->info1107) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1107(ndr, NDR_SCALARS, r->info1107));
- }
- break;
-
- case 1501:
- if (r->info1501) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1501(ndr, NDR_SCALARS, r->info1501));
- }
- break;
-
- case 1502:
- if (r->info1502) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1502(ndr, NDR_SCALARS, r->info1502));
- }
- break;
-
- case 1503:
- if (r->info1503) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1503(ndr, NDR_SCALARS, r->info1503));
- }
- break;
-
- case 1506:
- if (r->info1506) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1506(ndr, NDR_SCALARS, r->info1506));
- }
- break;
-
- case 1509:
- if (r->info1509) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1509(ndr, NDR_SCALARS, r->info1509));
- }
- break;
-
- case 1510:
- if (r->info1510) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1510(ndr, NDR_SCALARS, r->info1510));
- }
- break;
-
- case 1511:
- if (r->info1511) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1511(ndr, NDR_SCALARS, r->info1511));
- }
- break;
-
- case 1512:
- if (r->info1512) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1512(ndr, NDR_SCALARS, r->info1512));
- }
- break;
-
- case 1513:
- if (r->info1513) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1513(ndr, NDR_SCALARS, r->info1513));
- }
- break;
-
- case 1514:
- if (r->info1514) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1514(ndr, NDR_SCALARS, r->info1514));
- }
- break;
-
- case 1515:
- if (r->info1515) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1515(ndr, NDR_SCALARS, r->info1515));
- }
- break;
-
- case 1516:
- if (r->info1516) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1516(ndr, NDR_SCALARS, r->info1516));
- }
- break;
-
- case 1518:
- if (r->info1518) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1518(ndr, NDR_SCALARS, r->info1518));
- }
- break;
-
- case 1520:
- if (r->info1520) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1520(ndr, NDR_SCALARS, r->info1520));
- }
- break;
-
- case 1521:
- if (r->info1521) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1521(ndr, NDR_SCALARS, r->info1521));
- }
- break;
-
- case 1522:
- if (r->info1522) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1522(ndr, NDR_SCALARS, r->info1522));
- }
- break;
-
- case 1523:
- if (r->info1523) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1523(ndr, NDR_SCALARS, r->info1523));
- }
- break;
-
- case 1524:
- if (r->info1524) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1524(ndr, NDR_SCALARS, r->info1524));
- }
- break;
-
- case 1525:
- if (r->info1525) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1525(ndr, NDR_SCALARS, r->info1525));
- }
- break;
-
- case 1528:
- if (r->info1528) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1528(ndr, NDR_SCALARS, r->info1528));
- }
- break;
-
- case 1529:
- if (r->info1529) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1529(ndr, NDR_SCALARS, r->info1529));
- }
- break;
-
- case 1530:
- if (r->info1530) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1530(ndr, NDR_SCALARS, r->info1530));
- }
- break;
-
- case 1533:
- if (r->info1533) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1533(ndr, NDR_SCALARS, r->info1533));
- }
- break;
-
- case 1534:
- if (r->info1534) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1534(ndr, NDR_SCALARS, r->info1534));
- }
- break;
-
- case 1535:
- if (r->info1535) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1535(ndr, NDR_SCALARS, r->info1535));
- }
- break;
-
- case 1536:
- if (r->info1536) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1536(ndr, NDR_SCALARS, r->info1536));
- }
- break;
-
- case 1537:
- if (r->info1537) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1537(ndr, NDR_SCALARS, r->info1537));
- }
- break;
-
- case 1538:
- if (r->info1538) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1538(ndr, NDR_SCALARS, r->info1538));
- }
- break;
-
- case 1539:
- if (r->info1539) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1539(ndr, NDR_SCALARS, r->info1539));
- }
- break;
-
- case 1540:
- if (r->info1540) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1540(ndr, NDR_SCALARS, r->info1540));
- }
- break;
-
- case 1541:
- if (r->info1541) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1541(ndr, NDR_SCALARS, r->info1541));
- }
- break;
-
- case 1542:
- if (r->info1542) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1542(ndr, NDR_SCALARS, r->info1542));
- }
- break;
-
- case 1543:
- if (r->info1543) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1543(ndr, NDR_SCALARS, r->info1543));
- }
- break;
-
- case 1544:
- if (r->info1544) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1544(ndr, NDR_SCALARS, r->info1544));
- }
- break;
-
- case 1545:
- if (r->info1545) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1545(ndr, NDR_SCALARS, r->info1545));
- }
- break;
-
- case 1546:
- if (r->info1546) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1546(ndr, NDR_SCALARS, r->info1546));
- }
- break;
-
- case 1547:
- if (r->info1547) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1547(ndr, NDR_SCALARS, r->info1547));
- }
- break;
-
- case 1548:
- if (r->info1548) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1548(ndr, NDR_SCALARS, r->info1548));
- }
- break;
-
- case 1549:
- if (r->info1549) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1549(ndr, NDR_SCALARS, r->info1549));
- }
- break;
-
- case 1550:
- if (r->info1550) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1550(ndr, NDR_SCALARS, r->info1550));
- }
- break;
-
- case 1552:
- if (r->info1552) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1552(ndr, NDR_SCALARS, r->info1552));
- }
- break;
-
- case 1553:
- if (r->info1553) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1553(ndr, NDR_SCALARS, r->info1553));
- }
- break;
-
- case 1554:
- if (r->info1554) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1554(ndr, NDR_SCALARS, r->info1554));
- }
- break;
-
- case 1555:
- if (r->info1555) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1555(ndr, NDR_SCALARS, r->info1555));
- }
- break;
-
- case 1556:
- if (r->info1556) {
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo1556(ndr, NDR_SCALARS, r->info1556));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvInfo(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetSrvInfo *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_info100_0;
- TALLOC_CTX *_mem_save_info101_0;
- TALLOC_CTX *_mem_save_info102_0;
- TALLOC_CTX *_mem_save_info402_0;
- TALLOC_CTX *_mem_save_info403_0;
- TALLOC_CTX *_mem_save_info502_0;
- TALLOC_CTX *_mem_save_info503_0;
- TALLOC_CTX *_mem_save_info599_0;
- TALLOC_CTX *_mem_save_info1005_0;
- TALLOC_CTX *_mem_save_info1010_0;
- TALLOC_CTX *_mem_save_info1016_0;
- TALLOC_CTX *_mem_save_info1017_0;
- TALLOC_CTX *_mem_save_info1018_0;
- TALLOC_CTX *_mem_save_info1107_0;
- TALLOC_CTX *_mem_save_info1501_0;
- TALLOC_CTX *_mem_save_info1502_0;
- TALLOC_CTX *_mem_save_info1503_0;
- TALLOC_CTX *_mem_save_info1506_0;
- TALLOC_CTX *_mem_save_info1509_0;
- TALLOC_CTX *_mem_save_info1510_0;
- TALLOC_CTX *_mem_save_info1511_0;
- TALLOC_CTX *_mem_save_info1512_0;
- TALLOC_CTX *_mem_save_info1513_0;
- TALLOC_CTX *_mem_save_info1514_0;
- TALLOC_CTX *_mem_save_info1515_0;
- TALLOC_CTX *_mem_save_info1516_0;
- TALLOC_CTX *_mem_save_info1518_0;
- TALLOC_CTX *_mem_save_info1520_0;
- TALLOC_CTX *_mem_save_info1521_0;
- TALLOC_CTX *_mem_save_info1522_0;
- TALLOC_CTX *_mem_save_info1523_0;
- TALLOC_CTX *_mem_save_info1524_0;
- TALLOC_CTX *_mem_save_info1525_0;
- TALLOC_CTX *_mem_save_info1528_0;
- TALLOC_CTX *_mem_save_info1529_0;
- TALLOC_CTX *_mem_save_info1530_0;
- TALLOC_CTX *_mem_save_info1533_0;
- TALLOC_CTX *_mem_save_info1534_0;
- TALLOC_CTX *_mem_save_info1535_0;
- TALLOC_CTX *_mem_save_info1536_0;
- TALLOC_CTX *_mem_save_info1537_0;
- TALLOC_CTX *_mem_save_info1538_0;
- TALLOC_CTX *_mem_save_info1539_0;
- TALLOC_CTX *_mem_save_info1540_0;
- TALLOC_CTX *_mem_save_info1541_0;
- TALLOC_CTX *_mem_save_info1542_0;
- TALLOC_CTX *_mem_save_info1543_0;
- TALLOC_CTX *_mem_save_info1544_0;
- TALLOC_CTX *_mem_save_info1545_0;
- TALLOC_CTX *_mem_save_info1546_0;
- TALLOC_CTX *_mem_save_info1547_0;
- TALLOC_CTX *_mem_save_info1548_0;
- TALLOC_CTX *_mem_save_info1549_0;
- TALLOC_CTX *_mem_save_info1550_0;
- TALLOC_CTX *_mem_save_info1552_0;
- TALLOC_CTX *_mem_save_info1553_0;
- TALLOC_CTX *_mem_save_info1554_0;
- TALLOC_CTX *_mem_save_info1555_0;
- TALLOC_CTX *_mem_save_info1556_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 100: {
- uint32_t _ptr_info100;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info100));
- if (_ptr_info100) {
- NDR_PULL_ALLOC(ndr, r->info100);
- } else {
- r->info100 = NULL;
- }
- break; }
-
- case 101: {
- uint32_t _ptr_info101;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info101));
- if (_ptr_info101) {
- NDR_PULL_ALLOC(ndr, r->info101);
- } else {
- r->info101 = NULL;
- }
- break; }
-
- case 102: {
- uint32_t _ptr_info102;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info102));
- if (_ptr_info102) {
- NDR_PULL_ALLOC(ndr, r->info102);
- } else {
- r->info102 = NULL;
- }
- break; }
-
- case 402: {
- uint32_t _ptr_info402;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info402));
- if (_ptr_info402) {
- NDR_PULL_ALLOC(ndr, r->info402);
- } else {
- r->info402 = NULL;
- }
- break; }
-
- case 403: {
- uint32_t _ptr_info403;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info403));
- if (_ptr_info403) {
- NDR_PULL_ALLOC(ndr, r->info403);
- } else {
- r->info403 = NULL;
- }
- break; }
-
- case 502: {
- uint32_t _ptr_info502;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info502));
- if (_ptr_info502) {
- NDR_PULL_ALLOC(ndr, r->info502);
- } else {
- r->info502 = NULL;
- }
- break; }
-
- case 503: {
- uint32_t _ptr_info503;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info503));
- if (_ptr_info503) {
- NDR_PULL_ALLOC(ndr, r->info503);
- } else {
- r->info503 = NULL;
- }
- break; }
-
- case 599: {
- uint32_t _ptr_info599;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info599));
- if (_ptr_info599) {
- NDR_PULL_ALLOC(ndr, r->info599);
- } else {
- r->info599 = NULL;
- }
- break; }
-
- case 1005: {
- uint32_t _ptr_info1005;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1005));
- if (_ptr_info1005) {
- NDR_PULL_ALLOC(ndr, r->info1005);
- } else {
- r->info1005 = NULL;
- }
- break; }
-
- case 1010: {
- uint32_t _ptr_info1010;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1010));
- if (_ptr_info1010) {
- NDR_PULL_ALLOC(ndr, r->info1010);
- } else {
- r->info1010 = NULL;
- }
- break; }
-
- case 1016: {
- uint32_t _ptr_info1016;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1016));
- if (_ptr_info1016) {
- NDR_PULL_ALLOC(ndr, r->info1016);
- } else {
- r->info1016 = NULL;
- }
- break; }
-
- case 1017: {
- uint32_t _ptr_info1017;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1017));
- if (_ptr_info1017) {
- NDR_PULL_ALLOC(ndr, r->info1017);
- } else {
- r->info1017 = NULL;
- }
- break; }
-
- case 1018: {
- uint32_t _ptr_info1018;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1018));
- if (_ptr_info1018) {
- NDR_PULL_ALLOC(ndr, r->info1018);
- } else {
- r->info1018 = NULL;
- }
- break; }
-
- case 1107: {
- uint32_t _ptr_info1107;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1107));
- if (_ptr_info1107) {
- NDR_PULL_ALLOC(ndr, r->info1107);
- } else {
- r->info1107 = NULL;
- }
- break; }
-
- case 1501: {
- uint32_t _ptr_info1501;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1501));
- if (_ptr_info1501) {
- NDR_PULL_ALLOC(ndr, r->info1501);
- } else {
- r->info1501 = NULL;
- }
- break; }
-
- case 1502: {
- uint32_t _ptr_info1502;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1502));
- if (_ptr_info1502) {
- NDR_PULL_ALLOC(ndr, r->info1502);
- } else {
- r->info1502 = NULL;
- }
- break; }
-
- case 1503: {
- uint32_t _ptr_info1503;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1503));
- if (_ptr_info1503) {
- NDR_PULL_ALLOC(ndr, r->info1503);
- } else {
- r->info1503 = NULL;
- }
- break; }
-
- case 1506: {
- uint32_t _ptr_info1506;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1506));
- if (_ptr_info1506) {
- NDR_PULL_ALLOC(ndr, r->info1506);
- } else {
- r->info1506 = NULL;
- }
- break; }
-
- case 1509: {
- uint32_t _ptr_info1509;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1509));
- if (_ptr_info1509) {
- NDR_PULL_ALLOC(ndr, r->info1509);
- } else {
- r->info1509 = NULL;
- }
- break; }
-
- case 1510: {
- uint32_t _ptr_info1510;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1510));
- if (_ptr_info1510) {
- NDR_PULL_ALLOC(ndr, r->info1510);
- } else {
- r->info1510 = NULL;
- }
- break; }
-
- case 1511: {
- uint32_t _ptr_info1511;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1511));
- if (_ptr_info1511) {
- NDR_PULL_ALLOC(ndr, r->info1511);
- } else {
- r->info1511 = NULL;
- }
- break; }
-
- case 1512: {
- uint32_t _ptr_info1512;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1512));
- if (_ptr_info1512) {
- NDR_PULL_ALLOC(ndr, r->info1512);
- } else {
- r->info1512 = NULL;
- }
- break; }
-
- case 1513: {
- uint32_t _ptr_info1513;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1513));
- if (_ptr_info1513) {
- NDR_PULL_ALLOC(ndr, r->info1513);
- } else {
- r->info1513 = NULL;
- }
- break; }
-
- case 1514: {
- uint32_t _ptr_info1514;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1514));
- if (_ptr_info1514) {
- NDR_PULL_ALLOC(ndr, r->info1514);
- } else {
- r->info1514 = NULL;
- }
- break; }
-
- case 1515: {
- uint32_t _ptr_info1515;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1515));
- if (_ptr_info1515) {
- NDR_PULL_ALLOC(ndr, r->info1515);
- } else {
- r->info1515 = NULL;
- }
- break; }
-
- case 1516: {
- uint32_t _ptr_info1516;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1516));
- if (_ptr_info1516) {
- NDR_PULL_ALLOC(ndr, r->info1516);
- } else {
- r->info1516 = NULL;
- }
- break; }
-
- case 1518: {
- uint32_t _ptr_info1518;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1518));
- if (_ptr_info1518) {
- NDR_PULL_ALLOC(ndr, r->info1518);
- } else {
- r->info1518 = NULL;
- }
- break; }
-
- case 1520: {
- uint32_t _ptr_info1520;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1520));
- if (_ptr_info1520) {
- NDR_PULL_ALLOC(ndr, r->info1520);
- } else {
- r->info1520 = NULL;
- }
- break; }
-
- case 1521: {
- uint32_t _ptr_info1521;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1521));
- if (_ptr_info1521) {
- NDR_PULL_ALLOC(ndr, r->info1521);
- } else {
- r->info1521 = NULL;
- }
- break; }
-
- case 1522: {
- uint32_t _ptr_info1522;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1522));
- if (_ptr_info1522) {
- NDR_PULL_ALLOC(ndr, r->info1522);
- } else {
- r->info1522 = NULL;
- }
- break; }
-
- case 1523: {
- uint32_t _ptr_info1523;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1523));
- if (_ptr_info1523) {
- NDR_PULL_ALLOC(ndr, r->info1523);
- } else {
- r->info1523 = NULL;
- }
- break; }
-
- case 1524: {
- uint32_t _ptr_info1524;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1524));
- if (_ptr_info1524) {
- NDR_PULL_ALLOC(ndr, r->info1524);
- } else {
- r->info1524 = NULL;
- }
- break; }
-
- case 1525: {
- uint32_t _ptr_info1525;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1525));
- if (_ptr_info1525) {
- NDR_PULL_ALLOC(ndr, r->info1525);
- } else {
- r->info1525 = NULL;
- }
- break; }
-
- case 1528: {
- uint32_t _ptr_info1528;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1528));
- if (_ptr_info1528) {
- NDR_PULL_ALLOC(ndr, r->info1528);
- } else {
- r->info1528 = NULL;
- }
- break; }
-
- case 1529: {
- uint32_t _ptr_info1529;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1529));
- if (_ptr_info1529) {
- NDR_PULL_ALLOC(ndr, r->info1529);
- } else {
- r->info1529 = NULL;
- }
- break; }
-
- case 1530: {
- uint32_t _ptr_info1530;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1530));
- if (_ptr_info1530) {
- NDR_PULL_ALLOC(ndr, r->info1530);
- } else {
- r->info1530 = NULL;
- }
- break; }
-
- case 1533: {
- uint32_t _ptr_info1533;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1533));
- if (_ptr_info1533) {
- NDR_PULL_ALLOC(ndr, r->info1533);
- } else {
- r->info1533 = NULL;
- }
- break; }
-
- case 1534: {
- uint32_t _ptr_info1534;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1534));
- if (_ptr_info1534) {
- NDR_PULL_ALLOC(ndr, r->info1534);
- } else {
- r->info1534 = NULL;
- }
- break; }
-
- case 1535: {
- uint32_t _ptr_info1535;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1535));
- if (_ptr_info1535) {
- NDR_PULL_ALLOC(ndr, r->info1535);
- } else {
- r->info1535 = NULL;
- }
- break; }
-
- case 1536: {
- uint32_t _ptr_info1536;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1536));
- if (_ptr_info1536) {
- NDR_PULL_ALLOC(ndr, r->info1536);
- } else {
- r->info1536 = NULL;
- }
- break; }
-
- case 1537: {
- uint32_t _ptr_info1537;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1537));
- if (_ptr_info1537) {
- NDR_PULL_ALLOC(ndr, r->info1537);
- } else {
- r->info1537 = NULL;
- }
- break; }
-
- case 1538: {
- uint32_t _ptr_info1538;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1538));
- if (_ptr_info1538) {
- NDR_PULL_ALLOC(ndr, r->info1538);
- } else {
- r->info1538 = NULL;
- }
- break; }
-
- case 1539: {
- uint32_t _ptr_info1539;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1539));
- if (_ptr_info1539) {
- NDR_PULL_ALLOC(ndr, r->info1539);
- } else {
- r->info1539 = NULL;
- }
- break; }
-
- case 1540: {
- uint32_t _ptr_info1540;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1540));
- if (_ptr_info1540) {
- NDR_PULL_ALLOC(ndr, r->info1540);
- } else {
- r->info1540 = NULL;
- }
- break; }
-
- case 1541: {
- uint32_t _ptr_info1541;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1541));
- if (_ptr_info1541) {
- NDR_PULL_ALLOC(ndr, r->info1541);
- } else {
- r->info1541 = NULL;
- }
- break; }
-
- case 1542: {
- uint32_t _ptr_info1542;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1542));
- if (_ptr_info1542) {
- NDR_PULL_ALLOC(ndr, r->info1542);
- } else {
- r->info1542 = NULL;
- }
- break; }
-
- case 1543: {
- uint32_t _ptr_info1543;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1543));
- if (_ptr_info1543) {
- NDR_PULL_ALLOC(ndr, r->info1543);
- } else {
- r->info1543 = NULL;
- }
- break; }
-
- case 1544: {
- uint32_t _ptr_info1544;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1544));
- if (_ptr_info1544) {
- NDR_PULL_ALLOC(ndr, r->info1544);
- } else {
- r->info1544 = NULL;
- }
- break; }
-
- case 1545: {
- uint32_t _ptr_info1545;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1545));
- if (_ptr_info1545) {
- NDR_PULL_ALLOC(ndr, r->info1545);
- } else {
- r->info1545 = NULL;
- }
- break; }
-
- case 1546: {
- uint32_t _ptr_info1546;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1546));
- if (_ptr_info1546) {
- NDR_PULL_ALLOC(ndr, r->info1546);
- } else {
- r->info1546 = NULL;
- }
- break; }
-
- case 1547: {
- uint32_t _ptr_info1547;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1547));
- if (_ptr_info1547) {
- NDR_PULL_ALLOC(ndr, r->info1547);
- } else {
- r->info1547 = NULL;
- }
- break; }
-
- case 1548: {
- uint32_t _ptr_info1548;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1548));
- if (_ptr_info1548) {
- NDR_PULL_ALLOC(ndr, r->info1548);
- } else {
- r->info1548 = NULL;
- }
- break; }
-
- case 1549: {
- uint32_t _ptr_info1549;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1549));
- if (_ptr_info1549) {
- NDR_PULL_ALLOC(ndr, r->info1549);
- } else {
- r->info1549 = NULL;
- }
- break; }
-
- case 1550: {
- uint32_t _ptr_info1550;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1550));
- if (_ptr_info1550) {
- NDR_PULL_ALLOC(ndr, r->info1550);
- } else {
- r->info1550 = NULL;
- }
- break; }
-
- case 1552: {
- uint32_t _ptr_info1552;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1552));
- if (_ptr_info1552) {
- NDR_PULL_ALLOC(ndr, r->info1552);
- } else {
- r->info1552 = NULL;
- }
- break; }
-
- case 1553: {
- uint32_t _ptr_info1553;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1553));
- if (_ptr_info1553) {
- NDR_PULL_ALLOC(ndr, r->info1553);
- } else {
- r->info1553 = NULL;
- }
- break; }
-
- case 1554: {
- uint32_t _ptr_info1554;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1554));
- if (_ptr_info1554) {
- NDR_PULL_ALLOC(ndr, r->info1554);
- } else {
- r->info1554 = NULL;
- }
- break; }
-
- case 1555: {
- uint32_t _ptr_info1555;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1555));
- if (_ptr_info1555) {
- NDR_PULL_ALLOC(ndr, r->info1555);
- } else {
- r->info1555 = NULL;
- }
- break; }
-
- case 1556: {
- uint32_t _ptr_info1556;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1556));
- if (_ptr_info1556) {
- NDR_PULL_ALLOC(ndr, r->info1556);
- } else {
- r->info1556 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 100:
- if (r->info100) {
- _mem_save_info100_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info100, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo100(ndr, NDR_SCALARS|NDR_BUFFERS, r->info100));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info100_0, 0);
- }
- break;
-
- case 101:
- if (r->info101) {
- _mem_save_info101_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info101, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo101(ndr, NDR_SCALARS|NDR_BUFFERS, r->info101));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info101_0, 0);
- }
- break;
-
- case 102:
- if (r->info102) {
- _mem_save_info102_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info102, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo102(ndr, NDR_SCALARS|NDR_BUFFERS, r->info102));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info102_0, 0);
- }
- break;
-
- case 402:
- if (r->info402) {
- _mem_save_info402_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info402, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo402(ndr, NDR_SCALARS|NDR_BUFFERS, r->info402));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info402_0, 0);
- }
- break;
-
- case 403:
- if (r->info403) {
- _mem_save_info403_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info403, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo403(ndr, NDR_SCALARS|NDR_BUFFERS, r->info403));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info403_0, 0);
- }
- break;
-
- case 502:
- if (r->info502) {
- _mem_save_info502_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info502, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo502(ndr, NDR_SCALARS, r->info502));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info502_0, 0);
- }
- break;
-
- case 503:
- if (r->info503) {
- _mem_save_info503_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info503, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo503(ndr, NDR_SCALARS|NDR_BUFFERS, r->info503));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info503_0, 0);
- }
- break;
-
- case 599:
- if (r->info599) {
- _mem_save_info599_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info599, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo599(ndr, NDR_SCALARS|NDR_BUFFERS, r->info599));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info599_0, 0);
- }
- break;
-
- case 1005:
- if (r->info1005) {
- _mem_save_info1005_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1005, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1005(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1005));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1005_0, 0);
- }
- break;
-
- case 1010:
- if (r->info1010) {
- _mem_save_info1010_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1010, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1010(ndr, NDR_SCALARS, r->info1010));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1010_0, 0);
- }
- break;
-
- case 1016:
- if (r->info1016) {
- _mem_save_info1016_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1016, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1016(ndr, NDR_SCALARS, r->info1016));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1016_0, 0);
- }
- break;
-
- case 1017:
- if (r->info1017) {
- _mem_save_info1017_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1017, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1017(ndr, NDR_SCALARS, r->info1017));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1017_0, 0);
- }
- break;
-
- case 1018:
- if (r->info1018) {
- _mem_save_info1018_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1018, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1018(ndr, NDR_SCALARS, r->info1018));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1018_0, 0);
- }
- break;
-
- case 1107:
- if (r->info1107) {
- _mem_save_info1107_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1107, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1107(ndr, NDR_SCALARS, r->info1107));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1107_0, 0);
- }
- break;
-
- case 1501:
- if (r->info1501) {
- _mem_save_info1501_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1501, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1501(ndr, NDR_SCALARS, r->info1501));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1501_0, 0);
- }
- break;
-
- case 1502:
- if (r->info1502) {
- _mem_save_info1502_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1502, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1502(ndr, NDR_SCALARS, r->info1502));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1502_0, 0);
- }
- break;
-
- case 1503:
- if (r->info1503) {
- _mem_save_info1503_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1503, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1503(ndr, NDR_SCALARS, r->info1503));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1503_0, 0);
- }
- break;
-
- case 1506:
- if (r->info1506) {
- _mem_save_info1506_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1506, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1506(ndr, NDR_SCALARS, r->info1506));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1506_0, 0);
- }
- break;
-
- case 1509:
- if (r->info1509) {
- _mem_save_info1509_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1509, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1509(ndr, NDR_SCALARS, r->info1509));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1509_0, 0);
- }
- break;
-
- case 1510:
- if (r->info1510) {
- _mem_save_info1510_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1510, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1510(ndr, NDR_SCALARS, r->info1510));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1510_0, 0);
- }
- break;
-
- case 1511:
- if (r->info1511) {
- _mem_save_info1511_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1511, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1511(ndr, NDR_SCALARS, r->info1511));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1511_0, 0);
- }
- break;
-
- case 1512:
- if (r->info1512) {
- _mem_save_info1512_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1512, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1512(ndr, NDR_SCALARS, r->info1512));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1512_0, 0);
- }
- break;
-
- case 1513:
- if (r->info1513) {
- _mem_save_info1513_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1513, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1513(ndr, NDR_SCALARS, r->info1513));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1513_0, 0);
- }
- break;
-
- case 1514:
- if (r->info1514) {
- _mem_save_info1514_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1514, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1514(ndr, NDR_SCALARS, r->info1514));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1514_0, 0);
- }
- break;
-
- case 1515:
- if (r->info1515) {
- _mem_save_info1515_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1515, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1515(ndr, NDR_SCALARS, r->info1515));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1515_0, 0);
- }
- break;
-
- case 1516:
- if (r->info1516) {
- _mem_save_info1516_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1516, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1516(ndr, NDR_SCALARS, r->info1516));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1516_0, 0);
- }
- break;
-
- case 1518:
- if (r->info1518) {
- _mem_save_info1518_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1518, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1518(ndr, NDR_SCALARS, r->info1518));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1518_0, 0);
- }
- break;
-
- case 1520:
- if (r->info1520) {
- _mem_save_info1520_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1520, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1520(ndr, NDR_SCALARS, r->info1520));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1520_0, 0);
- }
- break;
-
- case 1521:
- if (r->info1521) {
- _mem_save_info1521_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1521, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1521(ndr, NDR_SCALARS, r->info1521));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1521_0, 0);
- }
- break;
-
- case 1522:
- if (r->info1522) {
- _mem_save_info1522_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1522, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1522(ndr, NDR_SCALARS, r->info1522));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1522_0, 0);
- }
- break;
-
- case 1523:
- if (r->info1523) {
- _mem_save_info1523_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1523, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1523(ndr, NDR_SCALARS, r->info1523));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1523_0, 0);
- }
- break;
-
- case 1524:
- if (r->info1524) {
- _mem_save_info1524_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1524, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1524(ndr, NDR_SCALARS, r->info1524));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1524_0, 0);
- }
- break;
-
- case 1525:
- if (r->info1525) {
- _mem_save_info1525_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1525, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1525(ndr, NDR_SCALARS, r->info1525));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1525_0, 0);
- }
- break;
-
- case 1528:
- if (r->info1528) {
- _mem_save_info1528_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1528, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1528(ndr, NDR_SCALARS, r->info1528));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1528_0, 0);
- }
- break;
-
- case 1529:
- if (r->info1529) {
- _mem_save_info1529_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1529, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1529(ndr, NDR_SCALARS, r->info1529));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1529_0, 0);
- }
- break;
-
- case 1530:
- if (r->info1530) {
- _mem_save_info1530_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1530, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1530(ndr, NDR_SCALARS, r->info1530));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1530_0, 0);
- }
- break;
-
- case 1533:
- if (r->info1533) {
- _mem_save_info1533_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1533, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1533(ndr, NDR_SCALARS, r->info1533));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1533_0, 0);
- }
- break;
-
- case 1534:
- if (r->info1534) {
- _mem_save_info1534_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1534, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1534(ndr, NDR_SCALARS, r->info1534));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1534_0, 0);
- }
- break;
-
- case 1535:
- if (r->info1535) {
- _mem_save_info1535_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1535, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1535(ndr, NDR_SCALARS, r->info1535));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1535_0, 0);
- }
- break;
-
- case 1536:
- if (r->info1536) {
- _mem_save_info1536_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1536, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1536(ndr, NDR_SCALARS, r->info1536));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1536_0, 0);
- }
- break;
-
- case 1537:
- if (r->info1537) {
- _mem_save_info1537_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1537, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1537(ndr, NDR_SCALARS, r->info1537));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1537_0, 0);
- }
- break;
-
- case 1538:
- if (r->info1538) {
- _mem_save_info1538_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1538, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1538(ndr, NDR_SCALARS, r->info1538));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1538_0, 0);
- }
- break;
-
- case 1539:
- if (r->info1539) {
- _mem_save_info1539_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1539, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1539(ndr, NDR_SCALARS, r->info1539));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1539_0, 0);
- }
- break;
-
- case 1540:
- if (r->info1540) {
- _mem_save_info1540_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1540, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1540(ndr, NDR_SCALARS, r->info1540));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1540_0, 0);
- }
- break;
-
- case 1541:
- if (r->info1541) {
- _mem_save_info1541_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1541, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1541(ndr, NDR_SCALARS, r->info1541));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1541_0, 0);
- }
- break;
-
- case 1542:
- if (r->info1542) {
- _mem_save_info1542_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1542, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1542(ndr, NDR_SCALARS, r->info1542));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1542_0, 0);
- }
- break;
-
- case 1543:
- if (r->info1543) {
- _mem_save_info1543_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1543, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1543(ndr, NDR_SCALARS, r->info1543));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1543_0, 0);
- }
- break;
-
- case 1544:
- if (r->info1544) {
- _mem_save_info1544_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1544, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1544(ndr, NDR_SCALARS, r->info1544));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1544_0, 0);
- }
- break;
-
- case 1545:
- if (r->info1545) {
- _mem_save_info1545_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1545, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1545(ndr, NDR_SCALARS, r->info1545));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1545_0, 0);
- }
- break;
-
- case 1546:
- if (r->info1546) {
- _mem_save_info1546_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1546, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1546(ndr, NDR_SCALARS, r->info1546));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1546_0, 0);
- }
- break;
-
- case 1547:
- if (r->info1547) {
- _mem_save_info1547_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1547, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1547(ndr, NDR_SCALARS, r->info1547));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1547_0, 0);
- }
- break;
-
- case 1548:
- if (r->info1548) {
- _mem_save_info1548_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1548, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1548(ndr, NDR_SCALARS, r->info1548));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1548_0, 0);
- }
- break;
-
- case 1549:
- if (r->info1549) {
- _mem_save_info1549_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1549, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1549(ndr, NDR_SCALARS, r->info1549));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1549_0, 0);
- }
- break;
-
- case 1550:
- if (r->info1550) {
- _mem_save_info1550_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1550, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1550(ndr, NDR_SCALARS, r->info1550));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1550_0, 0);
- }
- break;
-
- case 1552:
- if (r->info1552) {
- _mem_save_info1552_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1552, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1552(ndr, NDR_SCALARS, r->info1552));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1552_0, 0);
- }
- break;
-
- case 1553:
- if (r->info1553) {
- _mem_save_info1553_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1553, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1553(ndr, NDR_SCALARS, r->info1553));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1553_0, 0);
- }
- break;
-
- case 1554:
- if (r->info1554) {
- _mem_save_info1554_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1554, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1554(ndr, NDR_SCALARS, r->info1554));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1554_0, 0);
- }
- break;
-
- case 1555:
- if (r->info1555) {
- _mem_save_info1555_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1555, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1555(ndr, NDR_SCALARS, r->info1555));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1555_0, 0);
- }
- break;
-
- case 1556:
- if (r->info1556) {
- _mem_save_info1556_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->info1556, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo1556(ndr, NDR_SCALARS, r->info1556));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1556_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetSrvInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetSrvInfo");
- switch (level) {
- case 100:
- ndr_print_ptr(ndr, "info100", r->info100);
- ndr->depth++;
- if (r->info100) {
- ndr_print_srvsvc_NetSrvInfo100(ndr, "info100", r->info100);
- }
- ndr->depth--;
- break;
-
- case 101:
- ndr_print_ptr(ndr, "info101", r->info101);
- ndr->depth++;
- if (r->info101) {
- ndr_print_srvsvc_NetSrvInfo101(ndr, "info101", r->info101);
- }
- ndr->depth--;
- break;
-
- case 102:
- ndr_print_ptr(ndr, "info102", r->info102);
- ndr->depth++;
- if (r->info102) {
- ndr_print_srvsvc_NetSrvInfo102(ndr, "info102", r->info102);
- }
- ndr->depth--;
- break;
-
- case 402:
- ndr_print_ptr(ndr, "info402", r->info402);
- ndr->depth++;
- if (r->info402) {
- ndr_print_srvsvc_NetSrvInfo402(ndr, "info402", r->info402);
- }
- ndr->depth--;
- break;
-
- case 403:
- ndr_print_ptr(ndr, "info403", r->info403);
- ndr->depth++;
- if (r->info403) {
- ndr_print_srvsvc_NetSrvInfo403(ndr, "info403", r->info403);
- }
- ndr->depth--;
- break;
-
- case 502:
- ndr_print_ptr(ndr, "info502", r->info502);
- ndr->depth++;
- if (r->info502) {
- ndr_print_srvsvc_NetSrvInfo502(ndr, "info502", r->info502);
- }
- ndr->depth--;
- break;
-
- case 503:
- ndr_print_ptr(ndr, "info503", r->info503);
- ndr->depth++;
- if (r->info503) {
- ndr_print_srvsvc_NetSrvInfo503(ndr, "info503", r->info503);
- }
- ndr->depth--;
- break;
-
- case 599:
- ndr_print_ptr(ndr, "info599", r->info599);
- ndr->depth++;
- if (r->info599) {
- ndr_print_srvsvc_NetSrvInfo599(ndr, "info599", r->info599);
- }
- ndr->depth--;
- break;
-
- case 1005:
- ndr_print_ptr(ndr, "info1005", r->info1005);
- ndr->depth++;
- if (r->info1005) {
- ndr_print_srvsvc_NetSrvInfo1005(ndr, "info1005", r->info1005);
- }
- ndr->depth--;
- break;
-
- case 1010:
- ndr_print_ptr(ndr, "info1010", r->info1010);
- ndr->depth++;
- if (r->info1010) {
- ndr_print_srvsvc_NetSrvInfo1010(ndr, "info1010", r->info1010);
- }
- ndr->depth--;
- break;
-
- case 1016:
- ndr_print_ptr(ndr, "info1016", r->info1016);
- ndr->depth++;
- if (r->info1016) {
- ndr_print_srvsvc_NetSrvInfo1016(ndr, "info1016", r->info1016);
- }
- ndr->depth--;
- break;
-
- case 1017:
- ndr_print_ptr(ndr, "info1017", r->info1017);
- ndr->depth++;
- if (r->info1017) {
- ndr_print_srvsvc_NetSrvInfo1017(ndr, "info1017", r->info1017);
- }
- ndr->depth--;
- break;
-
- case 1018:
- ndr_print_ptr(ndr, "info1018", r->info1018);
- ndr->depth++;
- if (r->info1018) {
- ndr_print_srvsvc_NetSrvInfo1018(ndr, "info1018", r->info1018);
- }
- ndr->depth--;
- break;
-
- case 1107:
- ndr_print_ptr(ndr, "info1107", r->info1107);
- ndr->depth++;
- if (r->info1107) {
- ndr_print_srvsvc_NetSrvInfo1107(ndr, "info1107", r->info1107);
- }
- ndr->depth--;
- break;
-
- case 1501:
- ndr_print_ptr(ndr, "info1501", r->info1501);
- ndr->depth++;
- if (r->info1501) {
- ndr_print_srvsvc_NetSrvInfo1501(ndr, "info1501", r->info1501);
- }
- ndr->depth--;
- break;
-
- case 1502:
- ndr_print_ptr(ndr, "info1502", r->info1502);
- ndr->depth++;
- if (r->info1502) {
- ndr_print_srvsvc_NetSrvInfo1502(ndr, "info1502", r->info1502);
- }
- ndr->depth--;
- break;
-
- case 1503:
- ndr_print_ptr(ndr, "info1503", r->info1503);
- ndr->depth++;
- if (r->info1503) {
- ndr_print_srvsvc_NetSrvInfo1503(ndr, "info1503", r->info1503);
- }
- ndr->depth--;
- break;
-
- case 1506:
- ndr_print_ptr(ndr, "info1506", r->info1506);
- ndr->depth++;
- if (r->info1506) {
- ndr_print_srvsvc_NetSrvInfo1506(ndr, "info1506", r->info1506);
- }
- ndr->depth--;
- break;
-
- case 1509:
- ndr_print_ptr(ndr, "info1509", r->info1509);
- ndr->depth++;
- if (r->info1509) {
- ndr_print_srvsvc_NetSrvInfo1509(ndr, "info1509", r->info1509);
- }
- ndr->depth--;
- break;
-
- case 1510:
- ndr_print_ptr(ndr, "info1510", r->info1510);
- ndr->depth++;
- if (r->info1510) {
- ndr_print_srvsvc_NetSrvInfo1510(ndr, "info1510", r->info1510);
- }
- ndr->depth--;
- break;
-
- case 1511:
- ndr_print_ptr(ndr, "info1511", r->info1511);
- ndr->depth++;
- if (r->info1511) {
- ndr_print_srvsvc_NetSrvInfo1511(ndr, "info1511", r->info1511);
- }
- ndr->depth--;
- break;
-
- case 1512:
- ndr_print_ptr(ndr, "info1512", r->info1512);
- ndr->depth++;
- if (r->info1512) {
- ndr_print_srvsvc_NetSrvInfo1512(ndr, "info1512", r->info1512);
- }
- ndr->depth--;
- break;
-
- case 1513:
- ndr_print_ptr(ndr, "info1513", r->info1513);
- ndr->depth++;
- if (r->info1513) {
- ndr_print_srvsvc_NetSrvInfo1513(ndr, "info1513", r->info1513);
- }
- ndr->depth--;
- break;
-
- case 1514:
- ndr_print_ptr(ndr, "info1514", r->info1514);
- ndr->depth++;
- if (r->info1514) {
- ndr_print_srvsvc_NetSrvInfo1514(ndr, "info1514", r->info1514);
- }
- ndr->depth--;
- break;
-
- case 1515:
- ndr_print_ptr(ndr, "info1515", r->info1515);
- ndr->depth++;
- if (r->info1515) {
- ndr_print_srvsvc_NetSrvInfo1515(ndr, "info1515", r->info1515);
- }
- ndr->depth--;
- break;
-
- case 1516:
- ndr_print_ptr(ndr, "info1516", r->info1516);
- ndr->depth++;
- if (r->info1516) {
- ndr_print_srvsvc_NetSrvInfo1516(ndr, "info1516", r->info1516);
- }
- ndr->depth--;
- break;
-
- case 1518:
- ndr_print_ptr(ndr, "info1518", r->info1518);
- ndr->depth++;
- if (r->info1518) {
- ndr_print_srvsvc_NetSrvInfo1518(ndr, "info1518", r->info1518);
- }
- ndr->depth--;
- break;
-
- case 1520:
- ndr_print_ptr(ndr, "info1520", r->info1520);
- ndr->depth++;
- if (r->info1520) {
- ndr_print_srvsvc_NetSrvInfo1520(ndr, "info1520", r->info1520);
- }
- ndr->depth--;
- break;
-
- case 1521:
- ndr_print_ptr(ndr, "info1521", r->info1521);
- ndr->depth++;
- if (r->info1521) {
- ndr_print_srvsvc_NetSrvInfo1521(ndr, "info1521", r->info1521);
- }
- ndr->depth--;
- break;
-
- case 1522:
- ndr_print_ptr(ndr, "info1522", r->info1522);
- ndr->depth++;
- if (r->info1522) {
- ndr_print_srvsvc_NetSrvInfo1522(ndr, "info1522", r->info1522);
- }
- ndr->depth--;
- break;
-
- case 1523:
- ndr_print_ptr(ndr, "info1523", r->info1523);
- ndr->depth++;
- if (r->info1523) {
- ndr_print_srvsvc_NetSrvInfo1523(ndr, "info1523", r->info1523);
- }
- ndr->depth--;
- break;
-
- case 1524:
- ndr_print_ptr(ndr, "info1524", r->info1524);
- ndr->depth++;
- if (r->info1524) {
- ndr_print_srvsvc_NetSrvInfo1524(ndr, "info1524", r->info1524);
- }
- ndr->depth--;
- break;
-
- case 1525:
- ndr_print_ptr(ndr, "info1525", r->info1525);
- ndr->depth++;
- if (r->info1525) {
- ndr_print_srvsvc_NetSrvInfo1525(ndr, "info1525", r->info1525);
- }
- ndr->depth--;
- break;
-
- case 1528:
- ndr_print_ptr(ndr, "info1528", r->info1528);
- ndr->depth++;
- if (r->info1528) {
- ndr_print_srvsvc_NetSrvInfo1528(ndr, "info1528", r->info1528);
- }
- ndr->depth--;
- break;
-
- case 1529:
- ndr_print_ptr(ndr, "info1529", r->info1529);
- ndr->depth++;
- if (r->info1529) {
- ndr_print_srvsvc_NetSrvInfo1529(ndr, "info1529", r->info1529);
- }
- ndr->depth--;
- break;
-
- case 1530:
- ndr_print_ptr(ndr, "info1530", r->info1530);
- ndr->depth++;
- if (r->info1530) {
- ndr_print_srvsvc_NetSrvInfo1530(ndr, "info1530", r->info1530);
- }
- ndr->depth--;
- break;
-
- case 1533:
- ndr_print_ptr(ndr, "info1533", r->info1533);
- ndr->depth++;
- if (r->info1533) {
- ndr_print_srvsvc_NetSrvInfo1533(ndr, "info1533", r->info1533);
- }
- ndr->depth--;
- break;
-
- case 1534:
- ndr_print_ptr(ndr, "info1534", r->info1534);
- ndr->depth++;
- if (r->info1534) {
- ndr_print_srvsvc_NetSrvInfo1534(ndr, "info1534", r->info1534);
- }
- ndr->depth--;
- break;
-
- case 1535:
- ndr_print_ptr(ndr, "info1535", r->info1535);
- ndr->depth++;
- if (r->info1535) {
- ndr_print_srvsvc_NetSrvInfo1535(ndr, "info1535", r->info1535);
- }
- ndr->depth--;
- break;
-
- case 1536:
- ndr_print_ptr(ndr, "info1536", r->info1536);
- ndr->depth++;
- if (r->info1536) {
- ndr_print_srvsvc_NetSrvInfo1536(ndr, "info1536", r->info1536);
- }
- ndr->depth--;
- break;
-
- case 1537:
- ndr_print_ptr(ndr, "info1537", r->info1537);
- ndr->depth++;
- if (r->info1537) {
- ndr_print_srvsvc_NetSrvInfo1537(ndr, "info1537", r->info1537);
- }
- ndr->depth--;
- break;
-
- case 1538:
- ndr_print_ptr(ndr, "info1538", r->info1538);
- ndr->depth++;
- if (r->info1538) {
- ndr_print_srvsvc_NetSrvInfo1538(ndr, "info1538", r->info1538);
- }
- ndr->depth--;
- break;
-
- case 1539:
- ndr_print_ptr(ndr, "info1539", r->info1539);
- ndr->depth++;
- if (r->info1539) {
- ndr_print_srvsvc_NetSrvInfo1539(ndr, "info1539", r->info1539);
- }
- ndr->depth--;
- break;
-
- case 1540:
- ndr_print_ptr(ndr, "info1540", r->info1540);
- ndr->depth++;
- if (r->info1540) {
- ndr_print_srvsvc_NetSrvInfo1540(ndr, "info1540", r->info1540);
- }
- ndr->depth--;
- break;
-
- case 1541:
- ndr_print_ptr(ndr, "info1541", r->info1541);
- ndr->depth++;
- if (r->info1541) {
- ndr_print_srvsvc_NetSrvInfo1541(ndr, "info1541", r->info1541);
- }
- ndr->depth--;
- break;
-
- case 1542:
- ndr_print_ptr(ndr, "info1542", r->info1542);
- ndr->depth++;
- if (r->info1542) {
- ndr_print_srvsvc_NetSrvInfo1542(ndr, "info1542", r->info1542);
- }
- ndr->depth--;
- break;
-
- case 1543:
- ndr_print_ptr(ndr, "info1543", r->info1543);
- ndr->depth++;
- if (r->info1543) {
- ndr_print_srvsvc_NetSrvInfo1543(ndr, "info1543", r->info1543);
- }
- ndr->depth--;
- break;
-
- case 1544:
- ndr_print_ptr(ndr, "info1544", r->info1544);
- ndr->depth++;
- if (r->info1544) {
- ndr_print_srvsvc_NetSrvInfo1544(ndr, "info1544", r->info1544);
- }
- ndr->depth--;
- break;
-
- case 1545:
- ndr_print_ptr(ndr, "info1545", r->info1545);
- ndr->depth++;
- if (r->info1545) {
- ndr_print_srvsvc_NetSrvInfo1545(ndr, "info1545", r->info1545);
- }
- ndr->depth--;
- break;
-
- case 1546:
- ndr_print_ptr(ndr, "info1546", r->info1546);
- ndr->depth++;
- if (r->info1546) {
- ndr_print_srvsvc_NetSrvInfo1546(ndr, "info1546", r->info1546);
- }
- ndr->depth--;
- break;
-
- case 1547:
- ndr_print_ptr(ndr, "info1547", r->info1547);
- ndr->depth++;
- if (r->info1547) {
- ndr_print_srvsvc_NetSrvInfo1547(ndr, "info1547", r->info1547);
- }
- ndr->depth--;
- break;
-
- case 1548:
- ndr_print_ptr(ndr, "info1548", r->info1548);
- ndr->depth++;
- if (r->info1548) {
- ndr_print_srvsvc_NetSrvInfo1548(ndr, "info1548", r->info1548);
- }
- ndr->depth--;
- break;
-
- case 1549:
- ndr_print_ptr(ndr, "info1549", r->info1549);
- ndr->depth++;
- if (r->info1549) {
- ndr_print_srvsvc_NetSrvInfo1549(ndr, "info1549", r->info1549);
- }
- ndr->depth--;
- break;
-
- case 1550:
- ndr_print_ptr(ndr, "info1550", r->info1550);
- ndr->depth++;
- if (r->info1550) {
- ndr_print_srvsvc_NetSrvInfo1550(ndr, "info1550", r->info1550);
- }
- ndr->depth--;
- break;
-
- case 1552:
- ndr_print_ptr(ndr, "info1552", r->info1552);
- ndr->depth++;
- if (r->info1552) {
- ndr_print_srvsvc_NetSrvInfo1552(ndr, "info1552", r->info1552);
- }
- ndr->depth--;
- break;
-
- case 1553:
- ndr_print_ptr(ndr, "info1553", r->info1553);
- ndr->depth++;
- if (r->info1553) {
- ndr_print_srvsvc_NetSrvInfo1553(ndr, "info1553", r->info1553);
- }
- ndr->depth--;
- break;
-
- case 1554:
- ndr_print_ptr(ndr, "info1554", r->info1554);
- ndr->depth++;
- if (r->info1554) {
- ndr_print_srvsvc_NetSrvInfo1554(ndr, "info1554", r->info1554);
- }
- ndr->depth--;
- break;
-
- case 1555:
- ndr_print_ptr(ndr, "info1555", r->info1555);
- ndr->depth++;
- if (r->info1555) {
- ndr_print_srvsvc_NetSrvInfo1555(ndr, "info1555", r->info1555);
- }
- ndr->depth--;
- break;
-
- case 1556:
- ndr_print_ptr(ndr, "info1556", r->info1556);
- ndr->depth++;
- if (r->info1556) {
- ndr_print_srvsvc_NetSrvInfo1556(ndr, "info1556", r->info1556);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetDiskInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetDiskInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_LEN4);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->disk));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetDiskInfo0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetDiskInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_LEN4);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->disk));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetDiskInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetDiskInfo0 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetDiskInfo0");
- ndr->depth++;
- ndr_print_string(ndr, "disk", r->disk);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetDiskInfo(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetDiskInfo *r)
-{
- uint32_t cntr_disks_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->disks));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->disks) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_disks_1 = 0; cntr_disks_1 < r->count; cntr_disks_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetDiskInfo0(ndr, NDR_SCALARS, &r->disks[cntr_disks_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetDiskInfo(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetDiskInfo *r)
-{
- uint32_t _ptr_disks;
- uint32_t cntr_disks_1;
- TALLOC_CTX *_mem_save_disks_0;
- TALLOC_CTX *_mem_save_disks_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_disks));
- if (_ptr_disks) {
- NDR_PULL_ALLOC(ndr, r->disks);
- } else {
- r->disks = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->disks) {
- _mem_save_disks_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->disks, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->disks));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->disks));
- if (ndr_get_array_length(ndr, &r->disks) > ndr_get_array_size(ndr, &r->disks)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->disks), ndr_get_array_length(ndr, &r->disks));
- }
- NDR_PULL_ALLOC_N(ndr, r->disks, ndr_get_array_size(ndr, &r->disks));
- _mem_save_disks_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->disks, 0);
- for (cntr_disks_1 = 0; cntr_disks_1 < r->count; cntr_disks_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetDiskInfo0(ndr, NDR_SCALARS, &r->disks[cntr_disks_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_disks_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_disks_0, 0);
- }
- if (r->disks) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->disks, r->count));
- }
- if (r->disks) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->disks, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetDiskInfo(struct ndr_print *ndr, const char *name, const struct srvsvc_NetDiskInfo *r)
-{
- uint32_t cntr_disks_1;
- ndr_print_struct(ndr, name, "srvsvc_NetDiskInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "disks", r->disks);
- ndr->depth++;
- if (r->disks) {
- ndr->print(ndr, "%s: ARRAY(%d)", "disks", r->count);
- ndr->depth++;
- for (cntr_disks_1=0;cntr_disks_1<r->count;cntr_disks_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_disks_1);
- if (idx_1) {
- ndr_print_srvsvc_NetDiskInfo0(ndr, "disks", &r->disks[cntr_disks_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_Statistics(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_Statistics *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->fopens));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->devopens));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->jobsqueued));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sopens));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->stimeouts));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serrorout));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pwerrors));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->permerrors));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->syserrors));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bytessent_low));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bytessent_high));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bytesrcvd_low));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bytesrcvd_high));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->avresponse));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reqbufneed));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bigbufneed));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_Statistics(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_Statistics *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->fopens));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->devopens));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->jobsqueued));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sopens));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->stimeouts));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serrorout));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pwerrors));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->permerrors));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->syserrors));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bytessent_low));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bytessent_high));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bytesrcvd_low));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bytesrcvd_high));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->avresponse));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reqbufneed));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bigbufneed));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_Statistics(struct ndr_print *ndr, const char *name, const struct srvsvc_Statistics *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_Statistics");
- ndr->depth++;
- ndr_print_uint32(ndr, "start", r->start);
- ndr_print_uint32(ndr, "fopens", r->fopens);
- ndr_print_uint32(ndr, "devopens", r->devopens);
- ndr_print_uint32(ndr, "jobsqueued", r->jobsqueued);
- ndr_print_uint32(ndr, "sopens", r->sopens);
- ndr_print_uint32(ndr, "stimeouts", r->stimeouts);
- ndr_print_uint32(ndr, "serrorout", r->serrorout);
- ndr_print_uint32(ndr, "pwerrors", r->pwerrors);
- ndr_print_uint32(ndr, "permerrors", r->permerrors);
- ndr_print_uint32(ndr, "syserrors", r->syserrors);
- ndr_print_uint32(ndr, "bytessent_low", r->bytessent_low);
- ndr_print_uint32(ndr, "bytessent_high", r->bytessent_high);
- ndr_print_uint32(ndr, "bytesrcvd_low", r->bytesrcvd_low);
- ndr_print_uint32(ndr, "bytesrcvd_high", r->bytesrcvd_high);
- ndr_print_uint32(ndr, "avresponse", r->avresponse);
- ndr_print_uint32(ndr, "reqbufneed", r->reqbufneed);
- ndr_print_uint32(ndr, "bigbufneed", r->bigbufneed);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportInfo0 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->vcs));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->addr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->net_addr));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->addr, r->addr_len));
- }
- if (r->net_addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->net_addr, ndr_charset_length(r->net_addr, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportInfo0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportInfo0 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_addr;
- TALLOC_CTX *_mem_save_addr_0;
- uint32_t _ptr_net_addr;
- TALLOC_CTX *_mem_save_net_addr_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->vcs));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_addr));
- if (_ptr_addr) {
- NDR_PULL_ALLOC(ndr, r->addr);
- } else {
- r->addr = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->addr_len));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_net_addr));
- if (_ptr_net_addr) {
- NDR_PULL_ALLOC(ndr, r->net_addr);
- } else {
- r->net_addr = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->addr) {
- _mem_save_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->addr));
- NDR_PULL_ALLOC_N(ndr, r->addr, ndr_get_array_size(ndr, &r->addr));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->addr, ndr_get_array_size(ndr, &r->addr)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addr_0, 0);
- }
- if (r->net_addr) {
- _mem_save_net_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->net_addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->net_addr));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->net_addr));
- if (ndr_get_array_length(ndr, &r->net_addr) > ndr_get_array_size(ndr, &r->net_addr)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->net_addr), ndr_get_array_length(ndr, &r->net_addr));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->net_addr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_net_addr_0, 0);
- }
- if (r->addr) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo0 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetTransportInfo0");
- ndr->depth++;
- ndr_print_uint32(ndr, "vcs", r->vcs);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "addr", r->addr);
- ndr->depth++;
- if (r->addr) {
- ndr_print_array_uint8(ndr, "addr", r->addr, r->addr_len);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "addr_len", r->addr_len);
- ndr_print_ptr(ndr, "net_addr", r->net_addr);
- ndr->depth++;
- if (r->net_addr) {
- ndr_print_string(ndr, "net_addr", r->net_addr);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportCtr0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportCtr0 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportCtr0(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportCtr0 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr0 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetTransportCtr0");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetTransportInfo0(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportInfo1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportInfo1 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->vcs));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->addr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->net_addr));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->addr, r->addr_len));
- }
- if (r->net_addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->net_addr, ndr_charset_length(r->net_addr, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportInfo1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportInfo1 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_addr;
- TALLOC_CTX *_mem_save_addr_0;
- uint32_t _ptr_net_addr;
- TALLOC_CTX *_mem_save_net_addr_0;
- uint32_t _ptr_domain;
- TALLOC_CTX *_mem_save_domain_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->vcs));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_addr));
- if (_ptr_addr) {
- NDR_PULL_ALLOC(ndr, r->addr);
- } else {
- r->addr = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->addr_len));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_net_addr));
- if (_ptr_net_addr) {
- NDR_PULL_ALLOC(ndr, r->net_addr);
- } else {
- r->net_addr = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->addr) {
- _mem_save_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->addr));
- NDR_PULL_ALLOC_N(ndr, r->addr, ndr_get_array_size(ndr, &r->addr));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->addr, ndr_get_array_size(ndr, &r->addr)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addr_0, 0);
- }
- if (r->net_addr) {
- _mem_save_net_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->net_addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->net_addr));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->net_addr));
- if (ndr_get_array_length(ndr, &r->net_addr) > ndr_get_array_size(ndr, &r->net_addr)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->net_addr), ndr_get_array_length(ndr, &r->net_addr));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->net_addr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_net_addr_0, 0);
- }
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- if (r->addr) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo1 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetTransportInfo1");
- ndr->depth++;
- ndr_print_uint32(ndr, "vcs", r->vcs);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "addr", r->addr);
- ndr->depth++;
- if (r->addr) {
- ndr_print_array_uint8(ndr, "addr", r->addr, r->addr_len);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "addr_len", r->addr_len);
- ndr_print_ptr(ndr, "net_addr", r->net_addr);
- ndr->depth++;
- if (r->net_addr) {
- ndr_print_string(ndr, "net_addr", r->net_addr);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportCtr1(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportCtr1 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportCtr1(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportCtr1 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr1 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetTransportCtr1");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetTransportInfo1(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportInfo2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->vcs));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->addr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->net_addr));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->addr, r->addr_len));
- }
- if (r->net_addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->net_addr, ndr_charset_length(r->net_addr, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportInfo2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportInfo2 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_addr;
- TALLOC_CTX *_mem_save_addr_0;
- uint32_t _ptr_net_addr;
- TALLOC_CTX *_mem_save_net_addr_0;
- uint32_t _ptr_domain;
- TALLOC_CTX *_mem_save_domain_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->vcs));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_addr));
- if (_ptr_addr) {
- NDR_PULL_ALLOC(ndr, r->addr);
- } else {
- r->addr = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->addr_len));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_net_addr));
- if (_ptr_net_addr) {
- NDR_PULL_ALLOC(ndr, r->net_addr);
- } else {
- r->net_addr = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->addr) {
- _mem_save_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->addr));
- NDR_PULL_ALLOC_N(ndr, r->addr, ndr_get_array_size(ndr, &r->addr));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->addr, ndr_get_array_size(ndr, &r->addr)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addr_0, 0);
- }
- if (r->net_addr) {
- _mem_save_net_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->net_addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->net_addr));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->net_addr));
- if (ndr_get_array_length(ndr, &r->net_addr) > ndr_get_array_size(ndr, &r->net_addr)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->net_addr), ndr_get_array_length(ndr, &r->net_addr));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->net_addr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_net_addr_0, 0);
- }
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- if (r->addr) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo2 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetTransportInfo2");
- ndr->depth++;
- ndr_print_uint32(ndr, "vcs", r->vcs);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "addr", r->addr);
- ndr->depth++;
- if (r->addr) {
- ndr_print_array_uint8(ndr, "addr", r->addr, r->addr_len);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "addr_len", r->addr_len);
- ndr_print_ptr(ndr, "net_addr", r->net_addr);
- ndr->depth++;
- if (r->net_addr) {
- ndr_print_string(ndr, "net_addr", r->net_addr);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportCtr2(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportCtr2 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportCtr2(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportCtr2 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr2 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetTransportCtr2");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetTransportInfo2(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportInfo3(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportInfo3 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->vcs));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->addr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->net_addr));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->unknown3, 256));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->addr_len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->addr, r->addr_len));
- }
- if (r->net_addr) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->net_addr, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->net_addr, ndr_charset_length(r->net_addr, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->domain) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportInfo3(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportInfo3 *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- uint32_t _ptr_addr;
- TALLOC_CTX *_mem_save_addr_0;
- uint32_t _ptr_net_addr;
- TALLOC_CTX *_mem_save_net_addr_0;
- uint32_t _ptr_domain;
- TALLOC_CTX *_mem_save_domain_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->vcs));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_addr));
- if (_ptr_addr) {
- NDR_PULL_ALLOC(ndr, r->addr);
- } else {
- r->addr = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->addr_len));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_net_addr));
- if (_ptr_net_addr) {
- NDR_PULL_ALLOC(ndr, r->net_addr);
- } else {
- r->net_addr = NULL;
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
- if (_ptr_domain) {
- NDR_PULL_ALLOC(ndr, r->domain);
- } else {
- r->domain = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->unknown3, 256));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->addr) {
- _mem_save_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->addr));
- NDR_PULL_ALLOC_N(ndr, r->addr, ndr_get_array_size(ndr, &r->addr));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->addr, ndr_get_array_size(ndr, &r->addr)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addr_0, 0);
- }
- if (r->net_addr) {
- _mem_save_net_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->net_addr, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->net_addr));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->net_addr));
- if (ndr_get_array_length(ndr, &r->net_addr) > ndr_get_array_size(ndr, &r->net_addr)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->net_addr), ndr_get_array_length(ndr, &r->net_addr));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->net_addr, ndr_get_array_length(ndr, &r->net_addr), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_net_addr_0, 0);
- }
- if (r->domain) {
- _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
- if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
- }
- if (r->addr) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo3 *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetTransportInfo3");
- ndr->depth++;
- ndr_print_uint32(ndr, "vcs", r->vcs);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "addr", r->addr);
- ndr->depth++;
- if (r->addr) {
- ndr_print_array_uint8(ndr, "addr", r->addr, r->addr_len);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "addr_len", r->addr_len);
- ndr_print_ptr(ndr, "net_addr", r->net_addr);
- ndr->depth++;
- if (r->net_addr) {
- ndr_print_string(ndr, "net_addr", r->net_addr);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "domain", r->domain);
- ndr->depth++;
- if (r->domain) {
- ndr_print_string(ndr, "domain", r->domain);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown1", r->unknown1);
- ndr_print_uint32(ndr, "unknown2", r->unknown2);
- ndr_print_array_uint8(ndr, "unknown3", r->unknown3, 256);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportCtr3(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportCtr3 *r)
-{
- uint32_t cntr_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo3(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo3(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportCtr3(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportCtr3 *r)
-{
- uint32_t _ptr_array;
- uint32_t cntr_array_1;
- TALLOC_CTX *_mem_save_array_0;
- TALLOC_CTX *_mem_save_array_1;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
- if (_ptr_array) {
- NDR_PULL_ALLOC(ndr, r->array);
- } else {
- r->array = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->array) {
- _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
- NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
- _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo3(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
- }
- for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo3(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
- }
- if (r->array) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr3 *r)
-{
- uint32_t cntr_array_1;
- ndr_print_struct(ndr, name, "srvsvc_NetTransportCtr3");
- ndr->depth++;
- ndr_print_uint32(ndr, "count", r->count);
- ndr_print_ptr(ndr, "array", r->array);
- ndr->depth++;
- if (r->array) {
- ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
- ndr->depth++;
- for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_array_1);
- if (idx_1) {
- ndr_print_srvsvc_NetTransportInfo3(ndr, "array", &r->array[cntr_array_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportCtr(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetTransportCtr *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr3));
- break;
-
- default:
- break;
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- if (r->ctr0) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- }
- break;
-
- case 1:
- if (r->ctr1) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- }
- break;
-
- case 2:
- if (r->ctr2) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- }
- break;
-
- case 3:
- if (r->ctr3) {
- NDR_CHECK(ndr_push_srvsvc_NetTransportCtr3(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr3));
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportCtr(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetTransportCtr *r)
-{
- int level;
- uint32_t _level;
- TALLOC_CTX *_mem_save_ctr0_0;
- TALLOC_CTX *_mem_save_ctr1_0;
- TALLOC_CTX *_mem_save_ctr2_0;
- TALLOC_CTX *_mem_save_ctr3_0;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- uint32_t _ptr_ctr0;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr0));
- if (_ptr_ctr0) {
- NDR_PULL_ALLOC(ndr, r->ctr0);
- } else {
- r->ctr0 = NULL;
- }
- break; }
-
- case 1: {
- uint32_t _ptr_ctr1;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
- if (_ptr_ctr1) {
- NDR_PULL_ALLOC(ndr, r->ctr1);
- } else {
- r->ctr1 = NULL;
- }
- break; }
-
- case 2: {
- uint32_t _ptr_ctr2;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr2));
- if (_ptr_ctr2) {
- NDR_PULL_ALLOC(ndr, r->ctr2);
- } else {
- r->ctr2 = NULL;
- }
- break; }
-
- case 3: {
- uint32_t _ptr_ctr3;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr3));
- if (_ptr_ctr3) {
- NDR_PULL_ALLOC(ndr, r->ctr3);
- } else {
- r->ctr3 = NULL;
- }
- break; }
-
- default: {
- break; }
-
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- if (r->ctr0) {
- _mem_save_ctr0_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr0, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr0(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr0));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr0_0, 0);
- }
- break;
-
- case 1:
- if (r->ctr1) {
- _mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
- }
- break;
-
- case 2:
- if (r->ctr2) {
- _mem_save_ctr2_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr2, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr2(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr2));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr2_0, 0);
- }
- break;
-
- case 3:
- if (r->ctr3) {
- _mem_save_ctr3_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->ctr3, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr3(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr3));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr3_0, 0);
- }
- break;
-
- default:
- break;
-
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetTransportCtr *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetTransportCtr");
- switch (level) {
- case 0:
- ndr_print_ptr(ndr, "ctr0", r->ctr0);
- ndr->depth++;
- if (r->ctr0) {
- ndr_print_srvsvc_NetTransportCtr0(ndr, "ctr0", r->ctr0);
- }
- ndr->depth--;
- break;
-
- case 1:
- ndr_print_ptr(ndr, "ctr1", r->ctr1);
- ndr->depth++;
- if (r->ctr1) {
- ndr_print_srvsvc_NetTransportCtr1(ndr, "ctr1", r->ctr1);
- }
- ndr->depth--;
- break;
-
- case 2:
- ndr_print_ptr(ndr, "ctr2", r->ctr2);
- ndr->depth++;
- if (r->ctr2) {
- ndr_print_srvsvc_NetTransportCtr2(ndr, "ctr2", r->ctr2);
- }
- ndr->depth--;
- break;
-
- case 3:
- ndr_print_ptr(ndr, "ctr3", r->ctr3);
- ndr->depth++;
- if (r->ctr3) {
- ndr_print_srvsvc_NetTransportCtr3(ndr, "ctr3", r->ctr3);
- }
- ndr->depth--;
- break;
-
- default:
- break;
-
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetRemoteTODInfo(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetRemoteTODInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->elapsed));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->msecs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->hours));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->mins));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->secs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->hunds));
- NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->timezone));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tinterval));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->day));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->month));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->year));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->weekday));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetRemoteTODInfo(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetRemoteTODInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->elapsed));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->msecs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->hours));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->mins));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->secs));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->hunds));
- NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->timezone));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tinterval));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->day));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->month));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->year));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->weekday));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetRemoteTODInfo(struct ndr_print *ndr, const char *name, const struct srvsvc_NetRemoteTODInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetRemoteTODInfo");
- ndr->depth++;
- ndr_print_uint32(ndr, "elapsed", r->elapsed);
- ndr_print_uint32(ndr, "msecs", r->msecs);
- ndr_print_uint32(ndr, "hours", r->hours);
- ndr_print_uint32(ndr, "mins", r->mins);
- ndr_print_uint32(ndr, "secs", r->secs);
- ndr_print_uint32(ndr, "hunds", r->hunds);
- ndr_print_int32(ndr, "timezone", r->timezone);
- ndr_print_uint32(ndr, "tinterval", r->tinterval);
- ndr_print_uint32(ndr, "day", r->day);
- ndr_print_uint32(ndr, "month", r->month);
- ndr_print_uint32(ndr, "year", r->year);
- ndr_print_uint32(ndr, "weekday", r->weekday);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportInfo(struct ndr_push *ndr, int ndr_flags, const union srvsvc_NetTransportInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS, &r->info0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo1(ndr, NDR_SCALARS, &r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo2(ndr, NDR_SCALARS, &r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo3(ndr, NDR_SCALARS, &r->info3));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case 0:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo0(ndr, NDR_BUFFERS, &r->info0));
- break;
-
- case 1:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo1(ndr, NDR_BUFFERS, &r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo2(ndr, NDR_BUFFERS, &r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo3(ndr, NDR_BUFFERS, &r->info3));
- break;
-
- default:
- return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportInfo(struct ndr_pull *ndr, int ndr_flags, union srvsvc_NetTransportInfo *r)
-{
- int level;
- uint32_t _level;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
- if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
- }
- switch (level) {
- case 0: {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS, &r->info0));
- break; }
-
- case 1: {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo1(ndr, NDR_SCALARS, &r->info1));
- break; }
-
- case 2: {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo2(ndr, NDR_SCALARS, &r->info2));
- break; }
-
- case 3: {
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo3(ndr, NDR_SCALARS, &r->info3));
- break; }
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- switch (level) {
- case 0:
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo0(ndr, NDR_BUFFERS, &r->info0));
- break;
-
- case 1:
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo1(ndr, NDR_BUFFERS, &r->info1));
- break;
-
- case 2:
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo2(ndr, NDR_BUFFERS, &r->info2));
- break;
-
- case 3:
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo3(ndr, NDR_BUFFERS, &r->info3));
- break;
-
- default:
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetTransportInfo *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "srvsvc_NetTransportInfo");
- switch (level) {
- case 0:
- ndr_print_srvsvc_NetTransportInfo0(ndr, "info0", &r->info0);
- break;
-
- case 1:
- ndr_print_srvsvc_NetTransportInfo1(ndr, "info1", &r->info1);
- break;
-
- case 2:
- ndr_print_srvsvc_NetTransportInfo2(ndr, "info2", &r->info2);
- break;
-
- case 3:
- ndr_print_srvsvc_NetTransportInfo3(ndr, "info3", &r->info3);
- break;
-
- default:
- ndr_print_bad_level(ndr, name, level);
- }
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetCharDevCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetCharDevCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_ctr_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- *r->out.ctr = *r->in.ctr;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->in.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level);
- ndr_print_srvsvc_NetCharDevCtr(ndr, "ctr", r->in.ctr);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->out.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level);
- ndr_print_srvsvc_NetCharDevCtr(ndr, "ctr", r->out.ctr);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevGetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevGetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.device_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.device_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.device_name, ndr_charset_length(r->in.device_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetCharDevInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevGetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevGetInfo *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.device_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.device_name));
- if (ndr_get_array_length(ndr, &r->in.device_name) > ndr_get_array_size(ndr, &r->in.device_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.device_name), ndr_get_array_length(ndr, &r->in.device_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.device_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.device_name, ndr_get_array_length(ndr, &r->in.device_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevGetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevGetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "device_name", r->in.device_name);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_srvsvc_NetCharDevInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevControl(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevControl *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.device_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.device_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.device_name, ndr_charset_length(r->in.device_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.opcode));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevControl(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevControl *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.device_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.device_name));
- if (ndr_get_array_length(ndr, &r->in.device_name) > ndr_get_array_size(ndr, &r->in.device_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.device_name), ndr_get_array_length(ndr, &r->in.device_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.device_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.device_name, ndr_get_array_length(ndr, &r->in.device_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.opcode));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevControl(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevControl *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevControl");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevControl");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "device_name", r->in.device_name);
- ndr_print_uint32(ndr, "opcode", r->in.opcode);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevControl");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevQEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.user));
- if (r->in.user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.user, ndr_charset_length(r->in.user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevQEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_user;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_user_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_ctr_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->in.user);
- } else {
- r->in.user = NULL;
- }
- if (r->in.user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.user));
- if (ndr_get_array_length(ndr, &r->in.user) > ndr_get_array_size(ndr, &r->in.user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.user), ndr_get_array_length(ndr, &r->in.user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.user, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- *r->out.ctr = *r->in.ctr;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevQEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->in.user);
- ndr->depth++;
- if (r->in.user) {
- ndr_print_string(ndr, "user", r->in.user);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->in.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level);
- ndr_print_srvsvc_NetCharDevQCtr(ndr, "ctr", r->in.ctr);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevQEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->out.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level);
- ndr_print_srvsvc_NetCharDevQCtr(ndr, "ctr", r->out.ctr);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQGetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevQGetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.queue_name, ndr_charset_length(r->in.queue_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.user, ndr_charset_length(r->in.user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQGetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevQGetInfo *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.queue_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.queue_name));
- if (ndr_get_array_length(ndr, &r->in.queue_name) > ndr_get_array_size(ndr, &r->in.queue_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.queue_name), ndr_get_array_length(ndr, &r->in.queue_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.queue_name, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.user));
- if (ndr_get_array_length(ndr, &r->in.user) > ndr_get_array_size(ndr, &r->in.user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.user), ndr_get_array_length(ndr, &r->in.user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.user, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQGetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQGetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevQGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "queue_name", r->in.queue_name);
- ndr_print_string(ndr, "user", r->in.user);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevQGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_srvsvc_NetCharDevQInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQSetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevQSetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.queue_name, ndr_charset_length(r->in.queue_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.parm_error));
- if (r->in.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.parm_error));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.parm_error));
- if (r->out.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.parm_error));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQSetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevQSetInfo *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_parm_error;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_parm_error_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.queue_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.queue_name));
- if (ndr_get_array_length(ndr, &r->in.queue_name) > ndr_get_array_size(ndr, &r->in.queue_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.queue_name), ndr_get_array_length(ndr, &r->in.queue_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.queue_name, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetCharDevQInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->in.parm_error);
- } else {
- r->in.parm_error = NULL;
- }
- if (r->in.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->out.parm_error);
- } else {
- r->out.parm_error = NULL;
- }
- if (r->out.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQSetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQSetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevQSetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "queue_name", r->in.queue_name);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
- ndr_print_srvsvc_NetCharDevQInfo(ndr, "info", &r->in.info);
- ndr_print_ptr(ndr, "parm_error", r->in.parm_error);
- ndr->depth++;
- if (r->in.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->in.parm_error);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevQSetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "parm_error", r->out.parm_error);
- ndr->depth++;
- if (r->out.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->out.parm_error);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQPurge(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevQPurge *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.queue_name, ndr_charset_length(r->in.queue_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQPurge(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevQPurge *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.queue_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.queue_name));
- if (ndr_get_array_length(ndr, &r->in.queue_name) > ndr_get_array_size(ndr, &r->in.queue_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.queue_name), ndr_get_array_length(ndr, &r->in.queue_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.queue_name, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQPurge(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQPurge *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQPurge");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevQPurge");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "queue_name", r->in.queue_name);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevQPurge");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetCharDevQPurgeSelf(struct ndr_push *ndr, int flags, const struct srvsvc_NetCharDevQPurgeSelf *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.queue_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.queue_name, ndr_charset_length(r->in.queue_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetCharDevQPurgeSelf(struct ndr_pull *ndr, int flags, struct srvsvc_NetCharDevQPurgeSelf *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.queue_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.queue_name));
- if (ndr_get_array_length(ndr, &r->in.queue_name) > ndr_get_array_size(ndr, &r->in.queue_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.queue_name), ndr_get_array_length(ndr, &r->in.queue_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.queue_name, ndr_get_array_length(ndr, &r->in.queue_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
- if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQPurgeSelf(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQPurgeSelf *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetCharDevQPurgeSelf");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetCharDevQPurgeSelf");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "queue_name", r->in.queue_name);
- ndr_print_string(ndr, "computer_name", r->in.computer_name);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetCharDevQPurgeSelf");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetConnEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetConnEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.path));
- if (r->in.path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path, ndr_charset_length(r->in.path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetConnCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetConnCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetConnEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetConnEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_path;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_path_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_ctr_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->in.path);
- } else {
- r->in.path = NULL;
- }
- if (r->in.path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path));
- if (ndr_get_array_length(ndr, &r->in.path) > ndr_get_array_size(ndr, &r->in.path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.path), ndr_get_array_length(ndr, &r->in.path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetConnCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- *r->out.ctr = *r->in.ctr;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetConnCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetConnEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetConnEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetConnEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetConnEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "path", r->in.path);
- ndr->depth++;
- if (r->in.path) {
- ndr_print_string(ndr, "path", r->in.path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->in.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level);
- ndr_print_srvsvc_NetConnCtr(ndr, "ctr", r->in.ctr);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetConnEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->out.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level);
- ndr_print_srvsvc_NetConnCtr(ndr, "ctr", r->out.ctr);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetFileEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.path));
- if (r->in.path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path, ndr_charset_length(r->in.path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.user));
- if (r->in.user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.user, ndr_charset_length(r->in.user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetFileEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_path;
- uint32_t _ptr_user;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_path_0;
- TALLOC_CTX *_mem_save_user_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_ctr_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
- if (_ptr_path) {
- NDR_PULL_ALLOC(ndr, r->in.path);
- } else {
- r->in.path = NULL;
- }
- if (r->in.path) {
- _mem_save_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path));
- if (ndr_get_array_length(ndr, &r->in.path) > ndr_get_array_size(ndr, &r->in.path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.path), ndr_get_array_length(ndr, &r->in.path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_path_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->in.user);
- } else {
- r->in.user = NULL;
- }
- if (r->in.user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.user));
- if (ndr_get_array_length(ndr, &r->in.user) > ndr_get_array_size(ndr, &r->in.user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.user), ndr_get_array_length(ndr, &r->in.user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.user, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- *r->out.ctr = *r->in.ctr;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetFileEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetFileEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetFileEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "path", r->in.path);
- ndr->depth++;
- if (r->in.path) {
- ndr_print_string(ndr, "path", r->in.path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->in.user);
- ndr->depth++;
- if (r->in.user) {
- ndr_print_string(ndr, "user", r->in.user);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->in.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level);
- ndr_print_srvsvc_NetFileCtr(ndr, "ctr", r->in.ctr);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetFileEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->out.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level);
- ndr_print_srvsvc_NetFileCtr(ndr, "ctr", r->out.ctr);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileGetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetFileGetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.fid));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetFileInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileGetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetFileGetInfo *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.fid));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetFileInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetFileGetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetFileGetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetFileGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "fid", r->in.fid);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetFileGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_srvsvc_NetFileInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetFileClose(struct ndr_push *ndr, int flags, const struct srvsvc_NetFileClose *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.fid));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetFileClose(struct ndr_pull *ndr, int flags, struct srvsvc_NetFileClose *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.fid));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetFileClose(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetFileClose *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetFileClose");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetFileClose");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "fid", r->in.fid);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetFileClose");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetSessEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.client));
- if (r->in.client) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.client, ndr_charset_length(r->in.client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.user));
- if (r->in.user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.user, ndr_charset_length(r->in.user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetSessCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetSessCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetSessEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_client;
- uint32_t _ptr_user;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_client_0;
- TALLOC_CTX *_mem_save_user_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_ctr_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
- if (_ptr_client) {
- NDR_PULL_ALLOC(ndr, r->in.client);
- } else {
- r->in.client = NULL;
- }
- if (r->in.client) {
- _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.client, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.client));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.client));
- if (ndr_get_array_length(ndr, &r->in.client) > ndr_get_array_size(ndr, &r->in.client)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.client), ndr_get_array_length(ndr, &r->in.client));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.client), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.client, ndr_get_array_length(ndr, &r->in.client), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->in.user);
- } else {
- r->in.user = NULL;
- }
- if (r->in.user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.user));
- if (ndr_get_array_length(ndr, &r->in.user) > ndr_get_array_size(ndr, &r->in.user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.user), ndr_get_array_length(ndr, &r->in.user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.user, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetSessCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- *r->out.ctr = *r->in.ctr;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetSessCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSessEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSessEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetSessEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "client", r->in.client);
- ndr->depth++;
- if (r->in.client) {
- ndr_print_string(ndr, "client", r->in.client);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->in.user);
- ndr->depth++;
- if (r->in.user) {
- ndr_print_string(ndr, "user", r->in.user);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->in.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level);
- ndr_print_srvsvc_NetSessCtr(ndr, "ctr", r->in.ctr);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetSessEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->out.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level);
- ndr_print_srvsvc_NetSessCtr(ndr, "ctr", r->out.ctr);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSessDel(struct ndr_push *ndr, int flags, const struct srvsvc_NetSessDel *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.client));
- if (r->in.client) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.client, ndr_charset_length(r->in.client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.user));
- if (r->in.user) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.user, ndr_charset_length(r->in.user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSessDel(struct ndr_pull *ndr, int flags, struct srvsvc_NetSessDel *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_client;
- uint32_t _ptr_user;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_client_0;
- TALLOC_CTX *_mem_save_user_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
- if (_ptr_client) {
- NDR_PULL_ALLOC(ndr, r->in.client);
- } else {
- r->in.client = NULL;
- }
- if (r->in.client) {
- _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.client, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.client));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.client));
- if (ndr_get_array_length(ndr, &r->in.client) > ndr_get_array_size(ndr, &r->in.client)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.client), ndr_get_array_length(ndr, &r->in.client));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.client), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.client, ndr_get_array_length(ndr, &r->in.client), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
- if (_ptr_user) {
- NDR_PULL_ALLOC(ndr, r->in.user);
- } else {
- r->in.user = NULL;
- }
- if (r->in.user) {
- _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.user, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.user));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.user));
- if (ndr_get_array_length(ndr, &r->in.user) > ndr_get_array_size(ndr, &r->in.user)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.user), ndr_get_array_length(ndr, &r->in.user));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.user, ndr_get_array_length(ndr, &r->in.user), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSessDel(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSessDel *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSessDel");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetSessDel");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "client", r->in.client);
- ndr->depth++;
- if (r->in.client) {
- ndr_print_string(ndr, "client", r->in.client);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "user", r->in.user);
- ndr->depth++;
- if (r->in.user) {
- ndr_print_string(ndr, "user", r->in.user);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetSessDel");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareAdd(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareAdd *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.parm_error));
- if (r->in.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.parm_error));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.parm_error));
- if (r->out.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.parm_error));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareAdd(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareAdd *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_parm_error;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_parm_error_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->in.parm_error);
- } else {
- r->in.parm_error = NULL;
- }
- if (r->in.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->out.parm_error);
- } else {
- r->out.parm_error = NULL;
- }
- if (r->out.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareAdd(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareAdd *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareAdd");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareAdd");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
- ndr_print_srvsvc_NetShareInfo(ndr, "info", &r->in.info);
- ndr_print_ptr(ndr, "parm_error", r->in.parm_error);
- ndr->depth++;
- if (r->in.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->in.parm_error);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareAdd");
- ndr->depth++;
- ndr_print_ptr(ndr, "parm_error", r->out.parm_error);
- ndr->depth++;
- if (r->out.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->out.parm_error);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareEnumAll(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareEnumAll *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareEnumAll(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareEnumAll *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_ctr_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- *r->out.ctr = *r->in.ctr;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareEnumAll(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareEnumAll *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareEnumAll");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareEnumAll");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->in.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level);
- ndr_print_srvsvc_NetShareCtr(ndr, "ctr", r->in.ctr);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareEnumAll");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->out.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level);
- ndr_print_srvsvc_NetShareCtr(ndr, "ctr", r->out.ctr);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareGetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareGetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share_name, ndr_charset_length(r->in.share_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareGetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareGetInfo *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share_name));
- if (ndr_get_array_length(ndr, &r->in.share_name) > ndr_get_array_size(ndr, &r->in.share_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share_name), ndr_get_array_length(ndr, &r->in.share_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share_name, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareGetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareGetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "share_name", r->in.share_name);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_srvsvc_NetShareInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareSetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareSetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share_name, ndr_charset_length(r->in.share_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetShareInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.parm_error));
- if (r->in.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.parm_error));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.parm_error));
- if (r->out.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.parm_error));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareSetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareSetInfo *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_parm_error;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_parm_error_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share_name));
- if (ndr_get_array_length(ndr, &r->in.share_name) > ndr_get_array_size(ndr, &r->in.share_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share_name), ndr_get_array_length(ndr, &r->in.share_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share_name, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetShareInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->in.parm_error);
- } else {
- r->in.parm_error = NULL;
- }
- if (r->in.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->out.parm_error);
- } else {
- r->out.parm_error = NULL;
- }
- if (r->out.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareSetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareSetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareSetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "share_name", r->in.share_name);
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
- ndr_print_srvsvc_NetShareInfo(ndr, "info", &r->in.info);
- ndr_print_ptr(ndr, "parm_error", r->in.parm_error);
- ndr->depth++;
- if (r->in.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->in.parm_error);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareSetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "parm_error", r->out.parm_error);
- ndr->depth++;
- if (r->out.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->out.parm_error);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareDel(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareDel *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share_name, ndr_charset_length(r->in.share_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reserved));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareDel(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareDel *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share_name));
- if (ndr_get_array_length(ndr, &r->in.share_name) > ndr_get_array_size(ndr, &r->in.share_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share_name), ndr_get_array_length(ndr, &r->in.share_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share_name, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reserved));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareDel(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDel *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareDel");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareDel");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "share_name", r->in.share_name);
- ndr_print_uint32(ndr, "reserved", r->in.reserved);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareDel");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareDelSticky(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareDelSticky *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share_name, ndr_charset_length(r->in.share_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reserved));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareDelSticky(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareDelSticky *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share_name));
- if (ndr_get_array_length(ndr, &r->in.share_name) > ndr_get_array_size(ndr, &r->in.share_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share_name), ndr_get_array_length(ndr, &r->in.share_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share_name, ndr_get_array_length(ndr, &r->in.share_name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reserved));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareDelSticky(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDelSticky *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareDelSticky");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareDelSticky");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "share_name", r->in.share_name);
- ndr_print_uint32(ndr, "reserved", r->in.reserved);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareDelSticky");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareCheck(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareCheck *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.device_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.device_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.device_name, ndr_charset_length(r->in.device_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (flags & NDR_OUT) {
- if (r->out.type == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_srvsvc_ShareType(ndr, NDR_SCALARS, *r->out.type));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareCheck(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareCheck *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_type_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.device_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.device_name));
- if (ndr_get_array_length(ndr, &r->in.device_name) > ndr_get_array_size(ndr, &r->in.device_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.device_name), ndr_get_array_length(ndr, &r->in.device_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.device_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.device_name, ndr_get_array_length(ndr, &r->in.device_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_ALLOC(ndr, r->out.type);
- ZERO_STRUCTP(r->out.type);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.type);
- }
- _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.type, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_srvsvc_ShareType(ndr, NDR_SCALARS, r->out.type));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareCheck(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareCheck *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareCheck");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareCheck");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "device_name", r->in.device_name);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareCheck");
- ndr->depth++;
- ndr_print_ptr(ndr, "type", r->out.type);
- ndr->depth++;
- ndr_print_srvsvc_ShareType(ndr, "type", *r->out.type);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvGetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetSrvGetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvGetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetSrvGetInfo *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSrvGetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvGetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetSrvGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetSrvGetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_srvsvc_NetSrvInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSrvSetInfo(struct ndr_push *ndr, int flags, const struct srvsvc_NetSrvSetInfo *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetSrvInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.parm_error));
- if (r->in.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.parm_error));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.parm_error));
- if (r->out.parm_error) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.parm_error));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSrvSetInfo(struct ndr_pull *ndr, int flags, struct srvsvc_NetSrvSetInfo *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_parm_error;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_parm_error_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetSrvInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->in.parm_error);
- } else {
- r->in.parm_error = NULL;
- }
- if (r->in.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parm_error));
- if (_ptr_parm_error) {
- NDR_PULL_ALLOC(ndr, r->out.parm_error);
- } else {
- r->out.parm_error = NULL;
- }
- if (r->out.parm_error) {
- _mem_save_parm_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.parm_error, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.parm_error));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parm_error_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSrvSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSrvSetInfo *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSrvSetInfo");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetSrvSetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
- ndr_print_srvsvc_NetSrvInfo(ndr, "info", &r->in.info);
- ndr_print_ptr(ndr, "parm_error", r->in.parm_error);
- ndr->depth++;
- if (r->in.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->in.parm_error);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetSrvSetInfo");
- ndr->depth++;
- ndr_print_ptr(ndr, "parm_error", r->out.parm_error);
- ndr->depth++;
- if (r->out.parm_error) {
- ndr_print_uint32(ndr, "parm_error", *r->out.parm_error);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetDiskEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetDiskEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- if (r->in.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_srvsvc_NetDiskInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.maxlen));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.info == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_srvsvc_NetDiskInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetDiskEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetDiskEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_info_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_srvsvc_NetDiskInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.maxlen));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.info);
- *r->out.info = *r->in.info;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_srvsvc_NetDiskInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetDiskEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetDiskEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetDiskEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetDiskEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- ndr_print_srvsvc_NetDiskInfo(ndr, "info", r->in.info);
- ndr->depth--;
- ndr_print_uint32(ndr, "maxlen", r->in.maxlen);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetDiskEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- ndr_print_srvsvc_NetDiskInfo(ndr, "info", r->out.info);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetServerStatisticsGet(struct ndr_push *ndr, int flags, const struct srvsvc_NetServerStatisticsGet *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service));
- if (r->in.service) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service, ndr_charset_length(r->in.service, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.options));
- }
- if (flags & NDR_OUT) {
- if (r->out.stats == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_srvsvc_Statistics(ndr, NDR_SCALARS, r->out.stats));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetServerStatisticsGet(struct ndr_pull *ndr, int flags, struct srvsvc_NetServerStatisticsGet *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_service;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_service_0;
- TALLOC_CTX *_mem_save_stats_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service));
- if (_ptr_service) {
- NDR_PULL_ALLOC(ndr, r->in.service);
- } else {
- r->in.service = NULL;
- }
- if (r->in.service) {
- _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service));
- if (ndr_get_array_length(ndr, &r->in.service) > ndr_get_array_size(ndr, &r->in.service)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service), ndr_get_array_length(ndr, &r->in.service));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service, ndr_get_array_length(ndr, &r->in.service), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.options));
- NDR_PULL_ALLOC(ndr, r->out.stats);
- ZERO_STRUCTP(r->out.stats);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.stats);
- }
- _mem_save_stats_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.stats, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_srvsvc_Statistics(ndr, NDR_SCALARS, r->out.stats));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stats_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetServerStatisticsGet(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetServerStatisticsGet *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetServerStatisticsGet");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetServerStatisticsGet");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "service", r->in.service);
- ndr->depth++;
- if (r->in.service) {
- ndr_print_string(ndr, "service", r->in.service);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_uint32(ndr, "options", r->in.options);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetServerStatisticsGet");
- ndr->depth++;
- ndr_print_ptr(ndr, "stats", r->out.stats);
- ndr->depth++;
- ndr_print_srvsvc_Statistics(ndr, "stats", r->out.stats);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportAdd(struct ndr_push *ndr, int flags, const struct srvsvc_NetTransportAdd *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportAdd(struct ndr_pull *ndr, int flags, struct srvsvc_NetTransportAdd *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportAdd(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetTransportAdd *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetTransportAdd");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetTransportAdd");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
- ndr_print_srvsvc_NetTransportInfo(ndr, "info", &r->in.info);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetTransportAdd");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetTransportEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.transports == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.transports, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.transports));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.transports == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.transports, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.transports));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetTransportEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_transports_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.transports);
- }
- _mem_save_transports_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.transports, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.transports, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.transports));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transports_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.transports);
- *r->out.transports = *r->in.transports;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.transports);
- }
- _mem_save_transports_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.transports, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.transports, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.transports));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transports_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetTransportEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetTransportEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetTransportEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "transports", r->in.transports);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.transports, *r->in.level);
- ndr_print_srvsvc_NetTransportCtr(ndr, "transports", r->in.transports);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetTransportEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "transports", r->out.transports);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.transports, *r->out.level);
- ndr_print_srvsvc_NetTransportCtr(ndr, "transports", r->out.transports);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetTransportDel(struct ndr_push *ndr, int flags, const struct srvsvc_NetTransportDel *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.transport));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetTransportDel(struct ndr_pull *ndr, int flags, struct srvsvc_NetTransportDel *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.transport));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetTransportDel(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetTransportDel *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetTransportDel");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetTransportDel");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "unknown", r->in.unknown);
- ndr_print_srvsvc_NetTransportInfo0(ndr, "transport", &r->in.transport);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetTransportDel");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetRemoteTOD(struct ndr_push *ndr, int flags, const struct srvsvc_NetRemoteTOD *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
- if (r->out.info) {
- NDR_CHECK(ndr_push_srvsvc_NetRemoteTODInfo(ndr, NDR_SCALARS, r->out.info));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetRemoteTOD(struct ndr_pull *ndr, int flags, struct srvsvc_NetRemoteTOD *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- } else {
- r->out.info = NULL;
- }
- if (r->out.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
- NDR_CHECK(ndr_pull_srvsvc_NetRemoteTODInfo(ndr, NDR_SCALARS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetRemoteTOD(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetRemoteTOD *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetRemoteTOD");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetRemoteTOD");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetRemoteTOD");
- ndr->depth++;
- ndr_print_ptr(ndr, "info", r->out.info);
- ndr->depth++;
- if (r->out.info) {
- ndr_print_srvsvc_NetRemoteTODInfo(ndr, "info", r->out.info);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSetServiceBits(struct ndr_push *ndr, int flags, const struct srvsvc_NetSetServiceBits *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.transport));
- if (r->in.transport) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.transport, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.transport, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.transport, ndr_charset_length(r->in.transport, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.servicebits));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.updateimmediately));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSetServiceBits(struct ndr_pull *ndr, int flags, struct srvsvc_NetSetServiceBits *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_transport;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_transport_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_transport));
- if (_ptr_transport) {
- NDR_PULL_ALLOC(ndr, r->in.transport);
- } else {
- r->in.transport = NULL;
- }
- if (r->in.transport) {
- _mem_save_transport_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.transport, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.transport));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.transport));
- if (ndr_get_array_length(ndr, &r->in.transport) > ndr_get_array_size(ndr, &r->in.transport)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.transport), ndr_get_array_length(ndr, &r->in.transport));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.transport), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.transport, ndr_get_array_length(ndr, &r->in.transport), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transport_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.servicebits));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.updateimmediately));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSetServiceBits(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSetServiceBits *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSetServiceBits");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetSetServiceBits");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "transport", r->in.transport);
- ndr->depth++;
- if (r->in.transport) {
- ndr_print_string(ndr, "transport", r->in.transport);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "servicebits", r->in.servicebits);
- ndr_print_uint32(ndr, "updateimmediately", r->in.updateimmediately);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetSetServiceBits");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetPathType(struct ndr_push *ndr, int flags, const struct srvsvc_NetPathType *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path, ndr_charset_length(r->in.path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.pathflags));
- }
- if (flags & NDR_OUT) {
- if (r->out.pathtype == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.pathtype));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetPathType(struct ndr_pull *ndr, int flags, struct srvsvc_NetPathType *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_pathtype_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path));
- if (ndr_get_array_length(ndr, &r->in.path) > ndr_get_array_size(ndr, &r->in.path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.path), ndr_get_array_length(ndr, &r->in.path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.pathflags));
- NDR_PULL_ALLOC(ndr, r->out.pathtype);
- ZERO_STRUCTP(r->out.pathtype);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.pathtype);
- }
- _mem_save_pathtype_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.pathtype, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.pathtype));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pathtype_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetPathType(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPathType *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetPathType");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetPathType");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "path", r->in.path);
- ndr_print_uint32(ndr, "pathflags", r->in.pathflags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetPathType");
- ndr->depth++;
- ndr_print_ptr(ndr, "pathtype", r->out.pathtype);
- ndr->depth++;
- ndr_print_uint32(ndr, "pathtype", *r->out.pathtype);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetPathCanonicalize(struct ndr_push *ndr, int flags, const struct srvsvc_NetPathCanonicalize *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path, ndr_charset_length(r->in.path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.maxbuf));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.prefix, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.prefix, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.prefix, ndr_charset_length(r->in.prefix, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- if (r->in.pathtype == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.pathtype));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.pathflags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.maxbuf));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.can_path, r->in.maxbuf));
- if (r->out.pathtype == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.pathtype));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetPathCanonicalize(struct ndr_pull *ndr, int flags, struct srvsvc_NetPathCanonicalize *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_pathtype_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path));
- if (ndr_get_array_length(ndr, &r->in.path) > ndr_get_array_size(ndr, &r->in.path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.path), ndr_get_array_length(ndr, &r->in.path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path, ndr_get_array_length(ndr, &r->in.path), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.maxbuf));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.prefix));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.prefix));
- if (ndr_get_array_length(ndr, &r->in.prefix) > ndr_get_array_size(ndr, &r->in.prefix)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.prefix), ndr_get_array_length(ndr, &r->in.prefix));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.prefix), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.prefix, ndr_get_array_length(ndr, &r->in.prefix), sizeof(uint16_t), CH_UTF16));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.pathtype);
- }
- _mem_save_pathtype_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.pathtype, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.pathtype));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pathtype_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.pathflags));
- NDR_PULL_ALLOC(ndr, r->out.pathtype);
- *r->out.pathtype = *r->in.pathtype;
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.can_path));
- NDR_PULL_ALLOC_N(ndr, r->out.can_path, ndr_get_array_size(ndr, &r->out.can_path));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.can_path, ndr_get_array_size(ndr, &r->out.can_path)));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.pathtype);
- }
- _mem_save_pathtype_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.pathtype, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.pathtype));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pathtype_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.can_path) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.can_path, r->in.maxbuf));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetPathCanonicalize(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPathCanonicalize *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetPathCanonicalize");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetPathCanonicalize");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "path", r->in.path);
- ndr_print_uint32(ndr, "maxbuf", r->in.maxbuf);
- ndr_print_string(ndr, "prefix", r->in.prefix);
- ndr_print_ptr(ndr, "pathtype", r->in.pathtype);
- ndr->depth++;
- ndr_print_uint32(ndr, "pathtype", *r->in.pathtype);
- ndr->depth--;
- ndr_print_uint32(ndr, "pathflags", r->in.pathflags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetPathCanonicalize");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "can_path", r->out.can_path, r->in.maxbuf);
- ndr_print_ptr(ndr, "pathtype", r->out.pathtype);
- ndr->depth++;
- ndr_print_uint32(ndr, "pathtype", *r->out.pathtype);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetPathCompare(struct ndr_push *ndr, int flags, const struct srvsvc_NetPathCompare *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path1, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path1, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path1, ndr_charset_length(r->in.path1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path2, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.path2, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path2, ndr_charset_length(r->in.path2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.pathtype));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.pathflags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetPathCompare(struct ndr_pull *ndr, int flags, struct srvsvc_NetPathCompare *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path1));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path1));
- if (ndr_get_array_length(ndr, &r->in.path1) > ndr_get_array_size(ndr, &r->in.path1)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.path1), ndr_get_array_length(ndr, &r->in.path1));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path1), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path1, ndr_get_array_length(ndr, &r->in.path1), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path2));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path2));
- if (ndr_get_array_length(ndr, &r->in.path2) > ndr_get_array_size(ndr, &r->in.path2)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.path2), ndr_get_array_length(ndr, &r->in.path2));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path2), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path2, ndr_get_array_length(ndr, &r->in.path2), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.pathtype));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.pathflags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetPathCompare(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPathCompare *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetPathCompare");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetPathCompare");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "path1", r->in.path1);
- ndr_print_string(ndr, "path2", r->in.path2);
- ndr_print_uint32(ndr, "pathtype", r->in.pathtype);
- ndr_print_uint32(ndr, "pathflags", r->in.pathflags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetPathCompare");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetNameValidate(struct ndr_push *ndr, int flags, const struct srvsvc_NetNameValidate *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.name, ndr_charset_length(r->in.name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.name_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetNameValidate(struct ndr_pull *ndr, int flags, struct srvsvc_NetNameValidate *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.name));
- if (ndr_get_array_length(ndr, &r->in.name) > ndr_get_array_size(ndr, &r->in.name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.name), ndr_get_array_length(ndr, &r->in.name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.name, ndr_get_array_length(ndr, &r->in.name), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.name_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetNameValidate(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetNameValidate *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetNameValidate");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetNameValidate");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "name", r->in.name);
- ndr_print_uint32(ndr, "name_type", r->in.name_type);
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetNameValidate");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRPRNAMECANONICALIZE(struct ndr_push *ndr, int flags, const struct srvsvc_NETRPRNAMECANONICALIZE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRPRNAMECANONICALIZE(struct ndr_pull *ndr, int flags, struct srvsvc_NETRPRNAMECANONICALIZE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRPRNAMECANONICALIZE(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRPRNAMECANONICALIZE *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRPRNAMECANONICALIZE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRPRNAMECANONICALIZE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRPRNAMECANONICALIZE");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetPRNameCompare(struct ndr_push *ndr, int flags, const struct srvsvc_NetPRNameCompare *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name1, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name1, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.name1, ndr_charset_length(r->in.name1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name2, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name2, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.name2, ndr_charset_length(r->in.name2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.name_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetPRNameCompare(struct ndr_pull *ndr, int flags, struct srvsvc_NetPRNameCompare *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.name1));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.name1));
- if (ndr_get_array_length(ndr, &r->in.name1) > ndr_get_array_size(ndr, &r->in.name1)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.name1), ndr_get_array_length(ndr, &r->in.name1));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.name1), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.name1, ndr_get_array_length(ndr, &r->in.name1), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.name2));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.name2));
- if (ndr_get_array_length(ndr, &r->in.name2) > ndr_get_array_size(ndr, &r->in.name2)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.name2), ndr_get_array_length(ndr, &r->in.name2));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.name2), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.name2, ndr_get_array_length(ndr, &r->in.name2), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.name_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetPRNameCompare(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPRNameCompare *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetPRNameCompare");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetPRNameCompare");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "name1", r->in.name1);
- ndr_print_string(ndr, "name2", r->in.name2);
- ndr_print_uint32(ndr, "name_type", r->in.name_type);
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetPRNameCompare");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareEnum(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareEnum *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level));
- if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level));
- if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_push_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- if (r->out.totalentries == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.totalentries));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareEnum(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareEnum *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_level_0;
- TALLOC_CTX *_mem_save_ctr_0;
- TALLOC_CTX *_mem_save_totalentries_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.level);
- *r->out.level = *r->in.level;
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- *r->out.ctr = *r->in.ctr;
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- ZERO_STRUCTP(r->out.totalentries);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.level);
- }
- _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.ctr);
- }
- _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level));
- NDR_CHECK(ndr_pull_srvsvc_NetShareCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.totalentries);
- }
- _mem_save_totalentries_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.totalentries, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.totalentries));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_totalentries_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareEnum *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareEnum");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "level", r->in.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->in.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->in.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level);
- ndr_print_srvsvc_NetShareCtr(ndr, "ctr", r->in.ctr);
- ndr->depth--;
- ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareEnum");
- ndr->depth++;
- ndr_print_ptr(ndr, "level", r->out.level);
- ndr->depth++;
- ndr_print_uint32(ndr, "level", *r->out.level);
- ndr->depth--;
- ndr_print_ptr(ndr, "ctr", r->out.ctr);
- ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level);
- ndr_print_srvsvc_NetShareCtr(ndr, "ctr", r->out.ctr);
- ndr->depth--;
- ndr_print_ptr(ndr, "totalentries", r->out.totalentries);
- ndr->depth++;
- ndr_print_uint32(ndr, "totalentries", *r->out.totalentries);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareDelStart(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareDelStart *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share, ndr_charset_length(r->in.share, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reserved));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.hnd));
- if (r->out.hnd) {
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.hnd));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareDelStart(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareDelStart *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_hnd;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_hnd_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share));
- if (ndr_get_array_length(ndr, &r->in.share) > ndr_get_array_size(ndr, &r->in.share)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share), ndr_get_array_length(ndr, &r->in.share));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reserved));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hnd));
- if (_ptr_hnd) {
- NDR_PULL_ALLOC(ndr, r->out.hnd);
- } else {
- r->out.hnd = NULL;
- }
- if (r->out.hnd) {
- _mem_save_hnd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.hnd, 0);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.hnd));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hnd_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareDelStart(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDelStart *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareDelStart");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareDelStart");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_string(ndr, "share", r->in.share);
- ndr_print_uint32(ndr, "reserved", r->in.reserved);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareDelStart");
- ndr->depth++;
- ndr_print_ptr(ndr, "hnd", r->out.hnd);
- ndr->depth++;
- if (r->out.hnd) {
- ndr_print_policy_handle(ndr, "hnd", r->out.hnd);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetShareDelCommit(struct ndr_push *ndr, int flags, const struct srvsvc_NetShareDelCommit *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hnd));
- if (r->in.hnd) {
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.hnd));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.hnd));
- if (r->out.hnd) {
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.hnd));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetShareDelCommit(struct ndr_pull *ndr, int flags, struct srvsvc_NetShareDelCommit *r)
-{
- uint32_t _ptr_hnd;
- TALLOC_CTX *_mem_save_hnd_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hnd));
- if (_ptr_hnd) {
- NDR_PULL_ALLOC(ndr, r->in.hnd);
- } else {
- r->in.hnd = NULL;
- }
- if (r->in.hnd) {
- _mem_save_hnd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.hnd, 0);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.hnd));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hnd_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hnd));
- if (_ptr_hnd) {
- NDR_PULL_ALLOC(ndr, r->out.hnd);
- } else {
- r->out.hnd = NULL;
- }
- if (r->out.hnd) {
- _mem_save_hnd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.hnd, 0);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.hnd));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hnd_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetShareDelCommit(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDelCommit *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetShareDelCommit");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetShareDelCommit");
- ndr->depth++;
- ndr_print_ptr(ndr, "hnd", r->in.hnd);
- ndr->depth++;
- if (r->in.hnd) {
- ndr_print_policy_handle(ndr, "hnd", r->in.hnd);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetShareDelCommit");
- ndr->depth++;
- ndr_print_ptr(ndr, "hnd", r->out.hnd);
- ndr->depth++;
- if (r->out.hnd) {
- ndr_print_policy_handle(ndr, "hnd", r->out.hnd);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetGetFileSecurity(struct ndr_push *ndr, int flags, const struct srvsvc_NetGetFileSecurity *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.share));
- if (r->in.share) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share, ndr_charset_length(r->in.share, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.file, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.file, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.file, ndr_charset_length(r->in.file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.securityinformation));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.sd_buf));
- if (r->out.sd_buf) {
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd_buf));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetGetFileSecurity(struct ndr_pull *ndr, int flags, struct srvsvc_NetGetFileSecurity *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_share;
- uint32_t _ptr_sd_buf;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_share_0;
- TALLOC_CTX *_mem_save_sd_buf_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_share));
- if (_ptr_share) {
- NDR_PULL_ALLOC(ndr, r->in.share);
- } else {
- r->in.share = NULL;
- }
- if (r->in.share) {
- _mem_save_share_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.share, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share));
- if (ndr_get_array_length(ndr, &r->in.share) > ndr_get_array_size(ndr, &r->in.share)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share), ndr_get_array_length(ndr, &r->in.share));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_share_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.file));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.file));
- if (ndr_get_array_length(ndr, &r->in.file) > ndr_get_array_size(ndr, &r->in.file)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.file), ndr_get_array_length(ndr, &r->in.file));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.file), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.file, ndr_get_array_length(ndr, &r->in.file), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.securityinformation));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd_buf));
- if (_ptr_sd_buf) {
- NDR_PULL_ALLOC(ndr, r->out.sd_buf);
- } else {
- r->out.sd_buf = NULL;
- }
- if (r->out.sd_buf) {
- _mem_save_sd_buf_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sd_buf, 0);
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd_buf));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_buf_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetGetFileSecurity(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetGetFileSecurity *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetGetFileSecurity");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetGetFileSecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "share", r->in.share);
- ndr->depth++;
- if (r->in.share) {
- ndr_print_string(ndr, "share", r->in.share);
- }
- ndr->depth--;
- ndr_print_string(ndr, "file", r->in.file);
- ndr_print_security_secinfo(ndr, "securityinformation", r->in.securityinformation);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetGetFileSecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "sd_buf", r->out.sd_buf);
- ndr->depth++;
- if (r->out.sd_buf) {
- ndr_print_sec_desc_buf(ndr, "sd_buf", r->out.sd_buf);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetSetFileSecurity(struct ndr_push *ndr, int flags, const struct srvsvc_NetSetFileSecurity *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.share));
- if (r->in.share) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.share, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.share, ndr_charset_length(r->in.share, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.file, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.file, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.file, ndr_charset_length(r->in.file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.securityinformation));
- NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.sd_buf));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetSetFileSecurity(struct ndr_pull *ndr, int flags, struct srvsvc_NetSetFileSecurity *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_share;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_share_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_share));
- if (_ptr_share) {
- NDR_PULL_ALLOC(ndr, r->in.share);
- } else {
- r->in.share = NULL;
- }
- if (r->in.share) {
- _mem_save_share_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.share, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.share));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.share));
- if (ndr_get_array_length(ndr, &r->in.share) > ndr_get_array_size(ndr, &r->in.share)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.share), ndr_get_array_length(ndr, &r->in.share));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.share, ndr_get_array_length(ndr, &r->in.share), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_share_0, 0);
- }
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.file));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.file));
- if (ndr_get_array_length(ndr, &r->in.file) > ndr_get_array_size(ndr, &r->in.file)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.file), ndr_get_array_length(ndr, &r->in.file));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.file), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.file, ndr_get_array_length(ndr, &r->in.file), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.securityinformation));
- NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.sd_buf));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetSetFileSecurity(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSetFileSecurity *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetSetFileSecurity");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetSetFileSecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "share", r->in.share);
- ndr->depth++;
- if (r->in.share) {
- ndr_print_string(ndr, "share", r->in.share);
- }
- ndr->depth--;
- ndr_print_string(ndr, "file", r->in.file);
- ndr_print_security_secinfo(ndr, "securityinformation", r->in.securityinformation);
- ndr_print_sec_desc_buf(ndr, "sd_buf", &r->in.sd_buf);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetSetFileSecurity");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetServerTransportAddEx(struct ndr_push *ndr, int flags, const struct srvsvc_NetServerTransportAddEx *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
- NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_push_srvsvc_NetTransportInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetServerTransportAddEx(struct ndr_pull *ndr, int flags, struct srvsvc_NetServerTransportAddEx *r)
-{
- uint32_t _ptr_server_unc;
- TALLOC_CTX *_mem_save_server_unc_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
- NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
- NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetServerTransportAddEx(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetServerTransportAddEx *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetServerTransportAddEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetServerTransportAddEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "level", r->in.level);
- ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
- ndr_print_srvsvc_NetTransportInfo(ndr, "info", &r->in.info);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetServerTransportAddEx");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NetServerSetServiceBitsEx(struct ndr_push *ndr, int flags, const struct srvsvc_NetServerSetServiceBitsEx *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
- if (r->in.server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.emulated_server_unc));
- if (r->in.emulated_server_unc) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.emulated_server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.emulated_server_unc, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.emulated_server_unc, ndr_charset_length(r->in.emulated_server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.transport));
- if (r->in.transport) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.transport, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.transport, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.transport, ndr_charset_length(r->in.transport, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.servicebitsofinterest));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.servicebits));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.updateimmediately));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NetServerSetServiceBitsEx(struct ndr_pull *ndr, int flags, struct srvsvc_NetServerSetServiceBitsEx *r)
-{
- uint32_t _ptr_server_unc;
- uint32_t _ptr_emulated_server_unc;
- uint32_t _ptr_transport;
- TALLOC_CTX *_mem_save_server_unc_0;
- TALLOC_CTX *_mem_save_emulated_server_unc_0;
- TALLOC_CTX *_mem_save_transport_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
- if (_ptr_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.server_unc);
- } else {
- r->in.server_unc = NULL;
- }
- if (r->in.server_unc) {
- _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
- if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_emulated_server_unc));
- if (_ptr_emulated_server_unc) {
- NDR_PULL_ALLOC(ndr, r->in.emulated_server_unc);
- } else {
- r->in.emulated_server_unc = NULL;
- }
- if (r->in.emulated_server_unc) {
- _mem_save_emulated_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.emulated_server_unc, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.emulated_server_unc));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.emulated_server_unc));
- if (ndr_get_array_length(ndr, &r->in.emulated_server_unc) > ndr_get_array_size(ndr, &r->in.emulated_server_unc)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.emulated_server_unc), ndr_get_array_length(ndr, &r->in.emulated_server_unc));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.emulated_server_unc), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.emulated_server_unc, ndr_get_array_length(ndr, &r->in.emulated_server_unc), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_emulated_server_unc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_transport));
- if (_ptr_transport) {
- NDR_PULL_ALLOC(ndr, r->in.transport);
- } else {
- r->in.transport = NULL;
- }
- if (r->in.transport) {
- _mem_save_transport_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.transport, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.transport));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.transport));
- if (ndr_get_array_length(ndr, &r->in.transport) > ndr_get_array_size(ndr, &r->in.transport)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.transport), ndr_get_array_length(ndr, &r->in.transport));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.transport), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.transport, ndr_get_array_length(ndr, &r->in.transport), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transport_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.servicebitsofinterest));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.servicebits));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.updateimmediately));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NetServerSetServiceBitsEx(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetServerSetServiceBitsEx *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NetServerSetServiceBitsEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NetServerSetServiceBitsEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
- ndr->depth++;
- if (r->in.server_unc) {
- ndr_print_string(ndr, "server_unc", r->in.server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "emulated_server_unc", r->in.emulated_server_unc);
- ndr->depth++;
- if (r->in.emulated_server_unc) {
- ndr_print_string(ndr, "emulated_server_unc", r->in.emulated_server_unc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "transport", r->in.transport);
- ndr->depth++;
- if (r->in.transport) {
- ndr_print_string(ndr, "transport", r->in.transport);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "servicebitsofinterest", r->in.servicebitsofinterest);
- ndr_print_uint32(ndr, "servicebits", r->in.servicebits);
- ndr_print_uint32(ndr, "updateimmediately", r->in.updateimmediately);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NetServerSetServiceBitsEx");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSGETVERSION(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSGETVERSION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSGETVERSION(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSGETVERSION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSGETVERSION(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSGETVERSION *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSGETVERSION");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSGETVERSION");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSGETVERSION");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSCREATELOCALPARTITION(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSCREATELOCALPARTITION(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSCREATELOCALPARTITION(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSCREATELOCALPARTITION");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSCREATELOCALPARTITION");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSCREATELOCALPARTITION");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSDELETELOCALPARTITION(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSDELETELOCALPARTITION(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSDELETELOCALPARTITION(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSDELETELOCALPARTITION");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSDELETELOCALPARTITION");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSDELETELOCALPARTITION");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSSETLOCALVOLUMESTATE");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSSETLOCALVOLUMESTATE");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSSETLOCALVOLUMESTATE");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSSETSERVERINFO(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSSETSERVERINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSSETSERVERINFO(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSSETSERVERINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSSETSERVERINFO(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSSETSERVERINFO *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSSETSERVERINFO");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSSETSERVERINFO");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSSETSERVERINFO");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSCREATEEXITPOINT(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSCREATEEXITPOINT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSCREATEEXITPOINT(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSCREATEEXITPOINT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSCREATEEXITPOINT(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSCREATEEXITPOINT *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSCREATEEXITPOINT");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSCREATEEXITPOINT");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSCREATEEXITPOINT");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSDELETEEXITPOINT(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSDELETEEXITPOINT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSDELETEEXITPOINT(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSDELETEEXITPOINT *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSDELETEEXITPOINT(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSDELETEEXITPOINT *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSDELETEEXITPOINT");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSDELETEEXITPOINT");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSDELETEEXITPOINT");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSMODIFYPREFIX(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSMODIFYPREFIX *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSMODIFYPREFIX(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSMODIFYPREFIX *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSMODIFYPREFIX(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSMODIFYPREFIX *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSMODIFYPREFIX");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSMODIFYPREFIX");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSMODIFYPREFIX");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSFIXLOCALVOLUME(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSFIXLOCALVOLUME(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSFIXLOCALVOLUME(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSFIXLOCALVOLUME");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSFIXLOCALVOLUME");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSFIXLOCALVOLUME");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct ndr_push *ndr, int flags, const struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct ndr_pull *ndr, int flags, struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRDFSMANAGERREPORTSITEINFO");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRDFSMANAGERREPORTSITEINFO");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRDFSMANAGERREPORTSITEINFO");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_srvsvc_NETRSERVERTRANSPORTDELEX(struct ndr_push *ndr, int flags, const struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_srvsvc_NETRSERVERTRANSPORTDELEX(struct ndr_pull *ndr, int flags, struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_srvsvc_NETRSERVERTRANSPORTDELEX(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
-{
- ndr_print_struct(ndr, name, "srvsvc_NETRSERVERTRANSPORTDELEX");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "srvsvc_NETRSERVERTRANSPORTDELEX");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "srvsvc_NETRSERVERTRANSPORTDELEX");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call srvsvc_calls[] = {
- {
- "srvsvc_NetCharDevEnum",
- sizeof(struct srvsvc_NetCharDevEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevEnum,
- False,
- },
- {
- "srvsvc_NetCharDevGetInfo",
- sizeof(struct srvsvc_NetCharDevGetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevGetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevGetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevGetInfo,
- False,
- },
- {
- "srvsvc_NetCharDevControl",
- sizeof(struct srvsvc_NetCharDevControl),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevControl,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevControl,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevControl,
- False,
- },
- {
- "srvsvc_NetCharDevQEnum",
- sizeof(struct srvsvc_NetCharDevQEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevQEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevQEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevQEnum,
- False,
- },
- {
- "srvsvc_NetCharDevQGetInfo",
- sizeof(struct srvsvc_NetCharDevQGetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevQGetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevQGetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevQGetInfo,
- False,
- },
- {
- "srvsvc_NetCharDevQSetInfo",
- sizeof(struct srvsvc_NetCharDevQSetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevQSetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevQSetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevQSetInfo,
- False,
- },
- {
- "srvsvc_NetCharDevQPurge",
- sizeof(struct srvsvc_NetCharDevQPurge),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevQPurge,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevQPurge,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevQPurge,
- False,
- },
- {
- "srvsvc_NetCharDevQPurgeSelf",
- sizeof(struct srvsvc_NetCharDevQPurgeSelf),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetCharDevQPurgeSelf,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetCharDevQPurgeSelf,
- (ndr_print_function_t) ndr_print_srvsvc_NetCharDevQPurgeSelf,
- False,
- },
- {
- "srvsvc_NetConnEnum",
- sizeof(struct srvsvc_NetConnEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetConnEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetConnEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetConnEnum,
- False,
- },
- {
- "srvsvc_NetFileEnum",
- sizeof(struct srvsvc_NetFileEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetFileEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetFileEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetFileEnum,
- False,
- },
- {
- "srvsvc_NetFileGetInfo",
- sizeof(struct srvsvc_NetFileGetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetFileGetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetFileGetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetFileGetInfo,
- False,
- },
- {
- "srvsvc_NetFileClose",
- sizeof(struct srvsvc_NetFileClose),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetFileClose,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetFileClose,
- (ndr_print_function_t) ndr_print_srvsvc_NetFileClose,
- False,
- },
- {
- "srvsvc_NetSessEnum",
- sizeof(struct srvsvc_NetSessEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetSessEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetSessEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetSessEnum,
- False,
- },
- {
- "srvsvc_NetSessDel",
- sizeof(struct srvsvc_NetSessDel),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetSessDel,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetSessDel,
- (ndr_print_function_t) ndr_print_srvsvc_NetSessDel,
- False,
- },
- {
- "srvsvc_NetShareAdd",
- sizeof(struct srvsvc_NetShareAdd),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareAdd,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareAdd,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareAdd,
- False,
- },
- {
- "srvsvc_NetShareEnumAll",
- sizeof(struct srvsvc_NetShareEnumAll),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareEnumAll,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareEnumAll,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareEnumAll,
- False,
- },
- {
- "srvsvc_NetShareGetInfo",
- sizeof(struct srvsvc_NetShareGetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareGetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareGetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareGetInfo,
- False,
- },
- {
- "srvsvc_NetShareSetInfo",
- sizeof(struct srvsvc_NetShareSetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareSetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareSetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareSetInfo,
- False,
- },
- {
- "srvsvc_NetShareDel",
- sizeof(struct srvsvc_NetShareDel),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareDel,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareDel,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareDel,
- False,
- },
- {
- "srvsvc_NetShareDelSticky",
- sizeof(struct srvsvc_NetShareDelSticky),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareDelSticky,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareDelSticky,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareDelSticky,
- False,
- },
- {
- "srvsvc_NetShareCheck",
- sizeof(struct srvsvc_NetShareCheck),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareCheck,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareCheck,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareCheck,
- False,
- },
- {
- "srvsvc_NetSrvGetInfo",
- sizeof(struct srvsvc_NetSrvGetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetSrvGetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetSrvGetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetSrvGetInfo,
- False,
- },
- {
- "srvsvc_NetSrvSetInfo",
- sizeof(struct srvsvc_NetSrvSetInfo),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetSrvSetInfo,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetSrvSetInfo,
- (ndr_print_function_t) ndr_print_srvsvc_NetSrvSetInfo,
- False,
- },
- {
- "srvsvc_NetDiskEnum",
- sizeof(struct srvsvc_NetDiskEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetDiskEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetDiskEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetDiskEnum,
- False,
- },
- {
- "srvsvc_NetServerStatisticsGet",
- sizeof(struct srvsvc_NetServerStatisticsGet),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetServerStatisticsGet,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetServerStatisticsGet,
- (ndr_print_function_t) ndr_print_srvsvc_NetServerStatisticsGet,
- False,
- },
- {
- "srvsvc_NetTransportAdd",
- sizeof(struct srvsvc_NetTransportAdd),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetTransportAdd,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetTransportAdd,
- (ndr_print_function_t) ndr_print_srvsvc_NetTransportAdd,
- False,
- },
- {
- "srvsvc_NetTransportEnum",
- sizeof(struct srvsvc_NetTransportEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetTransportEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetTransportEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetTransportEnum,
- False,
- },
- {
- "srvsvc_NetTransportDel",
- sizeof(struct srvsvc_NetTransportDel),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetTransportDel,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetTransportDel,
- (ndr_print_function_t) ndr_print_srvsvc_NetTransportDel,
- False,
- },
- {
- "srvsvc_NetRemoteTOD",
- sizeof(struct srvsvc_NetRemoteTOD),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetRemoteTOD,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetRemoteTOD,
- (ndr_print_function_t) ndr_print_srvsvc_NetRemoteTOD,
- False,
- },
- {
- "srvsvc_NetSetServiceBits",
- sizeof(struct srvsvc_NetSetServiceBits),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetSetServiceBits,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetSetServiceBits,
- (ndr_print_function_t) ndr_print_srvsvc_NetSetServiceBits,
- False,
- },
- {
- "srvsvc_NetPathType",
- sizeof(struct srvsvc_NetPathType),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetPathType,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetPathType,
- (ndr_print_function_t) ndr_print_srvsvc_NetPathType,
- False,
- },
- {
- "srvsvc_NetPathCanonicalize",
- sizeof(struct srvsvc_NetPathCanonicalize),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetPathCanonicalize,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetPathCanonicalize,
- (ndr_print_function_t) ndr_print_srvsvc_NetPathCanonicalize,
- False,
- },
- {
- "srvsvc_NetPathCompare",
- sizeof(struct srvsvc_NetPathCompare),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetPathCompare,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetPathCompare,
- (ndr_print_function_t) ndr_print_srvsvc_NetPathCompare,
- False,
- },
- {
- "srvsvc_NetNameValidate",
- sizeof(struct srvsvc_NetNameValidate),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetNameValidate,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetNameValidate,
- (ndr_print_function_t) ndr_print_srvsvc_NetNameValidate,
- False,
- },
- {
- "srvsvc_NETRPRNAMECANONICALIZE",
- sizeof(struct srvsvc_NETRPRNAMECANONICALIZE),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRPRNAMECANONICALIZE,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRPRNAMECANONICALIZE,
- (ndr_print_function_t) ndr_print_srvsvc_NETRPRNAMECANONICALIZE,
- False,
- },
- {
- "srvsvc_NetPRNameCompare",
- sizeof(struct srvsvc_NetPRNameCompare),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetPRNameCompare,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetPRNameCompare,
- (ndr_print_function_t) ndr_print_srvsvc_NetPRNameCompare,
- False,
- },
- {
- "srvsvc_NetShareEnum",
- sizeof(struct srvsvc_NetShareEnum),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareEnum,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareEnum,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareEnum,
- False,
- },
- {
- "srvsvc_NetShareDelStart",
- sizeof(struct srvsvc_NetShareDelStart),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareDelStart,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareDelStart,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareDelStart,
- False,
- },
- {
- "srvsvc_NetShareDelCommit",
- sizeof(struct srvsvc_NetShareDelCommit),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetShareDelCommit,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetShareDelCommit,
- (ndr_print_function_t) ndr_print_srvsvc_NetShareDelCommit,
- False,
- },
- {
- "srvsvc_NetGetFileSecurity",
- sizeof(struct srvsvc_NetGetFileSecurity),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetGetFileSecurity,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetGetFileSecurity,
- (ndr_print_function_t) ndr_print_srvsvc_NetGetFileSecurity,
- False,
- },
- {
- "srvsvc_NetSetFileSecurity",
- sizeof(struct srvsvc_NetSetFileSecurity),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetSetFileSecurity,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetSetFileSecurity,
- (ndr_print_function_t) ndr_print_srvsvc_NetSetFileSecurity,
- False,
- },
- {
- "srvsvc_NetServerTransportAddEx",
- sizeof(struct srvsvc_NetServerTransportAddEx),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetServerTransportAddEx,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetServerTransportAddEx,
- (ndr_print_function_t) ndr_print_srvsvc_NetServerTransportAddEx,
- False,
- },
- {
- "srvsvc_NetServerSetServiceBitsEx",
- sizeof(struct srvsvc_NetServerSetServiceBitsEx),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NetServerSetServiceBitsEx,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NetServerSetServiceBitsEx,
- (ndr_print_function_t) ndr_print_srvsvc_NetServerSetServiceBitsEx,
- False,
- },
- {
- "srvsvc_NETRDFSGETVERSION",
- sizeof(struct srvsvc_NETRDFSGETVERSION),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSGETVERSION,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSGETVERSION,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSGETVERSION,
- False,
- },
- {
- "srvsvc_NETRDFSCREATELOCALPARTITION",
- sizeof(struct srvsvc_NETRDFSCREATELOCALPARTITION),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSCREATELOCALPARTITION,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSCREATELOCALPARTITION,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSCREATELOCALPARTITION,
- False,
- },
- {
- "srvsvc_NETRDFSDELETELOCALPARTITION",
- sizeof(struct srvsvc_NETRDFSDELETELOCALPARTITION),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSDELETELOCALPARTITION,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSDELETELOCALPARTITION,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSDELETELOCALPARTITION,
- False,
- },
- {
- "srvsvc_NETRDFSSETLOCALVOLUMESTATE",
- sizeof(struct srvsvc_NETRDFSSETLOCALVOLUMESTATE),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSSETLOCALVOLUMESTATE,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSSETLOCALVOLUMESTATE,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSSETLOCALVOLUMESTATE,
- False,
- },
- {
- "srvsvc_NETRDFSSETSERVERINFO",
- sizeof(struct srvsvc_NETRDFSSETSERVERINFO),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSSETSERVERINFO,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSSETSERVERINFO,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSSETSERVERINFO,
- False,
- },
- {
- "srvsvc_NETRDFSCREATEEXITPOINT",
- sizeof(struct srvsvc_NETRDFSCREATEEXITPOINT),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSCREATEEXITPOINT,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSCREATEEXITPOINT,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSCREATEEXITPOINT,
- False,
- },
- {
- "srvsvc_NETRDFSDELETEEXITPOINT",
- sizeof(struct srvsvc_NETRDFSDELETEEXITPOINT),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSDELETEEXITPOINT,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSDELETEEXITPOINT,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSDELETEEXITPOINT,
- False,
- },
- {
- "srvsvc_NETRDFSMODIFYPREFIX",
- sizeof(struct srvsvc_NETRDFSMODIFYPREFIX),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSMODIFYPREFIX,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSMODIFYPREFIX,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSMODIFYPREFIX,
- False,
- },
- {
- "srvsvc_NETRDFSFIXLOCALVOLUME",
- sizeof(struct srvsvc_NETRDFSFIXLOCALVOLUME),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSFIXLOCALVOLUME,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSFIXLOCALVOLUME,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSFIXLOCALVOLUME,
- False,
- },
- {
- "srvsvc_NETRDFSMANAGERREPORTSITEINFO",
- sizeof(struct srvsvc_NETRDFSMANAGERREPORTSITEINFO),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRDFSMANAGERREPORTSITEINFO,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRDFSMANAGERREPORTSITEINFO,
- (ndr_print_function_t) ndr_print_srvsvc_NETRDFSMANAGERREPORTSITEINFO,
- False,
- },
- {
- "srvsvc_NETRSERVERTRANSPORTDELEX",
- sizeof(struct srvsvc_NETRSERVERTRANSPORTDELEX),
- (ndr_push_flags_fn_t) ndr_push_srvsvc_NETRSERVERTRANSPORTDELEX,
- (ndr_pull_flags_fn_t) ndr_pull_srvsvc_NETRSERVERTRANSPORTDELEX,
- (ndr_print_function_t) ndr_print_srvsvc_NETRSERVERTRANSPORTDELEX,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const srvsvc_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\srvsvc]",
- "ncacn_ip_tcp:",
- "ncalrpc:",
-};
-
-const struct dcerpc_endpoint_list srvsvc_endpoints = {
- .count = 3,
- .names = srvsvc_endpoint_strings
-};
-
-const char * const srvsvc_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list srvsvc_authservices = {
- .count = 3,
- .names = srvsvc_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_srvsvc = {
- .name = "srvsvc",
- .syntax_id = {
- {0x4b324fc8,0x1670,0x01d3,{0x12,0x78},{0x5a,0x47,0xbf,0x6e,0xe1,0x88}},
- DCERPC_SRVSVC_VERSION
- },
- .helpstring = DCERPC_SRVSVC_HELPSTRING,
- .num_calls = 54,
- .calls = srvsvc_calls,
- .endpoints = &srvsvc_endpoints,
- .authservices = &srvsvc_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_svcctl.c b/source/librpc/gen_ndr/ndr_svcctl.c
deleted file mode 100644
index f3ea9862a99..00000000000
--- a/source/librpc/gen_ndr/ndr_svcctl.c
+++ /dev/null
@@ -1,5682 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_svcctl.h"
-
-NTSTATUS ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->lock_owner) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
-{
- uint32_t _ptr_lock_owner;
- TALLOC_CTX *_mem_save_lock_owner_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
- if (_ptr_lock_owner) {
- NDR_PULL_ALLOC(ndr, r->lock_owner);
- } else {
- r->lock_owner = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->lock_owner) {
- _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
- if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
-{
- ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
- ndr->depth++;
- ndr_print_uint32(ndr, "is_locked", r->is_locked);
- ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
- ndr->depth++;
- if (r->lock_owner) {
- ndr_print_string(ndr, "lock_owner", r->lock_owner);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->win32_exit_code));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->win32_exit_code));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
-{
- ndr_print_struct(ndr, name, "SERVICE_STATUS");
- ndr->depth++;
- ndr_print_uint32(ndr, "type", r->type);
- ndr_print_uint32(ndr, "state", r->state);
- ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted);
- ndr_print_uint32(ndr, "win32_exit_code", r->win32_exit_code);
- ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
- ndr_print_uint32(ndr, "check_point", r->check_point);
- ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
- ndr->flags = _flags_save_string;
- }
- NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
- }
- if (ndr_flags & NDR_BUFFERS) {
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- if (r->service_name) {
- NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- if (r->display_name) {
- NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
- }
- ndr->flags = _flags_save_string;
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *r)
-{
- uint32_t _ptr_service_name;
- TALLOC_CTX *_mem_save_service_name_0;
- uint32_t _ptr_display_name;
- TALLOC_CTX *_mem_save_display_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
- if (_ptr_service_name) {
- NDR_PULL_ALLOC(ndr, r->service_name);
- NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
- } else {
- r->service_name = NULL;
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
- if (_ptr_display_name) {
- NDR_PULL_ALLOC(ndr, r->display_name);
- NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
- } else {
- r->display_name = NULL;
- }
- ndr->flags = _flags_save_string;
- }
- NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
- }
- if (ndr_flags & NDR_BUFFERS) {
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- if (r->service_name) {
- struct ndr_pull_save _relative_save;
- ndr_pull_save(ndr, &_relative_save);
- NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
- _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
- ndr_pull_restore(ndr, &_relative_save);
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
- if (r->display_name) {
- struct ndr_pull_save _relative_save;
- ndr_pull_save(ndr, &_relative_save);
- NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
- _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
- ndr_pull_restore(ndr, &_relative_save);
- }
- ndr->flags = _flags_save_string;
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
-{
- ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
- ndr->depth++;
- ndr_print_ptr(ndr, "service_name", r->service_name);
- ndr->depth++;
- if (r->service_name) {
- ndr_print_string(ndr, "service_name", r->service_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name", r->display_name);
- ndr->depth++;
- if (r->display_name) {
- ndr_print_string(ndr, "display_name", r->display_name);
- }
- ndr->depth--;
- ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
- ndr->depth--;
-}
-
-_PUBLIC_ NTSTATUS ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.handle);
- *r->out.handle = *r->in.handle;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
-{
- ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.control));
- }
- if (flags & NDR_OUT) {
- if (r->out.service_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_service_status_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.control));
- NDR_PULL_ALLOC(ndr, r->out.service_status);
- ZERO_STRUCTP(r->out.service_status);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.service_status);
- }
- _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
-{
- ndr_print_struct(ndr, name, "svcctl_ControlService");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_ControlService");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "control", r->in.control);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_ControlService");
- ndr->depth++;
- ndr_print_ptr(ndr, "service_status", r->out.service_status);
- ndr->depth++;
- ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
-{
- ndr_print_struct(ndr, name, "svcctl_DeleteService");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_DeleteService");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_DeleteService");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.lock == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_lock_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.lock);
- ZERO_STRUCTP(r->out.lock);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.lock);
- }
- _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
-{
- ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
- ndr->depth++;
- ndr_print_ptr(ndr, "lock", r->out.lock);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "lock", r->out.lock);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
-{
- ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.service_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_service_status_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.service_status);
- ZERO_STRUCTP(r->out.service_status);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.service_status);
- }
- _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
- ndr->depth++;
- ndr_print_ptr(ndr, "service_status", r->out.service_status);
- ndr->depth++;
- ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
-{
- ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
-{
- if (flags & NDR_IN) {
- if (r->in.lock == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
- }
- if (flags & NDR_OUT) {
- if (r->out.lock == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
-{
- TALLOC_CTX *_mem_save_lock_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.lock);
- }
- _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.lock);
- *r->out.lock = *r->in.lock;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.lock);
- }
- _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
-{
- ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
- ndr->depth++;
- ndr_print_ptr(ndr, "lock", r->in.lock);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "lock", r->in.lock);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
- ndr->depth++;
- ndr_print_ptr(ndr, "lock", r->out.lock);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "lock", r->out.lock);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
-{
- ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "bits", r->in.bits);
- ndr_print_uint32(ndr, "bitson", r->in.bitson);
- ndr_print_uint32(ndr, "immediate", r->in.immediate);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
- if (r->in.binary_path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
- if (r->in.load_order_group) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
- if (r->in.dependencies) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
- if (r->in.service_start_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
- if (r->in.password) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
- if (r->in.display_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.tag_id == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
-{
- uint32_t _ptr_binary_path;
- uint32_t _ptr_load_order_group;
- uint32_t _ptr_dependencies;
- uint32_t _ptr_service_start_name;
- uint32_t _ptr_password;
- uint32_t _ptr_display_name;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_binary_path_0;
- TALLOC_CTX *_mem_save_load_order_group_0;
- TALLOC_CTX *_mem_save_tag_id_0;
- TALLOC_CTX *_mem_save_dependencies_0;
- TALLOC_CTX *_mem_save_service_start_name_0;
- TALLOC_CTX *_mem_save_password_0;
- TALLOC_CTX *_mem_save_display_name_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
- if (_ptr_binary_path) {
- NDR_PULL_ALLOC(ndr, r->in.binary_path);
- } else {
- r->in.binary_path = NULL;
- }
- if (r->in.binary_path) {
- _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
- if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
- if (_ptr_load_order_group) {
- NDR_PULL_ALLOC(ndr, r->in.load_order_group);
- } else {
- r->in.load_order_group = NULL;
- }
- if (r->in.load_order_group) {
- _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
- if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
- if (_ptr_dependencies) {
- NDR_PULL_ALLOC(ndr, r->in.dependencies);
- } else {
- r->in.dependencies = NULL;
- }
- if (r->in.dependencies) {
- _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
- if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
- if (_ptr_service_start_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_start_name);
- } else {
- r->in.service_start_name = NULL;
- }
- if (r->in.service_start_name) {
- _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
- if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->in.password);
- } else {
- r->in.password = NULL;
- }
- if (r->in.password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
- if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
- if (_ptr_display_name) {
- NDR_PULL_ALLOC(ndr, r->in.display_name);
- } else {
- r->in.display_name = NULL;
- }
- if (r->in.display_name) {
- _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
- if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.display_name), ndr_get_array_length(ndr, &r->in.display_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.tag_id);
- ZERO_STRUCTP(r->out.tag_id);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.tag_id);
- }
- _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "start", r->in.start);
- ndr_print_uint32(ndr, "error", r->in.error);
- ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
- ndr->depth++;
- if (r->in.binary_path) {
- ndr_print_string(ndr, "binary_path", r->in.binary_path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
- ndr->depth++;
- if (r->in.load_order_group) {
- ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
- ndr->depth++;
- if (r->in.dependencies) {
- ndr_print_string(ndr, "dependencies", r->in.dependencies);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
- ndr->depth++;
- if (r->in.service_start_name) {
- ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "password", r->in.password);
- ndr->depth++;
- if (r->in.password) {
- ndr_print_string(ndr, "password", r->in.password);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name", r->in.display_name);
- ndr->depth++;
- if (r->in.display_name) {
- ndr_print_string(ndr, "display_name", r->in.display_name);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
- ndr->depth++;
- ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
- ndr->depth++;
- ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.scmanager_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
- if (r->in.DisplayName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
- if (r->in.LoadOrderGroupKey) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
- if (r->in.TagId) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
- if (r->in.dependencies) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
- if (r->in.service_start_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
- if (r->in.password) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
- if (r->out.TagId) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
- }
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
-{
- uint32_t _ptr_DisplayName;
- uint32_t _ptr_LoadOrderGroupKey;
- uint32_t _ptr_TagId;
- uint32_t _ptr_dependencies;
- uint32_t _ptr_service_start_name;
- uint32_t _ptr_password;
- TALLOC_CTX *_mem_save_scmanager_handle_0;
- TALLOC_CTX *_mem_save_DisplayName_0;
- TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
- TALLOC_CTX *_mem_save_TagId_0;
- TALLOC_CTX *_mem_save_dependencies_0;
- TALLOC_CTX *_mem_save_service_start_name_0;
- TALLOC_CTX *_mem_save_password_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
- }
- _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
- if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
- if (_ptr_DisplayName) {
- NDR_PULL_ALLOC(ndr, r->in.DisplayName);
- } else {
- r->in.DisplayName = NULL;
- }
- if (r->in.DisplayName) {
- _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
- if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
- if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
- if (_ptr_LoadOrderGroupKey) {
- NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
- } else {
- r->in.LoadOrderGroupKey = NULL;
- }
- if (r->in.LoadOrderGroupKey) {
- _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
- if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
- if (_ptr_TagId) {
- NDR_PULL_ALLOC(ndr, r->in.TagId);
- } else {
- r->in.TagId = NULL;
- }
- if (r->in.TagId) {
- _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
- if (_ptr_dependencies) {
- NDR_PULL_ALLOC(ndr, r->in.dependencies);
- } else {
- r->in.dependencies = NULL;
- }
- if (r->in.dependencies) {
- _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
- NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
- if (_ptr_service_start_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_start_name);
- } else {
- r->in.service_start_name = NULL;
- }
- if (r->in.service_start_name) {
- _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
- if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->in.password);
- } else {
- r->in.password = NULL;
- }
- if (r->in.password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
- NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- if (r->in.dependencies) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
- }
- if (r->in.password) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
- if (_ptr_TagId) {
- NDR_PULL_ALLOC(ndr, r->out.TagId);
- } else {
- r->out.TagId = NULL;
- }
- if (r->out.TagId) {
- _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
- ndr->depth++;
- ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
- ndr->depth--;
- ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
- ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
- ndr->depth++;
- if (r->in.DisplayName) {
- ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "start_type", r->in.start_type);
- ndr_print_uint32(ndr, "error_control", r->in.error_control);
- ndr_print_string(ndr, "binary_path", r->in.binary_path);
- ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
- ndr->depth++;
- if (r->in.LoadOrderGroupKey) {
- ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "TagId", r->in.TagId);
- ndr->depth++;
- if (r->in.TagId) {
- ndr_print_uint32(ndr, "TagId", *r->in.TagId);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
- ndr->depth++;
- if (r->in.dependencies) {
- ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
- ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
- ndr->depth++;
- if (r->in.service_start_name) {
- ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "password", r->in.password);
- ndr->depth++;
- if (r->in.password) {
- ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "password_size", r->in.password_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
- ndr->depth++;
- ndr_print_ptr(ndr, "TagId", r->out.TagId);
- ndr->depth++;
- if (r->out.TagId) {
- ndr_print_uint32(ndr, "TagId", *r->out.TagId);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.service == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
- if (r->out.service_status) {
- NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
- }
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
-{
- uint32_t _ptr_service_status;
- TALLOC_CTX *_mem_save_service_0;
- TALLOC_CTX *_mem_save_service_status_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- TALLOC_CTX *_mem_save_services_returned_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.service);
- }
- _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- ZERO_STRUCTP(r->out.services_returned);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
- if (_ptr_service_status) {
- NDR_PULL_ALLOC(ndr, r->out.service_status);
- } else {
- r->out.service_status = NULL;
- }
- if (r->out.service_status) {
- _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
- NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- }
- _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
- ndr->depth++;
- ndr_print_ptr(ndr, "service", r->in.service);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "service", r->in.service);
- ndr->depth--;
- ndr_print_uint32(ndr, "state", r->in.state);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
- ndr->depth++;
- ndr_print_ptr(ndr, "service_status", r->out.service_status);
- ndr->depth++;
- if (r->out.service_status) {
- ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
-{
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- TALLOC_CTX *_mem_save_services_returned_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- ZERO_STRUCTP(r->out.services_returned);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
- NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- }
- _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.service) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "state", r->in.state);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
- if (r->in.MachineName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
- if (r->in.DatabaseName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
-{
- uint32_t _ptr_MachineName;
- uint32_t _ptr_DatabaseName;
- TALLOC_CTX *_mem_save_MachineName_0;
- TALLOC_CTX *_mem_save_DatabaseName_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
- if (_ptr_MachineName) {
- NDR_PULL_ALLOC(ndr, r->in.MachineName);
- } else {
- r->in.MachineName = NULL;
- }
- if (r->in.MachineName) {
- _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
- if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
- if (_ptr_DatabaseName) {
- NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
- } else {
- r->in.DatabaseName = NULL;
- }
- if (r->in.DatabaseName) {
- _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
- if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
- ndr->depth++;
- ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
- ndr->depth++;
- if (r->in.MachineName) {
- ndr_print_string(ndr, "MachineName", r->in.MachineName);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
- ndr->depth++;
- if (r->in.DatabaseName) {
- ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.scmanager_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
-{
- TALLOC_CTX *_mem_save_scmanager_handle_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
- }
- _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
- if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
- ndr->depth++;
- ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
- ndr->depth--;
- ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- }
- if (flags & NDR_OUT) {
- NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- if (r->out.lock_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
- if (r->out.required_buf_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_lock_status_0;
- TALLOC_CTX *_mem_save_required_buf_size_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.lock_status);
- ZERO_STRUCTP(r->out.lock_status);
- NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
- ZERO_STRUCTP(r->out.required_buf_size);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.lock_status);
- }
- _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
- }
- _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
- ndr->depth++;
- ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
- ndr->depth++;
- ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
- ndr->depth--;
- ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
- ndr->depth++;
- ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
- if (r->in.Arguments) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
-{
- uint32_t _ptr_Arguments;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_Arguments_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
- if (_ptr_Arguments) {
- NDR_PULL_ALLOC(ndr, r->in.Arguments);
- } else {
- r->in.Arguments = NULL;
- }
- if (r->in.Arguments) {
- _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
- if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.Arguments), ndr_get_array_length(ndr, &r->in.Arguments));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_StartServiceW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
- ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
- ndr->depth++;
- if (r->in.Arguments) {
- ndr_print_string(ndr, "Arguments", r->in.Arguments);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
- if (r->in.service_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
- if (r->in.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
- if (r->out.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
-{
- uint32_t _ptr_service_name;
- uint32_t _ptr_display_name;
- uint32_t _ptr_display_name_length;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_service_name_0;
- TALLOC_CTX *_mem_save_display_name_0;
- TALLOC_CTX *_mem_save_display_name_length_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
- if (_ptr_service_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_name);
- } else {
- r->in.service_name = NULL;
- }
- if (r->in.service_name) {
- _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
- if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->in.display_name_length);
- } else {
- r->in.display_name_length = NULL;
- }
- if (r->in.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.display_name);
- ZERO_STRUCTP(r->out.display_name);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.display_name);
- }
- _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_display_name));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
- if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.display_name), ndr_get_array_length(ndr, r->out.display_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->out.display_name_length);
- } else {
- r->out.display_name_length = NULL;
- }
- if (r->out.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "service_name", r->in.service_name);
- ndr->depth++;
- if (r->in.service_name) {
- ndr_print_string(ndr, "service_name", r->in.service_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
- ndr->depth++;
- if (r->in.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
- ndr->depth++;
- ndr_print_ptr(ndr, "display_name", r->out.display_name);
- ndr->depth++;
- ndr_print_ptr(ndr, "display_name", *r->out.display_name);
- ndr->depth++;
- ndr_print_string(ndr, "display_name", *r->out.display_name);
- ndr->depth--;
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
- ndr->depth++;
- if (r->out.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
- if (r->in.service_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
- if (r->in.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
- if (r->out.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
-{
- uint32_t _ptr_service_name;
- uint32_t _ptr_key_name;
- uint32_t _ptr_display_name_length;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_service_name_0;
- TALLOC_CTX *_mem_save_key_name_0;
- TALLOC_CTX *_mem_save_display_name_length_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
- if (_ptr_service_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_name);
- } else {
- r->in.service_name = NULL;
- }
- if (r->in.service_name) {
- _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
- if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->in.display_name_length);
- } else {
- r->in.display_name_length = NULL;
- }
- if (r->in.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.key_name);
- ZERO_STRUCTP(r->out.key_name);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.key_name);
- }
- _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_key_name));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
- if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.key_name), ndr_get_array_length(ndr, r->out.key_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->out.display_name_length);
- } else {
- r->out.display_name_length = NULL;
- }
- if (r->out.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "service_name", r->in.service_name);
- ndr->depth++;
- if (r->in.service_name) {
- ndr_print_string(ndr, "service_name", r->in.service_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
- ndr->depth++;
- if (r->in.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
- ndr->depth++;
- ndr_print_ptr(ndr, "key_name", r->out.key_name);
- ndr->depth++;
- ndr_print_ptr(ndr, "key_name", *r->out.key_name);
- ndr->depth++;
- ndr_print_string(ndr, "key_name", *r->out.key_name);
- ndr->depth--;
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
- ndr->depth++;
- if (r->out.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "bits", r->in.bits);
- ndr_print_uint32(ndr, "bitson", r->in.bitson);
- ndr_print_uint32(ndr, "immediate", r->in.immediate);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
- if (r->in.binary_path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
- if (r->in.load_order_group) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
- if (r->in.dependencies) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
- if (r->in.service_start_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
- if (r->in.password) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
- if (r->in.display_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.tag_id == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
-{
- uint32_t _ptr_binary_path;
- uint32_t _ptr_load_order_group;
- uint32_t _ptr_dependencies;
- uint32_t _ptr_service_start_name;
- uint32_t _ptr_password;
- uint32_t _ptr_display_name;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_binary_path_0;
- TALLOC_CTX *_mem_save_load_order_group_0;
- TALLOC_CTX *_mem_save_tag_id_0;
- TALLOC_CTX *_mem_save_dependencies_0;
- TALLOC_CTX *_mem_save_service_start_name_0;
- TALLOC_CTX *_mem_save_password_0;
- TALLOC_CTX *_mem_save_display_name_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
- if (_ptr_binary_path) {
- NDR_PULL_ALLOC(ndr, r->in.binary_path);
- } else {
- r->in.binary_path = NULL;
- }
- if (r->in.binary_path) {
- _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
- if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
- if (_ptr_load_order_group) {
- NDR_PULL_ALLOC(ndr, r->in.load_order_group);
- } else {
- r->in.load_order_group = NULL;
- }
- if (r->in.load_order_group) {
- _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
- if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
- if (_ptr_dependencies) {
- NDR_PULL_ALLOC(ndr, r->in.dependencies);
- } else {
- r->in.dependencies = NULL;
- }
- if (r->in.dependencies) {
- _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
- if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
- if (_ptr_service_start_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_start_name);
- } else {
- r->in.service_start_name = NULL;
- }
- if (r->in.service_start_name) {
- _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
- if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->in.password);
- } else {
- r->in.password = NULL;
- }
- if (r->in.password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
- if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
- if (_ptr_display_name) {
- NDR_PULL_ALLOC(ndr, r->in.display_name);
- } else {
- r->in.display_name = NULL;
- }
- if (r->in.display_name) {
- _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
- if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.display_name), ndr_get_array_length(ndr, &r->in.display_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.tag_id);
- ZERO_STRUCTP(r->out.tag_id);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.tag_id);
- }
- _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "start", r->in.start);
- ndr_print_uint32(ndr, "error", r->in.error);
- ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
- ndr->depth++;
- if (r->in.binary_path) {
- ndr_print_string(ndr, "binary_path", r->in.binary_path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
- ndr->depth++;
- if (r->in.load_order_group) {
- ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
- ndr->depth++;
- if (r->in.dependencies) {
- ndr_print_string(ndr, "dependencies", r->in.dependencies);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
- ndr->depth++;
- if (r->in.service_start_name) {
- ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "password", r->in.password);
- ndr->depth++;
- if (r->in.password) {
- ndr_print_string(ndr, "password", r->in.password);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name", r->in.display_name);
- ndr->depth++;
- if (r->in.display_name) {
- ndr_print_string(ndr, "display_name", r->in.display_name);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
- ndr->depth++;
- ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
- ndr->depth++;
- ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
- if (r->in.ServiceName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
- if (r->in.DisplayName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
- if (r->in.binary_path) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
- if (r->in.LoadOrderGroupKey) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
- if (r->in.dependencies) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
- if (r->in.service_start_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
- if (r->in.password) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
- if (r->out.TagId) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
-{
- uint32_t _ptr_ServiceName;
- uint32_t _ptr_DisplayName;
- uint32_t _ptr_binary_path;
- uint32_t _ptr_LoadOrderGroupKey;
- uint32_t _ptr_TagId;
- uint32_t _ptr_dependencies;
- uint32_t _ptr_service_start_name;
- uint32_t _ptr_password;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_ServiceName_0;
- TALLOC_CTX *_mem_save_DisplayName_0;
- TALLOC_CTX *_mem_save_binary_path_0;
- TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
- TALLOC_CTX *_mem_save_TagId_0;
- TALLOC_CTX *_mem_save_dependencies_0;
- TALLOC_CTX *_mem_save_service_start_name_0;
- TALLOC_CTX *_mem_save_password_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
- if (_ptr_ServiceName) {
- NDR_PULL_ALLOC(ndr, r->in.ServiceName);
- } else {
- r->in.ServiceName = NULL;
- }
- if (r->in.ServiceName) {
- _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
- if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
- if (_ptr_DisplayName) {
- NDR_PULL_ALLOC(ndr, r->in.DisplayName);
- } else {
- r->in.DisplayName = NULL;
- }
- if (r->in.DisplayName) {
- _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
- if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
- if (_ptr_binary_path) {
- NDR_PULL_ALLOC(ndr, r->in.binary_path);
- } else {
- r->in.binary_path = NULL;
- }
- if (r->in.binary_path) {
- _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
- if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
- if (_ptr_LoadOrderGroupKey) {
- NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
- } else {
- r->in.LoadOrderGroupKey = NULL;
- }
- if (r->in.LoadOrderGroupKey) {
- _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
- if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
- if (_ptr_dependencies) {
- NDR_PULL_ALLOC(ndr, r->in.dependencies);
- } else {
- r->in.dependencies = NULL;
- }
- if (r->in.dependencies) {
- _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
- if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
- if (_ptr_service_start_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_start_name);
- } else {
- r->in.service_start_name = NULL;
- }
- if (r->in.service_start_name) {
- _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
- if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
- if (_ptr_password) {
- NDR_PULL_ALLOC(ndr, r->in.password);
- } else {
- r->in.password = NULL;
- }
- if (r->in.password) {
- _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
- if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
- if (_ptr_TagId) {
- NDR_PULL_ALLOC(ndr, r->out.TagId);
- } else {
- r->out.TagId = NULL;
- }
- if (r->out.TagId) {
- _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
- ndr->depth++;
- if (r->in.ServiceName) {
- ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
- ndr->depth++;
- if (r->in.DisplayName) {
- ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "start_type", r->in.start_type);
- ndr_print_uint32(ndr, "error_control", r->in.error_control);
- ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
- ndr->depth++;
- if (r->in.binary_path) {
- ndr_print_string(ndr, "binary_path", r->in.binary_path);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
- ndr->depth++;
- if (r->in.LoadOrderGroupKey) {
- ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
- ndr->depth++;
- if (r->in.dependencies) {
- ndr_print_string(ndr, "dependencies", r->in.dependencies);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
- ndr->depth++;
- if (r->in.service_start_name) {
- ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "password", r->in.password);
- ndr->depth++;
- if (r->in.password) {
- ndr_print_string(ndr, "password", r->in.password);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
- ndr->depth++;
- ndr_print_ptr(ndr, "TagId", r->out.TagId);
- ndr->depth++;
- if (r->out.TagId) {
- ndr_print_uint32(ndr, "TagId", *r->out.TagId);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.service == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
- if (r->out.service_status) {
- NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
- }
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
-{
- uint32_t _ptr_service_status;
- TALLOC_CTX *_mem_save_service_0;
- TALLOC_CTX *_mem_save_service_status_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- TALLOC_CTX *_mem_save_services_returned_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.service);
- }
- _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- ZERO_STRUCTP(r->out.services_returned);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
- if (_ptr_service_status) {
- NDR_PULL_ALLOC(ndr, r->out.service_status);
- } else {
- r->out.service_status = NULL;
- }
- if (r->out.service_status) {
- _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
- NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- }
- _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
- ndr->depth++;
- ndr_print_ptr(ndr, "service", r->in.service);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "service", r->in.service);
- ndr->depth--;
- ndr_print_uint32(ndr, "state", r->in.state);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
- ndr->depth++;
- ndr_print_ptr(ndr, "service_status", r->out.service_status);
- ndr->depth++;
- if (r->out.service_status) {
- ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
-{
- uint32_t _ptr_resume_handle;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- TALLOC_CTX *_mem_save_services_returned_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- ZERO_STRUCTP(r->out.services_returned);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
- NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.services_returned);
- }
- _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.service) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "state", r->in.state);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
- if (r->in.MachineName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
- if (r->in.DatabaseName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
-{
- uint32_t _ptr_MachineName;
- uint32_t _ptr_DatabaseName;
- TALLOC_CTX *_mem_save_MachineName_0;
- TALLOC_CTX *_mem_save_DatabaseName_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
- if (_ptr_MachineName) {
- NDR_PULL_ALLOC(ndr, r->in.MachineName);
- } else {
- r->in.MachineName = NULL;
- }
- if (r->in.MachineName) {
- _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
- if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
- if (_ptr_DatabaseName) {
- NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
- } else {
- r->in.DatabaseName = NULL;
- }
- if (r->in.DatabaseName) {
- _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
- if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
- ndr->depth++;
- ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
- ndr->depth++;
- if (r->in.MachineName) {
- ndr_print_string(ndr, "MachineName", r->in.MachineName);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
- ndr->depth++;
- if (r->in.DatabaseName) {
- ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.scmanager_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
- if (r->in.ServiceName) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
-{
- uint32_t _ptr_ServiceName;
- TALLOC_CTX *_mem_save_scmanager_handle_0;
- TALLOC_CTX *_mem_save_ServiceName_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
- }
- _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
- if (_ptr_ServiceName) {
- NDR_PULL_ALLOC(ndr, r->in.ServiceName);
- } else {
- r->in.ServiceName = NULL;
- }
- if (r->in.ServiceName) {
- _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
- if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
- ndr->depth++;
- ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
- ndr->depth++;
- if (r->in.ServiceName) {
- ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- }
- if (flags & NDR_OUT) {
- NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- if (r->out.lock_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
- if (r->out.required_buf_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_lock_status_0;
- TALLOC_CTX *_mem_save_required_buf_size_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.lock_status);
- ZERO_STRUCTP(r->out.lock_status);
- NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
- ZERO_STRUCTP(r->out.required_buf_size);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.lock_status);
- }
- _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
- }
- _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
- ndr->depth++;
- ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
- ndr->depth++;
- ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
- ndr->depth--;
- ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
- ndr->depth++;
- ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
- if (r->in.Arguments) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
-{
- uint32_t _ptr_Arguments;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_Arguments_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
- if (_ptr_Arguments) {
- NDR_PULL_ALLOC(ndr, r->in.Arguments);
- } else {
- r->in.Arguments = NULL;
- }
- if (r->in.Arguments) {
- _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
- if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.Arguments), ndr_get_array_length(ndr, &r->in.Arguments));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_StartServiceA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
- ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
- ndr->depth++;
- if (r->in.Arguments) {
- ndr_print_string(ndr, "Arguments", r->in.Arguments);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
- if (r->in.service_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
- if (r->in.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
- if (r->out.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
-{
- uint32_t _ptr_service_name;
- uint32_t _ptr_display_name;
- uint32_t _ptr_display_name_length;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_service_name_0;
- TALLOC_CTX *_mem_save_display_name_0;
- TALLOC_CTX *_mem_save_display_name_length_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
- if (_ptr_service_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_name);
- } else {
- r->in.service_name = NULL;
- }
- if (r->in.service_name) {
- _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
- if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->in.display_name_length);
- } else {
- r->in.display_name_length = NULL;
- }
- if (r->in.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.display_name);
- ZERO_STRUCTP(r->out.display_name);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.display_name);
- }
- _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_display_name));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
- if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.display_name), ndr_get_array_length(ndr, r->out.display_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->out.display_name_length);
- } else {
- r->out.display_name_length = NULL;
- }
- if (r->out.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "service_name", r->in.service_name);
- ndr->depth++;
- if (r->in.service_name) {
- ndr_print_string(ndr, "service_name", r->in.service_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
- ndr->depth++;
- if (r->in.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
- ndr->depth++;
- ndr_print_ptr(ndr, "display_name", r->out.display_name);
- ndr->depth++;
- ndr_print_ptr(ndr, "display_name", *r->out.display_name);
- ndr->depth++;
- ndr_print_string(ndr, "display_name", *r->out.display_name);
- ndr->depth--;
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
- ndr->depth++;
- if (r->out.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
- if (r->in.service_name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
- if (r->in.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
- if (r->out.display_name_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
-{
- uint32_t _ptr_service_name;
- uint32_t _ptr_key_name;
- uint32_t _ptr_display_name_length;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_service_name_0;
- TALLOC_CTX *_mem_save_key_name_0;
- TALLOC_CTX *_mem_save_display_name_length_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
- if (_ptr_service_name) {
- NDR_PULL_ALLOC(ndr, r->in.service_name);
- } else {
- r->in.service_name = NULL;
- }
- if (r->in.service_name) {
- _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
- if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->in.display_name_length);
- } else {
- r->in.display_name_length = NULL;
- }
- if (r->in.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.key_name);
- ZERO_STRUCTP(r->out.key_name);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.key_name);
- }
- _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_key_name));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
- if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.key_name), ndr_get_array_length(ndr, r->out.key_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
- if (_ptr_display_name_length) {
- NDR_PULL_ALLOC(ndr, r->out.display_name_length);
- } else {
- r->out.display_name_length = NULL;
- }
- if (r->out.display_name_length) {
- _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
-{
- ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "service_name", r->in.service_name);
- ndr->depth++;
- if (r->in.service_name) {
- ndr_print_string(ndr, "service_name", r->in.service_name);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
- ndr->depth++;
- if (r->in.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
- ndr->depth++;
- ndr_print_ptr(ndr, "key_name", r->out.key_name);
- ndr->depth++;
- ndr_print_ptr(ndr, "key_name", *r->out.key_name);
- ndr->depth++;
- ndr_print_string(ndr, "key_name", *r->out.key_name);
- ndr->depth--;
- ndr->depth--;
- ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
- ndr->depth++;
- if (r->out.display_name_length) {
- ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
-{
- ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
- if (r->in.info) {
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- } else {
- r->in.info = NULL;
- }
- if (r->in.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
-{
- ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "info_level", r->in.info_level);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- if (r->in.info) {
- ndr_print_uint8(ndr, "info", *r->in.info);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
- if (r->in.info) {
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
-{
- uint32_t _ptr_info;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_info_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
- if (_ptr_info) {
- NDR_PULL_ALLOC(ndr, r->in.info);
- } else {
- r->in.info = NULL;
- }
- if (r->in.info) {
- _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
-{
- ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "info_level", r->in.info_level);
- ndr_print_ptr(ndr, "info", r->in.info);
- ndr->depth++;
- if (r->in.info) {
- ndr_print_uint8(ndr, "info", *r->in.info);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- }
- if (flags & NDR_OUT) {
- NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "info_level", r->in.info_level);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- }
- if (flags & NDR_OUT) {
- NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "info_level", r->in.info_level);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- }
- if (flags & NDR_OUT) {
- NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
-{
- ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "info_level", r->in.info_level);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
-{
- if (flags & NDR_IN) {
- if (r->in.scmanager == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- if (r->out.service_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- if (r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.group_name, ndr_charset_length(*r->out.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
-{
- uint32_t _ptr_resume_handle;
- uint32_t _ptr_group_name;
- TALLOC_CTX *_mem_save_scmanager_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- TALLOC_CTX *_mem_save_service_returned_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- TALLOC_CTX *_mem_save_group_name_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.scmanager);
- }
- _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- NDR_PULL_ALLOC(ndr, r->out.service_returned);
- ZERO_STRUCTP(r->out.service_returned);
- NDR_PULL_ALLOC(ndr, r->out.group_name);
- ZERO_STRUCTP(r->out.group_name);
- }
- if (flags & NDR_OUT) {
- NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.service_returned);
- }
- _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.group_name);
- }
- _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_group_name));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
- if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.group_name), ndr_get_array_length(ndr, r->out.group_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
-{
- ndr_print_struct(ndr, name, "EnumServicesStatusExA");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
- ndr->depth++;
- ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
- ndr->depth--;
- ndr_print_uint32(ndr, "info_level", r->in.info_level);
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "state", r->in.state);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "group_name", r->out.group_name);
- ndr->depth++;
- ndr_print_ptr(ndr, "group_name", *r->out.group_name);
- ndr->depth++;
- ndr_print_string(ndr, "group_name", *r->out.group_name);
- ndr->depth--;
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
-{
- if (flags & NDR_IN) {
- if (r->in.scmanager == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
- if (r->in.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
- if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
- if (r->out.service_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
- if (r->out.resume_handle) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
- }
- if (r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- if (*r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_ref_ptr(ndr));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.group_name, ndr_charset_length(*r->out.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
-{
- uint32_t _ptr_resume_handle;
- uint32_t _ptr_group_name;
- TALLOC_CTX *_mem_save_scmanager_0;
- TALLOC_CTX *_mem_save_bytes_needed_0;
- TALLOC_CTX *_mem_save_service_returned_0;
- TALLOC_CTX *_mem_save_resume_handle_0;
- TALLOC_CTX *_mem_save_group_name_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.scmanager);
- }
- _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->in.resume_handle);
- } else {
- r->in.resume_handle = NULL;
- }
- if (r->in.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- ZERO_STRUCTP(r->out.bytes_needed);
- NDR_PULL_ALLOC(ndr, r->out.service_returned);
- ZERO_STRUCTP(r->out.service_returned);
- NDR_PULL_ALLOC(ndr, r->out.group_name);
- ZERO_STRUCTP(r->out.group_name);
- }
- if (flags & NDR_OUT) {
- NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
- }
- _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.service_returned);
- }
- _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
- if (_ptr_resume_handle) {
- NDR_PULL_ALLOC(ndr, r->out.resume_handle);
- } else {
- r->out.resume_handle = NULL;
- }
- if (r->out.resume_handle) {
- _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.group_name);
- }
- _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_group_name));
- NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
- NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
- if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.group_name), ndr_get_array_length(ndr, r->out.group_name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
-{
- ndr_print_struct(ndr, name, "EnumServicesStatusExW");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
- ndr->depth++;
- ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
- ndr->depth--;
- ndr_print_uint32(ndr, "info_level", r->in.info_level);
- ndr_print_uint32(ndr, "type", r->in.type);
- ndr_print_uint32(ndr, "state", r->in.state);
- ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
- ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
- ndr->depth++;
- if (r->in.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
- ndr->depth++;
- ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
- ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
- ndr->depth++;
- ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
- ndr->depth--;
- ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
- ndr->depth++;
- ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
- ndr->depth--;
- ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
- ndr->depth++;
- if (r->out.resume_handle) {
- ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "group_name", r->out.group_name);
- ndr->depth++;
- ndr_print_ptr(ndr, "group_name", *r->out.group_name);
- ndr->depth++;
- ndr_print_string(ndr, "group_name", *r->out.group_name);
- ndr->depth--;
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
-{
- ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call svcctl_calls[] = {
- {
- "svcctl_CloseServiceHandle",
- sizeof(struct svcctl_CloseServiceHandle),
- (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
- (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
- False,
- },
- {
- "svcctl_ControlService",
- sizeof(struct svcctl_ControlService),
- (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
- (ndr_print_function_t) ndr_print_svcctl_ControlService,
- False,
- },
- {
- "svcctl_DeleteService",
- sizeof(struct svcctl_DeleteService),
- (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
- (ndr_print_function_t) ndr_print_svcctl_DeleteService,
- False,
- },
- {
- "svcctl_LockServiceDatabase",
- sizeof(struct svcctl_LockServiceDatabase),
- (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
- (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
- False,
- },
- {
- "svcctl_QueryServiceObjectSecurity",
- sizeof(struct svcctl_QueryServiceObjectSecurity),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
- False,
- },
- {
- "svcctl_SetServiceObjectSecurity",
- sizeof(struct svcctl_SetServiceObjectSecurity),
- (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
- (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
- False,
- },
- {
- "svcctl_QueryServiceStatus",
- sizeof(struct svcctl_QueryServiceStatus),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
- False,
- },
- {
- "svcctl_SetServiceStatus",
- sizeof(struct svcctl_SetServiceStatus),
- (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
- (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
- False,
- },
- {
- "svcctl_UnlockServiceDatabase",
- sizeof(struct svcctl_UnlockServiceDatabase),
- (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
- (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
- False,
- },
- {
- "svcctl_NotifyBootConfigStatus",
- sizeof(struct svcctl_NotifyBootConfigStatus),
- (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
- (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
- False,
- },
- {
- "svcctl_SCSetServiceBitsW",
- sizeof(struct svcctl_SCSetServiceBitsW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
- (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
- False,
- },
- {
- "svcctl_ChangeServiceConfigW",
- sizeof(struct svcctl_ChangeServiceConfigW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
- (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
- False,
- },
- {
- "svcctl_CreateServiceW",
- sizeof(struct svcctl_CreateServiceW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
- (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
- False,
- },
- {
- "svcctl_EnumDependentServicesW",
- sizeof(struct svcctl_EnumDependentServicesW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
- (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
- False,
- },
- {
- "svcctl_EnumServicesStatusW",
- sizeof(struct svcctl_EnumServicesStatusW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
- (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
- False,
- },
- {
- "svcctl_OpenSCManagerW",
- sizeof(struct svcctl_OpenSCManagerW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
- (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
- False,
- },
- {
- "svcctl_OpenServiceW",
- sizeof(struct svcctl_OpenServiceW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
- (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
- False,
- },
- {
- "svcctl_QueryServiceConfigW",
- sizeof(struct svcctl_QueryServiceConfigW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
- False,
- },
- {
- "svcctl_QueryServiceLockStatusW",
- sizeof(struct svcctl_QueryServiceLockStatusW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
- False,
- },
- {
- "svcctl_StartServiceW",
- sizeof(struct svcctl_StartServiceW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
- (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
- False,
- },
- {
- "svcctl_GetServiceDisplayNameW",
- sizeof(struct svcctl_GetServiceDisplayNameW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
- (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
- False,
- },
- {
- "svcctl_GetServiceKeyNameW",
- sizeof(struct svcctl_GetServiceKeyNameW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
- (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
- False,
- },
- {
- "svcctl_SCSetServiceBitsA",
- sizeof(struct svcctl_SCSetServiceBitsA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
- (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
- False,
- },
- {
- "svcctl_ChangeServiceConfigA",
- sizeof(struct svcctl_ChangeServiceConfigA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
- (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
- False,
- },
- {
- "svcctl_CreateServiceA",
- sizeof(struct svcctl_CreateServiceA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
- (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
- False,
- },
- {
- "svcctl_EnumDependentServicesA",
- sizeof(struct svcctl_EnumDependentServicesA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
- (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
- False,
- },
- {
- "svcctl_EnumServicesStatusA",
- sizeof(struct svcctl_EnumServicesStatusA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
- (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
- False,
- },
- {
- "svcctl_OpenSCManagerA",
- sizeof(struct svcctl_OpenSCManagerA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
- (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
- False,
- },
- {
- "svcctl_OpenServiceA",
- sizeof(struct svcctl_OpenServiceA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
- (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
- False,
- },
- {
- "svcctl_QueryServiceConfigA",
- sizeof(struct svcctl_QueryServiceConfigA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
- False,
- },
- {
- "svcctl_QueryServiceLockStatusA",
- sizeof(struct svcctl_QueryServiceLockStatusA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
- False,
- },
- {
- "svcctl_StartServiceA",
- sizeof(struct svcctl_StartServiceA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
- (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
- False,
- },
- {
- "svcctl_GetServiceDisplayNameA",
- sizeof(struct svcctl_GetServiceDisplayNameA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
- (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
- False,
- },
- {
- "svcctl_GetServiceKeyNameA",
- sizeof(struct svcctl_GetServiceKeyNameA),
- (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
- (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
- False,
- },
- {
- "svcctl_GetCurrentGroupeStateW",
- sizeof(struct svcctl_GetCurrentGroupeStateW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
- (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
- False,
- },
- {
- "svcctl_EnumServiceGroupW",
- sizeof(struct svcctl_EnumServiceGroupW),
- (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
- (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
- False,
- },
- {
- "svcctl_ChangeServiceConfig2A",
- sizeof(struct svcctl_ChangeServiceConfig2A),
- (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
- (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
- False,
- },
- {
- "svcctl_ChangeServiceConfig2W",
- sizeof(struct svcctl_ChangeServiceConfig2W),
- (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
- (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
- False,
- },
- {
- "svcctl_QueryServiceConfig2A",
- sizeof(struct svcctl_QueryServiceConfig2A),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
- False,
- },
- {
- "svcctl_QueryServiceConfig2W",
- sizeof(struct svcctl_QueryServiceConfig2W),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
- False,
- },
- {
- "svcctl_QueryServiceStatusEx",
- sizeof(struct svcctl_QueryServiceStatusEx),
- (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
- (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
- False,
- },
- {
- "EnumServicesStatusExA",
- sizeof(struct EnumServicesStatusExA),
- (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
- (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
- (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
- False,
- },
- {
- "EnumServicesStatusExW",
- sizeof(struct EnumServicesStatusExW),
- (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
- (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
- (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
- False,
- },
- {
- "svcctl_SCSendTSMessage",
- sizeof(struct svcctl_SCSendTSMessage),
- (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
- (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
- (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const svcctl_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\svcctl]",
- "ncalrpc:",
-};
-
-const struct dcerpc_endpoint_list svcctl_endpoints = {
- .count = 2,
- .names = svcctl_endpoint_strings
-};
-
-const char * const svcctl_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list svcctl_authservices = {
- .count = 2,
- .names = svcctl_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_svcctl = {
- .name = "svcctl",
- .syntax_id = {
- {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
- DCERPC_SVCCTL_VERSION
- },
- .helpstring = DCERPC_SVCCTL_HELPSTRING,
- .num_calls = 44,
- .calls = svcctl_calls,
- .endpoints = &svcctl_endpoints,
- .authservices = &svcctl_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_svcctl.h b/source/librpc/gen_ndr/ndr_svcctl.h
deleted file mode 100644
index 83a1c2d58e9..00000000000
--- a/source/librpc/gen_ndr/ndr_svcctl.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/svcctl.h"
-
-#ifndef _HEADER_NDR_svcctl
-#define _HEADER_NDR_svcctl
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_SVCCTL_UUID "367abb81-9844-35f1-ad32-98f038001003"
-#define DCERPC_SVCCTL_VERSION 2.0
-#define DCERPC_SVCCTL_NAME "svcctl"
-#define DCERPC_SVCCTL_HELPSTRING "Service Control"
-extern const struct dcerpc_interface_table dcerpc_table_svcctl;
-NTSTATUS dcerpc_server_svcctl_init(void);
-#define DCERPC_SVCCTL_CLOSESERVICEHANDLE (0x00)
-
-#define DCERPC_SVCCTL_CONTROLSERVICE (0x01)
-
-#define DCERPC_SVCCTL_DELETESERVICE (0x02)
-
-#define DCERPC_SVCCTL_LOCKSERVICEDATABASE (0x03)
-
-#define DCERPC_SVCCTL_QUERYSERVICEOBJECTSECURITY (0x04)
-
-#define DCERPC_SVCCTL_SETSERVICEOBJECTSECURITY (0x05)
-
-#define DCERPC_SVCCTL_QUERYSERVICESTATUS (0x06)
-
-#define DCERPC_SVCCTL_SETSERVICESTATUS (0x07)
-
-#define DCERPC_SVCCTL_UNLOCKSERVICEDATABASE (0x08)
-
-#define DCERPC_SVCCTL_NOTIFYBOOTCONFIGSTATUS (0x09)
-
-#define DCERPC_SVCCTL_SCSETSERVICEBITSW (0x0a)
-
-#define DCERPC_SVCCTL_CHANGESERVICECONFIGW (0x0b)
-
-#define DCERPC_SVCCTL_CREATESERVICEW (0x0c)
-
-#define DCERPC_SVCCTL_ENUMDEPENDENTSERVICESW (0x0d)
-
-#define DCERPC_SVCCTL_ENUMSERVICESSTATUSW (0x0e)
-
-#define DCERPC_SVCCTL_OPENSCMANAGERW (0x0f)
-
-#define DCERPC_SVCCTL_OPENSERVICEW (0x10)
-
-#define DCERPC_SVCCTL_QUERYSERVICECONFIGW (0x11)
-
-#define DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSW (0x12)
-
-#define DCERPC_SVCCTL_STARTSERVICEW (0x13)
-
-#define DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEW (0x14)
-
-#define DCERPC_SVCCTL_GETSERVICEKEYNAMEW (0x15)
-
-#define DCERPC_SVCCTL_SCSETSERVICEBITSA (0x16)
-
-#define DCERPC_SVCCTL_CHANGESERVICECONFIGA (0x17)
-
-#define DCERPC_SVCCTL_CREATESERVICEA (0x18)
-
-#define DCERPC_SVCCTL_ENUMDEPENDENTSERVICESA (0x19)
-
-#define DCERPC_SVCCTL_ENUMSERVICESSTATUSA (0x1a)
-
-#define DCERPC_SVCCTL_OPENSCMANAGERA (0x1b)
-
-#define DCERPC_SVCCTL_OPENSERVICEA (0x1c)
-
-#define DCERPC_SVCCTL_QUERYSERVICECONFIGA (0x1d)
-
-#define DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSA (0x1e)
-
-#define DCERPC_SVCCTL_STARTSERVICEA (0x1f)
-
-#define DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEA (0x20)
-
-#define DCERPC_SVCCTL_GETSERVICEKEYNAMEA (0x21)
-
-#define DCERPC_SVCCTL_GETCURRENTGROUPESTATEW (0x22)
-
-#define DCERPC_SVCCTL_ENUMSERVICEGROUPW (0x23)
-
-#define DCERPC_SVCCTL_CHANGESERVICECONFIG2A (0x24)
-
-#define DCERPC_SVCCTL_CHANGESERVICECONFIG2W (0x25)
-
-#define DCERPC_SVCCTL_QUERYSERVICECONFIG2A (0x26)
-
-#define DCERPC_SVCCTL_QUERYSERVICECONFIG2W (0x27)
-
-#define DCERPC_SVCCTL_QUERYSERVICESTATUSEX (0x28)
-
-#define DCERPC_ENUMSERVICESSTATUSEXA (0x29)
-
-#define DCERPC_ENUMSERVICESSTATUSEXW (0x2a)
-
-#define DCERPC_SVCCTL_SCSENDTSMESSAGE (0x2b)
-
-#define DCERPC_SVCCTL_CALL_COUNT (44)
-void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r);
-void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r);
-void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r);
-NTSTATUS ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-NTSTATUS ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r);
-void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r);
-void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r);
-void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r);
-void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r);
-void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r);
-void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r);
-void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r);
-void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r);
-void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r);
-void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r);
-void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r);
-void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r);
-void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r);
-void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r);
-void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r);
-void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r);
-void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r);
-void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r);
-void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r);
-void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r);
-void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r);
-void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r);
-void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r);
-void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r);
-void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r);
-void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r);
-void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r);
-void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r);
-void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r);
-void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r);
-void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r);
-void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r);
-void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r);
-void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r);
-void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r);
-void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r);
-void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r);
-void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r);
-void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r);
-void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r);
-void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r);
-void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r);
-void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r);
-#endif /* _HEADER_NDR_svcctl */
diff --git a/source/librpc/gen_ndr/ndr_unixinfo.c b/source/librpc/gen_ndr/ndr_unixinfo.c
deleted file mode 100644
index b85cc0319a9..00000000000
--- a/source/librpc/gen_ndr/ndr_unixinfo.c
+++ /dev/null
@@ -1,526 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_unixinfo.h"
-
-#include "librpc/gen_ndr/ndr_security.h"
-NTSTATUS ndr_push_unixinfo_GetPWUidInfo(struct ndr_push *ndr, int ndr_flags, const struct unixinfo_GetPWUidInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->status));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->homedir));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->shell));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_unixinfo_GetPWUidInfo(struct ndr_pull *ndr, int ndr_flags, struct unixinfo_GetPWUidInfo *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->status));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->homedir));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->shell));
- ndr->flags = _flags_save_string;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_unixinfo_GetPWUidInfo(struct ndr_print *ndr, const char *name, const struct unixinfo_GetPWUidInfo *r)
-{
- ndr_print_struct(ndr, name, "unixinfo_GetPWUidInfo");
- ndr->depth++;
- ndr_print_NTSTATUS(ndr, "status", r->status);
- ndr_print_string(ndr, "homedir", r->homedir);
- ndr_print_string(ndr, "shell", r->shell);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_unixinfo_SidToUid(struct ndr_push *ndr, int flags, const struct unixinfo_SidToUid *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.sid));
- }
- if (flags & NDR_OUT) {
- if (r->out.uid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, *r->out.uid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_unixinfo_SidToUid(struct ndr_pull *ndr, int flags, struct unixinfo_SidToUid *r)
-{
- TALLOC_CTX *_mem_save_uid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.sid));
- NDR_PULL_ALLOC(ndr, r->out.uid);
- ZERO_STRUCTP(r->out.uid);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.uid);
- }
- _mem_save_uid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.uid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, r->out.uid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_uid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_unixinfo_SidToUid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_SidToUid *r)
-{
- ndr_print_struct(ndr, name, "unixinfo_SidToUid");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "unixinfo_SidToUid");
- ndr->depth++;
- ndr_print_dom_sid(ndr, "sid", &r->in.sid);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "unixinfo_SidToUid");
- ndr->depth++;
- ndr_print_ptr(ndr, "uid", r->out.uid);
- ndr->depth++;
- ndr_print_hyper(ndr, "uid", *r->out.uid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_unixinfo_UidToSid(struct ndr_push *ndr, int flags, const struct unixinfo_UidToSid *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->in.uid));
- }
- if (flags & NDR_OUT) {
- if (r->out.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_unixinfo_UidToSid(struct ndr_pull *ndr, int flags, struct unixinfo_UidToSid *r)
-{
- TALLOC_CTX *_mem_save_sid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->in.uid));
- NDR_PULL_ALLOC(ndr, r->out.sid);
- ZERO_STRUCTP(r->out.sid);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_unixinfo_UidToSid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_UidToSid *r)
-{
- ndr_print_struct(ndr, name, "unixinfo_UidToSid");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "unixinfo_UidToSid");
- ndr->depth++;
- ndr_print_hyper(ndr, "uid", r->in.uid);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "unixinfo_UidToSid");
- ndr->depth++;
- ndr_print_ptr(ndr, "sid", r->out.sid);
- ndr->depth++;
- ndr_print_dom_sid(ndr, "sid", r->out.sid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_unixinfo_SidToGid(struct ndr_push *ndr, int flags, const struct unixinfo_SidToGid *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.sid));
- }
- if (flags & NDR_OUT) {
- if (r->out.gid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, *r->out.gid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_unixinfo_SidToGid(struct ndr_pull *ndr, int flags, struct unixinfo_SidToGid *r)
-{
- TALLOC_CTX *_mem_save_gid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.sid));
- NDR_PULL_ALLOC(ndr, r->out.gid);
- ZERO_STRUCTP(r->out.gid);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.gid);
- }
- _mem_save_gid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.gid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, r->out.gid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_unixinfo_SidToGid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_SidToGid *r)
-{
- ndr_print_struct(ndr, name, "unixinfo_SidToGid");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "unixinfo_SidToGid");
- ndr->depth++;
- ndr_print_dom_sid(ndr, "sid", &r->in.sid);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "unixinfo_SidToGid");
- ndr->depth++;
- ndr_print_ptr(ndr, "gid", r->out.gid);
- ndr->depth++;
- ndr_print_hyper(ndr, "gid", *r->out.gid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_unixinfo_GidToSid(struct ndr_push *ndr, int flags, const struct unixinfo_GidToSid *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->in.gid));
- }
- if (flags & NDR_OUT) {
- if (r->out.sid == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sid));
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_unixinfo_GidToSid(struct ndr_pull *ndr, int flags, struct unixinfo_GidToSid *r)
-{
- TALLOC_CTX *_mem_save_sid_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->in.gid));
- NDR_PULL_ALLOC(ndr, r->out.sid);
- ZERO_STRUCTP(r->out.sid);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sid);
- }
- _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sid, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sid));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_unixinfo_GidToSid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_GidToSid *r)
-{
- ndr_print_struct(ndr, name, "unixinfo_GidToSid");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "unixinfo_GidToSid");
- ndr->depth++;
- ndr_print_hyper(ndr, "gid", r->in.gid);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "unixinfo_GidToSid");
- ndr->depth++;
- ndr_print_ptr(ndr, "sid", r->out.sid);
- ndr->depth++;
- ndr_print_dom_sid(ndr, "sid", r->out.sid);
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_unixinfo_GetPWUid(struct ndr_push *ndr, int flags, const struct unixinfo_GetPWUid *r)
-{
- uint32_t cntr_uids_0;
- uint32_t cntr_infos_0;
- if (flags & NDR_IN) {
- if (r->in.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
- for (cntr_uids_0 = 0; cntr_uids_0 < *r->in.count; cntr_uids_0++) {
- NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->in.uids[cntr_uids_0]));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.count == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
- for (cntr_infos_0 = 0; cntr_infos_0 < *r->out.count; cntr_infos_0++) {
- NDR_CHECK(ndr_push_unixinfo_GetPWUidInfo(ndr, NDR_SCALARS, &r->out.infos[cntr_infos_0]));
- }
- NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_unixinfo_GetPWUid(struct ndr_pull *ndr, int flags, struct unixinfo_GetPWUid *r)
-{
- uint32_t cntr_uids_0;
- uint32_t cntr_infos_0;
- TALLOC_CTX *_mem_save_count_0;
- TALLOC_CTX *_mem_save_uids_0;
- TALLOC_CTX *_mem_save_infos_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
- if (*r->in.count < 0 || *r->in.count > 1023) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.uids));
- NDR_PULL_ALLOC_N(ndr, r->in.uids, ndr_get_array_size(ndr, &r->in.uids));
- _mem_save_uids_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.uids, 0);
- for (cntr_uids_0 = 0; cntr_uids_0 < *r->in.count; cntr_uids_0++) {
- NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->in.uids[cntr_uids_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_uids_0, 0);
- NDR_PULL_ALLOC(ndr, r->out.count);
- *r->out.count = *r->in.count;
- if (r->in.uids) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.uids, *r->in.count));
- }
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.count);
- }
- _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
- if (*r->out.count < 0 || *r->out.count > 1023) {
- return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.infos));
- NDR_PULL_ALLOC_N(ndr, r->out.infos, ndr_get_array_size(ndr, &r->out.infos));
- _mem_save_infos_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.infos, 0);
- for (cntr_infos_0 = 0; cntr_infos_0 < *r->out.count; cntr_infos_0++) {
- NDR_CHECK(ndr_pull_unixinfo_GetPWUidInfo(ndr, NDR_SCALARS, &r->out.infos[cntr_infos_0]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_infos_0, 0);
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.infos) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.infos, *r->out.count));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_unixinfo_GetPWUid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_GetPWUid *r)
-{
- uint32_t cntr_uids_0;
- uint32_t cntr_infos_0;
- ndr_print_struct(ndr, name, "unixinfo_GetPWUid");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "unixinfo_GetPWUid");
- ndr->depth++;
- ndr_print_ptr(ndr, "count", r->in.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->in.count);
- ndr->depth--;
- ndr->print(ndr, "%s: ARRAY(%d)", "uids", *r->in.count);
- ndr->depth++;
- for (cntr_uids_0=0;cntr_uids_0<*r->in.count;cntr_uids_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_uids_0);
- if (idx_0) {
- ndr_print_hyper(ndr, "uids", r->in.uids[cntr_uids_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "unixinfo_GetPWUid");
- ndr->depth++;
- ndr_print_ptr(ndr, "count", r->out.count);
- ndr->depth++;
- ndr_print_uint32(ndr, "count", *r->out.count);
- ndr->depth--;
- ndr->print(ndr, "%s: ARRAY(%d)", "infos", *r->out.count);
- ndr->depth++;
- for (cntr_infos_0=0;cntr_infos_0<*r->out.count;cntr_infos_0++) {
- char *idx_0=NULL;
- asprintf(&idx_0, "[%d]", cntr_infos_0);
- if (idx_0) {
- ndr_print_unixinfo_GetPWUidInfo(ndr, "infos", &r->out.infos[cntr_infos_0]);
- free(idx_0);
- }
- }
- ndr->depth--;
- ndr_print_NTSTATUS(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call unixinfo_calls[] = {
- {
- "unixinfo_SidToUid",
- sizeof(struct unixinfo_SidToUid),
- (ndr_push_flags_fn_t) ndr_push_unixinfo_SidToUid,
- (ndr_pull_flags_fn_t) ndr_pull_unixinfo_SidToUid,
- (ndr_print_function_t) ndr_print_unixinfo_SidToUid,
- False,
- },
- {
- "unixinfo_UidToSid",
- sizeof(struct unixinfo_UidToSid),
- (ndr_push_flags_fn_t) ndr_push_unixinfo_UidToSid,
- (ndr_pull_flags_fn_t) ndr_pull_unixinfo_UidToSid,
- (ndr_print_function_t) ndr_print_unixinfo_UidToSid,
- False,
- },
- {
- "unixinfo_SidToGid",
- sizeof(struct unixinfo_SidToGid),
- (ndr_push_flags_fn_t) ndr_push_unixinfo_SidToGid,
- (ndr_pull_flags_fn_t) ndr_pull_unixinfo_SidToGid,
- (ndr_print_function_t) ndr_print_unixinfo_SidToGid,
- False,
- },
- {
- "unixinfo_GidToSid",
- sizeof(struct unixinfo_GidToSid),
- (ndr_push_flags_fn_t) ndr_push_unixinfo_GidToSid,
- (ndr_pull_flags_fn_t) ndr_pull_unixinfo_GidToSid,
- (ndr_print_function_t) ndr_print_unixinfo_GidToSid,
- False,
- },
- {
- "unixinfo_GetPWUid",
- sizeof(struct unixinfo_GetPWUid),
- (ndr_push_flags_fn_t) ndr_push_unixinfo_GetPWUid,
- (ndr_pull_flags_fn_t) ndr_pull_unixinfo_GetPWUid,
- (ndr_print_function_t) ndr_print_unixinfo_GetPWUid,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const unixinfo_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\unixinfo]",
- "ncacn_ip_tcp:",
- "ncalrpc:",
-};
-
-const struct dcerpc_endpoint_list unixinfo_endpoints = {
- .count = 3,
- .names = unixinfo_endpoint_strings
-};
-
-const char * const unixinfo_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list unixinfo_authservices = {
- .count = 3,
- .names = unixinfo_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_unixinfo = {
- .name = "unixinfo",
- .syntax_id = {
- {0x9c54e310,0xa955,0x4885,{0xbd,0x31},{0x78,0x78,0x71,0x47,0xdf,0xa6}},
- DCERPC_UNIXINFO_VERSION
- },
- .helpstring = DCERPC_UNIXINFO_HELPSTRING,
- .num_calls = 5,
- .calls = unixinfo_calls,
- .endpoints = &unixinfo_endpoints,
- .authservices = &unixinfo_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_unixinfo.h b/source/librpc/gen_ndr/ndr_unixinfo.h
deleted file mode 100644
index 94777e53fec..00000000000
--- a/source/librpc/gen_ndr/ndr_unixinfo.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/unixinfo.h"
-
-#ifndef _HEADER_NDR_unixinfo
-#define _HEADER_NDR_unixinfo
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_UNIXINFO_UUID "9c54e310-a955-4885-bd31-78787147dfa6"
-#define DCERPC_UNIXINFO_VERSION 0.0
-#define DCERPC_UNIXINFO_NAME "unixinfo"
-#define DCERPC_UNIXINFO_HELPSTRING "Unixinfo specific stuff"
-extern const struct dcerpc_interface_table dcerpc_table_unixinfo;
-NTSTATUS dcerpc_server_unixinfo_init(void);
-#define DCERPC_UNIXINFO_SIDTOUID (0x00)
-
-#define DCERPC_UNIXINFO_UIDTOSID (0x01)
-
-#define DCERPC_UNIXINFO_SIDTOGID (0x02)
-
-#define DCERPC_UNIXINFO_GIDTOSID (0x03)
-
-#define DCERPC_UNIXINFO_GETPWUID (0x04)
-
-#define DCERPC_UNIXINFO_CALL_COUNT (5)
-void ndr_print_unixinfo_GetPWUidInfo(struct ndr_print *ndr, const char *name, const struct unixinfo_GetPWUidInfo *r);
-void ndr_print_unixinfo_SidToUid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_SidToUid *r);
-void ndr_print_unixinfo_UidToSid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_UidToSid *r);
-void ndr_print_unixinfo_SidToGid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_SidToGid *r);
-void ndr_print_unixinfo_GidToSid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_GidToSid *r);
-void ndr_print_unixinfo_GetPWUid(struct ndr_print *ndr, const char *name, int flags, const struct unixinfo_GetPWUid *r);
-#endif /* _HEADER_NDR_unixinfo */
diff --git a/source/librpc/gen_ndr/ndr_winreg.c b/source/librpc/gen_ndr/ndr_winreg.c
deleted file mode 100644
index 2168167de9c..00000000000
--- a/source/librpc/gen_ndr/ndr_winreg.c
+++ /dev/null
@@ -1,4419 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_winreg.h"
-
-#include "librpc/gen_ndr/ndr_lsa.h"
-#include "librpc/gen_ndr/ndr_initshutdown.h"
-#include "librpc/gen_ndr/ndr_security.h"
-NTSTATUS ndr_push_winreg_AccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_AccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_AccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
-{
- ndr_print_uint32(ndr, name, r);
- ndr->depth++;
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_QUERY_VALUE", KEY_QUERY_VALUE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_SET_VALUE", KEY_SET_VALUE, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_CREATE_SUB_KEY", KEY_CREATE_SUB_KEY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_ENUMERATE_SUB_KEYS", KEY_ENUMERATE_SUB_KEYS, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_NOTIFY", KEY_NOTIFY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_CREATE_LINK", KEY_CREATE_LINK, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_WOW64_64KEY", KEY_WOW64_64KEY, r);
- ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_WOW64_32KEY", KEY_WOW64_32KEY, r);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_Type(struct ndr_push *ndr, int ndr_flags, enum winreg_Type r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_Type(struct ndr_pull *ndr, int ndr_flags, enum winreg_Type *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_Type(struct ndr_print *ndr, const char *name, enum winreg_Type r)
-{
- const char *val = NULL;
-
- switch (r) {
- case REG_NONE: val = "REG_NONE"; break;
- case REG_SZ: val = "REG_SZ"; break;
- case REG_EXPAND_SZ: val = "REG_EXPAND_SZ"; break;
- case REG_BINARY: val = "REG_BINARY"; break;
- case REG_DWORD: val = "REG_DWORD"; break;
- case REG_DWORD_BIG_ENDIAN: val = "REG_DWORD_BIG_ENDIAN"; break;
- case REG_LINK: val = "REG_LINK"; break;
- case REG_MULTI_SZ: val = "REG_MULTI_SZ"; break;
- case REG_RESOURCE_LIST: val = "REG_RESOURCE_LIST"; break;
- case REG_FULL_RESOURCE_DESCRIPTOR: val = "REG_FULL_RESOURCE_DESCRIPTOR"; break;
- case REG_RESOURCE_REQUIREMENTS_LIST: val = "REG_RESOURCE_REQUIREMENTS_LIST"; break;
- case REG_QWORD: val = "REG_QWORD"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-_PUBLIC_ NTSTATUS ndr_push_winreg_String(struct ndr_push *ndr, int ndr_flags, const struct winreg_String *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ NTSTATUS ndr_pull_winreg_String(struct ndr_pull *ndr, int ndr_flags, struct winreg_String *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_len));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_String(struct ndr_print *ndr, const char *name, const struct winreg_String *r)
-{
- ndr_print_struct(ndr, name, "winreg_String");
- ndr->depth++;
- ndr_print_uint16(ndr, "name_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->name_len);
- ndr_print_uint16(ndr, "name_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->name_size);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_KeySecurityData(struct ndr_push *ndr, int ndr_flags, const struct KeySecurityData *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->len));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_KeySecurityData(struct ndr_pull *ndr, int ndr_flags, struct KeySecurityData *r)
-{
- uint32_t _ptr_data;
- TALLOC_CTX *_mem_save_data_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->data);
- } else {
- r->data = NULL;
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
- if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
- }
- NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_length(ndr, &r->data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size));
- }
- if (r->data) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->len));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_KeySecurityData(struct ndr_print *ndr, const char *name, const struct KeySecurityData *r)
-{
- ndr_print_struct(ndr, name, "KeySecurityData");
- ndr->depth++;
- ndr_print_ptr(ndr, "data", r->data);
- ndr->depth++;
- if (r->data) {
- ndr_print_array_uint8(ndr, "data", r->data, r->len);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "size", r->size);
- ndr_print_uint32(ndr, "len", r->len);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_SecBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_SecBuf *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS, &r->sd));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->inherit));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_BUFFERS, &r->sd));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_SecBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_SecBuf *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS, &r->sd));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->inherit));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_BUFFERS, &r->sd));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_SecBuf(struct ndr_print *ndr, const char *name, const struct winreg_SecBuf *r)
-{
- ndr_print_struct(ndr, name, "winreg_SecBuf");
- ndr->depth++;
- ndr_print_uint32(ndr, "length", r->length);
- ndr_print_KeySecurityData(ndr, "sd", &r->sd);
- ndr_print_uint8(ndr, "inherit", r->inherit);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_CreateAction(struct ndr_push *ndr, int ndr_flags, enum winreg_CreateAction r)
-{
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_CreateAction(struct ndr_pull *ndr, int ndr_flags, enum winreg_CreateAction *r)
-{
- uint32_t v;
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
- *r = v;
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_CreateAction(struct ndr_print *ndr, const char *name, enum winreg_CreateAction r)
-{
- const char *val = NULL;
-
- switch (r) {
- case REG_ACTION_NONE: val = "REG_ACTION_NONE"; break;
- case REG_CREATED_NEW_KEY: val = "REG_CREATED_NEW_KEY"; break;
- case REG_OPENED_EXISTING_KEY: val = "REG_OPENED_EXISTING_KEY"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-NTSTATUS ndr_push_winreg_StringBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_StringBuf *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term_null(r->name) * 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term_null(r->name) * 2 / 2));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term_null(r->name) * 2 / 2, sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_StringBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_StringBuf *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->name) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2));
- }
- if (r->name) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_StringBuf(struct ndr_print *ndr, const char *name, const struct winreg_StringBuf *r)
-{
- ndr_print_struct(ndr, name, "winreg_StringBuf");
- ndr->depth++;
- ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term_null(r->name) * 2:r->length);
- ndr_print_uint16(ndr, "size", r->size);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_ValNameBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_ValNameBuf *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2 / 2));
- NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term(r->name) * 2 / 2, sizeof(uint16_t), CH_UTF16));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_ValNameBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_ValNameBuf *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
- if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
- }
- NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- if (r->name) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2));
- }
- if (r->name) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_ValNameBuf(struct ndr_print *ndr, const char *name, const struct winreg_ValNameBuf *r)
-{
- ndr_print_struct(ndr, name, "winreg_ValNameBuf");
- ndr->depth++;
- ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->length);
- ndr_print_uint16(ndr, "size", r->size);
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_string(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_KeySecurityAttribute(struct ndr_push *ndr, int ndr_flags, const struct KeySecurityAttribute *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data_size));
- NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS, &r->sec_data));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->inherit));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_BUFFERS, &r->sec_data));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_KeySecurityAttribute(struct ndr_pull *ndr, int ndr_flags, struct KeySecurityAttribute *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_size));
- NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS, &r->sec_data));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->inherit));
- }
- if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_BUFFERS, &r->sec_data));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_KeySecurityAttribute(struct ndr_print *ndr, const char *name, const struct KeySecurityAttribute *r)
-{
- ndr_print_struct(ndr, name, "KeySecurityAttribute");
- ndr->depth++;
- ndr_print_uint32(ndr, "data_size", r->data_size);
- ndr_print_KeySecurityData(ndr, "sec_data", &r->sec_data);
- ndr_print_uint8(ndr, "inherit", r->inherit);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_QueryMultipleValue(struct ndr_push *ndr, int ndr_flags, const struct QueryMultipleValue *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
- NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->type));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->offset));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->name));
- }
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_QueryMultipleValue(struct ndr_pull *ndr, int ndr_flags, struct QueryMultipleValue *r)
-{
- uint32_t _ptr_name;
- TALLOC_CTX *_mem_save_name_0;
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
- if (_ptr_name) {
- NDR_PULL_ALLOC(ndr, r->name);
- } else {
- r->name = NULL;
- }
- NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->type));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->offset));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
- }
- if (ndr_flags & NDR_BUFFERS) {
- if (r->name) {
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_QueryMultipleValue(struct ndr_print *ndr, const char *name, const struct QueryMultipleValue *r)
-{
- ndr_print_struct(ndr, name, "QueryMultipleValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->name);
- ndr->depth++;
- if (r->name) {
- ndr_print_winreg_String(ndr, "name", r->name);
- }
- ndr->depth--;
- ndr_print_winreg_Type(ndr, "type", r->type);
- ndr_print_uint32(ndr, "offset", r->offset);
- ndr_print_uint32(ndr, "length", r->length);
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKCR(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCR *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKCR(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCR *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKCR(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCR *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKCR");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKCR");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKCR");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKCU(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCU *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKCU(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCU *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKCU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCU *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKCU");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKCU");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKCU");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKLM(struct ndr_push *ndr, int flags, const struct winreg_OpenHKLM *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKLM(struct ndr_pull *ndr, int flags, struct winreg_OpenHKLM *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKLM(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKLM *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKLM");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKLM");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKLM");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKPD(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPD *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKPD(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPD *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKPD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPD *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKPD");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKPD");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKPD");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKU(struct ndr_push *ndr, int flags, const struct winreg_OpenHKU *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKU(struct ndr_pull *ndr, int flags, struct winreg_OpenHKU *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKU *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKU");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKU");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKU");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_CloseKey(struct ndr_push *ndr, int flags, const struct winreg_CloseKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_CloseKey(struct ndr_pull *ndr, int flags, struct winreg_CloseKey *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.handle);
- *r->out.handle = *r->in.handle;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_CloseKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CloseKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_CloseKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_CloseKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_CloseKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_CreateKey(struct ndr_push *ndr, int flags, const struct winreg_CreateKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.options));
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.secdesc));
- if (r->in.secdesc) {
- NDR_CHECK(ndr_push_winreg_SecBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.action_taken));
- if (r->in.action_taken) {
- NDR_CHECK(ndr_push_winreg_CreateAction(ndr, NDR_SCALARS, *r->in.action_taken));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.new_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.new_handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.action_taken));
- if (r->out.action_taken) {
- NDR_CHECK(ndr_push_winreg_CreateAction(ndr, NDR_SCALARS, *r->out.action_taken));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_CreateKey(struct ndr_pull *ndr, int flags, struct winreg_CreateKey *r)
-{
- uint32_t _ptr_secdesc;
- uint32_t _ptr_action_taken;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_secdesc_0;
- TALLOC_CTX *_mem_save_new_handle_0;
- TALLOC_CTX *_mem_save_action_taken_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.options));
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
- if (_ptr_secdesc) {
- NDR_PULL_ALLOC(ndr, r->in.secdesc);
- } else {
- r->in.secdesc = NULL;
- }
- if (r->in.secdesc) {
- _mem_save_secdesc_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.secdesc, 0);
- NDR_CHECK(ndr_pull_winreg_SecBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_action_taken));
- if (_ptr_action_taken) {
- NDR_PULL_ALLOC(ndr, r->in.action_taken);
- } else {
- r->in.action_taken = NULL;
- }
- if (r->in.action_taken) {
- _mem_save_action_taken_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.action_taken, 0);
- NDR_CHECK(ndr_pull_winreg_CreateAction(ndr, NDR_SCALARS, r->in.action_taken));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_action_taken_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.new_handle);
- ZERO_STRUCTP(r->out.new_handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.new_handle);
- }
- _mem_save_new_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.new_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.new_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_action_taken));
- if (_ptr_action_taken) {
- NDR_PULL_ALLOC(ndr, r->out.action_taken);
- } else {
- r->out.action_taken = NULL;
- }
- if (r->out.action_taken) {
- _mem_save_action_taken_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.action_taken, 0);
- NDR_CHECK(ndr_pull_winreg_CreateAction(ndr, NDR_SCALARS, r->out.action_taken));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_action_taken_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_CreateKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CreateKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_CreateKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_CreateKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_winreg_String(ndr, "name", &r->in.name);
- ndr_print_winreg_String(ndr, "keyclass", &r->in.keyclass);
- ndr_print_uint32(ndr, "options", r->in.options);
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr_print_ptr(ndr, "secdesc", r->in.secdesc);
- ndr->depth++;
- if (r->in.secdesc) {
- ndr_print_winreg_SecBuf(ndr, "secdesc", r->in.secdesc);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "action_taken", r->in.action_taken);
- ndr->depth++;
- if (r->in.action_taken) {
- ndr_print_winreg_CreateAction(ndr, "action_taken", *r->in.action_taken);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_CreateKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "new_handle", r->out.new_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "new_handle", r->out.new_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "action_taken", r->out.action_taken);
- ndr->depth++;
- if (r->out.action_taken) {
- ndr_print_winreg_CreateAction(ndr, "action_taken", *r->out.action_taken);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_DeleteKey(struct ndr_push *ndr, int flags, const struct winreg_DeleteKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.key));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_DeleteKey(struct ndr_pull *ndr, int flags, struct winreg_DeleteKey *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.key));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_DeleteKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_DeleteKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_DeleteKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_winreg_String(ndr, "key", &r->in.key);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_DeleteKey");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_DeleteValue(struct ndr_push *ndr, int flags, const struct winreg_DeleteValue *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_DeleteValue(struct ndr_pull *ndr, int flags, struct winreg_DeleteValue *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_DeleteValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteValue *r)
-{
- ndr_print_struct(ndr, name, "winreg_DeleteValue");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_DeleteValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_winreg_String(ndr, "value", &r->in.value);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_DeleteValue");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_EnumKey(struct ndr_push *ndr, int flags, const struct winreg_EnumKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.enum_index));
- if (r->in.name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.keyclass));
- if (r->in.keyclass) {
- NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyclass));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.last_changed_time));
- if (r->in.last_changed_time) {
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->in.last_changed_time));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.keyclass));
- if (r->out.keyclass) {
- NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.keyclass));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.last_changed_time));
- if (r->out.last_changed_time) {
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->out.last_changed_time));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_EnumKey(struct ndr_pull *ndr, int flags, struct winreg_EnumKey *r)
-{
- uint32_t _ptr_keyclass;
- uint32_t _ptr_last_changed_time;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_name_0;
- TALLOC_CTX *_mem_save_keyclass_0;
- TALLOC_CTX *_mem_save_last_changed_time_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.enum_index));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.name);
- }
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyclass));
- if (_ptr_keyclass) {
- NDR_PULL_ALLOC(ndr, r->in.keyclass);
- } else {
- r->in.keyclass = NULL;
- }
- if (r->in.keyclass) {
- _mem_save_keyclass_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.keyclass, 0);
- NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyclass));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyclass_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_last_changed_time));
- if (_ptr_last_changed_time) {
- NDR_PULL_ALLOC(ndr, r->in.last_changed_time);
- } else {
- r->in.last_changed_time = NULL;
- }
- if (r->in.last_changed_time) {
- _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.last_changed_time, 0);
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->in.last_changed_time));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.name);
- *r->out.name = *r->in.name;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.name);
- }
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyclass));
- if (_ptr_keyclass) {
- NDR_PULL_ALLOC(ndr, r->out.keyclass);
- } else {
- r->out.keyclass = NULL;
- }
- if (r->out.keyclass) {
- _mem_save_keyclass_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.keyclass, 0);
- NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.keyclass));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyclass_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_last_changed_time));
- if (_ptr_last_changed_time) {
- NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
- } else {
- r->out.last_changed_time = NULL;
- }
- if (r->out.last_changed_time) {
- _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.last_changed_time, 0);
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->out.last_changed_time));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_EnumKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_EnumKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_EnumKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "enum_index", r->in.enum_index);
- ndr_print_ptr(ndr, "name", r->in.name);
- ndr->depth++;
- ndr_print_winreg_StringBuf(ndr, "name", r->in.name);
- ndr->depth--;
- ndr_print_ptr(ndr, "keyclass", r->in.keyclass);
- ndr->depth++;
- if (r->in.keyclass) {
- ndr_print_winreg_StringBuf(ndr, "keyclass", r->in.keyclass);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "last_changed_time", r->in.last_changed_time);
- ndr->depth++;
- if (r->in.last_changed_time) {
- ndr_print_NTTIME(ndr, "last_changed_time", *r->in.last_changed_time);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_EnumKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->out.name);
- ndr->depth++;
- ndr_print_winreg_StringBuf(ndr, "name", r->out.name);
- ndr->depth--;
- ndr_print_ptr(ndr, "keyclass", r->out.keyclass);
- ndr->depth++;
- if (r->out.keyclass) {
- ndr_print_winreg_StringBuf(ndr, "keyclass", r->out.keyclass);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "last_changed_time", r->out.last_changed_time);
- ndr->depth++;
- if (r->out.last_changed_time) {
- ndr_print_NTTIME(ndr, "last_changed_time", *r->out.last_changed_time);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_EnumValue(struct ndr_push *ndr, int flags, const struct winreg_EnumValue *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.enum_index));
- if (r->in.name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.type));
- if (r->in.type) {
- NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->in.type));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.value));
- if (r->in.value) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.value, *r->in.length));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.size));
- if (r->in.size) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.size));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.length));
- if (r->in.length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.length));
- }
- }
- if (flags & NDR_OUT) {
- if (r->out.name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.type));
- if (r->out.type) {
- NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.value));
- if (r->out.value) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.value, *r->out.length));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.size));
- if (r->out.size) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.size));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.length));
- if (r->out.length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.length));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winreg_EnumValue *r)
-{
- uint32_t _ptr_type;
- uint32_t _ptr_value;
- uint32_t _ptr_size;
- uint32_t _ptr_length;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_name_0;
- TALLOC_CTX *_mem_save_type_0;
- TALLOC_CTX *_mem_save_value_0;
- TALLOC_CTX *_mem_save_size_0;
- TALLOC_CTX *_mem_save_length_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.enum_index));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.name);
- }
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
- if (_ptr_type) {
- NDR_PULL_ALLOC(ndr, r->in.type);
- } else {
- r->in.type = NULL;
- }
- if (r->in.type) {
- _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.type, 0);
- NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->in.type));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
- if (_ptr_value) {
- NDR_PULL_ALLOC(ndr, r->in.value);
- } else {
- r->in.value = NULL;
- }
- if (r->in.value) {
- _mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.value, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value));
- if (ndr_get_array_length(ndr, &r->in.value) > ndr_get_array_size(ndr, &r->in.value)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.value), ndr_get_array_length(ndr, &r->in.value));
- }
- NDR_PULL_ALLOC_N(ndr, r->in.value, ndr_get_array_size(ndr, &r->in.value));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.value, ndr_get_array_length(ndr, &r->in.value)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_size));
- if (_ptr_size) {
- NDR_PULL_ALLOC(ndr, r->in.size);
- } else {
- r->in.size = NULL;
- }
- if (r->in.size) {
- _mem_save_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.size, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_size_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_length));
- if (_ptr_length) {
- NDR_PULL_ALLOC(ndr, r->in.length);
- } else {
- r->in.length = NULL;
- }
- if (r->in.length) {
- _mem_save_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_length_0, 0);
- }
- NDR_PULL_ALLOC(ndr, r->out.name);
- *r->out.name = *r->in.name;
- if (r->in.value) {
- if (r->in.size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.value, *r->in.size));
- }
- if (r->in.value) {
- if (r->in.length == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.value, *r->in.length));
- }
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.name);
- }
- _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.name, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
- if (_ptr_type) {
- NDR_PULL_ALLOC(ndr, r->out.type);
- } else {
- r->out.type = NULL;
- }
- if (r->out.type) {
- _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.type, 0);
- NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
- if (_ptr_value) {
- NDR_PULL_ALLOC(ndr, r->out.value);
- } else {
- r->out.value = NULL;
- }
- if (r->out.value) {
- _mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.value, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.value));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->out.value));
- if (ndr_get_array_length(ndr, &r->out.value) > ndr_get_array_size(ndr, &r->out.value)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.value), ndr_get_array_length(ndr, &r->out.value));
- }
- NDR_PULL_ALLOC_N(ndr, r->out.value, ndr_get_array_size(ndr, &r->out.value));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.value, ndr_get_array_length(ndr, &r->out.value)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_size));
- if (_ptr_size) {
- NDR_PULL_ALLOC(ndr, r->out.size);
- } else {
- r->out.size = NULL;
- }
- if (r->out.size) {
- _mem_save_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.size, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_size_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_length));
- if (_ptr_length) {
- NDR_PULL_ALLOC(ndr, r->out.length);
- } else {
- r->out.length = NULL;
- }
- if (r->out.length) {
- _mem_save_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_length_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.value) {
- if (r->out.size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.value, *r->out.size));
- }
- if (r->out.value) {
- if (r->out.length == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.value, *r->out.length));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumValue *r)
-{
- ndr_print_struct(ndr, name, "winreg_EnumValue");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_EnumValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint32(ndr, "enum_index", r->in.enum_index);
- ndr_print_ptr(ndr, "name", r->in.name);
- ndr->depth++;
- ndr_print_winreg_ValNameBuf(ndr, "name", r->in.name);
- ndr->depth--;
- ndr_print_ptr(ndr, "type", r->in.type);
- ndr->depth++;
- if (r->in.type) {
- ndr_print_winreg_Type(ndr, "type", *r->in.type);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "value", r->in.value);
- ndr->depth++;
- if (r->in.value) {
- if (r->in.length == NULL) return;
- ndr_print_array_uint8(ndr, "value", r->in.value, *r->in.length);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "size", r->in.size);
- ndr->depth++;
- if (r->in.size) {
- ndr_print_uint32(ndr, "size", *r->in.size);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "length", r->in.length);
- ndr->depth++;
- if (r->in.length) {
- ndr_print_uint32(ndr, "length", *r->in.length);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_EnumValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "name", r->out.name);
- ndr->depth++;
- ndr_print_winreg_ValNameBuf(ndr, "name", r->out.name);
- ndr->depth--;
- ndr_print_ptr(ndr, "type", r->out.type);
- ndr->depth++;
- if (r->out.type) {
- ndr_print_winreg_Type(ndr, "type", *r->out.type);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "value", r->out.value);
- ndr->depth++;
- if (r->out.value) {
- if (r->out.length == NULL) return;
- ndr_print_array_uint8(ndr, "value", r->out.value, *r->out.length);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "size", r->out.size);
- ndr->depth++;
- if (r->out.size) {
- ndr_print_uint32(ndr, "size", *r->out.size);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "length", r->out.length);
- ndr->depth++;
- if (r->out.length) {
- ndr_print_uint32(ndr, "length", *r->out.length);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_FlushKey(struct ndr_push *ndr, int flags, const struct winreg_FlushKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_FlushKey(struct ndr_pull *ndr, int flags, struct winreg_FlushKey *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_FlushKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_FlushKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_FlushKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_FlushKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_FlushKey");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_GetKeySecurity(struct ndr_push *ndr, int flags, const struct winreg_GetKeySecurity *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.sec_info));
- if (r->in.sd == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
- }
- if (flags & NDR_OUT) {
- if (r->out.sd == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_GetKeySecurity(struct ndr_pull *ndr, int flags, struct winreg_GetKeySecurity *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sd_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.sec_info));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sd);
- }
- _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sd, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.sd);
- *r->out.sd = *r->in.sd;
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.sd);
- }
- _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.sd, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_GetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetKeySecurity *r)
-{
- ndr_print_struct(ndr, name, "winreg_GetKeySecurity");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_GetKeySecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_security_secinfo(ndr, "sec_info", r->in.sec_info);
- ndr_print_ptr(ndr, "sd", r->in.sd);
- ndr->depth++;
- ndr_print_KeySecurityData(ndr, "sd", r->in.sd);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_GetKeySecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "sd", r->out.sd);
- ndr->depth++;
- ndr_print_KeySecurityData(ndr, "sd", r->out.sd);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_LoadKey(struct ndr_push *ndr, int flags, const struct winreg_LoadKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.keyname));
- if (r->in.keyname) {
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyname));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.filename));
- if (r->in.filename) {
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_LoadKey(struct ndr_pull *ndr, int flags, struct winreg_LoadKey *r)
-{
- uint32_t _ptr_keyname;
- uint32_t _ptr_filename;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_keyname_0;
- TALLOC_CTX *_mem_save_filename_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyname));
- if (_ptr_keyname) {
- NDR_PULL_ALLOC(ndr, r->in.keyname);
- } else {
- r->in.keyname = NULL;
- }
- if (r->in.keyname) {
- _mem_save_keyname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.keyname, 0);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyname));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyname_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_filename));
- if (_ptr_filename) {
- NDR_PULL_ALLOC(ndr, r->in.filename);
- } else {
- r->in.filename = NULL;
- }
- if (r->in.filename) {
- _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, 0);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_LoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_LoadKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_LoadKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_LoadKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "keyname", r->in.keyname);
- ndr->depth++;
- if (r->in.keyname) {
- ndr_print_winreg_String(ndr, "keyname", r->in.keyname);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "filename", r->in.filename);
- ndr->depth++;
- if (r->in.filename) {
- ndr_print_winreg_String(ndr, "filename", r->in.filename);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_LoadKey");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_NotifyChangeKeyValue(struct ndr_push *ndr, int flags, const struct winreg_NotifyChangeKeyValue *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.watch_subtree));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.notify_filter));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string1));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string2));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_NotifyChangeKeyValue(struct ndr_pull *ndr, int flags, struct winreg_NotifyChangeKeyValue *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.watch_subtree));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.notify_filter));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string1));
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string2));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_NotifyChangeKeyValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_NotifyChangeKeyValue *r)
-{
- ndr_print_struct(ndr, name, "winreg_NotifyChangeKeyValue");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_NotifyChangeKeyValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_uint8(ndr, "watch_subtree", r->in.watch_subtree);
- ndr_print_uint32(ndr, "notify_filter", r->in.notify_filter);
- ndr_print_uint32(ndr, "unknown", r->in.unknown);
- ndr_print_winreg_String(ndr, "string1", &r->in.string1);
- ndr_print_winreg_String(ndr, "string2", &r->in.string2);
- ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_NotifyChangeKeyValue");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenKey(struct ndr_push *ndr, int flags, const struct winreg_OpenKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.parent_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.parent_handle));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenKey(struct ndr_pull *ndr, int flags, struct winreg_OpenKey *r)
-{
- TALLOC_CTX *_mem_save_parent_handle_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.parent_handle);
- }
- _mem_save_parent_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.parent_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.parent_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parent_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "parent_handle", r->in.parent_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "parent_handle", r->in.parent_handle);
- ndr->depth--;
- ndr_print_winreg_String(ndr, "keyname", &r->in.keyname);
- ndr_print_uint32(ndr, "unknown", r->in.unknown);
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_QueryInfoKey(struct ndr_push *ndr, int flags, const struct winreg_QueryInfoKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.classname == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.classname));
- }
- if (flags & NDR_OUT) {
- if (r->out.classname == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.classname));
- if (r->out.num_subkeys == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_subkeys));
- if (r->out.max_subkeylen == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_subkeylen));
- if (r->out.max_classlen == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_classlen));
- if (r->out.num_values == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_values));
- if (r->out.max_valnamelen == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_valnamelen));
- if (r->out.max_valbufsize == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_valbufsize));
- if (r->out.secdescsize == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.secdescsize));
- if (r->out.last_changed_time == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->out.last_changed_time));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_QueryInfoKey(struct ndr_pull *ndr, int flags, struct winreg_QueryInfoKey *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_classname_0;
- TALLOC_CTX *_mem_save_num_subkeys_0;
- TALLOC_CTX *_mem_save_max_subkeylen_0;
- TALLOC_CTX *_mem_save_max_classlen_0;
- TALLOC_CTX *_mem_save_num_values_0;
- TALLOC_CTX *_mem_save_max_valnamelen_0;
- TALLOC_CTX *_mem_save_max_valbufsize_0;
- TALLOC_CTX *_mem_save_secdescsize_0;
- TALLOC_CTX *_mem_save_last_changed_time_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.classname);
- }
- _mem_save_classname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.classname, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.classname));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_classname_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.classname);
- *r->out.classname = *r->in.classname;
- NDR_PULL_ALLOC(ndr, r->out.num_subkeys);
- ZERO_STRUCTP(r->out.num_subkeys);
- NDR_PULL_ALLOC(ndr, r->out.max_subkeylen);
- ZERO_STRUCTP(r->out.max_subkeylen);
- NDR_PULL_ALLOC(ndr, r->out.max_classlen);
- ZERO_STRUCTP(r->out.max_classlen);
- NDR_PULL_ALLOC(ndr, r->out.num_values);
- ZERO_STRUCTP(r->out.num_values);
- NDR_PULL_ALLOC(ndr, r->out.max_valnamelen);
- ZERO_STRUCTP(r->out.max_valnamelen);
- NDR_PULL_ALLOC(ndr, r->out.max_valbufsize);
- ZERO_STRUCTP(r->out.max_valbufsize);
- NDR_PULL_ALLOC(ndr, r->out.secdescsize);
- ZERO_STRUCTP(r->out.secdescsize);
- NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
- ZERO_STRUCTP(r->out.last_changed_time);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.classname);
- }
- _mem_save_classname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.classname, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.classname));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_classname_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.num_subkeys);
- }
- _mem_save_num_subkeys_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.num_subkeys, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_subkeys));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_subkeys_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.max_subkeylen);
- }
- _mem_save_max_subkeylen_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.max_subkeylen, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_subkeylen));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_subkeylen_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.max_classlen);
- }
- _mem_save_max_classlen_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.max_classlen, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_classlen));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_classlen_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.num_values);
- }
- _mem_save_num_values_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.num_values, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_values));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_values_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.max_valnamelen);
- }
- _mem_save_max_valnamelen_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.max_valnamelen, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_valnamelen));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_valnamelen_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.max_valbufsize);
- }
- _mem_save_max_valbufsize_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.max_valbufsize, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_valbufsize));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_valbufsize_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.secdescsize);
- }
- _mem_save_secdescsize_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.secdescsize, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.secdescsize));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdescsize_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
- }
- _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.last_changed_time, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->out.last_changed_time));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_QueryInfoKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryInfoKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_QueryInfoKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_QueryInfoKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "classname", r->in.classname);
- ndr->depth++;
- ndr_print_winreg_String(ndr, "classname", r->in.classname);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_QueryInfoKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "classname", r->out.classname);
- ndr->depth++;
- ndr_print_winreg_String(ndr, "classname", r->out.classname);
- ndr->depth--;
- ndr_print_ptr(ndr, "num_subkeys", r->out.num_subkeys);
- ndr->depth++;
- ndr_print_uint32(ndr, "num_subkeys", *r->out.num_subkeys);
- ndr->depth--;
- ndr_print_ptr(ndr, "max_subkeylen", r->out.max_subkeylen);
- ndr->depth++;
- ndr_print_uint32(ndr, "max_subkeylen", *r->out.max_subkeylen);
- ndr->depth--;
- ndr_print_ptr(ndr, "max_classlen", r->out.max_classlen);
- ndr->depth++;
- ndr_print_uint32(ndr, "max_classlen", *r->out.max_classlen);
- ndr->depth--;
- ndr_print_ptr(ndr, "num_values", r->out.num_values);
- ndr->depth++;
- ndr_print_uint32(ndr, "num_values", *r->out.num_values);
- ndr->depth--;
- ndr_print_ptr(ndr, "max_valnamelen", r->out.max_valnamelen);
- ndr->depth++;
- ndr_print_uint32(ndr, "max_valnamelen", *r->out.max_valnamelen);
- ndr->depth--;
- ndr_print_ptr(ndr, "max_valbufsize", r->out.max_valbufsize);
- ndr->depth++;
- ndr_print_uint32(ndr, "max_valbufsize", *r->out.max_valbufsize);
- ndr->depth--;
- ndr_print_ptr(ndr, "secdescsize", r->out.secdescsize);
- ndr->depth++;
- ndr_print_uint32(ndr, "secdescsize", *r->out.secdescsize);
- ndr->depth--;
- ndr_print_ptr(ndr, "last_changed_time", r->out.last_changed_time);
- ndr->depth++;
- ndr_print_NTTIME(ndr, "last_changed_time", *r->out.last_changed_time);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_QueryValue(struct ndr_push *ndr, int flags, const struct winreg_QueryValue *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value_name));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.type));
- if (r->in.type) {
- NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->in.type));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data));
- if (r->in.data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.value_length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, *r->in.value_length));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data_size));
- if (r->in.data_size) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.value_length));
- if (r->in.value_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.value_length));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.type));
- if (r->out.type) {
- NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data));
- if (r->out.data) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.value_length));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, *r->out.value_length));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data_size));
- if (r->out.data_size) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.value_length));
- if (r->out.value_length) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.value_length));
- }
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_QueryValue(struct ndr_pull *ndr, int flags, struct winreg_QueryValue *r)
-{
- uint32_t _ptr_type;
- uint32_t _ptr_data;
- uint32_t _ptr_data_size;
- uint32_t _ptr_value_length;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_type_0;
- TALLOC_CTX *_mem_save_data_0;
- TALLOC_CTX *_mem_save_data_size_0;
- TALLOC_CTX *_mem_save_value_length_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value_name));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
- if (_ptr_type) {
- NDR_PULL_ALLOC(ndr, r->in.type);
- } else {
- r->in.type = NULL;
- }
- if (r->in.type) {
- _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.type, 0);
- NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->in.type));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->in.data);
- } else {
- r->in.data = NULL;
- }
- if (r->in.data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.data));
- if (ndr_get_array_length(ndr, &r->in.data) > ndr_get_array_size(ndr, &r->in.data)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.data), ndr_get_array_length(ndr, &r->in.data));
- }
- NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_length(ndr, &r->in.data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
- if (_ptr_data_size) {
- NDR_PULL_ALLOC(ndr, r->in.data_size);
- } else {
- r->in.data_size = NULL;
- }
- if (r->in.data_size) {
- _mem_save_data_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.data_size, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.data_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_size_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value_length));
- if (_ptr_value_length) {
- NDR_PULL_ALLOC(ndr, r->in.value_length);
- } else {
- r->in.value_length = NULL;
- }
- if (r->in.value_length) {
- _mem_save_value_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.value_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.value_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_length_0, 0);
- }
- if (r->in.data) {
- if (r->in.data_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, *r->in.data_size));
- }
- if (r->in.data) {
- if (r->in.value_length == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.data, *r->in.value_length));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
- if (_ptr_type) {
- NDR_PULL_ALLOC(ndr, r->out.type);
- } else {
- r->out.type = NULL;
- }
- if (r->out.type) {
- _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.type, 0);
- NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
- if (_ptr_data) {
- NDR_PULL_ALLOC(ndr, r->out.data);
- } else {
- r->out.data = NULL;
- }
- if (r->out.data) {
- _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.data, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->out.data));
- if (ndr_get_array_length(ndr, &r->out.data) > ndr_get_array_size(ndr, &r->out.data)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.data), ndr_get_array_length(ndr, &r->out.data));
- }
- NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_length(ndr, &r->out.data)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
- if (_ptr_data_size) {
- NDR_PULL_ALLOC(ndr, r->out.data_size);
- } else {
- r->out.data_size = NULL;
- }
- if (r->out.data_size) {
- _mem_save_data_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.data_size, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.data_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_size_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value_length));
- if (_ptr_value_length) {
- NDR_PULL_ALLOC(ndr, r->out.value_length);
- } else {
- r->out.value_length = NULL;
- }
- if (r->out.value_length) {
- _mem_save_value_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.value_length, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.value_length));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_length_0, 0);
- }
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.data) {
- if (r->out.data_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, *r->out.data_size));
- }
- if (r->out.data) {
- if (r->out.value_length == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.data, *r->out.value_length));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_QueryValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryValue *r)
-{
- ndr_print_struct(ndr, name, "winreg_QueryValue");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_QueryValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_winreg_String(ndr, "value_name", &r->in.value_name);
- ndr_print_ptr(ndr, "type", r->in.type);
- ndr->depth++;
- if (r->in.type) {
- ndr_print_winreg_Type(ndr, "type", *r->in.type);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "data", r->in.data);
- ndr->depth++;
- if (r->in.data) {
- if (r->in.value_length == NULL) return;
- ndr_print_array_uint8(ndr, "data", r->in.data, *r->in.value_length);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "data_size", r->in.data_size);
- ndr->depth++;
- if (r->in.data_size) {
- ndr_print_uint32(ndr, "data_size", *r->in.data_size);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "value_length", r->in.value_length);
- ndr->depth++;
- if (r->in.value_length) {
- ndr_print_uint32(ndr, "value_length", *r->in.value_length);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_QueryValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "type", r->out.type);
- ndr->depth++;
- if (r->out.type) {
- ndr_print_winreg_Type(ndr, "type", *r->out.type);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "data", r->out.data);
- ndr->depth++;
- if (r->out.data) {
- if (r->out.value_length == NULL) return;
- ndr_print_array_uint8(ndr, "data", r->out.data, *r->out.value_length);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "data_size", r->out.data_size);
- ndr->depth++;
- if (r->out.data_size) {
- ndr_print_uint32(ndr, "data_size", *r->out.data_size);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "value_length", r->out.value_length);
- ndr->depth++;
- if (r->out.value_length) {
- ndr_print_uint32(ndr, "value_length", *r->out.value_length);
- }
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_ReplaceKey(struct ndr_push *ndr, int flags, const struct winreg_ReplaceKey *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_ReplaceKey(struct ndr_pull *ndr, int flags, struct winreg_ReplaceKey *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_ReplaceKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_ReplaceKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_ReplaceKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_ReplaceKey");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_ReplaceKey");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_RestoreKey(struct ndr_push *ndr, int flags, const struct winreg_RestoreKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.filename == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_RestoreKey(struct ndr_pull *ndr, int flags, struct winreg_RestoreKey *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_filename_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.filename);
- }
- _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_RestoreKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_RestoreKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_RestoreKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_RestoreKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "filename", r->in.filename);
- ndr->depth++;
- ndr_print_winreg_String(ndr, "filename", r->in.filename);
- ndr->depth--;
- ndr_print_uint32(ndr, "flags", r->in.flags);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_RestoreKey");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_SaveKey(struct ndr_push *ndr, int flags, const struct winreg_SaveKey *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- if (r->in.filename == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.sec_attrib));
- if (r->in.sec_attrib) {
- NDR_CHECK(ndr_push_KeySecurityAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_attrib));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_SaveKey(struct ndr_pull *ndr, int flags, struct winreg_SaveKey *r)
-{
- uint32_t _ptr_sec_attrib;
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_filename_0;
- TALLOC_CTX *_mem_save_sec_attrib_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.filename);
- }
- _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sec_attrib));
- if (_ptr_sec_attrib) {
- NDR_PULL_ALLOC(ndr, r->in.sec_attrib);
- } else {
- r->in.sec_attrib = NULL;
- }
- if (r->in.sec_attrib) {
- _mem_save_sec_attrib_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sec_attrib, 0);
- NDR_CHECK(ndr_pull_KeySecurityAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_attrib));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_attrib_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_SaveKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_SaveKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_SaveKey");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "filename", r->in.filename);
- ndr->depth++;
- ndr_print_winreg_String(ndr, "filename", r->in.filename);
- ndr->depth--;
- ndr_print_ptr(ndr, "sec_attrib", r->in.sec_attrib);
- ndr->depth++;
- if (r->in.sec_attrib) {
- ndr_print_KeySecurityAttribute(ndr, "sec_attrib", r->in.sec_attrib);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_SaveKey");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_SetKeySecurity(struct ndr_push *ndr, int flags, const struct winreg_SetKeySecurity *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- if (r->in.sd == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_SetKeySecurity(struct ndr_pull *ndr, int flags, struct winreg_SetKeySecurity *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_sd_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.sd);
- }
- _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.sd, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_SetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetKeySecurity *r)
-{
- ndr_print_struct(ndr, name, "winreg_SetKeySecurity");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_SetKeySecurity");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr_print_ptr(ndr, "sd", r->in.sd);
- ndr->depth++;
- ndr_print_KeySecurityData(ndr, "sd", r->in.sd);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_SetKeySecurity");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_SetValue(struct ndr_push *ndr, int flags, const struct winreg_SetValue *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
- if (r->in.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, r->in.size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.size));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_SetValue(struct ndr_pull *ndr, int flags, struct winreg_SetValue *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
- NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
- }
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_size(ndr, &r->in.data)));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.size));
- if (r->in.data) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.size));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_SetValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetValue *r)
-{
- ndr_print_struct(ndr, name, "winreg_SetValue");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_SetValue");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr_print_winreg_String(ndr, "name", &r->in.name);
- ndr_print_winreg_Type(ndr, "type", r->in.type);
- ndr_print_ptr(ndr, "data", r->in.data);
- ndr->depth++;
- ndr_print_array_uint8(ndr, "data", r->in.data, r->in.size);
- ndr->depth--;
- ndr_print_uint32(ndr, "size", r->in.size);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_SetValue");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_UnLoadKey(struct ndr_push *ndr, int flags, const struct winreg_UnLoadKey *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_UnLoadKey(struct ndr_pull *ndr, int flags, struct winreg_UnLoadKey *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_UnLoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_UnLoadKey *r)
-{
- ndr_print_struct(ndr, name, "winreg_UnLoadKey");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_UnLoadKey");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_UnLoadKey");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_InitiateSystemShutdown(struct ndr_push *ndr, int flags, const struct winreg_InitiateSystemShutdown *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
- if (r->in.hostname) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
- if (r->in.message) {
- NDR_CHECK(ndr_push_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_InitiateSystemShutdown(struct ndr_pull *ndr, int flags, struct winreg_InitiateSystemShutdown *r)
-{
- uint32_t _ptr_hostname;
- uint32_t _ptr_message;
- TALLOC_CTX *_mem_save_hostname_0;
- TALLOC_CTX *_mem_save_message_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
- if (_ptr_hostname) {
- NDR_PULL_ALLOC(ndr, r->in.hostname);
- } else {
- r->in.hostname = NULL;
- }
- if (r->in.hostname) {
- _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
- if (_ptr_message) {
- NDR_PULL_ALLOC(ndr, r->in.message);
- } else {
- r->in.message = NULL;
- }
- if (r->in.message) {
- _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
- NDR_CHECK(ndr_pull_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_InitiateSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdown *r)
-{
- ndr_print_struct(ndr, name, "winreg_InitiateSystemShutdown");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_InitiateSystemShutdown");
- ndr->depth++;
- ndr_print_ptr(ndr, "hostname", r->in.hostname);
- ndr->depth++;
- if (r->in.hostname) {
- ndr_print_uint16(ndr, "hostname", *r->in.hostname);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "message", r->in.message);
- ndr->depth++;
- if (r->in.message) {
- ndr_print_initshutdown_String(ndr, "message", r->in.message);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "timeout", r->in.timeout);
- ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
- ndr_print_uint8(ndr, "reboot", r->in.reboot);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_InitiateSystemShutdown");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_AbortSystemShutdown(struct ndr_push *ndr, int flags, const struct winreg_AbortSystemShutdown *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
- if (r->in.server) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.server));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_AbortSystemShutdown(struct ndr_pull *ndr, int flags, struct winreg_AbortSystemShutdown *r)
-{
- uint32_t _ptr_server;
- TALLOC_CTX *_mem_save_server_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
- if (_ptr_server) {
- NDR_PULL_ALLOC(ndr, r->in.server);
- } else {
- r->in.server = NULL;
- }
- if (r->in.server) {
- _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.server));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_AbortSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_AbortSystemShutdown *r)
-{
- ndr_print_struct(ndr, name, "winreg_AbortSystemShutdown");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_AbortSystemShutdown");
- ndr->depth++;
- ndr_print_ptr(ndr, "server", r->in.server);
- ndr->depth++;
- if (r->in.server) {
- ndr_print_uint16(ndr, "server", *r->in.server);
- }
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_AbortSystemShutdown");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_GetVersion(struct ndr_push *ndr, int flags, const struct winreg_GetVersion *r)
-{
- if (flags & NDR_IN) {
- if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- }
- if (flags & NDR_OUT) {
- if (r->out.version == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.version));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_GetVersion(struct ndr_pull *ndr, int flags, struct winreg_GetVersion *r)
-{
- TALLOC_CTX *_mem_save_handle_0;
- TALLOC_CTX *_mem_save_version_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC(ndr, r->out.version);
- ZERO_STRUCTP(r->out.version);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.version);
- }
- _mem_save_version_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.version, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.version));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_version_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_GetVersion(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetVersion *r)
-{
- ndr_print_struct(ndr, name, "winreg_GetVersion");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_GetVersion");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->in.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->in.handle);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_GetVersion");
- ndr->depth++;
- ndr_print_ptr(ndr, "version", r->out.version);
- ndr->depth++;
- ndr_print_uint32(ndr, "version", *r->out.version);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKCC(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCC *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKCC(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCC *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKCC(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCC *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKCC");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKCC");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKCC");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKDD(struct ndr_push *ndr, int flags, const struct winreg_OpenHKDD *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKDD(struct ndr_pull *ndr, int flags, struct winreg_OpenHKDD *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKDD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKDD *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKDD");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKDD");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKDD");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_QueryMultipleValues(struct ndr_push *ndr, int flags, const struct winreg_QueryMultipleValues *r)
-{
- uint32_t cntr_values_1;
- if (flags & NDR_IN) {
- if (r->in.key_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.key_handle));
- if (r->in.values == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_SCALARS, &r->in.values[cntr_values_1]));
- }
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_BUFFERS, &r->in.values[cntr_values_1]));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
- if (r->in.buffer) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, *r->in.buffer_size));
- }
- if (r->in.buffer_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
- }
- if (flags & NDR_OUT) {
- if (r->out.values == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_SCALARS, &r->out.values[cntr_values_1]));
- }
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_BUFFERS, &r->out.values[cntr_values_1]));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.buffer));
- if (r->out.buffer) {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
- NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, *r->out.buffer_size));
- }
- if (r->out.buffer_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_QueryMultipleValues(struct ndr_pull *ndr, int flags, struct winreg_QueryMultipleValues *r)
-{
- uint32_t cntr_values_1;
- uint32_t _ptr_buffer;
- TALLOC_CTX *_mem_save_key_handle_0;
- TALLOC_CTX *_mem_save_values_1;
- TALLOC_CTX *_mem_save_buffer_0;
- TALLOC_CTX *_mem_save_buffer_size_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.key_handle);
- }
- _mem_save_key_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.key_handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.key_handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.values));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.values));
- if (ndr_get_array_length(ndr, &r->in.values) > ndr_get_array_size(ndr, &r->in.values)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.values), ndr_get_array_length(ndr, &r->in.values));
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC_N(ndr, r->in.values, ndr_get_array_size(ndr, &r->in.values));
- }
- memcpy(r->out.values, r->in.values, ndr_get_array_size(ndr, &r->in.values) * sizeof(*r->in.values));
- _mem_save_values_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.values, 0);
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_SCALARS, &r->in.values[cntr_values_1]));
- }
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_BUFFERS, &r->in.values[cntr_values_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_1, 0);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_values));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
- if (_ptr_buffer) {
- NDR_PULL_ALLOC(ndr, r->in.buffer);
- } else {
- r->in.buffer = NULL;
- }
- if (r->in.buffer) {
- _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->in.buffer));
- if (ndr_get_array_length(ndr, &r->in.buffer) > ndr_get_array_size(ndr, &r->in.buffer)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.buffer), ndr_get_array_length(ndr, &r->in.buffer));
- }
- NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_length(ndr, &r->in.buffer)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->in.buffer_size);
- }
- _mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer_size, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_PULL_ALLOC_N(ndr, r->out.values, r->in.num_values);
- memcpy(r->out.values, r->in.values, r->in.num_values * sizeof(*r->in.values));
- NDR_PULL_ALLOC(ndr, r->out.buffer_size);
- *r->out.buffer_size = *r->in.buffer_size;
- if (r->in.values) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.values, r->in.num_values));
- }
- if (r->in.values) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.values, r->in.num_values));
- }
- if (r->in.buffer) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, *r->in.buffer_size));
- }
- if (r->in.buffer) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.buffer, *r->in.buffer_size));
- }
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.values));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->out.values));
- if (ndr_get_array_length(ndr, &r->out.values) > ndr_get_array_size(ndr, &r->out.values)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.values), ndr_get_array_length(ndr, &r->out.values));
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC_N(ndr, r->out.values, ndr_get_array_size(ndr, &r->out.values));
- }
- memcpy(r->out.values, r->in.values, ndr_get_array_size(ndr, &r->out.values) * sizeof(*r->in.values));
- _mem_save_values_1 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.values, 0);
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_SCALARS, &r->out.values[cntr_values_1]));
- }
- for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
- NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_BUFFERS, &r->out.values[cntr_values_1]));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_1, 0);
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
- if (_ptr_buffer) {
- NDR_PULL_ALLOC(ndr, r->out.buffer);
- } else {
- r->out.buffer = NULL;
- }
- if (r->out.buffer) {
- _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, 0);
- NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
- NDR_CHECK(ndr_pull_array_length(ndr, &r->out.buffer));
- if (ndr_get_array_length(ndr, &r->out.buffer) > ndr_get_array_size(ndr, &r->out.buffer)) {
- return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.buffer), ndr_get_array_length(ndr, &r->out.buffer));
- }
- NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
- NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_length(ndr, &r->out.buffer)));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
- }
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.buffer_size);
- }
- _mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer_size, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.buffer_size));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- if (r->out.values) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.values, r->in.num_values));
- }
- if (r->out.values) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.values, r->in.num_values));
- }
- if (r->out.buffer) {
- NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
- }
- if (r->out.buffer) {
- NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
- }
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_QueryMultipleValues(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues *r)
-{
- uint32_t cntr_values_1;
- ndr_print_struct(ndr, name, "winreg_QueryMultipleValues");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_QueryMultipleValues");
- ndr->depth++;
- ndr_print_ptr(ndr, "key_handle", r->in.key_handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "key_handle", r->in.key_handle);
- ndr->depth--;
- ndr_print_ptr(ndr, "values", r->in.values);
- ndr->depth++;
- ndr->print(ndr, "%s: ARRAY(%d)", "values", r->in.num_values);
- ndr->depth++;
- for (cntr_values_1=0;cntr_values_1<r->in.num_values;cntr_values_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_values_1);
- if (idx_1) {
- ndr_print_QueryMultipleValue(ndr, "values", &r->in.values[cntr_values_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- ndr->depth--;
- ndr_print_uint32(ndr, "num_values", r->in.num_values);
- ndr_print_ptr(ndr, "buffer", r->in.buffer);
- ndr->depth++;
- if (r->in.buffer) {
- ndr_print_array_uint8(ndr, "buffer", r->in.buffer, *r->in.buffer_size);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "buffer_size", r->in.buffer_size);
- ndr->depth++;
- ndr_print_uint32(ndr, "buffer_size", *r->in.buffer_size);
- ndr->depth--;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_QueryMultipleValues");
- ndr->depth++;
- ndr_print_ptr(ndr, "values", r->out.values);
- ndr->depth++;
- ndr->print(ndr, "%s: ARRAY(%d)", "values", r->in.num_values);
- ndr->depth++;
- for (cntr_values_1=0;cntr_values_1<r->in.num_values;cntr_values_1++) {
- char *idx_1=NULL;
- asprintf(&idx_1, "[%d]", cntr_values_1);
- if (idx_1) {
- ndr_print_QueryMultipleValue(ndr, "values", &r->out.values[cntr_values_1]);
- free(idx_1);
- }
- }
- ndr->depth--;
- ndr->depth--;
- ndr_print_ptr(ndr, "buffer", r->out.buffer);
- ndr->depth++;
- if (r->out.buffer) {
- ndr_print_array_uint8(ndr, "buffer", r->out.buffer, *r->out.buffer_size);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "buffer_size", r->out.buffer_size);
- ndr->depth++;
- ndr_print_uint32(ndr, "buffer_size", *r->out.buffer_size);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_InitiateSystemShutdownEx(struct ndr_push *ndr, int flags, const struct winreg_InitiateSystemShutdownEx *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
- if (r->in.hostname) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
- }
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
- if (r->in.message) {
- NDR_CHECK(ndr_push_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- }
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
- NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reason));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_InitiateSystemShutdownEx(struct ndr_pull *ndr, int flags, struct winreg_InitiateSystemShutdownEx *r)
-{
- uint32_t _ptr_hostname;
- uint32_t _ptr_message;
- TALLOC_CTX *_mem_save_hostname_0;
- TALLOC_CTX *_mem_save_message_0;
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
- if (_ptr_hostname) {
- NDR_PULL_ALLOC(ndr, r->in.hostname);
- } else {
- r->in.hostname = NULL;
- }
- if (r->in.hostname) {
- _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
- }
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
- if (_ptr_message) {
- NDR_PULL_ALLOC(ndr, r->in.message);
- } else {
- r->in.message = NULL;
- }
- if (r->in.message) {
- _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
- NDR_CHECK(ndr_pull_initshutdown_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
- }
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
- NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reason));
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_InitiateSystemShutdownEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdownEx *r)
-{
- ndr_print_struct(ndr, name, "winreg_InitiateSystemShutdownEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_InitiateSystemShutdownEx");
- ndr->depth++;
- ndr_print_ptr(ndr, "hostname", r->in.hostname);
- ndr->depth++;
- if (r->in.hostname) {
- ndr_print_uint16(ndr, "hostname", *r->in.hostname);
- }
- ndr->depth--;
- ndr_print_ptr(ndr, "message", r->in.message);
- ndr->depth++;
- if (r->in.message) {
- ndr_print_initshutdown_String(ndr, "message", r->in.message);
- }
- ndr->depth--;
- ndr_print_uint32(ndr, "timeout", r->in.timeout);
- ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
- ndr_print_uint8(ndr, "reboot", r->in.reboot);
- ndr_print_uint32(ndr, "reason", r->in.reason);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_InitiateSystemShutdownEx");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_SaveKeyEx(struct ndr_push *ndr, int flags, const struct winreg_SaveKeyEx *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_SaveKeyEx(struct ndr_pull *ndr, int flags, struct winreg_SaveKeyEx *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_SaveKeyEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKeyEx *r)
-{
- ndr_print_struct(ndr, name, "winreg_SaveKeyEx");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_SaveKeyEx");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_SaveKeyEx");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKPT(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPT *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKPT(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPT *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKPT(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPT *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKPT");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKPT");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKPT");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_OpenHKPN(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPN *r)
-{
- if (flags & NDR_IN) {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
- if (r->in.system_name) {
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
- }
- NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
- }
- if (flags & NDR_OUT) {
- if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
- NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_OpenHKPN(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPN *r)
-{
- uint32_t _ptr_system_name;
- TALLOC_CTX *_mem_save_system_name_0;
- TALLOC_CTX *_mem_save_handle_0;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
- if (_ptr_system_name) {
- NDR_PULL_ALLOC(ndr, r->in.system_name);
- } else {
- r->in.system_name = NULL;
- }
- if (r->in.system_name) {
- _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
- }
- NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
- NDR_PULL_ALLOC(ndr, r->out.handle);
- ZERO_STRUCTP(r->out.handle);
- }
- if (flags & NDR_OUT) {
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.handle);
- }
- _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_OpenHKPN(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPN *r)
-{
- ndr_print_struct(ndr, name, "winreg_OpenHKPN");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_OpenHKPN");
- ndr->depth++;
- ndr_print_ptr(ndr, "system_name", r->in.system_name);
- ndr->depth++;
- if (r->in.system_name) {
- ndr_print_uint16(ndr, "system_name", *r->in.system_name);
- }
- ndr->depth--;
- ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_OpenHKPN");
- ndr->depth++;
- ndr_print_ptr(ndr, "handle", r->out.handle);
- ndr->depth++;
- ndr_print_policy_handle(ndr, "handle", r->out.handle);
- ndr->depth--;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-NTSTATUS ndr_push_winreg_QueryMultipleValues2(struct ndr_push *ndr, int flags, const struct winreg_QueryMultipleValues2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-NTSTATUS ndr_pull_winreg_QueryMultipleValues2(struct ndr_pull *ndr, int flags, struct winreg_QueryMultipleValues2 *r)
-{
- if (flags & NDR_IN) {
- }
- if (flags & NDR_OUT) {
- NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
- }
- return NT_STATUS_OK;
-}
-
-_PUBLIC_ void ndr_print_winreg_QueryMultipleValues2(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues2 *r)
-{
- ndr_print_struct(ndr, name, "winreg_QueryMultipleValues2");
- ndr->depth++;
- if (flags & NDR_SET_VALUES) {
- ndr->flags |= LIBNDR_PRINT_SET_VALUES;
- }
- if (flags & NDR_IN) {
- ndr_print_struct(ndr, "in", "winreg_QueryMultipleValues2");
- ndr->depth++;
- ndr->depth--;
- }
- if (flags & NDR_OUT) {
- ndr_print_struct(ndr, "out", "winreg_QueryMultipleValues2");
- ndr->depth++;
- ndr_print_WERROR(ndr, "result", r->out.result);
- ndr->depth--;
- }
- ndr->depth--;
-}
-
-const struct dcerpc_interface_call winreg_calls[] = {
- {
- "winreg_OpenHKCR",
- sizeof(struct winreg_OpenHKCR),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCR,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCR,
- (ndr_print_function_t) ndr_print_winreg_OpenHKCR,
- False,
- },
- {
- "winreg_OpenHKCU",
- sizeof(struct winreg_OpenHKCU),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCU,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCU,
- (ndr_print_function_t) ndr_print_winreg_OpenHKCU,
- False,
- },
- {
- "winreg_OpenHKLM",
- sizeof(struct winreg_OpenHKLM),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKLM,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKLM,
- (ndr_print_function_t) ndr_print_winreg_OpenHKLM,
- False,
- },
- {
- "winreg_OpenHKPD",
- sizeof(struct winreg_OpenHKPD),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPD,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPD,
- (ndr_print_function_t) ndr_print_winreg_OpenHKPD,
- False,
- },
- {
- "winreg_OpenHKU",
- sizeof(struct winreg_OpenHKU),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKU,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKU,
- (ndr_print_function_t) ndr_print_winreg_OpenHKU,
- False,
- },
- {
- "winreg_CloseKey",
- sizeof(struct winreg_CloseKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_CloseKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_CloseKey,
- (ndr_print_function_t) ndr_print_winreg_CloseKey,
- False,
- },
- {
- "winreg_CreateKey",
- sizeof(struct winreg_CreateKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_CreateKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_CreateKey,
- (ndr_print_function_t) ndr_print_winreg_CreateKey,
- False,
- },
- {
- "winreg_DeleteKey",
- sizeof(struct winreg_DeleteKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_DeleteKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_DeleteKey,
- (ndr_print_function_t) ndr_print_winreg_DeleteKey,
- False,
- },
- {
- "winreg_DeleteValue",
- sizeof(struct winreg_DeleteValue),
- (ndr_push_flags_fn_t) ndr_push_winreg_DeleteValue,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_DeleteValue,
- (ndr_print_function_t) ndr_print_winreg_DeleteValue,
- False,
- },
- {
- "winreg_EnumKey",
- sizeof(struct winreg_EnumKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_EnumKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_EnumKey,
- (ndr_print_function_t) ndr_print_winreg_EnumKey,
- False,
- },
- {
- "winreg_EnumValue",
- sizeof(struct winreg_EnumValue),
- (ndr_push_flags_fn_t) ndr_push_winreg_EnumValue,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_EnumValue,
- (ndr_print_function_t) ndr_print_winreg_EnumValue,
- False,
- },
- {
- "winreg_FlushKey",
- sizeof(struct winreg_FlushKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_FlushKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_FlushKey,
- (ndr_print_function_t) ndr_print_winreg_FlushKey,
- False,
- },
- {
- "winreg_GetKeySecurity",
- sizeof(struct winreg_GetKeySecurity),
- (ndr_push_flags_fn_t) ndr_push_winreg_GetKeySecurity,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_GetKeySecurity,
- (ndr_print_function_t) ndr_print_winreg_GetKeySecurity,
- False,
- },
- {
- "winreg_LoadKey",
- sizeof(struct winreg_LoadKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_LoadKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_LoadKey,
- (ndr_print_function_t) ndr_print_winreg_LoadKey,
- False,
- },
- {
- "winreg_NotifyChangeKeyValue",
- sizeof(struct winreg_NotifyChangeKeyValue),
- (ndr_push_flags_fn_t) ndr_push_winreg_NotifyChangeKeyValue,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_NotifyChangeKeyValue,
- (ndr_print_function_t) ndr_print_winreg_NotifyChangeKeyValue,
- False,
- },
- {
- "winreg_OpenKey",
- sizeof(struct winreg_OpenKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenKey,
- (ndr_print_function_t) ndr_print_winreg_OpenKey,
- False,
- },
- {
- "winreg_QueryInfoKey",
- sizeof(struct winreg_QueryInfoKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_QueryInfoKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryInfoKey,
- (ndr_print_function_t) ndr_print_winreg_QueryInfoKey,
- False,
- },
- {
- "winreg_QueryValue",
- sizeof(struct winreg_QueryValue),
- (ndr_push_flags_fn_t) ndr_push_winreg_QueryValue,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryValue,
- (ndr_print_function_t) ndr_print_winreg_QueryValue,
- False,
- },
- {
- "winreg_ReplaceKey",
- sizeof(struct winreg_ReplaceKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_ReplaceKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_ReplaceKey,
- (ndr_print_function_t) ndr_print_winreg_ReplaceKey,
- False,
- },
- {
- "winreg_RestoreKey",
- sizeof(struct winreg_RestoreKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_RestoreKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_RestoreKey,
- (ndr_print_function_t) ndr_print_winreg_RestoreKey,
- False,
- },
- {
- "winreg_SaveKey",
- sizeof(struct winreg_SaveKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_SaveKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_SaveKey,
- (ndr_print_function_t) ndr_print_winreg_SaveKey,
- False,
- },
- {
- "winreg_SetKeySecurity",
- sizeof(struct winreg_SetKeySecurity),
- (ndr_push_flags_fn_t) ndr_push_winreg_SetKeySecurity,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_SetKeySecurity,
- (ndr_print_function_t) ndr_print_winreg_SetKeySecurity,
- False,
- },
- {
- "winreg_SetValue",
- sizeof(struct winreg_SetValue),
- (ndr_push_flags_fn_t) ndr_push_winreg_SetValue,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_SetValue,
- (ndr_print_function_t) ndr_print_winreg_SetValue,
- False,
- },
- {
- "winreg_UnLoadKey",
- sizeof(struct winreg_UnLoadKey),
- (ndr_push_flags_fn_t) ndr_push_winreg_UnLoadKey,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_UnLoadKey,
- (ndr_print_function_t) ndr_print_winreg_UnLoadKey,
- False,
- },
- {
- "winreg_InitiateSystemShutdown",
- sizeof(struct winreg_InitiateSystemShutdown),
- (ndr_push_flags_fn_t) ndr_push_winreg_InitiateSystemShutdown,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_InitiateSystemShutdown,
- (ndr_print_function_t) ndr_print_winreg_InitiateSystemShutdown,
- False,
- },
- {
- "winreg_AbortSystemShutdown",
- sizeof(struct winreg_AbortSystemShutdown),
- (ndr_push_flags_fn_t) ndr_push_winreg_AbortSystemShutdown,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_AbortSystemShutdown,
- (ndr_print_function_t) ndr_print_winreg_AbortSystemShutdown,
- False,
- },
- {
- "winreg_GetVersion",
- sizeof(struct winreg_GetVersion),
- (ndr_push_flags_fn_t) ndr_push_winreg_GetVersion,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_GetVersion,
- (ndr_print_function_t) ndr_print_winreg_GetVersion,
- False,
- },
- {
- "winreg_OpenHKCC",
- sizeof(struct winreg_OpenHKCC),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCC,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCC,
- (ndr_print_function_t) ndr_print_winreg_OpenHKCC,
- False,
- },
- {
- "winreg_OpenHKDD",
- sizeof(struct winreg_OpenHKDD),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKDD,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKDD,
- (ndr_print_function_t) ndr_print_winreg_OpenHKDD,
- False,
- },
- {
- "winreg_QueryMultipleValues",
- sizeof(struct winreg_QueryMultipleValues),
- (ndr_push_flags_fn_t) ndr_push_winreg_QueryMultipleValues,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryMultipleValues,
- (ndr_print_function_t) ndr_print_winreg_QueryMultipleValues,
- False,
- },
- {
- "winreg_InitiateSystemShutdownEx",
- sizeof(struct winreg_InitiateSystemShutdownEx),
- (ndr_push_flags_fn_t) ndr_push_winreg_InitiateSystemShutdownEx,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_InitiateSystemShutdownEx,
- (ndr_print_function_t) ndr_print_winreg_InitiateSystemShutdownEx,
- False,
- },
- {
- "winreg_SaveKeyEx",
- sizeof(struct winreg_SaveKeyEx),
- (ndr_push_flags_fn_t) ndr_push_winreg_SaveKeyEx,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_SaveKeyEx,
- (ndr_print_function_t) ndr_print_winreg_SaveKeyEx,
- False,
- },
- {
- "winreg_OpenHKPT",
- sizeof(struct winreg_OpenHKPT),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPT,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPT,
- (ndr_print_function_t) ndr_print_winreg_OpenHKPT,
- False,
- },
- {
- "winreg_OpenHKPN",
- sizeof(struct winreg_OpenHKPN),
- (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPN,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPN,
- (ndr_print_function_t) ndr_print_winreg_OpenHKPN,
- False,
- },
- {
- "winreg_QueryMultipleValues2",
- sizeof(struct winreg_QueryMultipleValues2),
- (ndr_push_flags_fn_t) ndr_push_winreg_QueryMultipleValues2,
- (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryMultipleValues2,
- (ndr_print_function_t) ndr_print_winreg_QueryMultipleValues2,
- False,
- },
- { NULL, 0, NULL, NULL, NULL, False }
-};
-
-const char * const winreg_endpoint_strings[] = {
- "ncacn_np:[\\pipe\\winreg]",
- "ncacn_ip_tcp:",
- "ncalrpc:",
-};
-
-const struct dcerpc_endpoint_list winreg_endpoints = {
- .count = 3,
- .names = winreg_endpoint_strings
-};
-
-const char * const winreg_authservice_strings[] = {
- "host",
-};
-
-const struct dcerpc_authservice_list winreg_authservices = {
- .count = 3,
- .names = winreg_authservice_strings
-};
-
-
-const struct dcerpc_interface_table dcerpc_table_winreg = {
- .name = "winreg",
- .syntax_id = {
- {0x338cd001,0x2244,0x31f1,{0xaa,0xaa},{0x90,0x00,0x38,0x00,0x10,0x03}},
- DCERPC_WINREG_VERSION
- },
- .helpstring = DCERPC_WINREG_HELPSTRING,
- .num_calls = 35,
- .calls = winreg_calls,
- .endpoints = &winreg_endpoints,
- .authservices = &winreg_authservices
-};
-
diff --git a/source/librpc/gen_ndr/ndr_winreg.h b/source/librpc/gen_ndr/ndr_winreg.h
deleted file mode 100644
index a224db006c0..00000000000
--- a/source/librpc/gen_ndr/ndr_winreg.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/gen_ndr/winreg.h"
-
-#ifndef _HEADER_NDR_winreg
-#define _HEADER_NDR_winreg
-
-#include "librpc/ndr/libndr.h"
-#define DCERPC_WINREG_UUID "338cd001-2244-31f1-aaaa-900038001003"
-#define DCERPC_WINREG_VERSION 1.0
-#define DCERPC_WINREG_NAME "winreg"
-#define DCERPC_WINREG_HELPSTRING "Remote Registry Service"
-extern const struct dcerpc_interface_table dcerpc_table_winreg;
-NTSTATUS dcerpc_server_winreg_init(void);
-#define DCERPC_WINREG_OPENHKCR (0x00)
-
-#define DCERPC_WINREG_OPENHKCU (0x01)
-
-#define DCERPC_WINREG_OPENHKLM (0x02)
-
-#define DCERPC_WINREG_OPENHKPD (0x03)
-
-#define DCERPC_WINREG_OPENHKU (0x04)
-
-#define DCERPC_WINREG_CLOSEKEY (0x05)
-
-#define DCERPC_WINREG_CREATEKEY (0x06)
-
-#define DCERPC_WINREG_DELETEKEY (0x07)
-
-#define DCERPC_WINREG_DELETEVALUE (0x08)
-
-#define DCERPC_WINREG_ENUMKEY (0x09)
-
-#define DCERPC_WINREG_ENUMVALUE (0x0a)
-
-#define DCERPC_WINREG_FLUSHKEY (0x0b)
-
-#define DCERPC_WINREG_GETKEYSECURITY (0x0c)
-
-#define DCERPC_WINREG_LOADKEY (0x0d)
-
-#define DCERPC_WINREG_NOTIFYCHANGEKEYVALUE (0x0e)
-
-#define DCERPC_WINREG_OPENKEY (0x0f)
-
-#define DCERPC_WINREG_QUERYINFOKEY (0x10)
-
-#define DCERPC_WINREG_QUERYVALUE (0x11)
-
-#define DCERPC_WINREG_REPLACEKEY (0x12)
-
-#define DCERPC_WINREG_RESTOREKEY (0x13)
-
-#define DCERPC_WINREG_SAVEKEY (0x14)
-
-#define DCERPC_WINREG_SETKEYSECURITY (0x15)
-
-#define DCERPC_WINREG_SETVALUE (0x16)
-
-#define DCERPC_WINREG_UNLOADKEY (0x17)
-
-#define DCERPC_WINREG_INITIATESYSTEMSHUTDOWN (0x18)
-
-#define DCERPC_WINREG_ABORTSYSTEMSHUTDOWN (0x19)
-
-#define DCERPC_WINREG_GETVERSION (0x1a)
-
-#define DCERPC_WINREG_OPENHKCC (0x1b)
-
-#define DCERPC_WINREG_OPENHKDD (0x1c)
-
-#define DCERPC_WINREG_QUERYMULTIPLEVALUES (0x1d)
-
-#define DCERPC_WINREG_INITIATESYSTEMSHUTDOWNEX (0x1e)
-
-#define DCERPC_WINREG_SAVEKEYEX (0x1f)
-
-#define DCERPC_WINREG_OPENHKPT (0x20)
-
-#define DCERPC_WINREG_OPENHKPN (0x21)
-
-#define DCERPC_WINREG_QUERYMULTIPLEVALUES2 (0x22)
-
-#define DCERPC_WINREG_CALL_COUNT (35)
-void ndr_print_winreg_AccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_winreg_Type(struct ndr_print *ndr, const char *name, enum winreg_Type r);
-NTSTATUS ndr_push_winreg_String(struct ndr_push *ndr, int ndr_flags, const struct winreg_String *r);
-NTSTATUS ndr_pull_winreg_String(struct ndr_pull *ndr, int ndr_flags, struct winreg_String *r);
-void ndr_print_winreg_String(struct ndr_print *ndr, const char *name, const struct winreg_String *r);
-void ndr_print_KeySecurityData(struct ndr_print *ndr, const char *name, const struct KeySecurityData *r);
-void ndr_print_winreg_SecBuf(struct ndr_print *ndr, const char *name, const struct winreg_SecBuf *r);
-void ndr_print_winreg_CreateAction(struct ndr_print *ndr, const char *name, enum winreg_CreateAction r);
-void ndr_print_winreg_StringBuf(struct ndr_print *ndr, const char *name, const struct winreg_StringBuf *r);
-void ndr_print_winreg_ValNameBuf(struct ndr_print *ndr, const char *name, const struct winreg_ValNameBuf *r);
-void ndr_print_KeySecurityAttribute(struct ndr_print *ndr, const char *name, const struct KeySecurityAttribute *r);
-void ndr_print_QueryMultipleValue(struct ndr_print *ndr, const char *name, const struct QueryMultipleValue *r);
-void ndr_print_winreg_OpenHKCR(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCR *r);
-void ndr_print_winreg_OpenHKCU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCU *r);
-void ndr_print_winreg_OpenHKLM(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKLM *r);
-void ndr_print_winreg_OpenHKPD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPD *r);
-void ndr_print_winreg_OpenHKU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKU *r);
-void ndr_print_winreg_CloseKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CloseKey *r);
-void ndr_print_winreg_CreateKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CreateKey *r);
-void ndr_print_winreg_DeleteKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteKey *r);
-void ndr_print_winreg_DeleteValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteValue *r);
-void ndr_print_winreg_EnumKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumKey *r);
-void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumValue *r);
-void ndr_print_winreg_FlushKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_FlushKey *r);
-void ndr_print_winreg_GetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetKeySecurity *r);
-void ndr_print_winreg_LoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_LoadKey *r);
-void ndr_print_winreg_NotifyChangeKeyValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_NotifyChangeKeyValue *r);
-void ndr_print_winreg_OpenKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenKey *r);
-void ndr_print_winreg_QueryInfoKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryInfoKey *r);
-void ndr_print_winreg_QueryValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryValue *r);
-void ndr_print_winreg_ReplaceKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_ReplaceKey *r);
-void ndr_print_winreg_RestoreKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_RestoreKey *r);
-void ndr_print_winreg_SaveKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKey *r);
-void ndr_print_winreg_SetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetKeySecurity *r);
-void ndr_print_winreg_SetValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetValue *r);
-void ndr_print_winreg_UnLoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_UnLoadKey *r);
-void ndr_print_winreg_InitiateSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdown *r);
-void ndr_print_winreg_AbortSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_AbortSystemShutdown *r);
-void ndr_print_winreg_GetVersion(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetVersion *r);
-void ndr_print_winreg_OpenHKCC(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCC *r);
-void ndr_print_winreg_OpenHKDD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKDD *r);
-void ndr_print_winreg_QueryMultipleValues(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues *r);
-void ndr_print_winreg_InitiateSystemShutdownEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdownEx *r);
-void ndr_print_winreg_SaveKeyEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKeyEx *r);
-void ndr_print_winreg_OpenHKPT(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPT *r);
-void ndr_print_winreg_OpenHKPN(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPN *r);
-void ndr_print_winreg_QueryMultipleValues2(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues2 *r);
-#endif /* _HEADER_NDR_winreg */
diff --git a/source/librpc/gen_ndr/ndr_wkssvc.c b/source/librpc/gen_ndr/ndr_wkssvc.c
index 88bc59b2936..2af358727c3 100644
--- a/source/librpc/gen_ndr/ndr_wkssvc.c
+++ b/source/librpc/gen_ndr/ndr_wkssvc.c
@@ -753,8 +753,9 @@ _PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1033(struct ndr_print *ndr, const cha
NTSTATUS ndr_push_wkssvc_NetWkstaInfo(struct ndr_push *ndr, int ndr_flags, const union wkssvc_NetWkstaInfo *r)
{
+ int level;
+ level = ndr_push_get_switch_value(ndr, r);
if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
switch (level) {
case 100:
@@ -811,7 +812,6 @@ NTSTATUS ndr_push_wkssvc_NetWkstaInfo(struct ndr_push *ndr, int ndr_flags, const
}
}
if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
switch (level) {
case 100:
if (r->info100) {
@@ -913,7 +913,7 @@ NTSTATUS ndr_pull_wkssvc_NetWkstaInfo(struct ndr_pull *ndr, int ndr_flags, union
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
+ return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for wkssvc_NetWkstaInfo", _level);
}
switch (level) {
case 100: {
@@ -1674,8 +1674,9 @@ _PUBLIC_ void ndr_print_USER_INFO_1_CONTAINER(struct ndr_print *ndr, const char
NTSTATUS ndr_push_WKS_USER_ENUM_UNION(struct ndr_push *ndr, int ndr_flags, const union WKS_USER_ENUM_UNION *r)
{
+ int level;
+ level = ndr_push_get_switch_value(ndr, r);
if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
switch (level) {
case 0:
@@ -1691,7 +1692,6 @@ NTSTATUS ndr_push_WKS_USER_ENUM_UNION(struct ndr_push *ndr, int ndr_flags, const
}
}
if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
switch (level) {
case 0:
if (r->user0) {
@@ -1722,7 +1722,7 @@ NTSTATUS ndr_pull_WKS_USER_ENUM_UNION(struct ndr_pull *ndr, int ndr_flags, union
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
+ return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for WKS_USER_ENUM_UNION", _level);
}
switch (level) {
case 0: {
@@ -1996,8 +1996,9 @@ _PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportCtr0(struct ndr_print *ndr, cons
NTSTATUS ndr_push_wkssvc_NetWkstaTransportCtr(struct ndr_push *ndr, int ndr_flags, const union wkssvc_NetWkstaTransportCtr *r)
{
+ int level;
+ level = ndr_push_get_switch_value(ndr, r);
if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
switch (level) {
case 0:
@@ -2010,7 +2011,6 @@ NTSTATUS ndr_push_wkssvc_NetWkstaTransportCtr(struct ndr_push *ndr, int ndr_flag
}
}
if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
switch (level) {
case 0:
if (r->ctr0) {
@@ -2035,7 +2035,7 @@ NTSTATUS ndr_pull_wkssvc_NetWkstaTransportCtr(struct ndr_pull *ndr, int ndr_flag
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
if (_level != level) {
- return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
+ return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for wkssvc_NetWkstaTransportCtr", _level);
}
switch (level) {
case 0: {
diff --git a/source/librpc/gen_ndr/netlogon.h b/source/librpc/gen_ndr/netlogon.h
deleted file mode 100644
index 246748e89af..00000000000
--- a/source/librpc/gen_ndr/netlogon.h
+++ /dev/null
@@ -1,1405 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#include "librpc/gen_ndr/lsa.h"
-#include "librpc/gen_ndr/samr.h"
-#include "librpc/gen_ndr/security.h"
-#ifndef _HEADER_netlogon
-#define _HEADER_netlogon
-
-#define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED ( 0x002 )
-#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT ( 0x020 )
-#define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT ( 0x800 )
-#define NETLOGON_NEG_ARCFOUR ( 0x00000004 )
-#define NETLOGON_NEG_128BIT ( 0x00004000 )
-#define NETLOGON_NEG_SCHANNEL ( 0x40000000 )
-struct netr_UasInfo {
- const char *account_name;/* [unique,charset(UTF16)] */
- uint32_t priv;
- uint32_t auth_flags;
- uint32_t logon_count;
- uint32_t bad_pw_count;
- time_t last_logon;
- time_t last_logoff;
- time_t logoff_time;
- time_t kickoff_time;
- uint32_t password_age;
- time_t pw_can_change;
- time_t pw_must_change;
- const char *computer;/* [unique,charset(UTF16)] */
- const char *domain;/* [unique,charset(UTF16)] */
- const char *script_path;/* [unique,charset(UTF16)] */
- uint32_t unknown;
-};
-
-struct netr_UasLogoffInfo {
- uint32_t duration;
- uint16_t logon_count;
-};
-
-struct netr_AcctLockStr {
- uint16_t size;
- uint16_t length;
- uint16_t *bindata;/* [unique,length_is(length/2),size_is(size/2)] */
-};
-
-struct netr_IdentityInfo {
- struct lsa_String domain_name;
- uint32_t parameter_control;
- uint32_t logon_id_low;
- uint32_t logon_id_high;
- struct lsa_String account_name;
- struct lsa_String workstation;
-};
-
-struct netr_PasswordInfo {
- struct netr_IdentityInfo identity_info;
- struct samr_Password lmpassword;
- struct samr_Password ntpassword;
-};
-
-struct netr_ChallengeResponse {
- uint16_t length;
- uint16_t size;/* [value(length)] */
- uint8_t *data;/* [unique,length_is(length),size_is(length)] */
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct netr_NetworkInfo {
- struct netr_IdentityInfo identity_info;
- uint8_t challenge[8];
- struct netr_ChallengeResponse nt;
- struct netr_ChallengeResponse lm;
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-union netr_LogonLevel {
- struct netr_PasswordInfo *password;/* [unique,case] */
- struct netr_NetworkInfo *network;/* [unique,case(2)] */
-}/* [public,switch_type(uint16)] */;
-
-struct netr_GroupMembership {
- uint32_t rid;
- uint32_t attributes;
-}/* [public] */;
-
-struct netr_UserSessionKey {
- uint8_t key[16];
-}/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct netr_LMSessionKey {
- uint8_t key[8];
-}/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-/* bitmap netr_UserFlags */
-#define NETLOGON_GUEST ( 0x0001 )
-#define NETLOGON_NOENCRYPTION ( 0x0002 )
-#define NETLOGON_CACHED_ACCOUNT ( 0x0004 )
-#define NETLOGON_USED_LM_PASSWORD ( 0x0008 )
-#define NETLOGON_EXTRA_SIDS ( 0x0020 )
-#define NETLOGON_SUBAUTH_SESSION_KEY ( 0x0040 )
-#define NETLOGON_SERVER_TRUST_ACCOUNT ( 0x0080 )
-#define NETLOGON_NTLMV2_ENABLED ( 0x0100 )
-#define NETLOGON_RESOURCE_GROUPS ( 0x0200 )
-#define NETLOGON_PROFILE_PATH_RETURNED ( 0x0400 )
-
-;
-
-struct netr_SamBaseInfo {
- NTTIME last_logon;
- NTTIME last_logoff;
- NTTIME acct_expiry;
- NTTIME last_password_change;
- NTTIME allow_password_change;
- NTTIME force_password_change;
- struct lsa_String account_name;
- struct lsa_String full_name;
- struct lsa_String logon_script;
- struct lsa_String profile_path;
- struct lsa_String home_directory;
- struct lsa_String home_drive;
- uint16_t logon_count;
- uint16_t bad_password_count;
- uint32_t rid;
- uint32_t primary_gid;
- struct samr_RidWithAttributeArray groups;
- uint32_t user_flags;
- struct netr_UserSessionKey key;
- struct lsa_StringLarge logon_server;
- struct lsa_StringLarge domain;
- struct dom_sid2 *domain_sid;/* [unique] */
- struct netr_LMSessionKey LMSessKey;
- uint32_t acct_flags;
- uint32_t unknown[7];
-};
-
-struct netr_SamInfo2 {
- struct netr_SamBaseInfo base;
-};
-
-struct netr_SidAttr {
- struct dom_sid2 *sid;/* [unique] */
- uint32_t attribute;
-};
-
-struct netr_SamInfo3 {
- struct netr_SamBaseInfo base;
- uint32_t sidcount;
- struct netr_SidAttr *sids;/* [unique,size_is(sidcount)] */
-}/* [public] */;
-
-struct netr_SamInfo6 {
- struct netr_SamBaseInfo base;
- uint32_t sidcount;
- struct netr_SidAttr *sids;/* [unique,size_is(sidcount)] */
- struct lsa_String forest;
- struct lsa_String principle;
- uint32_t unknown4[20];
-};
-
-struct netr_PacInfo {
- uint32_t pac_size;
- uint8_t *pac;/* [unique,size_is(pac_size)] */
- struct lsa_String logon_domain;
- struct lsa_String logon_server;
- struct lsa_String principal_name;
- uint32_t auth_size;
- uint8_t *auth;/* [unique,size_is(auth_size)] */
- struct netr_UserSessionKey user_session_key;
- uint32_t expansionroom[10];
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
-};
-
-union netr_Validation {
- struct netr_SamInfo2 *sam2;/* [unique,case(2)] */
- struct netr_SamInfo3 *sam3;/* [unique,case(3)] */
- struct netr_PacInfo *pac;/* [unique,case(4)] */
- struct netr_SamInfo6 *sam6;/* [unique,case(6)] */
-}/* [public,switch_type(uint16)] */;
-
-struct netr_Credential {
- uint8_t data[8];
-}/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct netr_Authenticator {
- struct netr_Credential cred;
- time_t timestamp;
-}/* [public] */;
-
-struct netr_DELTA_DELETE_USER {
- const char *account_name;/* [unique,charset(UTF16)] */
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_USER_KEY16 {
- uint16_t length;
- uint16_t size;/* [value(length)] */
- uint32_t flags;
- struct samr_Password pwd;
-};
-
-struct netr_PasswordHistory {
- uint16_t nt_length;
- uint16_t nt_size;
- uint32_t nt_flags;
- uint16_t lm_length;
- uint16_t lm_size;
- uint32_t lm_flags;
- uint8_t *nt_history;
- uint8_t *lm_history;
-};
-
-struct netr_USER_KEYS2 {
- struct netr_USER_KEY16 lmpassword;
- struct netr_USER_KEY16 ntpassword;
- struct netr_PasswordHistory lmhistory;
-};
-
-struct netr_USER_KEY_UNION {
- struct netr_USER_KEYS2 keys2;
-};
-
-struct netr_USER_KEYS {
- uint32_t version;
- struct netr_USER_KEY_UNION keys;
-}/* [public] */;
-
-struct netr_USER_PRIVATE_INFO {
- uint8_t SensitiveDataFlag;
- uint32_t DataLength;
- uint8_t *SensitiveData;/* [unique,flag(LIBNDR_PRINT_ARRAY_HEX),size_is(DataLength)] */
-};
-
-struct netr_DELTA_USER {
- struct lsa_String account_name;
- struct lsa_String full_name;
- uint32_t rid;
- uint32_t primary_gid;
- struct lsa_String home_directory;
- struct lsa_String home_drive;
- struct lsa_String logon_script;
- struct lsa_String description;
- struct lsa_String workstations;
- NTTIME last_logon;
- NTTIME last_logoff;
- struct samr_LogonHours logon_hours;
- uint16_t bad_password_count;
- uint16_t logon_count;
- NTTIME last_password_change;
- NTTIME acct_expiry;
- uint32_t acct_flags;
- struct samr_Password lmpassword;
- struct samr_Password ntpassword;
- uint8_t nt_password_present;
- uint8_t lm_password_present;
- uint8_t password_expired;
- struct lsa_String comment;
- struct lsa_String parameters;
- uint16_t country_code;
- uint16_t code_page;
- struct netr_USER_PRIVATE_INFO user_private_info;
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct lsa_String profile_path;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_DOMAIN {
- struct lsa_String domain_name;
- struct lsa_String comment;
- int64_t force_logoff_time;
- uint16_t min_password_length;
- uint16_t password_history_length;
- int64_t max_password_age;
- int64_t min_password_age;
- uint64_t sequence_num;
- NTTIME domain_create_time;
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct netr_AcctLockStr account_lockout;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t logon_to_chgpass;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_GROUP {
- struct lsa_String group_name;
- uint32_t rid;
- uint32_t attributes;
- struct lsa_String description;
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_RENAME {
- struct lsa_String OldName;
- struct lsa_String NewName;
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_GROUP_MEMBER {
- uint32_t *rids;/* [unique,size_is(num_rids)] */
- uint32_t *attribs;/* [unique,size_is(num_rids)] */
- uint32_t num_rids;
- uint32_t unknown1;
- uint32_t unknown2;
- uint32_t unknown3;
- uint32_t unknown4;
-};
-
-struct netr_DELTA_ALIAS {
- struct lsa_String alias_name;
- uint32_t rid;
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct lsa_String description;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_ALIAS_MEMBER {
- struct lsa_SidArray sids;
- uint32_t unknown1;
- uint32_t unknown2;
- uint32_t unknown3;
- uint32_t unknown4;
-};
-
-struct netr_QUOTA_LIMITS {
- uint32_t pagedpoollimit;
- uint32_t nonpagedpoollimit;
- uint32_t minimumworkingsetsize;
- uint32_t maximumworkingsetsize;
- uint32_t pagefilelimit;
- NTTIME timelimit;
-};
-
-struct netr_DELTA_POLICY {
- uint32_t maxlogsize;
- NTTIME auditretentionperiod;
- uint8_t auditingmode;
- uint32_t maxauditeventcount;
- uint32_t *eventauditoptions;/* [unique,size_is(maxauditeventcount+1)] */
- struct lsa_String primary_domain_name;
- struct dom_sid2 *sid;/* [unique] */
- struct netr_QUOTA_LIMITS quota_limits;
- uint64_t sequence_num;
- NTTIME db_create_time;
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_TRUSTED_DOMAIN {
- struct lsa_String domain_name;
- uint32_t num_controllers;
- struct lsa_String *controller_names;/* [unique,size_is(num_controllers)] */
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t posix_offset;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_DELETE_TRUST {
- uint16_t unknown;
-};
-
-struct netr_DELTA_ACCOUNT {
- uint32_t privilege_entries;
- uint32_t privilege_control;
- uint32_t *privilege_attrib;/* [unique,size_is(privilege_entries)] */
- struct lsa_String *privilege_name;/* [unique,size_is(privilege_entries)] */
- struct netr_QUOTA_LIMITS quotalimits;
- uint32_t system_flags;
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-struct netr_DELTA_DELETE_ACCOUNT {
- uint16_t unknown;
-};
-
-struct netr_DELTA_DELETE_SECRET {
- uint16_t unknown;
-};
-
-struct netr_CIPHER_VALUE {
- uint32_t len;
- uint32_t maxlen;
- uint8_t *cipher_data;/* [unique,length_is(len),size_is(maxlen)] */
-};
-
-struct netr_DELTA_SECRET {
- struct netr_CIPHER_VALUE current_cipher;
- NTTIME current_cipher_set_time;
- struct netr_CIPHER_VALUE old_cipher;
- NTTIME old_cipher_set_time;
- uint32_t SecurityInformation;
- struct sec_desc_buf sdbuf;
- struct lsa_String unknown1;
- struct lsa_String unknown2;
- struct lsa_String unknown3;
- struct lsa_String unknown4;
- uint32_t unknown5;
- uint32_t unknown6;
- uint32_t unknown7;
- uint32_t unknown8;
-};
-
-#ifndef USE_UINT_ENUMS
-enum netr_DeltaEnum {
- NETR_DELTA_DOMAIN=1,
- NETR_DELTA_GROUP=2,
- NETR_DELTA_DELETE_GROUP=3,
- NETR_DELTA_RENAME_GROUP=4,
- NETR_DELTA_USER=5,
- NETR_DELTA_DELETE_USER=6,
- NETR_DELTA_RENAME_USER=7,
- NETR_DELTA_GROUP_MEMBER=8,
- NETR_DELTA_ALIAS=9,
- NETR_DELTA_DELETE_ALIAS=10,
- NETR_DELTA_RENAME_ALIAS=11,
- NETR_DELTA_ALIAS_MEMBER=12,
- NETR_DELTA_POLICY=13,
- NETR_DELTA_TRUSTED_DOMAIN=14,
- NETR_DELTA_DELETE_TRUST=15,
- NETR_DELTA_ACCOUNT=16,
- NETR_DELTA_DELETE_ACCOUNT=17,
- NETR_DELTA_SECRET=18,
- NETR_DELTA_DELETE_SECRET=19,
- NETR_DELTA_DELETE_GROUP2=20,
- NETR_DELTA_DELETE_USER2=21,
- NETR_DELTA_MODIFY_COUNT=22
-}
-#else
-enum netr_DeltaEnum { __donnot_use_enum_netr_DeltaEnum=0x7FFFFFFF}
-#define NETR_DELTA_DOMAIN ( 1 )
-#define NETR_DELTA_GROUP ( 2 )
-#define NETR_DELTA_DELETE_GROUP ( 3 )
-#define NETR_DELTA_RENAME_GROUP ( 4 )
-#define NETR_DELTA_USER ( 5 )
-#define NETR_DELTA_DELETE_USER ( 6 )
-#define NETR_DELTA_RENAME_USER ( 7 )
-#define NETR_DELTA_GROUP_MEMBER ( 8 )
-#define NETR_DELTA_ALIAS ( 9 )
-#define NETR_DELTA_DELETE_ALIAS ( 10 )
-#define NETR_DELTA_RENAME_ALIAS ( 11 )
-#define NETR_DELTA_ALIAS_MEMBER ( 12 )
-#define NETR_DELTA_POLICY ( 13 )
-#define NETR_DELTA_TRUSTED_DOMAIN ( 14 )
-#define NETR_DELTA_DELETE_TRUST ( 15 )
-#define NETR_DELTA_ACCOUNT ( 16 )
-#define NETR_DELTA_DELETE_ACCOUNT ( 17 )
-#define NETR_DELTA_SECRET ( 18 )
-#define NETR_DELTA_DELETE_SECRET ( 19 )
-#define NETR_DELTA_DELETE_GROUP2 ( 20 )
-#define NETR_DELTA_DELETE_USER2 ( 21 )
-#define NETR_DELTA_MODIFY_COUNT ( 22 )
-#endif
-;
-
-union netr_DELTA_UNION {
- struct netr_DELTA_DOMAIN *domain;/* [unique,case(NETR_DELTA_DOMAIN)] */
- struct netr_DELTA_GROUP *group;/* [unique,case(NETR_DELTA_GROUP)] */
- struct netr_DELTA_RENAME *rename_group;/* [unique,case(NETR_DELTA_RENAME_GROUP)] */
- struct netr_DELTA_USER *user;/* [unique,case(NETR_DELTA_USER)] */
- struct netr_DELTA_RENAME *rename_user;/* [unique,case(NETR_DELTA_RENAME_USER)] */
- struct netr_DELTA_GROUP_MEMBER *group_member;/* [unique,case(NETR_DELTA_GROUP_MEMBER)] */
- struct netr_DELTA_ALIAS *alias;/* [unique,case(NETR_DELTA_ALIAS)] */
- struct netr_DELTA_RENAME *rename_alias;/* [unique,case(NETR_DELTA_RENAME_ALIAS)] */
- struct netr_DELTA_ALIAS_MEMBER *alias_member;/* [unique,case(NETR_DELTA_ALIAS_MEMBER)] */
- struct netr_DELTA_POLICY *policy;/* [unique,case(NETR_DELTA_POLICY)] */
- struct netr_DELTA_TRUSTED_DOMAIN *trusted_domain;/* [unique,case(NETR_DELTA_TRUSTED_DOMAIN)] */
- struct netr_DELTA_DELETE_TRUST delete_trust;/* [case(NETR_DELTA_DELETE_TRUST)] */
- struct netr_DELTA_ACCOUNT *account;/* [unique,case(NETR_DELTA_ACCOUNT)] */
- struct netr_DELTA_DELETE_ACCOUNT delete_account;/* [case(NETR_DELTA_DELETE_ACCOUNT)] */
- struct netr_DELTA_SECRET *secret;/* [unique,case(NETR_DELTA_SECRET)] */
- struct netr_DELTA_DELETE_SECRET delete_secret;/* [case(NETR_DELTA_DELETE_SECRET)] */
- struct netr_DELTA_DELETE_USER *delete_group;/* [unique,case(NETR_DELTA_DELETE_GROUP2)] */
- struct netr_DELTA_DELETE_USER *delete_user;/* [unique,case(NETR_DELTA_DELETE_USER2)] */
- uint64_t *modified_count;/* [unique,case(NETR_DELTA_MODIFY_COUNT)] */
-}/* [switch_type(netr_DeltaEnum)] */;
-
-union netr_DELTA_ID_UNION {
- uint32_t rid;/* [case(NETR_DELTA_DOMAIN)] */
- struct dom_sid2 *sid;/* [unique,case(NETR_DELTA_POLICY)] */
- const char *name;/* [unique,charset(UTF16),case(NETR_DELTA_SECRET)] */
-}/* [switch_type(netr_DeltaEnum)] */;
-
-struct netr_DELTA_ENUM {
- enum netr_DeltaEnum delta_type;
- union netr_DELTA_ID_UNION delta_id_union;/* [switch_is(delta_type)] */
- union netr_DELTA_UNION delta_union;/* [switch_is(delta_type)] */
-};
-
-struct netr_DELTA_ENUM_ARRAY {
- uint32_t num_deltas;
- struct netr_DELTA_ENUM *delta_enum;/* [unique,size_is(num_deltas)] */
-};
-
-struct netr_UAS_INFO_0 {
- uint8_t computer_name[16];
- uint32_t timecreated;
- uint32_t serial_number;
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct netr_AccountBuffer {
- DATA_BLOB blob;/* [flag(LIBNDR_FLAG_REMAINING)] */
-};
-
-struct netr_NETLOGON_INFO_1 {
- uint32_t flags;
- uint32_t pdc_connection_status;
-};
-
-struct netr_NETLOGON_INFO_2 {
- uint32_t flags;
- uint32_t pdc_connection_status;
- const char *trusted_dc_name;/* [charset(UTF16)] */
- uint32_t tc_connection_status;
-};
-
-struct netr_NETLOGON_INFO_3 {
- uint32_t flags;
- uint32_t logon_attempts;
- uint32_t unknown1;
- uint32_t unknown2;
- uint32_t unknown3;
- uint32_t unknown4;
- uint32_t unknown5;
-};
-
-union netr_CONTROL_QUERY_INFORMATION {
- struct netr_NETLOGON_INFO_1 *info1;/* [unique,case] */
- struct netr_NETLOGON_INFO_2 *info2;/* [unique,case(2)] */
- struct netr_NETLOGON_INFO_3 *info3;/* [unique,case(3)] */
-};
-
-#ifndef USE_UINT_ENUMS
-enum netr_LogonControlCode {
- NETLOGON_CONTROL_REDISCOVER=5,
- NETLOGON_CONTROL_TC_QUERY=6,
- NETLOGON_CONTROL_TRANSPORT_NOTIFY=7,
- NETLOGON_CONTROL_SET_DBFLAG=65534
-}
-#else
-enum netr_LogonControlCode { __donnot_use_enum_netr_LogonControlCode=0x7FFFFFFF}
-#define NETLOGON_CONTROL_REDISCOVER ( 5 )
-#define NETLOGON_CONTROL_TC_QUERY ( 6 )
-#define NETLOGON_CONTROL_TRANSPORT_NOTIFY ( 7 )
-#define NETLOGON_CONTROL_SET_DBFLAG ( 65534 )
-#endif
-;
-
-union netr_CONTROL_DATA_INFORMATION {
- const char *domain;/* [unique,charset(UTF16),case(NETLOGON_CONTROL_REDISCOVER)] */
- uint32_t debug_level;/* [case(NETLOGON_CONTROL_SET_DBFLAG)] */
-};
-
-struct netr_DsRGetDCNameInfo {
- const char *dc_unc;/* [unique,charset(UTF16)] */
- const char *dc_address;/* [unique,charset(UTF16)] */
- int32_t dc_address_type;
- struct GUID domain_guid;
- const char *domain_name;/* [unique,charset(UTF16)] */
- const char *forest_name;/* [unique,charset(UTF16)] */
- uint32_t dc_flags;
- const char *dc_site_name;/* [unique,charset(UTF16)] */
- const char *client_site_name;/* [unique,charset(UTF16)] */
-};
-
-struct netr_Blob {
- uint32_t length;
- uint8_t *data;/* [unique,size_is(length)] */
-};
-
-struct netr_BinaryString {
- uint16_t length;
- uint16_t size;
- uint16_t *data;/* [unique,length_is(length/2),size_is(size/2)] */
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct netr_DomainQuery1 {
- struct netr_Blob blob;
- const char *workstation_domain;/* [unique,charset(UTF16)] */
- const char *workstation_site;/* [unique,charset(UTF16)] */
- const char *unknown1;/* [unique,charset(UTF16)] */
- const char *unknown2;/* [unique,charset(UTF16)] */
- const char *unknown3;/* [unique,charset(UTF16)] */
- const char *unknown4;/* [unique,charset(UTF16)] */
- struct netr_BinaryString blob2;
- struct lsa_String product;
- struct lsa_String unknown5;
- struct lsa_String unknown6;
- uint32_t unknown7[4];
-};
-
-union netr_DomainQuery {
- struct netr_DomainQuery1 *query1;/* [unique,case] */
-};
-
-struct netr_DomainTrustInfo {
- struct lsa_String domainname;
- struct lsa_String fulldomainname;
- struct lsa_String forest;
- struct GUID guid;
- struct dom_sid2 *sid;/* [unique] */
- struct netr_BinaryString unknown1[4];
- uint32_t unknown[4];
-};
-
-struct netr_DomainInfo1 {
- struct netr_DomainTrustInfo domaininfo;
- uint32_t num_trusts;
- struct netr_DomainTrustInfo *trusts;/* [unique,size_is(num_trusts)] */
- uint32_t unknown[14];
-};
-
-union netr_DomainInfo {
- struct netr_DomainInfo1 *info1;/* [unique,case] */
-};
-
-struct netr_CryptPassword {
- uint8_t data[512];
- uint32_t length;
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-/* bitmap netr_TrustFlags */
-#define NETR_TRUST_FLAG_IN_FOREST ( 0x00000001 )
-#define NETR_TRUST_FLAG_OUTBOUND ( 0x00000002 )
-#define NETR_TRUST_FLAG_TREEROOT ( 0x00000004 )
-#define NETR_TRUST_FLAG_PRIMARY ( 0x00000008 )
-#define NETR_TRUST_FLAG_NATIVE ( 0x00000010 )
-#define NETR_TRUST_FLAG_INBOUND ( 0x00000020 )
-
-;
-
-#ifndef USE_UINT_ENUMS
-enum netr_TrustType {
- NETR_TRUST_TYPE_DOWNLEVEL=1,
- NETR_TRUST_TYPE_UPLEVEL=2,
- NETR_TRUST_TYPE_MIT=3,
- NETR_TRUST_TYPE_DCE=4
-}
-#else
-enum netr_TrustType { __donnot_use_enum_netr_TrustType=0x7FFFFFFF}
-#define NETR_TRUST_TYPE_DOWNLEVEL ( 1 )
-#define NETR_TRUST_TYPE_UPLEVEL ( 2 )
-#define NETR_TRUST_TYPE_MIT ( 3 )
-#define NETR_TRUST_TYPE_DCE ( 4 )
-#endif
-;
-
-/* bitmap netr_TrustAttributes */
-#define NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE ( 0x00000001 )
-#define NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY ( 0x00000002 )
-#define NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN ( 0x00000004 )
-#define NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE ( 0x00000008 )
-#define NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION ( 0x00000010 )
-#define NETR_TRUST_ATTRIBUTE_WITHIN_FOREST ( 0x00000020 )
-#define NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL ( 0x00000040 )
-
-;
-
-struct netr_DomainTrust {
- const char *netbios_name;/* [unique,charset(UTF16)] */
- const char *dns_name;/* [unique,charset(UTF16)] */
- uint32_t trust_flags;
- uint32_t parent_index;
- enum netr_TrustType trust_type;
- uint32_t trust_attributes;
- struct dom_sid2 *sid;/* [unique] */
- struct GUID guid;
-};
-
-
-struct netr_LogonUasLogon {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *account_name;/* [charset(UTF16)] */
- const char *workstation;/* [charset(UTF16)] */
- } in;
-
- struct {
- struct netr_UasInfo *info;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_LogonUasLogoff {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *account_name;/* [charset(UTF16)] */
- const char *workstation;/* [charset(UTF16)] */
- } in;
-
- struct {
- struct netr_UasLogoffInfo *info;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_LogonSamLogon {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *computer_name;/* [unique,charset(UTF16)] */
- struct netr_Authenticator *credential;/* [unique] */
- uint16_t logon_level;
- union netr_LogonLevel logon;/* [switch_is(logon_level)] */
- uint16_t validation_level;
- struct netr_Authenticator *return_authenticator;/* [unique] */
- } in;
-
- struct {
- union netr_Validation *validation;/* [ref,switch_is(validation_level)] */
- uint8_t *authoritative;/* [ref] */
- struct netr_Authenticator *return_authenticator;/* [unique] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_LogonSamLogoff {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *computer_name;/* [unique,charset(UTF16)] */
- struct netr_Authenticator *credential;/* [unique] */
- uint16_t logon_level;
- union netr_LogonLevel logon;/* [switch_is(logon_level)] */
- struct netr_Authenticator *return_authenticator;/* [unique] */
- } in;
-
- struct {
- struct netr_Authenticator *return_authenticator;/* [unique] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_ServerReqChallenge {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *computer_name;/* [charset(UTF16)] */
- struct netr_Credential *credentials;/* [ref] */
- } in;
-
- struct {
- struct netr_Credential *credentials;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_ServerAuthenticate {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *account_name;/* [charset(UTF16)] */
- enum netr_SchannelType secure_channel_type;
- const char *computer_name;/* [charset(UTF16)] */
- struct netr_Credential *credentials;/* [ref] */
- } in;
-
- struct {
- struct netr_Credential *credentials;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_ServerPasswordSet {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *account_name;/* [charset(UTF16)] */
- enum netr_SchannelType secure_channel_type;
- const char *computer_name;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- struct samr_Password new_password;
- } in;
-
- struct {
- struct netr_Authenticator *return_authenticator;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_DatabaseDeltas {
- struct {
- const char *logon_server;/* [charset(UTF16)] */
- const char *computername;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- enum netr_SamDatabaseID database_id;
- uint32_t preferredmaximumlength;
- struct netr_Authenticator *return_authenticator;/* [ref] */
- uint64_t *sequence_num;/* [ref] */
- } in;
-
- struct {
- struct netr_DELTA_ENUM_ARRAY *delta_enum_array;/* [unique] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- uint64_t *sequence_num;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_DatabaseSync {
- struct {
- const char *logon_server;/* [charset(UTF16)] */
- const char *computername;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- enum netr_SamDatabaseID database_id;
- uint32_t preferredmaximumlength;
- struct netr_Authenticator *return_authenticator;/* [ref] */
- uint32_t *sync_context;/* [ref] */
- } in;
-
- struct {
- struct netr_DELTA_ENUM_ARRAY *delta_enum_array;/* [unique] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- uint32_t *sync_context;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_AccountDeltas {
- struct {
- const char *logon_server;/* [unique,charset(UTF16)] */
- const char *computername;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- struct netr_UAS_INFO_0 uas;
- uint32_t count;
- uint32_t level;
- uint32_t buffersize;
- struct netr_Authenticator *return_authenticator;/* [ref] */
- } in;
-
- struct {
- struct netr_AccountBuffer *buffer;/* [ref,subcontext(4)] */
- uint32_t *count_returned;/* [ref] */
- uint32_t *total_entries;/* [ref] */
- struct netr_UAS_INFO_0 *recordid;/* [ref] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_AccountSync {
- struct {
- const char *logon_server;/* [unique,charset(UTF16)] */
- const char *computername;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- uint32_t reference;
- uint32_t level;
- uint32_t buffersize;
- struct netr_Authenticator *return_authenticator;/* [ref] */
- struct netr_UAS_INFO_0 *recordid;/* [ref] */
- } in;
-
- struct {
- struct netr_AccountBuffer *buffer;/* [ref,subcontext(4)] */
- uint32_t *count_returned;/* [ref] */
- uint32_t *total_entries;/* [ref] */
- uint32_t *next_reference;/* [ref] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- struct netr_UAS_INFO_0 *recordid;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_GetDcName {
- struct {
- const char *logon_server;/* [charset(UTF16)] */
- const char *domainname;/* [unique,charset(UTF16)] */
- } in;
-
- struct {
- const char **dcname;/* [ref,charset(UTF16)] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_LogonControl {
- struct {
- const char *logon_server;/* [unique,charset(UTF16)] */
- enum netr_LogonControlCode function_code;
- uint32_t level;
- } in;
-
- struct {
- union netr_CONTROL_QUERY_INFORMATION *info;/* [ref,switch_is(level)] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_GetAnyDCName {
- struct {
- const char *logon_server;/* [unique,charset(UTF16)] */
- const char *domainname;/* [unique,charset(UTF16)] */
- } in;
-
- struct {
- const char **dcname;/* [ref,charset(UTF16)] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_LogonControl2 {
- struct {
- const char *logon_server;/* [unique,charset(UTF16)] */
- uint32_t function_code;
- uint32_t level;
- union netr_CONTROL_DATA_INFORMATION data;/* [switch_is(function_code)] */
- } in;
-
- struct {
- union netr_CONTROL_QUERY_INFORMATION *query;/* [ref,switch_is(level)] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_ServerAuthenticate2 {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *account_name;/* [charset(UTF16)] */
- enum netr_SchannelType secure_channel_type;
- const char *computer_name;/* [charset(UTF16)] */
- struct netr_Credential *credentials;/* [ref] */
- uint32_t *negotiate_flags;/* [ref] */
- } in;
-
- struct {
- struct netr_Credential *credentials;/* [ref] */
- uint32_t *negotiate_flags;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_DatabaseSync2 {
- struct {
- const char *logon_server;/* [charset(UTF16)] */
- const char *computername;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- enum netr_SamDatabaseID database_id;
- uint16_t restart_state;
- uint32_t preferredmaximumlength;
- struct netr_Authenticator *return_authenticator;/* [ref] */
- uint32_t *sync_context;/* [ref] */
- } in;
-
- struct {
- struct netr_DELTA_ENUM_ARRAY *delta_enum_array;/* [unique] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- uint32_t *sync_context;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_DatabaseRedo {
- struct {
- const char *logon_server;/* [charset(UTF16)] */
- const char *computername;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- uint8_t *change_log_entry;/* [unique,size_is(change_log_entry_size)] */
- uint32_t change_log_entry_size;
- struct netr_Authenticator *return_authenticator;/* [ref] */
- } in;
-
- struct {
- struct netr_DELTA_ENUM_ARRAY *delta_enum_array;/* [unique] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_LogonControl2Ex {
- struct {
- const char *logon_server;/* [unique,charset(UTF16)] */
- uint32_t function_code;
- uint32_t level;
- union netr_CONTROL_DATA_INFORMATION data;/* [switch_is(function_code)] */
- } in;
-
- struct {
- union netr_CONTROL_QUERY_INFORMATION *query;/* [ref,switch_is(level)] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRENUMERATETRUSTEDDOMAINS {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DsRGetDCName {
- struct {
- const char *server_unc;/* [unique,charset(UTF16)] */
- const char *domain_name;/* [unique,charset(UTF16)] */
- struct GUID *domain_guid;/* [unique] */
- struct GUID *site_guid;/* [unique] */
- uint32_t flags;
- } in;
-
- struct {
- struct netr_DsRGetDCNameInfo *info;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRLOGONDUMMYROUTINE1 {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRLOGONSETSERVICEBITS {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRLOGONGETTRUSTRID {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRLOGONCOMPUTESERVERDIGEST {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRLOGONCOMPUTECLIENTDIGEST {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_ServerAuthenticate3 {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *account_name;/* [charset(UTF16)] */
- enum netr_SchannelType secure_channel_type;
- const char *computer_name;/* [charset(UTF16)] */
- struct netr_Credential *credentials;/* [ref] */
- uint32_t *negotiate_flags;/* [ref] */
- } in;
-
- struct {
- uint32_t *rid;/* [ref] */
- struct netr_Credential *credentials;/* [ref] */
- uint32_t *negotiate_flags;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_DsRGetDCNameEx {
- struct {
- const char *server_unc;/* [unique,charset(UTF16)] */
- const char *domain_name;/* [unique,charset(UTF16)] */
- struct GUID *domain_guid;/* [unique] */
- const char *site_name;/* [unique,charset(UTF16)] */
- uint32_t flags;
- } in;
-
- struct {
- struct netr_DsRGetDCNameInfo *info;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DsRGetSiteName {
- struct {
- const char *computer_name;/* [unique,charset(UTF16)] */
- } in;
-
- struct {
- const char **site;/* [ref,charset(UTF16)] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_LogonGetDomainInfo {
- struct {
- const char *server_name;/* [charset(UTF16)] */
- const char *computer_name;/* [unique,charset(UTF16)] */
- struct netr_Authenticator *credential;/* [ref] */
- uint32_t level;
- union netr_DomainQuery query;/* [switch_is(level)] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- } in;
-
- struct {
- union netr_DomainInfo *info;/* [ref,switch_is(level)] */
- struct netr_Authenticator *return_authenticator;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_ServerPasswordSet2 {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *account_name;/* [charset(UTF16)] */
- enum netr_SchannelType secure_channel_type;
- const char *computer_name;/* [charset(UTF16)] */
- struct netr_Authenticator credential;
- struct netr_CryptPassword new_password;
- } in;
-
- struct {
- struct netr_Authenticator *return_authenticator;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_NETRSERVERPASSWORDGET {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRLOGONSENDTOSAM {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DSRADDRESSTOSITENAMESW {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DsRGetDCNameEx2 {
- struct {
- const char *server_unc;/* [unique,charset(UTF16)] */
- const char *client_account;/* [unique,charset(UTF16)] */
- uint32_t mask;
- const char *domain_name;/* [unique,charset(UTF16)] */
- struct GUID *domain_guid;/* [unique] */
- const char *site_name;/* [unique,charset(UTF16)] */
- uint32_t flags;
- } in;
-
- struct {
- struct netr_DsRGetDCNameInfo *info;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRENUMERATETRUSTEDDOMAINSEX {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DSRADDRESSTOSITENAMESEXW {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DSRGETDCSITECOVERAGEW {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_LogonSamLogonEx {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *computer_name;/* [unique,charset(UTF16)] */
- uint16_t logon_level;
- union netr_LogonLevel logon;/* [switch_is(logon_level)] */
- uint16_t validation_level;
- uint32_t *flags;/* [ref] */
- } in;
-
- struct {
- union netr_Validation *validation;/* [ref,switch_is(validation_level)] */
- uint8_t *authoritative;/* [ref] */
- uint32_t *flags;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_DsrEnumerateDomainTrusts {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- uint32_t trust_flags;
- } in;
-
- struct {
- uint32_t *count;/* [ref] */
- struct netr_DomainTrust **trusts;/* [ref,size_is(count)] */
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DSRDEREGISTERDNSHOSTRECORDS {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRSERVERTRUSTPASSWORDSGET {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_DSRGETFORESTTRUSTINFORMATION {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_NETRGETFORESTTRUSTINFORMATION {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct netr_LogonSamLogonWithFlags {
- struct {
- const char *server_name;/* [unique,charset(UTF16)] */
- const char *computer_name;/* [unique,charset(UTF16)] */
- struct netr_Authenticator *credential;/* [unique] */
- uint16_t logon_level;
- union netr_LogonLevel logon;/* [switch_is(logon_level)] */
- uint16_t validation_level;
- struct netr_Authenticator *return_authenticator;/* [unique] */
- uint32_t *flags;/* [ref] */
- } in;
-
- struct {
- union netr_Validation *validation;/* [ref,switch_is(validation_level)] */
- uint8_t *authoritative;/* [ref] */
- struct netr_Authenticator *return_authenticator;/* [unique] */
- uint32_t *flags;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct netr_NETRSERVERGETTRUSTINFO {
- struct {
- WERROR result;
- } out;
-
-};
-
-#endif /* _HEADER_netlogon */
diff --git a/source/librpc/gen_ndr/notify.h b/source/librpc/gen_ndr/notify.h
index c809702e5d5..f85b9b1bac8 100644
--- a/source/librpc/gen_ndr/notify.h
+++ b/source/librpc/gen_ndr/notify.h
@@ -1,7 +1,5 @@
/* header auto-generated by pidl */
-#include <stdint.h>
-
#ifndef _HEADER_notify
#define _HEADER_notify
diff --git a/source/librpc/gen_ndr/srv_dfs.c b/source/librpc/gen_ndr/srv_dfs.c
deleted file mode 100644
index 6a2eb824b7c..00000000000
--- a/source/librpc/gen_ndr/srv_dfs.c
+++ /dev/null
@@ -1,1543 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_dfs.h"
-
-static BOOL api_dfs_GetManagerVersion(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_GetManagerVersion r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_GetManagerVersion");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_GetManagerVersion(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_GetManagerVersion, &r);
-
- ZERO_STRUCT(r.out);
- r.out.version = talloc_zero(mem_ctx, enum dfs_ManagerVersion);
- if (r.out.version == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- _dfs_GetManagerVersion(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_GetManagerVersion, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_GetManagerVersion(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_Add(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_Add r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_Add");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_Add(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Add, &r);
-
- r.out.result = _dfs_Add(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Add, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_Add(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_Remove(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_Remove r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_Remove");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_Remove(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Remove, &r);
-
- r.out.result = _dfs_Remove(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Remove, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_Remove(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_SetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_SetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_SetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_SetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_SetInfo, &r);
-
- r.out.result = _dfs_SetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_SetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_SetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_GetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_GetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_GetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_GetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_GetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union dfs_Info);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _dfs_GetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_GetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_GetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_Enum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_Enum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_Enum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_Enum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Enum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = r.in.info;
- r.out.total = r.in.total;
- r.out.result = _dfs_Enum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Enum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_Enum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_Rename(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_Rename r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_Rename");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_Rename(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Rename, &r);
-
- r.out.result = _dfs_Rename(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Rename, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_Rename(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_Move(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_Move r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_Move");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_Move(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Move, &r);
-
- r.out.result = _dfs_Move(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Move, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_Move(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_ManagerGetConfigInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_ManagerGetConfigInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_ManagerGetConfigInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_ManagerGetConfigInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_ManagerGetConfigInfo, &r);
-
- r.out.result = _dfs_ManagerGetConfigInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_ManagerGetConfigInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_ManagerGetConfigInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_ManagerSendSiteInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_ManagerSendSiteInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_ManagerSendSiteInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_ManagerSendSiteInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_ManagerSendSiteInfo, &r);
-
- r.out.result = _dfs_ManagerSendSiteInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_ManagerSendSiteInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_ManagerSendSiteInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_AddFtRoot(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_AddFtRoot r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_AddFtRoot");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_AddFtRoot(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_AddFtRoot, &r);
-
- ZERO_STRUCT(r.out);
- r.out.unknown2 = r.in.unknown2;
- r.out.result = _dfs_AddFtRoot(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_AddFtRoot, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_AddFtRoot(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_RemoveFtRoot(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_RemoveFtRoot r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_RemoveFtRoot");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_RemoveFtRoot(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_RemoveFtRoot, &r);
-
- ZERO_STRUCT(r.out);
- r.out.unknown = r.in.unknown;
- r.out.result = _dfs_RemoveFtRoot(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_RemoveFtRoot, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_RemoveFtRoot(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_AddStdRoot(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_AddStdRoot r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_AddStdRoot");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_AddStdRoot(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_AddStdRoot, &r);
-
- r.out.result = _dfs_AddStdRoot(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_AddStdRoot, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_AddStdRoot(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_RemoveStdRoot(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_RemoveStdRoot r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_RemoveStdRoot");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_RemoveStdRoot(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_RemoveStdRoot, &r);
-
- r.out.result = _dfs_RemoveStdRoot(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_RemoveStdRoot, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_RemoveStdRoot(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_ManagerInitialize(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_ManagerInitialize r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_ManagerInitialize");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_ManagerInitialize(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_ManagerInitialize, &r);
-
- r.out.result = _dfs_ManagerInitialize(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_ManagerInitialize, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_ManagerInitialize(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_AddStdRootForced(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_AddStdRootForced r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_AddStdRootForced");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_AddStdRootForced(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_AddStdRootForced, &r);
-
- r.out.result = _dfs_AddStdRootForced(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_AddStdRootForced, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_AddStdRootForced(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_GetDcAddress(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_GetDcAddress r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_GetDcAddress");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_GetDcAddress(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_GetDcAddress, &r);
-
- r.out.result = _dfs_GetDcAddress(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_GetDcAddress, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_GetDcAddress(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_SetDcAddress(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_SetDcAddress r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_SetDcAddress");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_SetDcAddress(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_SetDcAddress, &r);
-
- r.out.result = _dfs_SetDcAddress(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_SetDcAddress, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_SetDcAddress(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_FlushFtTable(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_FlushFtTable r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_FlushFtTable");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_FlushFtTable(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_FlushFtTable, &r);
-
- r.out.result = _dfs_FlushFtTable(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_FlushFtTable, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_FlushFtTable(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_Add2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_Add2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_Add2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_Add2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Add2, &r);
-
- r.out.result = _dfs_Add2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Add2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_Add2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_Remove2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_Remove2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_Remove2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_Remove2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_Remove2, &r);
-
- r.out.result = _dfs_Remove2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_Remove2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_Remove2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_EnumEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_EnumEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_EnumEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_EnumEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_EnumEx, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = r.in.info;
- r.out.total = r.in.total;
- r.out.result = _dfs_EnumEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_EnumEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_EnumEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_dfs_SetInfo2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct dfs_SetInfo2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_dfs_SetInfo2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_dfs_SetInfo2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(dfs_SetInfo2, &r);
-
- r.out.result = _dfs_SetInfo2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(dfs_SetInfo2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_dfs_SetInfo2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_netdfs_cmds[] =
-{
- {"DFS_GETMANAGERVERSION", DCERPC_DFS_GETMANAGERVERSION, api_dfs_GetManagerVersion},
- {"DFS_ADD", DCERPC_DFS_ADD, api_dfs_Add},
- {"DFS_REMOVE", DCERPC_DFS_REMOVE, api_dfs_Remove},
- {"DFS_SETINFO", DCERPC_DFS_SETINFO, api_dfs_SetInfo},
- {"DFS_GETINFO", DCERPC_DFS_GETINFO, api_dfs_GetInfo},
- {"DFS_ENUM", DCERPC_DFS_ENUM, api_dfs_Enum},
- {"DFS_RENAME", DCERPC_DFS_RENAME, api_dfs_Rename},
- {"DFS_MOVE", DCERPC_DFS_MOVE, api_dfs_Move},
- {"DFS_MANAGERGETCONFIGINFO", DCERPC_DFS_MANAGERGETCONFIGINFO, api_dfs_ManagerGetConfigInfo},
- {"DFS_MANAGERSENDSITEINFO", DCERPC_DFS_MANAGERSENDSITEINFO, api_dfs_ManagerSendSiteInfo},
- {"DFS_ADDFTROOT", DCERPC_DFS_ADDFTROOT, api_dfs_AddFtRoot},
- {"DFS_REMOVEFTROOT", DCERPC_DFS_REMOVEFTROOT, api_dfs_RemoveFtRoot},
- {"DFS_ADDSTDROOT", DCERPC_DFS_ADDSTDROOT, api_dfs_AddStdRoot},
- {"DFS_REMOVESTDROOT", DCERPC_DFS_REMOVESTDROOT, api_dfs_RemoveStdRoot},
- {"DFS_MANAGERINITIALIZE", DCERPC_DFS_MANAGERINITIALIZE, api_dfs_ManagerInitialize},
- {"DFS_ADDSTDROOTFORCED", DCERPC_DFS_ADDSTDROOTFORCED, api_dfs_AddStdRootForced},
- {"DFS_GETDCADDRESS", DCERPC_DFS_GETDCADDRESS, api_dfs_GetDcAddress},
- {"DFS_SETDCADDRESS", DCERPC_DFS_SETDCADDRESS, api_dfs_SetDcAddress},
- {"DFS_FLUSHFTTABLE", DCERPC_DFS_FLUSHFTTABLE, api_dfs_FlushFtTable},
- {"DFS_ADD2", DCERPC_DFS_ADD2, api_dfs_Add2},
- {"DFS_REMOVE2", DCERPC_DFS_REMOVE2, api_dfs_Remove2},
- {"DFS_ENUMEX", DCERPC_DFS_ENUMEX, api_dfs_EnumEx},
- {"DFS_SETINFO2", DCERPC_DFS_SETINFO2, api_dfs_SetInfo2},
-};
-
-void netdfs_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_netdfs_cmds;
- *n_fns = sizeof(api_netdfs_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_netdfs_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "netdfs", "netdfs", api_netdfs_cmds, sizeof(api_netdfs_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_dfs.h b/source/librpc/gen_ndr/srv_dfs.h
deleted file mode 100644
index e4d7a99c732..00000000000
--- a/source/librpc/gen_ndr/srv_dfs.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "librpc/gen_ndr/ndr_dfs.h"
-#ifndef __SRV_NETDFS__
-#define __SRV_NETDFS__
-void _dfs_GetManagerVersion(pipes_struct *p, struct dfs_GetManagerVersion *r);
-WERROR _dfs_Add(pipes_struct *p, struct dfs_Add *r);
-WERROR _dfs_Remove(pipes_struct *p, struct dfs_Remove *r);
-WERROR _dfs_SetInfo(pipes_struct *p, struct dfs_SetInfo *r);
-WERROR _dfs_GetInfo(pipes_struct *p, struct dfs_GetInfo *r);
-WERROR _dfs_Enum(pipes_struct *p, struct dfs_Enum *r);
-WERROR _dfs_Rename(pipes_struct *p, struct dfs_Rename *r);
-WERROR _dfs_Move(pipes_struct *p, struct dfs_Move *r);
-WERROR _dfs_ManagerGetConfigInfo(pipes_struct *p, struct dfs_ManagerGetConfigInfo *r);
-WERROR _dfs_ManagerSendSiteInfo(pipes_struct *p, struct dfs_ManagerSendSiteInfo *r);
-WERROR _dfs_AddFtRoot(pipes_struct *p, struct dfs_AddFtRoot *r);
-WERROR _dfs_RemoveFtRoot(pipes_struct *p, struct dfs_RemoveFtRoot *r);
-WERROR _dfs_AddStdRoot(pipes_struct *p, struct dfs_AddStdRoot *r);
-WERROR _dfs_RemoveStdRoot(pipes_struct *p, struct dfs_RemoveStdRoot *r);
-WERROR _dfs_ManagerInitialize(pipes_struct *p, struct dfs_ManagerInitialize *r);
-WERROR _dfs_AddStdRootForced(pipes_struct *p, struct dfs_AddStdRootForced *r);
-WERROR _dfs_GetDcAddress(pipes_struct *p, struct dfs_GetDcAddress *r);
-WERROR _dfs_SetDcAddress(pipes_struct *p, struct dfs_SetDcAddress *r);
-WERROR _dfs_FlushFtTable(pipes_struct *p, struct dfs_FlushFtTable *r);
-WERROR _dfs_Add2(pipes_struct *p, struct dfs_Add2 *r);
-WERROR _dfs_Remove2(pipes_struct *p, struct dfs_Remove2 *r);
-WERROR _dfs_EnumEx(pipes_struct *p, struct dfs_EnumEx *r);
-WERROR _dfs_SetInfo2(pipes_struct *p, struct dfs_SetInfo2 *r);
-void netdfs_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_netdfs_init(void);
-#endif /* __SRV_NETDFS__ */
diff --git a/source/librpc/gen_ndr/srv_echo.c b/source/librpc/gen_ndr/srv_echo.c
deleted file mode 100644
index 046f448040b..00000000000
--- a/source/librpc/gen_ndr/srv_echo.c
+++ /dev/null
@@ -1,715 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_echo.h"
-
-static BOOL api_echo_AddOne(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_AddOne r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_AddOne");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_AddOne(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_AddOne, &r);
-
- ZERO_STRUCT(r.out);
- r.out.out_data = talloc_zero(mem_ctx, uint32_t);
- if (r.out.out_data == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- _echo_AddOne(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_AddOne, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_AddOne(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_EchoData(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_EchoData r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_EchoData");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_EchoData(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_EchoData, &r);
-
- ZERO_STRUCT(r.out);
- r.out.out_data = talloc_zero_array(mem_ctx, uint8_t, r.in.len);
- if (r.out.out_data == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- _echo_EchoData(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_EchoData, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_EchoData(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_SinkData(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_SinkData r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_SinkData");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_SinkData(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_SinkData, &r);
-
- _echo_SinkData(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_SinkData, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_SinkData(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_SourceData(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_SourceData r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_SourceData");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_SourceData(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_SourceData, &r);
-
- ZERO_STRUCT(r.out);
- r.out.data = talloc_zero_array(mem_ctx, uint8_t, r.in.len);
- if (r.out.data == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- _echo_SourceData(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_SourceData, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_SourceData(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_TestCall(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_TestCall r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestCall");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_TestCall(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestCall, &r);
-
- ZERO_STRUCT(r.out);
- r.out.s2 = talloc_zero(mem_ctx, const char *);
- if (r.out.s2 == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- _echo_TestCall(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestCall, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_TestCall(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_TestCall2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_TestCall2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestCall2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_TestCall2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestCall2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union echo_Info);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _echo_TestCall2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestCall2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_TestCall2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_TestSleep(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_TestSleep r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestSleep");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_TestSleep(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestSleep, &r);
-
- r.out.result = _echo_TestSleep(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestSleep, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_TestSleep(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_TestEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_TestEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_TestEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.foo1 = r.in.foo1;
- r.out.foo2 = r.in.foo2;
- r.out.foo3 = r.in.foo3;
- _echo_TestEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_TestEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_TestSurrounding(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_TestSurrounding r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestSurrounding");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_TestSurrounding(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestSurrounding, &r);
-
- ZERO_STRUCT(r.out);
- r.out.data = r.in.data;
- _echo_TestSurrounding(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestSurrounding, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_TestSurrounding(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_echo_TestDoublePointer(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct echo_TestDoublePointer r;
- TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestDoublePointer");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_echo_TestDoublePointer(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(echo_TestDoublePointer, &r);
-
- r.out.result = _echo_TestDoublePointer(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(echo_TestDoublePointer, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_echo_TestDoublePointer(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_rpcecho_cmds[] =
-{
- {"ECHO_ADDONE", DCERPC_ECHO_ADDONE, api_echo_AddOne},
- {"ECHO_ECHODATA", DCERPC_ECHO_ECHODATA, api_echo_EchoData},
- {"ECHO_SINKDATA", DCERPC_ECHO_SINKDATA, api_echo_SinkData},
- {"ECHO_SOURCEDATA", DCERPC_ECHO_SOURCEDATA, api_echo_SourceData},
- {"ECHO_TESTCALL", DCERPC_ECHO_TESTCALL, api_echo_TestCall},
- {"ECHO_TESTCALL2", DCERPC_ECHO_TESTCALL2, api_echo_TestCall2},
- {"ECHO_TESTSLEEP", DCERPC_ECHO_TESTSLEEP, api_echo_TestSleep},
- {"ECHO_TESTENUM", DCERPC_ECHO_TESTENUM, api_echo_TestEnum},
- {"ECHO_TESTSURROUNDING", DCERPC_ECHO_TESTSURROUNDING, api_echo_TestSurrounding},
- {"ECHO_TESTDOUBLEPOINTER", DCERPC_ECHO_TESTDOUBLEPOINTER, api_echo_TestDoublePointer},
-};
-
-void rpcecho_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_rpcecho_cmds;
- *n_fns = sizeof(api_rpcecho_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_rpcecho_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "rpcecho", "rpcecho", api_rpcecho_cmds, sizeof(api_rpcecho_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_echo.h b/source/librpc/gen_ndr/srv_echo.h
deleted file mode 100644
index c3b0336652c..00000000000
--- a/source/librpc/gen_ndr/srv_echo.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "librpc/gen_ndr/ndr_echo.h"
-#ifndef __SRV_RPCECHO__
-#define __SRV_RPCECHO__
-void _echo_AddOne(pipes_struct *p, struct echo_AddOne *r);
-void _echo_EchoData(pipes_struct *p, struct echo_EchoData *r);
-void _echo_SinkData(pipes_struct *p, struct echo_SinkData *r);
-void _echo_SourceData(pipes_struct *p, struct echo_SourceData *r);
-void _echo_TestCall(pipes_struct *p, struct echo_TestCall *r);
-NTSTATUS _echo_TestCall2(pipes_struct *p, struct echo_TestCall2 *r);
-uint32 _echo_TestSleep(pipes_struct *p, struct echo_TestSleep *r);
-void _echo_TestEnum(pipes_struct *p, struct echo_TestEnum *r);
-void _echo_TestSurrounding(pipes_struct *p, struct echo_TestSurrounding *r);
-uint16 _echo_TestDoublePointer(pipes_struct *p, struct echo_TestDoublePointer *r);
-void rpcecho_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_rpcecho_init(void);
-#endif /* __SRV_RPCECHO__ */
diff --git a/source/librpc/gen_ndr/srv_epmapper.c b/source/librpc/gen_ndr/srv_epmapper.c
deleted file mode 100644
index f64a903e10b..00000000000
--- a/source/librpc/gen_ndr/srv_epmapper.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_epmapper.h"
-
-static BOOL api_epm_Insert(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_Insert r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_Insert");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_Insert(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Insert, &r);
-
- r.out.result = _epm_Insert(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Insert, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_Insert(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_epm_Delete(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_Delete r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_Delete");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_Delete(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Delete, &r);
-
- r.out.result = _epm_Delete(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Delete, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_Delete(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_epm_Lookup(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_Lookup r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_Lookup");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_Lookup(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Lookup, &r);
-
- ZERO_STRUCT(r.out);
- r.out.entry_handle = r.in.entry_handle;
- r.out.num_ents = talloc_zero(mem_ctx, uint32_t);
- if (r.out.num_ents == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.entries = talloc_zero_array(mem_ctx, struct epm_entry_t, r.in.max_ents);
- if (r.out.entries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _epm_Lookup(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Lookup, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_Lookup(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_epm_Map(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_Map r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_Map");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_Map(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_Map, &r);
-
- ZERO_STRUCT(r.out);
- r.out.entry_handle = r.in.entry_handle;
- r.out.num_towers = talloc_zero(mem_ctx, uint32_t);
- if (r.out.num_towers == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.towers = talloc_zero_array(mem_ctx, struct epm_twr_p_t, r.in.max_towers);
- if (r.out.towers == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _epm_Map(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_Map, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_Map(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_epm_LookupHandleFree(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_LookupHandleFree r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_LookupHandleFree");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_LookupHandleFree(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_LookupHandleFree, &r);
-
- ZERO_STRUCT(r.out);
- r.out.entry_handle = r.in.entry_handle;
- r.out.result = _epm_LookupHandleFree(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_LookupHandleFree, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_LookupHandleFree(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_epm_InqObject(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_InqObject r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_InqObject");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_InqObject(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_InqObject, &r);
-
- r.out.result = _epm_InqObject(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_InqObject, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_InqObject(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_epm_MgmtDelete(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_MgmtDelete r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_MgmtDelete");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_MgmtDelete(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_MgmtDelete, &r);
-
- r.out.result = _epm_MgmtDelete(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_MgmtDelete, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_MgmtDelete(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_epm_MapAuth(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct epm_MapAuth r;
- TALLOC_CTX *mem_ctx = talloc_init("api_epm_MapAuth");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_epm_MapAuth(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(epm_MapAuth, &r);
-
- r.out.result = _epm_MapAuth(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(epm_MapAuth, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_epm_MapAuth(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_epmapper_cmds[] =
-{
- {"EPM_INSERT", DCERPC_EPM_INSERT, api_epm_Insert},
- {"EPM_DELETE", DCERPC_EPM_DELETE, api_epm_Delete},
- {"EPM_LOOKUP", DCERPC_EPM_LOOKUP, api_epm_Lookup},
- {"EPM_MAP", DCERPC_EPM_MAP, api_epm_Map},
- {"EPM_LOOKUPHANDLEFREE", DCERPC_EPM_LOOKUPHANDLEFREE, api_epm_LookupHandleFree},
- {"EPM_INQOBJECT", DCERPC_EPM_INQOBJECT, api_epm_InqObject},
- {"EPM_MGMTDELETE", DCERPC_EPM_MGMTDELETE, api_epm_MgmtDelete},
- {"EPM_MAPAUTH", DCERPC_EPM_MAPAUTH, api_epm_MapAuth},
-};
-
-void epmapper_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_epmapper_cmds;
- *n_fns = sizeof(api_epmapper_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_epmapper_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "epmapper", "epmapper", api_epmapper_cmds, sizeof(api_epmapper_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_epmapper.h b/source/librpc/gen_ndr/srv_epmapper.h
deleted file mode 100644
index e0d0105b787..00000000000
--- a/source/librpc/gen_ndr/srv_epmapper.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "librpc/gen_ndr/ndr_epmapper.h"
-#ifndef __SRV_EPMAPPER__
-#define __SRV_EPMAPPER__
-uint32 _epm_Insert(pipes_struct *p, struct epm_Insert *r);
-uint32 _epm_Delete(pipes_struct *p, struct epm_Delete *r);
-uint32 _epm_Lookup(pipes_struct *p, struct epm_Lookup *r);
-uint32 _epm_Map(pipes_struct *p, struct epm_Map *r);
-uint32 _epm_LookupHandleFree(pipes_struct *p, struct epm_LookupHandleFree *r);
-uint32 _epm_InqObject(pipes_struct *p, struct epm_InqObject *r);
-uint32 _epm_MgmtDelete(pipes_struct *p, struct epm_MgmtDelete *r);
-uint32 _epm_MapAuth(pipes_struct *p, struct epm_MapAuth *r);
-void epmapper_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_epmapper_init(void);
-#endif /* __SRV_EPMAPPER__ */
diff --git a/source/librpc/gen_ndr/srv_eventlog.c b/source/librpc/gen_ndr/srv_eventlog.c
deleted file mode 100644
index 51740e15c1d..00000000000
--- a/source/librpc/gen_ndr/srv_eventlog.c
+++ /dev/null
@@ -1,1619 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_eventlog.h"
-
-static BOOL api_eventlog_ClearEventLogW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_ClearEventLogW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_ClearEventLogW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_ClearEventLogW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ClearEventLogW, &r);
-
- r.out.result = _eventlog_ClearEventLogW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ClearEventLogW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_ClearEventLogW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_BackupEventLogW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_BackupEventLogW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_BackupEventLogW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_BackupEventLogW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_BackupEventLogW, &r);
-
- r.out.result = _eventlog_BackupEventLogW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_BackupEventLogW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_BackupEventLogW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_CloseEventLog(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_CloseEventLog r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_CloseEventLog");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_CloseEventLog(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_CloseEventLog, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = r.in.handle;
- r.out.result = _eventlog_CloseEventLog(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_CloseEventLog, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_CloseEventLog(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_DeregisterEventSource(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_DeregisterEventSource r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_DeregisterEventSource");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_DeregisterEventSource(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_DeregisterEventSource, &r);
-
- r.out.result = _eventlog_DeregisterEventSource(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_DeregisterEventSource, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_DeregisterEventSource(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_GetNumRecords(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_GetNumRecords r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_GetNumRecords");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_GetNumRecords(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_GetNumRecords, &r);
-
- ZERO_STRUCT(r.out);
- r.out.number = talloc_zero(mem_ctx, uint32_t);
- if (r.out.number == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _eventlog_GetNumRecords(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_GetNumRecords, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_GetNumRecords(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_GetOldestRecord(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_GetOldestRecord r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_GetOldestRecord");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_GetOldestRecord(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_GetOldestRecord, &r);
-
- r.out.result = _eventlog_GetOldestRecord(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_GetOldestRecord, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_GetOldestRecord(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_ChangeNotify(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_ChangeNotify r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_ChangeNotify");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_ChangeNotify(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ChangeNotify, &r);
-
- r.out.result = _eventlog_ChangeNotify(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ChangeNotify, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_ChangeNotify(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_OpenEventLogW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_OpenEventLogW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_OpenEventLogW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_OpenEventLogW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenEventLogW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _eventlog_OpenEventLogW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenEventLogW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_OpenEventLogW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_RegisterEventSourceW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_RegisterEventSourceW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_RegisterEventSourceW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_RegisterEventSourceW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_RegisterEventSourceW, &r);
-
- r.out.result = _eventlog_RegisterEventSourceW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_RegisterEventSourceW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_RegisterEventSourceW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_OpenBackupEventLogW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_OpenBackupEventLogW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_OpenBackupEventLogW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_OpenBackupEventLogW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenBackupEventLogW, &r);
-
- r.out.result = _eventlog_OpenBackupEventLogW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenBackupEventLogW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_OpenBackupEventLogW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_ReadEventLogW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_ReadEventLogW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_ReadEventLogW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_ReadEventLogW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReadEventLogW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.data = talloc_zero_array(mem_ctx, uint8_t, r.in.number_of_bytes);
- if (r.out.data == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.sent_size = talloc_zero(mem_ctx, uint32_t);
- if (r.out.sent_size == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.real_size = talloc_zero(mem_ctx, uint32_t);
- if (r.out.real_size == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _eventlog_ReadEventLogW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReadEventLogW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_ReadEventLogW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_ReportEventW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_ReportEventW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_ReportEventW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_ReportEventW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReportEventW, &r);
-
- r.out.result = _eventlog_ReportEventW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReportEventW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_ReportEventW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_ClearEventLogA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_ClearEventLogA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_ClearEventLogA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_ClearEventLogA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ClearEventLogA, &r);
-
- r.out.result = _eventlog_ClearEventLogA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ClearEventLogA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_ClearEventLogA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_BackupEventLogA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_BackupEventLogA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_BackupEventLogA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_BackupEventLogA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_BackupEventLogA, &r);
-
- r.out.result = _eventlog_BackupEventLogA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_BackupEventLogA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_BackupEventLogA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_OpenEventLogA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_OpenEventLogA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_OpenEventLogA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_OpenEventLogA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenEventLogA, &r);
-
- r.out.result = _eventlog_OpenEventLogA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenEventLogA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_OpenEventLogA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_RegisterEventSourceA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_RegisterEventSourceA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_RegisterEventSourceA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_RegisterEventSourceA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_RegisterEventSourceA, &r);
-
- r.out.result = _eventlog_RegisterEventSourceA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_RegisterEventSourceA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_RegisterEventSourceA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_OpenBackupEventLogA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_OpenBackupEventLogA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_OpenBackupEventLogA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_OpenBackupEventLogA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_OpenBackupEventLogA, &r);
-
- r.out.result = _eventlog_OpenBackupEventLogA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_OpenBackupEventLogA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_OpenBackupEventLogA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_ReadEventLogA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_ReadEventLogA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_ReadEventLogA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_ReadEventLogA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReadEventLogA, &r);
-
- r.out.result = _eventlog_ReadEventLogA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReadEventLogA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_ReadEventLogA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_ReportEventA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_ReportEventA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_ReportEventA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_ReportEventA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_ReportEventA, &r);
-
- r.out.result = _eventlog_ReportEventA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_ReportEventA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_ReportEventA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_RegisterClusterSvc(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_RegisterClusterSvc r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_RegisterClusterSvc");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_RegisterClusterSvc(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_RegisterClusterSvc, &r);
-
- r.out.result = _eventlog_RegisterClusterSvc(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_RegisterClusterSvc, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_RegisterClusterSvc(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_DeregisterClusterSvc(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_DeregisterClusterSvc r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_DeregisterClusterSvc");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_DeregisterClusterSvc(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_DeregisterClusterSvc, &r);
-
- r.out.result = _eventlog_DeregisterClusterSvc(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_DeregisterClusterSvc, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_DeregisterClusterSvc(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_WriteClusterEvents(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_WriteClusterEvents r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_WriteClusterEvents");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_WriteClusterEvents(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_WriteClusterEvents, &r);
-
- r.out.result = _eventlog_WriteClusterEvents(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_WriteClusterEvents, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_WriteClusterEvents(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_GetLogIntormation(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_GetLogIntormation r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_GetLogIntormation");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_GetLogIntormation(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_GetLogIntormation, &r);
-
- r.out.result = _eventlog_GetLogIntormation(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_GetLogIntormation, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_GetLogIntormation(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_eventlog_FlushEventLog(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct eventlog_FlushEventLog r;
- TALLOC_CTX *mem_ctx = talloc_init("api_eventlog_FlushEventLog");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_eventlog_FlushEventLog(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(eventlog_FlushEventLog, &r);
-
- r.out.result = _eventlog_FlushEventLog(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(eventlog_FlushEventLog, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_eventlog_FlushEventLog(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_eventlog_cmds[] =
-{
- {"EVENTLOG_CLEAREVENTLOGW", DCERPC_EVENTLOG_CLEAREVENTLOGW, api_eventlog_ClearEventLogW},
- {"EVENTLOG_BACKUPEVENTLOGW", DCERPC_EVENTLOG_BACKUPEVENTLOGW, api_eventlog_BackupEventLogW},
- {"EVENTLOG_CLOSEEVENTLOG", DCERPC_EVENTLOG_CLOSEEVENTLOG, api_eventlog_CloseEventLog},
- {"EVENTLOG_DEREGISTEREVENTSOURCE", DCERPC_EVENTLOG_DEREGISTEREVENTSOURCE, api_eventlog_DeregisterEventSource},
- {"EVENTLOG_GETNUMRECORDS", DCERPC_EVENTLOG_GETNUMRECORDS, api_eventlog_GetNumRecords},
- {"EVENTLOG_GETOLDESTRECORD", DCERPC_EVENTLOG_GETOLDESTRECORD, api_eventlog_GetOldestRecord},
- {"EVENTLOG_CHANGENOTIFY", DCERPC_EVENTLOG_CHANGENOTIFY, api_eventlog_ChangeNotify},
- {"EVENTLOG_OPENEVENTLOGW", DCERPC_EVENTLOG_OPENEVENTLOGW, api_eventlog_OpenEventLogW},
- {"EVENTLOG_REGISTEREVENTSOURCEW", DCERPC_EVENTLOG_REGISTEREVENTSOURCEW, api_eventlog_RegisterEventSourceW},
- {"EVENTLOG_OPENBACKUPEVENTLOGW", DCERPC_EVENTLOG_OPENBACKUPEVENTLOGW, api_eventlog_OpenBackupEventLogW},
- {"EVENTLOG_READEVENTLOGW", DCERPC_EVENTLOG_READEVENTLOGW, api_eventlog_ReadEventLogW},
- {"EVENTLOG_REPORTEVENTW", DCERPC_EVENTLOG_REPORTEVENTW, api_eventlog_ReportEventW},
- {"EVENTLOG_CLEAREVENTLOGA", DCERPC_EVENTLOG_CLEAREVENTLOGA, api_eventlog_ClearEventLogA},
- {"EVENTLOG_BACKUPEVENTLOGA", DCERPC_EVENTLOG_BACKUPEVENTLOGA, api_eventlog_BackupEventLogA},
- {"EVENTLOG_OPENEVENTLOGA", DCERPC_EVENTLOG_OPENEVENTLOGA, api_eventlog_OpenEventLogA},
- {"EVENTLOG_REGISTEREVENTSOURCEA", DCERPC_EVENTLOG_REGISTEREVENTSOURCEA, api_eventlog_RegisterEventSourceA},
- {"EVENTLOG_OPENBACKUPEVENTLOGA", DCERPC_EVENTLOG_OPENBACKUPEVENTLOGA, api_eventlog_OpenBackupEventLogA},
- {"EVENTLOG_READEVENTLOGA", DCERPC_EVENTLOG_READEVENTLOGA, api_eventlog_ReadEventLogA},
- {"EVENTLOG_REPORTEVENTA", DCERPC_EVENTLOG_REPORTEVENTA, api_eventlog_ReportEventA},
- {"EVENTLOG_REGISTERCLUSTERSVC", DCERPC_EVENTLOG_REGISTERCLUSTERSVC, api_eventlog_RegisterClusterSvc},
- {"EVENTLOG_DEREGISTERCLUSTERSVC", DCERPC_EVENTLOG_DEREGISTERCLUSTERSVC, api_eventlog_DeregisterClusterSvc},
- {"EVENTLOG_WRITECLUSTEREVENTS", DCERPC_EVENTLOG_WRITECLUSTEREVENTS, api_eventlog_WriteClusterEvents},
- {"EVENTLOG_GETLOGINTORMATION", DCERPC_EVENTLOG_GETLOGINTORMATION, api_eventlog_GetLogIntormation},
- {"EVENTLOG_FLUSHEVENTLOG", DCERPC_EVENTLOG_FLUSHEVENTLOG, api_eventlog_FlushEventLog},
-};
-
-void eventlog_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_eventlog_cmds;
- *n_fns = sizeof(api_eventlog_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_eventlog_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "eventlog", "eventlog", api_eventlog_cmds, sizeof(api_eventlog_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_eventlog.h b/source/librpc/gen_ndr/srv_eventlog.h
deleted file mode 100644
index 6957c66beb9..00000000000
--- a/source/librpc/gen_ndr/srv_eventlog.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "librpc/gen_ndr/ndr_eventlog.h"
-#ifndef __SRV_EVENTLOG__
-#define __SRV_EVENTLOG__
-NTSTATUS _eventlog_ClearEventLogW(pipes_struct *p, struct eventlog_ClearEventLogW *r);
-NTSTATUS _eventlog_BackupEventLogW(pipes_struct *p, struct eventlog_BackupEventLogW *r);
-NTSTATUS _eventlog_CloseEventLog(pipes_struct *p, struct eventlog_CloseEventLog *r);
-NTSTATUS _eventlog_DeregisterEventSource(pipes_struct *p, struct eventlog_DeregisterEventSource *r);
-NTSTATUS _eventlog_GetNumRecords(pipes_struct *p, struct eventlog_GetNumRecords *r);
-NTSTATUS _eventlog_GetOldestRecord(pipes_struct *p, struct eventlog_GetOldestRecord *r);
-NTSTATUS _eventlog_ChangeNotify(pipes_struct *p, struct eventlog_ChangeNotify *r);
-NTSTATUS _eventlog_OpenEventLogW(pipes_struct *p, struct eventlog_OpenEventLogW *r);
-NTSTATUS _eventlog_RegisterEventSourceW(pipes_struct *p, struct eventlog_RegisterEventSourceW *r);
-NTSTATUS _eventlog_OpenBackupEventLogW(pipes_struct *p, struct eventlog_OpenBackupEventLogW *r);
-NTSTATUS _eventlog_ReadEventLogW(pipes_struct *p, struct eventlog_ReadEventLogW *r);
-NTSTATUS _eventlog_ReportEventW(pipes_struct *p, struct eventlog_ReportEventW *r);
-NTSTATUS _eventlog_ClearEventLogA(pipes_struct *p, struct eventlog_ClearEventLogA *r);
-NTSTATUS _eventlog_BackupEventLogA(pipes_struct *p, struct eventlog_BackupEventLogA *r);
-NTSTATUS _eventlog_OpenEventLogA(pipes_struct *p, struct eventlog_OpenEventLogA *r);
-NTSTATUS _eventlog_RegisterEventSourceA(pipes_struct *p, struct eventlog_RegisterEventSourceA *r);
-NTSTATUS _eventlog_OpenBackupEventLogA(pipes_struct *p, struct eventlog_OpenBackupEventLogA *r);
-NTSTATUS _eventlog_ReadEventLogA(pipes_struct *p, struct eventlog_ReadEventLogA *r);
-NTSTATUS _eventlog_ReportEventA(pipes_struct *p, struct eventlog_ReportEventA *r);
-NTSTATUS _eventlog_RegisterClusterSvc(pipes_struct *p, struct eventlog_RegisterClusterSvc *r);
-NTSTATUS _eventlog_DeregisterClusterSvc(pipes_struct *p, struct eventlog_DeregisterClusterSvc *r);
-NTSTATUS _eventlog_WriteClusterEvents(pipes_struct *p, struct eventlog_WriteClusterEvents *r);
-NTSTATUS _eventlog_GetLogIntormation(pipes_struct *p, struct eventlog_GetLogIntormation *r);
-NTSTATUS _eventlog_FlushEventLog(pipes_struct *p, struct eventlog_FlushEventLog *r);
-void eventlog_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_eventlog_init(void);
-#endif /* __SRV_EVENTLOG__ */
diff --git a/source/librpc/gen_ndr/srv_initshutdown.c b/source/librpc/gen_ndr/srv_initshutdown.c
deleted file mode 100644
index 41c10129d5c..00000000000
--- a/source/librpc/gen_ndr/srv_initshutdown.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_initshutdown.h"
-
-static BOOL api_initshutdown_Init(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct initshutdown_Init r;
- TALLOC_CTX *mem_ctx = talloc_init("api_initshutdown_Init");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_initshutdown_Init(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(initshutdown_Init, &r);
-
- r.out.result = _initshutdown_Init(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(initshutdown_Init, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_initshutdown_Init(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_initshutdown_Abort(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct initshutdown_Abort r;
- TALLOC_CTX *mem_ctx = talloc_init("api_initshutdown_Abort");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_initshutdown_Abort(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(initshutdown_Abort, &r);
-
- r.out.result = _initshutdown_Abort(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(initshutdown_Abort, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_initshutdown_Abort(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_initshutdown_InitEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct initshutdown_InitEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_initshutdown_InitEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_initshutdown_InitEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(initshutdown_InitEx, &r);
-
- r.out.result = _initshutdown_InitEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(initshutdown_InitEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_initshutdown_InitEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_initshutdown_cmds[] =
-{
- {"INITSHUTDOWN_INIT", DCERPC_INITSHUTDOWN_INIT, api_initshutdown_Init},
- {"INITSHUTDOWN_ABORT", DCERPC_INITSHUTDOWN_ABORT, api_initshutdown_Abort},
- {"INITSHUTDOWN_INITEX", DCERPC_INITSHUTDOWN_INITEX, api_initshutdown_InitEx},
-};
-
-void initshutdown_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_initshutdown_cmds;
- *n_fns = sizeof(api_initshutdown_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_initshutdown_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "initshutdown", "initshutdown", api_initshutdown_cmds, sizeof(api_initshutdown_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_initshutdown.h b/source/librpc/gen_ndr/srv_initshutdown.h
deleted file mode 100644
index be3ea25271b..00000000000
--- a/source/librpc/gen_ndr/srv_initshutdown.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "librpc/gen_ndr/ndr_initshutdown.h"
-#ifndef __SRV_INITSHUTDOWN__
-#define __SRV_INITSHUTDOWN__
-WERROR _initshutdown_Init(pipes_struct *p, struct initshutdown_Init *r);
-WERROR _initshutdown_Abort(pipes_struct *p, struct initshutdown_Abort *r);
-WERROR _initshutdown_InitEx(pipes_struct *p, struct initshutdown_InitEx *r);
-void initshutdown_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_initshutdown_init(void);
-#endif /* __SRV_INITSHUTDOWN__ */
diff --git a/source/librpc/gen_ndr/srv_lsa.c b/source/librpc/gen_ndr/srv_lsa.c
deleted file mode 100644
index 8e08f671eca..00000000000
--- a/source/librpc/gen_ndr/srv_lsa.c
+++ /dev/null
@@ -1,5616 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_lsa.h"
-
-static BOOL api_lsa_Close(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_Close r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_Close");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_Close(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_Close, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = r.in.handle;
- r.out.result = _lsa_Close(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_Close, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_Close(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_Delete(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_Delete r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_Delete");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_Delete(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_Delete, &r);
-
- r.out.result = _lsa_Delete(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_Delete, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_Delete(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_EnumPrivs(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_EnumPrivs r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_EnumPrivs");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_EnumPrivs(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumPrivs, &r);
-
- ZERO_STRUCT(r.out);
- r.out.resume_handle = r.in.resume_handle;
- r.out.privs = talloc_zero(mem_ctx, struct lsa_PrivArray);
- if (r.out.privs == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_EnumPrivs(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumPrivs, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_EnumPrivs(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QuerySecurity(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QuerySecurity r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QuerySecurity");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QuerySecurity(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QuerySecurity, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sdbuf = talloc_zero(mem_ctx, struct sec_desc_buf);
- if (r.out.sdbuf == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_QuerySecurity(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QuerySecurity, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QuerySecurity(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetSecObj(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetSecObj r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetSecObj");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetSecObj(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetSecObj, &r);
-
- r.out.result = _lsa_SetSecObj(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetSecObj, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetSecObj(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_ChangePassword(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_ChangePassword r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_ChangePassword");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_ChangePassword(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_ChangePassword, &r);
-
- r.out.result = _lsa_ChangePassword(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_ChangePassword, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_ChangePassword(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_OpenPolicy(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_OpenPolicy r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_OpenPolicy");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_OpenPolicy(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenPolicy, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_OpenPolicy(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenPolicy, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_OpenPolicy(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QueryInfoPolicy(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QueryInfoPolicy r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QueryInfoPolicy");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QueryInfoPolicy(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryInfoPolicy, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union lsa_PolicyInformation);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_QueryInfoPolicy(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryInfoPolicy, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QueryInfoPolicy(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetInfoPolicy(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetInfoPolicy r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetInfoPolicy");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetInfoPolicy(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetInfoPolicy, &r);
-
- r.out.result = _lsa_SetInfoPolicy(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetInfoPolicy, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetInfoPolicy(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_ClearAuditLog(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_ClearAuditLog r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_ClearAuditLog");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_ClearAuditLog(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_ClearAuditLog, &r);
-
- r.out.result = _lsa_ClearAuditLog(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_ClearAuditLog, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_ClearAuditLog(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CreateAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CreateAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CreateAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CreateAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateAccount, &r);
-
- ZERO_STRUCT(r.out);
- r.out.acct_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.acct_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_CreateAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CreateAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_EnumAccounts(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_EnumAccounts r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_EnumAccounts");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_EnumAccounts(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumAccounts, &r);
-
- ZERO_STRUCT(r.out);
- r.out.resume_handle = r.in.resume_handle;
- r.out.sids = talloc_zero(mem_ctx, struct lsa_SidArray);
- if (r.out.sids == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_EnumAccounts(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumAccounts, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_EnumAccounts(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CreateTrustedDomain(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CreateTrustedDomain r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CreateTrustedDomain");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CreateTrustedDomain(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateTrustedDomain, &r);
-
- ZERO_STRUCT(r.out);
- r.out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.trustdom_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_CreateTrustedDomain(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomain, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CreateTrustedDomain(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_EnumTrustDom(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_EnumTrustDom r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_EnumTrustDom");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_EnumTrustDom(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumTrustDom, &r);
-
- ZERO_STRUCT(r.out);
- r.out.resume_handle = r.in.resume_handle;
- r.out.domains = talloc_zero(mem_ctx, struct lsa_DomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_EnumTrustDom(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumTrustDom, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_EnumTrustDom(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupNames(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupNames r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupNames");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupNames(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames, &r);
-
- ZERO_STRUCT(r.out);
- r.out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.sids = r.in.sids;
- r.out.count = r.in.count;
- r.out.result = _lsa_LookupNames(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupNames(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupSids(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupSids r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupSids");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupSids(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupSids, &r);
-
- ZERO_STRUCT(r.out);
- r.out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.names = r.in.names;
- r.out.count = r.in.count;
- r.out.result = _lsa_LookupSids(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupSids, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupSids(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CreateSecret(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CreateSecret r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CreateSecret");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CreateSecret(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateSecret, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sec_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.sec_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_CreateSecret(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateSecret, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CreateSecret(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_OpenAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_OpenAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_OpenAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_OpenAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenAccount, &r);
-
- ZERO_STRUCT(r.out);
- r.out.acct_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.acct_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_OpenAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_OpenAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_EnumPrivsAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_EnumPrivsAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_EnumPrivsAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_EnumPrivsAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumPrivsAccount, &r);
-
- ZERO_STRUCT(r.out);
- r.out.privs = talloc_zero(mem_ctx, struct lsa_PrivilegeSet);
- if (r.out.privs == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_EnumPrivsAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumPrivsAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_EnumPrivsAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_AddPrivilegesToAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_AddPrivilegesToAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_AddPrivilegesToAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_AddPrivilegesToAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_AddPrivilegesToAccount, &r);
-
- r.out.result = _lsa_AddPrivilegesToAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_AddPrivilegesToAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_AddPrivilegesToAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_RemovePrivilegesFromAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_RemovePrivilegesFromAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_RemovePrivilegesFromAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_RemovePrivilegesFromAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_RemovePrivilegesFromAccount, &r);
-
- r.out.result = _lsa_RemovePrivilegesFromAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_RemovePrivilegesFromAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_RemovePrivilegesFromAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_GetQuotasForAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_GetQuotasForAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_GetQuotasForAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_GetQuotasForAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_GetQuotasForAccount, &r);
-
- r.out.result = _lsa_GetQuotasForAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_GetQuotasForAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_GetQuotasForAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetQuotasForAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetQuotasForAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetQuotasForAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetQuotasForAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetQuotasForAccount, &r);
-
- r.out.result = _lsa_SetQuotasForAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetQuotasForAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetQuotasForAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_GetSystemAccessAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_GetSystemAccessAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_GetSystemAccessAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_GetSystemAccessAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_GetSystemAccessAccount, &r);
-
- r.out.result = _lsa_GetSystemAccessAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_GetSystemAccessAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_GetSystemAccessAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetSystemAccessAccount(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetSystemAccessAccount r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetSystemAccessAccount");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetSystemAccessAccount(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetSystemAccessAccount, &r);
-
- r.out.result = _lsa_SetSystemAccessAccount(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetSystemAccessAccount, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetSystemAccessAccount(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_OpenTrustedDomain(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_OpenTrustedDomain r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_OpenTrustedDomain");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_OpenTrustedDomain(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenTrustedDomain, &r);
-
- ZERO_STRUCT(r.out);
- r.out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.trustdom_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_OpenTrustedDomain(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenTrustedDomain, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_OpenTrustedDomain(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QueryTrustedDomainInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QueryTrustedDomainInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QueryTrustedDomainInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QueryTrustedDomainInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryTrustedDomainInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union lsa_TrustedDomainInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_QueryTrustedDomainInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QueryTrustedDomainInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetInformationTrustedDomain(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetInformationTrustedDomain r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetInformationTrustedDomain");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetInformationTrustedDomain(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetInformationTrustedDomain, &r);
-
- r.out.result = _lsa_SetInformationTrustedDomain(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetInformationTrustedDomain, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetInformationTrustedDomain(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_OpenSecret(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_OpenSecret r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_OpenSecret");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_OpenSecret(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenSecret, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sec_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.sec_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_OpenSecret(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenSecret, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_OpenSecret(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetSecret(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetSecret r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetSecret");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetSecret(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetSecret, &r);
-
- r.out.result = _lsa_SetSecret(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetSecret, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetSecret(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QuerySecret(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QuerySecret r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QuerySecret");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QuerySecret(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QuerySecret, &r);
-
- ZERO_STRUCT(r.out);
- r.out.new_val = r.in.new_val;
- r.out.new_mtime = r.in.new_mtime;
- r.out.old_val = r.in.old_val;
- r.out.old_mtime = r.in.old_mtime;
- r.out.result = _lsa_QuerySecret(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QuerySecret, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QuerySecret(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupPrivValue(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupPrivValue r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupPrivValue");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupPrivValue(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupPrivValue, &r);
-
- ZERO_STRUCT(r.out);
- r.out.luid = talloc_zero(mem_ctx, struct lsa_LUID);
- if (r.out.luid == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_LookupPrivValue(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupPrivValue, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupPrivValue(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupPrivName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupPrivName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupPrivName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupPrivName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupPrivName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.name = talloc_zero(mem_ctx, struct lsa_StringLarge);
- if (r.out.name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_LookupPrivName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupPrivName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupPrivName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupPrivDisplayName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupPrivDisplayName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupPrivDisplayName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupPrivDisplayName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupPrivDisplayName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.disp_name = talloc_zero(mem_ctx, struct lsa_StringLarge);
- if (r.out.disp_name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.language_id = r.in.language_id;
- r.out.result = _lsa_LookupPrivDisplayName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupPrivDisplayName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupPrivDisplayName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_DeleteObject(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_DeleteObject r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_DeleteObject");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_DeleteObject(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_DeleteObject, &r);
-
- r.out.result = _lsa_DeleteObject(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_DeleteObject, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_DeleteObject(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_EnumAccountsWithUserRight(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_EnumAccountsWithUserRight r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_EnumAccountsWithUserRight");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_EnumAccountsWithUserRight(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumAccountsWithUserRight, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sids = talloc_zero(mem_ctx, struct lsa_SidArray);
- if (r.out.sids == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_EnumAccountsWithUserRight(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumAccountsWithUserRight, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_EnumAccountsWithUserRight(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_EnumAccountRights(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_EnumAccountRights r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_EnumAccountRights");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_EnumAccountRights(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumAccountRights, &r);
-
- ZERO_STRUCT(r.out);
- r.out.rights = talloc_zero(mem_ctx, struct lsa_RightSet);
- if (r.out.rights == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_EnumAccountRights(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumAccountRights, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_EnumAccountRights(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_AddAccountRights(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_AddAccountRights r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_AddAccountRights");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_AddAccountRights(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_AddAccountRights, &r);
-
- r.out.result = _lsa_AddAccountRights(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_AddAccountRights, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_AddAccountRights(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_RemoveAccountRights(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_RemoveAccountRights r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_RemoveAccountRights");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_RemoveAccountRights(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_RemoveAccountRights, &r);
-
- r.out.result = _lsa_RemoveAccountRights(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_RemoveAccountRights, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_RemoveAccountRights(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QueryTrustedDomainInfoBySid(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QueryTrustedDomainInfoBySid r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QueryTrustedDomainInfoBySid");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QueryTrustedDomainInfoBySid(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryTrustedDomainInfoBySid, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union lsa_TrustedDomainInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_QueryTrustedDomainInfoBySid(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfoBySid, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QueryTrustedDomainInfoBySid(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetTrustedDomainInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetTrustedDomainInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetTrustedDomainInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetTrustedDomainInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetTrustedDomainInfo, &r);
-
- r.out.result = _lsa_SetTrustedDomainInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetTrustedDomainInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetTrustedDomainInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_DeleteTrustedDomain(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_DeleteTrustedDomain r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_DeleteTrustedDomain");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_DeleteTrustedDomain(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_DeleteTrustedDomain, &r);
-
- r.out.result = _lsa_DeleteTrustedDomain(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_DeleteTrustedDomain, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_DeleteTrustedDomain(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_StorePrivateData(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_StorePrivateData r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_StorePrivateData");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_StorePrivateData(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_StorePrivateData, &r);
-
- r.out.result = _lsa_StorePrivateData(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_StorePrivateData, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_StorePrivateData(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_RetrievePrivateData(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_RetrievePrivateData r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_RetrievePrivateData");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_RetrievePrivateData(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_RetrievePrivateData, &r);
-
- r.out.result = _lsa_RetrievePrivateData(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_RetrievePrivateData, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_RetrievePrivateData(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_OpenPolicy2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_OpenPolicy2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_OpenPolicy2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_OpenPolicy2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenPolicy2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_OpenPolicy2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenPolicy2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_OpenPolicy2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_GetUserName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_GetUserName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_GetUserName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_GetUserName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_GetUserName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.account_name = r.in.account_name;
- r.out.authority_name = r.in.authority_name;
- r.out.result = _lsa_GetUserName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_GetUserName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_GetUserName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QueryInfoPolicy2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QueryInfoPolicy2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QueryInfoPolicy2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QueryInfoPolicy2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryInfoPolicy2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union lsa_PolicyInformation);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_QueryInfoPolicy2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryInfoPolicy2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QueryInfoPolicy2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetInfoPolicy2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetInfoPolicy2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetInfoPolicy2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetInfoPolicy2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetInfoPolicy2, &r);
-
- r.out.result = _lsa_SetInfoPolicy2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetInfoPolicy2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetInfoPolicy2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QueryTrustedDomainInfoByName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QueryTrustedDomainInfoByName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QueryTrustedDomainInfoByName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QueryTrustedDomainInfoByName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryTrustedDomainInfoByName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union lsa_TrustedDomainInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_QueryTrustedDomainInfoByName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfoByName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QueryTrustedDomainInfoByName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetTrustedDomainInfoByName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetTrustedDomainInfoByName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetTrustedDomainInfoByName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetTrustedDomainInfoByName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetTrustedDomainInfoByName, &r);
-
- r.out.result = _lsa_SetTrustedDomainInfoByName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetTrustedDomainInfoByName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetTrustedDomainInfoByName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_EnumTrustedDomainsEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_EnumTrustedDomainsEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_EnumTrustedDomainsEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_EnumTrustedDomainsEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_EnumTrustedDomainsEx, &r);
-
- ZERO_STRUCT(r.out);
- r.out.resume_handle = r.in.resume_handle;
- r.out.domains = talloc_zero(mem_ctx, struct lsa_DomainListEx);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_EnumTrustedDomainsEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_EnumTrustedDomainsEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_EnumTrustedDomainsEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CreateTrustedDomainEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CreateTrustedDomainEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CreateTrustedDomainEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CreateTrustedDomainEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateTrustedDomainEx, &r);
-
- r.out.result = _lsa_CreateTrustedDomainEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomainEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CreateTrustedDomainEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CloseTrustedDomainEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CloseTrustedDomainEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CloseTrustedDomainEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CloseTrustedDomainEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CloseTrustedDomainEx, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = r.in.handle;
- r.out.result = _lsa_CloseTrustedDomainEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CloseTrustedDomainEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CloseTrustedDomainEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_QueryDomainInformationPolicy(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_QueryDomainInformationPolicy r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_QueryDomainInformationPolicy");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_QueryDomainInformationPolicy(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_QueryDomainInformationPolicy, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union lsa_DomainInformationPolicy);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_QueryDomainInformationPolicy(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_QueryDomainInformationPolicy, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_QueryDomainInformationPolicy(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_SetDomainInformationPolicy(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_SetDomainInformationPolicy r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_SetDomainInformationPolicy");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_SetDomainInformationPolicy(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_SetDomainInformationPolicy, &r);
-
- r.out.result = _lsa_SetDomainInformationPolicy(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_SetDomainInformationPolicy, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_SetDomainInformationPolicy(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_OpenTrustedDomainByName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_OpenTrustedDomainByName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_OpenTrustedDomainByName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_OpenTrustedDomainByName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_OpenTrustedDomainByName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.trustdom_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _lsa_OpenTrustedDomainByName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_OpenTrustedDomainByName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_OpenTrustedDomainByName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_TestCall(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_TestCall r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_TestCall");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_TestCall(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_TestCall, &r);
-
- r.out.result = _lsa_TestCall(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_TestCall, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_TestCall(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupSids2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupSids2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupSids2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupSids2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupSids2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.names = r.in.names;
- r.out.count = r.in.count;
- r.out.result = _lsa_LookupSids2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupSids2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupSids2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupNames2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupNames2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupNames2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupNames2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.sids = r.in.sids;
- r.out.count = r.in.count;
- r.out.result = _lsa_LookupNames2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupNames2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CreateTrustedDomainEx2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CreateTrustedDomainEx2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CreateTrustedDomainEx2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CreateTrustedDomainEx2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CreateTrustedDomainEx2, &r);
-
- r.out.result = _lsa_CreateTrustedDomainEx2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomainEx2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CreateTrustedDomainEx2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRWRITE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRWRITE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRWRITE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRWRITE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRWRITE, &r);
-
- r.out.result = _lsa_CREDRWRITE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRWRITE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRWRITE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRREAD(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRREAD r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRREAD");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRREAD(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRREAD, &r);
-
- r.out.result = _lsa_CREDRREAD(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRREAD, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRREAD(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRENUMERATE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRENUMERATE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRENUMERATE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRENUMERATE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRENUMERATE, &r);
-
- r.out.result = _lsa_CREDRENUMERATE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRENUMERATE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRENUMERATE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRWRITEDOMAINCREDENTIALS(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRWRITEDOMAINCREDENTIALS r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRWRITEDOMAINCREDENTIALS");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRWRITEDOMAINCREDENTIALS(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRWRITEDOMAINCREDENTIALS, &r);
-
- r.out.result = _lsa_CREDRWRITEDOMAINCREDENTIALS(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRWRITEDOMAINCREDENTIALS, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRWRITEDOMAINCREDENTIALS(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRREADDOMAINCREDENTIALS(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRREADDOMAINCREDENTIALS r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRREADDOMAINCREDENTIALS");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRREADDOMAINCREDENTIALS(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRREADDOMAINCREDENTIALS, &r);
-
- r.out.result = _lsa_CREDRREADDOMAINCREDENTIALS(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRREADDOMAINCREDENTIALS, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRREADDOMAINCREDENTIALS(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRDELETE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRDELETE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRDELETE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRDELETE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRDELETE, &r);
-
- r.out.result = _lsa_CREDRDELETE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRDELETE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRDELETE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRGETTARGETINFO(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRGETTARGETINFO r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRGETTARGETINFO");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRGETTARGETINFO(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRGETTARGETINFO, &r);
-
- r.out.result = _lsa_CREDRGETTARGETINFO(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRGETTARGETINFO, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRGETTARGETINFO(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRPROFILELOADED(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRPROFILELOADED r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRPROFILELOADED");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRPROFILELOADED(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRPROFILELOADED, &r);
-
- r.out.result = _lsa_CREDRPROFILELOADED(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRPROFILELOADED, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRPROFILELOADED(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupNames3(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupNames3 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupNames3");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupNames3(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames3, &r);
-
- ZERO_STRUCT(r.out);
- r.out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.sids = r.in.sids;
- r.out.count = r.in.count;
- r.out.result = _lsa_LookupNames3(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames3, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupNames3(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRGETSESSIONTYPES(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRGETSESSIONTYPES r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRGETSESSIONTYPES");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRGETSESSIONTYPES(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRGETSESSIONTYPES, &r);
-
- r.out.result = _lsa_CREDRGETSESSIONTYPES(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRGETSESSIONTYPES, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRGETSESSIONTYPES(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARREGISTERAUDITEVENT(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARREGISTERAUDITEVENT r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARREGISTERAUDITEVENT");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARREGISTERAUDITEVENT(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARREGISTERAUDITEVENT, &r);
-
- r.out.result = _lsa_LSARREGISTERAUDITEVENT(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARREGISTERAUDITEVENT, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARREGISTERAUDITEVENT(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARGENAUDITEVENT(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARGENAUDITEVENT r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARGENAUDITEVENT");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARGENAUDITEVENT(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARGENAUDITEVENT, &r);
-
- r.out.result = _lsa_LSARGENAUDITEVENT(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARGENAUDITEVENT, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARGENAUDITEVENT(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARUNREGISTERAUDITEVENT(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARUNREGISTERAUDITEVENT r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARUNREGISTERAUDITEVENT");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARUNREGISTERAUDITEVENT(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARUNREGISTERAUDITEVENT, &r);
-
- r.out.result = _lsa_LSARUNREGISTERAUDITEVENT(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARUNREGISTERAUDITEVENT, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARUNREGISTERAUDITEVENT(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARQUERYFORESTTRUSTINFORMATION(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARQUERYFORESTTRUSTINFORMATION r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARQUERYFORESTTRUSTINFORMATION");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARQUERYFORESTTRUSTINFORMATION(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARQUERYFORESTTRUSTINFORMATION, &r);
-
- r.out.result = _lsa_LSARQUERYFORESTTRUSTINFORMATION(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARQUERYFORESTTRUSTINFORMATION, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARQUERYFORESTTRUSTINFORMATION(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARSETFORESTTRUSTINFORMATION r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARSETFORESTTRUSTINFORMATION");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARSETFORESTTRUSTINFORMATION(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARSETFORESTTRUSTINFORMATION, &r);
-
- r.out.result = _lsa_LSARSETFORESTTRUSTINFORMATION(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARSETFORESTTRUSTINFORMATION, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARSETFORESTTRUSTINFORMATION(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_CREDRRENAME(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_CREDRRENAME r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_CREDRRENAME");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_CREDRRENAME(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_CREDRRENAME, &r);
-
- r.out.result = _lsa_CREDRRENAME(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_CREDRRENAME, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_CREDRRENAME(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupSids3(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupSids3 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupSids3");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupSids3(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupSids3, &r);
-
- ZERO_STRUCT(r.out);
- r.out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.names = r.in.names;
- r.out.count = r.in.count;
- r.out.result = _lsa_LookupSids3(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupSids3, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupSids3(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LookupNames4(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LookupNames4 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LookupNames4");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LookupNames4(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LookupNames4, &r);
-
- ZERO_STRUCT(r.out);
- r.out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList);
- if (r.out.domains == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.sids = r.in.sids;
- r.out.count = r.in.count;
- r.out.result = _lsa_LookupNames4(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LookupNames4, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LookupNames4(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSAROPENPOLICYSCE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSAROPENPOLICYSCE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSAROPENPOLICYSCE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSAROPENPOLICYSCE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSAROPENPOLICYSCE, &r);
-
- r.out.result = _lsa_LSAROPENPOLICYSCE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSAROPENPOLICYSCE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSAROPENPOLICYSCE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARADTREGISTERSECURITYEVENTSOURCE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARADTREGISTERSECURITYEVENTSOURCE, &r);
-
- r.out.result = _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARADTREGISTERSECURITYEVENTSOURCE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE, &r);
-
- r.out.result = _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_lsa_LSARADTREPORTSECURITYEVENT(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct lsa_LSARADTREPORTSECURITYEVENT r;
- TALLOC_CTX *mem_ctx = talloc_init("api_lsa_LSARADTREPORTSECURITYEVENT");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_lsa_LSARADTREPORTSECURITYEVENT(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(lsa_LSARADTREPORTSECURITYEVENT, &r);
-
- r.out.result = _lsa_LSARADTREPORTSECURITYEVENT(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(lsa_LSARADTREPORTSECURITYEVENT, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_lsa_LSARADTREPORTSECURITYEVENT(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_lsarpc_cmds[] =
-{
- {"LSA_CLOSE", DCERPC_LSA_CLOSE, api_lsa_Close},
- {"LSA_DELETE", DCERPC_LSA_DELETE, api_lsa_Delete},
- {"LSA_ENUMPRIVS", DCERPC_LSA_ENUMPRIVS, api_lsa_EnumPrivs},
- {"LSA_QUERYSECURITY", DCERPC_LSA_QUERYSECURITY, api_lsa_QuerySecurity},
- {"LSA_SETSECOBJ", DCERPC_LSA_SETSECOBJ, api_lsa_SetSecObj},
- {"LSA_CHANGEPASSWORD", DCERPC_LSA_CHANGEPASSWORD, api_lsa_ChangePassword},
- {"LSA_OPENPOLICY", DCERPC_LSA_OPENPOLICY, api_lsa_OpenPolicy},
- {"LSA_QUERYINFOPOLICY", DCERPC_LSA_QUERYINFOPOLICY, api_lsa_QueryInfoPolicy},
- {"LSA_SETINFOPOLICY", DCERPC_LSA_SETINFOPOLICY, api_lsa_SetInfoPolicy},
- {"LSA_CLEARAUDITLOG", DCERPC_LSA_CLEARAUDITLOG, api_lsa_ClearAuditLog},
- {"LSA_CREATEACCOUNT", DCERPC_LSA_CREATEACCOUNT, api_lsa_CreateAccount},
- {"LSA_ENUMACCOUNTS", DCERPC_LSA_ENUMACCOUNTS, api_lsa_EnumAccounts},
- {"LSA_CREATETRUSTEDDOMAIN", DCERPC_LSA_CREATETRUSTEDDOMAIN, api_lsa_CreateTrustedDomain},
- {"LSA_ENUMTRUSTDOM", DCERPC_LSA_ENUMTRUSTDOM, api_lsa_EnumTrustDom},
- {"LSA_LOOKUPNAMES", DCERPC_LSA_LOOKUPNAMES, api_lsa_LookupNames},
- {"LSA_LOOKUPSIDS", DCERPC_LSA_LOOKUPSIDS, api_lsa_LookupSids},
- {"LSA_CREATESECRET", DCERPC_LSA_CREATESECRET, api_lsa_CreateSecret},
- {"LSA_OPENACCOUNT", DCERPC_LSA_OPENACCOUNT, api_lsa_OpenAccount},
- {"LSA_ENUMPRIVSACCOUNT", DCERPC_LSA_ENUMPRIVSACCOUNT, api_lsa_EnumPrivsAccount},
- {"LSA_ADDPRIVILEGESTOACCOUNT", DCERPC_LSA_ADDPRIVILEGESTOACCOUNT, api_lsa_AddPrivilegesToAccount},
- {"LSA_REMOVEPRIVILEGESFROMACCOUNT", DCERPC_LSA_REMOVEPRIVILEGESFROMACCOUNT, api_lsa_RemovePrivilegesFromAccount},
- {"LSA_GETQUOTASFORACCOUNT", DCERPC_LSA_GETQUOTASFORACCOUNT, api_lsa_GetQuotasForAccount},
- {"LSA_SETQUOTASFORACCOUNT", DCERPC_LSA_SETQUOTASFORACCOUNT, api_lsa_SetQuotasForAccount},
- {"LSA_GETSYSTEMACCESSACCOUNT", DCERPC_LSA_GETSYSTEMACCESSACCOUNT, api_lsa_GetSystemAccessAccount},
- {"LSA_SETSYSTEMACCESSACCOUNT", DCERPC_LSA_SETSYSTEMACCESSACCOUNT, api_lsa_SetSystemAccessAccount},
- {"LSA_OPENTRUSTEDDOMAIN", DCERPC_LSA_OPENTRUSTEDDOMAIN, api_lsa_OpenTrustedDomain},
- {"LSA_QUERYTRUSTEDDOMAININFO", DCERPC_LSA_QUERYTRUSTEDDOMAININFO, api_lsa_QueryTrustedDomainInfo},
- {"LSA_SETINFORMATIONTRUSTEDDOMAIN", DCERPC_LSA_SETINFORMATIONTRUSTEDDOMAIN, api_lsa_SetInformationTrustedDomain},
- {"LSA_OPENSECRET", DCERPC_LSA_OPENSECRET, api_lsa_OpenSecret},
- {"LSA_SETSECRET", DCERPC_LSA_SETSECRET, api_lsa_SetSecret},
- {"LSA_QUERYSECRET", DCERPC_LSA_QUERYSECRET, api_lsa_QuerySecret},
- {"LSA_LOOKUPPRIVVALUE", DCERPC_LSA_LOOKUPPRIVVALUE, api_lsa_LookupPrivValue},
- {"LSA_LOOKUPPRIVNAME", DCERPC_LSA_LOOKUPPRIVNAME, api_lsa_LookupPrivName},
- {"LSA_LOOKUPPRIVDISPLAYNAME", DCERPC_LSA_LOOKUPPRIVDISPLAYNAME, api_lsa_LookupPrivDisplayName},
- {"LSA_DELETEOBJECT", DCERPC_LSA_DELETEOBJECT, api_lsa_DeleteObject},
- {"LSA_ENUMACCOUNTSWITHUSERRIGHT", DCERPC_LSA_ENUMACCOUNTSWITHUSERRIGHT, api_lsa_EnumAccountsWithUserRight},
- {"LSA_ENUMACCOUNTRIGHTS", DCERPC_LSA_ENUMACCOUNTRIGHTS, api_lsa_EnumAccountRights},
- {"LSA_ADDACCOUNTRIGHTS", DCERPC_LSA_ADDACCOUNTRIGHTS, api_lsa_AddAccountRights},
- {"LSA_REMOVEACCOUNTRIGHTS", DCERPC_LSA_REMOVEACCOUNTRIGHTS, api_lsa_RemoveAccountRights},
- {"LSA_QUERYTRUSTEDDOMAININFOBYSID", DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYSID, api_lsa_QueryTrustedDomainInfoBySid},
- {"LSA_SETTRUSTEDDOMAININFO", DCERPC_LSA_SETTRUSTEDDOMAININFO, api_lsa_SetTrustedDomainInfo},
- {"LSA_DELETETRUSTEDDOMAIN", DCERPC_LSA_DELETETRUSTEDDOMAIN, api_lsa_DeleteTrustedDomain},
- {"LSA_STOREPRIVATEDATA", DCERPC_LSA_STOREPRIVATEDATA, api_lsa_StorePrivateData},
- {"LSA_RETRIEVEPRIVATEDATA", DCERPC_LSA_RETRIEVEPRIVATEDATA, api_lsa_RetrievePrivateData},
- {"LSA_OPENPOLICY2", DCERPC_LSA_OPENPOLICY2, api_lsa_OpenPolicy2},
- {"LSA_GETUSERNAME", DCERPC_LSA_GETUSERNAME, api_lsa_GetUserName},
- {"LSA_QUERYINFOPOLICY2", DCERPC_LSA_QUERYINFOPOLICY2, api_lsa_QueryInfoPolicy2},
- {"LSA_SETINFOPOLICY2", DCERPC_LSA_SETINFOPOLICY2, api_lsa_SetInfoPolicy2},
- {"LSA_QUERYTRUSTEDDOMAININFOBYNAME", DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYNAME, api_lsa_QueryTrustedDomainInfoByName},
- {"LSA_SETTRUSTEDDOMAININFOBYNAME", DCERPC_LSA_SETTRUSTEDDOMAININFOBYNAME, api_lsa_SetTrustedDomainInfoByName},
- {"LSA_ENUMTRUSTEDDOMAINSEX", DCERPC_LSA_ENUMTRUSTEDDOMAINSEX, api_lsa_EnumTrustedDomainsEx},
- {"LSA_CREATETRUSTEDDOMAINEX", DCERPC_LSA_CREATETRUSTEDDOMAINEX, api_lsa_CreateTrustedDomainEx},
- {"LSA_CLOSETRUSTEDDOMAINEX", DCERPC_LSA_CLOSETRUSTEDDOMAINEX, api_lsa_CloseTrustedDomainEx},
- {"LSA_QUERYDOMAININFORMATIONPOLICY", DCERPC_LSA_QUERYDOMAININFORMATIONPOLICY, api_lsa_QueryDomainInformationPolicy},
- {"LSA_SETDOMAININFORMATIONPOLICY", DCERPC_LSA_SETDOMAININFORMATIONPOLICY, api_lsa_SetDomainInformationPolicy},
- {"LSA_OPENTRUSTEDDOMAINBYNAME", DCERPC_LSA_OPENTRUSTEDDOMAINBYNAME, api_lsa_OpenTrustedDomainByName},
- {"LSA_TESTCALL", DCERPC_LSA_TESTCALL, api_lsa_TestCall},
- {"LSA_LOOKUPSIDS2", DCERPC_LSA_LOOKUPSIDS2, api_lsa_LookupSids2},
- {"LSA_LOOKUPNAMES2", DCERPC_LSA_LOOKUPNAMES2, api_lsa_LookupNames2},
- {"LSA_CREATETRUSTEDDOMAINEX2", DCERPC_LSA_CREATETRUSTEDDOMAINEX2, api_lsa_CreateTrustedDomainEx2},
- {"LSA_CREDRWRITE", DCERPC_LSA_CREDRWRITE, api_lsa_CREDRWRITE},
- {"LSA_CREDRREAD", DCERPC_LSA_CREDRREAD, api_lsa_CREDRREAD},
- {"LSA_CREDRENUMERATE", DCERPC_LSA_CREDRENUMERATE, api_lsa_CREDRENUMERATE},
- {"LSA_CREDRWRITEDOMAINCREDENTIALS", DCERPC_LSA_CREDRWRITEDOMAINCREDENTIALS, api_lsa_CREDRWRITEDOMAINCREDENTIALS},
- {"LSA_CREDRREADDOMAINCREDENTIALS", DCERPC_LSA_CREDRREADDOMAINCREDENTIALS, api_lsa_CREDRREADDOMAINCREDENTIALS},
- {"LSA_CREDRDELETE", DCERPC_LSA_CREDRDELETE, api_lsa_CREDRDELETE},
- {"LSA_CREDRGETTARGETINFO", DCERPC_LSA_CREDRGETTARGETINFO, api_lsa_CREDRGETTARGETINFO},
- {"LSA_CREDRPROFILELOADED", DCERPC_LSA_CREDRPROFILELOADED, api_lsa_CREDRPROFILELOADED},
- {"LSA_LOOKUPNAMES3", DCERPC_LSA_LOOKUPNAMES3, api_lsa_LookupNames3},
- {"LSA_CREDRGETSESSIONTYPES", DCERPC_LSA_CREDRGETSESSIONTYPES, api_lsa_CREDRGETSESSIONTYPES},
- {"LSA_LSARREGISTERAUDITEVENT", DCERPC_LSA_LSARREGISTERAUDITEVENT, api_lsa_LSARREGISTERAUDITEVENT},
- {"LSA_LSARGENAUDITEVENT", DCERPC_LSA_LSARGENAUDITEVENT, api_lsa_LSARGENAUDITEVENT},
- {"LSA_LSARUNREGISTERAUDITEVENT", DCERPC_LSA_LSARUNREGISTERAUDITEVENT, api_lsa_LSARUNREGISTERAUDITEVENT},
- {"LSA_LSARQUERYFORESTTRUSTINFORMATION", DCERPC_LSA_LSARQUERYFORESTTRUSTINFORMATION, api_lsa_LSARQUERYFORESTTRUSTINFORMATION},
- {"LSA_LSARSETFORESTTRUSTINFORMATION", DCERPC_LSA_LSARSETFORESTTRUSTINFORMATION, api_lsa_LSARSETFORESTTRUSTINFORMATION},
- {"LSA_CREDRRENAME", DCERPC_LSA_CREDRRENAME, api_lsa_CREDRRENAME},
- {"LSA_LOOKUPSIDS3", DCERPC_LSA_LOOKUPSIDS3, api_lsa_LookupSids3},
- {"LSA_LOOKUPNAMES4", DCERPC_LSA_LOOKUPNAMES4, api_lsa_LookupNames4},
- {"LSA_LSAROPENPOLICYSCE", DCERPC_LSA_LSAROPENPOLICYSCE, api_lsa_LSAROPENPOLICYSCE},
- {"LSA_LSARADTREGISTERSECURITYEVENTSOURCE", DCERPC_LSA_LSARADTREGISTERSECURITYEVENTSOURCE, api_lsa_LSARADTREGISTERSECURITYEVENTSOURCE},
- {"LSA_LSARADTUNREGISTERSECURITYEVENTSOURCE", DCERPC_LSA_LSARADTUNREGISTERSECURITYEVENTSOURCE, api_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE},
- {"LSA_LSARADTREPORTSECURITYEVENT", DCERPC_LSA_LSARADTREPORTSECURITYEVENT, api_lsa_LSARADTREPORTSECURITYEVENT},
-};
-
-void lsarpc_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_lsarpc_cmds;
- *n_fns = sizeof(api_lsarpc_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_lsarpc_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "lsarpc", "lsarpc", api_lsarpc_cmds, sizeof(api_lsarpc_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_lsa.h b/source/librpc/gen_ndr/srv_lsa.h
deleted file mode 100644
index e3decb28624..00000000000
--- a/source/librpc/gen_ndr/srv_lsa.h
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "librpc/gen_ndr/ndr_lsa.h"
-#ifndef __SRV_LSARPC__
-#define __SRV_LSARPC__
-NTSTATUS _lsa_Close(pipes_struct *p, struct lsa_Close *r);
-NTSTATUS _lsa_Delete(pipes_struct *p, struct lsa_Delete *r);
-NTSTATUS _lsa_EnumPrivs(pipes_struct *p, struct lsa_EnumPrivs *r);
-NTSTATUS _lsa_QuerySecurity(pipes_struct *p, struct lsa_QuerySecurity *r);
-NTSTATUS _lsa_SetSecObj(pipes_struct *p, struct lsa_SetSecObj *r);
-NTSTATUS _lsa_ChangePassword(pipes_struct *p, struct lsa_ChangePassword *r);
-NTSTATUS _lsa_OpenPolicy(pipes_struct *p, struct lsa_OpenPolicy *r);
-NTSTATUS _lsa_QueryInfoPolicy(pipes_struct *p, struct lsa_QueryInfoPolicy *r);
-NTSTATUS _lsa_SetInfoPolicy(pipes_struct *p, struct lsa_SetInfoPolicy *r);
-NTSTATUS _lsa_ClearAuditLog(pipes_struct *p, struct lsa_ClearAuditLog *r);
-NTSTATUS _lsa_CreateAccount(pipes_struct *p, struct lsa_CreateAccount *r);
-NTSTATUS _lsa_EnumAccounts(pipes_struct *p, struct lsa_EnumAccounts *r);
-NTSTATUS _lsa_CreateTrustedDomain(pipes_struct *p, struct lsa_CreateTrustedDomain *r);
-NTSTATUS _lsa_EnumTrustDom(pipes_struct *p, struct lsa_EnumTrustDom *r);
-NTSTATUS _lsa_LookupNames(pipes_struct *p, struct lsa_LookupNames *r);
-NTSTATUS _lsa_LookupSids(pipes_struct *p, struct lsa_LookupSids *r);
-NTSTATUS _lsa_CreateSecret(pipes_struct *p, struct lsa_CreateSecret *r);
-NTSTATUS _lsa_OpenAccount(pipes_struct *p, struct lsa_OpenAccount *r);
-NTSTATUS _lsa_EnumPrivsAccount(pipes_struct *p, struct lsa_EnumPrivsAccount *r);
-NTSTATUS _lsa_AddPrivilegesToAccount(pipes_struct *p, struct lsa_AddPrivilegesToAccount *r);
-NTSTATUS _lsa_RemovePrivilegesFromAccount(pipes_struct *p, struct lsa_RemovePrivilegesFromAccount *r);
-NTSTATUS _lsa_GetQuotasForAccount(pipes_struct *p, struct lsa_GetQuotasForAccount *r);
-NTSTATUS _lsa_SetQuotasForAccount(pipes_struct *p, struct lsa_SetQuotasForAccount *r);
-NTSTATUS _lsa_GetSystemAccessAccount(pipes_struct *p, struct lsa_GetSystemAccessAccount *r);
-NTSTATUS _lsa_SetSystemAccessAccount(pipes_struct *p, struct lsa_SetSystemAccessAccount *r);
-NTSTATUS _lsa_OpenTrustedDomain(pipes_struct *p, struct lsa_OpenTrustedDomain *r);
-NTSTATUS _lsa_QueryTrustedDomainInfo(pipes_struct *p, struct lsa_QueryTrustedDomainInfo *r);
-NTSTATUS _lsa_SetInformationTrustedDomain(pipes_struct *p, struct lsa_SetInformationTrustedDomain *r);
-NTSTATUS _lsa_OpenSecret(pipes_struct *p, struct lsa_OpenSecret *r);
-NTSTATUS _lsa_SetSecret(pipes_struct *p, struct lsa_SetSecret *r);
-NTSTATUS _lsa_QuerySecret(pipes_struct *p, struct lsa_QuerySecret *r);
-NTSTATUS _lsa_LookupPrivValue(pipes_struct *p, struct lsa_LookupPrivValue *r);
-NTSTATUS _lsa_LookupPrivName(pipes_struct *p, struct lsa_LookupPrivName *r);
-NTSTATUS _lsa_LookupPrivDisplayName(pipes_struct *p, struct lsa_LookupPrivDisplayName *r);
-NTSTATUS _lsa_DeleteObject(pipes_struct *p, struct lsa_DeleteObject *r);
-NTSTATUS _lsa_EnumAccountsWithUserRight(pipes_struct *p, struct lsa_EnumAccountsWithUserRight *r);
-NTSTATUS _lsa_EnumAccountRights(pipes_struct *p, struct lsa_EnumAccountRights *r);
-NTSTATUS _lsa_AddAccountRights(pipes_struct *p, struct lsa_AddAccountRights *r);
-NTSTATUS _lsa_RemoveAccountRights(pipes_struct *p, struct lsa_RemoveAccountRights *r);
-NTSTATUS _lsa_QueryTrustedDomainInfoBySid(pipes_struct *p, struct lsa_QueryTrustedDomainInfoBySid *r);
-NTSTATUS _lsa_SetTrustedDomainInfo(pipes_struct *p, struct lsa_SetTrustedDomainInfo *r);
-NTSTATUS _lsa_DeleteTrustedDomain(pipes_struct *p, struct lsa_DeleteTrustedDomain *r);
-NTSTATUS _lsa_StorePrivateData(pipes_struct *p, struct lsa_StorePrivateData *r);
-NTSTATUS _lsa_RetrievePrivateData(pipes_struct *p, struct lsa_RetrievePrivateData *r);
-NTSTATUS _lsa_OpenPolicy2(pipes_struct *p, struct lsa_OpenPolicy2 *r);
-NTSTATUS _lsa_GetUserName(pipes_struct *p, struct lsa_GetUserName *r);
-NTSTATUS _lsa_QueryInfoPolicy2(pipes_struct *p, struct lsa_QueryInfoPolicy2 *r);
-NTSTATUS _lsa_SetInfoPolicy2(pipes_struct *p, struct lsa_SetInfoPolicy2 *r);
-NTSTATUS _lsa_QueryTrustedDomainInfoByName(pipes_struct *p, struct lsa_QueryTrustedDomainInfoByName *r);
-NTSTATUS _lsa_SetTrustedDomainInfoByName(pipes_struct *p, struct lsa_SetTrustedDomainInfoByName *r);
-NTSTATUS _lsa_EnumTrustedDomainsEx(pipes_struct *p, struct lsa_EnumTrustedDomainsEx *r);
-NTSTATUS _lsa_CreateTrustedDomainEx(pipes_struct *p, struct lsa_CreateTrustedDomainEx *r);
-NTSTATUS _lsa_CloseTrustedDomainEx(pipes_struct *p, struct lsa_CloseTrustedDomainEx *r);
-NTSTATUS _lsa_QueryDomainInformationPolicy(pipes_struct *p, struct lsa_QueryDomainInformationPolicy *r);
-NTSTATUS _lsa_SetDomainInformationPolicy(pipes_struct *p, struct lsa_SetDomainInformationPolicy *r);
-NTSTATUS _lsa_OpenTrustedDomainByName(pipes_struct *p, struct lsa_OpenTrustedDomainByName *r);
-NTSTATUS _lsa_TestCall(pipes_struct *p, struct lsa_TestCall *r);
-NTSTATUS _lsa_LookupSids2(pipes_struct *p, struct lsa_LookupSids2 *r);
-NTSTATUS _lsa_LookupNames2(pipes_struct *p, struct lsa_LookupNames2 *r);
-NTSTATUS _lsa_CreateTrustedDomainEx2(pipes_struct *p, struct lsa_CreateTrustedDomainEx2 *r);
-NTSTATUS _lsa_CREDRWRITE(pipes_struct *p, struct lsa_CREDRWRITE *r);
-NTSTATUS _lsa_CREDRREAD(pipes_struct *p, struct lsa_CREDRREAD *r);
-NTSTATUS _lsa_CREDRENUMERATE(pipes_struct *p, struct lsa_CREDRENUMERATE *r);
-NTSTATUS _lsa_CREDRWRITEDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRWRITEDOMAINCREDENTIALS *r);
-NTSTATUS _lsa_CREDRREADDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRREADDOMAINCREDENTIALS *r);
-NTSTATUS _lsa_CREDRDELETE(pipes_struct *p, struct lsa_CREDRDELETE *r);
-NTSTATUS _lsa_CREDRGETTARGETINFO(pipes_struct *p, struct lsa_CREDRGETTARGETINFO *r);
-NTSTATUS _lsa_CREDRPROFILELOADED(pipes_struct *p, struct lsa_CREDRPROFILELOADED *r);
-NTSTATUS _lsa_LookupNames3(pipes_struct *p, struct lsa_LookupNames3 *r);
-NTSTATUS _lsa_CREDRGETSESSIONTYPES(pipes_struct *p, struct lsa_CREDRGETSESSIONTYPES *r);
-NTSTATUS _lsa_LSARREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARREGISTERAUDITEVENT *r);
-NTSTATUS _lsa_LSARGENAUDITEVENT(pipes_struct *p, struct lsa_LSARGENAUDITEVENT *r);
-NTSTATUS _lsa_LSARUNREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARUNREGISTERAUDITEVENT *r);
-NTSTATUS _lsa_LSARQUERYFORESTTRUSTINFORMATION(pipes_struct *p, struct lsa_LSARQUERYFORESTTRUSTINFORMATION *r);
-NTSTATUS _lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p, struct lsa_LSARSETFORESTTRUSTINFORMATION *r);
-NTSTATUS _lsa_CREDRRENAME(pipes_struct *p, struct lsa_CREDRRENAME *r);
-NTSTATUS _lsa_LookupSids3(pipes_struct *p, struct lsa_LookupSids3 *r);
-NTSTATUS _lsa_LookupNames4(pipes_struct *p, struct lsa_LookupNames4 *r);
-NTSTATUS _lsa_LSAROPENPOLICYSCE(pipes_struct *p, struct lsa_LSAROPENPOLICYSCE *r);
-NTSTATUS _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r);
-NTSTATUS _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r);
-NTSTATUS _lsa_LSARADTREPORTSECURITYEVENT(pipes_struct *p, struct lsa_LSARADTREPORTSECURITYEVENT *r);
-void lsarpc_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_lsarpc_init(void);
-#endif /* __SRV_LSARPC__ */
diff --git a/source/librpc/gen_ndr/srv_netlogon.c b/source/librpc/gen_ndr/srv_netlogon.c
deleted file mode 100644
index 9b87c618533..00000000000
--- a/source/librpc/gen_ndr/srv_netlogon.c
+++ /dev/null
@@ -1,3340 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_netlogon.h"
-
-static BOOL api_netr_LogonUasLogon(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonUasLogon r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonUasLogon");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonUasLogon(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonUasLogon, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, struct netr_UasInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_LogonUasLogon(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonUasLogon, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonUasLogon(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonUasLogoff(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonUasLogoff r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonUasLogoff");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonUasLogoff(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonUasLogoff, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, struct netr_UasLogoffInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_LogonUasLogoff(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonUasLogoff, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonUasLogoff(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonSamLogon(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonSamLogon r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonSamLogon");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonSamLogon(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogon, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.validation = talloc_zero(mem_ctx, union netr_Validation);
- if (r.out.validation == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.authoritative = talloc_zero(mem_ctx, uint8_t);
- if (r.out.authoritative == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_LogonSamLogon(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogon, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonSamLogon(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonSamLogoff(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonSamLogoff r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonSamLogoff");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonSamLogoff(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogoff, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.result = _netr_LogonSamLogoff(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogoff, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonSamLogoff(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_ServerReqChallenge(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_ServerReqChallenge r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_ServerReqChallenge");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_ServerReqChallenge(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerReqChallenge, &r);
-
- ZERO_STRUCT(r.out);
- r.out.credentials = r.in.credentials;
- r.out.result = _netr_ServerReqChallenge(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerReqChallenge, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_ServerReqChallenge(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_ServerAuthenticate(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_ServerAuthenticate r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_ServerAuthenticate");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_ServerAuthenticate(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerAuthenticate, &r);
-
- ZERO_STRUCT(r.out);
- r.out.credentials = r.in.credentials;
- r.out.result = _netr_ServerAuthenticate(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_ServerAuthenticate(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_ServerPasswordSet(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_ServerPasswordSet r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_ServerPasswordSet");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_ServerPasswordSet(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerPasswordSet, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = talloc_zero(mem_ctx, struct netr_Authenticator);
- if (r.out.return_authenticator == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_ServerPasswordSet(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerPasswordSet, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_ServerPasswordSet(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DatabaseDeltas(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DatabaseDeltas r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DatabaseDeltas");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DatabaseDeltas(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseDeltas, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.sequence_num = r.in.sequence_num;
- r.out.delta_enum_array = talloc_zero(mem_ctx, struct netr_DELTA_ENUM_ARRAY);
- if (r.out.delta_enum_array == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DatabaseDeltas(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseDeltas, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DatabaseDeltas(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DatabaseSync(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DatabaseSync r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DatabaseSync");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DatabaseSync(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseSync, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.sync_context = r.in.sync_context;
- r.out.delta_enum_array = talloc_zero(mem_ctx, struct netr_DELTA_ENUM_ARRAY);
- if (r.out.delta_enum_array == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DatabaseSync(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseSync, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DatabaseSync(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_AccountDeltas(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_AccountDeltas r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_AccountDeltas");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_AccountDeltas(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_AccountDeltas, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.buffer = talloc_zero(mem_ctx, struct netr_AccountBuffer);
- if (r.out.buffer == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.count_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.count_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.total_entries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.total_entries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.recordid = talloc_zero(mem_ctx, struct netr_UAS_INFO_0);
- if (r.out.recordid == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_AccountDeltas(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_AccountDeltas, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_AccountDeltas(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_AccountSync(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_AccountSync r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_AccountSync");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_AccountSync(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_AccountSync, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.buffer = talloc_zero(mem_ctx, struct netr_AccountBuffer);
- if (r.out.buffer == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.count_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.count_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.total_entries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.total_entries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.next_reference = talloc_zero(mem_ctx, uint32_t);
- if (r.out.next_reference == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.recordid = r.in.recordid;
- r.out.result = _netr_AccountSync(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_AccountSync, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_AccountSync(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_GetDcName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_GetDcName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_GetDcName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_GetDcName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_GetDcName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.dcname = talloc_zero(mem_ctx, const char *);
- if (r.out.dcname == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_GetDcName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_GetDcName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_GetDcName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonControl(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonControl r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonControl");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonControl(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonControl, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union netr_CONTROL_QUERY_INFORMATION);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_LogonControl(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonControl, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonControl(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_GetAnyDCName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_GetAnyDCName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_GetAnyDCName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_GetAnyDCName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_GetAnyDCName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.dcname = talloc_zero(mem_ctx, const char *);
- if (r.out.dcname == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_GetAnyDCName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_GetAnyDCName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_GetAnyDCName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonControl2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonControl2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonControl2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonControl2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonControl2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.query = talloc_zero(mem_ctx, union netr_CONTROL_QUERY_INFORMATION);
- if (r.out.query == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_LogonControl2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonControl2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonControl2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_ServerAuthenticate2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_ServerAuthenticate2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_ServerAuthenticate2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_ServerAuthenticate2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerAuthenticate2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.credentials = r.in.credentials;
- r.out.negotiate_flags = r.in.negotiate_flags;
- r.out.result = _netr_ServerAuthenticate2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_ServerAuthenticate2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DatabaseSync2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DatabaseSync2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DatabaseSync2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DatabaseSync2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseSync2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.sync_context = r.in.sync_context;
- r.out.delta_enum_array = talloc_zero(mem_ctx, struct netr_DELTA_ENUM_ARRAY);
- if (r.out.delta_enum_array == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DatabaseSync2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseSync2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DatabaseSync2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DatabaseRedo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DatabaseRedo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DatabaseRedo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DatabaseRedo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DatabaseRedo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.delta_enum_array = talloc_zero(mem_ctx, struct netr_DELTA_ENUM_ARRAY);
- if (r.out.delta_enum_array == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DatabaseRedo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DatabaseRedo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DatabaseRedo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonControl2Ex(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonControl2Ex r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonControl2Ex");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonControl2Ex(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonControl2Ex, &r);
-
- ZERO_STRUCT(r.out);
- r.out.query = talloc_zero(mem_ctx, union netr_CONTROL_QUERY_INFORMATION);
- if (r.out.query == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_LogonControl2Ex(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonControl2Ex, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonControl2Ex(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRENUMERATETRUSTEDDOMAINS(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRENUMERATETRUSTEDDOMAINS r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRENUMERATETRUSTEDDOMAINS");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINS(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINS, &r);
-
- r.out.result = _netr_NETRENUMERATETRUSTEDDOMAINS(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINS, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRENUMERATETRUSTEDDOMAINS(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DsRGetDCName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DsRGetDCName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DsRGetDCName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DsRGetDCName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetDCName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, struct netr_DsRGetDCNameInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DsRGetDCName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetDCName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DsRGetDCName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRLOGONDUMMYROUTINE1(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRLOGONDUMMYROUTINE1 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRLOGONDUMMYROUTINE1");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRLOGONDUMMYROUTINE1(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONDUMMYROUTINE1, &r);
-
- r.out.result = _netr_NETRLOGONDUMMYROUTINE1(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONDUMMYROUTINE1, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRLOGONDUMMYROUTINE1(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRLOGONSETSERVICEBITS(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRLOGONSETSERVICEBITS r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRLOGONSETSERVICEBITS");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRLOGONSETSERVICEBITS(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONSETSERVICEBITS, &r);
-
- r.out.result = _netr_NETRLOGONSETSERVICEBITS(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONSETSERVICEBITS, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRLOGONSETSERVICEBITS(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRLOGONGETTRUSTRID(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRLOGONGETTRUSTRID r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRLOGONGETTRUSTRID");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRLOGONGETTRUSTRID(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONGETTRUSTRID, &r);
-
- r.out.result = _netr_NETRLOGONGETTRUSTRID(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONGETTRUSTRID, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRLOGONGETTRUSTRID(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRLOGONCOMPUTESERVERDIGEST(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRLOGONCOMPUTESERVERDIGEST r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRLOGONCOMPUTESERVERDIGEST");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONCOMPUTESERVERDIGEST, &r);
-
- r.out.result = _netr_NETRLOGONCOMPUTESERVERDIGEST(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONCOMPUTESERVERDIGEST, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRLOGONCOMPUTECLIENTDIGEST(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRLOGONCOMPUTECLIENTDIGEST r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRLOGONCOMPUTECLIENTDIGEST");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONCOMPUTECLIENTDIGEST, &r);
-
- r.out.result = _netr_NETRLOGONCOMPUTECLIENTDIGEST(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONCOMPUTECLIENTDIGEST, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_ServerAuthenticate3(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_ServerAuthenticate3 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_ServerAuthenticate3");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_ServerAuthenticate3(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerAuthenticate3, &r);
-
- ZERO_STRUCT(r.out);
- r.out.credentials = r.in.credentials;
- r.out.negotiate_flags = r.in.negotiate_flags;
- r.out.rid = talloc_zero(mem_ctx, uint32_t);
- if (r.out.rid == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_ServerAuthenticate3(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate3, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_ServerAuthenticate3(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DsRGetDCNameEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DsRGetDCNameEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DsRGetDCNameEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DsRGetDCNameEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetDCNameEx, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, struct netr_DsRGetDCNameInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DsRGetDCNameEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetDCNameEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DsRGetDCNameEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DsRGetSiteName(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DsRGetSiteName r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DsRGetSiteName");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DsRGetSiteName(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetSiteName, &r);
-
- ZERO_STRUCT(r.out);
- r.out.site = talloc_zero(mem_ctx, const char *);
- if (r.out.site == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DsRGetSiteName(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetSiteName, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DsRGetSiteName(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonGetDomainInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonGetDomainInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonGetDomainInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonGetDomainInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonGetDomainInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.info = talloc_zero(mem_ctx, union netr_DomainInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_LogonGetDomainInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonGetDomainInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonGetDomainInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_ServerPasswordSet2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_ServerPasswordSet2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_ServerPasswordSet2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_ServerPasswordSet2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_ServerPasswordSet2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = talloc_zero(mem_ctx, struct netr_Authenticator);
- if (r.out.return_authenticator == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_ServerPasswordSet2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_ServerPasswordSet2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_ServerPasswordSet2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRSERVERPASSWORDGET(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRSERVERPASSWORDGET r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRSERVERPASSWORDGET");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRSERVERPASSWORDGET(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRSERVERPASSWORDGET, &r);
-
- r.out.result = _netr_NETRSERVERPASSWORDGET(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRSERVERPASSWORDGET, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRSERVERPASSWORDGET(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRLOGONSENDTOSAM(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRLOGONSENDTOSAM r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRLOGONSENDTOSAM");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRLOGONSENDTOSAM(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONSENDTOSAM, &r);
-
- r.out.result = _netr_NETRLOGONSENDTOSAM(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONSENDTOSAM, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRLOGONSENDTOSAM(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DSRADDRESSTOSITENAMESW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DSRADDRESSTOSITENAMESW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DSRADDRESSTOSITENAMESW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DSRADDRESSTOSITENAMESW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRADDRESSTOSITENAMESW, &r);
-
- r.out.result = _netr_DSRADDRESSTOSITENAMESW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRADDRESSTOSITENAMESW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DSRADDRESSTOSITENAMESW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DsRGetDCNameEx2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DsRGetDCNameEx2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DsRGetDCNameEx2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DsRGetDCNameEx2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsRGetDCNameEx2, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, struct netr_DsRGetDCNameInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DsRGetDCNameEx2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsRGetDCNameEx2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DsRGetDCNameEx2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN, &r);
-
- r.out.result = _netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRENUMERATETRUSTEDDOMAINSEX(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRENUMERATETRUSTEDDOMAINSEX r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRENUMERATETRUSTEDDOMAINSEX");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINSEX(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINSEX, &r);
-
- r.out.result = _netr_NETRENUMERATETRUSTEDDOMAINSEX(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINSEX, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRENUMERATETRUSTEDDOMAINSEX(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DSRADDRESSTOSITENAMESEXW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DSRADDRESSTOSITENAMESEXW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DSRADDRESSTOSITENAMESEXW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DSRADDRESSTOSITENAMESEXW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRADDRESSTOSITENAMESEXW, &r);
-
- r.out.result = _netr_DSRADDRESSTOSITENAMESEXW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRADDRESSTOSITENAMESEXW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DSRADDRESSTOSITENAMESEXW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DSRGETDCSITECOVERAGEW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DSRGETDCSITECOVERAGEW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DSRGETDCSITECOVERAGEW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DSRGETDCSITECOVERAGEW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRGETDCSITECOVERAGEW, &r);
-
- r.out.result = _netr_DSRGETDCSITECOVERAGEW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRGETDCSITECOVERAGEW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DSRGETDCSITECOVERAGEW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonSamLogonEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonSamLogonEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonSamLogonEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonSamLogonEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogonEx, &r);
-
- ZERO_STRUCT(r.out);
- r.out.validation = talloc_zero(mem_ctx, union netr_Validation);
- if (r.out.validation == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.authoritative = talloc_zero(mem_ctx, uint8_t);
- if (r.out.authoritative == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.flags = r.in.flags;
- r.out.result = _netr_LogonSamLogonEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogonEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonSamLogonEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DsrEnumerateDomainTrusts(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DsrEnumerateDomainTrusts r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DsrEnumerateDomainTrusts");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DsrEnumerateDomainTrusts(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DsrEnumerateDomainTrusts, &r);
-
- ZERO_STRUCT(r.out);
- r.out.count = talloc_zero(mem_ctx, uint32_t);
- if (r.out.count == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.trusts = talloc_zero_array(mem_ctx, struct netr_DomainTrust *, count);
- if (r.out.trusts == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _netr_DsrEnumerateDomainTrusts(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DsrEnumerateDomainTrusts, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DsrEnumerateDomainTrusts(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DSRDEREGISTERDNSHOSTRECORDS(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DSRDEREGISTERDNSHOSTRECORDS r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DSRDEREGISTERDNSHOSTRECORDS");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DSRDEREGISTERDNSHOSTRECORDS(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRDEREGISTERDNSHOSTRECORDS, &r);
-
- r.out.result = _netr_DSRDEREGISTERDNSHOSTRECORDS(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRDEREGISTERDNSHOSTRECORDS, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DSRDEREGISTERDNSHOSTRECORDS(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRSERVERTRUSTPASSWORDSGET(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRSERVERTRUSTPASSWORDSGET r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRSERVERTRUSTPASSWORDSGET");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRSERVERTRUSTPASSWORDSGET(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRSERVERTRUSTPASSWORDSGET, &r);
-
- r.out.result = _netr_NETRSERVERTRUSTPASSWORDSGET(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRSERVERTRUSTPASSWORDSGET, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRSERVERTRUSTPASSWORDSGET(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_DSRGETFORESTTRUSTINFORMATION(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_DSRGETFORESTTRUSTINFORMATION r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_DSRGETFORESTTRUSTINFORMATION");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_DSRGETFORESTTRUSTINFORMATION(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_DSRGETFORESTTRUSTINFORMATION, &r);
-
- r.out.result = _netr_DSRGETFORESTTRUSTINFORMATION(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_DSRGETFORESTTRUSTINFORMATION, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_DSRGETFORESTTRUSTINFORMATION(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRGETFORESTTRUSTINFORMATION(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRGETFORESTTRUSTINFORMATION r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRGETFORESTTRUSTINFORMATION");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRGETFORESTTRUSTINFORMATION(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRGETFORESTTRUSTINFORMATION, &r);
-
- r.out.result = _netr_NETRGETFORESTTRUSTINFORMATION(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRGETFORESTTRUSTINFORMATION, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRGETFORESTTRUSTINFORMATION(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_LogonSamLogonWithFlags(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_LogonSamLogonWithFlags r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_LogonSamLogonWithFlags");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_LogonSamLogonWithFlags(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_LogonSamLogonWithFlags, &r);
-
- ZERO_STRUCT(r.out);
- r.out.return_authenticator = r.in.return_authenticator;
- r.out.validation = talloc_zero(mem_ctx, union netr_Validation);
- if (r.out.validation == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.authoritative = talloc_zero(mem_ctx, uint8_t);
- if (r.out.authoritative == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.flags = r.in.flags;
- r.out.result = _netr_LogonSamLogonWithFlags(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_LogonSamLogonWithFlags, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_LogonSamLogonWithFlags(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_netr_NETRSERVERGETTRUSTINFO(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct netr_NETRSERVERGETTRUSTINFO r;
- TALLOC_CTX *mem_ctx = talloc_init("api_netr_NETRSERVERGETTRUSTINFO");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_netr_NETRSERVERGETTRUSTINFO(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(netr_NETRSERVERGETTRUSTINFO, &r);
-
- r.out.result = _netr_NETRSERVERGETTRUSTINFO(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(netr_NETRSERVERGETTRUSTINFO, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_netr_NETRSERVERGETTRUSTINFO(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_netlogon_cmds[] =
-{
- {"NETR_LOGONUASLOGON", DCERPC_NETR_LOGONUASLOGON, api_netr_LogonUasLogon},
- {"NETR_LOGONUASLOGOFF", DCERPC_NETR_LOGONUASLOGOFF, api_netr_LogonUasLogoff},
- {"NETR_LOGONSAMLOGON", DCERPC_NETR_LOGONSAMLOGON, api_netr_LogonSamLogon},
- {"NETR_LOGONSAMLOGOFF", DCERPC_NETR_LOGONSAMLOGOFF, api_netr_LogonSamLogoff},
- {"NETR_SERVERREQCHALLENGE", DCERPC_NETR_SERVERREQCHALLENGE, api_netr_ServerReqChallenge},
- {"NETR_SERVERAUTHENTICATE", DCERPC_NETR_SERVERAUTHENTICATE, api_netr_ServerAuthenticate},
- {"NETR_SERVERPASSWORDSET", DCERPC_NETR_SERVERPASSWORDSET, api_netr_ServerPasswordSet},
- {"NETR_DATABASEDELTAS", DCERPC_NETR_DATABASEDELTAS, api_netr_DatabaseDeltas},
- {"NETR_DATABASESYNC", DCERPC_NETR_DATABASESYNC, api_netr_DatabaseSync},
- {"NETR_ACCOUNTDELTAS", DCERPC_NETR_ACCOUNTDELTAS, api_netr_AccountDeltas},
- {"NETR_ACCOUNTSYNC", DCERPC_NETR_ACCOUNTSYNC, api_netr_AccountSync},
- {"NETR_GETDCNAME", DCERPC_NETR_GETDCNAME, api_netr_GetDcName},
- {"NETR_LOGONCONTROL", DCERPC_NETR_LOGONCONTROL, api_netr_LogonControl},
- {"NETR_GETANYDCNAME", DCERPC_NETR_GETANYDCNAME, api_netr_GetAnyDCName},
- {"NETR_LOGONCONTROL2", DCERPC_NETR_LOGONCONTROL2, api_netr_LogonControl2},
- {"NETR_SERVERAUTHENTICATE2", DCERPC_NETR_SERVERAUTHENTICATE2, api_netr_ServerAuthenticate2},
- {"NETR_DATABASESYNC2", DCERPC_NETR_DATABASESYNC2, api_netr_DatabaseSync2},
- {"NETR_DATABASEREDO", DCERPC_NETR_DATABASEREDO, api_netr_DatabaseRedo},
- {"NETR_LOGONCONTROL2EX", DCERPC_NETR_LOGONCONTROL2EX, api_netr_LogonControl2Ex},
- {"NETR_NETRENUMERATETRUSTEDDOMAINS", DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINS, api_netr_NETRENUMERATETRUSTEDDOMAINS},
- {"NETR_DSRGETDCNAME", DCERPC_NETR_DSRGETDCNAME, api_netr_DsRGetDCName},
- {"NETR_NETRLOGONDUMMYROUTINE1", DCERPC_NETR_NETRLOGONDUMMYROUTINE1, api_netr_NETRLOGONDUMMYROUTINE1},
- {"NETR_NETRLOGONSETSERVICEBITS", DCERPC_NETR_NETRLOGONSETSERVICEBITS, api_netr_NETRLOGONSETSERVICEBITS},
- {"NETR_NETRLOGONGETTRUSTRID", DCERPC_NETR_NETRLOGONGETTRUSTRID, api_netr_NETRLOGONGETTRUSTRID},
- {"NETR_NETRLOGONCOMPUTESERVERDIGEST", DCERPC_NETR_NETRLOGONCOMPUTESERVERDIGEST, api_netr_NETRLOGONCOMPUTESERVERDIGEST},
- {"NETR_NETRLOGONCOMPUTECLIENTDIGEST", DCERPC_NETR_NETRLOGONCOMPUTECLIENTDIGEST, api_netr_NETRLOGONCOMPUTECLIENTDIGEST},
- {"NETR_SERVERAUTHENTICATE3", DCERPC_NETR_SERVERAUTHENTICATE3, api_netr_ServerAuthenticate3},
- {"NETR_DSRGETDCNAMEEX", DCERPC_NETR_DSRGETDCNAMEEX, api_netr_DsRGetDCNameEx},
- {"NETR_DSRGETSITENAME", DCERPC_NETR_DSRGETSITENAME, api_netr_DsRGetSiteName},
- {"NETR_LOGONGETDOMAININFO", DCERPC_NETR_LOGONGETDOMAININFO, api_netr_LogonGetDomainInfo},
- {"NETR_SERVERPASSWORDSET2", DCERPC_NETR_SERVERPASSWORDSET2, api_netr_ServerPasswordSet2},
- {"NETR_NETRSERVERPASSWORDGET", DCERPC_NETR_NETRSERVERPASSWORDGET, api_netr_NETRSERVERPASSWORDGET},
- {"NETR_NETRLOGONSENDTOSAM", DCERPC_NETR_NETRLOGONSENDTOSAM, api_netr_NETRLOGONSENDTOSAM},
- {"NETR_DSRADDRESSTOSITENAMESW", DCERPC_NETR_DSRADDRESSTOSITENAMESW, api_netr_DSRADDRESSTOSITENAMESW},
- {"NETR_DSRGETDCNAMEEX2", DCERPC_NETR_DSRGETDCNAMEEX2, api_netr_DsRGetDCNameEx2},
- {"NETR_NETRLOGONGETTIMESERVICEPARENTDOMAIN", DCERPC_NETR_NETRLOGONGETTIMESERVICEPARENTDOMAIN, api_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN},
- {"NETR_NETRENUMERATETRUSTEDDOMAINSEX", DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINSEX, api_netr_NETRENUMERATETRUSTEDDOMAINSEX},
- {"NETR_DSRADDRESSTOSITENAMESEXW", DCERPC_NETR_DSRADDRESSTOSITENAMESEXW, api_netr_DSRADDRESSTOSITENAMESEXW},
- {"NETR_DSRGETDCSITECOVERAGEW", DCERPC_NETR_DSRGETDCSITECOVERAGEW, api_netr_DSRGETDCSITECOVERAGEW},
- {"NETR_LOGONSAMLOGONEX", DCERPC_NETR_LOGONSAMLOGONEX, api_netr_LogonSamLogonEx},
- {"NETR_DSRENUMERATEDOMAINTRUSTS", DCERPC_NETR_DSRENUMERATEDOMAINTRUSTS, api_netr_DsrEnumerateDomainTrusts},
- {"NETR_DSRDEREGISTERDNSHOSTRECORDS", DCERPC_NETR_DSRDEREGISTERDNSHOSTRECORDS, api_netr_DSRDEREGISTERDNSHOSTRECORDS},
- {"NETR_NETRSERVERTRUSTPASSWORDSGET", DCERPC_NETR_NETRSERVERTRUSTPASSWORDSGET, api_netr_NETRSERVERTRUSTPASSWORDSGET},
- {"NETR_DSRGETFORESTTRUSTINFORMATION", DCERPC_NETR_DSRGETFORESTTRUSTINFORMATION, api_netr_DSRGETFORESTTRUSTINFORMATION},
- {"NETR_NETRGETFORESTTRUSTINFORMATION", DCERPC_NETR_NETRGETFORESTTRUSTINFORMATION, api_netr_NETRGETFORESTTRUSTINFORMATION},
- {"NETR_LOGONSAMLOGONWITHFLAGS", DCERPC_NETR_LOGONSAMLOGONWITHFLAGS, api_netr_LogonSamLogonWithFlags},
- {"NETR_NETRSERVERGETTRUSTINFO", DCERPC_NETR_NETRSERVERGETTRUSTINFO, api_netr_NETRSERVERGETTRUSTINFO},
-};
-
-void netlogon_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_netlogon_cmds;
- *n_fns = sizeof(api_netlogon_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_netlogon_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "netlogon", "netlogon", api_netlogon_cmds, sizeof(api_netlogon_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_netlogon.h b/source/librpc/gen_ndr/srv_netlogon.h
deleted file mode 100644
index 8350f437cdd..00000000000
--- a/source/librpc/gen_ndr/srv_netlogon.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "librpc/gen_ndr/ndr_netlogon.h"
-#ifndef __SRV_NETLOGON__
-#define __SRV_NETLOGON__
-WERROR _netr_LogonUasLogon(pipes_struct *p, struct netr_LogonUasLogon *r);
-WERROR _netr_LogonUasLogoff(pipes_struct *p, struct netr_LogonUasLogoff *r);
-NTSTATUS _netr_LogonSamLogon(pipes_struct *p, struct netr_LogonSamLogon *r);
-NTSTATUS _netr_LogonSamLogoff(pipes_struct *p, struct netr_LogonSamLogoff *r);
-NTSTATUS _netr_ServerReqChallenge(pipes_struct *p, struct netr_ServerReqChallenge *r);
-NTSTATUS _netr_ServerAuthenticate(pipes_struct *p, struct netr_ServerAuthenticate *r);
-NTSTATUS _netr_ServerPasswordSet(pipes_struct *p, struct netr_ServerPasswordSet *r);
-NTSTATUS _netr_DatabaseDeltas(pipes_struct *p, struct netr_DatabaseDeltas *r);
-NTSTATUS _netr_DatabaseSync(pipes_struct *p, struct netr_DatabaseSync *r);
-NTSTATUS _netr_AccountDeltas(pipes_struct *p, struct netr_AccountDeltas *r);
-NTSTATUS _netr_AccountSync(pipes_struct *p, struct netr_AccountSync *r);
-NTSTATUS _netr_GetDcName(pipes_struct *p, struct netr_GetDcName *r);
-WERROR _netr_LogonControl(pipes_struct *p, struct netr_LogonControl *r);
-WERROR _netr_GetAnyDCName(pipes_struct *p, struct netr_GetAnyDCName *r);
-WERROR _netr_LogonControl2(pipes_struct *p, struct netr_LogonControl2 *r);
-NTSTATUS _netr_ServerAuthenticate2(pipes_struct *p, struct netr_ServerAuthenticate2 *r);
-NTSTATUS _netr_DatabaseSync2(pipes_struct *p, struct netr_DatabaseSync2 *r);
-NTSTATUS _netr_DatabaseRedo(pipes_struct *p, struct netr_DatabaseRedo *r);
-WERROR _netr_LogonControl2Ex(pipes_struct *p, struct netr_LogonControl2Ex *r);
-WERROR _netr_NETRENUMERATETRUSTEDDOMAINS(pipes_struct *p, struct netr_NETRENUMERATETRUSTEDDOMAINS *r);
-WERROR _netr_DsRGetDCName(pipes_struct *p, struct netr_DsRGetDCName *r);
-WERROR _netr_NETRLOGONDUMMYROUTINE1(pipes_struct *p, struct netr_NETRLOGONDUMMYROUTINE1 *r);
-WERROR _netr_NETRLOGONSETSERVICEBITS(pipes_struct *p, struct netr_NETRLOGONSETSERVICEBITS *r);
-WERROR _netr_NETRLOGONGETTRUSTRID(pipes_struct *p, struct netr_NETRLOGONGETTRUSTRID *r);
-WERROR _netr_NETRLOGONCOMPUTESERVERDIGEST(pipes_struct *p, struct netr_NETRLOGONCOMPUTESERVERDIGEST *r);
-WERROR _netr_NETRLOGONCOMPUTECLIENTDIGEST(pipes_struct *p, struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r);
-NTSTATUS _netr_ServerAuthenticate3(pipes_struct *p, struct netr_ServerAuthenticate3 *r);
-WERROR _netr_DsRGetDCNameEx(pipes_struct *p, struct netr_DsRGetDCNameEx *r);
-WERROR _netr_DsRGetSiteName(pipes_struct *p, struct netr_DsRGetSiteName *r);
-NTSTATUS _netr_LogonGetDomainInfo(pipes_struct *p, struct netr_LogonGetDomainInfo *r);
-NTSTATUS _netr_ServerPasswordSet2(pipes_struct *p, struct netr_ServerPasswordSet2 *r);
-WERROR _netr_NETRSERVERPASSWORDGET(pipes_struct *p, struct netr_NETRSERVERPASSWORDGET *r);
-WERROR _netr_NETRLOGONSENDTOSAM(pipes_struct *p, struct netr_NETRLOGONSENDTOSAM *r);
-WERROR _netr_DSRADDRESSTOSITENAMESW(pipes_struct *p, struct netr_DSRADDRESSTOSITENAMESW *r);
-WERROR _netr_DsRGetDCNameEx2(pipes_struct *p, struct netr_DsRGetDCNameEx2 *r);
-WERROR _netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(pipes_struct *p, struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r);
-WERROR _netr_NETRENUMERATETRUSTEDDOMAINSEX(pipes_struct *p, struct netr_NETRENUMERATETRUSTEDDOMAINSEX *r);
-WERROR _netr_DSRADDRESSTOSITENAMESEXW(pipes_struct *p, struct netr_DSRADDRESSTOSITENAMESEXW *r);
-WERROR _netr_DSRGETDCSITECOVERAGEW(pipes_struct *p, struct netr_DSRGETDCSITECOVERAGEW *r);
-NTSTATUS _netr_LogonSamLogonEx(pipes_struct *p, struct netr_LogonSamLogonEx *r);
-WERROR _netr_DsrEnumerateDomainTrusts(pipes_struct *p, struct netr_DsrEnumerateDomainTrusts *r);
-WERROR _netr_DSRDEREGISTERDNSHOSTRECORDS(pipes_struct *p, struct netr_DSRDEREGISTERDNSHOSTRECORDS *r);
-WERROR _netr_NETRSERVERTRUSTPASSWORDSGET(pipes_struct *p, struct netr_NETRSERVERTRUSTPASSWORDSGET *r);
-WERROR _netr_DSRGETFORESTTRUSTINFORMATION(pipes_struct *p, struct netr_DSRGETFORESTTRUSTINFORMATION *r);
-WERROR _netr_NETRGETFORESTTRUSTINFORMATION(pipes_struct *p, struct netr_NETRGETFORESTTRUSTINFORMATION *r);
-NTSTATUS _netr_LogonSamLogonWithFlags(pipes_struct *p, struct netr_LogonSamLogonWithFlags *r);
-WERROR _netr_NETRSERVERGETTRUSTINFO(pipes_struct *p, struct netr_NETRSERVERGETTRUSTINFO *r);
-void netlogon_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_netlogon_init(void);
-#endif /* __SRV_NETLOGON__ */
diff --git a/source/librpc/gen_ndr/srv_srvsvc.c b/source/librpc/gen_ndr/srv_srvsvc.c
deleted file mode 100644
index 18b86892049..00000000000
--- a/source/librpc/gen_ndr/srv_srvsvc.c
+++ /dev/null
@@ -1,3718 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_srvsvc.h"
-
-static BOOL api_srvsvc_NetCharDevEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.ctr = r.in.ctr;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetCharDevEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetCharDevGetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevGetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevGetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevGetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevGetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union srvsvc_NetCharDevInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetCharDevGetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevGetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevGetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetCharDevControl(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevControl r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevControl");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevControl(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevControl, &r);
-
- r.out.result = _srvsvc_NetCharDevControl(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevControl, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevControl(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetCharDevQEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevQEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevQEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevQEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.ctr = r.in.ctr;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetCharDevQEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevQEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetCharDevQGetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevQGetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevQGetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevQGetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQGetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union srvsvc_NetCharDevQInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetCharDevQGetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQGetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevQGetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetCharDevQSetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevQSetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevQSetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevQSetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQSetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.parm_error = r.in.parm_error;
- r.out.result = _srvsvc_NetCharDevQSetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQSetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevQSetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetCharDevQPurge(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevQPurge r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevQPurge");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevQPurge(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurge, &r);
-
- r.out.result = _srvsvc_NetCharDevQPurge(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurge, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevQPurge(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetCharDevQPurgeSelf(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetCharDevQPurgeSelf r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetCharDevQPurgeSelf");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetCharDevQPurgeSelf(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r);
-
- r.out.result = _srvsvc_NetCharDevQPurgeSelf(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetCharDevQPurgeSelf(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetConnEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetConnEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetConnEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetConnEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetConnEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.ctr = r.in.ctr;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetConnEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetConnEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetConnEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetFileEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetFileEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetFileEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetFileEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetFileEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.ctr = r.in.ctr;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetFileEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetFileEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetFileEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetFileGetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetFileGetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetFileGetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetFileGetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetFileGetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union srvsvc_NetFileInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetFileGetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetFileGetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetFileGetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetFileClose(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetFileClose r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetFileClose");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetFileClose(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetFileClose, &r);
-
- r.out.result = _srvsvc_NetFileClose(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetFileClose, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetFileClose(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetSessEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetSessEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetSessEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetSessEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSessEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.ctr = r.in.ctr;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetSessEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSessEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetSessEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetSessDel(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetSessDel r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetSessDel");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetSessDel(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSessDel, &r);
-
- r.out.result = _srvsvc_NetSessDel(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSessDel, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetSessDel(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareAdd(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareAdd r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareAdd");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareAdd(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareAdd, &r);
-
- ZERO_STRUCT(r.out);
- r.out.parm_error = r.in.parm_error;
- r.out.result = _srvsvc_NetShareAdd(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareAdd, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareAdd(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareEnumAll(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareEnumAll r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareEnumAll");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareEnumAll(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnumAll, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.ctr = r.in.ctr;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetShareEnumAll(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnumAll, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareEnumAll(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareGetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareGetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareGetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareGetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareGetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union srvsvc_NetShareInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetShareGetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareGetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareGetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareSetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareSetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareSetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareSetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareSetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.parm_error = r.in.parm_error;
- r.out.result = _srvsvc_NetShareSetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareSetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareSetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareDel(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareDel r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareDel");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareDel(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDel, &r);
-
- r.out.result = _srvsvc_NetShareDel(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDel, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareDel(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareDelSticky(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareDelSticky r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareDelSticky");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareDelSticky(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelSticky, &r);
-
- r.out.result = _srvsvc_NetShareDelSticky(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelSticky, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareDelSticky(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareCheck(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareCheck r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareCheck");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareCheck(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareCheck, &r);
-
- ZERO_STRUCT(r.out);
- r.out.type = talloc_zero(mem_ctx, enum srvsvc_ShareType);
- if (r.out.type == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetShareCheck(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareCheck, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareCheck(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetSrvGetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetSrvGetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetSrvGetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetSrvGetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSrvGetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, union srvsvc_NetSrvInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetSrvGetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvGetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetSrvGetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetSrvSetInfo(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetSrvSetInfo r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetSrvSetInfo");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetSrvSetInfo(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSrvSetInfo, &r);
-
- ZERO_STRUCT(r.out);
- r.out.parm_error = r.in.parm_error;
- r.out.result = _srvsvc_NetSrvSetInfo(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvSetInfo, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetSrvSetInfo(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetDiskEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetDiskEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetDiskEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetDiskEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetDiskEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = r.in.info;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetDiskEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetDiskEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetDiskEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetServerStatisticsGet(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetServerStatisticsGet r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetServerStatisticsGet");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetServerStatisticsGet(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetServerStatisticsGet, &r);
-
- ZERO_STRUCT(r.out);
- r.out.stats = talloc_zero(mem_ctx, struct srvsvc_Statistics);
- if (r.out.stats == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetServerStatisticsGet(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetServerStatisticsGet, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetServerStatisticsGet(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetTransportAdd(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetTransportAdd r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetTransportAdd");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetTransportAdd(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetTransportAdd, &r);
-
- r.out.result = _srvsvc_NetTransportAdd(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportAdd, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetTransportAdd(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetTransportEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetTransportEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetTransportEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetTransportEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetTransportEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.transports = r.in.transports;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetTransportEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetTransportEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetTransportDel(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetTransportDel r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetTransportDel");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetTransportDel(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetTransportDel, &r);
-
- r.out.result = _srvsvc_NetTransportDel(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportDel, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetTransportDel(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetRemoteTOD(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetRemoteTOD r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetRemoteTOD");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetRemoteTOD(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetRemoteTOD, &r);
-
- ZERO_STRUCT(r.out);
- r.out.info = talloc_zero(mem_ctx, struct srvsvc_NetRemoteTODInfo);
- if (r.out.info == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetRemoteTOD(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetRemoteTOD, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetRemoteTOD(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetSetServiceBits(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetSetServiceBits r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetSetServiceBits");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetSetServiceBits(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSetServiceBits, &r);
-
- r.out.result = _srvsvc_NetSetServiceBits(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSetServiceBits, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetSetServiceBits(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetPathType(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetPathType r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetPathType");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetPathType(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPathType, &r);
-
- ZERO_STRUCT(r.out);
- r.out.pathtype = talloc_zero(mem_ctx, uint32_t);
- if (r.out.pathtype == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetPathType(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPathType, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetPathType(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetPathCanonicalize(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetPathCanonicalize r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetPathCanonicalize");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetPathCanonicalize(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPathCanonicalize, &r);
-
- ZERO_STRUCT(r.out);
- r.out.can_path = talloc_zero_array(mem_ctx, uint8_t, r.in.maxbuf);
- if (r.out.can_path == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.pathtype = r.in.pathtype;
- r.out.result = _srvsvc_NetPathCanonicalize(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCanonicalize, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetPathCanonicalize(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetPathCompare(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetPathCompare r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetPathCompare");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetPathCompare(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPathCompare, &r);
-
- r.out.result = _srvsvc_NetPathCompare(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCompare, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetPathCompare(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetNameValidate(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetNameValidate r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetNameValidate");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetNameValidate(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetNameValidate, &r);
-
- r.out.result = _srvsvc_NetNameValidate(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetNameValidate, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetNameValidate(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRPRNAMECANONICALIZE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRPRNAMECANONICALIZE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRPRNAMECANONICALIZE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRPRNAMECANONICALIZE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r);
-
- r.out.result = _srvsvc_NETRPRNAMECANONICALIZE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRPRNAMECANONICALIZE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetPRNameCompare(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetPRNameCompare r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetPRNameCompare");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetPRNameCompare(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetPRNameCompare, &r);
-
- r.out.result = _srvsvc_NetPRNameCompare(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetPRNameCompare, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetPRNameCompare(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareEnum(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareEnum r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareEnum");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareEnum(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnum, &r);
-
- ZERO_STRUCT(r.out);
- r.out.level = r.in.level;
- r.out.ctr = r.in.ctr;
- r.out.totalentries = talloc_zero(mem_ctx, uint32_t);
- if (r.out.totalentries == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _srvsvc_NetShareEnum(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnum, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareEnum(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareDelStart(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareDelStart r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareDelStart");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareDelStart(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelStart, &r);
-
- ZERO_STRUCT(r.out);
- r.out.hnd = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.hnd == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetShareDelStart(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelStart, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareDelStart(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetShareDelCommit(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetShareDelCommit r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetShareDelCommit");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetShareDelCommit(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelCommit, &r);
-
- ZERO_STRUCT(r.out);
- r.out.hnd = r.in.hnd;
- r.out.result = _srvsvc_NetShareDelCommit(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelCommit, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetShareDelCommit(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetGetFileSecurity(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetGetFileSecurity r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetGetFileSecurity");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetGetFileSecurity(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetGetFileSecurity, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sd_buf = talloc_zero(mem_ctx, struct sec_desc_buf);
- if (r.out.sd_buf == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _srvsvc_NetGetFileSecurity(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetGetFileSecurity, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetGetFileSecurity(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetSetFileSecurity(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetSetFileSecurity r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetSetFileSecurity");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetSetFileSecurity(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetSetFileSecurity, &r);
-
- r.out.result = _srvsvc_NetSetFileSecurity(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetSetFileSecurity, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetSetFileSecurity(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetServerTransportAddEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetServerTransportAddEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetServerTransportAddEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetServerTransportAddEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetServerTransportAddEx, &r);
-
- r.out.result = _srvsvc_NetServerTransportAddEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetServerTransportAddEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetServerTransportAddEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NetServerSetServiceBitsEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NetServerSetServiceBitsEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NetServerSetServiceBitsEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NetServerSetServiceBitsEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r);
-
- r.out.result = _srvsvc_NetServerSetServiceBitsEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NetServerSetServiceBitsEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSGETVERSION(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSGETVERSION r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSGETVERSION");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSGETVERSION(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSGETVERSION, &r);
-
- r.out.result = _srvsvc_NETRDFSGETVERSION(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSGETVERSION, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSGETVERSION(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSCREATELOCALPARTITION(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSCREATELOCALPARTITION r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSCREATELOCALPARTITION");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSCREATELOCALPARTITION(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r);
-
- r.out.result = _srvsvc_NETRDFSCREATELOCALPARTITION(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSCREATELOCALPARTITION(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSDELETELOCALPARTITION(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSDELETELOCALPARTITION r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSDELETELOCALPARTITION");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSDELETELOCALPARTITION(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r);
-
- r.out.result = _srvsvc_NETRDFSDELETELOCALPARTITION(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSDELETELOCALPARTITION(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSSETLOCALVOLUMESTATE(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSSETLOCALVOLUMESTATE r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSSETLOCALVOLUMESTATE");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSSETLOCALVOLUMESTATE(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r);
-
- r.out.result = _srvsvc_NETRDFSSETLOCALVOLUMESTATE(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSSETLOCALVOLUMESTATE(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSSETSERVERINFO(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSSETSERVERINFO r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSSETSERVERINFO");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSSETSERVERINFO(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r);
-
- r.out.result = _srvsvc_NETRDFSSETSERVERINFO(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSSETSERVERINFO(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSCREATEEXITPOINT(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSCREATEEXITPOINT r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSCREATEEXITPOINT");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSCREATEEXITPOINT(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r);
-
- r.out.result = _srvsvc_NETRDFSCREATEEXITPOINT(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSCREATEEXITPOINT(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSDELETEEXITPOINT(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSDELETEEXITPOINT r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSDELETEEXITPOINT");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSDELETEEXITPOINT(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r);
-
- r.out.result = _srvsvc_NETRDFSDELETEEXITPOINT(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSDELETEEXITPOINT(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSMODIFYPREFIX(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSMODIFYPREFIX r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSMODIFYPREFIX");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSMODIFYPREFIX(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r);
-
- r.out.result = _srvsvc_NETRDFSMODIFYPREFIX(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSMODIFYPREFIX(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSFIXLOCALVOLUME(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSFIXLOCALVOLUME r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSFIXLOCALVOLUME");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSFIXLOCALVOLUME(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r);
-
- r.out.result = _srvsvc_NETRDFSFIXLOCALVOLUME(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSFIXLOCALVOLUME(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRDFSMANAGERREPORTSITEINFO(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRDFSMANAGERREPORTSITEINFO r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRDFSMANAGERREPORTSITEINFO");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRDFSMANAGERREPORTSITEINFO(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMANAGERREPORTSITEINFO, &r);
-
- r.out.result = _srvsvc_NETRDFSMANAGERREPORTSITEINFO(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMANAGERREPORTSITEINFO, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRDFSMANAGERREPORTSITEINFO(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_srvsvc_NETRSERVERTRANSPORTDELEX(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct srvsvc_NETRSERVERTRANSPORTDELEX r;
- TALLOC_CTX *mem_ctx = talloc_init("api_srvsvc_NETRSERVERTRANSPORTDELEX");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_srvsvc_NETRSERVERTRANSPORTDELEX(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(srvsvc_NETRSERVERTRANSPORTDELEX, &r);
-
- r.out.result = _srvsvc_NETRSERVERTRANSPORTDELEX(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(srvsvc_NETRSERVERTRANSPORTDELEX, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_srvsvc_NETRSERVERTRANSPORTDELEX(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_srvsvc_cmds[] =
-{
- {"SRVSVC_NETCHARDEVENUM", DCERPC_SRVSVC_NETCHARDEVENUM, api_srvsvc_NetCharDevEnum},
- {"SRVSVC_NETCHARDEVGETINFO", DCERPC_SRVSVC_NETCHARDEVGETINFO, api_srvsvc_NetCharDevGetInfo},
- {"SRVSVC_NETCHARDEVCONTROL", DCERPC_SRVSVC_NETCHARDEVCONTROL, api_srvsvc_NetCharDevControl},
- {"SRVSVC_NETCHARDEVQENUM", DCERPC_SRVSVC_NETCHARDEVQENUM, api_srvsvc_NetCharDevQEnum},
- {"SRVSVC_NETCHARDEVQGETINFO", DCERPC_SRVSVC_NETCHARDEVQGETINFO, api_srvsvc_NetCharDevQGetInfo},
- {"SRVSVC_NETCHARDEVQSETINFO", DCERPC_SRVSVC_NETCHARDEVQSETINFO, api_srvsvc_NetCharDevQSetInfo},
- {"SRVSVC_NETCHARDEVQPURGE", DCERPC_SRVSVC_NETCHARDEVQPURGE, api_srvsvc_NetCharDevQPurge},
- {"SRVSVC_NETCHARDEVQPURGESELF", DCERPC_SRVSVC_NETCHARDEVQPURGESELF, api_srvsvc_NetCharDevQPurgeSelf},
- {"SRVSVC_NETCONNENUM", DCERPC_SRVSVC_NETCONNENUM, api_srvsvc_NetConnEnum},
- {"SRVSVC_NETFILEENUM", DCERPC_SRVSVC_NETFILEENUM, api_srvsvc_NetFileEnum},
- {"SRVSVC_NETFILEGETINFO", DCERPC_SRVSVC_NETFILEGETINFO, api_srvsvc_NetFileGetInfo},
- {"SRVSVC_NETFILECLOSE", DCERPC_SRVSVC_NETFILECLOSE, api_srvsvc_NetFileClose},
- {"SRVSVC_NETSESSENUM", DCERPC_SRVSVC_NETSESSENUM, api_srvsvc_NetSessEnum},
- {"SRVSVC_NETSESSDEL", DCERPC_SRVSVC_NETSESSDEL, api_srvsvc_NetSessDel},
- {"SRVSVC_NETSHAREADD", DCERPC_SRVSVC_NETSHAREADD, api_srvsvc_NetShareAdd},
- {"SRVSVC_NETSHAREENUMALL", DCERPC_SRVSVC_NETSHAREENUMALL, api_srvsvc_NetShareEnumAll},
- {"SRVSVC_NETSHAREGETINFO", DCERPC_SRVSVC_NETSHAREGETINFO, api_srvsvc_NetShareGetInfo},
- {"SRVSVC_NETSHARESETINFO", DCERPC_SRVSVC_NETSHARESETINFO, api_srvsvc_NetShareSetInfo},
- {"SRVSVC_NETSHAREDEL", DCERPC_SRVSVC_NETSHAREDEL, api_srvsvc_NetShareDel},
- {"SRVSVC_NETSHAREDELSTICKY", DCERPC_SRVSVC_NETSHAREDELSTICKY, api_srvsvc_NetShareDelSticky},
- {"SRVSVC_NETSHARECHECK", DCERPC_SRVSVC_NETSHARECHECK, api_srvsvc_NetShareCheck},
- {"SRVSVC_NETSRVGETINFO", DCERPC_SRVSVC_NETSRVGETINFO, api_srvsvc_NetSrvGetInfo},
- {"SRVSVC_NETSRVSETINFO", DCERPC_SRVSVC_NETSRVSETINFO, api_srvsvc_NetSrvSetInfo},
- {"SRVSVC_NETDISKENUM", DCERPC_SRVSVC_NETDISKENUM, api_srvsvc_NetDiskEnum},
- {"SRVSVC_NETSERVERSTATISTICSGET", DCERPC_SRVSVC_NETSERVERSTATISTICSGET, api_srvsvc_NetServerStatisticsGet},
- {"SRVSVC_NETTRANSPORTADD", DCERPC_SRVSVC_NETTRANSPORTADD, api_srvsvc_NetTransportAdd},
- {"SRVSVC_NETTRANSPORTENUM", DCERPC_SRVSVC_NETTRANSPORTENUM, api_srvsvc_NetTransportEnum},
- {"SRVSVC_NETTRANSPORTDEL", DCERPC_SRVSVC_NETTRANSPORTDEL, api_srvsvc_NetTransportDel},
- {"SRVSVC_NETREMOTETOD", DCERPC_SRVSVC_NETREMOTETOD, api_srvsvc_NetRemoteTOD},
- {"SRVSVC_NETSETSERVICEBITS", DCERPC_SRVSVC_NETSETSERVICEBITS, api_srvsvc_NetSetServiceBits},
- {"SRVSVC_NETPATHTYPE", DCERPC_SRVSVC_NETPATHTYPE, api_srvsvc_NetPathType},
- {"SRVSVC_NETPATHCANONICALIZE", DCERPC_SRVSVC_NETPATHCANONICALIZE, api_srvsvc_NetPathCanonicalize},
- {"SRVSVC_NETPATHCOMPARE", DCERPC_SRVSVC_NETPATHCOMPARE, api_srvsvc_NetPathCompare},
- {"SRVSVC_NETNAMEVALIDATE", DCERPC_SRVSVC_NETNAMEVALIDATE, api_srvsvc_NetNameValidate},
- {"SRVSVC_NETRPRNAMECANONICALIZE", DCERPC_SRVSVC_NETRPRNAMECANONICALIZE, api_srvsvc_NETRPRNAMECANONICALIZE},
- {"SRVSVC_NETPRNAMECOMPARE", DCERPC_SRVSVC_NETPRNAMECOMPARE, api_srvsvc_NetPRNameCompare},
- {"SRVSVC_NETSHAREENUM", DCERPC_SRVSVC_NETSHAREENUM, api_srvsvc_NetShareEnum},
- {"SRVSVC_NETSHAREDELSTART", DCERPC_SRVSVC_NETSHAREDELSTART, api_srvsvc_NetShareDelStart},
- {"SRVSVC_NETSHAREDELCOMMIT", DCERPC_SRVSVC_NETSHAREDELCOMMIT, api_srvsvc_NetShareDelCommit},
- {"SRVSVC_NETGETFILESECURITY", DCERPC_SRVSVC_NETGETFILESECURITY, api_srvsvc_NetGetFileSecurity},
- {"SRVSVC_NETSETFILESECURITY", DCERPC_SRVSVC_NETSETFILESECURITY, api_srvsvc_NetSetFileSecurity},
- {"SRVSVC_NETSERVERTRANSPORTADDEX", DCERPC_SRVSVC_NETSERVERTRANSPORTADDEX, api_srvsvc_NetServerTransportAddEx},
- {"SRVSVC_NETSERVERSETSERVICEBITSEX", DCERPC_SRVSVC_NETSERVERSETSERVICEBITSEX, api_srvsvc_NetServerSetServiceBitsEx},
- {"SRVSVC_NETRDFSGETVERSION", DCERPC_SRVSVC_NETRDFSGETVERSION, api_srvsvc_NETRDFSGETVERSION},
- {"SRVSVC_NETRDFSCREATELOCALPARTITION", DCERPC_SRVSVC_NETRDFSCREATELOCALPARTITION, api_srvsvc_NETRDFSCREATELOCALPARTITION},
- {"SRVSVC_NETRDFSDELETELOCALPARTITION", DCERPC_SRVSVC_NETRDFSDELETELOCALPARTITION, api_srvsvc_NETRDFSDELETELOCALPARTITION},
- {"SRVSVC_NETRDFSSETLOCALVOLUMESTATE", DCERPC_SRVSVC_NETRDFSSETLOCALVOLUMESTATE, api_srvsvc_NETRDFSSETLOCALVOLUMESTATE},
- {"SRVSVC_NETRDFSSETSERVERINFO", DCERPC_SRVSVC_NETRDFSSETSERVERINFO, api_srvsvc_NETRDFSSETSERVERINFO},
- {"SRVSVC_NETRDFSCREATEEXITPOINT", DCERPC_SRVSVC_NETRDFSCREATEEXITPOINT, api_srvsvc_NETRDFSCREATEEXITPOINT},
- {"SRVSVC_NETRDFSDELETEEXITPOINT", DCERPC_SRVSVC_NETRDFSDELETEEXITPOINT, api_srvsvc_NETRDFSDELETEEXITPOINT},
- {"SRVSVC_NETRDFSMODIFYPREFIX", DCERPC_SRVSVC_NETRDFSMODIFYPREFIX, api_srvsvc_NETRDFSMODIFYPREFIX},
- {"SRVSVC_NETRDFSFIXLOCALVOLUME", DCERPC_SRVSVC_NETRDFSFIXLOCALVOLUME, api_srvsvc_NETRDFSFIXLOCALVOLUME},
- {"SRVSVC_NETRDFSMANAGERREPORTSITEINFO", DCERPC_SRVSVC_NETRDFSMANAGERREPORTSITEINFO, api_srvsvc_NETRDFSMANAGERREPORTSITEINFO},
- {"SRVSVC_NETRSERVERTRANSPORTDELEX", DCERPC_SRVSVC_NETRSERVERTRANSPORTDELEX, api_srvsvc_NETRSERVERTRANSPORTDELEX},
-};
-
-void srvsvc_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_srvsvc_cmds;
- *n_fns = sizeof(api_srvsvc_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_srvsvc_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "srvsvc", "srvsvc", api_srvsvc_cmds, sizeof(api_srvsvc_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_srvsvc.h b/source/librpc/gen_ndr/srv_srvsvc.h
deleted file mode 100644
index 1e1ebb1904a..00000000000
--- a/source/librpc/gen_ndr/srv_srvsvc.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "librpc/gen_ndr/ndr_srvsvc.h"
-#ifndef __SRV_SRVSVC__
-#define __SRV_SRVSVC__
-WERROR _srvsvc_NetCharDevEnum(pipes_struct *p, struct srvsvc_NetCharDevEnum *r);
-WERROR _srvsvc_NetCharDevGetInfo(pipes_struct *p, struct srvsvc_NetCharDevGetInfo *r);
-WERROR _srvsvc_NetCharDevControl(pipes_struct *p, struct srvsvc_NetCharDevControl *r);
-WERROR _srvsvc_NetCharDevQEnum(pipes_struct *p, struct srvsvc_NetCharDevQEnum *r);
-WERROR _srvsvc_NetCharDevQGetInfo(pipes_struct *p, struct srvsvc_NetCharDevQGetInfo *r);
-WERROR _srvsvc_NetCharDevQSetInfo(pipes_struct *p, struct srvsvc_NetCharDevQSetInfo *r);
-WERROR _srvsvc_NetCharDevQPurge(pipes_struct *p, struct srvsvc_NetCharDevQPurge *r);
-WERROR _srvsvc_NetCharDevQPurgeSelf(pipes_struct *p, struct srvsvc_NetCharDevQPurgeSelf *r);
-WERROR _srvsvc_NetConnEnum(pipes_struct *p, struct srvsvc_NetConnEnum *r);
-WERROR _srvsvc_NetFileEnum(pipes_struct *p, struct srvsvc_NetFileEnum *r);
-WERROR _srvsvc_NetFileGetInfo(pipes_struct *p, struct srvsvc_NetFileGetInfo *r);
-WERROR _srvsvc_NetFileClose(pipes_struct *p, struct srvsvc_NetFileClose *r);
-WERROR _srvsvc_NetSessEnum(pipes_struct *p, struct srvsvc_NetSessEnum *r);
-WERROR _srvsvc_NetSessDel(pipes_struct *p, struct srvsvc_NetSessDel *r);
-WERROR _srvsvc_NetShareAdd(pipes_struct *p, struct srvsvc_NetShareAdd *r);
-WERROR _srvsvc_NetShareEnumAll(pipes_struct *p, struct srvsvc_NetShareEnumAll *r);
-WERROR _srvsvc_NetShareGetInfo(pipes_struct *p, struct srvsvc_NetShareGetInfo *r);
-WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r);
-WERROR _srvsvc_NetShareDel(pipes_struct *p, struct srvsvc_NetShareDel *r);
-WERROR _srvsvc_NetShareDelSticky(pipes_struct *p, struct srvsvc_NetShareDelSticky *r);
-WERROR _srvsvc_NetShareCheck(pipes_struct *p, struct srvsvc_NetShareCheck *r);
-WERROR _srvsvc_NetSrvGetInfo(pipes_struct *p, struct srvsvc_NetSrvGetInfo *r);
-WERROR _srvsvc_NetSrvSetInfo(pipes_struct *p, struct srvsvc_NetSrvSetInfo *r);
-WERROR _srvsvc_NetDiskEnum(pipes_struct *p, struct srvsvc_NetDiskEnum *r);
-WERROR _srvsvc_NetServerStatisticsGet(pipes_struct *p, struct srvsvc_NetServerStatisticsGet *r);
-WERROR _srvsvc_NetTransportAdd(pipes_struct *p, struct srvsvc_NetTransportAdd *r);
-WERROR _srvsvc_NetTransportEnum(pipes_struct *p, struct srvsvc_NetTransportEnum *r);
-WERROR _srvsvc_NetTransportDel(pipes_struct *p, struct srvsvc_NetTransportDel *r);
-WERROR _srvsvc_NetRemoteTOD(pipes_struct *p, struct srvsvc_NetRemoteTOD *r);
-WERROR _srvsvc_NetSetServiceBits(pipes_struct *p, struct srvsvc_NetSetServiceBits *r);
-WERROR _srvsvc_NetPathType(pipes_struct *p, struct srvsvc_NetPathType *r);
-WERROR _srvsvc_NetPathCanonicalize(pipes_struct *p, struct srvsvc_NetPathCanonicalize *r);
-WERROR _srvsvc_NetPathCompare(pipes_struct *p, struct srvsvc_NetPathCompare *r);
-WERROR _srvsvc_NetNameValidate(pipes_struct *p, struct srvsvc_NetNameValidate *r);
-WERROR _srvsvc_NETRPRNAMECANONICALIZE(pipes_struct *p, struct srvsvc_NETRPRNAMECANONICALIZE *r);
-WERROR _srvsvc_NetPRNameCompare(pipes_struct *p, struct srvsvc_NetPRNameCompare *r);
-WERROR _srvsvc_NetShareEnum(pipes_struct *p, struct srvsvc_NetShareEnum *r);
-WERROR _srvsvc_NetShareDelStart(pipes_struct *p, struct srvsvc_NetShareDelStart *r);
-WERROR _srvsvc_NetShareDelCommit(pipes_struct *p, struct srvsvc_NetShareDelCommit *r);
-WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p, struct srvsvc_NetGetFileSecurity *r);
-WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p, struct srvsvc_NetSetFileSecurity *r);
-WERROR _srvsvc_NetServerTransportAddEx(pipes_struct *p, struct srvsvc_NetServerTransportAddEx *r);
-WERROR _srvsvc_NetServerSetServiceBitsEx(pipes_struct *p, struct srvsvc_NetServerSetServiceBitsEx *r);
-WERROR _srvsvc_NETRDFSGETVERSION(pipes_struct *p, struct srvsvc_NETRDFSGETVERSION *r);
-WERROR _srvsvc_NETRDFSCREATELOCALPARTITION(pipes_struct *p, struct srvsvc_NETRDFSCREATELOCALPARTITION *r);
-WERROR _srvsvc_NETRDFSDELETELOCALPARTITION(pipes_struct *p, struct srvsvc_NETRDFSDELETELOCALPARTITION *r);
-WERROR _srvsvc_NETRDFSSETLOCALVOLUMESTATE(pipes_struct *p, struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r);
-WERROR _srvsvc_NETRDFSSETSERVERINFO(pipes_struct *p, struct srvsvc_NETRDFSSETSERVERINFO *r);
-WERROR _srvsvc_NETRDFSCREATEEXITPOINT(pipes_struct *p, struct srvsvc_NETRDFSCREATEEXITPOINT *r);
-WERROR _srvsvc_NETRDFSDELETEEXITPOINT(pipes_struct *p, struct srvsvc_NETRDFSDELETEEXITPOINT *r);
-WERROR _srvsvc_NETRDFSMODIFYPREFIX(pipes_struct *p, struct srvsvc_NETRDFSMODIFYPREFIX *r);
-WERROR _srvsvc_NETRDFSFIXLOCALVOLUME(pipes_struct *p, struct srvsvc_NETRDFSFIXLOCALVOLUME *r);
-WERROR _srvsvc_NETRDFSMANAGERREPORTSITEINFO(pipes_struct *p, struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r);
-WERROR _srvsvc_NETRSERVERTRANSPORTDELEX(pipes_struct *p, struct srvsvc_NETRSERVERTRANSPORTDELEX *r);
-void srvsvc_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_srvsvc_init(void);
-#endif /* __SRV_SRVSVC__ */
diff --git a/source/librpc/gen_ndr/srv_svcctl.c b/source/librpc/gen_ndr/srv_svcctl.c
deleted file mode 100644
index 0211baa5836..00000000000
--- a/source/librpc/gen_ndr/srv_svcctl.c
+++ /dev/null
@@ -1,3212 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_svcctl.h"
-
-static BOOL api_svcctl_CloseServiceHandle(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_CloseServiceHandle r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_CloseServiceHandle");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_CloseServiceHandle(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_CloseServiceHandle, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = r.in.handle;
- r.out.result = _svcctl_CloseServiceHandle(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_CloseServiceHandle, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_CloseServiceHandle(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_ControlService(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_ControlService r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_ControlService");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_ControlService(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ControlService, &r);
-
- ZERO_STRUCT(r.out);
- r.out.service_status = talloc_zero(mem_ctx, struct SERVICE_STATUS);
- if (r.out.service_status == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_ControlService(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ControlService, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_ControlService(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_DeleteService(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_DeleteService r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_DeleteService");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_DeleteService(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_DeleteService, &r);
-
- r.out.result = _svcctl_DeleteService(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_DeleteService, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_DeleteService(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_LockServiceDatabase(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_LockServiceDatabase r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_LockServiceDatabase");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_LockServiceDatabase(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_LockServiceDatabase, &r);
-
- ZERO_STRUCT(r.out);
- r.out.lock = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.lock == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_LockServiceDatabase(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_LockServiceDatabase, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_LockServiceDatabase(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceObjectSecurity(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceObjectSecurity r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceObjectSecurity");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceObjectSecurity(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceObjectSecurity, &r);
-
- r.out.result = _svcctl_QueryServiceObjectSecurity(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceObjectSecurity, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceObjectSecurity(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_SetServiceObjectSecurity(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_SetServiceObjectSecurity r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_SetServiceObjectSecurity");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_SetServiceObjectSecurity(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SetServiceObjectSecurity, &r);
-
- r.out.result = _svcctl_SetServiceObjectSecurity(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SetServiceObjectSecurity, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_SetServiceObjectSecurity(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceStatus(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceStatus r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceStatus");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceStatus(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceStatus, &r);
-
- ZERO_STRUCT(r.out);
- r.out.service_status = talloc_zero(mem_ctx, struct SERVICE_STATUS);
- if (r.out.service_status == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceStatus(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatus, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceStatus(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_SetServiceStatus(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_SetServiceStatus r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_SetServiceStatus");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_SetServiceStatus(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SetServiceStatus, &r);
-
- r.out.result = _svcctl_SetServiceStatus(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SetServiceStatus, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_SetServiceStatus(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_UnlockServiceDatabase(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_UnlockServiceDatabase r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_UnlockServiceDatabase");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_UnlockServiceDatabase(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_UnlockServiceDatabase, &r);
-
- ZERO_STRUCT(r.out);
- r.out.lock = r.in.lock;
- r.out.result = _svcctl_UnlockServiceDatabase(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_UnlockServiceDatabase, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_UnlockServiceDatabase(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_NotifyBootConfigStatus(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_NotifyBootConfigStatus r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_NotifyBootConfigStatus");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_NotifyBootConfigStatus(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_NotifyBootConfigStatus, &r);
-
- r.out.result = _svcctl_NotifyBootConfigStatus(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_NotifyBootConfigStatus, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_NotifyBootConfigStatus(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_SCSetServiceBitsW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_SCSetServiceBitsW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_SCSetServiceBitsW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_SCSetServiceBitsW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SCSetServiceBitsW, &r);
-
- r.out.result = _svcctl_SCSetServiceBitsW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_SCSetServiceBitsW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_ChangeServiceConfigW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_ChangeServiceConfigW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_ChangeServiceConfigW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_ChangeServiceConfigW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfigW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.tag_id = talloc_zero(mem_ctx, uint32_t);
- if (r.out.tag_id == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_ChangeServiceConfigW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_ChangeServiceConfigW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_CreateServiceW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_CreateServiceW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_CreateServiceW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_CreateServiceW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_CreateServiceW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.TagId = r.in.TagId;
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_CreateServiceW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_CreateServiceW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_EnumDependentServicesW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_EnumDependentServicesW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_EnumDependentServicesW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_EnumDependentServicesW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumDependentServicesW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.service_status = talloc_zero(mem_ctx, struct ENUM_SERVICE_STATUS);
- if (r.out.service_status == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.services_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.services_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_EnumDependentServicesW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_EnumDependentServicesW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_EnumServicesStatusW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_EnumServicesStatusW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_EnumServicesStatusW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_EnumServicesStatusW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.service = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.service == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.services_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.services_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _svcctl_EnumServicesStatusW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_EnumServicesStatusW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_OpenSCManagerW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_OpenSCManagerW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_OpenSCManagerW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_OpenSCManagerW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenSCManagerW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_OpenSCManagerW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_OpenSCManagerW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_OpenServiceW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_OpenServiceW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_OpenServiceW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_OpenServiceW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenServiceW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_OpenServiceW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_OpenServiceW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceConfigW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceConfigW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceConfigW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceConfigW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfigW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.query = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.query == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceConfigW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceConfigW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceLockStatusW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceLockStatusW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceLockStatusW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceLockStatusW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceLockStatusW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.lock_status = talloc_zero(mem_ctx, struct SERVICE_LOCK_STATUS);
- if (r.out.lock_status == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.required_buf_size = talloc_zero(mem_ctx, uint32_t);
- if (r.out.required_buf_size == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceLockStatusW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceLockStatusW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_StartServiceW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_StartServiceW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_StartServiceW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_StartServiceW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_StartServiceW, &r);
-
- r.out.result = _svcctl_StartServiceW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_StartServiceW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_StartServiceW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_GetServiceDisplayNameW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_GetServiceDisplayNameW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_GetServiceDisplayNameW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_GetServiceDisplayNameW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.display_name = talloc_zero(mem_ctx, const char *);
- if (r.out.display_name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.display_name_length = r.in.display_name_length;
- r.out.result = _svcctl_GetServiceDisplayNameW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_GetServiceDisplayNameW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_GetServiceKeyNameW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_GetServiceKeyNameW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_GetServiceKeyNameW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_GetServiceKeyNameW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.key_name = talloc_zero(mem_ctx, const char *);
- if (r.out.key_name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.display_name_length = r.in.display_name_length;
- r.out.result = _svcctl_GetServiceKeyNameW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_GetServiceKeyNameW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_SCSetServiceBitsA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_SCSetServiceBitsA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_SCSetServiceBitsA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_SCSetServiceBitsA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SCSetServiceBitsA, &r);
-
- r.out.result = _svcctl_SCSetServiceBitsA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_SCSetServiceBitsA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_ChangeServiceConfigA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_ChangeServiceConfigA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_ChangeServiceConfigA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_ChangeServiceConfigA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfigA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.tag_id = talloc_zero(mem_ctx, uint32_t);
- if (r.out.tag_id == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_ChangeServiceConfigA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_ChangeServiceConfigA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_CreateServiceA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_CreateServiceA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_CreateServiceA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_CreateServiceA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_CreateServiceA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.TagId = talloc_zero(mem_ctx, uint32_t);
- if (r.out.TagId == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_CreateServiceA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_CreateServiceA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_EnumDependentServicesA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_EnumDependentServicesA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_EnumDependentServicesA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_EnumDependentServicesA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumDependentServicesA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.service_status = talloc_zero(mem_ctx, struct ENUM_SERVICE_STATUS);
- if (r.out.service_status == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.services_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.services_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_EnumDependentServicesA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_EnumDependentServicesA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_EnumServicesStatusA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_EnumServicesStatusA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_EnumServicesStatusA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_EnumServicesStatusA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.service = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.service == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.services_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.services_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.result = _svcctl_EnumServicesStatusA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_EnumServicesStatusA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_OpenSCManagerA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_OpenSCManagerA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_OpenSCManagerA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_OpenSCManagerA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenSCManagerA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_OpenSCManagerA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_OpenSCManagerA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_OpenServiceA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_OpenServiceA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_OpenServiceA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_OpenServiceA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_OpenServiceA, &r);
-
- r.out.result = _svcctl_OpenServiceA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_OpenServiceA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceConfigA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceConfigA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceConfigA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceConfigA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfigA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.query = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.query == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceConfigA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceConfigA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceLockStatusA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceLockStatusA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceLockStatusA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceLockStatusA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceLockStatusA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.lock_status = talloc_zero(mem_ctx, struct SERVICE_LOCK_STATUS);
- if (r.out.lock_status == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.required_buf_size = talloc_zero(mem_ctx, uint32_t);
- if (r.out.required_buf_size == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceLockStatusA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceLockStatusA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_StartServiceA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_StartServiceA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_StartServiceA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_StartServiceA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_StartServiceA, &r);
-
- r.out.result = _svcctl_StartServiceA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_StartServiceA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_StartServiceA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_GetServiceDisplayNameA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_GetServiceDisplayNameA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_GetServiceDisplayNameA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_GetServiceDisplayNameA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.display_name = talloc_zero(mem_ctx, const char *);
- if (r.out.display_name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.display_name_length = r.in.display_name_length;
- r.out.result = _svcctl_GetServiceDisplayNameA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_GetServiceDisplayNameA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_GetServiceKeyNameA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_GetServiceKeyNameA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_GetServiceKeyNameA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_GetServiceKeyNameA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.key_name = talloc_zero(mem_ctx, const char *);
- if (r.out.key_name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.display_name_length = r.in.display_name_length;
- r.out.result = _svcctl_GetServiceKeyNameA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_GetServiceKeyNameA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_GetCurrentGroupeStateW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_GetCurrentGroupeStateW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_GetCurrentGroupeStateW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_GetCurrentGroupeStateW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_GetCurrentGroupeStateW, &r);
-
- r.out.result = _svcctl_GetCurrentGroupeStateW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_GetCurrentGroupeStateW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_GetCurrentGroupeStateW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_EnumServiceGroupW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_EnumServiceGroupW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_EnumServiceGroupW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_EnumServiceGroupW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_EnumServiceGroupW, &r);
-
- r.out.result = _svcctl_EnumServiceGroupW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_EnumServiceGroupW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_EnumServiceGroupW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_ChangeServiceConfig2A(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_ChangeServiceConfig2A r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_ChangeServiceConfig2A");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_ChangeServiceConfig2A(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfig2A, &r);
-
- r.out.result = _svcctl_ChangeServiceConfig2A(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2A, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_ChangeServiceConfig2A(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_ChangeServiceConfig2W(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_ChangeServiceConfig2W r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_ChangeServiceConfig2W");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_ChangeServiceConfig2W(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfig2W, &r);
-
- r.out.result = _svcctl_ChangeServiceConfig2W(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2W, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_ChangeServiceConfig2W(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceConfig2A(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceConfig2A r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceConfig2A");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceConfig2A(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfig2A, &r);
-
- ZERO_STRUCT(r.out);
- r.out.buffer = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.buffer == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceConfig2A(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2A, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceConfig2A(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceConfig2W(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceConfig2W r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceConfig2W");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceConfig2W(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfig2W, &r);
-
- ZERO_STRUCT(r.out);
- r.out.buffer = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.buffer == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceConfig2W(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2W, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceConfig2W(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_QueryServiceStatusEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_QueryServiceStatusEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_QueryServiceStatusEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_QueryServiceStatusEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_QueryServiceStatusEx, &r);
-
- ZERO_STRUCT(r.out);
- r.out.buffer = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.buffer == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _svcctl_QueryServiceStatusEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatusEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_QueryServiceStatusEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_EnumServicesStatusExA(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct EnumServicesStatusExA r;
- TALLOC_CTX *mem_ctx = talloc_init("api_EnumServicesStatusExA");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_EnumServicesStatusExA(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(EnumServicesStatusExA, &r);
-
- ZERO_STRUCT(r.out);
- r.out.services = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.services == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.service_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.service_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.group_name = talloc_zero(mem_ctx, const char *);
- if (r.out.group_name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _EnumServicesStatusExA(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(EnumServicesStatusExA, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_EnumServicesStatusExA(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_EnumServicesStatusExW(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct EnumServicesStatusExW r;
- TALLOC_CTX *mem_ctx = talloc_init("api_EnumServicesStatusExW");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_EnumServicesStatusExW(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(EnumServicesStatusExW, &r);
-
- ZERO_STRUCT(r.out);
- r.out.services = talloc_zero_array(mem_ctx, uint8_t, r.in.buf_size);
- if (r.out.services == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.bytes_needed = talloc_zero(mem_ctx, uint32_t);
- if (r.out.bytes_needed == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.service_returned = talloc_zero(mem_ctx, uint32_t);
- if (r.out.service_returned == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.resume_handle = r.in.resume_handle;
- r.out.group_name = talloc_zero(mem_ctx, const char *);
- if (r.out.group_name == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _EnumServicesStatusExW(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(EnumServicesStatusExW, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_EnumServicesStatusExW(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_svcctl_SCSendTSMessage(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct svcctl_SCSendTSMessage r;
- TALLOC_CTX *mem_ctx = talloc_init("api_svcctl_SCSendTSMessage");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_svcctl_SCSendTSMessage(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(svcctl_SCSendTSMessage, &r);
-
- r.out.result = _svcctl_SCSendTSMessage(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(svcctl_SCSendTSMessage, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_svcctl_SCSendTSMessage(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_svcctl_cmds[] =
-{
- {"SVCCTL_CLOSESERVICEHANDLE", DCERPC_SVCCTL_CLOSESERVICEHANDLE, api_svcctl_CloseServiceHandle},
- {"SVCCTL_CONTROLSERVICE", DCERPC_SVCCTL_CONTROLSERVICE, api_svcctl_ControlService},
- {"SVCCTL_DELETESERVICE", DCERPC_SVCCTL_DELETESERVICE, api_svcctl_DeleteService},
- {"SVCCTL_LOCKSERVICEDATABASE", DCERPC_SVCCTL_LOCKSERVICEDATABASE, api_svcctl_LockServiceDatabase},
- {"SVCCTL_QUERYSERVICEOBJECTSECURITY", DCERPC_SVCCTL_QUERYSERVICEOBJECTSECURITY, api_svcctl_QueryServiceObjectSecurity},
- {"SVCCTL_SETSERVICEOBJECTSECURITY", DCERPC_SVCCTL_SETSERVICEOBJECTSECURITY, api_svcctl_SetServiceObjectSecurity},
- {"SVCCTL_QUERYSERVICESTATUS", DCERPC_SVCCTL_QUERYSERVICESTATUS, api_svcctl_QueryServiceStatus},
- {"SVCCTL_SETSERVICESTATUS", DCERPC_SVCCTL_SETSERVICESTATUS, api_svcctl_SetServiceStatus},
- {"SVCCTL_UNLOCKSERVICEDATABASE", DCERPC_SVCCTL_UNLOCKSERVICEDATABASE, api_svcctl_UnlockServiceDatabase},
- {"SVCCTL_NOTIFYBOOTCONFIGSTATUS", DCERPC_SVCCTL_NOTIFYBOOTCONFIGSTATUS, api_svcctl_NotifyBootConfigStatus},
- {"SVCCTL_SCSETSERVICEBITSW", DCERPC_SVCCTL_SCSETSERVICEBITSW, api_svcctl_SCSetServiceBitsW},
- {"SVCCTL_CHANGESERVICECONFIGW", DCERPC_SVCCTL_CHANGESERVICECONFIGW, api_svcctl_ChangeServiceConfigW},
- {"SVCCTL_CREATESERVICEW", DCERPC_SVCCTL_CREATESERVICEW, api_svcctl_CreateServiceW},
- {"SVCCTL_ENUMDEPENDENTSERVICESW", DCERPC_SVCCTL_ENUMDEPENDENTSERVICESW, api_svcctl_EnumDependentServicesW},
- {"SVCCTL_ENUMSERVICESSTATUSW", DCERPC_SVCCTL_ENUMSERVICESSTATUSW, api_svcctl_EnumServicesStatusW},
- {"SVCCTL_OPENSCMANAGERW", DCERPC_SVCCTL_OPENSCMANAGERW, api_svcctl_OpenSCManagerW},
- {"SVCCTL_OPENSERVICEW", DCERPC_SVCCTL_OPENSERVICEW, api_svcctl_OpenServiceW},
- {"SVCCTL_QUERYSERVICECONFIGW", DCERPC_SVCCTL_QUERYSERVICECONFIGW, api_svcctl_QueryServiceConfigW},
- {"SVCCTL_QUERYSERVICELOCKSTATUSW", DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSW, api_svcctl_QueryServiceLockStatusW},
- {"SVCCTL_STARTSERVICEW", DCERPC_SVCCTL_STARTSERVICEW, api_svcctl_StartServiceW},
- {"SVCCTL_GETSERVICEDISPLAYNAMEW", DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEW, api_svcctl_GetServiceDisplayNameW},
- {"SVCCTL_GETSERVICEKEYNAMEW", DCERPC_SVCCTL_GETSERVICEKEYNAMEW, api_svcctl_GetServiceKeyNameW},
- {"SVCCTL_SCSETSERVICEBITSA", DCERPC_SVCCTL_SCSETSERVICEBITSA, api_svcctl_SCSetServiceBitsA},
- {"SVCCTL_CHANGESERVICECONFIGA", DCERPC_SVCCTL_CHANGESERVICECONFIGA, api_svcctl_ChangeServiceConfigA},
- {"SVCCTL_CREATESERVICEA", DCERPC_SVCCTL_CREATESERVICEA, api_svcctl_CreateServiceA},
- {"SVCCTL_ENUMDEPENDENTSERVICESA", DCERPC_SVCCTL_ENUMDEPENDENTSERVICESA, api_svcctl_EnumDependentServicesA},
- {"SVCCTL_ENUMSERVICESSTATUSA", DCERPC_SVCCTL_ENUMSERVICESSTATUSA, api_svcctl_EnumServicesStatusA},
- {"SVCCTL_OPENSCMANAGERA", DCERPC_SVCCTL_OPENSCMANAGERA, api_svcctl_OpenSCManagerA},
- {"SVCCTL_OPENSERVICEA", DCERPC_SVCCTL_OPENSERVICEA, api_svcctl_OpenServiceA},
- {"SVCCTL_QUERYSERVICECONFIGA", DCERPC_SVCCTL_QUERYSERVICECONFIGA, api_svcctl_QueryServiceConfigA},
- {"SVCCTL_QUERYSERVICELOCKSTATUSA", DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSA, api_svcctl_QueryServiceLockStatusA},
- {"SVCCTL_STARTSERVICEA", DCERPC_SVCCTL_STARTSERVICEA, api_svcctl_StartServiceA},
- {"SVCCTL_GETSERVICEDISPLAYNAMEA", DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEA, api_svcctl_GetServiceDisplayNameA},
- {"SVCCTL_GETSERVICEKEYNAMEA", DCERPC_SVCCTL_GETSERVICEKEYNAMEA, api_svcctl_GetServiceKeyNameA},
- {"SVCCTL_GETCURRENTGROUPESTATEW", DCERPC_SVCCTL_GETCURRENTGROUPESTATEW, api_svcctl_GetCurrentGroupeStateW},
- {"SVCCTL_ENUMSERVICEGROUPW", DCERPC_SVCCTL_ENUMSERVICEGROUPW, api_svcctl_EnumServiceGroupW},
- {"SVCCTL_CHANGESERVICECONFIG2A", DCERPC_SVCCTL_CHANGESERVICECONFIG2A, api_svcctl_ChangeServiceConfig2A},
- {"SVCCTL_CHANGESERVICECONFIG2W", DCERPC_SVCCTL_CHANGESERVICECONFIG2W, api_svcctl_ChangeServiceConfig2W},
- {"SVCCTL_QUERYSERVICECONFIG2A", DCERPC_SVCCTL_QUERYSERVICECONFIG2A, api_svcctl_QueryServiceConfig2A},
- {"SVCCTL_QUERYSERVICECONFIG2W", DCERPC_SVCCTL_QUERYSERVICECONFIG2W, api_svcctl_QueryServiceConfig2W},
- {"SVCCTL_QUERYSERVICESTATUSEX", DCERPC_SVCCTL_QUERYSERVICESTATUSEX, api_svcctl_QueryServiceStatusEx},
- {"ENUMSERVICESSTATUSEXA", DCERPC_ENUMSERVICESSTATUSEXA, api_EnumServicesStatusExA},
- {"ENUMSERVICESSTATUSEXW", DCERPC_ENUMSERVICESSTATUSEXW, api_EnumServicesStatusExW},
- {"SVCCTL_SCSENDTSMESSAGE", DCERPC_SVCCTL_SCSENDTSMESSAGE, api_svcctl_SCSendTSMessage},
-};
-
-void svcctl_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_svcctl_cmds;
- *n_fns = sizeof(api_svcctl_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_svcctl_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "svcctl", "svcctl", api_svcctl_cmds, sizeof(api_svcctl_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_svcctl.h b/source/librpc/gen_ndr/srv_svcctl.h
deleted file mode 100644
index ca63ebe9708..00000000000
--- a/source/librpc/gen_ndr/srv_svcctl.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "librpc/gen_ndr/ndr_svcctl.h"
-#ifndef __SRV_SVCCTL__
-#define __SRV_SVCCTL__
-WERROR _svcctl_CloseServiceHandle(pipes_struct *p, struct svcctl_CloseServiceHandle *r);
-WERROR _svcctl_ControlService(pipes_struct *p, struct svcctl_ControlService *r);
-WERROR _svcctl_DeleteService(pipes_struct *p, struct svcctl_DeleteService *r);
-WERROR _svcctl_LockServiceDatabase(pipes_struct *p, struct svcctl_LockServiceDatabase *r);
-WERROR _svcctl_QueryServiceObjectSecurity(pipes_struct *p, struct svcctl_QueryServiceObjectSecurity *r);
-WERROR _svcctl_SetServiceObjectSecurity(pipes_struct *p, struct svcctl_SetServiceObjectSecurity *r);
-WERROR _svcctl_QueryServiceStatus(pipes_struct *p, struct svcctl_QueryServiceStatus *r);
-WERROR _svcctl_SetServiceStatus(pipes_struct *p, struct svcctl_SetServiceStatus *r);
-WERROR _svcctl_UnlockServiceDatabase(pipes_struct *p, struct svcctl_UnlockServiceDatabase *r);
-WERROR _svcctl_NotifyBootConfigStatus(pipes_struct *p, struct svcctl_NotifyBootConfigStatus *r);
-WERROR _svcctl_SCSetServiceBitsW(pipes_struct *p, struct svcctl_SCSetServiceBitsW *r);
-WERROR _svcctl_ChangeServiceConfigW(pipes_struct *p, struct svcctl_ChangeServiceConfigW *r);
-WERROR _svcctl_CreateServiceW(pipes_struct *p, struct svcctl_CreateServiceW *r);
-WERROR _svcctl_EnumDependentServicesW(pipes_struct *p, struct svcctl_EnumDependentServicesW *r);
-WERROR _svcctl_EnumServicesStatusW(pipes_struct *p, struct svcctl_EnumServicesStatusW *r);
-WERROR _svcctl_OpenSCManagerW(pipes_struct *p, struct svcctl_OpenSCManagerW *r);
-WERROR _svcctl_OpenServiceW(pipes_struct *p, struct svcctl_OpenServiceW *r);
-WERROR _svcctl_QueryServiceConfigW(pipes_struct *p, struct svcctl_QueryServiceConfigW *r);
-WERROR _svcctl_QueryServiceLockStatusW(pipes_struct *p, struct svcctl_QueryServiceLockStatusW *r);
-WERROR _svcctl_StartServiceW(pipes_struct *p, struct svcctl_StartServiceW *r);
-WERROR _svcctl_GetServiceDisplayNameW(pipes_struct *p, struct svcctl_GetServiceDisplayNameW *r);
-WERROR _svcctl_GetServiceKeyNameW(pipes_struct *p, struct svcctl_GetServiceKeyNameW *r);
-WERROR _svcctl_SCSetServiceBitsA(pipes_struct *p, struct svcctl_SCSetServiceBitsA *r);
-WERROR _svcctl_ChangeServiceConfigA(pipes_struct *p, struct svcctl_ChangeServiceConfigA *r);
-WERROR _svcctl_CreateServiceA(pipes_struct *p, struct svcctl_CreateServiceA *r);
-WERROR _svcctl_EnumDependentServicesA(pipes_struct *p, struct svcctl_EnumDependentServicesA *r);
-WERROR _svcctl_EnumServicesStatusA(pipes_struct *p, struct svcctl_EnumServicesStatusA *r);
-WERROR _svcctl_OpenSCManagerA(pipes_struct *p, struct svcctl_OpenSCManagerA *r);
-WERROR _svcctl_OpenServiceA(pipes_struct *p, struct svcctl_OpenServiceA *r);
-WERROR _svcctl_QueryServiceConfigA(pipes_struct *p, struct svcctl_QueryServiceConfigA *r);
-WERROR _svcctl_QueryServiceLockStatusA(pipes_struct *p, struct svcctl_QueryServiceLockStatusA *r);
-WERROR _svcctl_StartServiceA(pipes_struct *p, struct svcctl_StartServiceA *r);
-WERROR _svcctl_GetServiceDisplayNameA(pipes_struct *p, struct svcctl_GetServiceDisplayNameA *r);
-WERROR _svcctl_GetServiceKeyNameA(pipes_struct *p, struct svcctl_GetServiceKeyNameA *r);
-WERROR _svcctl_GetCurrentGroupeStateW(pipes_struct *p, struct svcctl_GetCurrentGroupeStateW *r);
-WERROR _svcctl_EnumServiceGroupW(pipes_struct *p, struct svcctl_EnumServiceGroupW *r);
-WERROR _svcctl_ChangeServiceConfig2A(pipes_struct *p, struct svcctl_ChangeServiceConfig2A *r);
-WERROR _svcctl_ChangeServiceConfig2W(pipes_struct *p, struct svcctl_ChangeServiceConfig2W *r);
-WERROR _svcctl_QueryServiceConfig2A(pipes_struct *p, struct svcctl_QueryServiceConfig2A *r);
-WERROR _svcctl_QueryServiceConfig2W(pipes_struct *p, struct svcctl_QueryServiceConfig2W *r);
-WERROR _svcctl_QueryServiceStatusEx(pipes_struct *p, struct svcctl_QueryServiceStatusEx *r);
-WERROR _EnumServicesStatusExA(pipes_struct *p, struct EnumServicesStatusExA *r);
-WERROR _EnumServicesStatusExW(pipes_struct *p, struct EnumServicesStatusExW *r);
-WERROR _svcctl_SCSendTSMessage(pipes_struct *p, struct svcctl_SCSendTSMessage *r);
-void svcctl_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_svcctl_init(void);
-#endif /* __SRV_SVCCTL__ */
diff --git a/source/librpc/gen_ndr/srv_unixinfo.c b/source/librpc/gen_ndr/srv_unixinfo.c
deleted file mode 100644
index 3fbe8158707..00000000000
--- a/source/librpc/gen_ndr/srv_unixinfo.c
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_unixinfo.h"
-
-static BOOL api_unixinfo_SidToUid(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct unixinfo_SidToUid r;
- TALLOC_CTX *mem_ctx = talloc_init("api_unixinfo_SidToUid");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_unixinfo_SidToUid(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_SidToUid, &r);
-
- ZERO_STRUCT(r.out);
- r.out.uid = talloc_zero(mem_ctx, uint64_t);
- if (r.out.uid == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _unixinfo_SidToUid(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_SidToUid, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_unixinfo_SidToUid(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_unixinfo_UidToSid(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct unixinfo_UidToSid r;
- TALLOC_CTX *mem_ctx = talloc_init("api_unixinfo_UidToSid");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_unixinfo_UidToSid(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_UidToSid, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sid = talloc_zero(mem_ctx, struct dom_sid);
- if (r.out.sid == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _unixinfo_UidToSid(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_UidToSid, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_unixinfo_UidToSid(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_unixinfo_SidToGid(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct unixinfo_SidToGid r;
- TALLOC_CTX *mem_ctx = talloc_init("api_unixinfo_SidToGid");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_unixinfo_SidToGid(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_SidToGid, &r);
-
- ZERO_STRUCT(r.out);
- r.out.gid = talloc_zero(mem_ctx, uint64_t);
- if (r.out.gid == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _unixinfo_SidToGid(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_SidToGid, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_unixinfo_SidToGid(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_unixinfo_GidToSid(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct unixinfo_GidToSid r;
- TALLOC_CTX *mem_ctx = talloc_init("api_unixinfo_GidToSid");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_unixinfo_GidToSid(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_GidToSid, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sid = talloc_zero(mem_ctx, struct dom_sid);
- if (r.out.sid == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _unixinfo_GidToSid(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_GidToSid, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_unixinfo_GidToSid(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_unixinfo_GetPWUid(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct unixinfo_GetPWUid r;
- TALLOC_CTX *mem_ctx = talloc_init("api_unixinfo_GetPWUid");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_unixinfo_GetPWUid(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(unixinfo_GetPWUid, &r);
-
- ZERO_STRUCT(r.out);
- r.out.count = r.in.count;
- r.out.infos = talloc_zero_array(mem_ctx, struct unixinfo_GetPWUidInfo, *r.in.count);
- if (r.out.infos == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _unixinfo_GetPWUid(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(unixinfo_GetPWUid, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_unixinfo_GetPWUid(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_unixinfo_cmds[] =
-{
- {"UNIXINFO_SIDTOUID", DCERPC_UNIXINFO_SIDTOUID, api_unixinfo_SidToUid},
- {"UNIXINFO_UIDTOSID", DCERPC_UNIXINFO_UIDTOSID, api_unixinfo_UidToSid},
- {"UNIXINFO_SIDTOGID", DCERPC_UNIXINFO_SIDTOGID, api_unixinfo_SidToGid},
- {"UNIXINFO_GIDTOSID", DCERPC_UNIXINFO_GIDTOSID, api_unixinfo_GidToSid},
- {"UNIXINFO_GETPWUID", DCERPC_UNIXINFO_GETPWUID, api_unixinfo_GetPWUid},
-};
-
-void unixinfo_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_unixinfo_cmds;
- *n_fns = sizeof(api_unixinfo_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_unixinfo_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "unixinfo", "unixinfo", api_unixinfo_cmds, sizeof(api_unixinfo_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_unixinfo.h b/source/librpc/gen_ndr/srv_unixinfo.h
deleted file mode 100644
index 6e5c033b619..00000000000
--- a/source/librpc/gen_ndr/srv_unixinfo.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "librpc/gen_ndr/ndr_unixinfo.h"
-#ifndef __SRV_UNIXINFO__
-#define __SRV_UNIXINFO__
-NTSTATUS _unixinfo_SidToUid(pipes_struct *p, struct unixinfo_SidToUid *r);
-NTSTATUS _unixinfo_UidToSid(pipes_struct *p, struct unixinfo_UidToSid *r);
-NTSTATUS _unixinfo_SidToGid(pipes_struct *p, struct unixinfo_SidToGid *r);
-NTSTATUS _unixinfo_GidToSid(pipes_struct *p, struct unixinfo_GidToSid *r);
-NTSTATUS _unixinfo_GetPWUid(pipes_struct *p, struct unixinfo_GetPWUid *r);
-void unixinfo_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_unixinfo_init(void);
-#endif /* __SRV_UNIXINFO__ */
diff --git a/source/librpc/gen_ndr/srv_winreg.c b/source/librpc/gen_ndr/srv_winreg.c
deleted file mode 100644
index 77b4c0ce58f..00000000000
--- a/source/librpc/gen_ndr/srv_winreg.c
+++ /dev/null
@@ -1,2457 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * server auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/srv_winreg.h"
-
-static BOOL api_winreg_OpenHKCR(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKCR r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKCR");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKCR(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKCR, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKCR(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKCR, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKCR(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKCU(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKCU r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKCU");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKCU(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKCU, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKCU(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKCU, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKCU(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKLM(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKLM r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKLM");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKLM(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKLM, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKLM(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKLM, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKLM(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKPD(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKPD r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPD");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKPD(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKPD, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKPD(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKPD, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKPD(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKU(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKU r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKU");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKU(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKU, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKU(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKU, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKU(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_CloseKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_CloseKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_CloseKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_CloseKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_CloseKey, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = r.in.handle;
- r.out.result = _winreg_CloseKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_CloseKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_CloseKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_CreateKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_CreateKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_CreateKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_CreateKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_CreateKey, &r);
-
- ZERO_STRUCT(r.out);
- r.out.new_handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.new_handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.action_taken = r.in.action_taken;
- r.out.result = _winreg_CreateKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_CreateKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_CreateKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_DeleteKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_DeleteKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_DeleteKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_DeleteKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_DeleteKey, &r);
-
- r.out.result = _winreg_DeleteKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_DeleteKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_DeleteKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_DeleteValue(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_DeleteValue r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_DeleteValue");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_DeleteValue(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_DeleteValue, &r);
-
- r.out.result = _winreg_DeleteValue(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_DeleteValue, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_DeleteValue(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_EnumKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_EnumKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_EnumKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_EnumKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_EnumKey, &r);
-
- ZERO_STRUCT(r.out);
- r.out.name = r.in.name;
- r.out.keyclass = r.in.keyclass;
- r.out.last_changed_time = r.in.last_changed_time;
- r.out.result = _winreg_EnumKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_EnumKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_EnumKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_EnumValue(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_EnumValue r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_EnumValue");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_EnumValue(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_EnumValue, &r);
-
- ZERO_STRUCT(r.out);
- r.out.name = r.in.name;
- r.out.type = r.in.type;
- r.out.value = r.in.value;
- r.out.size = r.in.size;
- r.out.length = r.in.length;
- r.out.result = _winreg_EnumValue(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_EnumValue, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_EnumValue(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_FlushKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_FlushKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_FlushKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_FlushKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_FlushKey, &r);
-
- r.out.result = _winreg_FlushKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_FlushKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_FlushKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_GetKeySecurity(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_GetKeySecurity r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_GetKeySecurity");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_GetKeySecurity(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_GetKeySecurity, &r);
-
- ZERO_STRUCT(r.out);
- r.out.sd = r.in.sd;
- r.out.result = _winreg_GetKeySecurity(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_GetKeySecurity, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_GetKeySecurity(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_LoadKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_LoadKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_LoadKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_LoadKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_LoadKey, &r);
-
- r.out.result = _winreg_LoadKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_LoadKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_LoadKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_NotifyChangeKeyValue(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_NotifyChangeKeyValue r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_NotifyChangeKeyValue");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_NotifyChangeKeyValue(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_NotifyChangeKeyValue, &r);
-
- r.out.result = _winreg_NotifyChangeKeyValue(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_NotifyChangeKeyValue, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_NotifyChangeKeyValue(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenKey, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_QueryInfoKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_QueryInfoKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryInfoKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_QueryInfoKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryInfoKey, &r);
-
- ZERO_STRUCT(r.out);
- r.out.classname = r.in.classname;
- r.out.num_subkeys = talloc_zero(mem_ctx, uint32_t);
- if (r.out.num_subkeys == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.max_subkeylen = talloc_zero(mem_ctx, uint32_t);
- if (r.out.max_subkeylen == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.max_classlen = talloc_zero(mem_ctx, uint32_t);
- if (r.out.max_classlen == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.num_values = talloc_zero(mem_ctx, uint32_t);
- if (r.out.num_values == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.max_valnamelen = talloc_zero(mem_ctx, uint32_t);
- if (r.out.max_valnamelen == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.max_valbufsize = talloc_zero(mem_ctx, uint32_t);
- if (r.out.max_valbufsize == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.secdescsize = talloc_zero(mem_ctx, uint32_t);
- if (r.out.secdescsize == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.last_changed_time = talloc_zero(mem_ctx, NTTIME);
- if (r.out.last_changed_time == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_QueryInfoKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryInfoKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_QueryInfoKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_QueryValue(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_QueryValue r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryValue");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_QueryValue(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryValue, &r);
-
- ZERO_STRUCT(r.out);
- r.out.type = r.in.type;
- r.out.data = r.in.data;
- r.out.data_size = r.in.data_size;
- r.out.value_length = r.in.value_length;
- r.out.result = _winreg_QueryValue(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryValue, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_QueryValue(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_ReplaceKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_ReplaceKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_ReplaceKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_ReplaceKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_ReplaceKey, &r);
-
- r.out.result = _winreg_ReplaceKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_ReplaceKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_ReplaceKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_RestoreKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_RestoreKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_RestoreKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_RestoreKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_RestoreKey, &r);
-
- r.out.result = _winreg_RestoreKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_RestoreKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_RestoreKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_SaveKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_SaveKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SaveKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_SaveKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SaveKey, &r);
-
- r.out.result = _winreg_SaveKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SaveKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_SaveKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_SetKeySecurity(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_SetKeySecurity r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SetKeySecurity");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_SetKeySecurity(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SetKeySecurity, &r);
-
- r.out.result = _winreg_SetKeySecurity(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SetKeySecurity, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_SetKeySecurity(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_SetValue(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_SetValue r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SetValue");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_SetValue(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SetValue, &r);
-
- r.out.result = _winreg_SetValue(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SetValue, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_SetValue(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_UnLoadKey(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_UnLoadKey r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_UnLoadKey");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_UnLoadKey(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_UnLoadKey, &r);
-
- r.out.result = _winreg_UnLoadKey(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_UnLoadKey, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_UnLoadKey(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_InitiateSystemShutdown(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_InitiateSystemShutdown r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_InitiateSystemShutdown");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_InitiateSystemShutdown(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdown, &r);
-
- r.out.result = _winreg_InitiateSystemShutdown(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdown, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_InitiateSystemShutdown(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_AbortSystemShutdown(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_AbortSystemShutdown r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_AbortSystemShutdown");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_AbortSystemShutdown(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_AbortSystemShutdown, &r);
-
- r.out.result = _winreg_AbortSystemShutdown(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_AbortSystemShutdown, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_AbortSystemShutdown(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_GetVersion(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_GetVersion r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_GetVersion");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_GetVersion(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_GetVersion, &r);
-
- ZERO_STRUCT(r.out);
- r.out.version = talloc_zero(mem_ctx, uint32_t);
- if (r.out.version == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_GetVersion(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_GetVersion, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_GetVersion(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKCC(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKCC r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKCC");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKCC(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKCC, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKCC(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKCC, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKCC(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKDD(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKDD r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKDD");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKDD(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKDD, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKDD(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKDD, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKDD(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_QueryMultipleValues(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_QueryMultipleValues r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryMultipleValues");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_QueryMultipleValues(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues, &r);
-
- ZERO_STRUCT(r.out);
- r.out.values = r.in.values;
- r.out.buffer = r.in.buffer;
- r.out.buffer_size = r.in.buffer_size;
- r.out.result = _winreg_QueryMultipleValues(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_QueryMultipleValues(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_InitiateSystemShutdownEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_InitiateSystemShutdownEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_InitiateSystemShutdownEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_InitiateSystemShutdownEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdownEx, &r);
-
- r.out.result = _winreg_InitiateSystemShutdownEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdownEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_InitiateSystemShutdownEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_SaveKeyEx(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_SaveKeyEx r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SaveKeyEx");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_SaveKeyEx(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_SaveKeyEx, &r);
-
- r.out.result = _winreg_SaveKeyEx(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_SaveKeyEx, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_SaveKeyEx(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKPT(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKPT r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPT");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKPT(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKPT, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKPT(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKPT, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKPT(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_OpenHKPN(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_OpenHKPN r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPN");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_OpenHKPN(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_OpenHKPN, &r);
-
- ZERO_STRUCT(r.out);
- r.out.handle = talloc_zero(mem_ctx, struct policy_handle);
- if (r.out.handle == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- r.out.result = _winreg_OpenHKPN(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_OpenHKPN, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_OpenHKPN(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-static BOOL api_winreg_QueryMultipleValues2(pipes_struct *p)
-{
- struct ndr_pull *pull;
- struct ndr_push *push;
- NTSTATUS status;
- DATA_BLOB blob;
- struct winreg_QueryMultipleValues2 r;
- TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryMultipleValues2");
-
- if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull = ndr_pull_init_blob(&blob, mem_ctx);
- if (pull == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = ndr_pull_winreg_QueryMultipleValues2(pull, NDR_IN, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues2, &r);
-
- r.out.result = _winreg_QueryMultipleValues2(p, &r);
-
- if (p->rng_fault_state) {
- talloc_free(mem_ctx);
- /* Return True here, srv_pipe_hnd.c will take care */
- return True;
- }
-
- if (DEBUGLEVEL >= 10)
- NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues2, &r);
-
- push = ndr_push_init_ctx(mem_ctx);
- if (push == NULL) {
- talloc_free(mem_ctx);
- return False;
- }
-
- status = ndr_push_winreg_QueryMultipleValues2(push, NDR_OUT, &r);
- if (NT_STATUS_IS_ERR(status)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- blob = ndr_push_blob(push);
- if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
- talloc_free(mem_ctx);
- return False;
- }
-
- talloc_free(mem_ctx);
-
- return True;
-}
-
-
-/* Tables */
-static struct api_struct api_winreg_cmds[] =
-{
- {"WINREG_OPENHKCR", DCERPC_WINREG_OPENHKCR, api_winreg_OpenHKCR},
- {"WINREG_OPENHKCU", DCERPC_WINREG_OPENHKCU, api_winreg_OpenHKCU},
- {"WINREG_OPENHKLM", DCERPC_WINREG_OPENHKLM, api_winreg_OpenHKLM},
- {"WINREG_OPENHKPD", DCERPC_WINREG_OPENHKPD, api_winreg_OpenHKPD},
- {"WINREG_OPENHKU", DCERPC_WINREG_OPENHKU, api_winreg_OpenHKU},
- {"WINREG_CLOSEKEY", DCERPC_WINREG_CLOSEKEY, api_winreg_CloseKey},
- {"WINREG_CREATEKEY", DCERPC_WINREG_CREATEKEY, api_winreg_CreateKey},
- {"WINREG_DELETEKEY", DCERPC_WINREG_DELETEKEY, api_winreg_DeleteKey},
- {"WINREG_DELETEVALUE", DCERPC_WINREG_DELETEVALUE, api_winreg_DeleteValue},
- {"WINREG_ENUMKEY", DCERPC_WINREG_ENUMKEY, api_winreg_EnumKey},
- {"WINREG_ENUMVALUE", DCERPC_WINREG_ENUMVALUE, api_winreg_EnumValue},
- {"WINREG_FLUSHKEY", DCERPC_WINREG_FLUSHKEY, api_winreg_FlushKey},
- {"WINREG_GETKEYSECURITY", DCERPC_WINREG_GETKEYSECURITY, api_winreg_GetKeySecurity},
- {"WINREG_LOADKEY", DCERPC_WINREG_LOADKEY, api_winreg_LoadKey},
- {"WINREG_NOTIFYCHANGEKEYVALUE", DCERPC_WINREG_NOTIFYCHANGEKEYVALUE, api_winreg_NotifyChangeKeyValue},
- {"WINREG_OPENKEY", DCERPC_WINREG_OPENKEY, api_winreg_OpenKey},
- {"WINREG_QUERYINFOKEY", DCERPC_WINREG_QUERYINFOKEY, api_winreg_QueryInfoKey},
- {"WINREG_QUERYVALUE", DCERPC_WINREG_QUERYVALUE, api_winreg_QueryValue},
- {"WINREG_REPLACEKEY", DCERPC_WINREG_REPLACEKEY, api_winreg_ReplaceKey},
- {"WINREG_RESTOREKEY", DCERPC_WINREG_RESTOREKEY, api_winreg_RestoreKey},
- {"WINREG_SAVEKEY", DCERPC_WINREG_SAVEKEY, api_winreg_SaveKey},
- {"WINREG_SETKEYSECURITY", DCERPC_WINREG_SETKEYSECURITY, api_winreg_SetKeySecurity},
- {"WINREG_SETVALUE", DCERPC_WINREG_SETVALUE, api_winreg_SetValue},
- {"WINREG_UNLOADKEY", DCERPC_WINREG_UNLOADKEY, api_winreg_UnLoadKey},
- {"WINREG_INITIATESYSTEMSHUTDOWN", DCERPC_WINREG_INITIATESYSTEMSHUTDOWN, api_winreg_InitiateSystemShutdown},
- {"WINREG_ABORTSYSTEMSHUTDOWN", DCERPC_WINREG_ABORTSYSTEMSHUTDOWN, api_winreg_AbortSystemShutdown},
- {"WINREG_GETVERSION", DCERPC_WINREG_GETVERSION, api_winreg_GetVersion},
- {"WINREG_OPENHKCC", DCERPC_WINREG_OPENHKCC, api_winreg_OpenHKCC},
- {"WINREG_OPENHKDD", DCERPC_WINREG_OPENHKDD, api_winreg_OpenHKDD},
- {"WINREG_QUERYMULTIPLEVALUES", DCERPC_WINREG_QUERYMULTIPLEVALUES, api_winreg_QueryMultipleValues},
- {"WINREG_INITIATESYSTEMSHUTDOWNEX", DCERPC_WINREG_INITIATESYSTEMSHUTDOWNEX, api_winreg_InitiateSystemShutdownEx},
- {"WINREG_SAVEKEYEX", DCERPC_WINREG_SAVEKEYEX, api_winreg_SaveKeyEx},
- {"WINREG_OPENHKPT", DCERPC_WINREG_OPENHKPT, api_winreg_OpenHKPT},
- {"WINREG_OPENHKPN", DCERPC_WINREG_OPENHKPN, api_winreg_OpenHKPN},
- {"WINREG_QUERYMULTIPLEVALUES2", DCERPC_WINREG_QUERYMULTIPLEVALUES2, api_winreg_QueryMultipleValues2},
-};
-
-void winreg_get_pipe_fns(struct api_struct **fns, int *n_fns)
-{
- *fns = api_winreg_cmds;
- *n_fns = sizeof(api_winreg_cmds) / sizeof(struct api_struct);
-}
-
-NTSTATUS rpc_winreg_init(void)
-{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "winreg", "winreg", api_winreg_cmds, sizeof(api_winreg_cmds) / sizeof(struct api_struct));
-}
diff --git a/source/librpc/gen_ndr/srv_winreg.h b/source/librpc/gen_ndr/srv_winreg.h
deleted file mode 100644
index decfb2589d2..00000000000
--- a/source/librpc/gen_ndr/srv_winreg.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "librpc/gen_ndr/ndr_winreg.h"
-#ifndef __SRV_WINREG__
-#define __SRV_WINREG__
-WERROR _winreg_OpenHKCR(pipes_struct *p, struct winreg_OpenHKCR *r);
-WERROR _winreg_OpenHKCU(pipes_struct *p, struct winreg_OpenHKCU *r);
-WERROR _winreg_OpenHKLM(pipes_struct *p, struct winreg_OpenHKLM *r);
-WERROR _winreg_OpenHKPD(pipes_struct *p, struct winreg_OpenHKPD *r);
-WERROR _winreg_OpenHKU(pipes_struct *p, struct winreg_OpenHKU *r);
-WERROR _winreg_CloseKey(pipes_struct *p, struct winreg_CloseKey *r);
-WERROR _winreg_CreateKey(pipes_struct *p, struct winreg_CreateKey *r);
-WERROR _winreg_DeleteKey(pipes_struct *p, struct winreg_DeleteKey *r);
-WERROR _winreg_DeleteValue(pipes_struct *p, struct winreg_DeleteValue *r);
-WERROR _winreg_EnumKey(pipes_struct *p, struct winreg_EnumKey *r);
-WERROR _winreg_EnumValue(pipes_struct *p, struct winreg_EnumValue *r);
-WERROR _winreg_FlushKey(pipes_struct *p, struct winreg_FlushKey *r);
-WERROR _winreg_GetKeySecurity(pipes_struct *p, struct winreg_GetKeySecurity *r);
-WERROR _winreg_LoadKey(pipes_struct *p, struct winreg_LoadKey *r);
-WERROR _winreg_NotifyChangeKeyValue(pipes_struct *p, struct winreg_NotifyChangeKeyValue *r);
-WERROR _winreg_OpenKey(pipes_struct *p, struct winreg_OpenKey *r);
-WERROR _winreg_QueryInfoKey(pipes_struct *p, struct winreg_QueryInfoKey *r);
-WERROR _winreg_QueryValue(pipes_struct *p, struct winreg_QueryValue *r);
-WERROR _winreg_ReplaceKey(pipes_struct *p, struct winreg_ReplaceKey *r);
-WERROR _winreg_RestoreKey(pipes_struct *p, struct winreg_RestoreKey *r);
-WERROR _winreg_SaveKey(pipes_struct *p, struct winreg_SaveKey *r);
-WERROR _winreg_SetKeySecurity(pipes_struct *p, struct winreg_SetKeySecurity *r);
-WERROR _winreg_SetValue(pipes_struct *p, struct winreg_SetValue *r);
-WERROR _winreg_UnLoadKey(pipes_struct *p, struct winreg_UnLoadKey *r);
-WERROR _winreg_InitiateSystemShutdown(pipes_struct *p, struct winreg_InitiateSystemShutdown *r);
-WERROR _winreg_AbortSystemShutdown(pipes_struct *p, struct winreg_AbortSystemShutdown *r);
-WERROR _winreg_GetVersion(pipes_struct *p, struct winreg_GetVersion *r);
-WERROR _winreg_OpenHKCC(pipes_struct *p, struct winreg_OpenHKCC *r);
-WERROR _winreg_OpenHKDD(pipes_struct *p, struct winreg_OpenHKDD *r);
-WERROR _winreg_QueryMultipleValues(pipes_struct *p, struct winreg_QueryMultipleValues *r);
-WERROR _winreg_InitiateSystemShutdownEx(pipes_struct *p, struct winreg_InitiateSystemShutdownEx *r);
-WERROR _winreg_SaveKeyEx(pipes_struct *p, struct winreg_SaveKeyEx *r);
-WERROR _winreg_OpenHKPT(pipes_struct *p, struct winreg_OpenHKPT *r);
-WERROR _winreg_OpenHKPN(pipes_struct *p, struct winreg_OpenHKPN *r);
-WERROR _winreg_QueryMultipleValues2(pipes_struct *p, struct winreg_QueryMultipleValues2 *r);
-void winreg_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_winreg_init(void);
-#endif /* __SRV_WINREG__ */
diff --git a/source/librpc/gen_ndr/srvsvc.h b/source/librpc/gen_ndr/srvsvc.h
index da9715072dc..a1519c3ba8a 100644
--- a/source/librpc/gen_ndr/srvsvc.h
+++ b/source/librpc/gen_ndr/srvsvc.h
@@ -1,7 +1,5 @@
/* header auto-generated by pidl */
-#include <stdint.h>
-
#include "librpc/gen_ndr/security.h"
#include "librpc/gen_ndr/svcctl.h"
#ifndef _HEADER_srvsvc
@@ -209,7 +207,6 @@ union srvsvc_NetSessCtr {
struct srvsvc_NetSessCtr502 *ctr502;/* [unique,case(502)] */
};
-#ifndef USE_UINT_ENUMS
enum srvsvc_ShareType {
STYPE_DISKTREE=0,
STYPE_DISKTREE_TEMPORARY=STYPE_DISKTREE|STYPE_TEMPORARY,
@@ -223,23 +220,7 @@ enum srvsvc_ShareType {
STYPE_IPC=3,
STYPE_IPC_TEMPORARY=STYPE_IPC|STYPE_TEMPORARY,
STYPE_IPC_HIDDEN=STYPE_IPC|STYPE_HIDDEN
-}
-#else
-enum srvsvc_ShareType { __donnot_use_enum_srvsvc_ShareType=0x7FFFFFFF}
-#define STYPE_DISKTREE ( 0 )
-#define STYPE_DISKTREE_TEMPORARY ( STYPE_DISKTREE|STYPE_TEMPORARY )
-#define STYPE_DISKTREE_HIDDEN ( STYPE_DISKTREE|STYPE_HIDDEN )
-#define STYPE_PRINTQ ( 1 )
-#define STYPE_PRINTQ_TEMPORARY ( STYPE_PRINTQ|STYPE_TEMPORARY )
-#define STYPE_PRINTQ_HIDDEN ( STYPE_PRINTQ|STYPE_HIDDEN )
-#define STYPE_DEVICE ( 2 )
-#define STYPE_DEVICE_TEMPORARY ( STYPE_DEVICE|STYPE_TEMPORARY )
-#define STYPE_DEVICE_HIDDEN ( STYPE_DEVICE|STYPE_HIDDEN )
-#define STYPE_IPC ( 3 )
-#define STYPE_IPC_TEMPORARY ( STYPE_IPC|STYPE_TEMPORARY )
-#define STYPE_IPC_HIDDEN ( STYPE_IPC|STYPE_HIDDEN )
-#endif
-;
+};
struct srvsvc_NetShareInfo0 {
const char *name;/* [unique,charset(UTF16)] */
@@ -320,8 +301,6 @@ struct srvsvc_NetShareCtr1004 {
#define SHARE_1005_IN_DFS ( 0x00000001 )
#define SHARE_1005_DFS_ROOT ( 0x00000002 )
-;
-
struct srvsvc_NetShareInfo1005 {
uint32_t dfs_flags;
};
@@ -381,23 +360,13 @@ union srvsvc_NetShareCtr {
struct srvsvc_NetShareCtr1501 *ctr1501;/* [unique,case(1501)] */
};
-#ifndef USE_UINT_ENUMS
enum srvsvc_PlatformId {
PLATFORM_ID_DOS=300,
PLATFORM_ID_OS2=400,
PLATFORM_ID_NT=500,
PLATFORM_ID_OSF=600,
PLATFORM_ID_VMS=700
-}
-#else
-enum srvsvc_PlatformId { __donnot_use_enum_srvsvc_PlatformId=0x7FFFFFFF}
-#define PLATFORM_ID_DOS ( 300 )
-#define PLATFORM_ID_OS2 ( 400 )
-#define PLATFORM_ID_NT ( 500 )
-#define PLATFORM_ID_OSF ( 600 )
-#define PLATFORM_ID_VMS ( 700 )
-#endif
-;
+};
struct srvsvc_NetSrvInfo100 {
enum srvsvc_PlatformId platform_id;
@@ -1009,16 +978,16 @@ union srvsvc_NetTransportInfo {
struct srvsvc_NetCharDevEnum {
struct {
const char *server_unc;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetCharDevCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetCharDevCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1059,16 +1028,16 @@ struct srvsvc_NetCharDevQEnum {
struct {
const char *server_unc;/* [unique,charset(UTF16)] */
const char *user;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetCharDevQCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetCharDevQCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1140,16 +1109,16 @@ struct srvsvc_NetConnEnum {
struct {
const char *server_unc;/* [unique,charset(UTF16)] */
const char *path;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetConnCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetConnCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1162,16 +1131,16 @@ struct srvsvc_NetFileEnum {
const char *server_unc;/* [unique,charset(UTF16)] */
const char *path;/* [unique,charset(UTF16)] */
const char *user;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetFileCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetFileCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1212,16 +1181,16 @@ struct srvsvc_NetSessEnum {
const char *server_unc;/* [unique,charset(UTF16)] */
const char *client;/* [unique,charset(UTF16)] */
const char *user;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetSessCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetSessCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1262,16 +1231,16 @@ struct srvsvc_NetShareAdd {
struct srvsvc_NetShareEnumAll {
struct {
const char *server_unc;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetShareCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetShareCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1387,14 +1356,14 @@ struct srvsvc_NetDiskEnum {
struct {
const char *server_unc;/* [unique,charset(UTF16)] */
uint32_t level;
- uint32_t maxlen;
struct srvsvc_NetDiskInfo *info;/* [ref] */
+ uint32_t maxlen;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
struct srvsvc_NetDiskInfo *info;/* [ref] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1435,16 +1404,16 @@ struct srvsvc_NetTransportAdd {
struct srvsvc_NetTransportEnum {
struct {
const char *server_unc;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetTransportCtr *transports;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetTransportCtr *transports;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
@@ -1515,8 +1484,8 @@ struct srvsvc_NetPathCanonicalize {
const char *path;/* [charset(UTF16)] */
uint32_t maxbuf;
const char *prefix;/* [charset(UTF16)] */
- uint32_t pathflags;
uint32_t *pathtype;/* [ref] */
+ uint32_t pathflags;
} in;
struct {
@@ -1586,16 +1555,16 @@ struct srvsvc_NetPRNameCompare {
struct srvsvc_NetShareEnum {
struct {
const char *server_unc;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union srvsvc_NetShareCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint32_t *totalentries;/* [ref] */
uint32_t *level;/* [ref] */
union srvsvc_NetShareCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
} out;
diff --git a/source/librpc/gen_ndr/svcctl.h b/source/librpc/gen_ndr/svcctl.h
index 5c7f32cd7b8..6bc81b93a7d 100644
--- a/source/librpc/gen_ndr/svcctl.h
+++ b/source/librpc/gen_ndr/svcctl.h
@@ -1,7 +1,5 @@
/* header auto-generated by pidl */
-#include <stdint.h>
-
#ifndef _HEADER_svcctl
#define _HEADER_svcctl
@@ -68,17 +66,9 @@ struct ENUM_SERVICE_STATUS {
#define SV_TYPE_LOCAL_LIST_ONLY ( 0x40000000 )
#define SV_TYPE_DOMAIN_ENUM ( 0x80000000 )
-;
-
-#ifndef USE_UINT_ENUMS
enum SERVICE_CONTROL {
FIXME=1
-}
-#else
-enum SERVICE_CONTROL { __donnot_use_enum_SERVICE_CONTROL=0x7FFFFFFF}
-#define FIXME ( 1 )
-#endif
-;
+};
struct svcctl_CloseServiceHandle {
@@ -101,7 +91,7 @@ struct svcctl_ControlService {
} in;
struct {
- struct SERVICE_STATUS *service_status;/* [ref] */
+ struct SERVICE_STATUS *status;/* [ref] */
WERROR result;
} out;
@@ -155,7 +145,7 @@ struct svcctl_QueryServiceStatus {
} in;
struct {
- struct SERVICE_STATUS *service_status;/* [ref] */
+ struct SERVICE_STATUS *status;/* [ref] */
WERROR result;
} out;
@@ -239,17 +229,17 @@ struct svcctl_CreateServiceW {
uint32_t error_control;
const char *binary_path;/* [charset(UTF16)] */
const char *LoadOrderGroupKey;/* [unique,charset(UTF16)] */
+ uint32_t *TagId;/* [unique] */
uint8_t *dependencies;/* [unique,size_is(dependencies_size)] */
uint32_t dependencies_size;
const char *service_start_name;/* [unique,charset(UTF16)] */
uint8_t *password;/* [unique,size_is(password_size)] */
uint32_t password_size;
- uint32_t *TagId;/* [unique] */
} in;
struct {
- struct policy_handle *handle;/* [ref] */
uint32_t *TagId;/* [unique] */
+ struct policy_handle *handle;/* [ref] */
WERROR result;
} out;
@@ -264,7 +254,7 @@ struct svcctl_EnumDependentServicesW {
} in;
struct {
- struct ENUM_SERVICE_STATUS *service_status;/* [unique] */
+ struct ENUM_SERVICE_STATUS *status;/* [unique] */
uint32_t *bytes_needed;/* [ref] */
uint32_t *services_returned;/* [ref] */
WERROR result;
@@ -345,7 +335,7 @@ struct svcctl_QueryServiceLockStatusW {
} in;
struct {
- struct SERVICE_LOCK_STATUS *lock_status;/* [ref] */
+ struct SERVICE_LOCK_STATUS *status;/* [ref] */
uint32_t *required_buf_size;/* [ref] */
WERROR result;
} out;
@@ -468,7 +458,7 @@ struct svcctl_EnumDependentServicesA {
} in;
struct {
- struct ENUM_SERVICE_STATUS *service_status;/* [unique] */
+ struct ENUM_SERVICE_STATUS *status;/* [unique] */
uint32_t *bytes_needed;/* [ref] */
uint32_t *services_returned;/* [ref] */
WERROR result;
@@ -548,7 +538,7 @@ struct svcctl_QueryServiceLockStatusA {
} in;
struct {
- struct SERVICE_LOCK_STATUS *lock_status;/* [ref] */
+ struct SERVICE_LOCK_STATUS *status;/* [ref] */
uint32_t *required_buf_size;/* [ref] */
WERROR result;
} out;
@@ -708,8 +698,8 @@ struct EnumServicesStatusExA {
uint8_t *services;
uint32_t *bytes_needed;/* [ref] */
uint32_t *service_returned;/* [ref] */
- const char **group_name;/* [ref,charset(UTF16)] */
uint32_t *resume_handle;/* [unique] */
+ const char **group_name;/* [ref,charset(UTF16)] */
WERROR result;
} out;
@@ -730,8 +720,8 @@ struct EnumServicesStatusExW {
uint8_t *services;
uint32_t *bytes_needed;/* [ref] */
uint32_t *service_returned;/* [ref] */
- const char **group_name;/* [ref,charset(UTF16)] */
uint32_t *resume_handle;/* [unique] */
+ const char **group_name;/* [ref,charset(UTF16)] */
WERROR result;
} out;
diff --git a/source/librpc/gen_ndr/tables.c b/source/librpc/gen_ndr/tables.c
deleted file mode 100644
index 9a1c5a06d51..00000000000
--- a/source/librpc/gen_ndr/tables.c
+++ /dev/null
@@ -1,63 +0,0 @@
-
-/* Automatically generated by tables.pl. DO NOT EDIT */
-
-#include "includes.h"
-#include "librpc/rpc/dcerpc.h"
-#include "librpc/rpc/dcerpc_table.h"
-#include "librpc/gen_ndr/ndr_dfs.h"
-#include "librpc/gen_ndr/ndr_echo.h"
-#include "librpc/gen_ndr/ndr_epmapper.h"
-#include "librpc/gen_ndr/ndr_eventlog.h"
-#include "librpc/gen_ndr/ndr_initshutdown.h"
-#include "librpc/gen_ndr/ndr_lsa.h"
-#include "librpc/gen_ndr/ndr_netlogon.h"
-#include "librpc/gen_ndr/ndr_srvsvc.h"
-#include "librpc/gen_ndr/ndr_svcctl.h"
-#include "librpc/gen_ndr/ndr_unixinfo.h"
-#include "librpc/gen_ndr/ndr_winreg.h"
-#include "librpc/gen_ndr/ndr_wkssvc.h"
-
-NTSTATUS dcerpc_register_builtin_interfaces(void)
-{
- NTSTATUS status;
-
- status = librpc_register_interface(&dcerpc_table_netdfs);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_rpcecho);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_epmapper);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_eventlog);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_initshutdown);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_lsarpc);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_netlogon);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_srvsvc);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_svcctl);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_unixinfo);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_winreg);
- if (NT_STATUS_IS_ERR(status)) return status;
-
- status = librpc_register_interface(&dcerpc_table_wkssvc);
- if (NT_STATUS_IS_ERR(status)) return status;
-
-
-
- return NT_STATUS_OK;
-}
diff --git a/source/librpc/gen_ndr/unixinfo.h b/source/librpc/gen_ndr/unixinfo.h
deleted file mode 100644
index 34dc27f4699..00000000000
--- a/source/librpc/gen_ndr/unixinfo.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#include "librpc/gen_ndr/security.h"
-#ifndef _HEADER_unixinfo
-#define _HEADER_unixinfo
-
-struct unixinfo_GetPWUidInfo {
- NTSTATUS status;
- const char * homedir;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
- const char * shell;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
-};
-
-
-struct unixinfo_SidToUid {
- struct {
- struct dom_sid sid;
- } in;
-
- struct {
- uint64_t *uid;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct unixinfo_UidToSid {
- struct {
- uint64_t uid;
- } in;
-
- struct {
- struct dom_sid *sid;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct unixinfo_SidToGid {
- struct {
- struct dom_sid sid;
- } in;
-
- struct {
- uint64_t *gid;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct unixinfo_GidToSid {
- struct {
- uint64_t gid;
- } in;
-
- struct {
- struct dom_sid *sid;/* [ref] */
- NTSTATUS result;
- } out;
-
-};
-
-
-struct unixinfo_GetPWUid {
- struct {
- uint64_t *uids;/* [size_is(*count)] */
- uint32_t *count;/* [ref,range(0 1023)] */
- } in;
-
- struct {
- struct unixinfo_GetPWUidInfo *infos;/* [size_is(*count)] */
- uint32_t *count;/* [ref,range(0 1023)] */
- NTSTATUS result;
- } out;
-
-};
-
-#endif /* _HEADER_unixinfo */
diff --git a/source/librpc/gen_ndr/winreg.h b/source/librpc/gen_ndr/winreg.h
deleted file mode 100644
index 37a472814af..00000000000
--- a/source/librpc/gen_ndr/winreg.h
+++ /dev/null
@@ -1,624 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#include "librpc/gen_ndr/lsa.h"
-#include "librpc/gen_ndr/initshutdown.h"
-#include "librpc/gen_ndr/security.h"
-#ifndef _HEADER_winreg
-#define _HEADER_winreg
-
-/* bitmap winreg_AccessMask */
-#define KEY_QUERY_VALUE ( 0x00001 )
-#define KEY_SET_VALUE ( 0x00002 )
-#define KEY_CREATE_SUB_KEY ( 0x00004 )
-#define KEY_ENUMERATE_SUB_KEYS ( 0x00008 )
-#define KEY_NOTIFY ( 0x00010 )
-#define KEY_CREATE_LINK ( 0x00020 )
-#define KEY_WOW64_64KEY ( 0x00100 )
-#define KEY_WOW64_32KEY ( 0x00200 )
-
-;
-
-#ifndef USE_UINT_ENUMS
-enum winreg_Type {
- REG_NONE=0,
- REG_SZ=1,
- REG_EXPAND_SZ=2,
- REG_BINARY=3,
- REG_DWORD=4,
- REG_DWORD_BIG_ENDIAN=5,
- REG_LINK=6,
- REG_MULTI_SZ=7,
- REG_RESOURCE_LIST=8,
- REG_FULL_RESOURCE_DESCRIPTOR=9,
- REG_RESOURCE_REQUIREMENTS_LIST=10,
- REG_QWORD=11
-}
-#else
-enum winreg_Type { __donnot_use_enum_winreg_Type=0x7FFFFFFF}
-#define REG_NONE ( 0 )
-#define REG_SZ ( 1 )
-#define REG_EXPAND_SZ ( 2 )
-#define REG_BINARY ( 3 )
-#define REG_DWORD ( 4 )
-#define REG_DWORD_BIG_ENDIAN ( 5 )
-#define REG_LINK ( 6 )
-#define REG_MULTI_SZ ( 7 )
-#define REG_RESOURCE_LIST ( 8 )
-#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 )
-#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )
-#define REG_QWORD ( 11 )
-#endif
-;
-
-struct winreg_String {
- uint16_t name_len;/* [value(strlen_m_term(name)*2)] */
- uint16_t name_size;/* [value(strlen_m_term(name)*2)] */
- const char *name;/* [unique,charset(UTF16)] */
-}/* [public,noejs] */;
-
-struct KeySecurityData {
- uint8_t *data;/* [unique,length_is(len),size_is(size)] */
- uint32_t size;
- uint32_t len;
-};
-
-struct winreg_SecBuf {
- uint32_t length;
- struct KeySecurityData sd;
- uint8_t inherit;
-};
-
-#ifndef USE_UINT_ENUMS
-enum winreg_CreateAction {
- REG_ACTION_NONE=0,
- REG_CREATED_NEW_KEY=1,
- REG_OPENED_EXISTING_KEY=2
-}
-#else
-enum winreg_CreateAction { __donnot_use_enum_winreg_CreateAction=0x7FFFFFFF}
-#define REG_ACTION_NONE ( 0 )
-#define REG_CREATED_NEW_KEY ( 1 )
-#define REG_OPENED_EXISTING_KEY ( 2 )
-#endif
-;
-
-struct winreg_StringBuf {
- uint16_t length;/* [value(strlen_m_term_null(name)*2)] */
- uint16_t size;
- const char *name;/* [unique,length_is(length/2),charset(UTF16),size_is(size/2)] */
-};
-
-struct winreg_ValNameBuf {
- uint16_t length;/* [value(strlen_m_term(name)*2)] */
- uint16_t size;
- const char *name;/* [unique,length_is(length/2),charset(UTF16),size_is(size/2)] */
-};
-
-struct KeySecurityAttribute {
- uint32_t data_size;
- struct KeySecurityData sec_data;
- uint8_t inherit;
-};
-
-struct QueryMultipleValue {
- struct winreg_String *name;/* [unique] */
- enum winreg_Type type;
- uint32_t offset;
- uint32_t length;
-};
-
-
-struct winreg_OpenHKCR {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKCU {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKLM {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKPD {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKU {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_CloseKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_CreateKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String name;
- struct winreg_String keyclass;
- uint32_t options;
- uint32_t access_mask;
- struct winreg_SecBuf *secdesc;/* [unique] */
- enum winreg_CreateAction *action_taken;/* [unique] */
- } in;
-
- struct {
- struct policy_handle *new_handle;/* [ref] */
- enum winreg_CreateAction *action_taken;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_DeleteKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String key;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_DeleteValue {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String value;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_EnumKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t enum_index;
- struct winreg_StringBuf *name;/* [ref] */
- struct winreg_StringBuf *keyclass;/* [unique] */
- NTTIME *last_changed_time;/* [unique] */
- } in;
-
- struct {
- struct winreg_StringBuf *name;/* [ref] */
- struct winreg_StringBuf *keyclass;/* [unique] */
- NTTIME *last_changed_time;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_EnumValue {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t enum_index;
- struct winreg_ValNameBuf *name;/* [ref] */
- enum winreg_Type *type;/* [unique] */
- uint8_t *value;/* [unique,length_is(*length),size_is(*size)] */
- uint32_t *size;/* [unique] */
- uint32_t *length;/* [unique] */
- } in;
-
- struct {
- struct winreg_ValNameBuf *name;/* [ref] */
- enum winreg_Type *type;/* [unique] */
- uint8_t *value;/* [unique,length_is(*length),size_is(*size)] */
- uint32_t *size;/* [unique] */
- uint32_t *length;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_FlushKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_GetKeySecurity {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t sec_info;
- struct KeySecurityData *sd;/* [ref] */
- } in;
-
- struct {
- struct KeySecurityData *sd;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_LoadKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String *keyname;/* [unique] */
- struct winreg_String *filename;/* [unique] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_NotifyChangeKeyValue {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint8_t watch_subtree;
- uint32_t notify_filter;
- uint32_t unknown;
- struct winreg_String string1;
- struct winreg_String string2;
- uint32_t unknown2;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenKey {
- struct {
- struct policy_handle *parent_handle;/* [ref] */
- struct winreg_String keyname;
- uint32_t unknown;
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_QueryInfoKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String *classname;/* [ref] */
- } in;
-
- struct {
- uint32_t *num_subkeys;/* [ref] */
- uint32_t *max_subkeylen;/* [ref] */
- uint32_t *max_classlen;/* [ref] */
- uint32_t *num_values;/* [ref] */
- uint32_t *max_valnamelen;/* [ref] */
- uint32_t *max_valbufsize;/* [ref] */
- uint32_t *secdescsize;/* [ref] */
- NTTIME *last_changed_time;/* [ref] */
- struct winreg_String *classname;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_QueryValue {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String value_name;
- enum winreg_Type *type;/* [unique] */
- uint8_t *data;/* [unique,length_is(*value_length),size_is(*data_size)] */
- uint32_t *data_size;/* [unique] */
- uint32_t *value_length;/* [unique] */
- } in;
-
- struct {
- enum winreg_Type *type;/* [unique] */
- uint8_t *data;/* [unique,length_is(*value_length),size_is(*data_size)] */
- uint32_t *data_size;/* [unique] */
- uint32_t *value_length;/* [unique] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_ReplaceKey {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_RestoreKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String *filename;/* [ref] */
- uint32_t flags;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_SaveKey {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String *filename;/* [ref] */
- struct KeySecurityAttribute *sec_attrib;/* [unique] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_SetKeySecurity {
- struct {
- struct policy_handle *handle;/* [ref] */
- uint32_t access_mask;
- struct KeySecurityData *sd;/* [ref] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_SetValue {
- struct {
- struct policy_handle *handle;/* [ref] */
- struct winreg_String name;
- enum winreg_Type type;
- uint8_t *data;/* [ref,size_is(size)] */
- uint32_t size;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_UnLoadKey {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_InitiateSystemShutdown {
- struct {
- uint16_t *hostname;/* [unique] */
- struct initshutdown_String *message;/* [unique] */
- uint32_t timeout;
- uint8_t force_apps;
- uint8_t reboot;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_AbortSystemShutdown {
- struct {
- uint16_t *server;/* [unique] */
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_GetVersion {
- struct {
- struct policy_handle *handle;/* [ref] */
- } in;
-
- struct {
- uint32_t *version;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKCC {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKDD {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_QueryMultipleValues {
- struct {
- struct policy_handle *key_handle;/* [ref] */
- uint32_t num_values;
- struct QueryMultipleValue *values;/* [ref,length_is(num_values),size_is(num_values)] */
- uint8_t *buffer;/* [unique,length_is(*buffer_size),size_is(*buffer_size)] */
- uint32_t *buffer_size;/* [ref] */
- } in;
-
- struct {
- struct QueryMultipleValue *values;/* [ref,length_is(num_values),size_is(num_values)] */
- uint8_t *buffer;/* [unique,length_is(*buffer_size),size_is(*buffer_size)] */
- uint32_t *buffer_size;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_InitiateSystemShutdownEx {
- struct {
- uint16_t *hostname;/* [unique] */
- struct initshutdown_String *message;/* [unique] */
- uint32_t timeout;
- uint8_t force_apps;
- uint8_t reboot;
- uint32_t reason;
- } in;
-
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_SaveKeyEx {
- struct {
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKPT {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_OpenHKPN {
- struct {
- uint16_t *system_name;/* [unique] */
- uint32_t access_mask;
- } in;
-
- struct {
- struct policy_handle *handle;/* [ref] */
- WERROR result;
- } out;
-
-};
-
-
-struct winreg_QueryMultipleValues2 {
- struct {
- WERROR result;
- } out;
-
-};
-
-#endif /* _HEADER_winreg */
diff --git a/source/librpc/gen_ndr/wkssvc.h b/source/librpc/gen_ndr/wkssvc.h
index e1b8cb31a21..a6b75920ac5 100644
--- a/source/librpc/gen_ndr/wkssvc.h
+++ b/source/librpc/gen_ndr/wkssvc.h
@@ -1,7 +1,5 @@
/* header auto-generated by pidl */
-#include <stdint.h>
-
#include "librpc/gen_ndr/srvsvc.h"
#ifndef _HEADER_wkssvc
#define _HEADER_wkssvc
@@ -175,13 +173,9 @@ struct wkssvc_PasswordBuffer {
#define WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE ( 0x00000002 )
#define WKSSVC_JOIN_FLAGS_JOIN_TYPE ( 0x00000001 )
-;
-
/* bitmap wkssvc_renameflags */
#define WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE ( 0x00000002 )
-;
-
struct wkssvc_NetWkstaGetInfo {
struct {
@@ -217,15 +211,15 @@ struct wkssvc_NetWkstaEnumUsers {
struct {
const char *server_name;/* [unique,charset(UTF16)] */
uint32_t level;
- uint32_t prefmaxlen;
union WKS_USER_ENUM_UNION *users;/* [ref] */
+ uint32_t prefmaxlen;
uint32_t *resumehandle;/* [ref] */
} in;
struct {
+ union WKS_USER_ENUM_UNION *users;/* [ref] */
uint32_t *entriesread;/* [unique] */
uint32_t *totalentries;/* [unique] */
- union WKS_USER_ENUM_UNION *users;/* [ref] */
uint32_t *resumehandle;/* [ref] */
WERROR result;
} out;
@@ -252,16 +246,16 @@ struct WKSSVC_NETRWKSTAUSERSETINFO {
struct wkssvc_NetWkstaTransportEnum {
struct {
const char *server_name;/* [unique,charset(UTF16)] */
- uint32_t max_buffer;
uint32_t *level;/* [ref] */
union wkssvc_NetWkstaTransportCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t max_buffer;
uint32_t *resume_handle;/* [ref] */
} in;
struct {
- uint32_t *totalentries;/* [unique] */
uint32_t *level;/* [ref] */
union wkssvc_NetWkstaTransportCtr *ctr;/* [ref,switch_is(*level)] */
+ uint32_t *totalentries;/* [unique] */
uint32_t *resume_handle;/* [ref] */
WERROR result;
} out;
diff --git a/source/librpc/idl/dfs.idl b/source/librpc/idl/dfs.idl
deleted file mode 100644
index 2b519b15d5b..00000000000
--- a/source/librpc/idl/dfs.idl
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- dfs interface definition
-*/
-
-[ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"),
- version(3.0),
- pointer_default(unique),
- helpstring("Settings for Microsoft Distributed File System")
-] interface netdfs
-{
- /******************/
- /* Function: 0x00 */
- typedef [v1_enum] enum {
- DFS_MANAGER_VERSION_NT4 = 1,
- DFS_MANAGER_VERSION_W2K = 2,
- DFS_MANAGER_VERSION_W2K3 = 4
- } dfs_ManagerVersion;
-
- [public] void dfs_GetManagerVersion(
- [out] dfs_ManagerVersion *version
- );
-
-
- /******************/
- /* Function: 0x01 */
- WERROR dfs_Add (
- [in] [string,charset(UTF16)] uint16 *path,
- [in] [string,charset(UTF16)] uint16 *server,
- [in,unique] [string,charset(UTF16)] uint16 *share,
- [in,unique] [string,charset(UTF16)] uint16 *comment,
- [in] uint32 flags
- );
-
- /******************/
- /* Function: 0x02 */
- WERROR dfs_Remove (
- [in] [string,charset(UTF16)] uint16 *dfs_entry_path,
- [in,unique] [string,charset(UTF16)] uint16 *servername,
- [in,unique] [string,charset(UTF16)] uint16 *sharename
- );
-
- /******************/
- /* Function: 0x03 */
-
- typedef struct {
- } dfs_Info0;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *path;
- } dfs_Info1;
-
- /* first 4 bits unverified yet */
- typedef [public,bitmap32bit] bitmap {
- DFS_VOLUME_STATE_OK = 0x1,
- DFS_VOLUME_STATE_INCONSISTENT = 0x2,
- DFS_VOLUME_STATE_OFFLINE = 0x4,
- DFS_VOLUME_STATE_ONLINE = 0x8,
- DFS_VOLUME_STATE_STANDALONE = DFS_VOLUME_FLAVOR_STANDALONE,
- DFS_VOLUME_STATE_AD_BLOB = DFS_VOLUME_FLAVOR_AD_BLOB
- } dfs_VolumeState;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *path;
- [string,charset(UTF16)] uint16 *comment;
- dfs_VolumeState state;
- uint32 num_stores;
- } dfs_Info2;
-
- const int DFS_STORAGE_STATES = 0xf;
-
- /* yes, this is a bitmap */
- typedef [public,bitmap32bit] bitmap {
- DFS_STORAGE_STATE_OFFLINE = 1,
- DFS_STORAGE_STATE_ONLINE = 2,
- DFS_STORAGE_STATE_ACTIVE = 4
- } dfs_StorageState;
-
- typedef struct {
- dfs_StorageState state;
- [string,charset(UTF16)] uint16 *server;
- [string,charset(UTF16)] uint16 *share;
- } dfs_StorageInfo;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *path;
- [string,charset(UTF16)] uint16 *comment;
- dfs_VolumeState state;
- uint32 num_stores;
- [size_is(num_stores)] dfs_StorageInfo *stores;
- } dfs_Info3;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *path;
- [string,charset(UTF16)] uint16 *comment;
- dfs_VolumeState state;
- uint32 timeout;
- GUID guid;
- uint32 num_stores;
- [size_is(num_stores)] dfs_StorageInfo *stores;
- } dfs_Info4;
-
- /* verified with dfsutil */
- typedef [public,bitmap32bit] bitmap {
- DFS_PROPERTY_FLAG_INSITE_REFERRALS = 0x01,
- DFS_PROPERTY_FLAG_ROOT_SCALABILITY = 0x02,
- DFS_PROPERTY_FLAG_SITE_COSTING = 0x04,
- DFS_PROPERTY_FLAG_TARGET_FAILBACK = 0x08,
- DFS_PROPERTY_FLAG_CLUSTER_ENABLED = 0x10 /* untested */
- } dfs_PropertyFlags;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *path;
- [string,charset(UTF16)] uint16 *comment;
- dfs_VolumeState state;
- uint32 timeout;
- GUID guid;
- dfs_PropertyFlags flags;
- uint32 pktsize;
- uint32 num_stores;
- } dfs_Info5;
-
- typedef [v1_enum] enum {
- DFS_INVALID_PRIORITY_CLASS = -1,
- DFS_SITE_COST_NORMAL_PRIORITY_CLASS = 0,
- DFS_GLOBAL_HIGH_PRIORITY_CLASS = 1,
- DFS_SITE_COST_HIGH_PRIORITY_CLASS = 2,
- DFS_SITE_COST_LOW_PRIORITY_CLASS = 3,
- DFS_GLOBAL_LOW_PRIORITY_CLASS = 4
- } dfs_Target_PriorityClass;
-
- typedef struct {
- dfs_Target_PriorityClass target_priority_class;
- uint16 target_priority_rank;
- uint16 reserved;
- } dfs_Target_Priority;
-
- typedef struct {
- dfs_StorageInfo info;
- dfs_Target_Priority target_priority;
- } dfs_StorageInfo2;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *entry_path;
- [string,charset(UTF16)] uint16 *comment;
- dfs_VolumeState state;
- uint32 timeout;
- GUID guid;
- dfs_PropertyFlags flags;
- uint32 pktsize;
- uint16 num_stores;
- [size_is(num_stores)] dfs_StorageInfo2 *stores;
- } dfs_Info6;
-
- typedef struct {
- GUID generation_guid;
- } dfs_Info7;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *comment;
- } dfs_Info100;
-
- typedef struct {
- dfs_StorageState state;
- } dfs_Info101;
-
- typedef struct {
- uint32 timeout;
- } dfs_Info102;
-
- typedef struct {
- dfs_PropertyFlags flags;
- } dfs_Info103;
-
- typedef struct {
- dfs_Target_Priority priority;
- } dfs_Info104;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *comment;
- dfs_VolumeState state;
- uint32 timeout;
- uint32 property_flag_mask;
- uint32 property_flags;
- } dfs_Info105;
-
- typedef struct {
- dfs_StorageState state;
- dfs_Target_Priority priority;
- } dfs_Info106;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *dom_root;
- } dfs_Info200;
-
- typedef enum {
- DFS_VOLUME_FLAVOR_STANDALONE = 0x100,
- DFS_VOLUME_FLAVOR_AD_BLOB = 0x200
- } dfs_VolumeFlavor;
-
- typedef struct {
- dfs_VolumeFlavor flavor;
- [string,charset(UTF16)] uint16 *dom_root;
- } dfs_Info300;
-
- typedef union {
- [case(0)] dfs_Info0 *info0;
- [case(1)] dfs_Info1 *info1;
- [case(2)] dfs_Info2 *info2;
- [case(3)] dfs_Info3 *info3;
- [case(4)] dfs_Info4 *info4;
- [case(5)] dfs_Info5 *info5;
- [case(6)] dfs_Info6 *info6;
- [case(7)] dfs_Info7 *info7;
- [case(100)] dfs_Info100 *info100;
- [case(101)] dfs_Info101 *info101;
- [case(102)] dfs_Info102 *info102;
- [case(103)] dfs_Info103 *info103;
- [case(104)] dfs_Info104 *info104;
- [case(105)] dfs_Info105 *info105;
- [case(106)] dfs_Info106 *info106;
- } dfs_Info;
-
- WERROR dfs_SetInfo (
- [in] [string,charset(UTF16)] uint16 dfs_entry_path[],
- [in,unique] [string,charset(UTF16)] uint16 *servername,
- [in,unique] [string,charset(UTF16)] uint16 *sharename,
- [in] uint32 level,
- [in,ref,switch_is(level)] dfs_Info *info
- );
-
- /******************/
- /* Function: 0x04 */
- WERROR dfs_GetInfo (
- [in] [string,charset(UTF16)] uint16 dfs_entry_path[],
- [in,unique] [string,charset(UTF16)] uint16 *servername,
- [in,unique] [string,charset(UTF16)] uint16 *sharename,
- [in] uint32 level,
- [out,switch_is(level)] dfs_Info *info
- );
-
- /******************/
- /* Function: 0x05 */
-
- typedef struct {
- uint32 count;
- [size_is(count)] dfs_Info1 *s;
- } dfs_EnumArray1;
-
- typedef struct {
- uint32 count;
- [size_is(count)] dfs_Info2 *s;
- } dfs_EnumArray2;
-
- typedef struct {
- uint32 count;
- [size_is(count)] dfs_Info3 *s;
- } dfs_EnumArray3;
-
- typedef struct {
- uint32 count;
- [size_is(count)] dfs_Info4 *s;
- } dfs_EnumArray4;
-
- typedef struct {
- uint32 count;
- [size_is(count)] dfs_Info200 *s;
- } dfs_EnumArray200;
-
- typedef struct {
- uint32 count;
- [size_is(count)] dfs_Info300 *s;
- } dfs_EnumArray300;
-
-
- typedef union {
- [case(1)] dfs_EnumArray1 *info1;
- [case(2)] dfs_EnumArray2 *info2;
- [case(3)] dfs_EnumArray3 *info3;
- [case(4)] dfs_EnumArray4 *info4;
- [case(200)] dfs_EnumArray200 *info200;
- [case(300)] dfs_EnumArray300 *info300;
- } dfs_EnumInfo;
-
- typedef struct {
- uint32 level;
- [switch_is(level)] dfs_EnumInfo e;
- } dfs_EnumStruct;
-
- WERROR dfs_Enum (
- [in] uint32 level,
- [in] uint32 bufsize,
- [in,out,unique] dfs_EnumStruct *info,
- [in,out,unique] uint32 *total
- );
-
- /* Function 0x06 */
- WERROR dfs_Rename();
-
- /* Function 0x07 */
- WERROR dfs_Move();
-
- /* Function 0x08 */
- WERROR dfs_ManagerGetConfigInfo();
-
- /* Function 0x09 */
- WERROR dfs_ManagerSendSiteInfo();
-
- /* Function 0x0a */
- typedef struct {
- uint32 unknown1;
- [string,charset(UTF16)] uint16 *unknown2;
- } dfs_UnknownStruct;
-
- WERROR dfs_AddFtRoot(
- [in] [string,charset(UTF16)] uint16 servername[],
- [in] [string,charset(UTF16)] uint16 dns_servername[],
- [in] [string,charset(UTF16)] uint16 dfsname[],
- [in] [string,charset(UTF16)] uint16 rootshare[],
- [in] [string,charset(UTF16)] uint16 comment[],
- [in] [string,charset(UTF16)] uint16 dfs_config_dn[],
- [in] uint8 unknown1,
- [in] uint32 flags,
- [in,out,unique] dfs_UnknownStruct **unknown2
- );
-
- /* Function 0x0b */
- WERROR dfs_RemoveFtRoot(
- [in] [string,charset(UTF16)] uint16 servername[],
- [in] [string,charset(UTF16)] uint16 dns_servername[],
- [in] [string,charset(UTF16)] uint16 dfsname[],
- [in] [string,charset(UTF16)] uint16 rootshare[],
- [in] uint32 flags,
- [in,out,unique] dfs_UnknownStruct **unknown
- );
-
- /* Function 0x0c */
- WERROR dfs_AddStdRoot(
- [in] [string,charset(UTF16)] uint16 servername[],
- [in] [string,charset(UTF16)] uint16 rootshare[],
- [in] [string,charset(UTF16)] uint16 comment[],
- [in] uint32 flags
- );
-
- /* Function 0x0d */
- WERROR dfs_RemoveStdRoot(
- [in] [string,charset(UTF16)] uint16 servername[],
- [in] [string,charset(UTF16)] uint16 rootshare[],
- [in] uint32 flags
- );
-
- /* Function 0x0e */
- WERROR dfs_ManagerInitialize(
- [in] [string,charset(UTF16)] uint16 *servername,
- [in] uint32 flags
- );
-
- /* Function 0x0f */
- WERROR dfs_AddStdRootForced(
- [in] [string,charset(UTF16)] uint16 servername[],
- [in] [string,charset(UTF16)] uint16 rootshare[],
- [in] [string,charset(UTF16)] uint16 comment[],
- [in] [string,charset(UTF16)] uint16 store[] /* C:\\whatever */
- );
-
- /* Function 0x10 */
- WERROR dfs_GetDcAddress();
-
- /* Function 0x11 */
- WERROR dfs_SetDcAddress();
-
- /* Function 0x12 */
- WERROR dfs_FlushFtTable(
- [in] [string,charset(UTF16)] uint16 servername[],
- [in] [string,charset(UTF16)] uint16 rootshare[]
- );
-
- /* Function 0x13 */
- WERROR dfs_Add2();
-
- /* Function 0x14 */
- WERROR dfs_Remove2();
-
- /* Function 0x15 */
- [public] WERROR dfs_EnumEx(
- [in] [string,charset(UTF16)] uint16 dfs_name[],
- [in] uint32 level,
- [in] uint32 bufsize,
- [in,out,unique] dfs_EnumStruct *info,
- [in,out,unique] uint32 *total
- );
-
- /* Function 0x16 */
- WERROR dfs_SetInfo2();
-}
diff --git a/source/librpc/idl/echo.idl b/source/librpc/idl/echo.idl
deleted file mode 100644
index fa030be761c..00000000000
--- a/source/librpc/idl/echo.idl
+++ /dev/null
@@ -1,127 +0,0 @@
-
-[
- uuid("60a15ec5-4de8-11d7-a637-005056a20182"),
- endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:", "ncalrpc:"),
- pointer_default(unique),
- version(1.0),
- helpstring("Simple echo pipe")
-]
-interface rpcecho
-{
- /* Add one to an integer */
- void echo_AddOne(
- [in] uint32 in_data,
- [out] uint32 *out_data
- );
- /* Echo an array of bytes back at the caller */
- void echo_EchoData(
- [in] uint32 len,
- [in] [size_is(len)] uint8 in_data[],
- [out] [size_is(len)] uint8 out_data[]
- );
- /* Sink data to the server */
- void echo_SinkData(
- [in] uint32 len,
- [in,size_is(len)] uint8 data[]
- );
- /* Source data from server */
- void echo_SourceData(
- [in] uint32 len,
- [out,size_is(len)] uint8 data[]
- );
-
- /* test strings */
- void echo_TestCall (
- [in,string,charset(UTF16)] uint16 *s1,
- [out,string,charset(UTF16)] uint16 **s2
- );
-
-
- /* test some alignment issues */
- typedef struct {
- uint8 v;
- } echo_info1;
-
- typedef struct {
- uint16 v;
- } echo_info2;
-
- typedef struct {
- uint32 v;
- } echo_info3;
-
- typedef struct {
- hyper v;
- } echo_info4;
-
- typedef struct {
- uint8 v1;
- hyper v2;
- } echo_info5;
-
- typedef struct {
- uint8 v1;
- echo_info1 info1;
- } echo_info6;
-
- typedef struct {
- uint8 v1;
- echo_info4 info4;
- } echo_info7;
-
- typedef [switch_type(uint16)] union {
- [case(1)] echo_info1 info1;
- [case(2)] echo_info2 info2;
- [case(3)] echo_info3 info3;
- [case(4)] echo_info4 info4;
- [case(5)] echo_info5 info5;
- [case(6)] echo_info6 info6;
- [case(7)] echo_info7 info7;
- } echo_Info;
-
- NTSTATUS echo_TestCall2 (
- [in] uint16 level,
- [out,switch_is(level)] echo_Info *info
- );
-
- uint32 echo_TestSleep(
- [in] uint32 seconds
- );
-
- typedef enum {
- ECHO_ENUM1 = 1,
- ECHO_ENUM2 = 2
- } echo_Enum1;
-
- typedef [v1_enum] enum {
- ECHO_ENUM1_32 = 1,
- ECHO_ENUM2_32 = 2
- } echo_Enum1_32;
-
- typedef struct {
- echo_Enum1 e1;
- echo_Enum1_32 e2;
- } echo_Enum2;
-
- typedef [switch_type(uint16)] union {
- [case(ECHO_ENUM1)] echo_Enum1 e1;
- [case(ECHO_ENUM2)] echo_Enum2 e2;
- } echo_Enum3;
-
- void echo_TestEnum(
- [in,out,ref] echo_Enum1 *foo1,
- [in,out,ref] echo_Enum2 *foo2,
- [in,out,ref,switch_is(*foo1)] echo_Enum3 *foo3
- );
-
- typedef struct {
- uint32 x;
- [size_is(x)] uint16 surrounding[*];
- } echo_Surrounding;
-
- void echo_TestSurrounding(
- [in,out,ref] echo_Surrounding *data
- );
-
- uint16 echo_TestDoublePointer([in] uint16 ***data);
-}
diff --git a/source/librpc/idl/epmapper.idl b/source/librpc/idl/epmapper.idl
deleted file mode 100644
index 5611c3de183..00000000000
--- a/source/librpc/idl/epmapper.idl
+++ /dev/null
@@ -1,302 +0,0 @@
-#include "idl_types.h"
-
-/*
- endpoint mapper interface
- Related links:
- http://www.opengroup.org/onlinepubs/9629399/apdxl.htm : Details on towers
-http://www.opengroup.org/onlinepubs/9629399/chap6.htm#tagcjh_11_02_03_01: binding strings
-
-*/
-
-[
- uuid("e1af8308-5d1f-11c9-91a4-08002b14a0fa"),
- version(3.0),
- endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]",
- "ncalrpc:[EPMAPPER]"),
- helpstring("EndPoint Mapper"),
- pointer_default(ptr)
-]
-interface epmapper
-{
-
- /*
- note that the following IDL won't work in MIDL, and in fact
- that the full towers/floors representation of epm cannot be
- represented in MIDL at all. I decided to represent it using
- the extended IDL syntax in pidl to make it easier to work
- with.
- */
-
- const int EPMAPPER_STATUS_NO_MORE_ENTRIES = 0x16c9a0d6;
- const int EPMAPPER_STATUS_NO_MEMORY = 0x16C9A012;
- const int EPMAPPER_STATUS_OK = 0;
-
-
-
- typedef [enum8bit] enum {
-
- /* Level 4 and higher */
- EPM_PROTOCOL_DNET_NSP = 0x04,
- EPM_PROTOCOL_OSI_TP4 = 0x05,
- EPM_PROTOCOL_OSI_CLNS = 0x06,
- EPM_PROTOCOL_TCP = 0x07,
- EPM_PROTOCOL_UDP = 0x08,
- EPM_PROTOCOL_IP = 0x09,
- /* These 4 are protocol identifiers, always at level 3 or lower */
- EPM_PROTOCOL_NCADG = 0x0a, /* Connectionless RPC */
- EPM_PROTOCOL_NCACN = 0x0b,
- EPM_PROTOCOL_NCALRPC = 0x0c, /* Local RPC */
- EPM_PROTOCOL_UUID = 0x0d,
- EPM_PROTOCOL_IPX = 0x0e,
- EPM_PROTOCOL_SMB = 0x0f,
- EPM_PROTOCOL_PIPE = 0x10,
- EPM_PROTOCOL_NETBIOS = 0x11,
- EPM_PROTOCOL_NETBEUI = 0x12,
- EPM_PROTOCOL_SPX = 0x13,
- EPM_PROTOCOL_NB_IPX = 0x14, /* NetBIOS over IPX */
- EPM_PROTOCOL_DSP = 0x16, /* AppleTalk Data Stream Protocol */
- EPM_PROTOCOL_DDP = 0x17, /* AppleTalk Data Datagram Protocol */
- EPM_PROTOCOL_APPLETALK = 0x18, /* AppleTalk */
- EPM_PROTOCOL_VINES_SPP = 0x1a,
- EPM_PROTOCOL_VINES_IPC = 0x1b, /* Inter Process Communication */
- EPM_PROTOCOL_STREETTALK = 0x1c, /* Vines Streettalk */
- EPM_PROTOCOL_HTTP = 0x1f,
- EPM_PROTOCOL_UNIX_DS = 0x20, /* Unix domain socket */
- EPM_PROTOCOL_NULL = 0x21
- } epm_protocol;
-
- typedef struct {
- /*FIXME */
- } epm_rhs_dnet_nsp;
-
- typedef struct {
- /*FIXME*/
- } epm_rhs_osi_tp4;
-
- typedef struct {
- /*FIXME*/
- } epm_rhs_osi_clns;
-
- typedef struct {
- uint16 port;
- } epm_rhs_udp;
-
- typedef struct {
- uint16 port;
- } epm_rhs_tcp;
-
- typedef struct {
- ipv4address ipaddr;
- } epm_rhs_ip;
-
- typedef struct {
- uint16 minor_version;
- } epm_rhs_ncadg;
-
- typedef struct {
- uint16 minor_version;
- } epm_rhs_ncacn;
-
- typedef struct {
- [flag(NDR_REMAINING)] DATA_BLOB unknown;
- } epm_rhs_uuid;
-
- typedef struct {
- /*FIXME */
- } epm_rhs_ipx;
-
- typedef struct {
- astring unc;
- } epm_rhs_smb;
-
- typedef struct {
- astring path;
- } epm_rhs_pipe;
-
- typedef struct {
- astring name;
- } epm_rhs_netbios;
-
- typedef struct {
- } epm_rhs_netbeui;
-
- typedef struct {
- } epm_rhs_spx;
-
- typedef struct {
- } epm_rhs_nb_ipx;
-
- typedef struct {
- uint16 port;
- } epm_rhs_http;
-
- typedef struct {
- astring path;
- } epm_rhs_unix_ds;
-
- typedef struct {
- } epm_rhs_null;
-
- typedef struct {
- uint16 minor_version;
- } epm_rhs_ncalrpc;
-
- typedef struct {
- } epm_rhs_appletalk;
-
- typedef struct {
- } epm_rhs_atalk_stream;
-
- typedef struct {
- } epm_rhs_atalk_datagram;
-
- typedef struct {
- uint16 port;
- } epm_rhs_vines_spp;
-
- typedef struct {
- uint16 port;
- } epm_rhs_vines_ipc;
-
- typedef struct {
- astring streettalk;
- } epm_rhs_streettalk;
-
- typedef [flag(NDR_BIG_ENDIAN),nodiscriminant] union {
- [case(EPM_PROTOCOL_DNET_NSP)] epm_rhs_dnet_nsp dnet_nsp;
- [case(EPM_PROTOCOL_OSI_TP4)] epm_rhs_osi_tp4 osi_tp4;
- [case(EPM_PROTOCOL_OSI_CLNS)] epm_rhs_osi_clns osi_clns;
- [case(EPM_PROTOCOL_TCP)] epm_rhs_tcp tcp;
- [case(EPM_PROTOCOL_UDP)] epm_rhs_udp udp;
- [case(EPM_PROTOCOL_IP)] epm_rhs_ip ip;
- [case(EPM_PROTOCOL_NCADG)] epm_rhs_ncadg ncadg;
- [case(EPM_PROTOCOL_NCACN)] epm_rhs_ncacn ncacn;
- [case(EPM_PROTOCOL_NCALRPC)] epm_rhs_ncalrpc ncalrpc;
- [case(EPM_PROTOCOL_UUID)] epm_rhs_uuid uuid;
- [case(EPM_PROTOCOL_IPX)] epm_rhs_ipx ipx;
- [case(EPM_PROTOCOL_SMB)] epm_rhs_smb smb;
- [case(EPM_PROTOCOL_PIPE)] epm_rhs_pipe pipe;
- [case(EPM_PROTOCOL_NETBIOS)] epm_rhs_netbios netbios;
- [case(EPM_PROTOCOL_NETBEUI)] epm_rhs_netbeui netbeui;
- [case(EPM_PROTOCOL_SPX)] epm_rhs_spx spx;
- [case(EPM_PROTOCOL_NB_IPX)] epm_rhs_nb_ipx nb_ipx;
- [case(EPM_PROTOCOL_DSP)] epm_rhs_atalk_stream atalk_stream;
- [case(EPM_PROTOCOL_DDP)] epm_rhs_atalk_datagram atalk_datagram;
- [case(EPM_PROTOCOL_APPLETALK)] epm_rhs_appletalk appletalk;
- [case(EPM_PROTOCOL_VINES_SPP)] epm_rhs_vines_spp vines_spp;
- [case(EPM_PROTOCOL_VINES_IPC)] epm_rhs_vines_ipc vines_ipc;
- [case(EPM_PROTOCOL_STREETTALK)] epm_rhs_streettalk streettalk;
- [case(EPM_PROTOCOL_HTTP)] epm_rhs_http http;
- [case(EPM_PROTOCOL_UNIX_DS)] epm_rhs_unix_ds unix_ds;
- [case(EPM_PROTOCOL_NULL)] epm_rhs_null null;
- [default] [flag(NDR_REMAINING)] DATA_BLOB unknown;
- } epm_rhs;
-
- typedef struct {
- epm_protocol protocol;
- [flag(NDR_REMAINING)] DATA_BLOB lhs_data;
- } epm_lhs;
-
- typedef struct {
- [subcontext(2)] epm_lhs lhs;
- [subcontext(2),switch_is(lhs.protocol)] epm_rhs rhs;
- } epm_floor;
-
- /* note that the NDR_NOALIGN flag is inherited by all nested
- structures. All of the towers/floors stuff is
- non-aligned. I wonder what sort of wicked substance these
- guys were smoking?
- */
- typedef [gensize,flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
- uint16 num_floors;
- epm_floor floors[num_floors];
- } epm_tower;
-
- typedef struct {
- [value(ndr_size_epm_tower(&tower, ndr->flags))] uint32 tower_length;
- [subcontext(4)] epm_tower tower;
- } epm_twr_t;
-
- typedef struct {
- GUID object;
- epm_twr_t *tower;
- ascstr2 annotation;
- } epm_entry_t;
-
- typedef struct {
- GUID uuid;
- uint16 vers_major;
- uint16 vers_minor;
- } rpc_if_id_t;
-
- /**********************/
- /* Function 0x0 */
- error_status_t epm_Insert(
- [in] uint32 num_ents,
- [in,size_is(num_ents)] epm_entry_t entries[],
- [in] uint32 replace
- );
-
- /**********************/
- /* Function 0x1 */
- error_status_t epm_Delete(
- [in] uint32 num_ents,
- [in, size_is(num_ents)] epm_entry_t entries[]
- );
-
- /**********************/
- /* Function 0x02 */
- error_status_t epm_Lookup(
- [in] uint32 inquiry_type,
- [in,ptr] GUID *object,
- [in,ptr] rpc_if_id_t *interface_id,
- [in] uint32 vers_option,
- [in,out] policy_handle *entry_handle,
- [in] uint32 max_ents,
- [out] uint32 *num_ents,
- [out, length_is(*num_ents), size_is(max_ents)] epm_entry_t entries[]
- );
-
-
- /**********************/
- /* Function 0x03 */
-
- typedef struct {
- epm_twr_t *twr;
- } epm_twr_p_t;
-
- [public] error_status_t epm_Map(
- [in,ptr] GUID *object,
- [in,ptr] epm_twr_t *map_tower,
- [in,out] policy_handle *entry_handle,
- [in] uint32 max_towers,
- [out] uint32 *num_towers,
- [out, length_is(*num_towers), size_is(max_towers)] epm_twr_p_t towers[]
- );
-
-
- /**********************/
- /* Function 0x04 */
- error_status_t epm_LookupHandleFree(
- [in,out] policy_handle *entry_handle
- );
-
- /**********************/
- /* Function 0x05 */
- error_status_t epm_InqObject(
- [in] GUID *epm_object
- );
-
-
- /**********************/
- /* Function 0x06 */
- error_status_t epm_MgmtDelete(
- [in] uint32 object_speced,
- [in,ptr] GUID *object,
- [in,ptr] epm_twr_t *tower
- );
-
- /**********************/
- /* Function 0x07 */
- error_status_t epm_MapAuth();
-}
diff --git a/source/librpc/idl/eventlog.idl b/source/librpc/idl/eventlog.idl
deleted file mode 100644
index e088137ccfa..00000000000
--- a/source/librpc/idl/eventlog.idl
+++ /dev/null
@@ -1,178 +0,0 @@
-#include "idl_types.h"
-
-/*
- eventlog interface definition
-*/
-import "lsa.idl", "security.idl";
-
-[ uuid("82273fdc-e32a-18c3-3f78-827929dc23ea"),
- version(0.0),
- pointer_default(unique),
- helpstring("Event Logger")
-] interface eventlog
-{
- typedef bitmap {
- EVENTLOG_SEQUENTIAL_READ = 0x0001,
- EVENTLOG_SEEK_READ = 0x0002,
- EVENTLOG_FORWARDS_READ = 0x0004,
- EVENTLOG_BACKWARDS_READ = 0x0008
- } eventlogReadFlags;
-
- typedef bitmap {
- EVENTLOG_SUCCESS = 0x0000,
- EVENTLOG_ERROR_TYPE = 0x0001,
- EVENTLOG_WARNING_TYPE = 0x0002,
- EVENTLOG_INFORMATION_TYPE = 0x0004,
- EVENTLOG_AUDIT_SUCCESS = 0x0008,
- EVENTLOG_AUDIT_FAILURE = 0x0010
- } eventlogEventTypes;
-
- typedef struct {
- uint16 unknown0;
- uint16 unknown1;
- } eventlog_OpenUnknown0;
-
- typedef [public] struct {
- uint32 size;
- uint32 reserved;
- uint32 record_number;
- uint32 time_generated;
- uint32 time_written;
- uint32 event_id;
- uint16 event_type;
- uint16 num_of_strings;
- uint16 event_category;
- uint16 reserved_flags;
- uint32 closing_record_number;
- uint32 stringoffset;
- uint32 sid_length;
- uint32 sid_offset;
- uint32 data_length;
- uint32 data_offset;
- nstring source_name;
- nstring computer_name;
- nstring strings[num_of_strings];
- astring raw_data;
- } eventlog_Record;
-
- /******************/
- /* Function: 0x00 */
- NTSTATUS eventlog_ClearEventLogW(
- [in] policy_handle *handle,
- [in,unique] lsa_String *unknown
- );
-
- /******************/
- /* Function: 0x01 */
- NTSTATUS eventlog_BackupEventLogW();
-
- /******************/
- /* Function: 0x02 */
- NTSTATUS eventlog_CloseEventLog(
- [in,out] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x03 */
- NTSTATUS eventlog_DeregisterEventSource();
-
- /******************/
- /* Function: 0x04 */
- NTSTATUS eventlog_GetNumRecords(
- [in] policy_handle *handle,
- [out,ref] uint32 *number
- );
-
- /******************/
- /* Function: 0x05 */
- NTSTATUS eventlog_GetOldestRecord();
-
- /******************/
- /* Function: 0x06 */
- NTSTATUS eventlog_ChangeNotify();
-
- /******************/
- /* Function: 0x07 */
- NTSTATUS eventlog_OpenEventLogW(
- [in,unique] eventlog_OpenUnknown0 *unknown0,
- [in] lsa_String logname,
- [in] lsa_String servername,
- [in] uint32 unknown2,
- [in] uint32 unknown3,
- [out] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x08 */
- NTSTATUS eventlog_RegisterEventSourceW();
-
- /******************/
- /* Function: 0x09 */
- NTSTATUS eventlog_OpenBackupEventLogW();
-
- /******************/
- /* Function: 0x0a */
- NTSTATUS eventlog_ReadEventLogW(
- [in] policy_handle *handle,
- [in] uint32 flags,
- [in] uint32 offset,
- [in] uint32 number_of_bytes,
- [out,size_is(number_of_bytes)] uint8 *data,
- [out,ref] uint32 *sent_size,
- [out,ref] uint32 *real_size
- );
-
- /*****************/
- /* Function 0x0b */
- NTSTATUS eventlog_ReportEventW();
-
- /*****************/
- /* Function 0x0c */
- NTSTATUS eventlog_ClearEventLogA();
-
- /******************/
- /* Function: 0x0d */
- NTSTATUS eventlog_BackupEventLogA();
-
- /*****************/
- /* Function 0x0e */
- NTSTATUS eventlog_OpenEventLogA();
-
- /*****************/
- /* Function 0x0f */
- NTSTATUS eventlog_RegisterEventSourceA();
-
- /*****************/
- /* Function 0x10 */
- NTSTATUS eventlog_OpenBackupEventLogA();
-
- /*****************/
- /* Function 0x11 */
- NTSTATUS eventlog_ReadEventLogA();
-
- /*****************/
- /* Function 0x12 */
- NTSTATUS eventlog_ReportEventA();
-
- /*****************/
- /* Function 0x13 */
- NTSTATUS eventlog_RegisterClusterSvc();
-
- /*****************/
- /* Function 0x14 */
- NTSTATUS eventlog_DeregisterClusterSvc();
-
- /*****************/
- /* Function 0x15 */
- NTSTATUS eventlog_WriteClusterEvents();
-
- /*****************/
- /* Function 0x16 */
- NTSTATUS eventlog_GetLogIntormation();
-
- /*****************/
- /* Function 0x17 */
- NTSTATUS eventlog_FlushEventLog(
- [in] policy_handle *handle
- );
-}
diff --git a/source/librpc/idl/idl_types.h b/source/librpc/idl/idl_types.h
deleted file mode 100644
index f21f3e660d6..00000000000
--- a/source/librpc/idl/idl_types.h
+++ /dev/null
@@ -1,86 +0,0 @@
-#define STR_ASCII LIBNDR_FLAG_STR_ASCII
-#define STR_LEN4 LIBNDR_FLAG_STR_LEN4
-#define STR_SIZE4 LIBNDR_FLAG_STR_SIZE4
-#define STR_SIZE2 LIBNDR_FLAG_STR_SIZE2
-#define STR_NOTERM LIBNDR_FLAG_STR_NOTERM
-#define STR_NULLTERM LIBNDR_FLAG_STR_NULLTERM
-#define STR_BYTESIZE LIBNDR_FLAG_STR_BYTESIZE
-#define STR_FIXLEN32 LIBNDR_FLAG_STR_FIXLEN32
-#define STR_FIXLEN15 LIBNDR_FLAG_STR_FIXLEN15
-#define STR_CONFORMANT LIBNDR_FLAG_STR_CONFORMANT
-#define STR_CHARLEN LIBNDR_FLAG_STR_CHARLEN
-#define STR_UTF8 LIBNDR_FLAG_STR_UTF8
-
-/*
- a UCS2 string prefixed with [size], 32 bits
-*/
-#define lstring [flag(STR_SIZE4)] string
-
-/*
- a null terminated UCS2 string
-*/
-#define nstring [flag(STR_NULLTERM)] string
-
-/*
- fixed length 32 character UCS-2 string
-*/
-#define string32 [flag(STR_FIXLEN32)] string
-
-/*
- fixed length 16 character ascii string
-*/
-#define astring15 [flag(STR_ASCII|STR_FIXLEN15)] string
-
-/*
- an ascii string prefixed with [offset] [length], both 32 bits
- null terminated
-*/
-#define ascstr2 [flag(STR_ASCII|STR_LEN4)] string
-
-/*
- an ascii string prefixed with [size], 32 bits
-*/
-#define asclstr [flag(STR_ASCII|STR_SIZE4)] string
-
-/*
- an ascii string prefixed with [size], 16 bits
- null terminated
-*/
-#define ascstr3 [flag(STR_ASCII|STR_SIZE2)] string
-
-/*
- an ascii string prefixed with [size] [offset] [length], all 32 bits
- not null terminated
-*/
-#define ascstr_noterm [flag(STR_NOTERM|STR_ASCII|STR_SIZE4|STR_LEN4)] string
-
-/*
- a null terminated ascii string
-*/
-#define astring [flag(STR_ASCII|STR_NULLTERM)] string
-
-/*
- a null terminated UTF8 string
-*/
-#define utf8string [flag(STR_UTF8|STR_NULLTERM)] string
-
-/*
- a null terminated UCS2 string
-*/
-#define nstring_array [flag(STR_NULLTERM)] string_array
-
-#define NDR_NOALIGN LIBNDR_FLAG_NOALIGN
-#define NDR_REMAINING LIBNDR_FLAG_REMAINING
-#define NDR_ALIGN2 LIBNDR_FLAG_ALIGN2
-#define NDR_ALIGN4 LIBNDR_FLAG_ALIGN4
-#define NDR_ALIGN8 LIBNDR_FLAG_ALIGN8
-
-/* this flag is used to force a section of IDL as little endian. It is
- needed for the epmapper IDL, which is defined as always being LE */
-#define NDR_LITTLE_ENDIAN LIBNDR_FLAG_LITTLE_ENDIAN
-#define NDR_BIG_ENDIAN LIBNDR_FLAG_BIGENDIAN
-
-/*
- this is used to control formatting of uint8 arrays
-*/
-#define NDR_PAHEX LIBNDR_PRINT_ARRAY_HEX
diff --git a/source/librpc/idl/initshutdown.idl b/source/librpc/idl/initshutdown.idl
deleted file mode 100644
index 50d49637c2e..00000000000
--- a/source/librpc/idl/initshutdown.idl
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "idl_types.h"
-
-/*
- initshutdown interface definition
-*/
-
-[
- uuid("894de0c0-0d55-11d3-a322-00c04fa321a1"),
- version(1.0),
- endpoint("ncacn_np:[\\pipe\\InitShutdown]"),
- pointer_default(unique),
- helpstring("Init shutdown service")
-] interface initshutdown
-{
- typedef struct {
- [value(strlen_m_term(name))] uint32 name_size;
- [flag(STR_LEN4|STR_NOTERM)] string name;
- } initshutdown_String_sub;
-
- typedef [public] struct {
- [value(strlen_m(r->name->name)*2)] uint16 name_len;
- [value(strlen_m_term(r->name->name)*2)] uint16 name_size;
- initshutdown_String_sub *name;
- } initshutdown_String;
-
- WERROR initshutdown_Init(
- [in,unique] uint16 *hostname,
- [in,unique] initshutdown_String *message,
- [in] uint32 timeout,
- [in] uint8 force_apps,
- [in] uint8 reboot
- );
-
- WERROR initshutdown_Abort(
- [in,unique] uint16 *server
- );
-
- WERROR initshutdown_InitEx(
- [in,unique] uint16 *hostname,
- [in,unique] initshutdown_String *message,
- [in] uint32 timeout,
- [in] uint8 force_apps,
- [in] uint8 reboot,
- [in] uint32 reason
- );
-}
diff --git a/source/librpc/idl/lsa.idl b/source/librpc/idl/lsa.idl
deleted file mode 100644
index 556ab21af48..00000000000
--- a/source/librpc/idl/lsa.idl
+++ /dev/null
@@ -1,976 +0,0 @@
-#include "idl_types.h"
-
-/*
- lsa interface definition
-*/
-
-import "security.idl";
-
-[ uuid("12345778-1234-abcd-ef00-0123456789ab"),
- version(0.0),
- endpoint("ncacn_np:[\\pipe\\lsarpc]","ncacn_np:[\\pipe\\netlogon]","ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
- pointer_default(unique),
- helpstring("Local Security Authority")
-] interface lsarpc
-{
- declare bitmap security_secinfo;
-
- typedef [public,noejs] struct {
- [value(2*strlen_m(string))] uint16 length;
- [value(2*strlen_m(string))] uint16 size;
- [charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
- } lsa_String;
-
- typedef [public] struct {
- [value(2*strlen_m(string))] uint16 length;
- [value(2*(strlen_m(string)+1))] uint16 size;
- [charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
- } lsa_StringLarge;
-
- typedef [public] struct {
- uint32 count;
- [size_is(count)] lsa_String *names;
- } lsa_Strings;
-
- typedef [public] struct {
- [value(strlen_m(string))] uint16 length;
- [value(strlen_m(string))] uint16 size;
- ascstr_noterm *string;
- } lsa_AsciiString;
-
- /******************/
- /* Function: 0x00 */
- NTSTATUS lsa_Close (
- [in,out] policy_handle *handle
- );
-
-
- /******************/
- /* Function: 0x01 */
- NTSTATUS lsa_Delete (
- [in] policy_handle *handle
- );
-
-
- /******************/
- /* Function: 0x02 */
- typedef struct {
- uint32 low;
- uint32 high;
- } lsa_LUID;
-
- typedef struct {
- lsa_StringLarge name;
- lsa_LUID luid;
- } lsa_PrivEntry;
-
- typedef struct {
- uint32 count;
- [size_is(count)] lsa_PrivEntry *privs;
- } lsa_PrivArray;
-
- NTSTATUS lsa_EnumPrivs (
- [in] policy_handle *handle,
- [in,out] uint32 *resume_handle,
- [in] uint32 max_count,
- [out] lsa_PrivArray *privs
- );
-
- /******************/
- /* Function: 0x03 */
-
- NTSTATUS lsa_QuerySecurity (
- [in] policy_handle *handle,
- [in] security_secinfo sec_info,
- [out,unique] sec_desc_buf *sdbuf
- );
-
-
- /******************/
- /* Function: 0x04 */
- NTSTATUS lsa_SetSecObj ();
-
-
- /******************/
- /* Function: 0x05 */
- NTSTATUS lsa_ChangePassword ();
-
-
- /******************/
- /* Function: 0x06 */
- typedef struct {
- uint32 len; /* ignored */
- uint16 impersonation_level;
- uint8 context_mode;
- uint8 effective_only;
- } lsa_QosInfo;
-
- typedef struct {
- uint32 len; /* ignored */
- uint8 *root_dir;
- [string,charset(UTF16)] uint16 *object_name;
- uint32 attributes;
- security_descriptor *sec_desc;
- lsa_QosInfo *sec_qos;
- } lsa_ObjectAttribute;
-
- /* notice the screwup with the system_name - thats why MS created
- OpenPolicy2 */
- NTSTATUS lsa_OpenPolicy (
- [in,unique] uint16 *system_name,
- [in] lsa_ObjectAttribute *attr,
- [in] uint32 access_mask,
- [out] policy_handle *handle
- );
-
-
-
- /******************/
- /* Function: 0x07 */
-
- typedef struct {
- uint32 percent_full;
- uint32 log_size;
- NTTIME retention_time;
- uint8 shutdown_in_progress;
- NTTIME time_to_shutdown;
- uint32 next_audit_record;
- uint32 unknown;
- } lsa_AuditLogInfo;
-
- typedef struct {
- uint32 auditing_mode;
- [size_is(count)] uint32 *settings;
- uint32 count;
- } lsa_AuditEventsInfo;
-
- typedef struct {
- lsa_StringLarge name;
- dom_sid2 *sid;
- } lsa_DomainInfo;
-
- typedef struct {
- lsa_String name;
- } lsa_PDAccountInfo;
-
- typedef struct {
- uint16 unknown; /* an midl padding bug? */
- uint16 role;
- } lsa_ServerRole;
-
- typedef struct {
- lsa_String source;
- lsa_String account;
- } lsa_ReplicaSourceInfo;
-
- typedef struct {
- uint32 paged_pool;
- uint32 non_paged_pool;
- uint32 min_wss;
- uint32 max_wss;
- uint32 pagefile;
- hyper unknown;
- } lsa_DefaultQuotaInfo;
-
- typedef struct {
- hyper modified_id;
- NTTIME db_create_time;
- } lsa_ModificationInfo;
-
- typedef struct {
- uint8 shutdown_on_full;
- } lsa_AuditFullSetInfo;
-
- typedef struct {
- uint16 unknown; /* an midl padding bug? */
- uint8 shutdown_on_full;
- uint8 log_is_full;
- } lsa_AuditFullQueryInfo;
-
- typedef struct {
- /* it's important that we use the lsa_StringLarge here,
- * because otherwise windows clients result with such dns hostnames
- * e.g. w2k3-client.samba4.samba.orgsamba4.samba.org
- * where it should be
- * w2k3-client.samba4.samba.org
- */
- lsa_StringLarge name;
- lsa_StringLarge dns_domain;
- lsa_StringLarge dns_forest;
- GUID domain_guid;
- dom_sid2 *sid;
- } lsa_DnsDomainInfo;
-
- typedef enum {
- LSA_POLICY_INFO_AUDIT_LOG=1,
- LSA_POLICY_INFO_AUDIT_EVENTS=2,
- LSA_POLICY_INFO_DOMAIN=3,
- LSA_POLICY_INFO_PD=4,
- LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
- LSA_POLICY_INFO_ROLE=6,
- LSA_POLICY_INFO_REPLICA=7,
- LSA_POLICY_INFO_QUOTA=8,
- LSA_POLICY_INFO_DB=9,
- LSA_POLICY_INFO_AUDIT_FULL_SET=10,
- LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
- LSA_POLICY_INFO_DNS=12
- } lsaPolicyInfo;
-
- typedef [switch_type(uint16)] union {
- [case(LSA_POLICY_INFO_AUDIT_LOG)] lsa_AuditLogInfo audit_log;
- [case(LSA_POLICY_INFO_AUDIT_EVENTS)] lsa_AuditEventsInfo audit_events;
- [case(LSA_POLICY_INFO_DOMAIN)] lsa_DomainInfo domain;
- [case(LSA_POLICY_INFO_PD)] lsa_PDAccountInfo pd;
- [case(LSA_POLICY_INFO_ACCOUNT_DOMAIN)] lsa_DomainInfo account_domain;
- [case(LSA_POLICY_INFO_ROLE)] lsa_ServerRole role;
- [case(LSA_POLICY_INFO_REPLICA)] lsa_ReplicaSourceInfo replica;
- [case(LSA_POLICY_INFO_QUOTA)] lsa_DefaultQuotaInfo quota;
- [case(LSA_POLICY_INFO_DB)] lsa_ModificationInfo db;
- [case(LSA_POLICY_INFO_AUDIT_FULL_SET)] lsa_AuditFullSetInfo auditfullset;
- [case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] lsa_AuditFullQueryInfo auditfullquery;
- [case(LSA_POLICY_INFO_DNS)] lsa_DnsDomainInfo dns;
- } lsa_PolicyInformation;
-
- NTSTATUS lsa_QueryInfoPolicy (
- [in] policy_handle *handle,
- [in] uint16 level,
- [out,unique,switch_is(level)] lsa_PolicyInformation *info
- );
-
- /******************/
- /* Function: 0x08 */
- NTSTATUS lsa_SetInfoPolicy ();
-
- /******************/
- /* Function: 0x09 */
- NTSTATUS lsa_ClearAuditLog ();
-
- /******************/
- /* Function: 0x0a */
- NTSTATUS lsa_CreateAccount (
- [in] policy_handle *handle,
- [in] dom_sid2 *sid,
- [in] uint32 access_mask,
- [out] policy_handle *acct_handle
- );
-
- /******************/
- /* NOTE: This only returns accounts that have at least
- one privilege set
- */
- /* Function: 0x0b */
- typedef struct {
- dom_sid2 *sid;
- } lsa_SidPtr;
-
- typedef [public] struct {
- [range(0,1000)] uint32 num_sids;
- [size_is(num_sids)] lsa_SidPtr *sids;
- } lsa_SidArray;
-
- NTSTATUS lsa_EnumAccounts (
- [in] policy_handle *handle,
- [in,out] uint32 *resume_handle,
- [in,range(0,8192)] uint32 num_entries,
- [out] lsa_SidArray *sids
- );
-
-
- /*************************************************/
- /* Function: 0x0c */
-
- NTSTATUS lsa_CreateTrustedDomain(
- [in] policy_handle *handle,
- [in] lsa_DomainInfo *info,
- [in] uint32 access_mask,
- [out] policy_handle *trustdom_handle
- );
-
-
- /******************/
- /* Function: 0x0d */
-
- /* w2k3 treats max_size as max_domains*60 */
- const int LSA_ENUM_TRUST_DOMAIN_MULTIPLIER = 60;
-
- typedef struct {
- uint32 count;
- [size_is(count)] lsa_DomainInfo *domains;
- } lsa_DomainList;
-
- NTSTATUS lsa_EnumTrustDom (
- [in] policy_handle *handle,
- [in,out] uint32 *resume_handle,
- [in,range(0,1000)] uint32 max_size,
- [out] lsa_DomainList *domains
- );
-
-
- /******************/
- /* Function: 0x0e */
- typedef enum {
- SID_NAME_USE_NONE = 0,/* NOTUSED */
- SID_NAME_USER = 1, /* user */
- SID_NAME_DOM_GRP = 2, /* domain group */
- SID_NAME_DOMAIN = 3, /* domain: don't know what this is */
- SID_NAME_ALIAS = 4, /* local group */
- SID_NAME_WKN_GRP = 5, /* well-known group */
- SID_NAME_DELETED = 6, /* deleted account: needed for c2 rating */
- SID_NAME_INVALID = 7, /* invalid account */
- SID_NAME_UNKNOWN = 8, /* oops. */
- SID_NAME_COMPUTER = 9 /* machine */
- } lsa_SidType;
-
- typedef struct {
- lsa_SidType sid_type;
- uint32 rid;
- uint32 sid_index;
- } lsa_TranslatedSid;
-
- typedef struct {
- [range(0,1000)] uint32 count;
- [size_is(count)] lsa_TranslatedSid *sids;
- } lsa_TransSidArray;
-
- const int LSA_REF_DOMAIN_LIST_MULTIPLIER = 32;
- typedef struct {
- [range(0,1000)] uint32 count;
- [size_is(count)] lsa_DomainInfo *domains;
- uint32 max_size;
- } lsa_RefDomainList;
-
- NTSTATUS lsa_LookupNames (
- [in] policy_handle *handle,
- [in,range(0,1000)] uint32 num_names,
- [in,size_is(num_names)] lsa_String names[],
- [out,unique] lsa_RefDomainList *domains,
- [in,out] lsa_TransSidArray *sids,
- [in] uint16 level,
- [in,out] uint32 *count
- );
-
-
- /******************/
- /* Function: 0x0f */
-
- typedef struct {
- lsa_SidType sid_type;
- lsa_String name;
- uint32 sid_index;
- } lsa_TranslatedName;
-
- typedef struct {
- [range(0,1000)] uint32 count;
- [size_is(count)] lsa_TranslatedName *names;
- } lsa_TransNameArray;
-
- NTSTATUS lsa_LookupSids (
- [in] policy_handle *handle,
- [in] lsa_SidArray *sids,
- [out,unique] lsa_RefDomainList *domains,
- [in,out] lsa_TransNameArray *names,
- [in] uint16 level,
- [in,out] uint32 *count
- );
-
-
- /* Function: 0x10 */
- NTSTATUS lsa_CreateSecret(
- [in] policy_handle *handle,
- [in] lsa_String name,
- [in] uint32 access_mask,
- [out] policy_handle *sec_handle
- );
-
-
- /*****************************************/
- /* Function: 0x11 */
- NTSTATUS lsa_OpenAccount (
- [in] policy_handle *handle,
- [in] dom_sid2 *sid,
- [in] uint32 access_mask,
- [out] policy_handle *acct_handle
- );
-
-
- /****************************************/
- /* Function: 0x12 */
-
- typedef struct {
- lsa_LUID luid;
- uint32 attribute;
- } lsa_LUIDAttribute;
-
- typedef struct {
- [range(0,1000)] uint32 count;
- uint32 unknown;
- [size_is(count)] lsa_LUIDAttribute set[*];
- } lsa_PrivilegeSet;
-
- NTSTATUS lsa_EnumPrivsAccount (
- [in] policy_handle *handle,
- [out,unique] lsa_PrivilegeSet *privs
- );
-
-
- /****************************************/
- /* Function: 0x13 */
- NTSTATUS lsa_AddPrivilegesToAccount(
- [in] policy_handle *handle,
- [in] lsa_PrivilegeSet *privs
- );
-
-
- /****************************************/
- /* Function: 0x14 */
- NTSTATUS lsa_RemovePrivilegesFromAccount(
- [in] policy_handle *handle,
- [in] uint8 remove_all,
- [in,unique] lsa_PrivilegeSet *privs
- );
-
- /* Function: 0x15 */
- NTSTATUS lsa_GetQuotasForAccount();
-
- /* Function: 0x16 */
- NTSTATUS lsa_SetQuotasForAccount();
-
- /* Function: 0x17 */
- NTSTATUS lsa_GetSystemAccessAccount();
- /* Function: 0x18 */
- NTSTATUS lsa_SetSystemAccessAccount();
-
- /* Function: 0x19 */
- NTSTATUS lsa_OpenTrustedDomain(
- [in] policy_handle *handle,
- [in] dom_sid2 *sid,
- [in] uint32 access_mask,
- [out] policy_handle *trustdom_handle
- );
-
- typedef [flag(NDR_PAHEX)] struct {
- uint32 length;
- uint32 size;
- [size_is(size),length_is(length)] uint8 *data;
- } lsa_DATA_BUF;
-
- typedef [flag(NDR_PAHEX)] struct {
- [range(0,65536)] uint32 size;
- [size_is(size)] uint8 *data;
- } lsa_DATA_BUF2;
-
- typedef enum {
- LSA_TRUSTED_DOMAIN_INFO_NAME = 1,
- LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO = 2,
- LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET = 3,
- LSA_TRUSTED_DOMAIN_INFO_PASSWORD = 4,
- LSA_TRUSTED_DOMAIN_INFO_BASIC = 5,
- LSA_TRUSTED_DOMAIN_INFO_INFO_EX = 6,
- LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO = 7,
- LSA_TRUSTED_DOMAIN_INFO_FULL_INFO = 8,
- LSA_TRUSTED_DOMAIN_INFO_11 = 11,
- LSA_TRUSTED_DOMAIN_INFO_INFO_ALL = 12
- } lsa_TrustDomInfoEnum;
-
- typedef struct {
- lsa_StringLarge netbios_name;
- } lsa_TrustDomainInfoName;
-
- typedef struct {
- uint32 posix_offset;
- } lsa_TrustDomainInfoPosixOffset;
-
- typedef struct {
- lsa_DATA_BUF *password;
- lsa_DATA_BUF *old_password;
- } lsa_TrustDomainInfoPassword;
-
- typedef struct {
- lsa_String netbios_name;
- dom_sid2 *sid;
- } lsa_TrustDomainInfoBasic;
-
- typedef struct {
- lsa_StringLarge domain_name;
- lsa_StringLarge netbios_name;
- dom_sid2 *sid;
- uint32 trust_direction;
- uint32 trust_type;
- uint32 trust_attributes;
- } lsa_TrustDomainInfoInfoEx;
-
- typedef struct {
- NTTIME_hyper last_update_time;
- uint32 secret_type;
- lsa_DATA_BUF2 data;
- } lsa_TrustDomainInfoBuffer;
-
- typedef struct {
- uint32 incoming_count;
- lsa_TrustDomainInfoBuffer *incoming_current_auth_info;
- lsa_TrustDomainInfoBuffer *incoming_previous_auth_info;
- uint32 outgoing_count;
- lsa_TrustDomainInfoBuffer *outgoing_current_auth_info;
- lsa_TrustDomainInfoBuffer *outgoing_previous_auth_info;
- } lsa_TrustDomainInfoAuthInfo;
-
- typedef struct {
- lsa_TrustDomainInfoInfoEx info_ex;
- lsa_TrustDomainInfoPosixOffset posix_offset;
- lsa_TrustDomainInfoAuthInfo auth_info;
- } lsa_TrustDomainInfoFullInfo;
-
- typedef struct {
- lsa_TrustDomainInfoInfoEx info_ex;
- lsa_DATA_BUF2 data1;
- } lsa_TrustDomainInfo11;
-
- typedef struct {
- lsa_TrustDomainInfoInfoEx info_ex;
- lsa_DATA_BUF2 data1;
- lsa_TrustDomainInfoPosixOffset posix_offset;
- lsa_TrustDomainInfoAuthInfo auth_info;
- } lsa_TrustDomainInfoInfoAll;
-
- typedef [switch_type(lsa_TrustDomInfoEnum)] union {
- [case(LSA_TRUSTED_DOMAIN_INFO_NAME)] lsa_TrustDomainInfoName name;
- [case(LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET)] lsa_TrustDomainInfoPosixOffset posix_offset;
- [case(LSA_TRUSTED_DOMAIN_INFO_PASSWORD)] lsa_TrustDomainInfoPassword password;
- [case(LSA_TRUSTED_DOMAIN_INFO_BASIC)] lsa_TrustDomainInfoBasic info_basic;
- [case(LSA_TRUSTED_DOMAIN_INFO_INFO_EX)] lsa_TrustDomainInfoInfoEx info_ex;
- [case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO)] lsa_TrustDomainInfoAuthInfo auth_info;
- [case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO)] lsa_TrustDomainInfoFullInfo full_info;
- [case(LSA_TRUSTED_DOMAIN_INFO_11)] lsa_TrustDomainInfo11 info11;
- [case(LSA_TRUSTED_DOMAIN_INFO_INFO_ALL)] lsa_TrustDomainInfoInfoAll info_all;
- } lsa_TrustedDomainInfo;
-
- /* Function: 0x1a */
- NTSTATUS lsa_QueryTrustedDomainInfo(
- [in] policy_handle *trustdom_handle,
- [in] lsa_TrustDomInfoEnum level,
- [out,switch_is(level),unique] lsa_TrustedDomainInfo *info
- );
-
- /* Function: 0x1b */
- NTSTATUS lsa_SetInformationTrustedDomain();
-
- /* Function: 0x1c */
- NTSTATUS lsa_OpenSecret(
- [in] policy_handle *handle,
- [in] lsa_String name,
- [in] uint32 access_mask,
- [out] policy_handle *sec_handle
- );
-
- /* Function: 0x1d */
-
- NTSTATUS lsa_SetSecret(
- [in] policy_handle *sec_handle,
- [in,unique] lsa_DATA_BUF *new_val,
- [in,unique] lsa_DATA_BUF *old_val
- );
-
- typedef struct {
- lsa_DATA_BUF *buf;
- } lsa_DATA_BUF_PTR;
-
- /* Function: 0x1e */
- NTSTATUS lsa_QuerySecret (
- [in] policy_handle *sec_handle,
- [in,out,unique] lsa_DATA_BUF_PTR *new_val,
- [in,out,unique] NTTIME_hyper *new_mtime,
- [in,out,unique] lsa_DATA_BUF_PTR *old_val,
- [in,out,unique] NTTIME_hyper *old_mtime
- );
-
- /* Function: 0x1f */
- NTSTATUS lsa_LookupPrivValue(
- [in] policy_handle *handle,
- [in] lsa_String *name,
- [out] lsa_LUID *luid
- );
-
-
- /* Function: 0x20 */
- NTSTATUS lsa_LookupPrivName (
- [in] policy_handle *handle,
- [in] lsa_LUID *luid,
- [out,unique] lsa_StringLarge *name
- );
-
-
- /*******************/
- /* Function: 0x21 */
- NTSTATUS lsa_LookupPrivDisplayName (
- [in] policy_handle *handle,
- [in] lsa_String *name,
- [out,unique] lsa_StringLarge *disp_name,
- /* see http://www.microsoft.com/globaldev/nlsweb/ for
- language definitions */
- [in,out] uint16 *language_id,
- [in] uint16 unknown
- );
-
- /* Function: 0x22 */
- NTSTATUS lsa_DeleteObject();
-
-
- /*******************/
- /* Function: 0x23 */
- NTSTATUS lsa_EnumAccountsWithUserRight (
- [in] policy_handle *handle,
- [in,unique] lsa_String *name,
- [out] lsa_SidArray *sids
- );
-
- /* Function: 0x24 */
- typedef struct {
- [string,charset(UTF16)] uint16 *name;
- } lsa_RightAttribute;
-
- typedef struct {
- uint32 count;
- [size_is(count)] lsa_StringLarge *names;
- } lsa_RightSet;
-
- NTSTATUS lsa_EnumAccountRights (
- [in] policy_handle *handle,
- [in] dom_sid2 *sid,
- [out] lsa_RightSet *rights
- );
-
-
- /**********************/
- /* Function: 0x25 */
- NTSTATUS lsa_AddAccountRights (
- [in] policy_handle *handle,
- [in] dom_sid2 *sid,
- [in] lsa_RightSet *rights
- );
-
- /**********************/
- /* Function: 0x26 */
- NTSTATUS lsa_RemoveAccountRights (
- [in] policy_handle *handle,
- [in] dom_sid2 *sid,
- [in] uint32 unknown,
- [in] lsa_RightSet *rights
- );
-
- /* Function: 0x27 */
- NTSTATUS lsa_QueryTrustedDomainInfoBySid(
- [in] policy_handle *handle,
- [in] dom_sid2 *dom_sid,
- [in] lsa_TrustDomInfoEnum level,
- [out,switch_is(level),unique] lsa_TrustedDomainInfo *info
- );
-
- /* Function: 0x28 */
- NTSTATUS lsa_SetTrustedDomainInfo();
- /* Function: 0x29 */
- NTSTATUS lsa_DeleteTrustedDomain(
- [in] policy_handle *handle,
- [in] dom_sid2 *dom_sid
- );
-
- /* Function: 0x2a */
- NTSTATUS lsa_StorePrivateData();
- /* Function: 0x2b */
- NTSTATUS lsa_RetrievePrivateData();
-
-
- /**********************/
- /* Function: 0x2c */
- NTSTATUS lsa_OpenPolicy2 (
- [in,unique] [string,charset(UTF16)] uint16 *system_name,
- [in] lsa_ObjectAttribute *attr,
- [in] uint32 access_mask,
- [out] policy_handle *handle
- );
-
- /**********************/
- /* Function: 0x2d */
- typedef struct {
- lsa_String *string;
- } lsa_StringPointer;
-
- NTSTATUS lsa_GetUserName(
- [in,unique] [string,charset(UTF16)] uint16 *system_name,
- [in,out,unique] lsa_String *account_name,
- [in,out,unique] lsa_StringPointer *authority_name
- );
-
- /**********************/
- /* Function: 0x2e */
-
- NTSTATUS lsa_QueryInfoPolicy2(
- [in] policy_handle *handle,
- [in] uint16 level,
- [out,unique,switch_is(level)] lsa_PolicyInformation *info
- );
-
- /* Function 0x2f */
- NTSTATUS lsa_SetInfoPolicy2();
-
- /**********************/
- /* Function 0x30 */
- NTSTATUS lsa_QueryTrustedDomainInfoByName(
- [in] policy_handle *handle,
- [in] lsa_String trusted_domain,
- [in] lsa_TrustDomInfoEnum level,
- [out,unique,switch_is(level)] lsa_TrustedDomainInfo *info
- );
-
- /**********************/
- /* Function 0x31 */
- NTSTATUS lsa_SetTrustedDomainInfoByName(
- [in] policy_handle *handle,
- [in] lsa_String trusted_domain,
- [in] lsa_TrustDomInfoEnum level,
- [in,unique,switch_is(level)] lsa_TrustedDomainInfo *info
- );
-
- /* Function 0x32 */
-
- /* w2k3 treats max_size as max_domains*82 */
- const int LSA_ENUM_TRUST_DOMAIN_EX_MULTIPLIER = 82;
-
- typedef struct {
- uint32 count;
- [size_is(count)] lsa_TrustDomainInfoInfoEx *domains;
- } lsa_DomainListEx;
-
- NTSTATUS lsa_EnumTrustedDomainsEx (
- [in] policy_handle *handle,
- [in,out] uint32 *resume_handle,
- [out] lsa_DomainListEx *domains,
- [in] uint32 max_size
- );
-
-
- /* Function 0x33 */
- NTSTATUS lsa_CreateTrustedDomainEx();
-
- /* Function 0x34 */
- NTSTATUS lsa_CloseTrustedDomainEx(
- [in,out] policy_handle *handle
- );
-
- /* Function 0x35 */
-
- /* w2k3 returns either 0x000bbbd000000000 or 0x000a48e800000000
- for unknown6 - gd */
- typedef struct {
- uint32 enforce_restrictions;
- hyper service_tkt_lifetime;
- hyper user_tkt_lifetime;
- hyper user_tkt_renewaltime;
- hyper clock_skew;
- hyper unknown6;
- } lsa_DomainInfoKerberos;
-
- typedef struct {
- uint32 blob_size;
- [size_is(blob_size)] uint8 *efs_blob;
- } lsa_DomainInfoEfs;
-
- typedef enum {
- LSA_DOMAIN_INFO_POLICY_EFS=2,
- LSA_DOMAIN_INFO_POLICY_KERBEROS=3
- } lsa_DomainInfoEnum;
-
- typedef [switch_type(uint16)] union {
- [case(LSA_DOMAIN_INFO_POLICY_EFS)] lsa_DomainInfoEfs efs_info;
- [case(LSA_DOMAIN_INFO_POLICY_KERBEROS)] lsa_DomainInfoKerberos kerberos_info;
- } lsa_DomainInformationPolicy;
-
- NTSTATUS lsa_QueryDomainInformationPolicy(
- [in] policy_handle *handle,
- [in] uint16 level,
- [out,unique,switch_is(level)] lsa_DomainInformationPolicy *info
- );
-
- /* Function 0x36 */
- NTSTATUS lsa_SetDomainInformationPolicy(
- [in] policy_handle *handle,
- [in] uint16 level,
- [in,unique,switch_is(level)] lsa_DomainInformationPolicy *info
- );
-
- /**********************/
- /* Function 0x37 */
- NTSTATUS lsa_OpenTrustedDomainByName(
- [in] policy_handle *handle,
- [in] lsa_String name,
- [in] uint32 access_mask,
- [out] policy_handle *trustdom_handle
- );
-
- /* Function 0x38 */
- NTSTATUS lsa_TestCall();
-
- /**********************/
- /* Function 0x39 */
-
- typedef struct {
- lsa_SidType sid_type;
- lsa_String name;
- uint32 sid_index;
- uint32 unknown;
- } lsa_TranslatedName2;
-
- typedef struct {
- [range(0,1000)] uint32 count;
- [size_is(count)] lsa_TranslatedName2 *names;
- } lsa_TransNameArray2;
-
- NTSTATUS lsa_LookupSids2(
- [in] policy_handle *handle,
- [in] lsa_SidArray *sids,
- [out,unique] lsa_RefDomainList *domains,
- [in,out] lsa_TransNameArray2 *names,
- [in] uint16 level,
- [in,out] uint32 *count,
- [in] uint32 unknown1,
- [in] uint32 unknown2
- );
-
- /**********************/
- /* Function 0x3a */
-
- typedef struct {
- lsa_SidType sid_type;
- uint32 rid;
- uint32 sid_index;
- uint32 unknown;
- } lsa_TranslatedSid2;
-
- typedef struct {
- [range(0,1000)] uint32 count;
- [size_is(count)] lsa_TranslatedSid2 *sids;
- } lsa_TransSidArray2;
-
- NTSTATUS lsa_LookupNames2 (
- [in] policy_handle *handle,
- [in,range(0,1000)] uint32 num_names,
- [in,size_is(num_names)] lsa_String names[],
- [out,unique] lsa_RefDomainList *domains,
- [in,out] lsa_TransSidArray2 *sids,
- [in] uint16 level,
- [in,out] uint32 *count,
- [in] uint32 unknown1,
- [in] uint32 unknown2
- );
-
- /* Function 0x3b */
- NTSTATUS lsa_CreateTrustedDomainEx2();
-
- /* Function 0x3c */
- NTSTATUS lsa_CREDRWRITE();
-
- /* Function 0x3d */
- NTSTATUS lsa_CREDRREAD();
-
- /* Function 0x3e */
- NTSTATUS lsa_CREDRENUMERATE();
-
- /* Function 0x3f */
- NTSTATUS lsa_CREDRWRITEDOMAINCREDENTIALS();
-
- /* Function 0x40 */
- NTSTATUS lsa_CREDRREADDOMAINCREDENTIALS();
-
- /* Function 0x41 */
- NTSTATUS lsa_CREDRDELETE();
-
- /* Function 0x42 */
- NTSTATUS lsa_CREDRGETTARGETINFO();
-
- /* Function 0x43 */
- NTSTATUS lsa_CREDRPROFILELOADED();
-
- /**********************/
- /* Function 0x44 */
- typedef struct {
- lsa_SidType sid_type;
- dom_sid2 *sid;
- uint32 sid_index;
- uint32 unknown;
- } lsa_TranslatedSid3;
-
- typedef struct {
- [range(0,1000)] uint32 count;
- [size_is(count)] lsa_TranslatedSid3 *sids;
- } lsa_TransSidArray3;
-
- NTSTATUS lsa_LookupNames3 (
- [in] policy_handle *handle,
- [in,range(0,1000)] uint32 num_names,
- [in,size_is(num_names)] lsa_String names[],
- [out,unique] lsa_RefDomainList *domains,
- [in,out] lsa_TransSidArray3 *sids,
- [in] uint16 level,
- [in,out] uint32 *count,
- [in] uint32 unknown1,
- [in] uint32 unknown2
- );
-
- /* Function 0x45 */
- NTSTATUS lsa_CREDRGETSESSIONTYPES();
-
- /* Function 0x46 */
- NTSTATUS lsa_LSARREGISTERAUDITEVENT();
-
- /* Function 0x47 */
- NTSTATUS lsa_LSARGENAUDITEVENT();
-
- /* Function 0x48 */
- NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
-
- /* Function 0x49 */
- NTSTATUS lsa_LSARQUERYFORESTTRUSTINFORMATION();
-
- /* Function 0x4a */
- NTSTATUS lsa_LSARSETFORESTTRUSTINFORMATION();
-
- /* Function 0x4b */
- NTSTATUS lsa_CREDRRENAME();
-
- /*****************/
- /* Function 0x4c */
-
- NTSTATUS lsa_LookupSids3(
- [in] lsa_SidArray *sids,
- [out,unique] lsa_RefDomainList *domains,
- [in,out] lsa_TransNameArray2 *names,
- [in] uint16 level,
- [in,out] uint32 *count,
- [in] uint32 unknown1,
- [in] uint32 unknown2
- );
-
- /* Function 0x4d */
- NTSTATUS lsa_LookupNames4(
- [in,range(0,1000)] uint32 num_names,
- [in,size_is(num_names)] lsa_String names[],
- [out,unique] lsa_RefDomainList *domains,
- [in,out] lsa_TransSidArray3 *sids,
- [in] uint16 level,
- [in,out] uint32 *count,
- [in] uint32 unknown1,
- [in] uint32 unknown2
- );
-
- /* Function 0x4e */
- NTSTATUS lsa_LSAROPENPOLICYSCE();
-
- /* Function 0x4f */
- NTSTATUS lsa_LSARADTREGISTERSECURITYEVENTSOURCE();
-
- /* Function 0x50 */
- NTSTATUS lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE();
-
- /* Function 0x51 */
- NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();
-
-}
diff --git a/source/librpc/idl/messaging.idl b/source/librpc/idl/messaging.idl
deleted file mode 100644
index b1158ca189b..00000000000
--- a/source/librpc/idl/messaging.idl
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "idl_types.h"
-
-/*
- IDL structures for messaging code
-*/
-
-[
- pointer_default(unique)
-]
-interface messaging
-{
- /* messaging struct sent across the sockets and stored in the tdb */
-
- typedef [public] struct {
- uint32 msg_version;
- uint32 msg_type;
- server_id dest;
- server_id src;
- DATA_BLOB buf;
- } messaging_rec;
-
- typedef [public] struct {
- uint32 num_messages;
- messaging_rec messages[num_messages];
- } messaging_array;
-}
diff --git a/source/librpc/idl/misc.idl b/source/librpc/idl/misc.idl
deleted file mode 100644
index 353457dd02f..00000000000
--- a/source/librpc/idl/misc.idl
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- miscellaneous IDL structures
-*/
-
-
-[
- pointer_default(unique)
-]
-interface misc
-{
- typedef [public,noprint,gensize,noejs] struct {
- uint32 time_low;
- uint16 time_mid;
- uint16 time_hi_and_version;
- uint8 clock_seq[2];
- uint8 node[6];
- } GUID;
-
- typedef [public] struct {
- uint32 handle_type;
- GUID uuid;
- } policy_handle;
-
- /* secure channel types */
- /* Only SEC_CHAN_WKSTA can forward requests to other domains. */
-
- typedef [public] enum {
- SEC_CHAN_WKSTA = 2,
- SEC_CHAN_DOMAIN = 4,
- SEC_CHAN_BDC = 6
- } netr_SchannelType;
-
- /* SAM database types */
- typedef [public,v1_enum] enum {
- SAM_DATABASE_DOMAIN = 0, /* Domain users and groups */
- SAM_DATABASE_BUILTIN = 1, /* BUILTIN users and groups */
- SAM_DATABASE_PRIVS = 2 /* Privileges */
- } netr_SamDatabaseID;
-
- typedef [public,v1_enum] enum {
- SAMR_REJECT_OTHER = 0,
- SAMR_REJECT_TOO_SHORT = 1,
- SAMR_REJECT_COMPLEXITY = 2
- } samr_RejectReason;
-
-
-}
diff --git a/source/librpc/idl/netlogon.idl b/source/librpc/idl/netlogon.idl
deleted file mode 100644
index 139975fe128..00000000000
--- a/source/librpc/idl/netlogon.idl
+++ /dev/null
@@ -1,1204 +0,0 @@
-/*
- netlogon interface
- much of this was derived from the ethereal sources - thanks to everyone
- who contributed!
-*/
-
-#include "idl_types.h"
-
-import "lsa.idl", "samr.idl", "security.idl";
-
-
-[
- uuid("12345678-1234-abcd-ef00-01234567cffb"),
- version(1.0),
- endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:","ncalrpc:"),
- pointer_default(unique),
- pointer_default_top(unique)
-]
-
-interface netlogon
-{
- declare bitmap samr_AcctFlags;
-
- /*****************/
- /* Function 0x00 */
-
- typedef struct {
- [string,charset(UTF16)] uint16 *account_name;
- uint32 priv;
- uint32 auth_flags;
- uint32 logon_count;
- uint32 bad_pw_count;
- time_t last_logon;
- time_t last_logoff;
- time_t logoff_time;
- time_t kickoff_time;
- uint32 password_age;
- time_t pw_can_change;
- time_t pw_must_change;
- [string,charset(UTF16)] uint16 *computer;
- [string,charset(UTF16)] uint16 *domain;
- [string,charset(UTF16)] uint16 *script_path;
- uint32 unknown;
- } netr_UasInfo;
-
- WERROR netr_LogonUasLogon(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 account_name[],
- [in] [string,charset(UTF16)] uint16 workstation[],
- [out] netr_UasInfo *info
- );
-
-
- /*****************/
- /* Function 0x01 */
-
- typedef struct {
- uint32 duration;
- uint16 logon_count;
- } netr_UasLogoffInfo;
-
- WERROR netr_LogonUasLogoff(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 account_name[],
- [in] [string,charset(UTF16)] uint16 workstation[],
- [out,ref] netr_UasLogoffInfo *info
- );
-
-
- /*****************/
- /* Function 0x02 */
-
- /* in netr_AcctLockStr size seems to be be 24, and rrenard thinks
- that the structure of the bindata looks like this:
-
- dlong lockout_duration;
- udlong reset_count;
- uint32 bad_attempt_lockout;
- uint32 dummy;
-
- but it doesn't look as though this structure is reflected at the
- NDR level. Maybe it is left to the application to decode the bindata array.
- */
- typedef struct {
- uint16 size;
- uint16 length;
- [size_is(size/2),length_is(length/2)] uint16 *bindata;
- } netr_AcctLockStr;
-
- const int MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 0x002;
- const int MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 0x020;
- const int MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 0x800;
-
- typedef struct {
- lsa_String domain_name;
- uint32 parameter_control; /* see MSV1_0_* */
- uint32 logon_id_low;
- uint32 logon_id_high;
- lsa_String account_name;
- lsa_String workstation;
- } netr_IdentityInfo;
-
- typedef struct {
- netr_IdentityInfo identity_info;
- samr_Password lmpassword;
- samr_Password ntpassword;
- } netr_PasswordInfo;
-
- typedef [flag(NDR_PAHEX)] struct {
- uint16 length;
- [value(length)] uint16 size;
- [size_is(length),length_is(length)] uint8 *data;
- } netr_ChallengeResponse;
-
- typedef [flag(NDR_PAHEX)] struct {
- netr_IdentityInfo identity_info;
- uint8 challenge[8];
- netr_ChallengeResponse nt;
- netr_ChallengeResponse lm;
- } netr_NetworkInfo;
-
- typedef [public,switch_type(uint16)] union {
- [case(1)] netr_PasswordInfo *password;
- [case(2)] netr_NetworkInfo *network;
- [case(3)] netr_PasswordInfo *password;
- [case(5)] netr_PasswordInfo *password;
- [case(6)] netr_NetworkInfo *network;
- } netr_LogonLevel;
-
- typedef [public] struct {
- uint32 rid;
- uint32 attributes;
- } netr_GroupMembership;
-
- typedef [public,flag(NDR_PAHEX)] struct {
- uint8 key[16];
- } netr_UserSessionKey;
-
- typedef [public,flag(NDR_PAHEX)] struct {
- uint8 key[8];
- } netr_LMSessionKey;
-
- /* Flags for user_flags below */
- typedef [public,bitmap32bit] bitmap {
- NETLOGON_GUEST = 0x0001,
- NETLOGON_NOENCRYPTION = 0x0002,
- NETLOGON_CACHED_ACCOUNT = 0x0004,
- NETLOGON_USED_LM_PASSWORD = 0x0008,
- NETLOGON_EXTRA_SIDS = 0x0020,
- NETLOGON_SUBAUTH_SESSION_KEY = 0x0040,
- NETLOGON_SERVER_TRUST_ACCOUNT = 0x0080,
- NETLOGON_NTLMV2_ENABLED = 0x0100,
- NETLOGON_RESOURCE_GROUPS = 0x0200,
- NETLOGON_PROFILE_PATH_RETURNED = 0x0400
- } netr_UserFlags;
-
- typedef struct {
- NTTIME last_logon;
- NTTIME last_logoff;
- NTTIME acct_expiry;
- NTTIME last_password_change;
- NTTIME allow_password_change;
- NTTIME force_password_change;
- lsa_String account_name;
- lsa_String full_name;
- lsa_String logon_script;
- lsa_String profile_path;
- lsa_String home_directory;
- lsa_String home_drive;
- uint16 logon_count;
- uint16 bad_password_count;
- uint32 rid;
- uint32 primary_gid;
- samr_RidWithAttributeArray groups;
- netr_UserFlags user_flags;
- netr_UserSessionKey key;
- lsa_StringLarge logon_server;
- lsa_StringLarge domain;
- dom_sid2 *domain_sid;
- netr_LMSessionKey LMSessKey;
- samr_AcctFlags acct_flags;
- uint32 unknown[7];
- } netr_SamBaseInfo;
-
- typedef struct {
- netr_SamBaseInfo base;
- } netr_SamInfo2;
-
- typedef struct {
- dom_sid2 *sid;
- uint32 attribute;
- } netr_SidAttr;
-
- typedef [public] struct {
- netr_SamBaseInfo base;
- uint32 sidcount;
- [size_is(sidcount)] netr_SidAttr *sids;
- } netr_SamInfo3;
-
- typedef struct {
- netr_SamBaseInfo base;
- uint32 sidcount;
- [size_is(sidcount)] netr_SidAttr *sids;
- lsa_String forest;
- lsa_String principle;
- uint32 unknown4[20];
- } netr_SamInfo6;
-
- typedef struct {
- uint32 pac_size;
- [size_is(pac_size)] uint8 *pac;
- lsa_String logon_domain;
- lsa_String logon_server;
- lsa_String principal_name;
- uint32 auth_size;
- [size_is(auth_size)] uint8 *auth;
- netr_UserSessionKey user_session_key;
- uint32 expansionroom[10];
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- } netr_PacInfo;
-
- typedef [public,switch_type(uint16)] union {
- [case(2)] netr_SamInfo2 *sam2;
- [case(3)] netr_SamInfo3 *sam3;
- [case(4)] netr_PacInfo *pac;
- [case(5)] netr_PacInfo *pac;
- [case(6)] netr_SamInfo6 *sam6;
- } netr_Validation;
-
- typedef [public, flag(NDR_PAHEX)] struct {
- uint8 data[8];
- } netr_Credential;
-
- typedef [public] struct {
- netr_Credential cred;
- time_t timestamp;
- } netr_Authenticator;
-
- NTSTATUS netr_LogonSamLogon(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 *computer_name,
- [in] netr_Authenticator *credential,
- [in][out] netr_Authenticator *return_authenticator,
- [in] uint16 logon_level,
- [in] [switch_is(logon_level)] netr_LogonLevel logon,
- [in] uint16 validation_level,
- [out,ref] [switch_is(validation_level)] netr_Validation *validation,
- [out,ref] uint8 *authoritative
- );
-
-
- /*****************/
- /* Function 0x03 */
-
- NTSTATUS netr_LogonSamLogoff(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 *computer_name,
- [in] netr_Authenticator *credential,
- [in][out] netr_Authenticator *return_authenticator,
- [in] uint16 logon_level,
- [in] [switch_is(logon_level)] netr_LogonLevel logon
- );
-
-
-
- /*****************/
- /* Function 0x04 */
-
- NTSTATUS netr_ServerReqChallenge(
- [in,string,charset(UTF16)] uint16 *server_name,
- [in,string,charset(UTF16)] uint16 computer_name[],
- [in,out,ref] netr_Credential *credentials
- );
-
-
- /*****************/
- /* Function 0x05 */
-
- declare enum netr_SchannelType;
-
- NTSTATUS netr_ServerAuthenticate(
- [in,string,charset(UTF16)] uint16 *server_name,
- [in,string,charset(UTF16)] uint16 account_name[],
- [in] netr_SchannelType secure_channel_type,
- [in,string,charset(UTF16)] uint16 computer_name[],
- [in,out,ref] netr_Credential *credentials
- );
-
-
- /*****************/
- /* Function 0x06 */
-
- NTSTATUS netr_ServerPasswordSet(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 account_name[],
- [in] netr_SchannelType secure_channel_type,
- [in] [string,charset(UTF16)] uint16 computer_name[],
- [in] netr_Authenticator credential,
- [in] samr_Password new_password,
- [out,ref] netr_Authenticator *return_authenticator
- );
-
-
- /*****************/
- /* Function 0x07 */
-
- declare enum netr_SamDatabaseID;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *account_name;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_DELETE_USER;
-
- typedef struct {
- uint16 length;
- [value(length)] uint16 size;
- uint32 flags;
- samr_Password pwd;
- } netr_USER_KEY16;
-
- typedef struct {
- uint16 nt_length;
- uint16 nt_size;
- uint32 nt_flags;
- uint16 lm_length;
- uint16 lm_size;
- uint32 lm_flags;
- uint8 nt_history[nt_length];
- uint8 lm_history[lm_length];
- } netr_PasswordHistory;
-
- typedef struct {
- netr_USER_KEY16 lmpassword;
- netr_USER_KEY16 ntpassword;
- netr_PasswordHistory lmhistory;
- } netr_USER_KEYS2;
-
- typedef struct {
- netr_USER_KEYS2 keys2;
- } netr_USER_KEY_UNION;
-
- typedef [public] struct {
- uint32 version;
- netr_USER_KEY_UNION keys;
- } netr_USER_KEYS;
-
- typedef struct {
- boolean8 SensitiveDataFlag;
- uint32 DataLength;
-
- /* netr_USER_KEYS encrypted with the session key */
- [size_is(DataLength)][flag(NDR_PAHEX)] uint8 *SensitiveData;
- } netr_USER_PRIVATE_INFO;
-
- typedef struct {
- lsa_String account_name;
- lsa_String full_name;
- uint32 rid;
- uint32 primary_gid;
- lsa_String home_directory;
- lsa_String home_drive;
- lsa_String logon_script;
- lsa_String description;
- lsa_String workstations;
- NTTIME last_logon;
- NTTIME last_logoff;
- samr_LogonHours logon_hours;
- uint16 bad_password_count;
- uint16 logon_count;
- NTTIME last_password_change;
- NTTIME acct_expiry;
- samr_AcctFlags acct_flags;
- samr_Password lmpassword;
- samr_Password ntpassword;
- boolean8 nt_password_present;
- boolean8 lm_password_present;
- boolean8 password_expired;
- lsa_String comment;
- lsa_String parameters;
- uint16 country_code;
- uint16 code_page;
- netr_USER_PRIVATE_INFO user_private_info;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- lsa_String profile_path;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_USER;
-
- typedef struct {
- lsa_String domain_name;
- lsa_String comment;
- dlong force_logoff_time;
- uint16 min_password_length;
- uint16 password_history_length;
- /* yes, these are signed. They are in negative 100ns */
- dlong max_password_age;
- dlong min_password_age;
- udlong sequence_num;
- NTTIME domain_create_time;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- netr_AcctLockStr account_lockout;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 logon_to_chgpass;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_DOMAIN;
-
- typedef struct {
- lsa_String group_name;
- uint32 rid;
- uint32 attributes;
- lsa_String description;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_GROUP;
-
- typedef struct {
- lsa_String OldName;
- lsa_String NewName;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_RENAME;
-
- typedef struct {
- [size_is(num_rids)] uint32 *rids;
- [size_is(num_rids)] uint32 *attribs;
- uint32 num_rids;
- uint32 unknown1;
- uint32 unknown2;
- uint32 unknown3;
- uint32 unknown4;
- } netr_DELTA_GROUP_MEMBER;
-
- typedef struct {
- lsa_String alias_name;
- uint32 rid;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- lsa_String description;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_ALIAS;
-
- typedef struct {
- lsa_SidArray sids;
- uint32 unknown1;
- uint32 unknown2;
- uint32 unknown3;
- uint32 unknown4;
- } netr_DELTA_ALIAS_MEMBER;
-
- typedef struct {
- uint32 pagedpoollimit;
- uint32 nonpagedpoollimit;
- uint32 minimumworkingsetsize;
- uint32 maximumworkingsetsize;
- uint32 pagefilelimit;
- NTTIME timelimit;
- } netr_QUOTA_LIMITS;
-
- typedef struct {
- uint32 maxlogsize;
- NTTIME auditretentionperiod;
- boolean8 auditingmode;
- uint32 maxauditeventcount;
- [size_is(maxauditeventcount+1)] uint32 *eventauditoptions;
- lsa_String primary_domain_name;
- dom_sid2 *sid;
- netr_QUOTA_LIMITS quota_limits;
- udlong sequence_num;
- NTTIME db_create_time;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_POLICY;
-
- typedef struct {
- lsa_String domain_name;
- uint32 num_controllers;
- [size_is(num_controllers)] lsa_String *controller_names;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 posix_offset;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_TRUSTED_DOMAIN;
-
- typedef struct {
- uint16 unknown;
- } netr_DELTA_DELETE_TRUST;
-
- typedef struct {
- uint32 privilege_entries;
- uint32 privilege_control;
- [size_is(privilege_entries)] uint32 *privilege_attrib;
- [size_is(privilege_entries)] lsa_String *privilege_name;
- netr_QUOTA_LIMITS quotalimits;
- uint32 system_flags;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_ACCOUNT;
-
- typedef struct {
- uint16 unknown;
- } netr_DELTA_DELETE_ACCOUNT;
-
- typedef struct {
- uint16 unknown;
- } netr_DELTA_DELETE_SECRET;
-
- typedef struct {
- uint32 len;
- uint32 maxlen;
- [size_is(maxlen)][length_is(len)] uint8 *cipher_data;
- } netr_CIPHER_VALUE;
-
- typedef struct {
- netr_CIPHER_VALUE current_cipher;
- NTTIME current_cipher_set_time;
- netr_CIPHER_VALUE old_cipher;
- NTTIME old_cipher_set_time;
- uint32 SecurityInformation;
- sec_desc_buf sdbuf;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- lsa_String unknown4;
- uint32 unknown5;
- uint32 unknown6;
- uint32 unknown7;
- uint32 unknown8;
- } netr_DELTA_SECRET;
-
- typedef enum {
- NETR_DELTA_DOMAIN = 1,
- NETR_DELTA_GROUP = 2,
- NETR_DELTA_DELETE_GROUP = 3,
- NETR_DELTA_RENAME_GROUP = 4,
- NETR_DELTA_USER = 5,
- NETR_DELTA_DELETE_USER = 6,
- NETR_DELTA_RENAME_USER = 7,
- NETR_DELTA_GROUP_MEMBER = 8,
- NETR_DELTA_ALIAS = 9,
- NETR_DELTA_DELETE_ALIAS = 10,
- NETR_DELTA_RENAME_ALIAS = 11,
- NETR_DELTA_ALIAS_MEMBER = 12,
- NETR_DELTA_POLICY = 13,
- NETR_DELTA_TRUSTED_DOMAIN = 14,
- NETR_DELTA_DELETE_TRUST = 15,
- NETR_DELTA_ACCOUNT = 16,
- NETR_DELTA_DELETE_ACCOUNT = 17,
- NETR_DELTA_SECRET = 18,
- NETR_DELTA_DELETE_SECRET = 19,
- NETR_DELTA_DELETE_GROUP2 = 20,
- NETR_DELTA_DELETE_USER2 = 21,
- NETR_DELTA_MODIFY_COUNT = 22
- } netr_DeltaEnum;
-
- typedef [switch_type(netr_DeltaEnum)] union {
- [case(NETR_DELTA_DOMAIN)] netr_DELTA_DOMAIN *domain;
- [case(NETR_DELTA_GROUP)] netr_DELTA_GROUP *group;
- [case(NETR_DELTA_DELETE_GROUP)] ; /* rid only */
- [case(NETR_DELTA_RENAME_GROUP)] netr_DELTA_RENAME *rename_group;
- [case(NETR_DELTA_USER)] netr_DELTA_USER *user;
- [case(NETR_DELTA_DELETE_USER)] ; /* rid only */
- [case(NETR_DELTA_RENAME_USER)] netr_DELTA_RENAME *rename_user;
- [case(NETR_DELTA_GROUP_MEMBER)] netr_DELTA_GROUP_MEMBER *group_member;
- [case(NETR_DELTA_ALIAS)] netr_DELTA_ALIAS *alias;
- [case(NETR_DELTA_DELETE_ALIAS)] ; /* rid only */
- [case(NETR_DELTA_RENAME_ALIAS)] netr_DELTA_RENAME *rename_alias;
- [case(NETR_DELTA_ALIAS_MEMBER)] netr_DELTA_ALIAS_MEMBER *alias_member;
- [case(NETR_DELTA_POLICY)] netr_DELTA_POLICY *policy;
- [case(NETR_DELTA_TRUSTED_DOMAIN)] netr_DELTA_TRUSTED_DOMAIN *trusted_domain;
- [case(NETR_DELTA_DELETE_TRUST)] netr_DELTA_DELETE_TRUST delete_trust;
- [case(NETR_DELTA_ACCOUNT)] netr_DELTA_ACCOUNT *account;
- [case(NETR_DELTA_DELETE_ACCOUNT)] netr_DELTA_DELETE_ACCOUNT delete_account;
- [case(NETR_DELTA_SECRET)] netr_DELTA_SECRET *secret;
- [case(NETR_DELTA_DELETE_SECRET)] netr_DELTA_DELETE_SECRET delete_secret;
- [case(NETR_DELTA_DELETE_GROUP2)] netr_DELTA_DELETE_USER *delete_group;
- [case(NETR_DELTA_DELETE_USER2)] netr_DELTA_DELETE_USER *delete_user;
- [case(NETR_DELTA_MODIFY_COUNT)] udlong *modified_count;
- } netr_DELTA_UNION;
-
- typedef [switch_type(netr_DeltaEnum)] union {
- [case(NETR_DELTA_DOMAIN)] uint32 rid;
- [case(NETR_DELTA_GROUP)] uint32 rid;
- [case(NETR_DELTA_DELETE_GROUP)] uint32 rid;
- [case(NETR_DELTA_RENAME_GROUP)] uint32 rid;
- [case(NETR_DELTA_USER)] uint32 rid;
- [case(NETR_DELTA_DELETE_USER)] uint32 rid;
- [case(NETR_DELTA_RENAME_USER)] uint32 rid;
- [case(NETR_DELTA_GROUP_MEMBER)] uint32 rid;
- [case(NETR_DELTA_ALIAS)] uint32 rid;
- [case(NETR_DELTA_DELETE_ALIAS)] uint32 rid;
- [case(NETR_DELTA_RENAME_ALIAS)] uint32 rid;
- [case(NETR_DELTA_ALIAS_MEMBER)] uint32 rid;
- [case(NETR_DELTA_POLICY)] dom_sid2 *sid;
- [case(NETR_DELTA_TRUSTED_DOMAIN)] dom_sid2 *sid;
- [case(NETR_DELTA_DELETE_TRUST)] dom_sid2 *sid;
- [case(NETR_DELTA_ACCOUNT)] dom_sid2 *sid;
- [case(NETR_DELTA_DELETE_ACCOUNT)] dom_sid2 *sid;
- [case(NETR_DELTA_SECRET)] [string,charset(UTF16)] uint16 *name;
- [case(NETR_DELTA_DELETE_SECRET)] [string,charset(UTF16)] uint16 *name;
- [case(NETR_DELTA_DELETE_GROUP2)] uint32 rid;
- [case(NETR_DELTA_DELETE_USER2)] uint32 rid;
- [case(NETR_DELTA_MODIFY_COUNT)] ;
- } netr_DELTA_ID_UNION;
-
- typedef struct {
- netr_DeltaEnum delta_type;
- [switch_is(delta_type)] netr_DELTA_ID_UNION delta_id_union;
- [switch_is(delta_type)] netr_DELTA_UNION delta_union;
- } netr_DELTA_ENUM;
-
- typedef struct {
- uint32 num_deltas;
- [size_is(num_deltas)] netr_DELTA_ENUM *delta_enum;
- } netr_DELTA_ENUM_ARRAY;
-
-
- NTSTATUS netr_DatabaseDeltas(
- [in] [string,charset(UTF16)] uint16 logon_server[],
- [in] [string,charset(UTF16)] uint16 computername[],
- [in] netr_Authenticator credential,
- [in,out,ref] netr_Authenticator *return_authenticator,
- [in] netr_SamDatabaseID database_id,
- [in,out,ref] udlong *sequence_num,
- [in] uint32 preferredmaximumlength,
- [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
- );
-
-
- /*****************/
- /* Function 0x08 */
-
- NTSTATUS netr_DatabaseSync(
- [in] [string,charset(UTF16)] uint16 logon_server[],
- [in] [string,charset(UTF16)] uint16 computername[],
- [in] netr_Authenticator credential,
- [in,out,ref] netr_Authenticator *return_authenticator,
- [in] netr_SamDatabaseID database_id,
- [in,out,ref] uint32 *sync_context,
- [in] uint32 preferredmaximumlength,
- [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
- );
-
-
- /*****************/
- /* Function 0x09 */
-
- /* w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this call */
-
- typedef [flag(NDR_PAHEX)] struct {
- uint8 computer_name[16];
- uint32 timecreated;
- uint32 serial_number;
- } netr_UAS_INFO_0;
-
- typedef struct {
- [flag(NDR_REMAINING)] DATA_BLOB blob;
- } netr_AccountBuffer;
-
- NTSTATUS netr_AccountDeltas(
- [in] [string,charset(UTF16)] uint16 *logon_server,
- [in] [string,charset(UTF16)] uint16 computername[],
- [in] netr_Authenticator credential,
- [in,out,ref] netr_Authenticator *return_authenticator,
- [in] netr_UAS_INFO_0 uas,
- [in] uint32 count,
- [in] uint32 level,
- [in] uint32 buffersize,
- [out,ref,subcontext(4)] netr_AccountBuffer *buffer,
- [out,ref] uint32 *count_returned,
- [out,ref] uint32 *total_entries,
- [out,ref] netr_UAS_INFO_0 *recordid
- );
-
-
- /*****************/
- /* Function 0x0A */
-
- NTSTATUS netr_AccountSync(
- [in] [string,charset(UTF16)] uint16 *logon_server,
- [in] [string,charset(UTF16)] uint16 computername[],
- [in] netr_Authenticator credential,
- [in,out,ref] netr_Authenticator *return_authenticator,
- [in] uint32 reference,
- [in] uint32 level,
- [in] uint32 buffersize,
- [out,ref,subcontext(4)] netr_AccountBuffer *buffer,
- [out,ref] uint32 *count_returned,
- [out,ref] uint32 *total_entries,
- [out,ref] uint32 *next_reference,
- [in,out,ref] netr_UAS_INFO_0 *recordid
- );
-
-
- /*****************/
- /* Function 0x0B */
-
- NTSTATUS netr_GetDcName(
- [in] [string,charset(UTF16)] uint16 logon_server[],
- [in] [string,charset(UTF16)] uint16 *domainname,
- [out,ref] [string,charset(UTF16)] uint16 **dcname
- );
-
- /*****************/
- /* Function 0x0C */
-
- typedef struct {
- uint32 flags;
- uint32 pdc_connection_status;
- } netr_NETLOGON_INFO_1;
-
- typedef struct {
- uint32 flags;
- uint32 pdc_connection_status;
- [string,charset(UTF16)] uint16 trusted_dc_name[];
- uint32 tc_connection_status;
- } netr_NETLOGON_INFO_2;
-
- typedef struct {
- uint32 flags;
- uint32 logon_attempts;
- uint32 unknown1;
- uint32 unknown2;
- uint32 unknown3;
- uint32 unknown4;
- uint32 unknown5;
- } netr_NETLOGON_INFO_3;
-
- typedef union {
- [case(1)] netr_NETLOGON_INFO_1 *info1;
- [case(2)] netr_NETLOGON_INFO_2 *info2;
- [case(3)] netr_NETLOGON_INFO_3 *info3;
- } netr_CONTROL_QUERY_INFORMATION;
-
- /* function_code values */
- typedef [v1_enum] enum {
- NETLOGON_CONTROL_REDISCOVER = 5,
- NETLOGON_CONTROL_TC_QUERY = 6,
- NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7,
- NETLOGON_CONTROL_SET_DBFLAG = 65534
- } netr_LogonControlCode;
-
- WERROR netr_LogonControl(
- [in] [string,charset(UTF16)] uint16 *logon_server,
- [in] netr_LogonControlCode function_code,
- [in] uint32 level,
- [out,ref,switch_is(level)] netr_CONTROL_QUERY_INFORMATION *info
- );
-
-
- /*****************/
- /* Function 0x0D */
-
- WERROR netr_GetAnyDCName(
- [in] [string,charset(UTF16)] uint16 *logon_server,
- [in] [string,charset(UTF16)] uint16 *domainname,
- [out,ref] [string,charset(UTF16)] uint16 **dcname
- );
-
-
- /*****************/
- /* Function 0x0E */
-
- typedef union {
- [case(NETLOGON_CONTROL_REDISCOVER)] [string,charset(UTF16)] uint16 *domain;
- [case(NETLOGON_CONTROL_TC_QUERY)] [string,charset(UTF16)] uint16 *domain;
- [case(NETLOGON_CONTROL_TRANSPORT_NOTIFY)] [string,charset(UTF16)] uint16 *domain;
- [case(NETLOGON_CONTROL_SET_DBFLAG)] uint32 debug_level;
- } netr_CONTROL_DATA_INFORMATION;
-
- WERROR netr_LogonControl2(
- [in] [string,charset(UTF16)] uint16 *logon_server,
- [in] uint32 function_code,
- [in] uint32 level,
- [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data,
- [out,ref][switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query
- );
-
-
- /* If this flag is not set, then the passwords and LM session keys are
- * encrypted with DES calls. (And the user session key is
- * unencrypted) */
- const int NETLOGON_NEG_ARCFOUR = 0x00000004;
- const int NETLOGON_NEG_128BIT = 0x00004000;
- const int NETLOGON_NEG_SCHANNEL = 0x40000000;
-
- /*****************/
- /* Function 0x0F */
-
- NTSTATUS netr_ServerAuthenticate2(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 account_name[],
- [in] netr_SchannelType secure_channel_type,
- [in] [string,charset(UTF16)] uint16 computer_name[],
- [in,out,ref] netr_Credential *credentials,
- [in,out,ref] uint32 *negotiate_flags
- );
-
-
- /*****************/
- /* Function 0x10 */
-
- NTSTATUS netr_DatabaseSync2(
- [in] [string,charset(UTF16)] uint16 logon_server[],
- [in] [string,charset(UTF16)] uint16 computername[],
- [in] netr_Authenticator credential,
- [in,out,ref] netr_Authenticator *return_authenticator,
- [in] netr_SamDatabaseID database_id,
- [in] uint16 restart_state,
- [in,out,ref] uint32 *sync_context,
- [in] uint32 preferredmaximumlength,
- [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
- );
-
-
- /*****************/
- /* Function 0x11 */
-
- /* i'm not at all sure how this call works */
-
- NTSTATUS netr_DatabaseRedo(
- [in] [string,charset(UTF16)] uint16 logon_server[],
- [in] [string,charset(UTF16)] uint16 computername[],
- [in] netr_Authenticator credential,
- [in,out,ref] netr_Authenticator *return_authenticator,
- [in][size_is(change_log_entry_size)] uint8 *change_log_entry,
- [in] uint32 change_log_entry_size,
- [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
- );
-
-
- /*****************/
- /* Function 0x12 */
-
- WERROR netr_LogonControl2Ex(
- [in] [string,charset(UTF16)] uint16 *logon_server,
- [in] uint32 function_code,
- [in] uint32 level,
- [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data,
- [out,ref][switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query
- );
-
- /*****************/
- /* Function 0x13 */
- WERROR netr_NETRENUMERATETRUSTEDDOMAINS() ;
-
- /*****************/
- /* Function 0x14 */
- typedef struct {
- [string,charset(UTF16)] uint16 *dc_unc;
- [string,charset(UTF16)] uint16 *dc_address;
- int32 dc_address_type;
- GUID domain_guid;
- [string,charset(UTF16)] uint16 *domain_name;
- [string,charset(UTF16)] uint16 *forest_name;
- uint32 dc_flags;
- [string,charset(UTF16)] uint16 *dc_site_name;
- [string,charset(UTF16)] uint16 *client_site_name;
- } netr_DsRGetDCNameInfo;
-
- WERROR netr_DsRGetDCName(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *domain_name,
- [in] GUID *domain_guid,
- [in] GUID *site_guid,
- [in] uint32 flags,
- [out] netr_DsRGetDCNameInfo *info
- );
-
- /*****************/
- /* Function 0x15 */
- WERROR netr_NETRLOGONDUMMYROUTINE1();
-
- /****************/
- /* Function 0x16 */
- WERROR netr_NETRLOGONSETSERVICEBITS();
-
- /****************/
- /* Function 0x17 */
- WERROR netr_NETRLOGONGETTRUSTRID();
-
- /****************/
- /* Function 0x18 */
- WERROR netr_NETRLOGONCOMPUTESERVERDIGEST();
-
- /****************/
- /* Function 0x19 */
- WERROR netr_NETRLOGONCOMPUTECLIENTDIGEST();
-
- /****************/
- /* Function 0x1a */
- NTSTATUS netr_ServerAuthenticate3(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 account_name[],
- [in] netr_SchannelType secure_channel_type,
- [in] [string,charset(UTF16)] uint16 computer_name[],
- [in,out,ref] netr_Credential *credentials,
- [in,out,ref] uint32 *negotiate_flags,
- [out,ref] uint32 *rid
- );
-
- /****************/
- /* Function 0x1b */
-
- WERROR netr_DsRGetDCNameEx(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *domain_name,
- [in] GUID *domain_guid,
- [in] [string,charset(UTF16)] uint16 *site_name,
- [in] uint32 flags,
- [out] netr_DsRGetDCNameInfo *info
- );
-
- /****************/
- /* Function 0x1c */
- WERROR netr_DsRGetSiteName(
- [in] [string,charset(UTF16)] uint16 *computer_name,
- [out,ref] [string,charset(UTF16)] uint16 **site
- );
-
- /****************/
- /* Function 0x1d */
-
- typedef struct {
- uint32 length;
- [size_is(length)] uint8 *data;
- } netr_Blob;
-
- typedef [flag(NDR_PAHEX)] struct {
- uint16 length;
- uint16 size;
- [size_is(size/2),length_is(length/2)] uint16 *data;
- } netr_BinaryString;
-
- typedef struct {
- netr_Blob blob;
- [string,charset(UTF16)] uint16 *workstation_domain;
- [string,charset(UTF16)] uint16 *workstation_site;
- [string,charset(UTF16)] uint16 *unknown1;
- [string,charset(UTF16)] uint16 *unknown2;
- [string,charset(UTF16)] uint16 *unknown3;
- [string,charset(UTF16)] uint16 *unknown4;
- netr_BinaryString blob2;
- lsa_String product;
- lsa_String unknown5;
- lsa_String unknown6;
- uint32 unknown7[4];
- } netr_DomainQuery1;
-
- typedef union {
- [case(1)] netr_DomainQuery1 *query1;
- [case(2)] netr_DomainQuery1 *query1;
- } netr_DomainQuery;
-
- typedef struct {
- lsa_String domainname;
- lsa_String fulldomainname;
- lsa_String forest;
- GUID guid;
- dom_sid2 *sid;
- netr_BinaryString unknown1[4];
- uint32 unknown[4];
- } netr_DomainTrustInfo;
-
- typedef struct {
- netr_DomainTrustInfo domaininfo;
- uint32 num_trusts;
- [size_is(num_trusts)] netr_DomainTrustInfo *trusts;
- uint32 unknown[14]; /* room for expansion? */
- } netr_DomainInfo1;
-
- typedef union {
- [case(1)] netr_DomainInfo1 *info1;
- [case(2)] netr_DomainInfo1 *info1;
- } netr_DomainInfo;
-
- NTSTATUS netr_LogonGetDomainInfo(
- [in] [string,charset(UTF16)] uint16 server_name[],
- [in] [string,charset(UTF16)] uint16 *computer_name,
- [in,ref] netr_Authenticator *credential,
- [in,out,ref] netr_Authenticator *return_authenticator,
- [in] uint32 level,
- [in,switch_is(level)] netr_DomainQuery query,
- [out,ref,switch_is(level)] netr_DomainInfo *info
- );
-
- typedef [flag(NDR_PAHEX)] struct {
- uint8 data[512];
- uint32 length;
- } netr_CryptPassword;
-
- /*****************/
- /* Function 0x1e */
- NTSTATUS netr_ServerPasswordSet2(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 account_name[],
- [in] netr_SchannelType secure_channel_type,
- [in] [string,charset(UTF16)] uint16 computer_name[],
- [in] netr_Authenticator credential,
- [in] netr_CryptPassword new_password,
- [out,ref] netr_Authenticator *return_authenticator
- );
-
- /****************/
- /* Function 0x1f */
- WERROR netr_NETRSERVERPASSWORDGET();
-
- /****************/
- /* Function 0x20 */
- WERROR netr_NETRLOGONSENDTOSAM();
-
- /****************/
- /* Function 0x21 */
- WERROR netr_DSRADDRESSTOSITENAMESW();
-
- /****************/
- /* Function 0x22 */
- WERROR netr_DsRGetDCNameEx2(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *client_account,
- [in] uint32 mask,
- [in] [string,charset(UTF16)] uint16 *domain_name,
- [in] GUID *domain_guid,
- [in] [string,charset(UTF16)] uint16 *site_name,
- [in] uint32 flags,
- [out] netr_DsRGetDCNameInfo *info
- );
-
- /****************/
- /* Function 0x23 */
- WERROR netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN();
-
- /****************/
- /* Function 0x24 */
- WERROR netr_NETRENUMERATETRUSTEDDOMAINSEX();
-
- /****************/
- /* Function 0x25 */
- WERROR netr_DSRADDRESSTOSITENAMESEXW();
-
- /****************/
- /* Function 0x26 */
- WERROR netr_DSRGETDCSITECOVERAGEW();
-
- /****************/
- /* Function 0x27 */
- NTSTATUS netr_LogonSamLogonEx(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 *computer_name,
- [in] uint16 logon_level,
- [in] [switch_is(logon_level)] netr_LogonLevel logon,
- [in] uint16 validation_level,
- [out,ref] [switch_is(validation_level)] netr_Validation *validation,
- [out,ref] uint8 *authoritative,
- [in,out,ref] uint32 *flags
- );
-
- /****************/
- /* Function 0x28 */
-
- typedef [bitmap32bit] bitmap {
- NETR_TRUST_FLAG_IN_FOREST = 0x00000001,
- NETR_TRUST_FLAG_OUTBOUND = 0x00000002,
- NETR_TRUST_FLAG_TREEROOT = 0x00000004,
- NETR_TRUST_FLAG_PRIMARY = 0x00000008,
- NETR_TRUST_FLAG_NATIVE = 0x00000010,
- NETR_TRUST_FLAG_INBOUND = 0x00000020
- } netr_TrustFlags;
-
- typedef [v1_enum] enum {
- NETR_TRUST_TYPE_DOWNLEVEL = 1,
- NETR_TRUST_TYPE_UPLEVEL = 2,
- NETR_TRUST_TYPE_MIT = 3,
- NETR_TRUST_TYPE_DCE = 4
- } netr_TrustType;
-
- typedef [bitmap32bit] bitmap {
- NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE = 0x00000001,
- NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY = 0x00000002,
- NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN = 0x00000004,
- NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE = 0x00000008,
- NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION = 0x00000010,
- NETR_TRUST_ATTRIBUTE_WITHIN_FOREST = 0x00000020,
- NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL = 0x00000040
- } netr_TrustAttributes;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *netbios_name;
- [string,charset(UTF16)] uint16 *dns_name;
- netr_TrustFlags trust_flags;
- uint32 parent_index;
- netr_TrustType trust_type;
- netr_TrustAttributes trust_attributes;
- dom_sid2 *sid;
- GUID guid;
- } netr_DomainTrust;
-
- WERROR netr_DsrEnumerateDomainTrusts(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] netr_TrustFlags trust_flags,
- [out,ref] uint32 *count,
- [out,ref,size_is(count)] netr_DomainTrust **trusts
- );
-
-
- /****************/
- /* Function 0x29 */
- WERROR netr_DSRDEREGISTERDNSHOSTRECORDS();
-
- /****************/
- /* Function 0x2a */
- WERROR netr_NETRSERVERTRUSTPASSWORDSGET();
-
- /****************/
- /* Function 0x2b */
- WERROR netr_DSRGETFORESTTRUSTINFORMATION();
-
- /****************/
- /* Function 0x2c */
- WERROR netr_NETRGETFORESTTRUSTINFORMATION();
-
- /****************/
- /* Function 0x2d */
-
- /* this is the ADS varient. I don't yet know what the "flags" are for */
- NTSTATUS netr_LogonSamLogonWithFlags(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 *computer_name,
- [in] netr_Authenticator *credential,
- [in][out] netr_Authenticator *return_authenticator,
- [in] uint16 logon_level,
- [in] [switch_is(logon_level)] netr_LogonLevel logon,
- [in] uint16 validation_level,
- [out,ref] [switch_is(validation_level)] netr_Validation *validation,
- [out,ref] uint8 *authoritative,
- [in,out,ref] uint32 *flags
- );
-
- /****************/
- /* Function 0x2e */
- WERROR netr_NETRSERVERGETTRUSTINFO();
-}
diff --git a/source/librpc/idl/notify.idl b/source/librpc/idl/notify.idl
deleted file mode 100644
index c4e633c254f..00000000000
--- a/source/librpc/idl/notify.idl
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "idl_types.h"
-
-/*
- IDL structures for notify change code
-
- this defines the structures used in the notify database code, and
- the change notify buffers
-*/
-
-[
- pointer_default(unique)
-]
-interface notify
-{
-
- /* structure used in the notify database */
- typedef [public] struct {
- server_id server;
- uint32 filter; /* filter to apply in this directory */
- uint32 subdir_filter; /* filter to apply in child directories */
- utf8string path;
- uint32 path_len; /* saves some computation on search */
- pointer private_data;
- } notify_entry;
-
- /*
- to allow for efficient search for matching entries, we
- divide them by the directory depth, with a separate array
- per depth. The entries within each depth are sorted by path,
- allowing for a bisection search.
-
- The max_mask and max_mask_subdir at each depth is the
- bitwise or of the filters and subdir filters for all entries
- at that depth. This allows a depth to be quickly skipped if
- no entries will match the target filter
- */
- typedef struct {
- uint32 max_mask;
- uint32 max_mask_subdir;
- uint32 num_entries;
- notify_entry entries[num_entries];
- } notify_depth;
-
- typedef [public] struct {
- uint32 num_depths;
- notify_depth depth[num_depths];
- } notify_array;
-
- /* structure sent between servers in notify messages */
- typedef [public] struct {
- uint32 action;
- utf8string path;
- pointer private_data;
- } notify_event;
-
-}
diff --git a/source/librpc/idl/ntsvcs.idl b/source/librpc/idl/ntsvcs.idl
deleted file mode 100644
index 05ba68e727a..00000000000
--- a/source/librpc/idl/ntsvcs.idl
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- plug and play services
-*/
-
-[
- uuid("8d9f4e40-a03d-11ce-8f69-08003e30051b"),
- version(1.0),
- helpstring("Plug and Play services")
-]
-interface ntsvcs
-{
- void PNP_Disconnect();
- void PNP_Connect();
- void PNP_GetVersion();
- void PNP_GetGlobalState();
- void PNP_InitDetection();
- void PNP_ReportLogOn();
- void PNP_ValidateDeviceInstance();
- void PNP_GetRootDeviceInstance();
- void PNP_GetRelatedDeviceInstance();
- void PNP_EnumerateSubKeys();
- void PNP_GetDeviceList();
- void PNP_GetDeviceListSize();
- void PNP_GetDepth();
- void PNP_GetDeviceRegProp();
- void PNP_SetDeviceRegProp();
- void PNP_GetClassInstance();
- void PNP_CreateKey();
- void PNP_DeleteRegistryKey();
- void PNP_GetClassCount();
- void PNP_GetClassName();
- void PNP_DeleteClassKey();
- void PNP_GetInterfaceDeviceAlias();
- void PNP_GetInterfaceDeviceList();
- void PNP_GetInterfaceDeviceListSize();
- void PNP_RegisterDeviceClassAssociation();
- void PNP_UnregisterDeviceClassAssociation();
- void PNP_GetClassRegProp();
- void PNP_SetClassRegProp();
- void PNP_CreateDevInst();
- void PNP_DeviceInstanceAction();
- void PNP_GetDeviceStatus();
- void PNP_SetDeviceProblem();
- void PNP_DisableDevInst();
- void PNP_UninstallDevInst();
- void PNP_AddID();
- void PNP_RegisterDriver();
- void PNP_QueryRemove();
- void PNP_RequestDeviceEject();
- void PNP_IsDockStationPresent();
- void PNP_RequestEjectPC();
- void PNP_HwProfFlags();
- void PNP_GetHwProfInfo();
- void PNP_AddEmptyLogConf();
- void PNP_FreeLogConf();
- void PNP_GetFirstLogConf();
- void PNP_GetNextLogConf();
- void PNP_GetLogConfPriority();
- void PNP_AddResDes();
- void PNP_FreeResDes();
- void PNP_GetNextResDes();
- void PNP_GetResDesData();
- void PNP_GetResDesDataSize();
- void PNP_ModifyResDes();
- void PNP_DetectResourceLimit();
- void PNP_QueryResConfList();
- void PNP_SetHwProf();
- void PNP_QueryArbitratorFreeData();
- void PNP_QueryArbitratorFreeSize();
- void PNP_RunDetection();
- void PNP_RegisterNotification();
- void PNP_UnregisterNotification();
- void PNP_GetCustomDevProp();
- void PNP_GetVersionInternal();
- void PNP_GetBlockedDriverInfo();
- void PNP_GetServerSideDeviceInstallFlags();
-}
diff --git a/source/librpc/idl/samr.idl b/source/librpc/idl/samr.idl
deleted file mode 100644
index 74081a7bf3d..00000000000
--- a/source/librpc/idl/samr.idl
+++ /dev/null
@@ -1,1234 +0,0 @@
-#include "idl_types.h"
-
-/*
- samr interface definition
-*/
-
-/*
- Thanks to Todd Sabin for some information from his samr.idl in acltools
-*/
-
-[ uuid("12345778-1234-abcd-ef00-0123456789ac"),
- version(1.0),
- endpoint("ncacn_np:[\\pipe\\samr]","ncacn_ip_tcp:", "ncalrpc:"),
- pointer_default(unique),
- pointer_default_top(unique),
- depends(misc,lsa,security)
-] interface samr
-{
- declare bitmap security_secinfo;
-
- /* account control (acct_flags) bits */
- typedef [public,bitmap32bit] bitmap {
- ACB_DISABLED = 0x00000001, /* 1 = User account disabled */
- ACB_HOMDIRREQ = 0x00000002, /* 1 = Home directory required */
- ACB_PWNOTREQ = 0x00000004, /* 1 = User password not required */
- ACB_TEMPDUP = 0x00000008, /* 1 = Temporary duplicate account */
- ACB_NORMAL = 0x00000010, /* 1 = Normal user account */
- ACB_MNS = 0x00000020, /* 1 = MNS logon user account */
- ACB_DOMTRUST = 0x00000040, /* 1 = Interdomain trust account */
- ACB_WSTRUST = 0x00000080, /* 1 = Workstation trust account */
- ACB_SVRTRUST = 0x00000100, /* 1 = Server trust account */
- ACB_PWNOEXP = 0x00000200, /* 1 = User password does not expire */
- ACB_AUTOLOCK = 0x00000400, /* 1 = Account auto locked */
- ACB_ENC_TXT_PWD_ALLOWED = 0x00000800, /* 1 = Encryped text password is allowed */
- ACB_SMARTCARD_REQUIRED = 0x00001000, /* 1 = Smart Card required */
- ACB_TRUSTED_FOR_DELEGATION = 0x00002000, /* 1 = Trusted for Delegation */
- ACB_NOT_DELEGATED = 0x00004000, /* 1 = Not delegated */
- ACB_USE_DES_KEY_ONLY = 0x00008000, /* 1 = Use DES key only */
- ACB_DONT_REQUIRE_PREAUTH = 0x00010000, /* 1 = Preauth not required */
- ACB_PW_EXPIRED = 0x00020000, /* 1 = Password Expired */
- ACB_NO_AUTH_DATA_REQD = 0x00080000 /* 1 = No authorization data required */
- } samr_AcctFlags;
-
- /******************/
- /* Function: 0x00 */
- NTSTATUS samr_Connect (
- /* notice the lack of [string] */
- [in] uint16 *system_name,
- [in] uint32 access_mask,
- [out,ref] policy_handle *connect_handle
- );
-
-
- /******************/
- /* Function: 0x01 */
- NTSTATUS samr_Close (
- [in,out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x02 */
-
- NTSTATUS samr_SetSecurity (
- [in,ref] policy_handle *handle,
- [in] security_secinfo sec_info,
- [in,ref] sec_desc_buf *sdbuf
- );
-
- /******************/
- /* Function: 0x03 */
-
- NTSTATUS samr_QuerySecurity (
- [in,ref] policy_handle *handle,
- [in] security_secinfo sec_info,
- [out] sec_desc_buf *sdbuf
- );
-
- /******************/
- /* Function: 0x04 */
-
- /*
- shutdown the SAM - once you call this the SAM will be dead
- */
- NTSTATUS samr_Shutdown (
- [in,ref] policy_handle *connect_handle
- );
-
- /******************/
- /* Function: 0x05 */
- NTSTATUS samr_LookupDomain (
- [in,ref] policy_handle *connect_handle,
- [in,ref] lsa_String *domain_name,
- [out] dom_sid2 *sid
- );
-
-
- /******************/
- /* Function: 0x06 */
-
- typedef struct {
- uint32 idx;
- lsa_String name;
- } samr_SamEntry;
-
- typedef struct {
- uint32 count;
- [size_is(count)] samr_SamEntry *entries;
- } samr_SamArray;
-
- NTSTATUS samr_EnumDomains (
- [in,ref] policy_handle *connect_handle,
- [in,out,ref] uint32 *resume_handle,
- [in] uint32 buf_size,
- [out] samr_SamArray *sam,
- [out] uint32 num_entries
- );
-
-
- /************************/
- /* Function 0x07 */
- NTSTATUS samr_OpenDomain(
- [in,ref] policy_handle *connect_handle,
- [in] uint32 access_mask,
- [in,ref] dom_sid2 *sid,
- [out,ref] policy_handle *domain_handle
- );
-
- /************************/
- /* Function 0x08 */
- /* server roles */
- typedef [v1_enum] enum {
- ROLE_STANDALONE = 0,
- ROLE_DOMAIN_MEMBER = 1,
- ROLE_DOMAIN_BDC = 2,
- ROLE_DOMAIN_PDC = 3
- } samr_Role;
-
- /* password properties flags */
- typedef [public,bitmap32bit] bitmap {
- DOMAIN_PASSWORD_COMPLEX = 0x00000001,
- DOMAIN_PASSWORD_NO_ANON_CHANGE = 0x00000002,
- DOMAIN_PASSWORD_NO_CLEAR_CHANGE = 0x00000004,
- DOMAIN_PASSWORD_LOCKOUT_ADMINS = 0x00000008,
- DOMAIN_PASSWORD_STORE_CLEARTEXT = 0x00000010,
- DOMAIN_REFUSE_PASSWORD_CHANGE = 0x00000020
- } samr_PasswordProperties;
-
- typedef struct {
- uint16 min_password_length;
- uint16 password_history_length;
- samr_PasswordProperties password_properties;
- /* yes, these are signed. They are in negative 100ns */
- dlong max_password_age;
- dlong min_password_age;
- } samr_DomInfo1;
-
- typedef struct {
- NTTIME force_logoff_time;
- lsa_String comment;
- lsa_String domain_name;
- lsa_String primary; /* PDC name if this is a BDC */
- udlong sequence_num;
- uint32 unknown2;
- samr_Role role;
- uint32 unknown3;
- uint32 num_users;
- uint32 num_groups;
- uint32 num_aliases;
- } samr_DomInfo2;
-
- typedef struct {
- NTTIME force_logoff_time;
- } samr_DomInfo3;
-
- typedef struct {
- lsa_String comment;
- } samr_DomInfo4;
-
- typedef struct {
- lsa_String domain_name;
- } samr_DomInfo5;
-
- typedef struct {
- lsa_String primary;
- } samr_DomInfo6;
-
- typedef struct {
- samr_Role role;
- } samr_DomInfo7;
-
- typedef struct {
- hyper sequence_num;
- NTTIME domain_create_time;
- } samr_DomInfo8;
-
- typedef struct {
- uint32 unknown; /* w2k3 returns 1 */
- } samr_DomInfo9;
-
- typedef struct {
- samr_DomInfo2 info2;
- hyper lockout_duration;
- hyper lockout_window;
- uint16 lockout_threshold;
- } samr_DomInfo11;
-
- typedef struct {
- hyper lockout_duration;
- hyper lockout_window;
- uint16 lockout_threshold;
- } samr_DomInfo12;
-
- typedef struct {
- hyper sequence_num;
- NTTIME domain_create_time;
- uint32 unknown1;
- uint32 unknown2;
- } samr_DomInfo13;
-
- typedef [switch_type(uint16)] union {
- [case(1)] samr_DomInfo1 info1;
- [case(2)] samr_DomInfo2 info2;
- [case(3)] samr_DomInfo3 info3;
- [case(4)] samr_DomInfo4 info4;
- [case(5)] samr_DomInfo5 info5;
- [case(6)] samr_DomInfo6 info6;
- [case(7)] samr_DomInfo7 info7;
- [case(8)] samr_DomInfo8 info8;
- [case(9)] samr_DomInfo9 info9;
- [case(11)] samr_DomInfo11 info11;
- [case(12)] samr_DomInfo12 info12;
- [case(13)] samr_DomInfo13 info13;
- } samr_DomainInfo;
-
- NTSTATUS samr_QueryDomainInfo(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [out,switch_is(level)] samr_DomainInfo *info
- );
-
- /************************/
- /* Function 0x09 */
- /*
- only levels 1, 3, 4, 6, 7, 9, 12 are valid for this
- call in w2k3
- */
- NTSTATUS samr_SetDomainInfo(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [in,switch_is(level),ref] samr_DomainInfo *info
- );
-
-
- /************************/
- /* Function 0x0a */
- NTSTATUS samr_CreateDomainGroup(
- [in,ref] policy_handle *domain_handle,
- [in,ref] lsa_String *name,
- [in] uint32 access_mask,
- [out,ref] policy_handle *group_handle,
- [out,ref] uint32 *rid
- );
-
-
- /************************/
- /* Function 0x0b */
- NTSTATUS samr_EnumDomainGroups(
- [in,ref] policy_handle *domain_handle,
- [in,out,ref] uint32 *resume_handle,
- [in] uint32 max_size,
- [out] samr_SamArray *sam,
- [out] uint32 num_entries
- );
-
- /************************/
- /* Function 0x0c */
- NTSTATUS samr_CreateUser(
- [in,ref] policy_handle *domain_handle,
- [in,ref] lsa_String *account_name,
- [in] uint32 access_mask,
- [out,ref] policy_handle *user_handle,
- [out,ref] uint32 *rid
- );
-
- /************************/
- /* Function 0x0d */
-
-
- /* w2k3 treats max_size as max_users*54 and sets the
- resume_handle as the rid of the last user sent
- */
- const int SAMR_ENUM_USERS_MULTIPLIER = 54;
-
- NTSTATUS samr_EnumDomainUsers(
- [in,ref] policy_handle *domain_handle,
- [in,out,ref] uint32 *resume_handle,
- [in] samr_AcctFlags acct_flags,
- [in] uint32 max_size,
- [out] samr_SamArray *sam,
- [out] uint32 num_entries
- );
-
- /************************/
- /* Function 0x0e */
- NTSTATUS samr_CreateDomAlias(
- [in,ref] policy_handle *domain_handle,
- [in,ref] lsa_String *alias_name,
- [in] uint32 access_mask,
- [out,ref] policy_handle *alias_handle,
- [out,ref] uint32 *rid
- );
-
- /************************/
- /* Function 0x0f */
- NTSTATUS samr_EnumDomainAliases(
- [in,ref] policy_handle *domain_handle,
- [in,out,ref] uint32 *resume_handle,
- [in] samr_AcctFlags acct_flags,
- [out] samr_SamArray *sam,
- [out] uint32 num_entries
- );
-
- /************************/
- /* Function 0x10 */
-
- typedef struct {
- [range(0,1024)] uint32 count;
- [size_is(count)] uint32 *ids;
- } samr_Ids;
-
- NTSTATUS samr_GetAliasMembership(
- [in,ref] policy_handle *domain_handle,
- [in,ref] lsa_SidArray *sids,
- [out,ref] samr_Ids *rids
- );
-
- /************************/
- /* Function 0x11 */
-
- NTSTATUS samr_LookupNames(
- [in,ref] policy_handle *domain_handle,
- [in,range(0,1000)] uint32 num_names,
- [in,size_is(1000),length_is(num_names)] lsa_String names[],
- [out] samr_Ids rids,
- [out] samr_Ids types
- );
-
-
- /************************/
- /* Function 0x12 */
- NTSTATUS samr_LookupRids(
- [in,ref] policy_handle *domain_handle,
- [in,range(0,1000)] uint32 num_rids,
- [in,size_is(1000),length_is(num_rids)] uint32 rids[],
- [out] lsa_Strings names,
- [out] samr_Ids types
- );
-
- /************************/
- /* Function 0x13 */
- NTSTATUS samr_OpenGroup(
- [in,ref] policy_handle *domain_handle,
- [in] uint32 access_mask,
- [in] uint32 rid,
- [out,ref] policy_handle *group_handle
- );
-
- /* Group attributes */
- typedef [public,bitmap32bit] bitmap {
- SE_GROUP_MANDATORY = 0x00000001,
- SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002,
- SE_GROUP_ENABLED = 0x00000004,
- SE_GROUP_OWNER = 0x00000008,
- SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010,
- SE_GROUP_RESOURCE = 0x20000000,
- SE_GROUP_LOGON_ID = 0xC0000000
- } samr_GroupAttrs;
-
- /************************/
- /* Function 0x14 */
-
- typedef struct {
- lsa_String name;
- samr_GroupAttrs attributes;
- uint32 num_members;
- lsa_String description;
- } samr_GroupInfoAll;
-
- typedef struct {
- samr_GroupAttrs attributes;
- } samr_GroupInfoAttributes;
-
- typedef struct {
- lsa_String description;
- } samr_GroupInfoDescription;
-
- typedef enum {
- GROUPINFOALL = 1,
- GROUPINFONAME = 2,
- GROUPINFOATTRIBUTES = 3,
- GROUPINFODESCRIPTION = 4,
- GROUPINFOALL2 = 5
- } samr_GroupInfoEnum;
-
- typedef [switch_type(samr_GroupInfoEnum)] union {
- [case(GROUPINFOALL)] samr_GroupInfoAll all;
- [case(GROUPINFONAME)] lsa_String name;
- [case(GROUPINFOATTRIBUTES)] samr_GroupInfoAttributes attributes;
- [case(GROUPINFODESCRIPTION)] lsa_String description;
- [case(GROUPINFOALL2)] samr_GroupInfoAll all2;
- } samr_GroupInfo;
-
- NTSTATUS samr_QueryGroupInfo(
- [in,ref] policy_handle *group_handle,
- [in] samr_GroupInfoEnum level,
- [out,switch_is(level)] samr_GroupInfo *info
- );
-
- /************************/
- /* Function 0x15 */
- NTSTATUS samr_SetGroupInfo(
- [in,ref] policy_handle *group_handle,
- [in] samr_GroupInfoEnum level,
- [in,switch_is(level),ref] samr_GroupInfo *info
- );
-
- /************************/
- /* Function 0x16 */
- NTSTATUS samr_AddGroupMember(
- [in,ref] policy_handle *group_handle,
- [in] uint32 rid,
- [in] uint32 flags
- );
-
- /************************/
- /* Function 0x17 */
- NTSTATUS samr_DeleteDomainGroup(
- [in,out,ref] policy_handle *group_handle
- );
-
- /************************/
- /* Function 0x18 */
- NTSTATUS samr_DeleteGroupMember(
- [in,ref] policy_handle *group_handle,
- [in] uint32 rid
- );
-
-
- /************************/
- /* Function 0x19 */
- typedef struct {
- uint32 count;
- [size_is(count)] uint32 *rids;
- [size_is(count)] uint32 *types;
- } samr_RidTypeArray;
-
- NTSTATUS samr_QueryGroupMember(
- [in,ref] policy_handle *group_handle,
- [out] samr_RidTypeArray *rids
- );
-
-
- /************************/
- /* Function 0x1a */
-
- /*
- win2003 seems to accept any data at all for the two integers
- below, and doesn't seem to do anything with them that I can
- see. Weird. I really expected the first integer to be a rid
- and the second to be the attributes for that rid member.
- */
- NTSTATUS samr_SetMemberAttributesOfGroup(
- [in,ref] policy_handle *group_handle,
- [in] uint32 unknown1,
- [in] uint32 unknown2
- );
-
-
- /************************/
- /* Function 0x1b */
- NTSTATUS samr_OpenAlias (
- [in,ref] policy_handle *domain_handle,
- [in] uint32 access_mask,
- [in] uint32 rid,
- [out,ref] policy_handle *alias_handle
- );
-
-
- /************************/
- /* Function 0x1c */
-
- typedef struct {
- lsa_String name;
- uint32 num_members;
- lsa_String description;
- } samr_AliasInfoAll;
-
- typedef enum {
- ALIASINFOALL = 1,
- ALIASINFONAME = 2,
- ALIASINFODESCRIPTION = 3
- } samr_AliasInfoEnum;
-
- typedef [switch_type(samr_AliasInfoEnum)] union {
- [case(ALIASINFOALL)] samr_AliasInfoAll all;
- [case(ALIASINFONAME)] lsa_String name;
- [case(ALIASINFODESCRIPTION)] lsa_String description;
- } samr_AliasInfo;
-
- NTSTATUS samr_QueryAliasInfo(
- [in,ref] policy_handle *alias_handle,
- [in] samr_AliasInfoEnum level,
- [out,switch_is(level)] samr_AliasInfo *info
- );
-
- /************************/
- /* Function 0x1d */
- NTSTATUS samr_SetAliasInfo(
- [in,ref] policy_handle *alias_handle,
- [in] samr_AliasInfoEnum level,
- [in,switch_is(level),ref] samr_AliasInfo *info
- );
-
- /************************/
- /* Function 0x1e */
- NTSTATUS samr_DeleteDomAlias(
- [in,out,ref] policy_handle *alias_handle
- );
-
- /************************/
- /* Function 0x1f */
- NTSTATUS samr_AddAliasMember(
- [in,ref] policy_handle *alias_handle,
- [in,ref] dom_sid2 *sid
- );
-
- /************************/
- /* Function 0x20 */
- NTSTATUS samr_DeleteAliasMember(
- [in,ref] policy_handle *alias_handle,
- [in,ref] dom_sid2 *sid
- );
-
- /************************/
- /* Function 0x21 */
- NTSTATUS samr_GetMembersInAlias(
- [in,ref] policy_handle *alias_handle,
- [out,ref] lsa_SidArray *sids
- );
-
- /************************/
- /* Function 0x22 */
- NTSTATUS samr_OpenUser(
- [in,ref] policy_handle *domain_handle,
- [in] uint32 access_mask,
- [in] uint32 rid,
- [out,ref] policy_handle *user_handle
- );
-
- /************************/
- /* Function 0x23 */
- NTSTATUS samr_DeleteUser(
- [in,out,ref] policy_handle *user_handle
- );
-
- /************************/
- /* Function 0x24 */
- typedef struct {
- lsa_String account_name;
- lsa_String full_name;
- uint32 primary_gid;
- lsa_String description;
- lsa_String comment;
- } samr_UserInfo1;
-
- typedef struct {
- lsa_String comment;
- lsa_String unknown; /* settable, but doesn't stick. probably obsolete */
- uint16 country_code;
- uint16 code_page;
- } samr_UserInfo2;
-
- /* this is also used in samr and netlogon */
- typedef [public, flag(NDR_PAHEX)] struct {
- uint16 units_per_week;
- [size_is(1260), length_is(units_per_week/8)] uint8 *bits;
- } samr_LogonHours;
-
- typedef struct {
- lsa_String account_name;
- lsa_String full_name;
- uint32 rid;
- uint32 primary_gid;
- lsa_String home_directory;
- lsa_String home_drive;
- lsa_String logon_script;
- lsa_String profile_path;
- lsa_String workstations;
- NTTIME last_logon;
- NTTIME last_logoff;
- NTTIME last_password_change;
- NTTIME allow_password_change;
- NTTIME force_password_change;
- samr_LogonHours logon_hours;
- uint16 bad_password_count;
- uint16 logon_count;
- samr_AcctFlags acct_flags;
- } samr_UserInfo3;
-
- typedef struct {
- samr_LogonHours logon_hours;
- } samr_UserInfo4;
-
- typedef struct {
- lsa_String account_name;
- lsa_String full_name;
- uint32 rid;
- uint32 primary_gid;
- lsa_String home_directory;
- lsa_String home_drive;
- lsa_String logon_script;
- lsa_String profile_path;
- lsa_String description;
- lsa_String workstations;
- NTTIME last_logon;
- NTTIME last_logoff;
- samr_LogonHours logon_hours;
- uint16 bad_password_count;
- uint16 logon_count;
- NTTIME last_password_change;
- NTTIME acct_expiry;
- samr_AcctFlags acct_flags;
- } samr_UserInfo5;
-
- typedef struct {
- lsa_String account_name;
- lsa_String full_name;
- } samr_UserInfo6;
-
- typedef struct {
- lsa_String account_name;
- } samr_UserInfo7;
-
- typedef struct {
- lsa_String full_name;
- } samr_UserInfo8;
-
- typedef struct {
- uint32 primary_gid;
- } samr_UserInfo9;
-
- typedef struct {
- lsa_String home_directory;
- lsa_String home_drive;
- } samr_UserInfo10;
-
- typedef struct {
- lsa_String logon_script;
- } samr_UserInfo11;
-
- typedef struct {
- lsa_String profile_path;
- } samr_UserInfo12;
-
- typedef struct {
- lsa_String description;
- } samr_UserInfo13;
-
- typedef struct {
- lsa_String workstations;
- } samr_UserInfo14;
-
- typedef struct {
- samr_AcctFlags acct_flags;
- } samr_UserInfo16;
-
- typedef struct {
- NTTIME acct_expiry;
- } samr_UserInfo17;
-
- typedef struct {
- lsa_String parameters;
- } samr_UserInfo20;
-
- /* this defines the bits used for fields_present in info21 */
- typedef [bitmap32bit] bitmap {
- SAMR_FIELD_ACCOUNT_NAME = 0x00000001,
- SAMR_FIELD_FULL_NAME = 0x00000002,
- SAMR_FIELD_DESCRIPTION = 0x00000010,
- SAMR_FIELD_COMMENT = 0x00000020,
- SAMR_FIELD_LOGON_SCRIPT = 0x00000100,
- SAMR_FIELD_PROFILE_PATH = 0x00000200,
- SAMR_FIELD_WORKSTATIONS = 0x00000400,
- SAMR_FIELD_LOGON_HOURS = 0x00002000,
- SAMR_FIELD_ACCT_FLAGS = 0x00100000,
- SAMR_FIELD_PARAMETERS = 0x00200000,
- SAMR_FIELD_COUNTRY_CODE = 0x00400000,
- SAMR_FIELD_CODE_PAGE = 0x00800000,
- SAMR_FIELD_PASSWORD = 0x01000000, /* either of these */
- SAMR_FIELD_PASSWORD2 = 0x02000000 /* two bits seems to work */
- } samr_FieldsPresent;
-
- typedef struct {
- NTTIME last_logon;
- NTTIME last_logoff;
- NTTIME last_password_change;
- NTTIME acct_expiry;
- NTTIME allow_password_change;
- NTTIME force_password_change;
- lsa_String account_name;
- lsa_String full_name;
- lsa_String home_directory;
- lsa_String home_drive;
- lsa_String logon_script;
- lsa_String profile_path;
- lsa_String description;
- lsa_String workstations;
- lsa_String comment;
- lsa_String parameters;
- lsa_String unknown1;
- lsa_String unknown2;
- lsa_String unknown3;
- uint32 buf_count;
- [size_is(buf_count)] uint8 *buffer;
- uint32 rid;
- uint32 primary_gid;
- samr_AcctFlags acct_flags;
- samr_FieldsPresent fields_present;
- samr_LogonHours logon_hours;
- uint16 bad_password_count;
- uint16 logon_count;
- uint16 country_code;
- uint16 code_page;
- uint8 nt_password_set;
- uint8 lm_password_set;
- uint8 password_expired;
- uint8 unknown4;
- } samr_UserInfo21;
-
- typedef [public, flag(NDR_PAHEX)] struct {
- uint8 data[516];
- } samr_CryptPassword;
-
- typedef struct {
- samr_UserInfo21 info;
- samr_CryptPassword password;
- } samr_UserInfo23;
-
- typedef struct {
- samr_CryptPassword password;
- uint8 pw_len;
- } samr_UserInfo24;
-
- typedef [flag(NDR_PAHEX)] struct {
- uint8 data[532];
- } samr_CryptPasswordEx;
-
- typedef struct {
- samr_UserInfo21 info;
- samr_CryptPasswordEx password;
- } samr_UserInfo25;
-
- typedef struct {
- samr_CryptPasswordEx password;
- uint8 pw_len;
- } samr_UserInfo26;
-
- typedef [switch_type(uint16)] union {
- [case(1)] samr_UserInfo1 info1;
- [case(2)] samr_UserInfo2 info2;
- [case(3)] samr_UserInfo3 info3;
- [case(4)] samr_UserInfo4 info4;
- [case(5)] samr_UserInfo5 info5;
- [case(6)] samr_UserInfo6 info6;
- [case(7)] samr_UserInfo7 info7;
- [case(8)] samr_UserInfo8 info8;
- [case(9)] samr_UserInfo9 info9;
- [case(10)] samr_UserInfo10 info10;
- [case(11)] samr_UserInfo11 info11;
- [case(12)] samr_UserInfo12 info12;
- [case(13)] samr_UserInfo13 info13;
- [case(14)] samr_UserInfo14 info14;
- [case(16)] samr_UserInfo16 info16;
- [case(17)] samr_UserInfo17 info17;
- [case(20)] samr_UserInfo20 info20;
- [case(21)] samr_UserInfo21 info21;
- [case(23)] samr_UserInfo23 info23;
- [case(24)] samr_UserInfo24 info24;
- [case(25)] samr_UserInfo25 info25;
- [case(26)] samr_UserInfo26 info26;
- } samr_UserInfo;
-
- NTSTATUS samr_QueryUserInfo(
- [in,ref] policy_handle *user_handle,
- [in] uint16 level,
- [out,switch_is(level)] samr_UserInfo *info
- );
-
-
- /************************/
- /* Function 0x25 */
- NTSTATUS samr_SetUserInfo(
- [in,ref] policy_handle *user_handle,
- [in] uint16 level,
- [in,ref,switch_is(level)] samr_UserInfo *info
- );
-
- /************************/
- /* Function 0x26 */
- typedef [public, flag(NDR_PAHEX)] struct {
- uint8 hash[16];
- } samr_Password;
-
- /*
- this is a password change interface that doesn't give
- the server the plaintext password. Depricated.
- */
- NTSTATUS samr_ChangePasswordUser(
- [in,ref] policy_handle *user_handle,
- [in] boolean8 lm_present,
- [in] samr_Password *old_lm_crypted,
- [in] samr_Password *new_lm_crypted,
- [in] boolean8 nt_present,
- [in] samr_Password *old_nt_crypted,
- [in] samr_Password *new_nt_crypted,
- [in] boolean8 cross1_present,
- [in] samr_Password *nt_cross,
- [in] boolean8 cross2_present,
- [in] samr_Password *lm_cross
- );
-
- /************************/
- /* Function 0x27 */
-
- typedef [public] struct {
- uint32 rid;
- samr_GroupAttrs attributes;
- } samr_RidWithAttribute;
-
- typedef [public] struct {
- uint32 count;
- [size_is(count)] samr_RidWithAttribute *rids;
- } samr_RidWithAttributeArray;
-
- NTSTATUS samr_GetGroupsForUser(
- [in,ref] policy_handle *user_handle,
- [out] samr_RidWithAttributeArray *rids
- );
-
- /************************/
- /* Function 0x28 */
-
- typedef struct {
- uint32 idx;
- uint32 rid;
- samr_AcctFlags acct_flags;
- lsa_String account_name;
- lsa_String full_name;
- lsa_String description;
- } samr_DispEntryGeneral;
-
- typedef struct {
- uint32 count;
- [size_is(count)] samr_DispEntryGeneral *entries;
- } samr_DispInfoGeneral;
-
- typedef struct {
- uint32 idx;
- uint32 rid;
- samr_AcctFlags acct_flags;
- lsa_String account_name;
- lsa_String description;
- } samr_DispEntryFull;
-
- typedef struct {
- uint32 count;
- [size_is(count)] samr_DispEntryFull *entries;
- } samr_DispInfoFull;
-
- typedef struct {
- uint32 idx;
- lsa_AsciiString account_name;
- } samr_DispEntryAscii;
-
- typedef struct {
- uint32 count;
- [size_is(count)] samr_DispEntryAscii *entries;
- } samr_DispInfoAscii;
-
- typedef [switch_type(uint16)] union {
- [case(1)] samr_DispInfoGeneral info1;/* users */
- [case(2)] samr_DispInfoFull info2; /* trust accounts? */
- [case(3)] samr_DispInfoFull info3; /* groups */
- [case(4)] samr_DispInfoAscii info4; /* users */
- [case(5)] samr_DispInfoAscii info5; /* groups */
- } samr_DispInfo;
-
- NTSTATUS samr_QueryDisplayInfo(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [in] uint32 start_idx,
- [in] uint32 max_entries,
- [in] uint32 buf_size,
- [out] uint32 total_size,
- [out] uint32 returned_size,
- [out,switch_is(level)] samr_DispInfo info
- );
-
-
- /************************/
- /* Function 0x29 */
-
- /*
- this seems to be an alphabetic search function. The returned index
- is the index for samr_QueryDisplayInfo needed to get names occurring
- after the specified name. The supplied name does not need to exist
- in the database (for example you can supply just a first letter for
- searching starting at that letter)
-
- The level corresponds to the samr_QueryDisplayInfo level
- */
- NTSTATUS samr_GetDisplayEnumerationIndex(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [in] lsa_String name,
- [out] uint32 idx
- );
-
-
-
- /************************/
- /* Function 0x2a */
-
- /*
- w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this
- */
- NTSTATUS samr_TestPrivateFunctionsDomain(
- [in,ref] policy_handle *domain_handle
- );
-
-
- /************************/
- /* Function 0x2b */
-
- /*
- w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this
- */
- NTSTATUS samr_TestPrivateFunctionsUser(
- [in,ref] policy_handle *user_handle
- );
-
-
- /************************/
- /* Function 0x2c */
-
- typedef struct {
- uint16 min_password_length;
- samr_PasswordProperties password_properties;
- } samr_PwInfo;
-
- NTSTATUS samr_GetUserPwInfo(
- [in,ref] policy_handle *user_handle,
- [out] samr_PwInfo info
- );
-
- /************************/
- /* Function 0x2d */
- NTSTATUS samr_RemoveMemberFromForeignDomain(
- [in,ref] policy_handle *domain_handle,
- [in,ref] dom_sid2 *sid
- );
-
- /************************/
- /* Function 0x2e */
-
- /*
- how is this different from QueryDomainInfo ??
- */
- NTSTATUS samr_QueryDomainInfo2(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [out,switch_is(level)] samr_DomainInfo *info
- );
-
- /************************/
- /* Function 0x2f */
-
- /*
- how is this different from QueryUserInfo ??
- */
- NTSTATUS samr_QueryUserInfo2(
- [in,ref] policy_handle *user_handle,
- [in] uint16 level,
- [out,switch_is(level)] samr_UserInfo *info
- );
-
- /************************/
- /* Function 0x30 */
-
- /*
- how is this different from QueryDisplayInfo??
- */
- NTSTATUS samr_QueryDisplayInfo2(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [in] uint32 start_idx,
- [in] uint32 max_entries,
- [in] uint32 buf_size,
- [out] uint32 total_size,
- [out] uint32 returned_size,
- [out,switch_is(level)] samr_DispInfo info
- );
-
- /************************/
- /* Function 0x31 */
-
- /*
- how is this different from GetDisplayEnumerationIndex ??
- */
- NTSTATUS samr_GetDisplayEnumerationIndex2(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [in] lsa_String name,
- [out] uint32 idx
- );
-
-
- /************************/
- /* Function 0x32 */
- NTSTATUS samr_CreateUser2(
- [in,ref] policy_handle *domain_handle,
- [in,ref] lsa_String *account_name,
- [in] samr_AcctFlags acct_flags,
- [in] uint32 access_mask,
- [out,ref] policy_handle *user_handle,
- [out,ref] uint32 *access_granted,
- [out,ref] uint32 *rid
- );
-
-
- /************************/
- /* Function 0x33 */
-
- /*
- another duplicate. There must be a reason ....
- */
- NTSTATUS samr_QueryDisplayInfo3(
- [in,ref] policy_handle *domain_handle,
- [in] uint16 level,
- [in] uint32 start_idx,
- [in] uint32 max_entries,
- [in] uint32 buf_size,
- [out] uint32 total_size,
- [out] uint32 returned_size,
- [out,switch_is(level)] samr_DispInfo info
- );
-
- /************************/
- /* Function 0x34 */
- NTSTATUS samr_AddMultipleMembersToAlias(
- [in,ref] policy_handle *alias_handle,
- [in,ref] lsa_SidArray *sids
- );
-
- /************************/
- /* Function 0x35 */
- NTSTATUS samr_RemoveMultipleMembersFromAlias(
- [in,ref] policy_handle *alias_handle,
- [in,ref] lsa_SidArray *sids
- );
-
- /************************/
- /* Function 0x36 */
-
- NTSTATUS samr_OemChangePasswordUser2(
- [in] lsa_AsciiString *server,
- [in,ref] lsa_AsciiString *account,
- [in] samr_CryptPassword *password,
- [in] samr_Password *hash
- );
-
- /************************/
- /* Function 0x37 */
- NTSTATUS samr_ChangePasswordUser2(
- [in] lsa_String *server,
- [in,ref] lsa_String *account,
- [in] samr_CryptPassword *nt_password,
- [in] samr_Password *nt_verifier,
- [in] boolean8 lm_change,
- [in] samr_CryptPassword *lm_password,
- [in] samr_Password *lm_verifier
- );
-
- /************************/
- /* Function 0x38 */
- NTSTATUS samr_GetDomPwInfo(
- [in] lsa_String *domain_name,
- [out] samr_PwInfo info
- );
-
- /************************/
- /* Function 0x39 */
- NTSTATUS samr_Connect2(
- [in,string,charset(UTF16)] uint16 *system_name,
- [in] uint32 access_mask,
- [out,ref] policy_handle *connect_handle
- );
-
- /************************/
- /* Function 0x3a */
- /*
- seems to be an exact alias for samr_SetUserInfo()
- */
- NTSTATUS samr_SetUserInfo2(
- [in,ref] policy_handle *user_handle,
- [in] uint16 level,
- [in,ref,switch_is(level)] samr_UserInfo *info
- );
-
- /************************/
- /* Function 0x3b */
- /*
- this one is mysterious. I have a few guesses, but nothing working yet
- */
- NTSTATUS samr_SetBootKeyInformation(
- [in,ref] policy_handle *connect_handle,
- [in] uint32 unknown1,
- [in] uint32 unknown2,
- [in] uint32 unknown3
- );
-
- /************************/
- /* Function 0x3c */
- NTSTATUS samr_GetBootKeyInformation(
- [in,ref] policy_handle *domain_handle,
- [out] uint32 unknown
- );
-
- /************************/
- /* Function 0x3d */
- NTSTATUS samr_Connect3(
- [in,string,charset(UTF16)] uint16 *system_name,
- /* this unknown value seems to be completely ignored by w2k3 */
- [in] uint32 unknown,
- [in] uint32 access_mask,
- [out,ref] policy_handle *connect_handle
- );
-
- /************************/
- /* Function 0x3e */
- NTSTATUS samr_Connect4(
- [in,string,charset(UTF16)] uint16 *system_name,
- [in] uint32 unknown,
- [in] uint32 access_mask,
- [out,ref] policy_handle *connect_handle
- );
-
- /************************/
- /* Function 0x3f */
-
- declare enum samr_RejectReason;
-
- typedef struct {
- samr_RejectReason reason;
- uint32 unknown1;
- uint32 unknown2;
- } samr_ChangeReject;
-
- NTSTATUS samr_ChangePasswordUser3(
- [in] lsa_String *server,
- [in,ref] lsa_String *account,
- [in] samr_CryptPassword *nt_password,
- [in] samr_Password *nt_verifier,
- [in] boolean8 lm_change,
- [in] samr_CryptPassword *lm_password,
- [in] samr_Password *lm_verifier,
- [in] samr_CryptPassword *password3,
- [out] samr_DomInfo1 *dominfo,
- [out] samr_ChangeReject *reject
- );
-
- /************************/
- /* Function 0x40 */
-
- typedef struct {
- uint32 unknown1; /* w2k3 gives 3 */
- uint32 unknown2; /* w2k3 gives 0 */
- } samr_ConnectInfo1;
-
- typedef union {
- [case(1)] samr_ConnectInfo1 info1;
- } samr_ConnectInfo;
-
- NTSTATUS samr_Connect5(
- [in,string,charset(UTF16)] uint16 *system_name,
- [in] uint32 access_mask,
- [in,out] uint32 level,
- [in,out,switch_is(level),ref] samr_ConnectInfo *info,
- [out,ref] policy_handle *connect_handle
- );
-
- /************************/
- /* Function 0x41 */
- NTSTATUS samr_RidToSid(
- [in,ref] policy_handle *domain_handle,
- [in] uint32 rid,
- [out] dom_sid2 *sid
- );
-
-
- /************************/
- /* Function 0x42 */
-
- /*
- this should set the DSRM password for the server, which is used
- when booting into Directory Services Recovery Mode on a DC. Win2003
- gives me NT_STATUS_NOT_SUPPORTED
- */
-
- NTSTATUS samr_SetDsrmPassword(
- [in] lsa_String *name,
- [in] uint32 unknown,
- [in] samr_Password *hash
- );
-
-
- /************************/
- /* Function 0x43 */
- /*
- I haven't been able to work out the format of this one yet.
- Seems to start with a switch level for a union?
- */
- NTSTATUS samr_ValidatePassword();
-}
diff --git a/source/librpc/idl/security.idl b/source/librpc/idl/security.idl
deleted file mode 100644
index 8bf5e6f867c..00000000000
--- a/source/librpc/idl/security.idl
+++ /dev/null
@@ -1,355 +0,0 @@
-#include "idl_types.h"
-
-/*
- security IDL structures
-*/
-
-[
- pointer_default(unique),
- depends(misc,security)
-]
-interface security
-{
- /*
- access masks are divided up like this:
- 0xabccdddd
- where
- a = generic rights bits SEC_GENERIC_
- b = flags SEC_FLAG_
- c = standard rights bits SEC_STD_
- d = object type specific bits SEC_{FILE,DIR,REG,xxx}_
-
- common combinations of bits are prefixed with SEC_RIGHTS_
- */
- const int SEC_MASK_GENERIC = 0xF0000000;
- const int SEC_MASK_FLAGS = 0x0F000000;
- const int SEC_MASK_STANDARD = 0x00FF0000;
- const int SEC_MASK_SPECIFIC = 0x0000FFFF;
-
- /* generic bits */
- const int SEC_GENERIC_ALL = 0x10000000;
- const int SEC_GENERIC_EXECUTE = 0x20000000;
- const int SEC_GENERIC_WRITE = 0x40000000;
- const int SEC_GENERIC_READ = 0x80000000;
-
- /* flag bits */
- const int SEC_FLAG_SYSTEM_SECURITY = 0x01000000;
- const int SEC_FLAG_MAXIMUM_ALLOWED = 0x02000000;
-
- /* standard bits */
- const int SEC_STD_DELETE = 0x00010000;
- const int SEC_STD_READ_CONTROL = 0x00020000;
- const int SEC_STD_WRITE_DAC = 0x00040000;
- const int SEC_STD_WRITE_OWNER = 0x00080000;
- const int SEC_STD_SYNCHRONIZE = 0x00100000;
- const int SEC_STD_REQUIRED = 0x000F0000;
- const int SEC_STD_ALL = 0x001F0000;
-
- /* file specific bits */
- const int SEC_FILE_READ_DATA = 0x00000001;
- const int SEC_FILE_WRITE_DATA = 0x00000002;
- const int SEC_FILE_APPEND_DATA = 0x00000004;
- const int SEC_FILE_READ_EA = 0x00000008;
- const int SEC_FILE_WRITE_EA = 0x00000010;
- const int SEC_FILE_EXECUTE = 0x00000020;
- const int SEC_FILE_READ_ATTRIBUTE = 0x00000080;
- const int SEC_FILE_WRITE_ATTRIBUTE = 0x00000100;
- const int SEC_FILE_ALL = 0x000001ff;
-
- /* directory specific bits */
- const int SEC_DIR_LIST = 0x00000001;
- const int SEC_DIR_ADD_FILE = 0x00000002;
- const int SEC_DIR_ADD_SUBDIR = 0x00000004;
- const int SEC_DIR_READ_EA = 0x00000008;
- const int SEC_DIR_WRITE_EA = 0x00000010;
- const int SEC_DIR_TRAVERSE = 0x00000020;
- const int SEC_DIR_DELETE_CHILD = 0x00000040;
- const int SEC_DIR_READ_ATTRIBUTE = 0x00000080;
- const int SEC_DIR_WRITE_ATTRIBUTE = 0x00000100;
-
- /* registry entry specific bits */
- const int SEC_REG_QUERY_VALUE = 0x00000001;
- const int SEC_REG_SET_VALUE = 0x00000002;
- const int SEC_REG_CREATE_SUBKEY = 0x00000004;
- const int SEC_REG_ENUM_SUBKEYS = 0x00000008;
- const int SEC_REG_NOTIFY = 0x00000010;
- const int SEC_REG_CREATE_LINK = 0x00000020;
-
- /* ldap specific access bits */
- const int SEC_ADS_CREATE_CHILD = 0x00000001;
- const int SEC_ADS_DELETE_CHILD = 0x00000002;
- const int SEC_ADS_LIST = 0x00000004;
- const int SEC_ADS_SELF_WRITE = 0x00000008;
- const int SEC_ADS_READ_PROP = 0x00000010;
- const int SEC_ADS_WRITE_PROP = 0x00000020;
- const int SEC_ADS_DELETE_TREE = 0x00000040;
- const int SEC_ADS_LIST_OBJECT = 0x00000080;
- const int SEC_ADS_CONTROL_ACCESS = 0x00000100;
-
- /* generic->specific mappings for files */
- const int SEC_RIGHTS_FILE_READ = SEC_STD_READ_CONTROL |
- SEC_STD_SYNCHRONIZE |
- SEC_FILE_READ_DATA |
- SEC_FILE_READ_ATTRIBUTE |
- SEC_FILE_READ_EA;
-
- const int SEC_RIGHTS_FILE_WRITE = SEC_STD_READ_CONTROL |
- SEC_STD_SYNCHRONIZE |
- SEC_FILE_WRITE_DATA |
- SEC_FILE_WRITE_ATTRIBUTE |
- SEC_FILE_WRITE_EA |
- SEC_FILE_APPEND_DATA;
-
- const int SEC_RIGHTS_FILE_EXECUTE = SEC_STD_SYNCHRONIZE |
- SEC_STD_READ_CONTROL |
- SEC_FILE_READ_ATTRIBUTE |
- SEC_FILE_EXECUTE;
-
- const int SEC_RIGHTS_FILE_ALL = SEC_STD_ALL | SEC_FILE_ALL;
-
- /* generic->specific mappings for directories (same as files) */
- const int SEC_RIGHTS_DIR_READ = SEC_RIGHTS_FILE_READ;
- const int SEC_RIGHTS_DIR_WRITE = SEC_RIGHTS_FILE_WRITE;
- const int SEC_RIGHTS_DIR_EXECUTE = SEC_RIGHTS_FILE_EXECUTE;
- const int SEC_RIGHTS_DIR_ALL = SEC_RIGHTS_FILE_ALL;
-
-
- /***************************************************************/
- /* WELL KNOWN SIDS */
-
- /* a NULL sid */
- const string SID_NULL = "S-1-0-0";
-
- /* the world domain */
- const string SID_WORLD_DOMAIN = "S-1-1";
- const string SID_WORLD = "S-1-1-0";
-
- /* SECURITY_CREATOR_SID_AUTHORITY */
- const string SID_CREATOR_OWNER_DOMAIN = "S-1-3";
- const string SID_CREATOR_OWNER = "S-1-3-0";
- const string SID_CREATOR_GROUP = "S-1-3-1";
-
- /* SECURITY_NT_AUTHORITY */
- const string SID_NT_AUTHORITY = "S-1-5";
- const string SID_NT_DIALUP = "S-1-5-1";
- const string SID_NT_NETWORK = "S-1-5-2";
- const string SID_NT_BATCH = "S-1-5-3";
- const string SID_NT_INTERACTIVE = "S-1-5-4";
- const string SID_NT_SERVICE = "S-1-5-6";
- const string SID_NT_ANONYMOUS = "S-1-5-7";
- const string SID_NT_PROXY = "S-1-5-8";
- const string SID_NT_ENTERPRISE_DCS = "S-1-5-9";
- const string SID_NT_SELF = "S-1-5-10";
- const string SID_NT_AUTHENTICATED_USERS = "S-1-5-11";
- const string SID_NT_RESTRICTED = "S-1-5-12";
- const string SID_NT_TERMINAL_SERVER_USERS = "S-1-5-13";
- const string SID_NT_REMOTE_INTERACTIVE = "S-1-5-14";
- const string SID_NT_THIS_ORGANISATION = "S-1-5-15";
- const string SID_NT_SYSTEM = "S-1-5-18";
- const string SID_NT_LOCAL_SERVICE = "S-1-5-19";
- const string SID_NT_NETWORK_SERVICE = "S-1-5-20";
-
- /* SECURITY_BUILTIN_DOMAIN_RID */
- const string SID_BUILTIN = "S-1-5-32";
- const string SID_BUILTIN_ADMINISTRATORS = "S-1-5-32-544";
- const string SID_BUILTIN_USERS = "S-1-5-32-545";
- const string SID_BUILTIN_GUESTS = "S-1-5-32-546";
- const string SID_BUILTIN_POWER_USERS = "S-1-5-32-547";
- const string SID_BUILTIN_ACCOUNT_OPERATORS = "S-1-5-32-548";
- const string SID_BUILTIN_SERVER_OPERATORS = "S-1-5-32-549";
- const string SID_BUILTIN_PRINT_OPERATORS = "S-1-5-32-550";
- const string SID_BUILTIN_BACKUP_OPERATORS = "S-1-5-32-551";
- const string SID_BUILTIN_REPLICATOR = "S-1-5-32-552";
- const string SID_BUILTIN_RAS_SERVERS = "S-1-5-32-553";
- const string SID_BUILTIN_PREW2K = "S-1-5-32-554";
-
- /* well-known domain RIDs */
- const int DOMAIN_RID_LOGON = 9;
- const int DOMAIN_RID_ADMINISTRATOR = 500;
- const int DOMAIN_RID_GUEST = 501;
- const int DOMAIN_RID_ADMINS = 512;
- const int DOMAIN_RID_USERS = 513;
- const int DOMAIN_RID_DCS = 516;
- const int DOMAIN_RID_CERT_ADMINS = 517;
- const int DOMAIN_RID_SCHEMA_ADMINS = 518;
- const int DOMAIN_RID_ENTERPRISE_ADMINS = 519;
-
-
- /*
- privilege IDs. Please keep the IDs below 64. If we get more
- than 64 then we need to change security_token
- */
- typedef enum {
- SEC_PRIV_SECURITY = 1,
- SEC_PRIV_BACKUP = 2,
- SEC_PRIV_RESTORE = 3,
- SEC_PRIV_SYSTEMTIME = 4,
- SEC_PRIV_SHUTDOWN = 5,
- SEC_PRIV_REMOTE_SHUTDOWN = 6,
- SEC_PRIV_TAKE_OWNERSHIP = 7,
- SEC_PRIV_DEBUG = 8,
- SEC_PRIV_SYSTEM_ENVIRONMENT = 9,
- SEC_PRIV_SYSTEM_PROFILE = 10,
- SEC_PRIV_PROFILE_SINGLE_PROCESS = 11,
- SEC_PRIV_INCREASE_BASE_PRIORITY = 12,
- SEC_PRIV_LOAD_DRIVER = 13,
- SEC_PRIV_CREATE_PAGEFILE = 14,
- SEC_PRIV_INCREASE_QUOTA = 15,
- SEC_PRIV_CHANGE_NOTIFY = 16,
- SEC_PRIV_UNDOCK = 17,
- SEC_PRIV_MANAGE_VOLUME = 18,
- SEC_PRIV_IMPERSONATE = 19,
- SEC_PRIV_CREATE_GLOBAL = 20,
- SEC_PRIV_ENABLE_DELEGATION = 21,
- SEC_PRIV_INTERACTIVE_LOGON = 22,
- SEC_PRIV_NETWORK_LOGON = 23,
- SEC_PRIV_REMOTE_INTERACTIVE_LOGON = 24
- } sec_privilege;
-
-
- /* a domain SID. Note that unlike Samba3 this contains a pointer,
- so you can't copy them using assignment */
- typedef [public,gensize,noprint,noejs,nosize] struct {
- uint8 sid_rev_num; /**< SID revision number */
- [range(0,15)] int8 num_auths; /**< Number of sub-authorities */
- uint8 id_auth[6]; /**< Identifier Authority */
- uint32 sub_auths[num_auths];
- } dom_sid;
-
- typedef [bitmap8bit] bitmap {
- SEC_ACE_FLAG_OBJECT_INHERIT = 0x01,
- SEC_ACE_FLAG_CONTAINER_INHERIT = 0x02,
- SEC_ACE_FLAG_NO_PROPAGATE_INHERIT = 0x04,
- SEC_ACE_FLAG_INHERIT_ONLY = 0x08,
- SEC_ACE_FLAG_INHERITED_ACE = 0x10,
- SEC_ACE_FLAG_VALID_INHERIT = 0x0f,
- SEC_ACE_FLAG_SUCCESSFUL_ACCESS = 0x40,
- SEC_ACE_FLAG_FAILED_ACCESS = 0x80
- } security_ace_flags;
-
- typedef [enum8bit] enum {
- SEC_ACE_TYPE_ACCESS_ALLOWED = 0,
- SEC_ACE_TYPE_ACCESS_DENIED = 1,
- SEC_ACE_TYPE_SYSTEM_AUDIT = 2,
- SEC_ACE_TYPE_SYSTEM_ALARM = 3,
- SEC_ACE_TYPE_ALLOWED_COMPOUND = 4,
- SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT = 5,
- SEC_ACE_TYPE_ACCESS_DENIED_OBJECT = 6,
- SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT = 7,
- SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT = 8
- } security_ace_type;
-
- typedef bitmap {
- SEC_ACE_OBJECT_TYPE_PRESENT = 0x00000001,
- SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002
- } security_ace_object_flags;
-
- typedef [nodiscriminant] union {
- /* this is the 'schemaIDGUID' attribute of the attribute object in the schema naming context */
- [case(SEC_ACE_OBJECT_TYPE_PRESENT)] GUID type;
- [default];
- } security_ace_object_type;
-
- typedef [nodiscriminant] union {
- /* this is the 'schemaIDGUID' attribute of the objectclass object in the schema naming context
- * (of the parent container)
- */
- [case(SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT)] GUID inherited_type;
- [default];
- } security_ace_object_inherited_type;
-
- typedef struct {
- security_ace_object_flags flags;
- [switch_is(flags & SEC_ACE_OBJECT_TYPE_PRESENT)] security_ace_object_type type;
- [switch_is(flags & SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT)] security_ace_object_inherited_type inherited_type;
- } security_ace_object;
-
- typedef [nodiscriminant] union {
- [case(SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT)] security_ace_object object;
- [case(SEC_ACE_TYPE_ACCESS_DENIED_OBJECT)] security_ace_object object;
- [case(SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT)] security_ace_object object;
- [case(SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT)] security_ace_object object;
- [default];
- } security_ace_object_ctr;
-
- typedef [public,gensize,nosize] struct {
- security_ace_type type; /* SEC_ACE_TYPE_* */
- security_ace_flags flags; /* SEC_ACE_FLAG_* */
- [value(ndr_size_security_ace(r,ndr->flags))] uint16 size;
- uint32 access_mask;
- [switch_is(type)] security_ace_object_ctr object;
- dom_sid trustee;
- } security_ace;
-
- typedef enum {
- SECURITY_ACL_REVISION_NT4 = 2,
- SECURITY_ACL_REVISION_ADS = 4
- } security_acl_revision;
-
- const uint NT4_ACL_REVISION = SECURITY_ACL_REVISION_NT4;
-
- typedef [public,gensize,nosize] struct {
- security_acl_revision revision;
- [value(ndr_size_security_acl(r,ndr->flags))] uint16 size;
- [range(0,1000)] uint32 num_aces;
- security_ace aces[num_aces];
- } security_acl;
-
- /* default revision for new ACLs */
- typedef [enum8bit] enum {
- SECURITY_DESCRIPTOR_REVISION_1 = 1
- } security_descriptor_revision;
-
- const int SD_REVISION = SECURITY_DESCRIPTOR_REVISION_1;
-
- /* security_descriptor->type bits */
- typedef [bitmap16bit] bitmap {
- SEC_DESC_OWNER_DEFAULTED = 0x0001,
- SEC_DESC_GROUP_DEFAULTED = 0x0002,
- SEC_DESC_DACL_PRESENT = 0x0004,
- SEC_DESC_DACL_DEFAULTED = 0x0008,
- SEC_DESC_SACL_PRESENT = 0x0010,
- SEC_DESC_SACL_DEFAULTED = 0x0020,
- SEC_DESC_DACL_TRUSTED = 0x0040,
- SEC_DESC_SERVER_SECURITY = 0x0080,
- SEC_DESC_DACL_AUTO_INHERIT_REQ = 0x0100,
- SEC_DESC_SACL_AUTO_INHERIT_REQ = 0x0200,
- SEC_DESC_DACL_AUTO_INHERITED = 0x0400,
- SEC_DESC_SACL_AUTO_INHERITED = 0x0800,
- SEC_DESC_DACL_PROTECTED = 0x1000,
- SEC_DESC_SACL_PROTECTED = 0x2000,
- SEC_DESC_RM_CONTROL_VALID = 0x4000,
- SEC_DESC_SELF_RELATIVE = 0x8000
- } security_descriptor_type;
-
- typedef [gensize,nosize,public,flag(NDR_LITTLE_ENDIAN)] struct {
- security_descriptor_revision revision;
- security_descriptor_type type; /* SEC_DESC_xxxx flags */
- [relative] dom_sid *owner_sid;
- [relative] dom_sid *group_sid;
- [relative] security_acl *sacl; /* system ACL */
- [relative] security_acl *dacl; /* user (discretionary) ACL */
- } security_descriptor;
-
- typedef [public] struct {
- [range(0,0x40000),value(ndr_size_security_descriptor(sd,ndr->flags))] uint32 sd_size;
- [subcontext(4)] security_descriptor *sd;
- } sec_desc_buf;
-
- typedef [public] struct {
- dom_sid *user_sid;
- dom_sid *group_sid;
- uint32 num_sids;
- [size_is(num_sids)] dom_sid *sids[*];
- udlong privilege_mask;
- } security_token;
-
- /* bits that determine which parts of a security descriptor
- are being queried/set */
- typedef [public,bitmap32bit] bitmap {
- SECINFO_OWNER = 0x00000001,
- SECINFO_GROUP = 0x00000002,
- SECINFO_DACL = 0x00000004,
- SECINFO_SACL = 0x00000008
- } security_secinfo;
-}
diff --git a/source/librpc/idl/spoolss.idl b/source/librpc/idl/spoolss.idl
deleted file mode 100644
index 104c0e32e59..00000000000
--- a/source/librpc/idl/spoolss.idl
+++ /dev/null
@@ -1,1417 +0,0 @@
-#include "idl_types.h"
-
-/*
- spoolss interface definitions
-*/
-
-[ uuid("12345678-1234-abcd-ef00-0123456789ab"),
- version(1.0),
- endpoint("ncacn_np:[\\pipe\\spoolss]"),
- pointer_default(unique),
- pointer_default_top(unique),
- helpstring("Spooler SubSystem"),
- depends(security),
- helper("librpc/ndr/ndr_spoolss_buf.h")
-] interface spoolss
-{
- typedef struct {
- uint16 year;
- uint16 month;
- uint16 day_of_week;
- uint16 day;
- uint16 hour;
- uint16 minute;
- uint16 second;
- uint16 millisecond;
- } spoolss_Time;
-
- typedef struct {
- [relative] nstring *printername;
- [relative] nstring *servername;
- uint32 cjobs;
- uint32 total_jobs;
- uint32 total_bytes;
- spoolss_Time time;
- uint32 global_counter;
- uint32 total_pages;
- uint32 version;
- uint32 unknown10;
- uint32 unknown11;
- uint32 unknown12;
- uint32 session_counter;
- uint32 unknown14;
- uint32 printer_errors;
- uint32 unknown16;
- uint32 unknown17;
- uint32 unknown18;
- uint32 unknown19;
- uint32 change_id;
- uint32 unknown21;
- uint32 status;
- uint32 unknown23;
- uint32 c_setprinter;
- uint16 unknown25;
- uint16 unknown26;
- uint32 unknown27;
- uint32 unknown28;
- uint32 unknown29;
- } spoolss_PrinterInfo0;
-
- typedef [public,gensize] struct {
- string32 devicename;
- uint16 specversion;
- uint16 driverversion;
- uint16 size;
- [value(r->driverextra_data.length)] uint16 __driverextra_length;
- uint32 fields;
- uint16 orientation;
- uint16 papersize;
- uint16 paperlength;
- uint16 paperwidth;
- uint16 scale;
- uint16 copies;
- uint16 defaultsource;
- uint16 printquality;
- uint16 color;
- uint16 duplex;
- uint16 yresolution;
- uint16 ttoption;
- uint16 collate;
- string32 formname;
- uint16 logpixels;
- uint32 bitsperpel;
- uint32 pelswidth;
- uint32 pelsheight;
- uint32 displayflags;
- uint32 displayfrequency;
- uint32 icmmethod;
- uint32 icmintent;
- uint32 mediatype;
- uint32 dithertype;
- uint32 reserved1;
- uint32 reserved2;
- uint32 panningwidth;
- uint32 panningheight;
- [subcontext_size(__driverextra_length),subcontext(0),flag(NDR_REMAINING)] DATA_BLOB driverextra_data;
- } spoolss_DeviceMode;
-
- typedef [public] bitmap {
- PRINTER_ENUM_DEFAULT = 0x00000001,
- PRINTER_ENUM_LOCAL = 0x00000002,
- PRINTER_ENUM_CONNECTIONS = 0x00000004,
- PRINTER_ENUM_FAVORITE = 0x00000004,
- PRINTER_ENUM_NAME = 0x00000008,
- PRINTER_ENUM_REMOTE = 0x00000010,
- PRINTER_ENUM_SHARED = 0x00000020,
- PRINTER_ENUM_NETWORK = 0x00000040,
- PRINTER_ENUM_UNKNOWN_8 = 0x00000008,
- PRINTER_ENUM_EXPAND = 0x00004000,
- PRINTER_ENUM_CONTAINER = 0x00008000,
- PRINTER_ENUM_ICON1 = 0x00010000,
- PRINTER_ENUM_ICON2 = 0x00020000,
- PRINTER_ENUM_ICON3 = 0x00040000,
- PRINTER_ENUM_ICON4 = 0x00080000,
- PRINTER_ENUM_ICON5 = 0x00100000,
- PRINTER_ENUM_ICON6 = 0x00200000,
- PRINTER_ENUM_ICON7 = 0x00400000,
- PRINTER_ENUM_ICON8 = 0x00800000,
- PRINTER_ENUM_HIDE = 0x01000000
- } spoolss_EnumPrinterFlags;
-
- typedef struct {
- spoolss_EnumPrinterFlags flags;
- [relative] nstring *name;
- [relative] nstring *description;
- [relative] nstring *comment;
- } spoolss_PrinterInfo1;
-
- typedef bitmap {
- PRINTER_ATTRIBUTE_QUEUED = 0x00000001,
- PRINTER_ATTRIBUTE_DIRECT = 0x00000002,
- PRINTER_ATTRIBUTE_DEFAULT = 0x00000004,
- PRINTER_ATTRIBUTE_SHARED = 0x00000008,
- PRINTER_ATTRIBUTE_NETWORK = 0x00000010,
- PRINTER_ATTRIBUTE_HIDDEN = 0x00000020,
- PRINTER_ATTRIBUTE_LOCAL = 0x00000040,
- PRINTER_ATTRIBUTE_ENABLE_DEVQ = 0x00000080,
- PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS = 0x00000100,
- PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = 0x00000200,
- PRINTER_ATTRIBUTE_WORK_OFFLINE = 0x00000400,
- PRINTER_ATTRIBUTE_ENABLE_BIDI = 0x00000800,
- PRINTER_ATTRIBUTE_RAW_ONLY = 0x00001000,
- PRINTER_ATTRIBUTE_PUBLISHED = 0x00002000,
- PRINTER_ATTRIBUTE_FAX = 0x00004000,
- PRINTER_ATTRIBUTE_TS = 0x00008000
- } spoolss_PrinterAttributes;
-
- typedef bitmap {
- PRINTER_STATUS_PAUSED = 0x00000001,
- PRINTER_STATUS_ERROR = 0x00000002,
- PRINTER_STATUS_PENDING_DELETION = 0x00000004,
- PRINTER_STATUS_PAPER_JAM = 0x00000008,
- PRINTER_STATUS_PAPER_OUT = 0x00000010,
- PRINTER_STATUS_MANUAL_FEED = 0x00000020,
- PRINTER_STATUS_PAPER_PROBLEM = 0x00000040,
- PRINTER_STATUS_OFFLINE = 0x00000080,
- PRINTER_STATUS_IO_ACTIVE = 0x00000100,
- PRINTER_STATUS_BUSY = 0x00000200,
- PRINTER_STATUS_PRINTING = 0x00000400,
- PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800,
- PRINTER_STATUS_NOT_AVAILABLE = 0x00001000,
- PRINTER_STATUS_WAITING = 0x00002000,
- PRINTER_STATUS_PROCESSING = 0x00004000,
- PRINTER_STATUS_INITIALIZING = 0x00008000,
- PRINTER_STATUS_WARMING_UP = 0x00010000,
- PRINTER_STATUS_TONER_LOW = 0x00020000,
- PRINTER_STATUS_NO_TONER = 0x00040000,
- PRINTER_STATUS_PAGE_PUNT = 0x00080000,
- PRINTER_STATUS_USER_INTERVENTION= 0x00100000,
- PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000,
- PRINTER_STATUS_DOOR_OPEN = 0x00400000,
- PRINTER_STATUS_SERVER_UNKNOWN = 0x00800000,
- PRINTER_STATUS_POWER_SAVE = 0x01000000
- } spoolss_PrinterStatus;
-
- typedef struct {
- [relative] nstring *servername;
- [relative] nstring *printername;
- [relative] nstring *sharename;
- [relative] nstring *portname;
- [relative] nstring *drivername;
- [relative] nstring *comment;
- [relative] nstring *location;
- [relative,subcontext(0)] spoolss_DeviceMode *devmode;
- [relative] nstring *sepfile;
- [relative] nstring *printprocessor;
- [relative] nstring *datatype;
- [relative] nstring *parameters;
- [relative,subcontext(0)] security_descriptor *secdesc;
- spoolss_PrinterAttributes attributes;
- uint32 priority;
- uint32 defaultpriority;
- uint32 starttime;
- uint32 untiltime;
- spoolss_PrinterStatus status;
- uint32 cjobs;
- uint32 averageppm;
- } spoolss_PrinterInfo2;
-
- typedef struct {
- [relative,subcontext(0)] security_descriptor *secdesc;
- } spoolss_PrinterInfo3;
-
- typedef struct {
- [relative] nstring *printername;
- [relative] nstring *servername;
- spoolss_PrinterAttributes attributes;
- } spoolss_PrinterInfo4;
-
- typedef struct {
- [relative] nstring *printername;
- [relative] nstring *portname;
- spoolss_PrinterAttributes attributes;
- uint32 device_not_selected_timeout;
- uint32 transmission_retry_timeout;
- } spoolss_PrinterInfo5;
-
- typedef struct {
- spoolss_PrinterStatus status;
- } spoolss_PrinterInfo6;
-
- typedef bitmap {
- DSPRINT_PUBLISH = 0x00000001,
- DSPRINT_UPDATE = 0x00000002,
- DSPRINT_UNPUBLISH = 0x00000004,
- DSPRINT_REPUBLISH = 0x00000008,
- DSPRINT_PENDING = 0x80000000
- } spoolss_DsPrintAction;
-
- typedef struct {
- [relative] nstring *guid; /* text form of printer guid */
- spoolss_DsPrintAction action;
- } spoolss_PrinterInfo7;
-
- typedef struct {
- [relative,subcontext(0)] spoolss_DeviceMode *devmode;
- } spoolss_DeviceModeInfo;
-
- typedef [nodiscriminant,relative_base,public] union {
- [case(0)] spoolss_PrinterInfo0 info0;
- [case(1)] spoolss_PrinterInfo1 info1;
- [case(2)] spoolss_PrinterInfo2 info2;
- [case(3)] spoolss_PrinterInfo3 info3;
- [case(4)] spoolss_PrinterInfo4 info4;
- [case(5)] spoolss_PrinterInfo5 info5;
- [case(6)] spoolss_PrinterInfo6 info6;
- [case(7)] spoolss_PrinterInfo7 info7;
- [case(8)] spoolss_DeviceModeInfo info8;
- [case(9)] spoolss_DeviceModeInfo info9;
- [default];
- } spoolss_PrinterInfo;
-
- /******************/
- /* Function: 0x00 */
- /* we are using this as internal parsing code */
- [public,noopnum,noprint] WERROR _spoolss_EnumPrinters(
- [in] spoolss_EnumPrinterFlags flags,
- [in] [string,charset(UTF16)] uint16 *server,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
- [public,noopnum,noprint] void __spoolss_EnumPrinters(
- [in] uint32 level,
- [in] uint32 count,
- [out,switch_is(level)] spoolss_PrinterInfo info[count]
- );
- [nopull,nopush] WERROR spoolss_EnumPrinters(
- [in] spoolss_EnumPrinterFlags flags,
- [in] [string,charset(UTF16)] uint16 *server,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- /* what we have here is a subcontext containing an array of no discriminant unions
- * and the array has no size in front
- */
- [out,switch_is(level),size_is(count)] spoolss_PrinterInfo *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- /******************/
- /* Function: 0x01 */
- typedef struct {
- [value(_ndr_size_spoolss_DeviceMode(devmode, ndr->flags))] uint32 _ndr_size;
- [subcontext(4),subcontext_size(_ndr_size)] spoolss_DeviceMode *devmode;
- } spoolss_DevmodeContainer;
-
- WERROR spoolss_OpenPrinter(
- [in] [string,charset(UTF16)] uint16 *printername,
- [in] [string,charset(UTF16)] uint16 *datatype,
- [in] spoolss_DevmodeContainer devmode_ctr,
- [in] uint32 access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x02 */
- typedef struct {
- uint32 job_id;
- [relative] nstring *printer_name;
- [relative] nstring *server_name;
- [relative] nstring *user_name;
- [relative] nstring *document_name;
- [relative] nstring *data_type;
- [relative] nstring *text_status;
- uint32 status;
- uint32 priority;
- uint32 position;
- uint32 total_pages;
- uint32 pages_printed;
- spoolss_Time time;
- } spoolss_JobInfo1;
-
- typedef [nodiscriminant,relative_base,public] union {
- [case(1)] spoolss_JobInfo1 info1;
- [case(2)]; /* TODO */
- [case(3)]; /* TODO */
- [default];
- } spoolss_JobInfo;
-
- typedef struct {
- uint32 level;
- [switch_is(level)] spoolss_JobInfo info;
- } spoolss_JobInfoContainer;
-
- typedef [v1_enum] enum {
- SPOOLSS_JOB_CONTROL_PAUSE = 1,
- SPOOLSS_JOB_CONTROL_RESUME = 2,
- SPOOLSS_JOB_CONTROL_CANCEL = 3,
- SPOOLSS_JOB_CONTROL_RESTART = 4,
- SPOOLSS_JOB_CONTROL_DELETE = 5,
- SPOOLSS_JOB_CONTROL_SEND_TO_PRINTER = 6,
- SPOOLSS_JOB_CONTROL_LAST_PAGE_EJECTED = 7
- } spoolss_JobControl;
-
- WERROR spoolss_SetJob(
- [in,ref] policy_handle *handle,
- [in] uint32 job_id,
- [in] spoolss_JobInfoContainer *ctr,
- [in] spoolss_JobControl command
- );
-
- /******************/
- /* Function: 0x03 */
- WERROR spoolss_GetJob(
- [in,ref] policy_handle *handle,
- [in] uint32 job_id,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_JobInfo *info,
- [out] uint32 *needed
- );
-
- /******************/
- /* Function: 0x04 */
- [public,noopnum,noprint] WERROR _spoolss_EnumJobs(
- [in,ref] policy_handle *handle,
- [in] uint32 firstjob,
- [in] uint32 numjobs,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
- [public,noopnum,noprint] void __spoolss_EnumJobs(
- [in] uint32 level,
- [in] uint32 count,
- [out,switch_is(level)] spoolss_JobInfo info[count]
- );
- [nopull,nopush] WERROR spoolss_EnumJobs(
- [in,ref] policy_handle *handle,
- [in] uint32 firstjob,
- [in] uint32 numjobs,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,switch_is(level),size_is(count)] spoolss_JobInfo *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- /******************/
- /* Function: 0x05 */
- WERROR spoolss_AddPrinter(
- /* This function is not implemented in Samba 3 as no
- clients have been observed using it. */
- );
-
- /******************/
- /* Function: 0x06 */
- WERROR spoolss_DeletePrinter(
- );
-
- /******************/
- /* Function: 0x07 */
- typedef [v1_enum] enum {
- SPOOLSS_PRINTER_CONTROL_UNPAUSE = 0,
- SPOOLSS_PRINTER_CONTROL_PAUSE = 1,
- SPOOLSS_PRINTER_CONTROL_RESUME = 2,
- SPOOLSS_PRINTER_CONTROL_PURGE = 3,
- SPOOLSS_PRINTER_CONTROL_SET_STATUS = 4
- } spoolss_PrinterControl;
-
- typedef [switch_type(uint32)] union {
- [case(0)] spoolss_PrinterInfo0 *info0;
- [case(1)] spoolss_PrinterInfo1 *info1;
- [case(2)] spoolss_PrinterInfo2 *info2;
- [case(3)] spoolss_PrinterInfo3 *info3;
- [case(4)] spoolss_PrinterInfo4 *info4;
- [case(5)] spoolss_PrinterInfo5 *info5;
- [case(6)] spoolss_PrinterInfo6 *info6;
- [case(7)] spoolss_PrinterInfo7 *info7;
- [case(8)] spoolss_DeviceModeInfo *info8;
- [case(9)] spoolss_DeviceModeInfo *info9;
- [default];
- } spoolss_SetPrinterInfo;
-
- WERROR spoolss_SetPrinter(
- [in,ref] policy_handle *handle,
- [in] uint32 level,
- [in,switch_is(level)] spoolss_SetPrinterInfo info,
- [in] spoolss_DevmodeContainer devmode_ctr,
- [in] sec_desc_buf secdesc_ctr,
- [in] spoolss_PrinterControl command
- );
-
- /******************/
- /* Function: 0x08 */
- WERROR spoolss_GetPrinter(
- [in,ref] policy_handle *handle,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_PrinterInfo *info,
- [out] uint32 *needed
- );
-
- /******************/
- /* Function: 0x09 */
- WERROR spoolss_AddPrinterDriver(
- );
-
- typedef struct {
- [relative] nstring *driver_name;
- } spoolss_DriverInfo1;
-
- typedef [v1_enum] enum {
- SPOOLSS_DRIVER_VERSION_9X = 0,
- SPOOLSS_DRIVER_VERSION_NT35 = 1,
- SPOOLSS_DRIVER_VERSION_NT4 = 2,
- SPOOLSS_DRIVER_VERSION_200X = 3
- } spoolss_DriverOSVersion;
-
- typedef struct {
- spoolss_DriverOSVersion version;
- [relative] nstring *driver_name;
- [relative] nstring *architecture;
- [relative] nstring *driver_path;
- [relative] nstring *data_file;
- [relative] nstring *config_file;
- } spoolss_DriverInfo2;
-
- typedef struct {
- spoolss_DriverOSVersion version;
- [relative] nstring *driver_name;
- [relative] nstring *architecture;
- [relative] nstring *driver_path;
- [relative] nstring *data_file;
- [relative] nstring *config_file;
- [relative] nstring *help_file;
- [relative] nstring_array *dependent_files;
- [relative] nstring *monitor_name;
- [relative] nstring *default_datatype;
- } spoolss_DriverInfo3;
-
- typedef struct {
- spoolss_DriverOSVersion version;
- [relative] nstring *driver_name;
- [relative] nstring *architecture;
- [relative] nstring *driver_path;
- [relative] nstring *data_file;
- [relative] nstring *config_file;
- [relative] nstring *help_file;
- [relative] nstring_array *dependent_files;
- [relative] nstring *monitor_name;
- [relative] nstring *default_datatype;
- [relative] nstring_array *previous_names;
- } spoolss_DriverInfo4;
-
- typedef struct {
- spoolss_DriverOSVersion version;
- [relative] nstring *driver_name;
- [relative] nstring *architecture;
- [relative] nstring *driver_path;
- [relative] nstring *data_file;
- [relative] nstring *config_file;
- uint32 driver_attributes;
- uint32 config_version;
- uint32 driver_version;
- } spoolss_DriverInfo5;
-
- typedef struct {
- spoolss_DriverOSVersion version;
- [relative] nstring *driver_name;
- [relative] nstring *architecture;
- [relative] nstring *driver_path;
- [relative] nstring *data_file;
- [relative] nstring *config_file;
- [relative] nstring *help_file;
- [relative] nstring_array *dependent_files;
- [relative] nstring *monitor_name;
- [relative] nstring *default_datatype;
- [relative] nstring_array *previous_names;
- NTTIME driver_data;
- hyper driver_version;
- [relative] nstring *manufacturer_name;
- [relative] nstring *manufacturer_url;
- [relative] nstring *hardware_id;
- [relative] nstring *provider;
- } spoolss_DriverInfo6;
-
- typedef [nodiscriminant,relative_base,public] union {
- [case(1)] spoolss_DriverInfo1 info1;
- [case(2)] spoolss_DriverInfo2 info2;
- [case(3)] spoolss_DriverInfo3 info3;
- [case(4)] spoolss_DriverInfo4 info4;
- [case(5)] spoolss_DriverInfo5 info5;
- [case(6)] spoolss_DriverInfo6 info6;
- [default];
- } spoolss_DriverInfo;
-
- /******************/
- /* Function: 0x0a */
- [public,noopnum,noprint] WERROR _spoolss_EnumPrinterDrivers(
- [in] [string,charset(UTF16)] uint16 *server,
- [in] [string,charset(UTF16)] uint16 *environment,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
- [public,noopnum,noprint] void __spoolss_EnumPrinterDrivers(
- [in] uint32 level,
- [in] uint32 count,
- [out,switch_is(level)] spoolss_DriverInfo info[count]
- );
- [nopull,nopush] WERROR spoolss_EnumPrinterDrivers(
- [in] [string,charset(UTF16)] uint16 *server,
- [in] [string,charset(UTF16)] uint16 *environment,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,switch_is(level),size_is(count)] spoolss_DriverInfo *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- /******************/
- /* Function: 0x0b */
- WERROR spoolss_GetPrinterDriver(
- );
-
- /******************/
- /* Function: 0x0c */
- typedef struct {
- nstring directory_name;
- } spoolss_DriverDirectoryInfo1;
-
- /* NOTE: it's seems that w2k3 completly ignores the level
- in its server code
- */
- typedef [nodiscriminant,relative_base,gensize,public] union {
- [case(1)] spoolss_DriverDirectoryInfo1 info1;
- [default] spoolss_DriverDirectoryInfo1 info1;
- } spoolss_DriverDirectoryInfo;
-
- WERROR spoolss_GetPrinterDriverDirectory(
- [in] [string,charset(UTF16)] uint16 *server,
- [in] [string,charset(UTF16)] uint16 *environment,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_DriverDirectoryInfo *info,
- [out] uint32 *needed
- );
-
- /******************/
- /* Function: 0x0d */
- WERROR spoolss_DeletePrinterDriver(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 *server,
- [in] [string,charset(UTF16)] uint16 architecture[],
- [in] [string,charset(UTF16)] uint16 driver[]
- );
-
- /******************/
- /* Function: 0x0e */
- WERROR spoolss_AddPrintProcessor(
- );
-
- /******************/
- /* Function: 0x0f */
- typedef struct {
- [relative] nstring *print_processor_name;
- } spoolss_PrintProcessorInfo1;
-
- typedef [nodiscriminant,relative_base,public] union {
- [case(1)] spoolss_PrintProcessorInfo1 info1;
- [default];
- } spoolss_PrintProcessorInfo;
-
- [public,noopnum,noprint] WERROR _spoolss_EnumPrintProcessors(
- [in] [string,charset(UTF16)] uint16 *servername,
- [in] [string,charset(UTF16)] uint16 *environment,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
- [public,noopnum,noprint] void __spoolss_EnumPrintProcessors(
- [in] uint32 level,
- [in] uint32 count,
- [out,switch_is(level)] spoolss_PrintProcessorInfo info[count]
- );
- [nopull,nopush] WERROR spoolss_EnumPrintProcessors(
- [in] [string,charset(UTF16)] uint16 *servername,
- [in] [string,charset(UTF16)] uint16 *environment,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,switch_is(level),size_is(count)] spoolss_PrintProcessorInfo *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- /******************/
- /* Function: 0x10 */
- WERROR spoolss_GetPrintProcessorDirectory(
- );
-
- /******************/
- /* Function: 0x11 */
- typedef struct {
- [string,charset(UTF16)] uint16 *document_name;
- [string,charset(UTF16)] uint16 *output_file;
- [string,charset(UTF16)] uint16 *datatype;
- } spoolss_DocumentInfo1;
-
- typedef [switch_type(uint32)] union {
- [case(1)] spoolss_DocumentInfo1 *info1;
- [case(2)]; /* TODO */
- [case(3)]; /* TODO */
- [default];
- } spoolss_DocumentInfo;
-
- WERROR spoolss_StartDocPrinter(
- [in,ref] policy_handle *handle,
- [in] uint32 level,
- [in,switch_is(level)] spoolss_DocumentInfo info,
- [out] uint32 *job_id
- );
-
- /******************/
- /* Function: 0x12 */
- WERROR spoolss_StartPagePrinter(
- [in,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x13 */
- WERROR spoolss_WritePrinter(
- [in,ref] policy_handle *handle,
- [in] DATA_BLOB data,
- [in,value(r->in.data.length)] uint32 _data_size,
- [out] uint32 *num_written
- );
-
- /******************/
- /* Function: 0x14 */
- WERROR spoolss_EndPagePrinter(
- [in,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x15 */
- WERROR spoolss_AbortPrinter(
- [in,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x16 */
- WERROR spoolss_ReadPrinter(
- [in,ref] policy_handle *handle,
- [in] uint32 data_size,
- [out] DATA_BLOB *data,
- [out,value(r->out.data.length)] uint32 *_data_size
- );
-
- /******************/
- /* Function: 0x17 */
- WERROR spoolss_EndDocPrinter(
- [in,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x18 */
- WERROR spoolss_AddJob(
- );
-
- /******************/
- /* Function: 0x19 */
- WERROR spoolss_ScheduleJob(
- );
-
- /******************/
- /* Function: 0x1a */
- const string SPOOLSS_ARCHITECTURE_NT_X86 = "Windows NT x86";
-
- typedef [public,gensize] struct {
- [value(ndr_size_spoolss_OSVersion(r,ndr->flags))] uint32 _ndr_size;
- uint32 major;
- uint32 minor;
- uint32 build;
- [value(2)] uint32 unknown;
- [subcontext(0),subcontext_size(256)] nstring extra_string;
- } spoolss_OSVersion;
-
- typedef [public,gensize] struct {
- [value(ndr_size_spoolss_OSVersionEx(r,ndr->flags))] uint32 _ndr_size;
- uint32 major;
- uint32 minor;
- uint32 build;
- [value(2)] uint32 unknown1;
- [subcontext(0),subcontext_size(256)] nstring extra_string;
- uint32 unknown2;/* service pack number? I saw 0 from w2k3 and 1 from winxp sp1*/
- uint32 unknown3;/* hmm? w2k3: 131346(0x20112) winxp sp1: 503382272 0x1E010100 */
- } spoolss_OSVersionEx;
-
- typedef [v1_enum] enum {
- SPOOLSS_PRINTER_DATA_TYPE_NULL = 0,
- SPOOLSS_PRINTER_DATA_TYPE_STRING = 1,
- SPOOLSS_PRINTER_DATA_TYPE_BINARY = 3,
- SPOOLSS_PRINTER_DATA_TYPE_UINT32 = 4,
- SPOOLSS_PRINTER_DATA_TYPE_STRING_ARRAY = 7
- } spoolss_PrinterDataType;
-
- typedef [nodiscriminant,public,gensize] union {
- [case(SPOOLSS_PRINTER_DATA_TYPE_NULL)];
- [case(SPOOLSS_PRINTER_DATA_TYPE_STRING)] nstring string;
- [case(SPOOLSS_PRINTER_DATA_TYPE_BINARY),flag(NDR_REMAINING)] DATA_BLOB binary;
- [case(SPOOLSS_PRINTER_DATA_TYPE_UINT32)] uint32 value;
- [case(SPOOLSS_PRINTER_DATA_TYPE_STRING_ARRAY)] nstring_array string_array;
- [default,flag(NDR_REMAINING)] DATA_BLOB data;
- } spoolss_PrinterData;
-
- [noopnum,noprint,public] WERROR _spoolss_GetPrinterData(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 value_name[],
- [in] uint32 offered,
- [out] spoolss_PrinterDataType *type,
- [out] DATA_BLOB *data,
- [out] uint32 *needed
- );
- [noopnum,noprint,public] void __spoolss_GetPrinterData(
- [in] spoolss_PrinterDataType type,
- [out,switch_is(type)] spoolss_PrinterData *data
- );
- [nopull,nopush] WERROR spoolss_GetPrinterData(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 value_name[],
- [in] uint32 offered,
- [out] spoolss_PrinterDataType *type,
- [out,subcontext(4),subcontext_size(offered),switch_is(type)] spoolss_PrinterData *data,
- [out] uint32 *needed
- );
-
- /******************/
- /* Function: 0x1b */
- [noopnum,nopull,noprint,public] WERROR _spoolss_SetPrinterData(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 value_name[],
- [in] spoolss_PrinterDataType type,
- [in] DATA_BLOB data,
- [in] uint32 *_offered
- );
- [noopnum,nopull,noprint,public] void __spoolss_SetPrinterData(
- [in] spoolss_PrinterDataType type,
- [out,switch_is(type)] spoolss_PrinterData *data
- );
- [nopush] WERROR spoolss_SetPrinterData(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 value_name[],
- [in] spoolss_PrinterDataType type,
- [in,subcontext(4),switch_is(type)] spoolss_PrinterData data,
- [in,value(ndr_size_spoolss_PrinterData(&data,type,flags))] uint32 _offered
- );
-
- /******************/
- /* Function: 0x1c */
- WERROR spoolss_WaitForPrinterChange(
- );
-
- /******************/
- /* Function: 0x1d */
- WERROR spoolss_ClosePrinter(
- [in,out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x1e */
- typedef [v1_enum] enum {
- SPOOLSS_FORM_USER = 0,
- SPOOLSS_FORM_BUILTIN = 1,
- SPOOLSS_FORM_PRINTER = 2
- } spoolss_FormFlags;
-
- typedef struct {
- uint32 width;
- uint32 height;
- } spoolss_FormSize;
-
- typedef struct {
- uint32 left;
- uint32 top;
- uint32 right;
- uint32 bottom;
- } spoolss_FormArea;
-
- typedef struct {
- spoolss_FormFlags flags;
- [relative] nstring *form_name;
- spoolss_FormSize size;
- spoolss_FormArea area;
- } spoolss_FormInfo1;
-
- typedef [nodiscriminant,relative_base,public,gensize] union {
- [case(1)] spoolss_FormInfo1 info1;
- [default];
- } spoolss_FormInfo;
-
- typedef struct {
- spoolss_FormFlags flags;
- [string,charset(UTF16)] uint16 *form_name;
- spoolss_FormSize size;
- spoolss_FormArea area;
- } spoolss_AddFormInfo1;
-
- typedef [switch_type(uint32)] union {
- [case(1)] spoolss_AddFormInfo1 *info1;
- } spoolss_AddFormInfo;
-
- WERROR spoolss_AddForm(
- [in,ref] policy_handle *handle,
- [in] uint32 level,
- [in,switch_is(level)] spoolss_AddFormInfo info
- );
-
- /******************/
- /* Function: 0x1f */
- WERROR spoolss_DeleteForm(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 form_name[]
- );
-
- /******************/
- /* Function: 0x20 */
- WERROR spoolss_GetForm(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 form_name[],
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_FormInfo *info,
- [out] uint32 *needed
- );
-
- /******************/
- /* Function: 0x21 */
- WERROR spoolss_SetForm(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 form_name[],
- [in] uint32 level,
- [in,switch_is(level)] spoolss_AddFormInfo info
- );
-
- /******************/
- /* Function: 0x22 */
- [public,noopnum,noprint] WERROR _spoolss_EnumForms(
- [in,ref] policy_handle *handle,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
- [public,noopnum,noprint] void __spoolss_EnumForms(
- [in] uint32 level,
- [in] uint32 count,
- [out,switch_is(level)] spoolss_FormInfo info[count]
- );
- [nopull,nopush] WERROR spoolss_EnumForms(
- [in,ref] policy_handle *handle,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,switch_is(level),size_is(count)] spoolss_FormInfo *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- typedef struct {
- [relative] nstring *port_name;
- } spoolss_PortInfo1;
-
- typedef bitmap {
- SPOOLSS_PORT_TYPE_WRITE = 0x00000001,
- SPOOLSS_PORT_TYPE_READ = 0x00000002,
- SPOOLSS_PORT_TYPE_REDIRECTED = 0x00000004,
- SPOOLSS_PORT_TYPE_NET_ATTACHED = 0x00000008
- } spoolss_PortType;
-
- typedef struct {
- [relative] nstring *port_name;
- [relative] nstring *monitor_name;
- [relative] nstring *description;
- spoolss_PortType port_type;
- uint32 reserved;
- } spoolss_PortInfo2;
-
- typedef [nodiscriminant,relative_base,public] union {
- [case(1)] spoolss_PortInfo1 info1;
- [case(2)] spoolss_PortInfo2 info2;
- [case(3)]; /* TODO */
- [default];
- } spoolss_PortInfo;
-
- /******************/
- /* Function: 0x23 */
- [public,noopnum,noprint] WERROR _spoolss_EnumPorts(
- [in] [string,charset(UTF16)] uint16 *servername,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
- [public,noopnum,noprint] void __spoolss_EnumPorts(
- [in] uint32 level,
- [in] uint32 count,
- [out,switch_is(level)] spoolss_PortInfo info[count]
- );
- [nopull,nopush] WERROR spoolss_EnumPorts(
- [in] [string,charset(UTF16)] uint16 *servername,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,switch_is(level),size_is(count)] spoolss_PortInfo *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- /******************/
- /* Function: 0x24 */
- typedef struct {
- [relative] nstring *monitor_name;
- } spoolss_MonitorInfo1;
-
- typedef struct {
- [relative] nstring *monitor_name;
- [relative] nstring *environment;
- [relative] nstring *dll_name;
- } spoolss_MonitorInfo2;
-
- typedef [nodiscriminant,relative_base,public] union {
- [case(1)] spoolss_MonitorInfo1 info1;
- [case(2)] spoolss_MonitorInfo2 info2;
- [default];
- } spoolss_MonitorInfo;
-
- [public,noopnum,noprint] WERROR _spoolss_EnumMonitors(
- [in] [string,charset(UTF16)] uint16 *servername,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
- [public,noopnum,noprint] void __spoolss_EnumMonitors(
- [in] uint32 level,
- [in] uint32 count,
- [out,switch_is(level)] spoolss_MonitorInfo info[count]
- );
- [nopull,nopush] WERROR spoolss_EnumMonitors(
- [in] [string,charset(UTF16)] uint16 *servername,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [out,switch_is(level),size_is(count)] spoolss_MonitorInfo *info,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- /******************/
- /* Function: 0x25 */
- WERROR spoolss_AddPort(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] uint32 unknown,
- [in] [string,charset(UTF16)] uint16 monitor_name[]
- );
-
- /******************/
- /* Function: 0x26 */
- WERROR spoolss_ConfigurePort(
- );
-
- /******************/
- /* Function: 0x27 */
- WERROR spoolss_DeletePort(
- );
-
- /******************/
- /* Function: 0x28 */
- WERROR spoolss_CreatePrinterIC(
- );
-
- /******************/
- /* Function: 0x29 */
- WERROR spoolss_PlayGDIScriptOnPrinterIC(
- );
-
- /******************/
- /* Function: 0x2a */
- WERROR spoolss_DeletePrinterIC(
- );
-
- /******************/
- /* Function: 0x2b */
- WERROR spoolss_AddPrinterConnection(
- );
-
- /******************/
- /* Function: 0x2c */
- WERROR spoolss_DeletePrinterConnection(
- );
-
- /******************/
- /* Function: 0x2d */
- WERROR spoolss_PrinterMessageBox(
- /* Marked as obsolete in MSDN. "Not necessary and has
- no effect". */
- );
-
- /******************/
- /* Function: 0x2e */
- WERROR spoolss_AddMonitor(
- );
-
- /******************/
- /* Function: 0x2f */
- WERROR spoolss_DeleteMonitor(
- );
-
- /******************/
- /* Function: 0x30 */
- WERROR spoolss_DeletePrintProcessor(
- );
-
- /******************/
- /* Function: 0x31 */
- WERROR spoolss_AddPrintProvidor(
- );
-
- /******************/
- /* Function: 0x32 */
- WERROR spoolss_DeletePrintProvidor(
- );
-
- /******************/
- /* Function: 0x33 */
- WERROR spoolss_EnumPrintProcDataTypes(
- );
-
- /******************/
- /* Function: 0x34 */
- WERROR spoolss_ResetPrinter(
- );
-
- /******************/
- /* Function: 0x35 */
- WERROR spoolss_GetPrinterDriver2(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 *architecture,
- [in] uint32 level,
- [in] DATA_BLOB *buffer,
- [in] uint32 offered,
- [in] uint32 client_major_version,
- [in] uint32 client_minor_version,
- [out] DATA_BLOB *info,
- [out] uint32 *needed,
- [out] uint32 *server_major_version,
- [out] uint32 *server_minor_version
- );
-
- /******************/
- /* Function: 0x36 */
- WERROR spoolss_FindFirstPrinterChangeNotification(
- );
-
- /******************/
- /* Function: 0x37 */
- WERROR spoolss_FindNextPrinterChangeNotification(
- );
-
- /******************/
- /* Function: 0x38 */
- WERROR spoolss_FindClosePrinterNotify(
- );
-
- /******************/
- /* Function: 0x39 */
- WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(
- );
-
- /******************/
- /* Function: 0x3a */
- WERROR spoolss_ReplyOpenPrinter(
- );
-
- /******************/
- /* Function: 0x3b */
- WERROR spoolss_RouterReplyPrinter(
- );
-
- /******************/
- /* Function: 0x3c */
- WERROR spoolss_ReplyClosePrinter(
- );
-
- /******************/
- /* Function: 0x3d */
- WERROR spoolss_AddPortEx(
- );
-
- /******************/
- /* Function: 0x3e */
- WERROR spoolss_RouterFindFirstPrinterChangeNotification(
- );
-
- /******************/
- /* Function: 0x3f */
- WERROR spoolss_SpoolerInit(
- );
-
- /******************/
- /* Function: 0x40 */
- WERROR spoolss_ResetPrinterEx(
- );
-
- /******************/
- /* Function: 0x41 */
- typedef [flag(NDR_PAHEX)] struct {
- uint16 u1;
- uint16 u2;
- uint32 u3;
- uint32 u4;
- uint32 count;
- [size_is(count)] uint16 *array;
- } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2;
-
- typedef struct {
- uint32 u1;
- uint32 u2;
- uint32 count;
- [size_is(count)] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2 *t2;
- } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1;
-
- WERROR spoolss_RemoteFindFirstPrinterChangeNotifyEx(
- [in,ref] policy_handle *handle,
- [in] uint32 u1,
- [in] uint32 u2,
- [in] [string,charset(UTF16)] uint16 *str,
- [in] uint32 u3,
- [in] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1 *t1
- );
-
- /******************/
- /* Function: 0x42 */
- WERROR spoolss_RouterRefreshPrinterChangeNotification(
- );
-
- /******************/
- /* Function: 0x43 */
- WERROR spoolss_RemoteFindNextPrinterChangeNotifyEx(
- );
-
- /******************/
- /* Function: 0x44 */
- WERROR spoolss_44(
- );
-
- typedef struct {
- uint32 size;
- [string,charset(UTF16)] uint16 *client;
- [string,charset(UTF16)] uint16 *user;
- uint32 build;
- uint32 major;
- uint32 minor;
- uint32 processor;
- } spoolss_UserLevel1;
-
- typedef union {
- [case(1)] spoolss_UserLevel1 *level1;
- } spoolss_UserLevel;
-
- /******************/
- /* Function: 0x45 */
- WERROR spoolss_OpenPrinterEx(
- [in] [string,charset(UTF16)] uint16 *printername,
- [in] [string,charset(UTF16)] uint16 *datatype,
- [in] spoolss_DevmodeContainer devmode_ctr,
- [in] uint32 access_mask,
- [in] uint32 level,
- [in,switch_is(level)] spoolss_UserLevel userlevel,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x46 */
- WERROR spoolss_AddPrinterEx(
- [in] [string,charset(UTF16)] uint16 *server,
- [in] uint32 level,
- [in,switch_is(level)] spoolss_PrinterInfo *info,
- [in] spoolss_DevmodeContainer devmode_ctr,
- [in] security_descriptor *secdesc,
- [in] uint32 ulevel,
- [in,switch_is(ulevel)] spoolss_UserLevel userlevel
- );
-
- /******************/
- /* Function: 0x47 */
- WERROR spoolss_47(
- );
-
- /******************/
- /* Function: 0x48 */
- WERROR spoolss_EnumPrinterData(
- [in,ref] policy_handle *handle,
- [in] uint32 enum_index,
- [in] uint32 value_offered,
- [out] lstring *value_name,
- [out] uint32 *value_needed,
- [out] uint32 *printerdata_type,
- [out] DATA_BLOB *buffer,
- [in,out,ref] uint32 *data_size
- );
-
- /******************/
- /* Function: 0x49 */
- WERROR spoolss_DeletePrinterData(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 value_name[]
- );
-
- /******************/
- /* Function: 0x4a */
- WERROR spoolss_4a(
- );
-
- /******************/
- /* Function: 0x4b */
- WERROR spoolss_4b(
- );
-
- /******************/
- /* Function: 0x4c */
- WERROR spoolss_4c(
- );
-
- /******************/
- /* Function: 0x4d */
- WERROR spoolss_SetPrinterDataEx(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 key_name[],
- [in] [string,charset(UTF16)] uint16 value_name[],
- [in] uint32 type,
- [in] DATA_BLOB buffer,
- [in] uint32 offered
- );
-
- /******************/
- /* Function: 0x4e */
- WERROR spoolss_GetPrinterDataEx(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 key_name[],
- [in] [string,charset(UTF16)] uint16 value_name[],
- [in] uint32 offered,
- [out] uint32 *type,
- [out] DATA_BLOB *buffer,
- [out] uint32 *needed
- );
-
- /******************/
- /* Function: 0x4f */
- WERROR spoolss_EnumPrinterDataEx(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 key_name[],
- [in] uint32 offered,
- [out] DATA_BLOB *buffer,
- [out] uint32 *needed,
- [out] uint32 *count
- );
-
- /******************/
- /* Function: 0x50 */
- WERROR spoolss_EnumPrinterKey(
- );
-
- /******************/
- /* Function: 0x51 */
- WERROR spoolss_DeletePrinterDataEx(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 key_name[],
- [in] [string,charset(UTF16)] uint16 value_name[]
- );
-
- /******************/
- /* Function: 0x52 */
- WERROR spoolss_DeletePrinterKey(
- );
-
- /******************/
- /* Function: 0x53 */
- WERROR spoolss_53(
- );
-
- /******************/
- /* Function: 0x54 */
- WERROR spoolss_DeletePrinterDriverEx(
- );
-
- /******************/
- /* Function: 0x55 */
- WERROR spoolss_55(
- );
-
- /******************/
- /* Function: 0x56 */
- WERROR spoolss_56(
- );
-
- /******************/
- /* Function: 0x57 */
- WERROR spoolss_57(
- );
-
- /******************/
- /* Function: 0x58 */
- WERROR spoolss_XcvData(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 function_name[],
- [in] DATA_BLOB in_data,
- [in,value(r->in.in_data.length)] uint32 _in_data_length,
- [in] uint32 offered,
- [in] uint32 unknown1,
- [out] DATA_BLOB *out_data,
- [out] uint32 *needed,
- [out] uint32 *unknown2
- );
-
- /******************/
- /* Function: 0x59 */
- WERROR spoolss_AddPrinterDriverEx(
- );
-
- /******************/
- /* Function: 0x5a */
- WERROR spoolss_5a(
- );
-
- /******************/
- /* Function: 0x5b */
- WERROR spoolss_5b(
- );
-
- /******************/
- /* Function: 0x5c */
- WERROR spoolss_5c(
- );
-
- /******************/
- /* Function: 0x5d */
- WERROR spoolss_5d(
- );
-
- /******************/
- /* Function: 0x5e */
- WERROR spoolss_5e(
- );
-
- /******************/
- /* Function: 0x5f */
- WERROR spoolss_5f(
- );
-}
diff --git a/source/librpc/idl/srvsvc.idl b/source/librpc/idl/srvsvc.idl
deleted file mode 100644
index c054dfdb45f..00000000000
--- a/source/librpc/idl/srvsvc.idl
+++ /dev/null
@@ -1,1512 +0,0 @@
-#include "idl_types.h"
-
-/*
- srvsvc interface definitions
-*/
-
-import "security.idl", "svcctl.idl";
-
-[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"),
- version(3.0),
- endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"),
- pointer_default(unique),
- pointer_default_top(unique),
- helpstring("Server Service")
-] interface srvsvc
-{
- declare bitmap svcctl_ServerType;
- declare bitmap security_secinfo;
-
-/**************************/
-/* srvsvc_NetCharDev */
-/**************************/
- typedef struct {
- [string,charset(UTF16)] uint16 *device;
- } srvsvc_NetCharDevInfo0;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetCharDevInfo0 *array;
- } srvsvc_NetCharDevCtr0;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *device;
- uint32 status;
- [string,charset(UTF16)] uint16 *user;
- uint32 time;
- } srvsvc_NetCharDevInfo1;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetCharDevInfo1 *array;
- } srvsvc_NetCharDevCtr1;
-
- typedef union {
- [case(0)] srvsvc_NetCharDevInfo0 *info0;
- [case(1)] srvsvc_NetCharDevInfo1 *info1;
- [default] ;
- } srvsvc_NetCharDevInfo;
-
- typedef union {
- [case(0)] srvsvc_NetCharDevCtr0 *ctr0;
- [case(1)] srvsvc_NetCharDevCtr1 *ctr1;
- [default] ;
- } srvsvc_NetCharDevCtr;
-
- /******************/
- /* Function: 0x00 */
- WERROR srvsvc_NetCharDevEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in,out,ref] uint32 *level,
- [in,out,ref,switch_is(*level)] srvsvc_NetCharDevCtr *ctr,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out,unique] uint32 *resume_handle
- );
-
- /******************/
- /* Function: 0x01 */
- WERROR srvsvc_NetCharDevGetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 device_name[],
- [in] uint32 level,
- [out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info
- );
-
- /******************/
- /* Function: 0x02 */
- WERROR srvsvc_NetCharDevControl(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 device_name[],
- [in] uint32 opcode
- );
-
-/**************************/
-/* srvsvc_NetCharDevQ */
-/**************************/
- typedef struct {
- [string,charset(UTF16)] uint16 *device;
- } srvsvc_NetCharDevQInfo0;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetCharDevQInfo0 *array;
- } srvsvc_NetCharDevQCtr0;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *device;
- uint32 priority;
- [string,charset(UTF16)] uint16 *devices;
- uint32 users;
- uint32 num_ahead;
- } srvsvc_NetCharDevQInfo1;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetCharDevQInfo1 *array;
- } srvsvc_NetCharDevQCtr1;
-
- typedef union {
- [case(0)] srvsvc_NetCharDevQInfo0 *info0;
- [case(1)] srvsvc_NetCharDevQInfo1 *info1;
- [default] ;
- } srvsvc_NetCharDevQInfo;
-
- typedef union {
- [case(0)] srvsvc_NetCharDevQCtr0 *ctr0;
- [case(1)] srvsvc_NetCharDevQCtr1 *ctr1;
- [default] ;
- } srvsvc_NetCharDevQCtr;
-
- /******************/
- /* Function: 0x03 */
- WERROR srvsvc_NetCharDevQEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *user,
- [in,out,ref] uint32 *level,
- [in,out,switch_is(*level),ref] srvsvc_NetCharDevQCtr *ctr,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out] uint32 *resume_handle
- );
-
- /******************/
- /* Function: 0x04 */
- WERROR srvsvc_NetCharDevQGetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 queue_name[],
- [in] [string,charset(UTF16)] uint16 user[],
- [in] uint32 level,
- [out,switch_is(level),ref] srvsvc_NetCharDevQInfo *info
- );
-
- /******************/
- /* Function: 0x05 */
- WERROR srvsvc_NetCharDevQSetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 queue_name[],
- [in] uint32 level,
- [in,switch_is(level)] srvsvc_NetCharDevQInfo info,
- [in,out] uint32 *parm_error
- );
-
- /******************/
- /* Function: 0x06 */
- WERROR srvsvc_NetCharDevQPurge(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 queue_name[]
- );
-
- /******************/
- /* Function: 0x07 */
- WERROR srvsvc_NetCharDevQPurgeSelf(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 queue_name[],
- [in] [string,charset(UTF16)] uint16 computer_name[]
- );
-
-/**************************/
-/* srvsvc_NetConn */
-/**************************/
- typedef struct {
- uint32 conn_id;
- } srvsvc_NetConnInfo0;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetConnInfo0 *array;
- } srvsvc_NetConnCtr0;
-
- typedef struct {
- uint32 conn_id;
- uint32 conn_type;
- uint32 num_open;
- uint32 num_users;
- uint32 conn_time;
- [string,charset(UTF16)] uint16 *user;
- [string,charset(UTF16)] uint16 *share;
- } srvsvc_NetConnInfo1;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetConnInfo1 *array;
- } srvsvc_NetConnCtr1;
-
- typedef union {
- [case(0)] srvsvc_NetConnCtr0 *ctr0;
- [case(1)] srvsvc_NetConnCtr1 *ctr1;
- [default] ;
- } srvsvc_NetConnCtr;
-
- /******************/
- /* Function: 0x08 */
- WERROR srvsvc_NetConnEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *path,
- [in,out,ref] uint32 *level,
- [in,out,switch_is(*level),ref] srvsvc_NetConnCtr *ctr,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out,unique] uint32 *resume_handle
- );
-
-/**************************/
-/* srvsvc_NetFile */
-/**************************/
- typedef struct {
- uint32 fid;
- } srvsvc_NetFileInfo2;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetFileInfo2 *array;
- } srvsvc_NetFileCtr2;
-
- typedef struct {
- uint32 fid;
- uint32 permissions;
- uint32 num_locks;
- [string,charset(UTF16)] uint16 *path;
- [string,charset(UTF16)] uint16 *user;
- } srvsvc_NetFileInfo3;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetFileInfo3 *array;
- } srvsvc_NetFileCtr3;
-
- typedef union {
- [case(2)] srvsvc_NetFileInfo2 *info2;
- [case(3)] srvsvc_NetFileInfo3 *info3;
- [default] ;
- } srvsvc_NetFileInfo;
-
- typedef union {
- [case(2)] srvsvc_NetFileCtr2 *ctr2;
- [case(3)] srvsvc_NetFileCtr3 *ctr3;
- [default] ;
- } srvsvc_NetFileCtr;
-
- /******************/
- /* Function: 0x09 */
- WERROR srvsvc_NetFileEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *path,
- [in] [string,charset(UTF16)] uint16 *user,
- [in,out,ref] uint32 *level,
- [in,out,switch_is(*level),ref] srvsvc_NetFileCtr *ctr,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out,unique] uint32 *resume_handle
- );
-
- /******************/
- /* Function: 0x0a */
- WERROR srvsvc_NetFileGetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 fid,
- [in] uint32 level,
- [out,switch_is(level),ref] srvsvc_NetFileInfo *info
- );
-
- /******************/
- /* Function: 0x0b */
- WERROR srvsvc_NetFileClose(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 fid
- );
-
-/**************************/
-/* srvsvc_NetSess */
-/**************************/
- typedef struct {
- [string,charset(UTF16)] uint16 *client;
- } srvsvc_NetSessInfo0;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetSessInfo0 *array;
- } srvsvc_NetSessCtr0;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *client;
- [string,charset(UTF16)] uint16 *user;
- uint32 num_open;
- uint32 time;
- uint32 idle_time;
- uint32 user_flags;
- } srvsvc_NetSessInfo1;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetSessInfo1 *array;
- } srvsvc_NetSessCtr1;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *client;
- [string,charset(UTF16)] uint16 *user;
- uint32 num_open;
- uint32 time;
- uint32 idle_time;
- uint32 user_flags;
- [string,charset(UTF16)] uint16 *client_type;
- } srvsvc_NetSessInfo2;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetSessInfo2 *array;
- } srvsvc_NetSessCtr2;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *client;
- [string,charset(UTF16)] uint16 *user;
- uint32 time;
- uint32 idle_time;
- } srvsvc_NetSessInfo10;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetSessInfo10 *array;
- } srvsvc_NetSessCtr10;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *client;
- [string,charset(UTF16)] uint16 *user;
- uint32 num_open;
- uint32 time;
- uint32 idle_time;
- uint32 user_flags;
- [string,charset(UTF16)] uint16 *client_type;
- [string,charset(UTF16)] uint16 *transport;
- } srvsvc_NetSessInfo502;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetSessInfo502 *array;
- } srvsvc_NetSessCtr502;
-
- typedef union {
- [case(0)] srvsvc_NetSessCtr0 *ctr0;
- [case(1)] srvsvc_NetSessCtr1 *ctr1;
- [case(2)] srvsvc_NetSessCtr2 *ctr2;
- [case(10)] srvsvc_NetSessCtr10 *ctr10;
- [case(502)] srvsvc_NetSessCtr502 *ctr502;
- [default] ;
- } srvsvc_NetSessCtr;
-
- /******************/
- /* Function: 0x0c */
- WERROR srvsvc_NetSessEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *client,
- [in] [string,charset(UTF16)] uint16 *user,
- [in,out,ref] uint32 *level,
- [in,out,switch_is(*level),ref] srvsvc_NetSessCtr *ctr,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out,unique] uint32 *resume_handle
- );
-
- /******************/
- /* Function: 0x0d */
- WERROR srvsvc_NetSessDel(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *client,
- [in] [string,charset(UTF16)] uint16 *user
- );
-
-/**************************/
-/* srvsvc_NetShare */
-/**************************/
-
- /* share types */
- 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 {
- [string,charset(UTF16)] uint16 *name;
- } srvsvc_NetShareInfo0;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo0 *array;
- } srvsvc_NetShareCtr0;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *name;
- srvsvc_ShareType type;
- [string,charset(UTF16)] uint16 *comment;
- } srvsvc_NetShareInfo1;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo1 *array;
- } srvsvc_NetShareCtr1;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *name;
- srvsvc_ShareType type;
- [string,charset(UTF16)] uint16 *comment;
- uint32 permissions;
- uint32 max_users;
- uint32 current_users;
- [string,charset(UTF16)] uint16 *path;
- [string,charset(UTF16)] uint16 *password;
- } srvsvc_NetShareInfo2;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo2 *array;
- } srvsvc_NetShareCtr2;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *name;
- srvsvc_ShareType type;
- [string,charset(UTF16)] uint16 *comment;
- uint32 csc_policy;
- } srvsvc_NetShareInfo501;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo501 *array;
- } srvsvc_NetShareCtr501;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *name;
- srvsvc_ShareType type;
- [string,charset(UTF16)] uint16 *comment;
- uint32 permissions;
- int32 max_users;
- uint32 current_users;
- [string,charset(UTF16)] uint16 *path;
- [string,charset(UTF16)] uint16 *password;
- /* maybe here is a struct sec_desc_buf following */
- uint32 unknown;
- [subcontext(4)] security_descriptor *sd;
- } srvsvc_NetShareInfo502;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo502 *array;
- } srvsvc_NetShareCtr502;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *comment;
- } srvsvc_NetShareInfo1004;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo1004 *array;
- } srvsvc_NetShareCtr1004;
-
- typedef bitmap {
- SHARE_1005_IN_DFS = 0x00000001,
- SHARE_1005_DFS_ROOT = 0x00000002
- } NetShareInfo1005Flags;
-
- const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030;
- const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4;
-
- typedef struct {
- NetShareInfo1005Flags dfs_flags;
- } srvsvc_NetShareInfo1005;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo1005 *array;
- } srvsvc_NetShareCtr1005;
-
- typedef struct {
- int32 max_users;
- } srvsvc_NetShareInfo1006;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo1006 *array;
- } srvsvc_NetShareCtr1006;
-
- typedef struct {
- uint32 flags;
- [string,charset(UTF16)] uint16 *alternate_directory_name;
- } srvsvc_NetShareInfo1007;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetShareInfo1007 *array;
- } srvsvc_NetShareCtr1007;
-
- typedef struct {
- uint32 count;
- [size_is(count)] sec_desc_buf *array;
- } srvsvc_NetShareCtr1501;
-
- typedef union {
- [case(0)] srvsvc_NetShareInfo0 *info0;
- [case(1)] srvsvc_NetShareInfo1 *info1;
- [case(2)] srvsvc_NetShareInfo2 *info2;
- [case(501)] srvsvc_NetShareInfo501 *info501;
- [case(502)] srvsvc_NetShareInfo502 *info502;
- [case(1004)] srvsvc_NetShareInfo1004 *info1004;
- [case(1005)] srvsvc_NetShareInfo1005 *info1005;
- [case(1006)] srvsvc_NetShareInfo1006 *info1006;
- [case(1007)] srvsvc_NetShareInfo1007 *info1007;
- [case(1501)] sec_desc_buf *info1501;
- [default] ;
- } srvsvc_NetShareInfo;
-
- typedef union {
- [case(0)] srvsvc_NetShareCtr0 *ctr0;
- [case(1)] srvsvc_NetShareCtr1 *ctr1;
- [case(2)] srvsvc_NetShareCtr2 *ctr2;
- [case(501)] srvsvc_NetShareCtr501 *ctr501;
- [case(502)] srvsvc_NetShareCtr502 *ctr502;
- [case(1004)] srvsvc_NetShareCtr1004 *ctr1004;
- [case(1005)] srvsvc_NetShareCtr1005 *ctr1005;
- [case(1006)] srvsvc_NetShareCtr1006 *ctr1006;
- [case(1007)] srvsvc_NetShareCtr1007 *ctr1007;
- [case(1501)] srvsvc_NetShareCtr1501 *ctr1501;
- [default] ;
- } srvsvc_NetShareCtr;
-
- /******************/
- /* Function: 0x0e */
- WERROR srvsvc_NetShareAdd(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 level,
- [in,switch_is(level)] srvsvc_NetShareInfo info,
- [in,out] uint32 *parm_error
- );
-
- /******************/
- /* Function: 0x0f */
- WERROR srvsvc_NetShareEnumAll (
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in,out,ref] uint32 *level,
- [in,out,ref,switch_is(*level)] srvsvc_NetShareCtr *ctr,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out] uint32 *resume_handle
- );
-
- /******************/
- /* Function: 0x10 */
- WERROR srvsvc_NetShareGetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 share_name[],
- [in] uint32 level,
- [out,ref,switch_is(level)] srvsvc_NetShareInfo *info
- );
-
- /******************/
- /* Function: 0x11 */
- WERROR srvsvc_NetShareSetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 share_name[],
- [in] uint32 level,
- [in,switch_is(level)] srvsvc_NetShareInfo info,
- [in,out] uint32 *parm_error
- );
-
- /******************/
- /* Function: 0x12 */
- WERROR srvsvc_NetShareDel(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 share_name[],
- [in] uint32 reserved
- );
-
- /******************/
- /* Function: 0x13 */
- WERROR srvsvc_NetShareDelSticky(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 share_name[],
- [in] uint32 reserved
- );
-
- /******************/
- /* Function: 0x14 */
- WERROR srvsvc_NetShareCheck(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 device_name[],
- [out,ref] srvsvc_ShareType *type
- );
-
-/**************************/
-/* srvsvc_NetSrv */
-/**************************/
- typedef [public,v1_enum] enum {
- PLATFORM_ID_DOS = 300,
- PLATFORM_ID_OS2 = 400,
- PLATFORM_ID_NT = 500,
- PLATFORM_ID_OSF = 600,
- PLATFORM_ID_VMS = 700
- } srvsvc_PlatformId;
-
- typedef struct {
- srvsvc_PlatformId platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- } srvsvc_NetSrvInfo100;
-
- typedef struct {
- srvsvc_PlatformId platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- uint32 version_major;
- uint32 version_minor;
- svcctl_ServerType server_type;
- [string,charset(UTF16)] uint16 *comment;
- } srvsvc_NetSrvInfo101;
-
- typedef struct {
- srvsvc_PlatformId platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- uint32 version_major;
- uint32 version_minor;
- svcctl_ServerType server_type;
- [string,charset(UTF16)] uint16 *comment;
- uint32 users;
- uint32 disc;
- uint32 hidden;
- uint32 announce;
- uint32 anndelta;
- uint32 licenses;
- [string,charset(UTF16)] uint16 *userpath;
- } srvsvc_NetSrvInfo102;
-
- typedef struct {
- uint32 ulist_mtime;
- uint32 glist_mtime;
- uint32 alist_mtime;
- [string,charset(UTF16)] uint16 *alerts;
- uint32 security;
- uint32 numadmin;
- uint32 lanmask;
- [string,charset(UTF16)] uint16 *guestaccount;
- uint32 chdevs;
- uint32 chdevqs;
- uint32 chdevjobs;
- uint32 connections;
- uint32 shares;
- uint32 openfiles;
- uint32 sessopen;
- uint32 sesssvc;
- uint32 sessreqs;
- uint32 opensearch;
- uint32 activelocks;
- uint32 sizereqbufs;
- uint32 numbigbufs;
- uint32 numfiletasks;
- uint32 alertsched;
- uint32 erroralert;
- uint32 logonalert;
- uint32 accessalert;
- uint32 diskalert;
- uint32 netioalert;
- uint32 maxaudits;
- [string,charset(UTF16)] uint16 *srvheuristics;
- } srvsvc_NetSrvInfo402;
-
- typedef struct {
- uint32 ulist_mtime;
- uint32 glist_mtime;
- uint32 alist_mtime;
- [string,charset(UTF16)] uint16 *alerts;
- uint32 security;
- uint32 numadmin;
- uint32 lanmask;
- [string,charset(UTF16)] uint16 *guestaccount;
- uint32 chdevs;
- uint32 chdevqs;
- uint32 chdevjobs;
- uint32 connections;
- uint32 shares;
- uint32 openfiles;
- uint32 sessopen;
- uint32 sesssvc;
- uint32 sessreqs;
- uint32 opensearch;
- uint32 activelocks;
- uint32 sizereqbufs;
- uint32 numbigbufs;
- uint32 numfiletasks;
- uint32 alertsched;
- uint32 eroralert;
- uint32 logonalert;
- uint32 accessalert;
- uint32 diskalert;
- uint32 netioalert;
- uint32 maxaudits;
- [string,charset(UTF16)] uint16 *srvheuristics;
- uint32 auditedevents;
- uint32 auditprofile;
- [string,charset(UTF16)] uint16 *autopath;
- } srvsvc_NetSrvInfo403;
-
- typedef struct {
- uint32 sessopen;
- uint32 sesssvc;
- uint32 opensearch;
- uint32 sizereqbufs;
- uint32 initworkitems;
- uint32 maxworkitems;
- uint32 rawworkitems;
- uint32 irpstacksize;
- uint32 maxrawbuflen;
- uint32 sessusers;
- uint32 sessconns;
- uint32 maxpagedmemoryusage;
- uint32 maxnonpagedmemoryusage;
- uint32 enablesoftcompat;
- uint32 enableforcedlogoff;
- uint32 timesource;
- uint32 acceptdownlevelapis;
- uint32 lmannounce;
- } srvsvc_NetSrvInfo502;
-
- typedef struct{
- uint32 sessopen;
- uint32 sesssvc;
- uint32 opensearch;
- uint32 sizereqbufs;
- uint32 initworkitems;
- uint32 maxworkitems;
- uint32 rawworkitems;
- uint32 irpstacksize;
- uint32 maxrawbuflen;
- uint32 sessusers;
- uint32 sessconns;
- uint32 maxpagedmemoryusage;
- uint32 maxnonpagedmemoryusage;
- uint32 enablesoftcompat;
- uint32 enableforcedlogoff;
- uint32 timesource;
- uint32 acceptdownlevelapis;
- uint32 lmannounce;
- [string,charset(UTF16)] uint16 *domain;
- uint32 maxcopyreadlen;
- uint32 maxcopywritelen;
- uint32 minkeepsearch;
- uint32 maxkeepsearch;
- uint32 minkeepcomplsearch;
- uint32 maxkeepcomplsearch;
- uint32 threadcountadd;
- uint32 numlockthreads;
- uint32 scavtimeout;
- uint32 minrcvqueue;
- uint32 minfreeworkitems;
- uint32 xactmemsize;
- uint32 threadpriority;
- uint32 maxmpxct;
- uint32 oplockbreakwait;
- uint32 oplockbreakresponsewait;
- uint32 enableoplocks;
- uint32 enableoplockforceclose;
- uint32 enablefcbopens;
- uint32 enableraw;
- uint32 enablesharednetdrives;
- uint32 minfreeconnections;
- uint32 maxfreeconnections;
- } srvsvc_NetSrvInfo503;
-
- typedef struct{
- uint32 sessopen;
- uint32 sesssvc;
- uint32 opensearch;
- uint32 sizereqbufs;
- uint32 initworkitems;
- uint32 maxworkitems;
- uint32 rawworkitems;
- uint32 irpstacksize;
- uint32 maxrawbuflen;
- uint32 sessusers;
- uint32 sessconns;
- uint32 maxpagedmemoryusage;
- uint32 maxnonpagedmemoryusage;
- uint32 enablesoftcompat;
- uint32 enableforcedlogoff;
- uint32 timesource;
- uint32 acceptdownlevelapis;
- uint32 lmannounce;
- [string,charset(UTF16)] uint16 *domain;
- uint32 maxcopyreadlen;
- uint32 maxcopywritelen;
- uint32 minkeepsearch;
- uint32 minkeepcomplsearch;
- uint32 maxkeepcomplsearch;
- uint32 threadcountadd;
- uint32 numlockthreads;
- uint32 scavtimeout;
- uint32 minrcvqueue;
- uint32 minfreeworkitems;
- uint32 xactmemsize;
- uint32 threadpriority;
- uint32 maxmpxct;
- uint32 oplockbreakwait;
- uint32 oplockbreakresponsewait;
- uint32 enableoplocks;
- uint32 enableoplockforceclose;
- uint32 enablefcbopens;
- uint32 enableraw;
- uint32 enablesharednetdrives;
- uint32 minfreeconnections;
- uint32 maxfreeconnections;
- uint32 initsesstable;
- uint32 initconntable;
- uint32 initfiletable;
- uint32 initsearchtable;
- uint32 alertsched;
- uint32 errortreshold;
- uint32 networkerrortreshold;
- uint32 diskspacetreshold;
- uint32 reserved;
- uint32 maxlinkdelay;
- uint32 minlinkthroughput;
- uint32 linkinfovalidtime;
- uint32 scavqosinfoupdatetime;
- uint32 maxworkitemidletime;
- } srvsvc_NetSrvInfo599;
-
- typedef struct{
- [string,charset(UTF16)] uint16 *comment;
- } srvsvc_NetSrvInfo1005;
-
- typedef struct{
- uint32 disc;
- } srvsvc_NetSrvInfo1010;
-
- typedef struct{
- uint32 hidden;
- } srvsvc_NetSrvInfo1016;
-
- typedef struct{
- uint32 announce;
- } srvsvc_NetSrvInfo1017;
-
- typedef struct{
- uint32 anndelta;
- } srvsvc_NetSrvInfo1018;
-
- typedef struct{
- uint32 users;
- } srvsvc_NetSrvInfo1107;
-
- typedef struct{
- uint32 sessopens;
- } srvsvc_NetSrvInfo1501;
-
- typedef struct{
- uint32 sessvcs;
- } srvsvc_NetSrvInfo1502;
-
- typedef struct{
- uint32 opensearch;
- } srvsvc_NetSrvInfo1503;
-
- typedef struct{
- uint32 maxworkitems;
- } srvsvc_NetSrvInfo1506;
-
- typedef struct{
- uint32 maxrawbuflen;
- } srvsvc_NetSrvInfo1509;
-
- typedef struct{
- uint32 sessusers;
- } srvsvc_NetSrvInfo1510;
-
- typedef struct{
- uint32 sesscons;
- } srvsvc_NetSrvInfo1511;
-
- typedef struct{
- uint32 maxnonpagedmemoryusage;
- } srvsvc_NetSrvInfo1512;
-
- typedef struct{
- uint32 maxpagedmemoryusage;
- } srvsvc_NetSrvInfo1513;
-
- typedef struct{
- uint32 enablesoftcompat;
- } srvsvc_NetSrvInfo1514;
-
- typedef struct{
- uint32 enableforcedlogoff;
- } srvsvc_NetSrvInfo1515;
-
- typedef struct{
- uint32 timesource;
- } srvsvc_NetSrvInfo1516;
-
- typedef struct{
- uint32 lmannounce;
- } srvsvc_NetSrvInfo1518;
-
- typedef struct{
- uint32 maxcopyreadlen;
- } srvsvc_NetSrvInfo1520;
-
- typedef struct{
- uint32 maxcopywritelen;
- } srvsvc_NetSrvInfo1521;
-
- typedef struct{
- uint32 minkeepsearch;
- } srvsvc_NetSrvInfo1522;
-
- typedef struct{
- uint32 maxkeepsearch;
- } srvsvc_NetSrvInfo1523;
-
- typedef struct{
- uint32 minkeepcomplsearch;
- } srvsvc_NetSrvInfo1524;
-
- typedef struct{
- uint32 maxkeepcomplsearch;
- } srvsvc_NetSrvInfo1525;
-
- typedef struct{
- uint32 scavtimeout;
- } srvsvc_NetSrvInfo1528;
-
- typedef struct{
- uint32 minrcvqueue;
- } srvsvc_NetSrvInfo1529;
-
- typedef struct{
- uint32 minfreeworkitems;
- } srvsvc_NetSrvInfo1530;
-
- typedef struct{
- uint32 maxmpxct;
- } srvsvc_NetSrvInfo1533;
-
- typedef struct{
- uint32 oplockbreakwait;
- } srvsvc_NetSrvInfo1534;
-
- typedef struct{
- uint32 oplockbreakresponsewait;
- } srvsvc_NetSrvInfo1535;
-
- typedef struct{
- uint32 enableoplocks;
- } srvsvc_NetSrvInfo1536;
-
- typedef struct{
- uint32 enableoplockforceclose;
- } srvsvc_NetSrvInfo1537;
-
- typedef struct{
- uint32 enablefcbopens;
- } srvsvc_NetSrvInfo1538;
-
- typedef struct{
- uint32 enableraw;
- } srvsvc_NetSrvInfo1539;
-
- typedef struct{
- uint32 enablesharednetdrives;
- } srvsvc_NetSrvInfo1540;
-
- typedef struct{
- uint32 minfreeconnections;
- } srvsvc_NetSrvInfo1541;
-
- typedef struct{
- uint32 maxfreeconnections;
- } srvsvc_NetSrvInfo1542;
-
- typedef struct{
- uint32 initsesstable;
- } srvsvc_NetSrvInfo1543;
-
- typedef struct{
- uint32 initconntable;
- } srvsvc_NetSrvInfo1544;
-
- typedef struct{
- uint32 initfiletable;
- } srvsvc_NetSrvInfo1545;
-
- typedef struct{
- uint32 initsearchtable;
- } srvsvc_NetSrvInfo1546;
-
- typedef struct{
- uint32 alertsched;
- } srvsvc_NetSrvInfo1547;
-
- typedef struct{
- uint32 errortreshold;
- } srvsvc_NetSrvInfo1548;
-
- typedef struct{
- uint32 networkerrortreshold;
- } srvsvc_NetSrvInfo1549;
-
- typedef struct{
- uint32 diskspacetreshold;
- } srvsvc_NetSrvInfo1550;
-
- typedef struct{
- uint32 maxlinkdelay;
- } srvsvc_NetSrvInfo1552;
-
- typedef struct{
- uint32 minlinkthroughput;
- } srvsvc_NetSrvInfo1553;
-
- typedef struct{
- uint32 linkinfovalidtime;
- } srvsvc_NetSrvInfo1554;
-
- typedef struct{
- uint32 scavqosinfoupdatetime;
- } srvsvc_NetSrvInfo1555;
-
- typedef struct{
- uint32 maxworkitemidletime;
- } srvsvc_NetSrvInfo1556;
-
-
- typedef union{
- [case(100)] srvsvc_NetSrvInfo100 *info100;
- [case(101)] srvsvc_NetSrvInfo101 *info101;
- [case(102)] srvsvc_NetSrvInfo102 *info102;
- [case(402)] srvsvc_NetSrvInfo402 *info402;
- [case(403)] srvsvc_NetSrvInfo403 *info403;
- [case(502)] srvsvc_NetSrvInfo502 *info502;
- [case(503)] srvsvc_NetSrvInfo503 *info503;
- [case(599)] srvsvc_NetSrvInfo599 *info599;
- [case(1005)] srvsvc_NetSrvInfo1005 *info1005;
- [case(1010)] srvsvc_NetSrvInfo1010 *info1010;
- [case(1016)] srvsvc_NetSrvInfo1016 *info1016;
- [case(1017)] srvsvc_NetSrvInfo1017 *info1017;
- [case(1018)] srvsvc_NetSrvInfo1018 *info1018;
- [case(1107)] srvsvc_NetSrvInfo1107 *info1107;
- [case(1501)] srvsvc_NetSrvInfo1501 *info1501;
- [case(1502)] srvsvc_NetSrvInfo1502 *info1502;
- [case(1503)] srvsvc_NetSrvInfo1503 *info1503;
- [case(1506)] srvsvc_NetSrvInfo1506 *info1506;
- [case(1509)] srvsvc_NetSrvInfo1509 *info1509;
- [case(1510)] srvsvc_NetSrvInfo1510 *info1510;
- [case(1511)] srvsvc_NetSrvInfo1511 *info1511;
- [case(1512)] srvsvc_NetSrvInfo1512 *info1512;
- [case(1513)] srvsvc_NetSrvInfo1513 *info1513;
- [case(1514)] srvsvc_NetSrvInfo1514 *info1514;
- [case(1515)] srvsvc_NetSrvInfo1515 *info1515;
- [case(1516)] srvsvc_NetSrvInfo1516 *info1516;
- [case(1518)] srvsvc_NetSrvInfo1518 *info1518;
- [case(1520)] srvsvc_NetSrvInfo1520 *info1520;
- [case(1521)] srvsvc_NetSrvInfo1521 *info1521;
- [case(1522)] srvsvc_NetSrvInfo1522 *info1522;
- [case(1523)] srvsvc_NetSrvInfo1523 *info1523;
- [case(1524)] srvsvc_NetSrvInfo1524 *info1524;
- [case(1525)] srvsvc_NetSrvInfo1525 *info1525;
- [case(1528)] srvsvc_NetSrvInfo1528 *info1528;
- [case(1529)] srvsvc_NetSrvInfo1529 *info1529;
- [case(1530)] srvsvc_NetSrvInfo1530 *info1530;
- [case(1533)] srvsvc_NetSrvInfo1533 *info1533;
- [case(1534)] srvsvc_NetSrvInfo1534 *info1534;
- [case(1535)] srvsvc_NetSrvInfo1535 *info1535;
- [case(1536)] srvsvc_NetSrvInfo1536 *info1536;
- [case(1537)] srvsvc_NetSrvInfo1537 *info1537;
- [case(1538)] srvsvc_NetSrvInfo1538 *info1538;
- [case(1539)] srvsvc_NetSrvInfo1539 *info1539;
- [case(1540)] srvsvc_NetSrvInfo1540 *info1540;
- [case(1541)] srvsvc_NetSrvInfo1541 *info1541;
- [case(1542)] srvsvc_NetSrvInfo1542 *info1542;
- [case(1543)] srvsvc_NetSrvInfo1543 *info1543;
- [case(1544)] srvsvc_NetSrvInfo1544 *info1544;
- [case(1545)] srvsvc_NetSrvInfo1545 *info1545;
- [case(1546)] srvsvc_NetSrvInfo1546 *info1546;
- [case(1547)] srvsvc_NetSrvInfo1547 *info1547;
- [case(1548)] srvsvc_NetSrvInfo1548 *info1548;
- [case(1549)] srvsvc_NetSrvInfo1549 *info1549;
- [case(1550)] srvsvc_NetSrvInfo1550 *info1550;
- [case(1552)] srvsvc_NetSrvInfo1552 *info1552;
- [case(1553)] srvsvc_NetSrvInfo1553 *info1553;
- [case(1554)] srvsvc_NetSrvInfo1554 *info1554;
- [case(1555)] srvsvc_NetSrvInfo1555 *info1555;
- [case(1556)] srvsvc_NetSrvInfo1556 *info1556;
- [default];
- } srvsvc_NetSrvInfo;
-
- /******************/
- /* Function: 0x15 */
- WERROR srvsvc_NetSrvGetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 level,
- [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info
- );
-
- /******************/
- /* Function: 0x16 */
- WERROR srvsvc_NetSrvSetInfo(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 level,
- [in,switch_is(level)] srvsvc_NetSrvInfo info,
- [in,out] uint32 *parm_error
- );
-
-/**************************/
-/* srvsvc_NetDisk */
-/**************************/
- typedef struct {
- [flag(STR_LEN4)] string disk;
- } srvsvc_NetDiskInfo0;
-
- typedef struct {
- uint32 count;
- [size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks;
- } srvsvc_NetDiskInfo;
-
- /******************/
- /* Function: 0x17 */
- WERROR srvsvc_NetDiskEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 level,
- [in,out,ref] srvsvc_NetDiskInfo *info,
- [in] uint32 maxlen,
- [out,ref] uint32 *totalentries,
- [in,out] uint32 *resume_handle
- );
-
-/**************************/
-/* srvsvc_NetStatistics */
-/**************************/
- typedef struct {
- uint32 start;
- uint32 fopens;
- uint32 devopens;
- uint32 jobsqueued;
- uint32 sopens;
- uint32 stimeouts;
- uint32 serrorout;
- uint32 pwerrors;
- uint32 permerrors;
- uint32 syserrors;
- uint32 bytessent_low;
- uint32 bytessent_high;
- uint32 bytesrcvd_low;
- uint32 bytesrcvd_high;
- uint32 avresponse;
- uint32 reqbufneed;
- uint32 bigbufneed;
- } srvsvc_Statistics;
-
- /******************/
- /* Function: 0x18 */
- WERROR srvsvc_NetServerStatisticsGet(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *service,
- [in] uint32 level,
- [in] uint32 options,
- [out,ref] srvsvc_Statistics *stats
- );
-
-/**************************/
-/* srvsvc_NetTransport */
-/**************************/
- typedef struct {
- uint32 vcs;
- [string,charset(UTF16)] uint16 *name;
- [size_is(addr_len)] uint8 *addr;
- uint32 addr_len;
- [string,charset(UTF16)] uint16 *net_addr;
- } srvsvc_NetTransportInfo0;
-
- /******************/
- /* Function: 0x19 */
- WERROR srvsvc_NetTransportAdd(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 level,
- [in,switch_is(level)] srvsvc_NetTransportInfo info
- );
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetTransportInfo0 *array;
- } srvsvc_NetTransportCtr0;
-
- typedef struct {
- uint32 vcs;
- [string,charset(UTF16)] uint16 *name;
- [size_is(addr_len)] uint8 *addr;
- uint32 addr_len;
- [string,charset(UTF16)] uint16 *net_addr;
- [string,charset(UTF16)] uint16 *domain;
- } srvsvc_NetTransportInfo1;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetTransportInfo1 *array;
- } srvsvc_NetTransportCtr1;
-
- typedef struct {
- uint32 vcs;
- [string,charset(UTF16)] uint16 *name;
- [size_is(addr_len)] uint8 *addr;
- uint32 addr_len;
- [string,charset(UTF16)] uint16 *net_addr;
- [string,charset(UTF16)] uint16 *domain;
- uint32 unknown;
- } srvsvc_NetTransportInfo2;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetTransportInfo2 *array;
- } srvsvc_NetTransportCtr2;
-
- typedef struct {
- uint32 vcs;
- [string,charset(UTF16)] uint16 *name;
- [size_is(addr_len)] uint8 *addr;
- uint32 addr_len;
- [string,charset(UTF16)] uint16 *net_addr;
- [string,charset(UTF16)] uint16 *domain;
- uint32 unknown1;
- uint32 unknown2;
- uint8 unknown3[256];
- } srvsvc_NetTransportInfo3;
-
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetTransportInfo3 *array;
- } srvsvc_NetTransportCtr3;
-
- typedef union {
- [case(0)] srvsvc_NetTransportCtr0 *ctr0;
- [case(1)] srvsvc_NetTransportCtr1 *ctr1;
- [case(2)] srvsvc_NetTransportCtr2 *ctr2;
- [case(3)] srvsvc_NetTransportCtr3 *ctr3;
- [default];
- } srvsvc_NetTransportCtr;
-
- /******************/
- /* Function: 0x1a */
- WERROR srvsvc_NetTransportEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in,out,ref] uint32 *level,
- [in,out,ref,switch_is(*level)] srvsvc_NetTransportCtr *transports,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out,unique] uint32 *resume_handle
- );
-
- /******************/
- /* Function: 0x1b */
- WERROR srvsvc_NetTransportDel(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 unknown,
- [in] srvsvc_NetTransportInfo0 transport
- );
-
-/**************************/
-/* srvsvc_NetRemoteTOD */
-/**************************/
- typedef struct {
- uint32 elapsed; /* time(NULL) */
- uint32 msecs; /* milliseconds till system reboot (uptime) */
- uint32 hours;
- uint32 mins;
- uint32 secs;
- uint32 hunds;
- int32 timezone; /* in minutes */
- uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */
- uint32 day;
- uint32 month;
- uint32 year;
- uint32 weekday;
- } srvsvc_NetRemoteTODInfo;
-
- /******************/
- /* Function: 0x1c */
- WERROR srvsvc_NetRemoteTOD(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [out] srvsvc_NetRemoteTODInfo *info
- );
-
-/**************************/
-/* srvsvc_NetServiceBits */
-/**************************/
- /******************/
- /* Function: 0x1d */
- WERROR srvsvc_NetSetServiceBits(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *transport,
- [in] uint32 servicebits,
- [in] uint32 updateimmediately
- );
-
-/**************************/
-/* srvsvc_NetPath */
-/**************************/
- /******************/
- /* Function: 0x1e */
- WERROR srvsvc_NetPathType(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 path[],
- [in] uint32 pathflags,
- [out,ref] uint32 *pathtype
- );
-
- /******************/
- /* Function: 0x1f */
- WERROR srvsvc_NetPathCanonicalize(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 path[],
- [out] [size_is(maxbuf)] uint8 can_path[],
- [in] uint32 maxbuf,
- [in] [string,charset(UTF16)] uint16 prefix[],
- [in,out,ref] uint32 *pathtype,
- [in] uint32 pathflags
- );
-
- /******************/
- /* Function: 0x20 */
- WERROR srvsvc_NetPathCompare(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 path1[],
- [in] [string,charset(UTF16)] uint16 path2[],
- [in] uint32 pathtype,
- [in] uint32 pathflags
- );
-
-/**************************/
-/* srvsvc_NetName */
-/**************************/
- /******************/
- /* Function: 0x21 */
- WERROR srvsvc_NetNameValidate(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 name[],
- [in] uint32 name_type,
- [in] uint32 flags
- );
-
- /******************/
- /* Function: 0x22 */
- WERROR srvsvc_NETRPRNAMECANONICALIZE(
- );
-
- /******************/
- /* Function: 0x23 */
- WERROR srvsvc_NetPRNameCompare(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 name1[],
- [in] [string,charset(UTF16)] uint16 name2[],
- [in] uint32 name_type,
- [in] uint32 flags
- );
-
-/**************************/
-/* srvsvc_NetShare ... */
-/**************************/
- /******************/
- /* Function: 0x24 */
- /* Note, there must be some way to return entries read vs
- total entries ... */
- WERROR srvsvc_NetShareEnum(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in,out,ref] uint32 *level,
- [in,out,ref,switch_is(*level)] srvsvc_NetShareCtr *ctr,
- [in] uint32 max_buffer,
- [out,ref] uint32 *totalentries,
- [in,out,unique] uint32 *resume_handle
- );
-
- /******************/
- /* Function: 0x25 */
- WERROR srvsvc_NetShareDelStart(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 share[],
- [in] uint32 reserved,
- [out] policy_handle *hnd
- );
-
- /******************/
- /* Function: 0x26 */
- WERROR srvsvc_NetShareDelCommit(
- [in, out] policy_handle *hnd
- );
-
- /******************/
- /* Function: 0x27 */
- WERROR srvsvc_NetGetFileSecurity(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *share,
- [in] [string,charset(UTF16)] uint16 file[],
- [in] security_secinfo securityinformation,
- [out] sec_desc_buf *sd_buf
- );
-
- /******************/
- /* Function: 0x28 */
- WERROR srvsvc_NetSetFileSecurity(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *share,
- [in] [string,charset(UTF16)] uint16 file[],
- [in] security_secinfo securityinformation,
- [in] sec_desc_buf sd_buf
- );
-
-
-
- typedef [switch_type(uint32)] union {
- [case(0)] srvsvc_NetTransportInfo0 info0;
- [case(1)] srvsvc_NetTransportInfo1 info1;
- [case(2)] srvsvc_NetTransportInfo2 info2;
- [case(3)] srvsvc_NetTransportInfo3 info3;
- } srvsvc_NetTransportInfo;
-
- /******************/
- /* Function: 0x29 */
- WERROR srvsvc_NetServerTransportAddEx(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] uint32 level,
- [in,switch_is(level)] srvsvc_NetTransportInfo info
- );
-
- /******************/
- /* Function: 0x2a */
- WERROR srvsvc_NetServerSetServiceBitsEx(
- [in] [string,charset(UTF16)] uint16 *server_unc,
- [in] [string,charset(UTF16)] uint16 *emulated_server_unc,
- [in] [string,charset(UTF16)] uint16 *transport,
- [in] uint32 servicebitsofinterest,
- [in] uint32 servicebits,
- [in] uint32 updateimmediately
- );
-
- /******************/
- /* Function: 0x2b */
- WERROR srvsvc_NETRDFSGETVERSION(
- );
-
- /******************/
- /* Function: 0x2c */
- WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
- );
-
- /******************/
- /* Function: 0x2d */
- WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
- );
-
- /******************/
- /* Function: 0x2e */
- WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
- );
-
- /******************/
- /* Function: 0x2f */
- WERROR srvsvc_NETRDFSSETSERVERINFO(
- );
-
- /******************/
- /* Function: 0x30 */
- WERROR srvsvc_NETRDFSCREATEEXITPOINT(
- );
-
- /******************/
- /* Function: 0x31 */
- WERROR srvsvc_NETRDFSDELETEEXITPOINT(
- );
-
- /******************/
- /* Function: 0x32 */
- WERROR srvsvc_NETRDFSMODIFYPREFIX(
- );
-
- /******************/
- /* Function: 0x33 */
- WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
- );
-
- /******************/
- /* Function: 0x34 */
- WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
- );
-
- /******************/
- /* Function: 0x35 */
- WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
- );
-}
diff --git a/source/librpc/idl/svcctl.idl b/source/librpc/idl/svcctl.idl
deleted file mode 100644
index c2ede616ee9..00000000000
--- a/source/librpc/idl/svcctl.idl
+++ /dev/null
@@ -1,499 +0,0 @@
-#include "idl_types.h"
-
-/*
- svcctl interface definitions
-*/
-
-[ uuid("367abb81-9844-35f1-ad32-98f038001003"),
- version(2.0),
- pointer_default(unique),
- pointer_default_top(unique),
- endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"),
- helpstring("Service Control")
-] interface svcctl
-{
- typedef struct {
- uint32 is_locked;
- [string,charset(UTF16)] uint16 *lock_owner;
- uint32 lock_duration;
- } SERVICE_LOCK_STATUS;
-
- typedef struct {
- uint32 type;
- uint32 state;
- uint32 controls_accepted;
- uint32 win32_exit_code;
- uint32 service_exit_code;
- uint32 check_point;
- uint32 wait_hint;
- } SERVICE_STATUS;
-
- typedef struct {
- [relative] astring *service_name;
- [relative] astring *display_name;
- SERVICE_STATUS status;
- } ENUM_SERVICE_STATUS;
-
- const int SERVICE_TYPE_KERNEL_DRIVER = 0x01;
- const int SERVICE_TYPE_FS_DRIVER = 0x02;
- const int SERVICE_TYPE_ADAPTER = 0x04;
- const int SERVICE_TYPE_RECOGNIZER_DRIVER = 0x08;
- const int SERVICE_TYPE_DRIVER=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER;
- const int SERVICE_TYPE_WIN32_OWN_PROCESS = 0x10;
- const int SERVICE_TYPE_WIN32_SHARE_PROCESS = 0x20;
- const int SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS;
-
- const int SERVICE_STATE_ACTIVE = 0x01;
- const int SERVICE_STATE_INACTIVE = 0x02;
- const int SERVICE_STATE_ALL = 0x03;
-
- typedef [public,bitmap32bit] bitmap {
- SV_TYPE_WORKSTATION = 0x00000001,
- SV_TYPE_SERVER = 0x00000002,
- SV_TYPE_SQLSERVER = 0x00000004,
- SV_TYPE_DOMAIN_CTRL = 0x00000008,
- SV_TYPE_DOMAIN_BAKCTRL = 0x00000010,
- SV_TYPE_TIME_SOURCE = 0x00000020,
- SV_TYPE_AFP = 0x00000040,
- SV_TYPE_NOVELL = 0x00000080,
-
- SV_TYPE_DOMAIN_MEMBER = 0x00000100,
- SV_TYPE_PRINTQ_SERVER = 0x00000200,
- SV_TYPE_DIALIN_SERVER = 0x00000400,
- SV_TYPE_SERVER_UNIX = 0x00000800,
- SV_TYPE_NT = 0x00001000,
- SV_TYPE_WFW = 0x00002000,
- SV_TYPE_SERVER_MFPN = 0x00004000,
- SV_TYPE_SERVER_NT = 0x00008000,
- SV_TYPE_POTENTIAL_BROWSER = 0x00010000,
- SV_TYPE_BACKUP_BROWSER = 0x00020000,
- SV_TYPE_MASTER_BROWSER = 0x00040000,
- SV_TYPE_DOMAIN_MASTER = 0x00080000,
- SV_TYPE_SERVER_OSF = 0x00100000,
- SV_TYPE_SERVER_VMS = 0x00200000,
- SV_TYPE_WIN95_PLUS = 0x00400000,
- SV_TYPE_DFS_SERVER = 0x00800000,
- SV_TYPE_ALTERNATE_XPORT = 0x20000000,
- SV_TYPE_LOCAL_LIST_ONLY = 0x40000000,
- SV_TYPE_DOMAIN_ENUM = 0x80000000
- } svcctl_ServerType;
-
- const uint32 SV_TYPE_ALL = 0xFFFFFFFF;
-
- /*****************/
- /* Function 0x00 */
- WERROR svcctl_CloseServiceHandle(
- [in,out,ref] policy_handle *handle
- );
-
- /*****************/
- /* Function 0x01 */
-
- typedef enum {
- FIXME=1
- } SERVICE_CONTROL;
-
- WERROR svcctl_ControlService(
- [in,ref] policy_handle *handle,
- [in] uint32 control,
- [out,ref] SERVICE_STATUS *service_status
- );
-
- /*****************/
- /* Function 0x02 */
- WERROR svcctl_DeleteService(
- [in,ref] policy_handle *handle
- );
-
- /*****************/
- /* Function 0x03 */
-
- WERROR svcctl_LockServiceDatabase(
- [in,ref] policy_handle *handle,
- [out,ref] policy_handle *lock
- );
-
- /*****************/
- /* Function 0x04 */
- WERROR svcctl_QueryServiceObjectSecurity(
- );
-
- /*****************/
- /* Function 0x05 */
- WERROR svcctl_SetServiceObjectSecurity(
- );
-
- /*****************/
- /* Function 0x06 */
- WERROR svcctl_QueryServiceStatus(
- [in,ref] policy_handle *handle,
- [out,ref] SERVICE_STATUS *service_status
- );
-
- /*****************/
- /* Function 0x07 */
- WERROR svcctl_SetServiceStatus(
- );
-
- /*****************/
- /* Function 0x08 */
- WERROR svcctl_UnlockServiceDatabase(
- [in,out,ref] policy_handle *lock
- );
-
- /*****************/
- /* Function 0x09 */
- WERROR svcctl_NotifyBootConfigStatus(
- );
-
- /*****************/
- /* Function 0x0a */
- WERROR svcctl_SCSetServiceBitsW(
- [in,ref] policy_handle *handle,
- [in] uint32 bits,
- [in] boolean32 bitson,
- [in] boolean32 immediate
- );
-
- /*****************/
- /* Function 0x0b */
- WERROR svcctl_ChangeServiceConfigW(
- [in,ref] policy_handle *handle,
- [in] uint32 type,
- [in] uint32 start,
- [in] uint32 error,
- [in] [string,charset(UTF16)] uint16 *binary_path,
- [in] [string,charset(UTF16)] uint16 *load_order_group,
- [out,ref] uint32 *tag_id,
- [in] [string,charset(UTF16)] uint16 *dependencies,
- [in] [string,charset(UTF16)] uint16 *service_start_name,
- [in] [string,charset(UTF16)] uint16 *password,
- [in] [string,charset(UTF16)] uint16 *display_name
- );
-
- /*****************/
- /* Function 0x0c */
- WERROR svcctl_CreateServiceW(
- [in,ref] policy_handle *scmanager_handle,
- [in] [string,charset(UTF16)] uint16 ServiceName[],
- [in] [string,charset(UTF16)] uint16 *DisplayName,
- [in] uint32 desired_access,
- [in] uint32 type,
- [in] uint32 start_type,
- [in] uint32 error_control,
- [in] [string,charset(UTF16)] uint16 binary_path[],
- [in] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
- [in,out] uint32 *TagId,
- [in,size_is(dependencies_size)] uint8 *dependencies,
- [in] uint32 dependencies_size,
- [in] [string,charset(UTF16)] uint16 *service_start_name,
- [in,size_is(password_size)] uint8 *password,
- [in] uint32 password_size,
- [out,ref] policy_handle *handle
- );
-
- /*****************/
- /* Function 0x0d */
- WERROR svcctl_EnumDependentServicesW(
- [in,ref] policy_handle *service,
- [in] uint32 state,
- [out] ENUM_SERVICE_STATUS *service_status,
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed,
- [out,ref] uint32 *services_returned
- );
-
- /*****************/
- /* Function 0x0e */
- WERROR svcctl_EnumServicesStatusW(
- [in,ref] policy_handle *handle,
- [in] uint32 type,
- [in] uint32 state,
- [in] uint32 buf_size,
- [out,size_is(buf_size)] uint8 service[*],
- [out,ref] uint32 *bytes_needed,
- [out,ref] uint32 *services_returned,
- [in,out] uint32 *resume_handle
- );
-
- /*****************/
- /* Function 0x0f */
- WERROR svcctl_OpenSCManagerW(
- [in] [string,charset(UTF16)] uint16 *MachineName,
- [in] [string,charset(UTF16)] uint16 *DatabaseName,
- [in] uint32 access_mask,
- [out,ref] policy_handle *handle
- );
-
- /*****************/
- /* Function 0x10 */
- WERROR svcctl_OpenServiceW(
- [in,ref] policy_handle *scmanager_handle,
- [in] [string,charset(UTF16)] uint16 ServiceName[],
- [in] uint32 access_mask,
- [out,ref] policy_handle *handle
- );
-
- /*****************/
- /* Function 0x11 */
- WERROR svcctl_QueryServiceConfigW(
- [in,ref] policy_handle *handle,
- [out] uint8 query[buf_size], /*QUERY_SERVICE_CONFIG */
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed
- );
-
- /*****************/
- /* Function 0x12 */
- WERROR svcctl_QueryServiceLockStatusW(
- [in,ref] policy_handle *handle,
- [in] uint32 buf_size,
- [out,ref] SERVICE_LOCK_STATUS *lock_status,
- [out,ref] uint32 *required_buf_size
- );
-
- /*****************/
- /* Function 0x13 */
- WERROR svcctl_StartServiceW(
- [in,ref] policy_handle *handle,
- [in] uint32 NumArgs,
- [in,length_is(NumArgs)] [string,charset(UTF16)] uint16 *Arguments
- );
-
- /*****************/
- /* Function 0x14 */
- WERROR svcctl_GetServiceDisplayNameW(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 *service_name,
- [out,ref] [string,charset(UTF16)] uint16 **display_name,
- [in,out] uint32 *display_name_length
- );
-
- /*****************/
- /* Function 0x15 */
- WERROR svcctl_GetServiceKeyNameW(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 *service_name,
- [out,ref] [string,charset(UTF16)] uint16 **key_name,
- [in,out] uint32 *display_name_length
- );
-
- /*****************/
- /* Function 0x16 */
- WERROR svcctl_SCSetServiceBitsA(
- [in,ref] policy_handle *handle,
- [in] uint32 bits,
- [in] boolean32 bitson,
- [in] boolean32 immediate
- );
-
- /*****************/
- /* Function 0x17 */
- WERROR svcctl_ChangeServiceConfigA(
- [in,ref] policy_handle *handle,
- [in] uint32 type,
- [in] uint32 start,
- [in] uint32 error,
- [in] [string,charset(UTF16)] uint16 *binary_path,
- [in] [string,charset(UTF16)] uint16 *load_order_group,
- [out,ref] uint32 *tag_id,
- [in] [string,charset(UTF16)] uint16 *dependencies,
- [in] [string,charset(UTF16)] uint16 *service_start_name,
- [in] [string,charset(UTF16)] uint16 *password,
- [in] [string,charset(UTF16)] uint16 *display_name
- );
-
- /*****************/
- /* Function 0x18 */
- WERROR svcctl_CreateServiceA(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 *ServiceName,
- [in] [string,charset(UTF16)] uint16 *DisplayName,
- [in] uint32 desired_access,
- [in] uint32 type,
- [in] uint32 start_type,
- [in] uint32 error_control,
- [in] [string,charset(UTF16)] uint16 *binary_path,
- [in] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
- [out] uint32 *TagId,
- [in] [string,charset(UTF16)] uint16 *dependencies,
- [in] [string,charset(UTF16)] uint16 *service_start_name,
- [in] [string,charset(UTF16)] uint16 *password
- );
-
- /*****************/
- /* Function 0x19 */
- WERROR svcctl_EnumDependentServicesA(
- [in,ref] policy_handle *service,
- [in] uint32 state,
- [out] ENUM_SERVICE_STATUS *service_status,
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed,
- [out,ref] uint32 *services_returned
- );
-
- /*****************/
- /* Function 0x1a */
- WERROR svcctl_EnumServicesStatusA(
- [in,ref] policy_handle *handle,
- [in] uint32 type,
- [in] uint32 state,
- [in] uint32 buf_size,
- [out,size_is(buf_size)] uint8 service[*],
- [out,ref] uint32 *bytes_needed,
- [out,ref] uint32 *services_returned,
- [in,out] uint32 *resume_handle
- );
-
- /*****************/
- /* Function 0x1b */
- WERROR svcctl_OpenSCManagerA(
- [in] [string,charset(UTF16)] uint16 *MachineName,
- [in] [string,charset(UTF16)] uint16 *DatabaseName,
- [in] uint32 access_mask,
- [out,ref] policy_handle *handle
- );
-
- /*****************/
- /* Function 0x1c */
- WERROR svcctl_OpenServiceA(
- [in,ref] policy_handle *scmanager_handle,
- [in] [string,charset(UTF16)] uint16 *ServiceName,
- [in] uint32 access_mask
- );
-
- /*****************/
- /* Function 0x1d */
- WERROR svcctl_QueryServiceConfigA(
- [in,ref] policy_handle *handle,
- [out] uint8 query[buf_size], /*QUERYU_SERVICE_CONFIG */
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed
- );
-
- /*****************/
- /* Function 0x1e */
- WERROR svcctl_QueryServiceLockStatusA(
- [in,ref] policy_handle *handle,
- [in] uint32 buf_size,
- [out,ref] SERVICE_LOCK_STATUS *lock_status,
- [out,ref] uint32 *required_buf_size
- );
-
- /*****************/
- /* Function 0x1f */
- WERROR svcctl_StartServiceA(
- [in,ref] policy_handle *handle,
- [in] uint32 NumArgs,
- [in,length_is(NumArgs)] [string,charset(UTF16)] uint16 *Arguments
- );
-
- /*****************/
- /* Function 0x20 */
- WERROR svcctl_GetServiceDisplayNameA(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 *service_name,
- [out,ref] [string,charset(UTF16)] uint16 **display_name,
- [in,out] uint32 *display_name_length
- );
-
- /*****************/
- /* Function 0x21 */
- WERROR svcctl_GetServiceKeyNameA(
- [in,ref] policy_handle *handle,
- [in] [string,charset(UTF16)] uint16 *service_name,
- [out,ref] [string,charset(UTF16)] uint16 **key_name,
- [in,out] uint32 *display_name_length
- );
-
- /*****************/
- /* Function 0x22 */
- WERROR svcctl_GetCurrentGroupeStateW(
- );
-
- /*****************/
- /* Function 0x23 */
- WERROR svcctl_EnumServiceGroupW(
- );
-
- /*****************/
- /* Function 0x24 */
- WERROR svcctl_ChangeServiceConfig2A(
- [in,ref] policy_handle *handle,
- [in] uint32 info_level,
- [in] uint8 *info
- );
-
- /*****************/
- /* Function 0x25 */
- WERROR svcctl_ChangeServiceConfig2W(
- [in,ref] policy_handle *handle,
- [in] uint32 info_level,
- [in] uint8 *info
- );
-
- /*****************/
- /* Function 0x26 */
- WERROR svcctl_QueryServiceConfig2A(
- [in,ref] policy_handle *handle,
- [in] uint32 info_level,
- [out] uint8 buffer[buf_size],
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed
- );
-
- /*****************/
- /* Function 0x27 */
- WERROR svcctl_QueryServiceConfig2W(
- [in,ref] policy_handle *handle,
- [in] uint32 info_level,
- [out] uint8 buffer[buf_size],
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed
- );
-
- /*****************/
- /* Function 0x28 */
- WERROR svcctl_QueryServiceStatusEx(
- [in,ref] policy_handle *handle,
- [in] uint32 info_level,
- [out] uint8 buffer[buf_size],
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed
- );
-
- /*****************/
- /* Function 0x29 */
- WERROR EnumServicesStatusExA(
- [in,ref] policy_handle *scmanager,
- [in] uint32 info_level,
- [in] uint32 type,
- [in] uint32 state,
- [out] uint8 services[buf_size],
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed,
- [out,ref] uint32 *service_returned,
- [in,out] uint32 *resume_handle,
- [out,ref] [string,charset(UTF16)] uint16 **group_name
- );
-
- /*****************/
- /* Function 0x2a */
- WERROR EnumServicesStatusExW(
- [in,ref] policy_handle *scmanager,
- [in] uint32 info_level,
- [in] uint32 type,
- [in] uint32 state,
- [out] uint8 services[buf_size],
- [in] uint32 buf_size,
- [out,ref] uint32 *bytes_needed,
- [out,ref] uint32 *service_returned,
- [in,out] uint32 *resume_handle,
- [out,ref] [string,charset(UTF16)] uint16 **group_name
- );
-
- /*****************/
- /* Function 0x2b */
- WERROR svcctl_SCSendTSMessage(
- );
-}
diff --git a/source/librpc/idl/unixinfo.idl b/source/librpc/idl/unixinfo.idl
deleted file mode 100644
index 48bc565fff5..00000000000
--- a/source/librpc/idl/unixinfo.idl
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "idl_types.h"
-/*
- Unixinfo interface definition
-*/
-
-import "security.idl";
-
-[ uuid("9c54e310-a955-4885-bd31-78787147dfa6"),
- version(0.0),
- endpoint("ncacn_np:[\\pipe\\unixinfo]", "ncacn_ip_tcp:", "ncalrpc:"),
- pointer_default(unique),
- helpstring("Unixinfo specific stuff")
-] interface unixinfo
-{
- /******************/
- /* Function: 0x00 */
- NTSTATUS unixinfo_SidToUid (
- [in] dom_sid sid,
- [out] hyper *uid
- );
-
- /******************/
- /* Function: 0x01 */
- NTSTATUS unixinfo_UidToSid (
- [in] hyper uid,
- [out] dom_sid *sid
- );
-
- /******************/
- /* Function: 0x02 */
- NTSTATUS unixinfo_SidToGid (
- [in] dom_sid sid,
- [out] hyper *gid
- );
-
- /******************/
- /* Function: 0x03 */
- NTSTATUS unixinfo_GidToSid (
- [in] hyper gid,
- [out] dom_sid *sid
- );
-
- typedef struct {
- NTSTATUS status;
- utf8string homedir;
- utf8string shell;
- } unixinfo_GetPWUidInfo;
-
- /******************/
- /* Function: 0x04 */
- NTSTATUS unixinfo_GetPWUid (
- [in,out,ref,range(0,1023)] uint32 *count,
- [in,size_is(*count)] hyper uids[],
- [out,size_is(*count)] unixinfo_GetPWUidInfo infos[*]
- );
-}
diff --git a/source/librpc/idl/winreg.idl b/source/librpc/idl/winreg.idl
deleted file mode 100644
index a0d43232680..00000000000
--- a/source/librpc/idl/winreg.idl
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- winreg interface definition
-*/
-
-import "lsa.idl", "initshutdown.idl", "security.idl";
-
-[
- uuid("338cd001-2244-31f1-aaaa-900038001003"),
- version(1.0),
- endpoint("ncacn_np:[\\pipe\\winreg]","ncacn_ip_tcp:","ncalrpc:"),
- pointer_default(unique),
- pointer_default_top(unique),
- helpstring("Remote Registry Service")
-] interface winreg
-{
- declare bitmap security_secinfo;
-
- typedef [bitmap32bit] bitmap {
- KEY_QUERY_VALUE = 0x00001,
- KEY_SET_VALUE = 0x00002,
- KEY_CREATE_SUB_KEY = 0x00004,
- KEY_ENUMERATE_SUB_KEYS = 0x00008,
- KEY_NOTIFY = 0x00010,
- KEY_CREATE_LINK = 0x00020,
- KEY_WOW64_64KEY = 0x00100,
- KEY_WOW64_32KEY = 0x00200
- } winreg_AccessMask;
-
- typedef [v1_enum] enum {
- REG_NONE = 0,
- REG_SZ = 1,
- REG_EXPAND_SZ = 2,
- REG_BINARY = 3,
- REG_DWORD = 4,
- REG_DWORD_BIG_ENDIAN = 5,
- REG_LINK = 6,
- REG_MULTI_SZ = 7,
- REG_RESOURCE_LIST = 8,
- REG_FULL_RESOURCE_DESCRIPTOR = 9,
- REG_RESOURCE_REQUIREMENTS_LIST = 10,
- REG_QWORD = 11
- } winreg_Type;
-
- typedef [public,noejs] struct {
- [value(strlen_m_term(name)*2)] uint16 name_len;
- [value(strlen_m_term(name)*2)] uint16 name_size;
- [string,charset(UTF16)] uint16 *name;
- } winreg_String;
-
- /******************/
- /* Function: 0x00 */
- WERROR winreg_OpenHKCR(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x01 */
- WERROR winreg_OpenHKCU(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x02 */
- WERROR winreg_OpenHKLM(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x03 */
- WERROR winreg_OpenHKPD(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x04 */
- WERROR winreg_OpenHKU(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x05 */
- WERROR winreg_CloseKey(
- [in,out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x06 */
-
- typedef struct {
- [size_is(size),length_is(len)] uint8 *data;
- uint32 size;
- uint32 len;
- } KeySecurityData;
-
- typedef struct {
- uint32 length;
- KeySecurityData sd;
- boolean8 inherit;
- } winreg_SecBuf;
-
- typedef [v1_enum] enum {
- REG_ACTION_NONE = 0, /* used by caller */
- REG_CREATED_NEW_KEY = 1,
- REG_OPENED_EXISTING_KEY = 2
- } winreg_CreateAction;
-
- WERROR winreg_CreateKey(
- [in,ref] policy_handle *handle,
- [in] winreg_String name,
- [in] winreg_String keyclass,
- [in] uint32 options,
- [in] winreg_AccessMask access_mask,
- [in,unique] winreg_SecBuf *secdesc,
- [out,ref] policy_handle *new_handle,
- [in,out,unique] winreg_CreateAction *action_taken
- );
-
- /******************/
- /* Function: 0x07 */
- WERROR winreg_DeleteKey(
- [in,ref] policy_handle *handle,
- [in] winreg_String key
- );
-
- /******************/
- /* Function: 0x08 */
- WERROR winreg_DeleteValue(
- [in,ref] policy_handle *handle,
- [in] winreg_String value
- );
-
- typedef struct {
- [value(strlen_m_term_null(name)*2)] uint16 length;
- /* size cannot be auto-set by value() as it is the
- amount of space the server is allowed to use for this
- string in the reply, not its current size */
- uint16 size;
- [size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
- } winreg_StringBuf;
-
- /******************/
- /* Function: 0x09 */
- WERROR winreg_EnumKey(
- [in,ref] policy_handle *handle,
- [in] uint32 enum_index,
- [in,out,ref] winreg_StringBuf *name,
- [in,out,unique] winreg_StringBuf *keyclass,
- [in,out,unique] NTTIME *last_changed_time
- );
-
- typedef struct {
- [value(strlen_m_term(name)*2)] uint16 length;
- /* size cannot be auto-set by value() as it is the
- amount of space the server is allowed to use for this
- string in the reply, not its current size */
- uint16 size;
- [size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
- } winreg_ValNameBuf;
-
- /******************/
- /* Function: 0x0a */
-
- WERROR winreg_EnumValue(
- [in,ref] policy_handle *handle,
- [in] uint32 enum_index,
- [in,out,ref] winreg_ValNameBuf *name,
- [in,out,unique] winreg_Type *type,
- [in,out,unique,size_is(*size),length_is(*length)] uint8 *value,
- [in,out,unique] uint32 *size,
- [in,out,unique] uint32 *length
- );
-
- /******************/
- /* Function: 0x0b */
- WERROR winreg_FlushKey(
- [in,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x0c */
- WERROR winreg_GetKeySecurity(
- [in,ref] policy_handle *handle,
- [in] security_secinfo sec_info,
- [in,out,ref] KeySecurityData *sd
- );
-
- /******************/
- /* Function: 0x0d */
- WERROR winreg_LoadKey(
- [in,ref] policy_handle *handle,
- [in] winreg_String *keyname,
- [in] winreg_String *filename
- );
-
- /******************/
- /* Function: 0x0e */
- WERROR winreg_NotifyChangeKeyValue(
- [in,ref] policy_handle *handle,
- [in] uint8 watch_subtree,
- [in] uint32 notify_filter,
- [in] uint32 unknown,
- [in] winreg_String string1,
- [in] winreg_String string2,
- [in] uint32 unknown2
- );
-
- /******************/
- /* Function: 0x0f */
- WERROR winreg_OpenKey(
- [in,ref] policy_handle *parent_handle,
- [in] winreg_String keyname,
- [in] uint32 unknown,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x10 */
- WERROR winreg_QueryInfoKey(
- [in,ref] policy_handle *handle,
- [in,out,ref] winreg_String *classname,
- [out,ref] uint32 *num_subkeys,
- [out,ref] uint32 *max_subkeylen,
- [out,ref] uint32 *max_classlen,
- [out,ref] uint32 *num_values,
- [out,ref] uint32 *max_valnamelen,
- [out,ref] uint32 *max_valbufsize,
- [out,ref] uint32 *secdescsize,
- [out,ref] NTTIME *last_changed_time
- );
-
- /******************/
- /* Function: 0x11 */
- WERROR winreg_QueryValue(
- [in,ref] policy_handle *handle,
- [in] winreg_String value_name,
- [in,out] winreg_Type *type,
- [in,out,size_is(*data_size),length_is(*value_length)] uint8 *data,
- [in,out] uint32 *data_size,
- [in,out] uint32 *value_length
- );
-
- /******************/
- /* Function: 0x12 */
- WERROR winreg_ReplaceKey(
- );
-
- /******************/
- /* Function: 0x13 */
- WERROR winreg_RestoreKey(
- [in,ref] policy_handle *handle,
- [in,ref] winreg_String *filename,
- [in] uint32 flags
- );
-
- /******************/
- /* Function: 0x14 */
-
- typedef struct {
- uint32 data_size;
- KeySecurityData sec_data;
- uint8 inherit;
- } KeySecurityAttribute;
-
- WERROR winreg_SaveKey(
- [in,ref] policy_handle *handle,
- [in,ref] winreg_String *filename,
- [in,unique] KeySecurityAttribute *sec_attrib
- );
-
- /******************/
- /* Function: 0x15 */
- WERROR winreg_SetKeySecurity(
- [in,ref] policy_handle *handle,
- [in] winreg_AccessMask access_mask,
- [in,ref] KeySecurityData *sd
- );
-
- /******************/
- /* Function: 0x16 */
- WERROR winreg_SetValue(
- [in,ref] policy_handle *handle,
- [in] winreg_String name,
- [in] winreg_Type type,
- [in,size_is(size),ref] uint8 *data,
- [in] uint32 size
- );
-
- /******************/
- /* Function: 0x17 */
- WERROR winreg_UnLoadKey(
- );
-
- /******************/
- /* Function: 0x18 */
- WERROR winreg_InitiateSystemShutdown(
- [in] uint16 *hostname,
- [in] initshutdown_String *message,
- [in] uint32 timeout,
- [in] uint8 force_apps,
- [in] uint8 reboot
- );
-
- /******************/
- /* Function: 0x19 */
- WERROR winreg_AbortSystemShutdown(
- [in] uint16 *server
- );
-
- /******************/
- /* Function: 0x1a */
- WERROR winreg_GetVersion(
- [in,ref] policy_handle *handle,
- [out,ref] uint32 *version
- );
-
- /******************/
- /* Function: 0x1b */
- WERROR winreg_OpenHKCC(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x1c */
- WERROR winreg_OpenHKDD(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- typedef struct {
- winreg_String *name;
- winreg_Type type;
- uint32 offset;
- uint32 length;
- } QueryMultipleValue;
-
- /******************/
- /* Function: 0x1d */
- WERROR winreg_QueryMultipleValues(
- [in,ref] policy_handle *key_handle,
- [in,out,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values,
- [in] uint32 num_values,
- [in,out,size_is(*buffer_size),length_is(*buffer_size)] uint8 *buffer,
- [in,out,ref] uint32 *buffer_size
- );
-
- /******************/
- /* Function: 0x1e */
- WERROR winreg_InitiateSystemShutdownEx(
- [in] uint16 *hostname,
- [in] initshutdown_String *message,
- [in] uint32 timeout,
- [in] uint8 force_apps,
- [in] uint8 reboot,
- [in] uint32 reason
- );
-
- /******************/
- /* Function: 0x1f */
- WERROR winreg_SaveKeyEx(
- );
-
- /******************/
- /* Function: 0x20 */
- WERROR winreg_OpenHKPT(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x21 */
- WERROR winreg_OpenHKPN(
- [in] uint16 *system_name,
- [in] winreg_AccessMask access_mask,
- [out,ref] policy_handle *handle
- );
-
- /******************/
- /* Function: 0x22 */
- WERROR winreg_QueryMultipleValues2(
- );
-}
diff --git a/source/librpc/idl/wkssvc.idl b/source/librpc/idl/wkssvc.idl
deleted file mode 100644
index 98688fac46a..00000000000
--- a/source/librpc/idl/wkssvc.idl
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- wkssvc interface definitions
-*/
-
-import "srvsvc.idl";
-
-[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
- version(1.0),
- pointer_default(unique),
- pointer_default_top(unique),
- helpstring("Workstation Service")
-] interface wkssvc
-{
-
-#define BOOL uint32
-
- /******************/
- /* Function: 0x00 */
-
- typedef struct {
- uint16 platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- [string,charset(UTF16)] uint16 *domain_name;
- uint32 version_major;
- uint32 version_minor;
- } wkssvc_NetWkstaInfo100;
-
- typedef struct {
- uint16 platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- [string,charset(UTF16)] uint16 *domain_name;
- uint32 version_major;
- uint32 version_minor;
- [string,charset(UTF16)] uint16 *lan_root;
- } wkssvc_NetWkstaInfo101;
-
- typedef struct {
- uint16 platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- [string,charset(UTF16)] uint16 *domain_name;
- uint32 version_major;
- uint32 version_minor;
- [string,charset(UTF16)] uint16 *lan_root;
- uint32 logged_on_users;
- } wkssvc_NetWkstaInfo102;
-
- typedef struct {
- uint32 char_wait;
- uint32 collection_time;
- uint32 maximum_collection_count;
- uint32 keep_connection;
- uint32 max_commands;
- uint32 session_timeout;
- uint32 size_char_buf;
- uint32 max_threads;
- uint32 lock_quota;
- uint32 lock_increment;
- uint32 lock_maximum;
- uint32 pipe_increment;
- uint32 pipe_maximum;
- uint32 cache_file_timeout;
- uint32 dormant_file_limit;
- uint32 read_ahead_throughput;
- uint32 num_mailslot_buffers;
- uint32 num_srv_announce_buffers;
- uint32 max_illegal_dgram_events;
- uint32 dgram_event_reset_freq;
- BOOL log_election_packets;
- BOOL use_opportunistic_locking;
- BOOL use_unlock_behind;
- BOOL use_close_behind;
- BOOL buf_named_pipes;
- BOOL use_lock_read_unlock;
- BOOL utilize_nt_caching;
- BOOL use_raw_read;
- BOOL use_raw_write;
- BOOL use_write_raw_data;
- BOOL use_encryption;
- BOOL buf_files_deny_write;
- BOOL buf_read_only_files;
- BOOL force_core_create_mode;
- BOOL use_512_byte_max_transfer;
- } wkssvc_NetWkstaInfo502;
-
- typedef struct {
- uint32 char_wait;
- } wkssvc_NetWkstaInfo1010;
-
- typedef struct {
- uint32 collection_time;
- } wkssvc_NetWkstaInfo1011;
-
- typedef struct {
- uint32 maximum_collection_count;
- } wkssvc_NetWkstaInfo1012;
-
- typedef struct {
- uint32 keep_connection;
- } wkssvc_NetWkstaInfo1013;
-
- typedef struct {
- uint32 session_timeout;
- } wkssvc_NetWkstaInfo1018;
-
- typedef struct {
- uint32 size_char_buf;
- } wkssvc_NetWkstaInfo1023;
-
- typedef struct {
- uint32 errorlog_sz;
- } wkssvc_NetWkstaInfo1027;
-
- typedef struct {
- uint32 max_threads;
- } wkssvc_NetWkstaInfo1033;
-
- typedef union {
- [case(100)] wkssvc_NetWkstaInfo100 *info100;
- [case(101)] wkssvc_NetWkstaInfo101 *info101;
- [case(102)] wkssvc_NetWkstaInfo102 *info102;
- [case(502)] wkssvc_NetWkstaInfo502 *info502;
- [case(1010)] wkssvc_NetWkstaInfo1010 *info1010;
- [case(1011)] wkssvc_NetWkstaInfo1011 *info1011;
- [case(1012)] wkssvc_NetWkstaInfo1012 *info1012;
- [case(1013)] wkssvc_NetWkstaInfo1013 *info1013;
- [case(1018)] wkssvc_NetWkstaInfo1018 *info1018;
- [case(1023)] wkssvc_NetWkstaInfo1023 *info1023;
- [case(1027)] wkssvc_NetWkstaInfo1027 *info1027;
- [case(1033)] wkssvc_NetWkstaInfo1033 *info1033;
- [default] ;
- } wkssvc_NetWkstaInfo;
-
- WERROR wkssvc_NetWkstaGetInfo(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] uint32 level,
- [out,switch_is(level),ref] wkssvc_NetWkstaInfo *info
- );
-
-
- /******************/
- /* Function: 0x01 */
- WERROR wkssvc_NetWkstaSetInfo(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] uint32 level,
- [in,switch_is(level),ref] wkssvc_NetWkstaInfo *info,
- [in,out,ref] uint32 *parm_error
- );
-
-
- /*****************************/
- /* Function 0x02 */
- typedef struct {
- [string,charset(UTF16)] uint16 *user;
- } USER_INFO_0;
-
- typedef struct {
- uint32 entries_read;
- [size_is(entries_read)] USER_INFO_0 *user0;
- } USER_INFO_0_CONTAINER;
-
- typedef struct {
- [string,charset(UTF16)] uint16 *user_name;
- [string,charset(UTF16)] uint16 *logon_domain;
- [string,charset(UTF16)] uint16 *other_domains;
- [string,charset(UTF16)] uint16 *logon_server;
- } USER_INFO_1;
-
- typedef struct {
- uint32 entries_read;
- [size_is(entries_read)] USER_INFO_1 *user1;
- } USER_INFO_1_CONTAINER;
-
- typedef [switch_type(uint32)] union {
- [case(0)] USER_INFO_0_CONTAINER *user0;
- [case(1)] USER_INFO_1_CONTAINER *user1;
- } WKS_USER_ENUM_UNION;
-
- WERROR wkssvc_NetWkstaEnumUsers(
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] uint32 level,
- [in] [out] [ref] WKS_USER_ENUM_UNION *users,
- [in] uint32 prefmaxlen,
- [out] uint32 *entriesread,
- [out] uint32 *totalentries,
- [in] [out] [ref] uint32 *resumehandle
- );
-
- /*****************************/
- /* Function 0x03 */
- WERROR WKSSVC_NETRWKSTAUSERGETINFO ();
-
- /*****************************/
- /* Function 0x04 */
- WERROR WKSSVC_NETRWKSTAUSERSETINFO ();
-
-
- /*****************************/
- /* Function 0x05 */
-
- typedef struct {
- uint32 quality_of_service;
- uint32 vc_count;
- [string,charset(UTF16)] uint16 *name;
- [string,charset(UTF16)] uint16 *address;
- uint32 wan_link;
- } wkssvc_NetWkstaTransportInfo0;
-
- typedef struct {
- uint32 count;
- [size_is(count)] wkssvc_NetWkstaTransportInfo0 *array;
- } wkssvc_NetWkstaTransportCtr0;
-
- typedef union {
- [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
- [default] ;
- } wkssvc_NetWkstaTransportCtr;
-
- WERROR wkssvc_NetWkstaTransportEnum (
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in,out,ref] uint32 *level,
- [in,out,switch_is(*level),ref] wkssvc_NetWkstaTransportCtr *ctr,
- [in] uint32 max_buffer,
- [out] uint32 *totalentries,
- [in,out,ref] uint32 *resume_handle
- );
-
-
- /*****************************/
- /* Function 0x06 */
- WERROR WKSSVC_NETRWKSTATRANSPORTADD ();
-
- /*****************************/
- /* Function 0x07 */
- WERROR WKSSVC_NETRWKSTATRANSPORTDEL ();
-
- /*****************************/
- /* Function 0x08 */
- WERROR WKSSVC_NETRUSEADD ();
-
- /*****************************/
- /* Function 0x09 */
- WERROR WKSSVC_NETRUSEGETINFO ();
-
- /*****************************/
- /* Function 0x0a */
- WERROR WKSSVC_NETRUSEDEL ();
-
- /*****************************/
- /* Function 0x0b */
- WERROR WKSSVC_NETRUSEENUM ();
-
- /*****************************/
- /* Function 0x0c */
- WERROR WKSSVC_NETRMESSAGEBUFFERSEND ();
-
- /*****************************/
- /* Function 0x0d */
- WERROR WKSSVC_NETRWORKSTATIONSTATISTICSGET ();
-
- /*****************************/
- /* Function 0x0e */
- WERROR WKSSVC_NETRLOGONDOMAINNAMEADD ();
-
- /*****************************/
- /* Function 0x0f */
- WERROR WKSSVC_NETRLOGONDOMAINNAMEDEL ();
-
- /*****************************/
- /* Function 0x10 */
- WERROR WKSSVC_NETRJOINDOMAIN ();
-
- /*****************************/
- /* Function 0x11 */
- WERROR WKSSVC_NETRUNJOINDOMAIN ();
-
- /*****************************/
- /* Function 0x12 */
- WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN ();
-
- /*****************************/
- /* Function 0x13 */
- WERROR WKSSVC_NETRVALIDATENAME ();
-
- /*****************************/
- /* Function 0x14 */
- WERROR WKSSVC_NETRGETJOININFORMATION ();
-
- /*****************************/
- /* Function 0x15 */
- WERROR WKSSVC_NETRGETJOINABLEOUS ();
-
- typedef struct {
- uint8 data[524];
- } wkssvc_PasswordBuffer;
-
- typedef [bitmap32bit] bitmap {
- /* TRUE: defer setting the SPN and dNSHostName until a rename operation */
- WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100,
-
- /* TRUE: set the machine password to the provided one after the join completes */
- WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080,
-
- /* TRUE: perform an unsecured join */
- WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040,
-
- /* TRUE: allow the join to complete even if the account already exists */
- WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
-
- /* TRUE: this join is part of a w9x upgrade */
- WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
-
- /* TRUE: delete the account when the domain is left */
- WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004,
-
- /* TRUE: create the account in the domain */
- WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002,
-
- /* TRUE: join domain FALSE: join workgroup */
- WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
-
- } wkssvc_joinflags;
-
- /*****************************/
- /* Function 0x16 */
- WERROR wkssvc_NetrJoinDomain2 (
- [in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16),ref] uint16 *domain_name,
- [in] [string,charset(UTF16)] uint16 *account_name,
- [in] [string,charset(UTF16)] uint16 *admin_account,
- [in] wkssvc_PasswordBuffer *encrypted_password,
- [in] wkssvc_joinflags join_flags
- );
-
- /*****************************/
- /* Function 0x17 */
- WERROR wkssvc_NetrUnjoinDomain2 (
- [in] [unique] [string,charset(UTF16)] uint16 *server_name,
- [in] [unique] [string,charset(UTF16)] uint16 *account,
- [in] [unique] wkssvc_PasswordBuffer *encrypted_password,
- [in] wkssvc_joinflags unjoin_flags
- );
-
- typedef [bitmap32bit] bitmap {
- /* TRUE: create the account in the domain */
- WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
- } wkssvc_renameflags;
-
- /*****************************/
- /* Function 0x18 */
- WERROR wkssvc_NetrRenameMachineInDomain2(
- [in] [unique] [string,charset(UTF16)] uint16 *server_name,
- [in] [unique] [string,charset(UTF16)] uint16 *NewMachineName,
- [in] [unique] [string,charset(UTF16)] uint16 *Account,
- [in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
- [in] wkssvc_renameflags RenameOptions
- );
-
- /*****************************/
- /* Function 0x19 */
- WERROR WKSSVC_NETRVALIDATENAME2 ();
-
- /*****************************/
- /* Function 0x1a */
- WERROR WKSSVC_NETRGETJOINABLEOUS2 ();
-
- /*****************************/
- /* Function 0x1b */
- WERROR wkssvc_NetrAddAlternateComputerName(
- [in] [unique] [string,charset(UTF16)] uint16 *server_name,
- [in] [unique] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
- [in] [unique] [string,charset(UTF16)] uint16 *Account,
- [in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
- [in] uint32 Reserved
- );
-
- /*****************************/
- /* Function 0x1c */
- WERROR wkssvc_NetrRemoveAlternateComputerName(
- [in] [unique] [string,charset(UTF16)] uint16 *server_name,
- [in] [unique] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
- [in] [unique] [string,charset(UTF16)] uint16 *Account,
- [in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
- [in] uint32 Reserved
- );
-
- /*****************************/
- /* Function 0x1d */
- WERROR WKSSVC_NETRSETPRIMARYCOMPUTERNAME ();
-
- /*****************************/
- /* Function 0x1e */
- WERROR WKSSVC_NETRENUMERATECOMPUTERNAMES ();
-}
diff --git a/source/librpc/ndr/libndr.h b/source/librpc/ndr/libndr.h
index 23e9e06bdd9..faa7c56455d 100644
--- a/source/librpc/ndr/libndr.h
+++ b/source/librpc/ndr/libndr.h
@@ -93,7 +93,6 @@ struct ndr_push {
struct ndr_token_list *switch_list;
struct ndr_token_list *relative_list;
struct ndr_token_list *nbt_string_list;
- struct ndr_token_list *full_ptr_list;
/* this is used to ensure we generate unique reference IDs */
uint32_t ptr_count;
diff --git a/source/librpc/ndr/ndr.c b/source/librpc/ndr/ndr.c
index 6d174d38c3f..4f0599e5c03 100644
--- a/source/librpc/ndr/ndr.c
+++ b/source/librpc/ndr/ndr.c
@@ -169,7 +169,7 @@ NTSTATUS ndr_push_expand(struct ndr_push *ndr, uint32_t extra_size)
if (size < ndr->offset) {
/* extra_size overflowed the offset */
return ndr_push_error(ndr, NDR_ERR_BUFSIZE, "Overflow in push_expand to %u",
- size);
+ size);
}
if (ndr->alloc_size > size) {
@@ -709,8 +709,8 @@ NTSTATUS ndr_pull_struct_blob_all(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, vo
}
status = fn(ndr, NDR_SCALARS|NDR_BUFFERS, p);
if (!NT_STATUS_IS_OK(status)) return status;
- if (ndr->offset < ndr->data_size) {
- return NT_STATUS_PORT_MESSAGE_TOO_LONG;
+ if (ndr->offset != ndr->data_size) {
+ return NT_STATUS_BUFFER_TOO_SMALL;
}
return status;
}
@@ -755,8 +755,6 @@ NTSTATUS ndr_push_struct_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, const void *
}
*blob = ndr_push_blob(ndr);
- talloc_steal(mem_ctx, blob->data);
- talloc_free(ndr);
return NT_STATUS_OK;
}
@@ -780,8 +778,6 @@ NTSTATUS ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p,
}
*blob = ndr_push_blob(ndr);
- talloc_steal(mem_ctx, blob->data);
- talloc_free(ndr);
return NT_STATUS_OK;
}
diff --git a/source/librpc/ndr/ndr_basic.c b/source/librpc/ndr/ndr_basic.c
index c7c6281fea0..5e75fa1092e 100644
--- a/source/librpc/ndr/ndr_basic.c
+++ b/source/librpc/ndr/ndr_basic.c
@@ -479,17 +479,12 @@ NTSTATUS ndr_push_unique_ptr(struct ndr_push *ndr, const void *p)
/*
push a 'simple' full non-zero value if a pointer is non-NULL, otherwise 0
*/
-NTSTATUS ndr_push_full_ptr(struct ndr_push *ndr, const void *p)
+NTSTATUS ndr_push_sptr_ptr(struct ndr_push *ndr, const void *p)
{
uint32_t ptr = 0;
if (p) {
- /* Check if the pointer already exists and has an id */
- ptr = ndr_token_peek(&ndr->full_ptr_list, p);
- if (ptr == 0) {
- ndr->ptr_count++;
- ptr = ndr->ptr_count;
- ndr_token_store(ndr, &ndr->full_ptr_list, p, ptr);
- }
+ ndr->ptr_count++;
+ ptr = ndr->ptr_count;
}
return ndr_push_uint32(ndr, NDR_SCALARS, ptr);
}
@@ -577,43 +572,6 @@ NTSTATUS ndr_pull_time_t(struct ndr_pull *ndr, int ndr_flags, time_t *t)
return NT_STATUS_OK;
}
-/*
- pull a ipv4address
-*/
-NTSTATUS ndr_pull_ipv4address(struct ndr_pull *ndr, int ndr_flags, const char **address)
-{
- struct in_addr in;
- NDR_CHECK(ndr_pull_uint32(ndr, ndr_flags, &in.s_addr));
- in.s_addr = htonl(in.s_addr);
- *address = talloc_strdup(ndr->current_mem_ctx, inet_ntoa(in));
- NT_STATUS_HAVE_NO_MEMORY(*address);
- return NT_STATUS_OK;
-}
-
-/*
- push a ipv4address
-*/
-NTSTATUS ndr_push_ipv4address(struct ndr_push *ndr, int ndr_flags, const char *address)
-{
- uint32_t addr;
- if (!is_ipaddress(address)) {
- return ndr_push_error(ndr, NDR_ERR_IPV4ADDRESS,
- "Invalid IPv4 address: '%s'",
- address);
- }
- addr = inet_addr(address);
- NDR_CHECK(ndr_push_uint32(ndr, ndr_flags, htonl(addr)));
- return NT_STATUS_OK;
-}
-
-/*
- print a ipv4address
-*/
-void ndr_print_ipv4address(struct ndr_print *ndr, const char *name,
- const char *address)
-{
- ndr->print(ndr, "%-25s: %s", name, address);
-}
void ndr_print_struct(struct ndr_print *ndr, const char *name, const char *type)
{
@@ -783,7 +741,7 @@ void ndr_print_DATA_BLOB(struct ndr_print *ndr, const char *name, DATA_BLOB r)
{
ndr->print(ndr, "%-25s: DATA_BLOB length=%u", name, r.length);
if (r.length) {
- dump_data(10, r.data, r.length);
+ dump_data(10, (const char *)r.data, r.length);
}
}
@@ -841,6 +799,5 @@ NTSTATUS ndr_pull_DATA_BLOB(struct ndr_pull *ndr, int ndr_flags, DATA_BLOB *blob
uint32_t ndr_size_DATA_BLOB(int ret, const DATA_BLOB *data, int flags)
{
- if (!data) return ret;
return ret + data->length;
}
diff --git a/source/librpc/ndr/ndr_misc.c b/source/librpc/ndr/ndr_misc.c
index 17bba77a01c..54face8d7a0 100644
--- a/source/librpc/ndr/ndr_misc.c
+++ b/source/librpc/ndr/ndr_misc.c
@@ -243,11 +243,7 @@ NTSTATUS ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct se
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS,
- (uint32_t)r->pid));
-#ifdef CLUSTER_SUPPORT
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS,
- (uint32_t)r->vnn));
-#endif
+ (uint32_t)r->id.pid));
}
if (ndr_flags & NDR_BUFFERS) {
}
@@ -260,10 +256,7 @@ NTSTATUS ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_i
uint32_t pid;
NDR_CHECK(ndr_pull_align(ndr, 4));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &pid));
-#ifdef CLUSTER_SUPPORT
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->vnn));
-#endif
- r->pid = (pid_t)pid;
+ r->id.pid = (pid_t)pid;
}
if (ndr_flags & NDR_BUFFERS) {
}
@@ -274,9 +267,6 @@ void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct s
{
ndr_print_struct(ndr, name, "server_id");
ndr->depth++;
- ndr_print_uint32(ndr, "id", (uint32_t)r->pid);
-#ifdef CLUSTER_SUPPORT
- ndr_print_uint32(ndr, "vnn", (uint32_t)r->vnn);
-#endif
+ ndr_print_uint32(ndr, "id", (uint32_t)r->id.pid);
ndr->depth--;
}
diff --git a/source/librpc/tables.pl b/source/librpc/tables.pl
deleted file mode 100755
index 9ad0675cb23..00000000000
--- a/source/librpc/tables.pl
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/perl -w
-
-###################################################
-# package to produce a table of all idl parsers
-# Copyright tridge@samba.org 2003
-# Copyright jelmer@samba.org 2005
-# released under the GNU GPL
-
-use strict;
-
-use Getopt::Long;
-use File::Basename;
-
-my $opt_output = 'librpc/gen_ndr/tables.c';
-my $opt_help = 0;
-
-
-#########################################
-# display help text
-sub ShowHelp()
-{
- print "
- perl DCE/RPC interface table generator
- Copyright (C) tridge\@samba.org
-
- Usage: tables.pl [options] <idlfile>
-
- \n";
- exit(0);
-}
-
-# main program
-GetOptions (
- 'help|h|?' => \$opt_help,
- 'output=s' => \$opt_output,
- );
-
-if ($opt_help) {
- ShowHelp();
- exit(0);
-}
-
-my $init_fns = "";
-
-###################################
-# extract table entries from 1 file
-sub process_file($)
-{
- my $filename = shift;
- open(FILE, $filename) || die "unable to open $filename\n";
- my $found = 0;
-
- while (my $line = <FILE>) {
- if ($line =~ /extern const struct dcerpc_interface_table (\w+);/) {
- $found = 1;
- $init_fns.="\tstatus = librpc_register_interface(&$1);\n";
- $init_fns.="\tif (NT_STATUS_IS_ERR(status)) return status;\n\n";
- }
- }
-
- if ($found) {
- print "#include \"$filename\"\n";
- }
-
- close(FILE);
-}
-
-print <<EOF;
-
-/* Automatically generated by tables.pl. DO NOT EDIT */
-
-#include "includes.h"
-#include "librpc/rpc/dcerpc.h"
-#include "librpc/rpc/dcerpc_table.h"
-EOF
-
-process_file($_) foreach (@ARGV);
-
-print <<EOF;
-
-NTSTATUS dcerpc_register_builtin_interfaces(void)
-{
- NTSTATUS status;
-
-$init_fns
-
- return NT_STATUS_OK;
-}
-EOF
diff --git a/source/librpc/tools/ndrdump.c b/source/librpc/tools/ndrdump.c
deleted file mode 100644
index 81f6e958e5d..00000000000
--- a/source/librpc/tools/ndrdump.c
+++ /dev/null
@@ -1,448 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SMB torture tester
- Copyright (C) Andrew Tridgell 2003
- Copyright (C) Jelmer Vernooij 2006
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#if (_SAMBA_BUILD_ >= 4)
-#include "lib/cmdline/popt_common.h"
-#include "system/filesys.h"
-#include "system/locale.h"
-#include "librpc/rpc/dcerpc.h"
-#include "librpc/rpc/dcerpc_table.h"
-#endif
-
-static const struct dcerpc_interface_call *find_function(
- const struct dcerpc_interface_table *p,
- const char *function)
-{
- int i;
- if (isdigit(function[0])) {
- i = strtol(function, NULL, 0);
- return &p->calls[i];
- }
- for (i=0;i<p->num_calls;i++) {
- if (strcmp(p->calls[i].name, function) == 0) {
- break;
- }
- }
- if (i == p->num_calls) {
- printf("Function '%s' not found\n", function);
- exit(1);
- }
- return &p->calls[i];
-}
-
-#if (_SAMBA_BUILD_ >= 4)
-
-static void show_pipes(void)
-{
- const struct dcerpc_interface_list *l;
- printf("\nYou must specify a pipe\n");
- printf("known pipes are:\n");
- for (l=librpc_dcerpc_pipes();l;l=l->next) {
- if(l->table->helpstring) {
- printf("\t%s - %s\n", l->table->name, l->table->helpstring);
- } else {
- printf("\t%s\n", l->table->name);
- }
- }
- exit(1);
-}
-
-#endif
-
-static void show_functions(const struct dcerpc_interface_table *p)
-{
- int i;
- printf("\nYou must specify a function\n");
- printf("known functions on '%s' are:\n", p->name);
- for (i=0;i<p->num_calls;i++) {
- printf("\t0x%02x (%2d) %s\n", i, i, p->calls[i].name);
- }
- exit(1);
-}
-
-static char *stdin_load(TALLOC_CTX *mem_ctx, size_t *size)
-{
- int num_read, total_len = 0;
- char buf[255];
- char *result = NULL;
-
- while((num_read = read(STDIN_FILENO, buf, 255)) > 0) {
-
- if (result) {
- result = (char *) talloc_realloc(
- mem_ctx, result, char *, total_len + num_read);
- } else {
- result = (char *) talloc_size(mem_ctx, num_read);
- }
-
- memcpy(result + total_len, buf, num_read);
-
- total_len += num_read;
- }
-
- if (size)
- *size = total_len;
-
- return result;
-}
-
-static const struct dcerpc_interface_table *load_iface_from_plugin(const char *plugin, const char *pipe_name)
-{
- const struct dcerpc_interface_table *p;
- void *handle;
- char *symbol;
-
- handle = dlopen(plugin, RTLD_NOW);
- if (handle == NULL) {
- printf("%s: Unable to open: %s\n", plugin, dlerror());
- return NULL;
- }
-
- symbol = talloc_asprintf(NULL, "dcerpc_table_%s", pipe_name);
- p = (const struct dcerpc_interface_table *)dlsym(handle, symbol);
-
- if (!p) {
- printf("%s: Unable to find DCE/RPC interface table for '%s': %s\n", plugin, pipe_name, dlerror());
- talloc_free(symbol);
- return NULL;
- }
-
- talloc_free(symbol);
-
- return p;
-}
-
- int main(int argc, const char *argv[])
-{
- const struct dcerpc_interface_table *p = NULL;
- const struct dcerpc_interface_call *f;
- const char *pipe_name, *function, *inout, *filename;
- uint8_t *data;
- size_t size;
- DATA_BLOB blob;
- struct ndr_pull *ndr_pull;
- struct ndr_print *ndr_print;
- TALLOC_CTX *mem_ctx;
- int flags;
- poptContext pc;
- NTSTATUS status;
- void *st;
- void *v_st;
- const char *ctx_filename = NULL;
- const char *plugin = NULL;
- bool validate = false;
- bool dumpdata = false;
- int opt;
- enum {OPT_CONTEXT_FILE=1000, OPT_VALIDATE, OPT_DUMP_DATA, OPT_LOAD_DSO};
- struct poptOption long_options[] = {
- POPT_AUTOHELP
- {"context-file", 'c', POPT_ARG_STRING, NULL, OPT_CONTEXT_FILE, "In-filename to parse first", "CTX-FILE" },
- {"validate", 0, POPT_ARG_NONE, NULL, OPT_VALIDATE, "try to validate the data", NULL },
- {"dump-data", 0, POPT_ARG_NONE, NULL, OPT_DUMP_DATA, "dump the hex data", NULL },
- {"load-dso", 'l', POPT_ARG_STRING, NULL, OPT_LOAD_DSO, "load from shared object file", NULL },
- POPT_COMMON_SAMBA
- POPT_COMMON_VERSION
- { NULL }
- };
-
-#if (_SAMBA_BUILD_ >= 4)
- dcerpc_table_init();
-#else
- /* Initialise samba stuff */
- load_case_tables();
-
- setlinebuf(stdout);
-
- dbf = x_stderr;
-
- setup_logging(argv[0],True);
-#endif
-
- pc = poptGetContext("ndrdump", argc, argv, long_options, 0);
-
- poptSetOtherOptionHelp(
- pc, "<pipe|uuid> <function> <inout> [<filename>]");
-
- while ((opt = poptGetNextOpt(pc)) != -1) {
- switch (opt) {
- case OPT_CONTEXT_FILE:
- ctx_filename = poptGetOptArg(pc);
- break;
- case OPT_VALIDATE:
- validate = true;
- break;
- case OPT_DUMP_DATA:
- dumpdata = true;
- break;
- case OPT_LOAD_DSO:
- plugin = poptGetOptArg(pc);
- break;
- }
- }
-
- pipe_name = poptGetArg(pc);
-
- if (!pipe_name) {
- poptPrintUsage(pc, stderr, 0);
-#if (_SAMBA_BUILD_ >= 4)
- show_pipes();
-#endif
- exit(1);
- }
-
- if (plugin != NULL) {
- p = load_iface_from_plugin(plugin, pipe_name);
- }
-#if (_SAMBA_BUILD_ <= 3)
- else {
- fprintf(stderr, "Only loading from DSO's supported in Samba 3\n");
- exit(1);
- }
-#else
- if (!p) {
- p = idl_iface_by_name(pipe_name);
- }
-
- if (!p) {
- struct GUID uuid;
-
- status = GUID_from_string(pipe_name, &uuid);
-
- if (NT_STATUS_IS_OK(status)) {
- p = idl_iface_by_uuid(&uuid);
- }
- }
-#endif
-
- if (!p) {
- printf("Unknown pipe or UUID '%s'\n", pipe_name);
- exit(1);
- }
-
- function = poptGetArg(pc);
- inout = poptGetArg(pc);
- filename = poptGetArg(pc);
-
- if (!function || !inout) {
- poptPrintUsage(pc, stderr, 0);
- show_functions(p);
- exit(1);
- }
-
- if (strcmp(inout, "in") == 0 ||
- strcmp(inout, "request") == 0) {
- flags = NDR_IN;
- } else if (strcmp(inout, "out") == 0 ||
- strcmp(inout, "response") == 0) {
- flags = NDR_OUT;
- } else {
- printf("Bad inout value '%s'\n", inout);
- exit(1);
- }
-
- f = find_function(p, function);
-
- mem_ctx = talloc_init("ndrdump");
-
- st = talloc_zero_size(mem_ctx, f->struct_size);
- if (!st) {
- printf("Unable to allocate %d bytes\n", (int)f->struct_size);
- exit(1);
- }
-
- v_st = talloc_zero_size(mem_ctx, f->struct_size);
- if (!v_st) {
- printf("Unable to allocate %d bytes\n", (int)f->struct_size);
- exit(1);
- }
-
- if (ctx_filename) {
- if (flags == NDR_IN) {
- printf("Context file can only be used for \"out\" packages\n");
- exit(1);
- }
-
-#if (_SAMBA_BUILD_ >= 4)
- data = (uint8_t *)file_load(ctx_filename, &size, mem_ctx);
-#else
- data = (uint8_t *)file_load(ctx_filename, &size, 0);
-#endif
- if (!data) {
- perror(ctx_filename);
- exit(1);
- }
-
- blob.data = data;
- blob.length = size;
-
- ndr_pull = ndr_pull_init_blob(&blob, mem_ctx);
- ndr_pull->flags |= LIBNDR_FLAG_REF_ALLOC;
-
- status = f->ndr_pull(ndr_pull, NDR_IN, st);
-
- if (ndr_pull->offset != ndr_pull->data_size) {
- printf("WARNING! %d unread bytes while parsing context file\n", ndr_pull->data_size - ndr_pull->offset);
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- printf("pull for context file returned %s\n", nt_errstr(status));
- exit(1);
- }
- memcpy(v_st, st, f->struct_size);
- }
-
- if (filename)
-#if (_SAMBA_BUILD_ >= 4)
- data = (uint8_t *)file_load(filename, &size, mem_ctx);
-#else
- data = (uint8_t *)file_load(filename, &size, 0);
-#endif
- else
- data = (uint8_t *)stdin_load(mem_ctx, &size);
-
- if (!data) {
- if (filename)
- perror(filename);
- else
- perror("stdin");
- exit(1);
- }
-
- blob.data = data;
- blob.length = size;
-
- ndr_pull = ndr_pull_init_blob(&blob, mem_ctx);
- ndr_pull->flags |= LIBNDR_FLAG_REF_ALLOC;
-
- status = f->ndr_pull(ndr_pull, flags, st);
-
- printf("pull returned %s\n", nt_errstr(status));
-
- if (ndr_pull->offset != ndr_pull->data_size) {
- printf("WARNING! %d unread bytes\n", ndr_pull->data_size - ndr_pull->offset);
- dump_data(0, ndr_pull->data+ndr_pull->offset, ndr_pull->data_size - ndr_pull->offset);
- }
-
- if (dumpdata) {
- printf("%d bytes consumed\n", ndr_pull->offset);
- dump_data(0, blob.data, blob.length);
- }
-
- ndr_print = talloc_zero(mem_ctx, struct ndr_print);
- ndr_print->print = ndr_print_debug_helper;
- ndr_print->depth = 1;
- f->ndr_print(ndr_print, function, flags, st);
-
- if (!NT_STATUS_IS_OK(status)) {
- printf("dump FAILED\n");
- exit(1);
- }
-
- if (validate) {
- DATA_BLOB v_blob;
- struct ndr_push *ndr_v_push;
- struct ndr_pull *ndr_v_pull;
- struct ndr_print *ndr_v_print;
- uint32_t i;
- uint8_t byte_a, byte_b;
- bool differ;
-
- ndr_v_push = ndr_push_init_ctx(mem_ctx);
-
- status = f->ndr_push(ndr_v_push, flags, st);
- if (!NT_STATUS_IS_OK(status)) {
- printf("validate push FAILED\n");
- exit(1);
- }
-
- v_blob = ndr_push_blob(ndr_v_push);
-
- if (dumpdata) {
- printf("%ld bytes generated (validate)\n", (long)v_blob.length);
- dump_data(0, v_blob.data, v_blob.length);
- }
-
- ndr_v_pull = ndr_pull_init_blob(&v_blob, mem_ctx);
- ndr_v_pull->flags |= LIBNDR_FLAG_REF_ALLOC;
-
- status = f->ndr_pull(ndr_v_pull, flags, v_st);
- if (!NT_STATUS_IS_OK(status)) {
- printf("validate pull FAILED\n");
- exit(1);
- }
-
- printf("pull returned %s\n", nt_errstr(status));
-
- if (ndr_v_pull->offset != ndr_v_pull->data_size) {
- printf("WARNING! %d unread bytes in validation\n", ndr_v_pull->data_size - ndr_v_pull->offset);
- dump_data(0, ndr_v_pull->data+ndr_v_pull->offset, ndr_v_pull->data_size - ndr_v_pull->offset);
- }
-
- ndr_v_print = talloc_zero(mem_ctx, struct ndr_print);
- ndr_v_print->print = ndr_print_debug_helper;
- ndr_v_print->depth = 1;
- f->ndr_print(ndr_v_print, function, flags, v_st);
-
- if (blob.length != v_blob.length) {
- printf("WARNING! orig bytes:%u validated pushed "
- "bytes:%u\n", (unsigned int)blob.length,
- (unsigned int)v_blob.length);
- }
-
- if (ndr_pull->offset != ndr_v_pull->offset) {
- printf("WARNING! orig pulled bytes:%u validated pulled bytes:%u\n", ndr_pull->offset, ndr_v_pull->offset);
- }
-
- differ = false;
- byte_a = 0x00;
- byte_b = 0x00;
- for (i=0; i < blob.length; i++) {
- byte_a = blob.data[i];
-
- if (i == v_blob.length) {
- byte_b = 0x00;
- differ = true;
- break;
- }
-
- byte_b = v_blob.data[i];
-
- if (byte_a != byte_b) {
- differ = true;
- break;
- }
- }
- if (differ) {
- printf("WARNING! orig and validated differ at byte 0x%02X (%u)\n", i, i);
- printf("WARNING! orig byte[0x%02X] = 0x%02X validated byte[0x%02X] = 0x%02X\n",
- i, byte_a, i, byte_b);
- }
- }
-
- printf("dump OK\n");
-
- talloc_free(mem_ctx);
-
- poptFreeContext(pc);
-
- return 0;
-}
diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c
index 78386ce503e..d458ce2757c 100644
--- a/source/libsmb/cliconnect.c
+++ b/source/libsmb/cliconnect.c
@@ -61,8 +61,8 @@ static NTSTATUS cli_session_setup_lanman2(struct cli_state *cli,
const char *pass, size_t passlen,
const char *workgroup)
{
- DATA_BLOB session_key = data_blob_null;
- DATA_BLOB lm_response = data_blob_null;
+ DATA_BLOB session_key = data_blob(NULL, 0);
+ DATA_BLOB lm_response = data_blob(NULL, 0);
fstring pword;
char *p;
@@ -99,7 +99,7 @@ static NTSTATUS cli_session_setup_lanman2(struct cli_state *cli,
/* send a session setup command */
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,10, 0, True);
+ set_message(cli->outbuf,10, 0, True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
cli_setup_packet(cli);
@@ -169,7 +169,7 @@ static NTSTATUS cli_session_setup_guest(struct cli_state *cli)
uint32 capabilities = cli_session_setup_capabilities(cli);
memset(cli->outbuf, '\0', smb_size);
- set_message(NULL,cli->outbuf,13,0,True);
+ set_message(cli->outbuf,13,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
cli_setup_packet(cli);
@@ -229,7 +229,7 @@ static NTSTATUS cli_session_setup_plaintext(struct cli_state *cli,
fstr_sprintf( lanman, "Samba %s", SAMBA_VERSION_STRING);
memset(cli->outbuf, '\0', smb_size);
- set_message(NULL,cli->outbuf,13,0,True);
+ set_message(cli->outbuf,13,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
cli_setup_packet(cli);
@@ -299,9 +299,9 @@ static NTSTATUS cli_session_setup_nt1(struct cli_state *cli, const char *user,
const char *workgroup)
{
uint32 capabilities = cli_session_setup_capabilities(cli);
- DATA_BLOB lm_response = data_blob_null;
- DATA_BLOB nt_response = data_blob_null;
- DATA_BLOB session_key = data_blob_null;
+ DATA_BLOB lm_response = data_blob(NULL, 0);
+ DATA_BLOB nt_response = data_blob(NULL, 0);
+ DATA_BLOB session_key = data_blob(NULL, 0);
NTSTATUS result;
char *p;
@@ -334,7 +334,7 @@ static NTSTATUS cli_session_setup_nt1(struct cli_state *cli, const char *user,
E_md4hash(pass, nt_hash);
#ifdef LANMAN_ONLY
- nt_response = data_blob_null;
+ nt_response = data_blob(NULL, 0);
#else
nt_response = data_blob(NULL, 24);
SMBNTencrypt(pass,cli->secblob.data,nt_response.data);
@@ -378,7 +378,7 @@ static NTSTATUS cli_session_setup_nt1(struct cli_state *cli, const char *user,
/* send a session setup command */
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,13,0,True);
+ set_message(cli->outbuf,13,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
cli_setup_packet(cli);
@@ -458,7 +458,7 @@ static BOOL cli_session_setup_blob_send(struct cli_state *cli, DATA_BLOB blob)
/* send a session setup command */
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,12,0,True);
+ set_message(cli->outbuf,12,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
cli_setup_packet(cli);
@@ -485,7 +485,7 @@ static BOOL cli_session_setup_blob_send(struct cli_state *cli, DATA_BLOB blob)
static DATA_BLOB cli_session_setup_blob_receive(struct cli_state *cli)
{
- DATA_BLOB blob2 = data_blob_null;
+ DATA_BLOB blob2 = data_blob(NULL, 0);
char *p;
size_t len;
@@ -534,9 +534,9 @@ static BOOL cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob, DATA_B
{
int32 remaining = blob.length;
int32 cur = 0;
- DATA_BLOB send_blob = data_blob_null;
+ DATA_BLOB send_blob = data_blob(NULL, 0);
int32 max_blob_size = 0;
- DATA_BLOB receive_blob = data_blob_null;
+ DATA_BLOB receive_blob = data_blob(NULL, 0);
if (cli->max_xmit < BASE_SESSSETUP_BLOB_PACKET_SIZE + 1) {
DEBUG(0,("cli_session_setup_blob: cli->max_xmit too small "
@@ -554,7 +554,7 @@ static BOOL cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob, DATA_B
send_blob.length = max_blob_size;
remaining -= max_blob_size;
} else {
- DATA_BLOB null_blob = data_blob_null;
+ DATA_BLOB null_blob = data_blob(NULL, 0);
send_blob.length = remaining;
remaining = 0;
@@ -584,6 +584,7 @@ static BOOL cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob, DATA_B
NT_STATUS_MORE_PROCESSING_REQUIRED)) {
DEBUG(0, ("cli_session_setup_blob: recieve failed (%s)\n",
nt_errstr(cli_get_nt_error(cli)) ));
+ cli->vuid = 0;
return False;
}
}
@@ -656,9 +657,9 @@ static NTSTATUS cli_session_setup_ntlmssp(struct cli_state *cli, const char *use
NTSTATUS nt_status;
int turn = 1;
DATA_BLOB msg1;
- DATA_BLOB blob = data_blob_null;
- DATA_BLOB blob_in = data_blob_null;
- DATA_BLOB blob_out = data_blob_null;
+ DATA_BLOB blob = data_blob(NULL, 0);
+ DATA_BLOB blob_in = data_blob(NULL, 0);
+ DATA_BLOB blob_out = data_blob(NULL, 0);
cli_temp_set_signing(cli);
@@ -715,7 +716,7 @@ static NTSTATUS cli_session_setup_ntlmssp(struct cli_state *cli, const char *use
}
} else if ((turn == 1) &&
NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- DATA_BLOB tmp_blob = data_blob_null;
+ DATA_BLOB tmp_blob = data_blob(NULL, 0);
/* the server might give us back two challenges */
if (!spnego_parse_challenge(blob, &blob_in,
&tmp_blob)) {
@@ -724,7 +725,7 @@ static NTSTATUS cli_session_setup_ntlmssp(struct cli_state *cli, const char *use
}
data_blob_free(&tmp_blob);
} else {
- if (!spnego_parse_auth_response(blob, nt_status, OID_NTLMSSP,
+ if (!spnego_parse_auth_response(blob, nt_status,
&blob_in)) {
DEBUG(3,("Failed to parse auth response\n"));
if (NT_STATUS_IS_OK(nt_status)
@@ -743,7 +744,7 @@ static NTSTATUS cli_session_setup_ntlmssp(struct cli_state *cli, const char *use
DATA_BLOB key = data_blob(ntlmssp_state->session_key.data,
ntlmssp_state->session_key.length);
- DATA_BLOB null_blob = data_blob_null;
+ DATA_BLOB null_blob = data_blob(NULL, 0);
BOOL res;
fstrcpy(cli->server_domain, ntlmssp_state->server_domain);
@@ -765,11 +766,14 @@ static NTSTATUS cli_session_setup_ntlmssp(struct cli_state *cli, const char *use
}
}
- /* we have a reference counter on ntlmssp_state, if we are signing
+ /* we have a reference conter on ntlmssp_state, if we are signing
then the state will be kept by the signing engine */
ntlmssp_end(&ntlmssp_state);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ cli->vuid = 0;
+ }
return nt_status;
}
@@ -975,6 +979,7 @@ NTSTATUS cli_session_setup(struct cli_state *cli,
}
return NT_STATUS_OK;
+
}
/****************************************************************************
@@ -984,7 +989,7 @@ NTSTATUS cli_session_setup(struct cli_state *cli,
BOOL cli_ulogoff(struct cli_state *cli)
{
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,2,0,True);
+ set_message(cli->outbuf,2,0,True);
SCVAL(cli->outbuf,smb_com,SMBulogoffX);
cli_setup_packet(cli);
SSVAL(cli->outbuf,smb_vwv0,0xFF);
@@ -1061,7 +1066,7 @@ BOOL cli_send_tconX(struct cli_state *cli,
slprintf(fullshare, sizeof(fullshare)-1,
"\\\\%s\\%s", cli->desthost, share);
- set_message(NULL,cli->outbuf,4, 0, True);
+ set_message(cli->outbuf,4, 0, True);
SCVAL(cli->outbuf,smb_com,SMBtconX);
cli_setup_packet(cli);
@@ -1112,7 +1117,7 @@ BOOL cli_send_tconX(struct cli_state *cli,
BOOL cli_tdis(struct cli_state *cli)
{
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,0,0,True);
+ set_message(cli->outbuf,0,0,True);
SCVAL(cli->outbuf,smb_com,SMBtdis);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
@@ -1144,7 +1149,7 @@ void cli_negprot_send(struct cli_state *cli)
memset(cli->outbuf,'\0',smb_size);
/* setup the protocol strings */
- set_message(NULL,cli->outbuf,0,0,True);
+ set_message(cli->outbuf,0,0,True);
p = smb_buf(cli->outbuf);
for (numprots=0;
@@ -1184,7 +1189,7 @@ BOOL cli_negprot(struct cli_state *cli)
numprots++)
plength += strlen(prots[numprots].name)+2;
- set_message(NULL,cli->outbuf,0,plength,True);
+ set_message(cli->outbuf,0,plength,True);
p = smb_buf(cli->outbuf);
for (numprots=0;
@@ -1717,7 +1722,7 @@ NTSTATUS cli_raw_tcon(struct cli_state *cli,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf, 0, 0, True);
+ set_message(cli->outbuf, 0, 0, True);
SCVAL(cli->outbuf,smb_com,SMBtcon);
cli_setup_packet(cli);
diff --git a/source/libsmb/clidgram.c b/source/libsmb/clidgram.c
index 22083788633..83ea81ddf1e 100644
--- a/source/libsmb/clidgram.c
+++ b/source/libsmb/clidgram.c
@@ -26,8 +26,7 @@
* cli_send_mailslot, send a mailslot for client code ...
*/
-BOOL cli_send_mailslot(struct messaging_context *msg_ctx,
- BOOL unique, const char *mailslot,
+BOOL cli_send_mailslot(BOOL unique, const char *mailslot,
uint16 priority,
char *buf, int len,
const char *srcname, int src_type,
@@ -45,6 +44,9 @@ BOOL cli_send_mailslot(struct messaging_context *msg_ctx,
return False;
}
+ if (!message_init())
+ return False;
+
memset((char *)&p, '\0', sizeof(p));
/*
@@ -70,7 +72,7 @@ BOOL cli_send_mailslot(struct messaging_context *msg_ctx,
/* Setup the smb part. */
ptr -= 4; /* XXX Ugliness because of handling of tcp SMB length. */
memcpy(tmp,ptr,4);
- set_message(NULL,ptr,17,strlen(mailslot) + 1 + len,True);
+ set_message(ptr,17,strlen(mailslot) + 1 + len,True);
memcpy(ptr,tmp,4);
SCVAL(ptr,smb_com,SMBtrans);
@@ -102,10 +104,9 @@ BOOL cli_send_mailslot(struct messaging_context *msg_ctx,
DEBUGADD(4,("to %s IP %s\n", nmb_namestr(&dgram->dest_name),
inet_ntoa(dest_ip)));
- return NT_STATUS_IS_OK(messaging_send_buf(msg_ctx,
- pid_to_procid(nmbd_pid),
- MSG_SEND_PACKET,
- (uint8 *)&p, sizeof(p)));
+ return NT_STATUS_IS_OK(message_send_pid(pid_to_procid(nmbd_pid),
+ MSG_SEND_PACKET, &p, sizeof(p),
+ False));
}
/*
@@ -132,8 +133,7 @@ BOOL cli_get_response(const char *mailslot, char *buf, int bufsiz)
static char cli_backup_list[1024];
-int cli_get_backup_list(struct messaging_context *msg_ctx,
- const char *myname, const char *send_to_name)
+int cli_get_backup_list(const char *myname, const char *send_to_name)
{
pstring outbuf;
char *p;
@@ -160,7 +160,7 @@ int cli_get_backup_list(struct messaging_context *msg_ctx,
SIVAL(p, 0, 1); /* The sender's token ... */
p += 4;
- cli_send_mailslot(msg_ctx, True, "\\MAILSLOT\\BROWSE", 1, outbuf,
+ cli_send_mailslot(True, "\\MAILSLOT\\BROWSE", 1, outbuf,
PTR_DIFF(p, outbuf), myname, 0, send_to_name,
0x1d, sendto_ip);
@@ -179,18 +179,16 @@ int cli_get_backup_list(struct messaging_context *msg_ctx,
* cli_get_backup_server: Get the backup list and retrieve a server from it
*/
-int cli_get_backup_server(struct messaging_context *msg_ctx,
- char *my_name, char *target, char *servername,
- int namesize)
+int cli_get_backup_server(char *my_name, char *target, char *servername, int namesize)
{
/* Get the backup list first. We could pull this from the cache later */
- cli_get_backup_list(msg_ctx, my_name, target); /* FIXME: Check the response */
+ cli_get_backup_list(my_name, target); /* FIXME: Check the response */
if (!cli_backup_list[0]) { /* Empty list ... try again */
- cli_get_backup_list(msg_ctx, my_name, target);
+ cli_get_backup_list(my_name, target);
}
diff --git a/source/libsmb/clientgen.c b/source/libsmb/clientgen.c
index 43211a6c5a8..c6cef087047 100644
--- a/source/libsmb/clientgen.c
+++ b/source/libsmb/clientgen.c
@@ -2,7 +2,6 @@
Unix SMB/CIFS implementation.
SMB client generic functions
Copyright (C) Andrew Tridgell 1994-1998
- Copyright (C) Jeremy Allison 2007.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -49,71 +48,49 @@ int cli_set_port(struct cli_state *cli, int port)
*MUST* be of size BUFFER_SIZE+SAFETY_MARGIN.
The timeout is in milliseconds
- This is exactly the same as receive_smb except that it can be set to never return
+ This is exactly the same as receive_smb except that it never returns
a session keepalive packet (just as receive_smb used to do).
receive_smb was changed to return keepalives as the oplock processing means this call
should never go into a blocking read.
****************************************************************************/
-static ssize_t client_receive_smb(struct cli_state *cli, BOOL eat_keepalives, size_t maxlen)
+static BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout)
{
- ssize_t len;
- int fd = cli->fd;
- char *buffer = cli->inbuf;
- unsigned int timeout = cli->timeout;
+ BOOL ret;
for(;;) {
- len = receive_smb_raw(fd, buffer, timeout, maxlen);
+ ret = receive_smb_raw(fd, buffer, timeout);
- if (len < 0) {
+ if (!ret) {
DEBUG(10,("client_receive_smb failed\n"));
show_msg(buffer);
- return len;
+ return ret;
}
/* Ignore session keepalive packets. */
- if (eat_keepalives && (CVAL(buffer,0) == SMBkeepalive)) {
- continue;
- }
- break;
- }
-
- if (cli_encryption_on(cli)) {
- NTSTATUS status = cli_decrypt_message(cli);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("SMB decryption failed on incoming packet! Error %s\n",
- nt_errstr(status)));
- cli->smb_rw_error = READ_BAD_DECRYPT;
- close(cli->fd);
- cli->fd = -1;
- return -1;
- }
+ if(CVAL(buffer,0) != SMBkeepalive)
+ break;
}
show_msg(buffer);
- return len;
+ return ret;
}
/****************************************************************************
Recv an smb.
****************************************************************************/
-BOOL cli_receive_smb_internal(struct cli_state *cli, BOOL eat_keepalives)
+BOOL cli_receive_smb(struct cli_state *cli)
{
- ssize_t len;
+ BOOL ret;
/* fd == -1 causes segfaults -- Tom (tom@ninja.nl) */
if (cli->fd == -1)
return False;
again:
- len = client_receive_smb(cli, eat_keepalives, 0);
-
- if (len >= 0 && !eat_keepalives && (CVAL(cli->inbuf,0) == SMBkeepalive)) {
- /* Give back the keepalive. */
- return True;
- }
+ ret = client_receive_smb(cli->fd,cli->inbuf,cli->timeout);
- if (len > 0) {
+ if (ret) {
/* it might be an oplock break request */
if (!(CVAL(cli->inbuf, smb_flg) & FLAG_REPLY) &&
CVAL(cli->inbuf,smb_com) == SMBlockingX &&
@@ -122,9 +99,7 @@ BOOL cli_receive_smb_internal(struct cli_state *cli, BOOL eat_keepalives)
if (cli->oplock_handler) {
int fnum = SVAL(cli->inbuf,smb_vwv2);
unsigned char level = CVAL(cli->inbuf,smb_vwv3+1);
- if (!cli->oplock_handler(cli, fnum, level)) {
- return False;
- }
+ if (!cli->oplock_handler(cli, fnum, level)) return False;
}
/* try to prevent loops */
SCVAL(cli->inbuf,smb_com,0xFF);
@@ -133,12 +108,12 @@ BOOL cli_receive_smb_internal(struct cli_state *cli, BOOL eat_keepalives)
}
/* If the server is not responding, note that now */
- if (len < 0) {
+ if (!ret) {
DEBUG(0, ("Receiving SMB: Server stopped responding\n"));
cli->smb_rw_error = smb_read_error;
close(cli->fd);
cli->fd = -1;
- return False;
+ return ret;
}
if (!cli_check_sign_mac(cli)) {
@@ -167,137 +142,17 @@ BOOL cli_receive_smb_internal(struct cli_state *cli, BOOL eat_keepalives)
close(cli->fd);
cli->fd = -1;
return False;
- }
-
+ };
return True;
}
-/****************************************************************************
- Recv an smb - eat keepalives.
-****************************************************************************/
-
-BOOL cli_receive_smb(struct cli_state *cli)
-{
- return cli_receive_smb_internal(cli, True);
-}
-
-/****************************************************************************
- Recv an smb - return keepalives.
-****************************************************************************/
-
-BOOL cli_receive_smb_return_keepalive(struct cli_state *cli)
-{
- return cli_receive_smb_internal(cli, False);
-}
-
-/****************************************************************************
- Read the data portion of a readX smb.
- The timeout is in milliseconds
-****************************************************************************/
-
-ssize_t cli_receive_smb_data(struct cli_state *cli, char *buffer, size_t len)
-{
- if (cli->timeout > 0) {
- return read_socket_with_timeout(cli->fd, buffer, len, len, cli->timeout);
- } else {
- return read_data(cli->fd, buffer, len);
- }
-}
-
-/****************************************************************************
- Read a smb readX header.
- We can only use this if encryption and signing are off.
-****************************************************************************/
-
-BOOL cli_receive_smb_readX_header(struct cli_state *cli)
-{
- ssize_t len, offset;
-
- if (cli->fd == -1)
- return False;
-
- again:
-
- /* Read up to the size of a readX header reply. */
- len = client_receive_smb(cli, True, (smb_size - 4) + 24);
-
- if (len > 0) {
- /* it might be an oplock break request */
- if (!(CVAL(cli->inbuf, smb_flg) & FLAG_REPLY) &&
- CVAL(cli->inbuf,smb_com) == SMBlockingX &&
- SVAL(cli->inbuf,smb_vwv6) == 0 &&
- SVAL(cli->inbuf,smb_vwv7) == 0) {
- ssize_t total_len = smb_len(cli->inbuf);
-
- if (total_len > CLI_SAMBA_MAX_LARGE_READX_SIZE+SAFETY_MARGIN) {
- goto read_err;
- }
-
- /* Read the rest of the data. */
- if ((total_len - len > 0) &&
- !cli_receive_smb_data(cli,cli->inbuf+len,total_len - len)) {
- goto read_err;
- }
-
- if (cli->oplock_handler) {
- int fnum = SVAL(cli->inbuf,smb_vwv2);
- unsigned char level = CVAL(cli->inbuf,smb_vwv3+1);
- if (!cli->oplock_handler(cli, fnum, level)) return False;
- }
- /* try to prevent loops */
- SCVAL(cli->inbuf,smb_com,0xFF);
- goto again;
- }
- }
-
- /* If it's not the above size it probably was an error packet. */
-
- if ((len == (smb_size - 4) + 24) && !cli_is_error(cli)) {
- /* Check it's a non-chained readX reply. */
- if (!(CVAL(cli->inbuf, smb_flg) & FLAG_REPLY) ||
- (CVAL(cli->inbuf,smb_vwv0) != 0xFF) ||
- (CVAL(cli->inbuf,smb_com) != SMBreadX)) {
- /*
- * We're not coping here with asnyc replies to
- * other calls. Punt here - we need async client
- * libs for this.
- */
- goto read_err;
- }
-
- /*
- * We know it's a readX reply - ensure we've read the
- * padding bytes also.
- */
-
- offset = SVAL(cli->inbuf,smb_vwv6);
- if (offset > len) {
- ssize_t ret;
- size_t padbytes = offset - len;
- ret = cli_receive_smb_data(cli,smb_buf(cli->inbuf),padbytes);
- if (ret != padbytes) {
- goto read_err;
- }
- }
- }
-
- return True;
-
- read_err:
-
- cli->smb_rw_error = smb_read_error = READ_ERROR;
- close(cli->fd);
- cli->fd = -1;
- return False;
-}
-
static ssize_t write_socket(int fd, const char *buf, size_t len)
{
ssize_t ret=0;
DEBUG(6,("write_socket(%d,%d)\n",fd,(int)len));
ret = write_data(fd,buf,len);
-
+
DEBUG(6,("write_socket(%d,%d) wrote %d\n",fd,(int)len,(int)ret));
if(ret <= 0)
DEBUG(0,("write_socket: Error writing %d bytes to socket %d: ERRNO = %s\n",
@@ -315,36 +170,18 @@ BOOL cli_send_smb(struct cli_state *cli)
size_t len;
size_t nwritten=0;
ssize_t ret;
- char *buf_out = cli->outbuf;
- BOOL enc_on = cli_encryption_on(cli);
/* fd == -1 causes segfaults -- Tom (tom@ninja.nl) */
- if (cli->fd == -1) {
+ if (cli->fd == -1)
return False;
- }
cli_calculate_sign_mac(cli);
- if (enc_on) {
- NTSTATUS status = cli_encrypt_message(cli, &buf_out);
- if (!NT_STATUS_IS_OK(status)) {
- close(cli->fd);
- cli->fd = -1;
- cli->smb_rw_error = WRITE_ERROR;
- DEBUG(0,("Error in encrypting client message. Error %s\n",
- nt_errstr(status) ));
- return False;
- }
- }
-
- len = smb_len(buf_out) + 4;
+ len = smb_len(cli->outbuf) + 4;
while (nwritten < len) {
- ret = write_socket(cli->fd,buf_out+nwritten,len - nwritten);
+ ret = write_socket(cli->fd,cli->outbuf+nwritten,len - nwritten);
if (ret <= 0) {
- if (enc_on) {
- cli_free_enc_buffer(cli, buf_out);
- }
close(cli->fd);
cli->fd = -1;
cli->smb_rw_error = WRITE_ERROR;
@@ -354,14 +191,10 @@ BOOL cli_send_smb(struct cli_state *cli)
}
nwritten += ret;
}
-
- cli_free_enc_buffer(cli, buf_out);
-
/* Increment the mid so we can tell between responses. */
cli->mid++;
- if (!cli->mid) {
+ if (!cli->mid)
cli->mid++;
- }
return True;
}
@@ -402,7 +235,7 @@ void cli_setup_packet(struct cli_state *cli)
void cli_setup_bcc(struct cli_state *cli, void *p)
{
- set_message_bcc(NULL,cli->outbuf, PTR_DIFF(p, smb_buf(cli->outbuf)));
+ set_message_bcc(cli->outbuf, PTR_DIFF(p, smb_buf(cli->outbuf)));
}
/****************************************************************************
@@ -608,8 +441,6 @@ void cli_shutdown(struct cli_state *cli)
SAFE_FREE(cli->inbuf);
cli_free_signing_context(cli);
- cli_free_encryption_context(cli);
-
data_blob_free(&cli->secblob);
data_blob_free(&cli->user_session_key);
@@ -688,7 +519,7 @@ BOOL cli_echo(struct cli_state *cli, unsigned char *data, size_t length)
SMB_ASSERT(length < 1024);
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,1,length,True);
+ set_message(cli->outbuf,1,length,True);
SCVAL(cli->outbuf,smb_com,SMBecho);
SSVAL(cli->outbuf,smb_tid,65535);
SSVAL(cli->outbuf,smb_vwv0,1);
diff --git a/source/libsmb/clierror.c b/source/libsmb/clierror.c
index 90e82c51014..ff6fbf522fe 100644
--- a/source/libsmb/clierror.c
+++ b/source/libsmb/clierror.c
@@ -84,7 +84,6 @@ static NTSTATUS cli_smb_rw_error_to_ntstatus(struct cli_state *cli)
case WRITE_ERROR:
return NT_STATUS_UNEXPECTED_NETWORK_ERROR;
case READ_BAD_SIG:
- case READ_BAD_DECRYPT:
return NT_STATUS_INVALID_PARAMETER;
default:
break;
@@ -134,10 +133,6 @@ const char *cli_errstr(struct cli_state *cli)
slprintf(cli_error_message, sizeof(cli_error_message) - 1,
"Server packet had invalid SMB signature!");
break;
- case READ_BAD_DECRYPT:
- slprintf(cli_error_message, sizeof(cli_error_message) - 1,
- "Server packet could not be decrypted !");
- break;
default:
slprintf(cli_error_message, sizeof(cli_error_message) - 1,
"Unknown error code %d\n", cli->smb_rw_error );
@@ -336,9 +331,7 @@ static const struct {
#ifdef ECOMM
{NT_STATUS_NET_WRITE_FAULT, ECOMM},
#endif
-#ifdef EXDEV
- {NT_STATUS_NOT_SAME_DEVICE, EXDEV},
-#endif
+
{NT_STATUS(0), 0}
};
@@ -392,7 +385,7 @@ int cli_errno(struct cli_state *cli)
* byte isn't 0xc0, it doesn't match cli_is_nt_error() above.
*/
status = cli_nt_error(cli);
- if (NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_INACCESSIBLE_SYSTEM_SHORTCUT)) {
+ if (NT_STATUS_V(status) == NT_STATUS_V(STATUS_INACCESSIBLE_SYSTEM_SHORTCUT)) {
return EACCES;
}
diff --git a/source/libsmb/clifile.c b/source/libsmb/clifile.c
index 64b3e652cf9..ce2081a81e1 100644
--- a/source/libsmb/clifile.c
+++ b/source/libsmb/clifile.c
@@ -390,7 +390,7 @@ BOOL cli_rename(struct cli_state *cli, const char *fname_src, const char *fname_
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,1, 0, True);
+ set_message(cli->outbuf,1, 0, True);
SCVAL(cli->outbuf,smb_com,SMBmv);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -427,7 +427,7 @@ BOOL cli_ntrename(struct cli_state *cli, const char *fname_src, const char *fnam
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf, 4, 0, True);
+ set_message(cli->outbuf, 4, 0, True);
SCVAL(cli->outbuf,smb_com,SMBntrename);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -465,7 +465,7 @@ BOOL cli_nt_hardlink(struct cli_state *cli, const char *fname_src, const char *f
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf, 4, 0, True);
+ set_message(cli->outbuf, 4, 0, True);
SCVAL(cli->outbuf,smb_com,SMBntrename);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -503,7 +503,7 @@ BOOL cli_unlink_full(struct cli_state *cli, const char *fname, uint16 attrs)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,1, 0,True);
+ set_message(cli->outbuf,1, 0,True);
SCVAL(cli->outbuf,smb_com,SMBunlink);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -548,7 +548,7 @@ BOOL cli_mkdir(struct cli_state *cli, const char *dname)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,0, 0,True);
+ set_message(cli->outbuf,0, 0,True);
SCVAL(cli->outbuf,smb_com,SMBmkdir);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -583,7 +583,7 @@ BOOL cli_rmdir(struct cli_state *cli, const char *dname)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,0, 0, True);
+ set_message(cli->outbuf,0, 0, True);
SCVAL(cli->outbuf,smb_com,SMBrmdir);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -665,7 +665,7 @@ int cli_nt_create_full(struct cli_state *cli, const char *fname,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,24,0,True);
+ set_message(cli->outbuf,24,0,True);
SCVAL(cli->outbuf,smb_com,SMBntcreateX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -759,7 +759,7 @@ int cli_open(struct cli_state *cli, const char *fname, int flags, int share_mode
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,15,0,True);
+ set_message(cli->outbuf,15,0,True);
SCVAL(cli->outbuf,smb_com,SMBopenX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -806,7 +806,7 @@ BOOL cli_close(struct cli_state *cli, int fnum)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,3,0,True);
+ set_message(cli->outbuf,3,0,True);
SCVAL(cli->outbuf,smb_com,SMBclose);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -838,7 +838,7 @@ NTSTATUS cli_locktype(struct cli_state *cli, int fnum,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0', smb_size);
- set_message(NULL,cli->outbuf,8,0,True);
+ set_message(cli->outbuf,8,0,True);
SCVAL(cli->outbuf,smb_com,SMBlockingX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -890,7 +890,7 @@ BOOL cli_lock(struct cli_state *cli, int fnum,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0', smb_size);
- set_message(NULL,cli->outbuf,8,0,True);
+ set_message(cli->outbuf,8,0,True);
SCVAL(cli->outbuf,smb_com,SMBlockingX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -943,7 +943,7 @@ BOOL cli_unlock(struct cli_state *cli, int fnum, uint32 offset, uint32 len)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,8,0,True);
+ set_message(cli->outbuf,8,0,True);
SCVAL(cli->outbuf,smb_com,SMBlockingX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -995,7 +995,7 @@ BOOL cli_lock64(struct cli_state *cli, int fnum,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0', smb_size);
- set_message(NULL,cli->outbuf,8,0,True);
+ set_message(cli->outbuf,8,0,True);
SCVAL(cli->outbuf,smb_com,SMBlockingX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -1050,7 +1050,7 @@ BOOL cli_unlock64(struct cli_state *cli, int fnum, SMB_BIG_UINT offset, SMB_BIG_
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,8,0,True);
+ set_message(cli->outbuf,8,0,True);
SCVAL(cli->outbuf,smb_com,SMBlockingX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -1197,7 +1197,7 @@ BOOL cli_getattrE(struct cli_state *cli, int fd,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,1,0,True);
+ set_message(cli->outbuf,1,0,True);
SCVAL(cli->outbuf,smb_com,SMBgetattrE);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -1249,7 +1249,7 @@ BOOL cli_getatr(struct cli_state *cli, const char *fname,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,0,0,True);
+ set_message(cli->outbuf,0,0,True);
SCVAL(cli->outbuf,smb_com,SMBgetatr);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -1301,7 +1301,7 @@ BOOL cli_setattrE(struct cli_state *cli, int fd,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,7,0,True);
+ set_message(cli->outbuf,7,0,True);
SCVAL(cli->outbuf,smb_com,SMBsetattrE);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -1340,7 +1340,7 @@ BOOL cli_setatr(struct cli_state *cli, const char *fname, uint16 attr, time_t t)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,8,0,True);
+ set_message(cli->outbuf,8,0,True);
SCVAL(cli->outbuf,smb_com,SMBsetatr);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -1382,7 +1382,7 @@ BOOL cli_chkpath(struct cli_state *cli, const char *path)
*path2 = '\\';
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,0,0,True);
+ set_message(cli->outbuf,0,0,True);
SCVAL(cli->outbuf,smb_com,SMBcheckpath);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
@@ -1409,7 +1409,7 @@ BOOL cli_chkpath(struct cli_state *cli, const char *path)
BOOL cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail)
{
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,0,0,True);
+ set_message(cli->outbuf,0,0,True);
SCVAL(cli->outbuf,smb_com,SMBdskattr);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
@@ -1438,7 +1438,7 @@ int cli_ctemp(struct cli_state *cli, const char *path, char **tmp_path)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,3,0,True);
+ set_message(cli->outbuf,3,0,True);
SCVAL(cli->outbuf,smb_com,SMBctemp);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -1488,7 +1488,7 @@ NTSTATUS cli_raw_ioctl(struct cli_state *cli, int fnum, uint32 code, DATA_BLOB *
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf, 3, 0, True);
+ set_message(cli->outbuf, 3, 0, True);
SCVAL(cli->outbuf,smb_com,SMBioctl);
cli_setup_packet(cli);
@@ -1505,7 +1505,7 @@ NTSTATUS cli_raw_ioctl(struct cli_state *cli, int fnum, uint32 code, DATA_BLOB *
return cli_nt_error(cli);
}
- *blob = data_blob_null;
+ *blob = data_blob(NULL, 0);
return NT_STATUS_OK;
}
diff --git a/source/libsmb/clifsinfo.c b/source/libsmb/clifsinfo.c
index 28facb511df..9c3b6e3aed3 100644
--- a/source/libsmb/clifsinfo.c
+++ b/source/libsmb/clifsinfo.c
@@ -2,7 +2,6 @@
Unix SMB/CIFS implementation.
FS info functions
Copyright (C) Stefan (metze) Metzmacher 2003
- Copyright (C) Jeremy Allison 2007.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -66,7 +65,7 @@ BOOL cli_unix_extensions_version(struct cli_state *cli, uint16 *pmajor, uint16 *
*pmajor = SVAL(rdata,0);
*pminor = SVAL(rdata,2);
- cli->posix_capabilities = *pcaplow = IVAL(rdata,4);
+ *pcaplow = IVAL(rdata,4);
*pcaphigh = IVAL(rdata,8);
/* todo: but not yet needed
@@ -303,326 +302,3 @@ cleanup:
return ret;
}
-
-/******************************************************************************
- Send/receive the request encryption blob.
-******************************************************************************/
-
-static NTSTATUS enc_blob_send_receive(struct cli_state *cli, DATA_BLOB *in, DATA_BLOB *out, DATA_BLOB *param_out)
-{
- uint16 setup;
- char param[4];
- char *rparam=NULL, *rdata=NULL;
- unsigned int rparam_count=0, rdata_count=0;
- NTSTATUS status = NT_STATUS_OK;
-
- setup = TRANSACT2_SETFSINFO;
-
- SSVAL(param,0,0);
- SSVAL(param,2,SMB_REQUEST_TRANSPORT_ENCRYPTION);
-
- if (!cli_send_trans(cli, SMBtrans2,
- NULL,
- 0, 0,
- &setup, 1, 0,
- param, 4, 0,
- (char *)in->data, in->length, CLI_BUFFER_SIZE)) {
- status = cli_nt_error(cli);
- goto out;
- }
-
- if (!cli_receive_trans(cli, SMBtrans2,
- &rparam, &rparam_count,
- &rdata, &rdata_count)) {
- status = cli_nt_error(cli);
- goto out;
- }
-
- if (cli_is_error(cli)) {
- status = cli_nt_error(cli);
- if (!NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- goto out;
- }
- }
-
- *out = data_blob(rdata, rdata_count);
- *param_out = data_blob(rparam, rparam_count);
-
- out:
-
- SAFE_FREE(rparam);
- SAFE_FREE(rdata);
- return status;
-}
-
-/******************************************************************************
- Make a client state struct.
-******************************************************************************/
-
-static struct smb_trans_enc_state *make_cli_enc_state(enum smb_trans_enc_type smb_enc_type)
-{
- struct smb_trans_enc_state *es = NULL;
- es = SMB_MALLOC_P(struct smb_trans_enc_state);
- if (!es) {
- return NULL;
- }
- ZERO_STRUCTP(es);
- es->smb_enc_type = smb_enc_type;
-
- if (smb_enc_type == SMB_TRANS_ENC_GSS) {
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- es->s.gss_state = SMB_MALLOC_P(struct smb_tran_enc_state_gss);
- if (!es->s.gss_state) {
- SAFE_FREE(es);
- return NULL;
- }
- ZERO_STRUCTP(es->s.gss_state);
-#else
- DEBUG(0,("make_cli_enc_state: no krb5 compiled.\n"));
- SAFE_FREE(es);
- return NULL;
-#endif
- }
- return es;
-}
-
-/******************************************************************************
- Start a raw ntlmssp encryption.
-******************************************************************************/
-
-NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli,
- const char *user,
- const char *pass,
- const char *domain)
-{
- DATA_BLOB blob_in = data_blob_null;
- DATA_BLOB blob_out = data_blob_null;
- DATA_BLOB param_out = data_blob_null;
- NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- struct smb_trans_enc_state *es = make_cli_enc_state(SMB_TRANS_ENC_NTLM);
-
- if (!es) {
- return NT_STATUS_NO_MEMORY;
- }
- status = ntlmssp_client_start(&es->s.ntlmssp_state);
- if (!NT_STATUS_IS_OK(status)) {
- goto fail;
- }
-
- ntlmssp_want_feature(es->s.ntlmssp_state, NTLMSSP_FEATURE_SESSION_KEY);
- es->s.ntlmssp_state->neg_flags |= (NTLMSSP_NEGOTIATE_SIGN|NTLMSSP_NEGOTIATE_SEAL);
-
- if (!NT_STATUS_IS_OK(status = ntlmssp_set_username(es->s.ntlmssp_state, user))) {
- goto fail;
- }
- if (!NT_STATUS_IS_OK(status = ntlmssp_set_domain(es->s.ntlmssp_state, domain))) {
- goto fail;
- }
- if (!NT_STATUS_IS_OK(status = ntlmssp_set_password(es->s.ntlmssp_state, pass))) {
- goto fail;
- }
-
- do {
- status = ntlmssp_update(es->s.ntlmssp_state, blob_in, &blob_out);
- data_blob_free(&blob_in);
- data_blob_free(&param_out);
- if (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED) || NT_STATUS_IS_OK(status)) {
- status = enc_blob_send_receive(cli, &blob_out, &blob_in, &param_out);
- }
- if (param_out.length == 2) {
- es->enc_ctx_num = SVAL(param_out.data, 0);
- }
- data_blob_free(&blob_out);
- } while (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED));
-
- data_blob_free(&blob_in);
-
- if (NT_STATUS_IS_OK(status)) {
- /* Replace the old state, if any. */
- if (cli->trans_enc_state) {
- common_free_encryption_state(&cli->trans_enc_state);
- }
- cli->trans_enc_state = es;
- cli->trans_enc_state->enc_on = True;
- es = NULL;
- }
-
- fail:
-
- common_free_encryption_state(&es);
- return status;
-}
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
-
-#ifndef SMB_GSS_REQUIRED_FLAGS
-#define SMB_GSS_REQUIRED_FLAGS (GSS_C_CONF_FLAG|GSS_C_INTEG_FLAG|GSS_C_MUTUAL_FLAG|GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG)
-#endif
-
-/******************************************************************************
- Get client gss blob to send to a server.
-******************************************************************************/
-
-static NTSTATUS make_cli_gss_blob(struct smb_trans_enc_state *es,
- const char *service,
- const char *host,
- NTSTATUS status_in,
- DATA_BLOB spnego_blob_in,
- DATA_BLOB *p_blob_out)
-{
- const char *krb_mechs[] = {OID_KERBEROS5, NULL};
- OM_uint32 ret;
- OM_uint32 min;
- gss_name_t srv_name;
- gss_buffer_desc input_name;
- gss_buffer_desc *p_tok_in;
- gss_buffer_desc tok_out, tok_in;
- DATA_BLOB blob_out = data_blob_null;
- DATA_BLOB blob_in = data_blob_null;
- char *host_princ_s = NULL;
- OM_uint32 ret_flags = 0;
- NTSTATUS status = NT_STATUS_OK;
-
- gss_OID_desc nt_hostbased_service =
- {10, CONST_DISCARD(char *,"\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x04")};
-
- memset(&tok_out, '\0', sizeof(tok_out));
-
- /* Get a ticket for the service@host */
- asprintf(&host_princ_s, "%s@%s", service, host);
- if (host_princ_s == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
- input_name.value = host_princ_s;
- input_name.length = strlen(host_princ_s) + 1;
-
- ret = gss_import_name(&min,
- &input_name,
- &nt_hostbased_service,
- &srv_name);
-
- if (ret != GSS_S_COMPLETE) {
- SAFE_FREE(host_princ_s);
- return map_nt_error_from_gss(ret, min);
- }
-
- if (spnego_blob_in.length == 0) {
- p_tok_in = GSS_C_NO_BUFFER;
- } else {
- /* Remove the SPNEGO wrapper */
- if (!spnego_parse_auth_response(spnego_blob_in, status_in, OID_KERBEROS5, &blob_in)) {
- status = NT_STATUS_UNSUCCESSFUL;
- goto fail;
- }
- tok_in.value = blob_in.data;
- tok_in.length = blob_in.length;
- p_tok_in = &tok_in;
- }
-
- ret = gss_init_sec_context(&min,
- GSS_C_NO_CREDENTIAL, /* Use our default cred. */
- &es->s.gss_state->gss_ctx,
- srv_name,
- GSS_C_NO_OID, /* default OID. */
- GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG,
- GSS_C_INDEFINITE, /* requested ticket lifetime. */
- NULL, /* no channel bindings */
- p_tok_in,
- NULL, /* ignore mech type */
- &tok_out,
- &ret_flags,
- NULL); /* ignore time_rec */
-
- status = map_nt_error_from_gss(ret, min);
- if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status,NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- ADS_STATUS adss = ADS_ERROR_GSS(ret, min);
- DEBUG(10,("make_cli_gss_blob: gss_init_sec_context failed with %s\n",
- ads_errstr(adss)));
- goto fail;
- }
-
- if ((ret_flags & SMB_GSS_REQUIRED_FLAGS) != SMB_GSS_REQUIRED_FLAGS) {
- status = NT_STATUS_ACCESS_DENIED;
- }
-
- blob_out = data_blob(tok_out.value, tok_out.length);
-
- /* Wrap in an SPNEGO wrapper */
- *p_blob_out = gen_negTokenTarg(krb_mechs, blob_out);
-
- fail:
-
- data_blob_free(&blob_out);
- data_blob_free(&blob_in);
- SAFE_FREE(host_princ_s);
- gss_release_name(&min, &srv_name);
- if (tok_out.value) {
- gss_release_buffer(&min, &tok_out);
- }
- return status;
-}
-
-/******************************************************************************
- Start a SPNEGO gssapi encryption context.
-******************************************************************************/
-
-NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli)
-{
- DATA_BLOB blob_recv = data_blob_null;
- DATA_BLOB blob_send = data_blob_null;
- DATA_BLOB param_out = data_blob_null;
- NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- fstring fqdn;
- const char *servicename;
- struct smb_trans_enc_state *es = make_cli_enc_state(SMB_TRANS_ENC_GSS);
-
- if (!es) {
- return NT_STATUS_NO_MEMORY;
- }
-
- name_to_fqdn(fqdn, cli->desthost);
- strlower_m(fqdn);
-
- servicename = "cifs";
- status = make_cli_gss_blob(es, servicename, fqdn, NT_STATUS_OK, blob_recv, &blob_send);
- if (!NT_STATUS_EQUAL(status,NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- servicename = "host";
- status = make_cli_gss_blob(es, servicename, fqdn, NT_STATUS_OK, blob_recv, &blob_send);
- if (!NT_STATUS_EQUAL(status,NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- goto fail;
- }
- }
-
- do {
- data_blob_free(&blob_recv);
- status = enc_blob_send_receive(cli, &blob_send, &blob_recv, &param_out);
- if (param_out.length == 2) {
- es->enc_ctx_num = SVAL(param_out.data, 0);
- }
- data_blob_free(&blob_send);
- status = make_cli_gss_blob(es, servicename, fqdn, status, blob_recv, &blob_send);
- } while (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED));
- data_blob_free(&blob_recv);
-
- if (NT_STATUS_IS_OK(status)) {
- /* Replace the old state, if any. */
- if (cli->trans_enc_state) {
- common_free_encryption_state(&cli->trans_enc_state);
- }
- cli->trans_enc_state = es;
- cli->trans_enc_state->enc_on = True;
- es = NULL;
- }
-
- fail:
-
- common_free_encryption_state(&es);
- return status;
-}
-#else
-NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli)
-{
- return NT_STATUS_NOT_SUPPORTED;
-}
-#endif
diff --git a/source/libsmb/clikrb5.c b/source/libsmb/clikrb5.c
index 96c18c3a8c8..6337b50ce9f 100644
--- a/source/libsmb/clikrb5.c
+++ b/source/libsmb/clikrb5.c
@@ -4,7 +4,7 @@
Copyright (C) Andrew Tridgell 2001
Copyright (C) Luke Howard 2002-2003
Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005
- Copyright (C) Guenther Deschner 2005-2007
+ Copyright (C) Guenther Deschner 2005
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,11 +28,11 @@
#ifdef HAVE_KRB5
-#ifdef HAVE_KRB5_KEYBLOCK_KEYVALUE /* Heimdal */
-#define KRB5_KEY_TYPE(k) ((k)->keytype)
+#ifdef HAVE_KRB5_KEYBLOCK_KEYVALUE
+#define KRB5_KEY_TYPE(k) ((k)->keytype)
#define KRB5_KEY_LENGTH(k) ((k)->keyvalue.length)
#define KRB5_KEY_DATA(k) ((k)->keyvalue.data)
-#else /* MIT */
+#else
#define KRB5_KEY_TYPE(k) ((k)->enctype)
#define KRB5_KEY_LENGTH(k) ((k)->length)
#define KRB5_KEY_DATA(k) ((k)->contents)
@@ -272,45 +272,6 @@ static krb5_error_code smb_krb5_parse_name_norealm_conv(krb5_context context,
}
#endif
-BOOL unwrap_edata_ntstatus(TALLOC_CTX *mem_ctx,
- DATA_BLOB *edata,
- DATA_BLOB *edata_out)
-{
- DATA_BLOB edata_contents;
- ASN1_DATA data;
- int edata_type;
-
- if (!edata->length) {
- return False;
- }
-
- asn1_load(&data, *edata);
- asn1_start_tag(&data, ASN1_SEQUENCE(0));
- asn1_start_tag(&data, ASN1_CONTEXT(1));
- asn1_read_Integer(&data, &edata_type);
-
- if (edata_type != KRB5_PADATA_PW_SALT) {
- DEBUG(0,("edata is not of required type %d but of type %d\n",
- KRB5_PADATA_PW_SALT, edata_type));
- asn1_free(&data);
- return False;
- }
-
- asn1_start_tag(&data, ASN1_CONTEXT(2));
- asn1_read_OctetString(&data, &edata_contents);
- asn1_end_tag(&data);
- asn1_end_tag(&data);
- asn1_end_tag(&data);
- asn1_free(&data);
-
- *edata_out = data_blob_talloc(mem_ctx, edata_contents.data, edata_contents.length);
-
- data_blob_free(&edata_contents);
-
- return True;
-}
-
-
BOOL unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_pac_data)
{
DATA_BLOB pac_contents;
@@ -951,9 +912,9 @@ get_key_from_keytab(krb5_context context,
may be in the middle of a keytab enumeration when this is
called. JRA. */
- ret = smb_krb5_open_keytab(context, NULL, False, &keytab);
+ ret = krb5_kt_default(context, &keytab);
if (ret) {
- DEBUG(1,("get_key_from_keytab: smb_krb5_open_keytab failed (%s)\n", error_message(ret)));
+ DEBUG(0,("get_key_from_keytab: failed to open keytab: %s\n", error_message(ret)));
return ret;
}
@@ -1140,10 +1101,6 @@ out:
krb5_context context = NULL;
krb5_ccache ccache = NULL;
krb5_principal client = NULL;
- krb5_creds creds, creds_in, *creds_out = NULL;
-
- ZERO_STRUCT(creds);
- ZERO_STRUCT(creds_in);
initialize_krb5_error_table();
ret = krb5_init_context(&context);
@@ -1155,11 +1112,6 @@ out:
ccache_string = krb5_cc_default_name(context);
}
- if (!ccache_string) {
- ret = EINVAL;
- goto done;
- }
-
DEBUG(10,("smb_krb5_renew_ticket: using %s as ccache\n", ccache_string));
/* FIXME: we should not fall back to defaults */
@@ -1168,34 +1120,61 @@ out:
goto done;
}
- if (client_string) {
- ret = smb_krb5_parse_name(context, client_string, &client);
- if (ret) {
- goto done;
+#ifdef HAVE_KRB5_GET_RENEWED_CREDS /* MIT */
+ {
+ krb5_creds creds;
+
+ if (client_string) {
+ ret = smb_krb5_parse_name(context, client_string, &client);
+ if (ret) {
+ goto done;
+ }
+ } else {
+ ret = krb5_cc_get_principal(context, ccache, &client);
+ if (ret) {
+ goto done;
+ }
}
- } else {
- ret = krb5_cc_get_principal(context, ccache, &client);
+
+ ret = krb5_get_renewed_creds(context, &creds, client, ccache, CONST_DISCARD(char *, service_string));
if (ret) {
+ DEBUG(10,("smb_krb5_renew_ticket: krb5_get_kdc_cred failed: %s\n", error_message(ret)));
goto done;
}
- }
-#ifdef HAVE_KRB5_GET_RENEWED_CREDS /* MIT */
- {
- ret = krb5_get_renewed_creds(context, &creds, client, ccache, CONST_DISCARD(char *, service_string));
+ /* hm, doesn't that create a new one if the old one wasn't there? - Guenther */
+ ret = krb5_cc_initialize(context, ccache, client);
if (ret) {
- DEBUG(10,("smb_krb5_renew_ticket: krb5_get_kdc_cred failed: %s\n", error_message(ret)));
goto done;
}
+
+ ret = krb5_cc_store_cred(context, ccache, &creds);
+
+ if (expire_time) {
+ *expire_time = (time_t) creds.times.endtime;
+ }
+
+ krb5_free_cred_contents(context, &creds);
}
#elif defined(HAVE_KRB5_GET_KDC_CRED) /* Heimdal */
{
krb5_kdc_flags flags;
- krb5_realm *client_realm = NULL;
+ krb5_creds creds_in;
+ krb5_realm *client_realm;
+ krb5_creds *creds;
- ret = krb5_copy_principal(context, client, &creds_in.client);
- if (ret) {
- goto done;
+ memset(&creds_in, 0, sizeof(creds_in));
+
+ if (client_string) {
+ ret = smb_krb5_parse_name(context, client_string, &creds_in.client);
+ if (ret) {
+ goto done;
+ }
+ } else {
+ ret = krb5_cc_get_principal(context, ccache, &creds_in.client);
+ if (ret) {
+ goto done;
+ }
}
if (service_string) {
@@ -1219,50 +1198,45 @@ out:
flags.i = 0;
flags.b.renewable = flags.b.renew = True;
- ret = krb5_get_kdc_cred(context, ccache, flags, NULL, NULL, &creds_in, &creds_out);
+ ret = krb5_get_kdc_cred(context, ccache, flags, NULL, NULL, &creds_in, &creds);
if (ret) {
DEBUG(10,("smb_krb5_renew_ticket: krb5_get_kdc_cred failed: %s\n", error_message(ret)));
goto done;
}
+
+ /* hm, doesn't that create a new one if the old one wasn't there? - Guenther */
+ ret = krb5_cc_initialize(context, ccache, creds_in.client);
+ if (ret) {
+ goto done;
+ }
+
+ ret = krb5_cc_store_cred(context, ccache, creds);
- creds = *creds_out;
+ if (expire_time) {
+ *expire_time = (time_t) creds->times.endtime;
+ }
+
+ krb5_free_cred_contents(context, &creds_in);
+ krb5_free_creds(context, creds);
}
#else
-#error NO_SUITABLE_KRB5_TICKET_RENEW_FUNCTION_AVAILABLE
+#error No suitable krb5 ticket renew function available
#endif
- /* hm, doesn't that create a new one if the old one wasn't there? - Guenther */
- ret = krb5_cc_initialize(context, ccache, client);
- if (ret) {
- goto done;
- }
-
- ret = krb5_cc_store_cred(context, ccache, &creds);
-
- if (expire_time) {
- *expire_time = (time_t) creds.times.endtime;
- }
done:
- krb5_free_cred_contents(context, &creds_in);
-
- if (creds_out) {
- krb5_free_creds(context, creds_out);
- } else {
- krb5_free_cred_contents(context, &creds);
- }
-
if (client) {
krb5_free_principal(context, client);
}
- if (ccache) {
- krb5_cc_close(context, ccache);
- }
if (context) {
krb5_free_context(context);
}
+ if (ccache) {
+ krb5_cc_close(context, ccache);
+ }
return ret;
+
}
krb5_error_code smb_krb5_free_addresses(krb5_context context, smb_krb5_addresses *addr)
@@ -1441,7 +1415,7 @@ done:
*opt = NULL;
- if ((my_opt = SMB_MALLOC_P(krb5_get_init_creds_opt)) == NULL) {
+ if ((my_opt = SMB_MALLOC(sizeof(krb5_get_init_creds_opt))) == NULL) {
return ENOMEM;
}
@@ -1458,12 +1432,12 @@ done:
#ifdef HAVE_KRB5_GET_INIT_CREDS_OPT_FREE
#ifdef KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT
- /* Modern MIT or Heimdal version */
+ /* Modern MIT version */
krb5_get_init_creds_opt_free(context, opt);
#else
/* Heimdal version */
krb5_get_init_creds_opt_free(opt);
-#endif /* KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT */
+#endif
#else /* HAVE_KRB5_GET_INIT_CREDS_OPT_FREE */
/* Historical MIT version */
@@ -1472,41 +1446,6 @@ done:
#endif /* HAVE_KRB5_GET_INIT_CREDS_OPT_FREE */
}
- krb5_enctype smb_get_enctype_from_kt_entry(const krb5_keytab_entry *kt_entry)
-{
-#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEY /* MIT */
- return kt_entry->key.enctype;
-#elif defined(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK) /* Heimdal */
- return kt_entry->keyblock.keytype;
-#else
-#error UNKNOWN_KRB5_KEYTAB_ENTRY_KEYBLOCK_FORMAT
-#endif
-}
-
-
-/* caller needs to free etype_s */
- krb5_error_code smb_krb5_enctype_to_string(krb5_context context,
- krb5_enctype enctype,
- char **etype_s)
-{
-#ifdef HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG
- return krb5_enctype_to_string(context, enctype, etype_s); /* Heimdal */
-#elif defined(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG)
- char buf[256];
- krb5_error_code ret = krb5_enctype_to_string(enctype, buf, 256); /* MIT */
- if (ret) {
- return ret;
- }
- *etype_s = SMB_STRDUP(buf);
- if (!*etype_s) {
- return ENOMEM;
- }
- return ret;
-#else
-#error UNKNOWN_KRB5_ENCTYPE_TO_STRING_FUNCTION
-#endif
-}
-
krb5_error_code smb_krb5_mk_error(krb5_context context,
krb5_error_code error_code,
const krb5_principal server,
@@ -1544,142 +1483,6 @@ done:
#endif
}
-/**********************************************************************
- * Open a krb5 keytab with flags, handles readonly or readwrite access and
- * allows to process non-default keytab names.
- * @param context krb5_context
- * @param keytab_name_req string
- * @param write_access BOOL if writable keytab is required
- * @param krb5_keytab pointer to krb5_keytab (close with krb5_kt_close())
- * @return krb5_error_code
-**********************************************************************/
-
-/* This MAX_NAME_LEN is a constant defined in krb5.h */
-#ifndef MAX_KEYTAB_NAME_LEN
-#define MAX_KEYTAB_NAME_LEN 1100
-#endif
-
- krb5_error_code smb_krb5_open_keytab(krb5_context context,
- const char *keytab_name_req,
- BOOL write_access,
- krb5_keytab *keytab)
-{
- krb5_error_code ret = 0;
- TALLOC_CTX *mem_ctx;
- char keytab_string[MAX_KEYTAB_NAME_LEN];
- BOOL found_valid_name = False;
- const char *pragma = "FILE";
- const char *tmp = NULL;
-
- if (!write_access && !keytab_name_req) {
- /* caller just wants to read the default keytab readonly, so be it */
- return krb5_kt_default(context, keytab);
- }
-
- mem_ctx = talloc_init("smb_krb5_open_keytab");
- if (!mem_ctx) {
- return ENOMEM;
- }
-
-#ifdef HAVE_WRFILE_KEYTAB
- if (write_access) {
- pragma = "WRFILE";
- }
-#endif
-
- if (keytab_name_req) {
-
- if (strlen(keytab_name_req) > MAX_KEYTAB_NAME_LEN) {
- ret = KRB5_CONFIG_NOTENUFSPACE;
- goto out;
- }
-
- if ((strncmp(keytab_name_req, "WRFILE:/", 8) == 0) ||
- (strncmp(keytab_name_req, "FILE:/", 6) == 0)) {
- tmp = keytab_name_req;
- goto resolve;
- }
-
- if (keytab_name_req[0] != '/') {
- ret = KRB5_KT_BADNAME;
- goto out;
- }
-
- tmp = talloc_asprintf(mem_ctx, "%s:%s", pragma, keytab_name_req);
- if (!tmp) {
- ret = ENOMEM;
- goto out;
- }
-
- goto resolve;
- }
-
- /* we need to handle more complex keytab_strings, like:
- * "ANY:FILE:/etc/krb5.keytab,krb4:/etc/srvtab" */
-
- ret = krb5_kt_default_name(context, &keytab_string[0], MAX_KEYTAB_NAME_LEN - 2);
- if (ret) {
- goto out;
- }
-
- DEBUG(10,("smb_krb5_open_keytab: krb5_kt_default_name returned %s\n", keytab_string));
-
- tmp = talloc_strdup(mem_ctx, keytab_string);
- if (!tmp) {
- ret = ENOMEM;
- goto out;
- }
-
- if (strncmp(tmp, "ANY:", 4) == 0) {
- tmp += 4;
- }
-
- memset(&keytab_string, '\0', sizeof(keytab_string));
-
- while (next_token(&tmp, keytab_string, ",", sizeof(keytab_string))) {
-
- if (strncmp(keytab_string, "WRFILE:", 7) == 0) {
- found_valid_name = True;
- tmp = keytab_string;
- tmp += 7;
- }
-
- if (strncmp(keytab_string, "FILE:", 5) == 0) {
- found_valid_name = True;
- tmp = keytab_string;
- tmp += 5;
- }
-
- if (found_valid_name) {
-
- if (tmp[0] != '/') {
- ret = KRB5_KT_BADNAME;
- goto out;
- }
-
- tmp = talloc_asprintf(mem_ctx, "%s:%s", pragma, tmp);
- if (!tmp) {
- ret = ENOMEM;
- goto out;
- }
- break;
- }
- }
-
- if (!found_valid_name) {
- ret = KRB5_KT_UNKNOWN_TYPE;
- goto out;
- }
-
- resolve:
- DEBUG(10,("smb_krb5_open_keytab: resolving: %s\n", tmp));
- ret = krb5_kt_resolve(context, tmp, keytab);
-
- out:
- TALLOC_FREE(mem_ctx);
- return ret;
-}
-
#else /* HAVE_KRB5 */
/* this saves a few linking headaches */
int cli_krb5_get_ticket(const char *principal, time_t time_offset,
diff --git a/source/libsmb/clilist.c b/source/libsmb/clilist.c
index 8290a577422..3e76cd47754 100644
--- a/source/libsmb/clilist.c
+++ b/source/libsmb/clilist.c
@@ -418,7 +418,7 @@ int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,2,0,True);
+ set_message(cli->outbuf,2,0,True);
SCVAL(cli->outbuf,smb_com,SMBsearch);
@@ -475,7 +475,7 @@ int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,2,0,True);
+ set_message(cli->outbuf,2,0,True);
SCVAL(cli->outbuf,smb_com,SMBfclose);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
diff --git a/source/libsmb/climessage.c b/source/libsmb/climessage.c
index 6850c4b8dff..1aa659c1ba3 100644
--- a/source/libsmb/climessage.c
+++ b/source/libsmb/climessage.c
@@ -30,7 +30,7 @@ int cli_message_start_build(struct cli_state *cli, char *host, char *username)
/* construct a SMBsendstrt command */
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,0,0,True);
+ set_message(cli->outbuf,0,0,True);
SCVAL(cli->outbuf,smb_com,SMBsendstrt);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
@@ -75,7 +75,7 @@ int cli_message_text_build(struct cli_state *cli, char *msg, int len, int grp)
char *p;
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,1,0,True);
+ set_message(cli->outbuf,1,0,True);
SCVAL(cli->outbuf,smb_com,SMBsendtxt);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
@@ -125,7 +125,7 @@ int cli_message_end_build(struct cli_state *cli, int grp)
char *p;
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,1,0,True);
+ set_message(cli->outbuf,1,0,True);
SCVAL(cli->outbuf,smb_com,SMBsendend);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
diff --git a/source/libsmb/clioplock.c b/source/libsmb/clioplock.c
index c08bde02480..037d7147dbb 100644
--- a/source/libsmb/clioplock.c
+++ b/source/libsmb/clioplock.c
@@ -32,7 +32,7 @@ BOOL cli_oplock_ack(struct cli_state *cli, int fnum, unsigned char level)
cli->outbuf = buf;
memset(buf,'\0',smb_size);
- set_message(NULL,buf,8,0,True);
+ set_message(buf,8,0,True);
SCVAL(buf,smb_com,SMBlockingX);
SSVAL(buf,smb_tid, cli->cnum);
diff --git a/source/libsmb/cliprint.c b/source/libsmb/cliprint.c
index b09fb38906f..cb04e0ddcc7 100644
--- a/source/libsmb/cliprint.c
+++ b/source/libsmb/cliprint.c
@@ -194,7 +194,7 @@ int cli_spl_open(struct cli_state *cli, const char *fname, int flags, int share_
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,15,0,True);
+ set_message(cli->outbuf,15,0,True);
SCVAL(cli->outbuf,smb_com,SMBsplopen);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -241,7 +241,7 @@ BOOL cli_spl_close(struct cli_state *cli, int fnum)
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,3,0,True);
+ set_message(cli->outbuf,3,0,True);
SCVAL(cli->outbuf,smb_com,SMBsplclose);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
diff --git a/source/libsmb/cliquota.c b/source/libsmb/cliquota.c
index 8bba453d526..2a47ae24632 100644
--- a/source/libsmb/cliquota.c
+++ b/source/libsmb/cliquota.c
@@ -54,9 +54,8 @@ static BOOL parse_user_quota_record(const char *rdata, unsigned int rdata_count,
ZERO_STRUCT(qt);
- if (!rdata||!offset||!pqt) {
- smb_panic("parse_quota_record: called with NULL POINTER!");
- }
+ if (!rdata||!offset||!pqt)
+ smb_panic("parse_quota_record: called with NULL POINTER!\n");
if (rdata_count < 40) {
return False;
@@ -139,9 +138,8 @@ BOOL cli_get_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUC
unsigned int sid_len;
unsigned int offset;
- if (!cli||!pqt) {
+ if (!cli||!pqt)
smb_panic("cli_get_user_quota() called with NULL Pointer!");
- }
setup = NT_TRANSACT_GET_USER_QUOTA;
@@ -206,9 +204,8 @@ BOOL cli_set_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUC
unsigned int sid_len;
memset(data,'\0',112);
- if (!cli||!pqt) {
+ if (!cli||!pqt)
smb_panic("cli_set_user_quota() called with NULL Pointer!");
- }
setup = NT_TRANSACT_SET_USER_QUOTA;
@@ -268,9 +265,8 @@ BOOL cli_list_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_LIST
SMB_NTQUOTA_STRUCT qt;
SMB_NTQUOTA_LIST *tmp_list_ent;
- if (!cli||!pqt_list) {
+ if (!cli||!pqt_list)
smb_panic("cli_list_user_quota() called with NULL Pointer!");
- }
setup = NT_TRANSACT_GET_USER_QUOTA;
@@ -423,9 +419,8 @@ BOOL cli_get_fs_quota_info(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_ST
SMB_NTQUOTA_STRUCT qt;
ZERO_STRUCT(qt);
- if (!cli||!pqt) {
+ if (!cli||!pqt)
smb_panic("cli_get_fs_quota_info() called with NULL Pointer!");
- }
setup = TRANSACT2_QFSINFO;
@@ -512,9 +507,8 @@ BOOL cli_set_fs_quota_info(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_ST
ZERO_STRUCT(qt);
memset(data,'\0',48);
- if (!cli||!pqt) {
+ if (!cli||!pqt)
smb_panic("cli_set_fs_quota_info() called with NULL Pointer!");
- }
setup = TRANSACT2_SETFSINFO;
@@ -583,9 +577,8 @@ static char *quota_str_static(SMB_BIG_UINT val, BOOL special, BOOL _numeric)
void dump_ntquota(SMB_NTQUOTA_STRUCT *qt, BOOL _verbose, BOOL _numeric, void (*_sidtostring)(fstring str, DOM_SID *sid, BOOL _numeric))
{
- if (!qt) {
+ if (!qt)
smb_panic("dump_ntquota() called with NULL pointer");
- }
switch (qt->qtype) {
case SMB_USER_FS_QUOTA_TYPE:
diff --git a/source/libsmb/clirap.c b/source/libsmb/clirap.c
index 58911203236..6008dfbe934 100644
--- a/source/libsmb/clirap.c
+++ b/source/libsmb/clirap.c
@@ -334,7 +334,7 @@ BOOL cli_oem_change_password(struct cli_state *cli, const char *user, const char
#ifdef DEBUG_PASSWORD
DEBUG(100,("make_oem_passwd_hash\n"));
- dump_data(100, data, 516);
+ dump_data(100, (char *)data, 516);
#endif
SamOEMhash( (unsigned char *)data, (unsigned char *)old_pw_hash, 516);
diff --git a/source/libsmb/clireadwrite.c b/source/libsmb/clireadwrite.c
index c31d417fbd3..dd7ddcebb55 100644
--- a/source/libsmb/clireadwrite.c
+++ b/source/libsmb/clireadwrite.c
@@ -35,7 +35,7 @@ static BOOL cli_issue_read(struct cli_state *cli, int fnum, off_t offset,
if ((SMB_BIG_UINT)offset >> 32)
bigoffset = True;
- set_message(NULL,cli->outbuf,bigoffset ? 12 : 10,0,True);
+ set_message(cli->outbuf,bigoffset ? 12 : 10,0,True);
SCVAL(cli->outbuf,smb_com,SMBreadX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -46,7 +46,7 @@ static BOOL cli_issue_read(struct cli_state *cli, int fnum, off_t offset,
SIVAL(cli->outbuf,smb_vwv3,offset);
SSVAL(cli->outbuf,smb_vwv5,size);
SSVAL(cli->outbuf,smb_vwv6,size);
- SSVAL(cli->outbuf,smb_vwv7,(size >> 16));
+ SSVAL(cli->outbuf,smb_vwv7,((size >> 16) & 1));
SSVAL(cli->outbuf,smb_mid,cli->mid + i);
if (bigoffset) {
@@ -63,11 +63,9 @@ static BOOL cli_issue_read(struct cli_state *cli, int fnum, off_t offset,
ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_t size)
{
char *p;
- size_t size2;
- size_t readsize;
+ int size2;
+ int readsize;
ssize_t total = 0;
- /* We can only do direct reads if not signing. */
- BOOL direct_reads = !client_is_signing_on(cli);
if (size == 0)
return 0;
@@ -77,11 +75,7 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_
* rounded down to a multiple of 1024.
*/
- if (client_is_signing_on(cli) == False &&
- cli_encryption_on(cli) == False &&
- (cli->posix_capabilities & CIFS_UNIX_LARGE_READ_CAP)) {
- readsize = CLI_SAMBA_MAX_POSIX_LARGE_READX_SIZE;
- } else if (cli->capabilities & CAP_LARGE_READX) {
+ if (cli->capabilities & CAP_LARGE_READX) {
if (cli->is_samba) {
readsize = CLI_SAMBA_MAX_LARGE_READX_SIZE;
} else {
@@ -99,13 +93,8 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_
if (!cli_issue_read(cli, fnum, offset, readsize, 0))
return -1;
- if (direct_reads) {
- if (!cli_receive_smb_readX_header(cli))
- return -1;
- } else {
- if (!cli_receive_smb(cli))
- return -1;
- }
+ if (!cli_receive_smb(cli))
+ return -1;
/* Check for error. Make sure to check for DOS and NT
errors. */
@@ -136,7 +125,7 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_
}
size2 = SVAL(cli->inbuf, smb_vwv5);
- size2 |= (((unsigned int)(SVAL(cli->inbuf, smb_vwv7))) << 16);
+ size2 |= (((unsigned int)(SVAL(cli->inbuf, smb_vwv7) & 1)) << 16);
if (size2 > readsize) {
DEBUG(5,("server returned more than we wanted!\n"));
@@ -146,29 +135,10 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_
return -1;
}
- if (!direct_reads) {
- /* Copy data into buffer */
- p = smb_base(cli->inbuf) + SVAL(cli->inbuf,smb_vwv6);
- memcpy(buf + total, p, size2);
- } else {
- /* Ensure the remaining data matches the return size. */
- ssize_t toread = smb_len_large(cli->inbuf) - SVAL(cli->inbuf,smb_vwv6);
-
- /* Ensure the size is correct. */
- if (toread != size2) {
- DEBUG(5,("direct read logic fail toread (%d) != size2 (%u)\n",
- (int)toread, (unsigned int)size2 ));
- return -1;
- }
+ /* Copy data into buffer */
- /* Read data directly into buffer */
- toread = cli_receive_smb_data(cli,buf+total,size2);
- if (toread != size2) {
- DEBUG(5,("direct read read failure toread (%d) != size2 (%u)\n",
- (int)toread, (unsigned int)size2 ));
- return -1;
- }
- }
+ p = smb_base(cli->inbuf) + SVAL(cli->inbuf,smb_vwv6);
+ memcpy(buf + total, p, size2);
total += size2;
offset += size2;
@@ -206,7 +176,7 @@ static BOOL cli_issue_readraw(struct cli_state *cli, int fnum, off_t offset,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,10,0,True);
+ set_message(cli->outbuf,10,0,True);
SCVAL(cli->outbuf,smb_com,SMBreadbraw);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -315,9 +285,9 @@ static BOOL cli_issue_write(struct cli_state *cli, int fnum, off_t offset,
}
if (large_writex)
- set_message(NULL,cli->outbuf,14,0,True);
+ set_message(cli->outbuf,14,0,True);
else
- set_message(NULL,cli->outbuf,12,0,True);
+ set_message(cli->outbuf,12,0,True);
SCVAL(cli->outbuf,smb_com,SMBwriteX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -429,7 +399,7 @@ ssize_t cli_smbwrite(struct cli_state *cli,
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,5, 0,True);
+ set_message(cli->outbuf,5, 0,True);
SCVAL(cli->outbuf,smb_com,SMBwrite);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
diff --git a/source/libsmb/clisecdesc.c b/source/libsmb/clisecdesc.c
index e55be48e940..24757434794 100644
--- a/source/libsmb/clisecdesc.c
+++ b/source/libsmb/clisecdesc.c
@@ -107,11 +107,11 @@ BOOL cli_set_secdesc(struct cli_state *cli, int fnum, SEC_DESC *sd)
SIVAL(param, 0, fnum);
- if (sd->dacl)
+ if (sd->off_dacl)
sec_info |= DACL_SECURITY_INFORMATION;
- if (sd->owner_sid)
+ if (sd->off_owner_sid)
sec_info |= OWNER_SECURITY_INFORMATION;
- if (sd->group_sid)
+ if (sd->off_grp_sid)
sec_info |= GROUP_SECURITY_INFORMATION;
SSVAL(param, 4, sec_info);
diff --git a/source/libsmb/clispnego.c b/source/libsmb/clispnego.c
index 5ea5cf3011d..6aca217e259 100644
--- a/source/libsmb/clispnego.c
+++ b/source/libsmb/clispnego.c
@@ -348,7 +348,7 @@ int spnego_gen_negTokenTarg(const char *principal, int time_offset,
{
int retval;
DATA_BLOB tkt, tkt_wrapped;
- const char *krb_mechs[] = {OID_KERBEROS5_OLD, OID_KERBEROS5, OID_NTLMSSP, NULL};
+ const char *krb_mechs[] = {OID_KERBEROS5_OLD, OID_NTLMSSP, NULL};
/* get a kerberos ticket for the service and extract the session key */
retval = cli_krb5_get_ticket(principal, time_offset,
@@ -518,10 +518,9 @@ DATA_BLOB spnego_gen_auth_response(DATA_BLOB *reply, NTSTATUS nt_status,
}
/*
- parse a SPNEGO auth packet. This contains the encrypted passwords
+ parse a SPNEGO NTLMSSP auth packet. This contains the encrypted passwords
*/
-BOOL spnego_parse_auth_response(DATA_BLOB blob, NTSTATUS nt_status,
- const char *mechOID,
+BOOL spnego_parse_auth_response(DATA_BLOB blob, NTSTATUS nt_status,
DATA_BLOB *auth)
{
ASN1_DATA data;
@@ -542,20 +541,14 @@ BOOL spnego_parse_auth_response(DATA_BLOB blob, NTSTATUS nt_status,
asn1_check_enumerated(&data, negResult);
asn1_end_tag(&data);
- *auth = data_blob_null;
-
- if (asn1_tag_remaining(&data)) {
+ if (negResult == SPNEGO_NEG_RESULT_INCOMPLETE) {
asn1_start_tag(&data,ASN1_CONTEXT(1));
- asn1_check_OID(&data, mechOID);
+ asn1_check_OID(&data, OID_NTLMSSP);
+ asn1_end_tag(&data);
+
+ asn1_start_tag(&data,ASN1_CONTEXT(2));
+ asn1_read_OctetString(&data, auth);
asn1_end_tag(&data);
-
- if (asn1_tag_remaining(&data)) {
- asn1_start_tag(&data,ASN1_CONTEXT(2));
- asn1_read_OctetString(&data, auth);
- asn1_end_tag(&data);
- }
- } else if (negResult == SPNEGO_NEG_RESULT_INCOMPLETE) {
- data.has_error = 1;
}
asn1_end_tag(&data);
diff --git a/source/libsmb/clistr.c b/source/libsmb/clistr.c
index 4d18434ff95..6191f99ea96 100644
--- a/source/libsmb/clistr.c
+++ b/source/libsmb/clistr.c
@@ -43,9 +43,7 @@ size_t clistr_pull_fn(const char *function, unsigned int line,
int dest_len, int src_len,
int flags)
{
- return pull_string_fn(function, line, cli->inbuf,
- SVAL(cli->inbuf, smb_flg2), dest, src, dest_len,
- src_len, flags);
+ return pull_string_fn(function, line, cli->inbuf, dest, src, dest_len, src_len, flags);
}
diff --git a/source/libsmb/clitrans.c b/source/libsmb/clitrans.c
index d7492b31c35..f212f499940 100644
--- a/source/libsmb/clitrans.c
+++ b/source/libsmb/clitrans.c
@@ -44,7 +44,7 @@ BOOL cli_send_trans(struct cli_state *cli, int trans,
this_ldata = MIN(ldata,cli->max_xmit - (500+lsetup*2+this_lparam));
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,14+lsetup,0,True);
+ set_message(cli->outbuf,14+lsetup,0,True);
SCVAL(cli->outbuf,smb_com,trans);
SSVAL(cli->outbuf,smb_tid, cli->cnum);
cli_setup_packet(cli);
@@ -113,7 +113,7 @@ BOOL cli_send_trans(struct cli_state *cli, int trans,
this_lparam = MIN(lparam-tot_param,cli->max_xmit - 500); /* hack */
this_ldata = MIN(ldata-tot_data,cli->max_xmit - (500+this_lparam));
- set_message(NULL,cli->outbuf,trans==SMBtrans?8:9,0,True);
+ set_message(cli->outbuf,trans==SMBtrans?8:9,0,True);
SCVAL(cli->outbuf,smb_com,(trans==SMBtrans ? SMBtranss : SMBtranss2));
outparam = smb_buf(cli->outbuf);
@@ -194,22 +194,13 @@ BOOL cli_receive_trans(struct cli_state *cli,int trans,
* to a trans call. This is not an error and should not
* be treated as such. Note that STATUS_NO_MORE_FILES is
* returned when a trans2 findfirst/next finishes.
- * When setting up an encrypted transport we can also
- * see NT_STATUS_MORE_PROCESSING_REQUIRED here.
- *
- * Vista returns NT_STATUS_INACCESSIBLE_SYSTEM_SHORTCUT if the folder
- * "<share>/Users/All Users" is enumerated. This is a special pseudo
- * folder, and the response does not have parameters (nor a parameter
- * length).
*/
status = cli_nt_error(cli);
- if (!NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- if (NT_STATUS_IS_ERR(status) ||
- NT_STATUS_EQUAL(status,STATUS_NO_MORE_FILES) ||
- NT_STATUS_EQUAL(status,NT_STATUS_INACCESSIBLE_SYSTEM_SHORTCUT)) {
- goto out;
- }
+ if (NT_STATUS_IS_ERR(status) ||
+ NT_STATUS_EQUAL(status,STATUS_NO_MORE_FILES) ||
+ NT_STATUS_EQUAL(status,STATUS_INACCESSIBLE_SYSTEM_SHORTCUT)) {
+ goto out;
}
/* parse out the lengths */
@@ -314,10 +305,8 @@ BOOL cli_receive_trans(struct cli_state *cli,int trans,
CVAL(cli->inbuf,smb_com)));
goto out;
}
- if (!NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- if (NT_STATUS_IS_ERR(cli_nt_error(cli))) {
- goto out;
- }
+ if (NT_STATUS_IS_ERR(cli_nt_error(cli))) {
+ goto out;
}
/* parse out the total lengths again - they can shrink! */
@@ -359,7 +348,7 @@ BOOL cli_send_nt_trans(struct cli_state *cli,
this_ldata = MIN(ldata,cli->max_xmit - (500+lsetup*2+this_lparam));
memset(cli->outbuf,'\0',smb_size);
- set_message(NULL,cli->outbuf,19+lsetup,0,True);
+ set_message(cli->outbuf,19+lsetup,0,True);
SCVAL(cli->outbuf,smb_com,SMBnttrans);
SSVAL(cli->outbuf,smb_tid, cli->cnum);
cli_setup_packet(cli);
@@ -420,7 +409,7 @@ BOOL cli_send_nt_trans(struct cli_state *cli,
this_lparam = MIN(lparam-tot_param,cli->max_xmit - 500); /* hack */
this_ldata = MIN(ldata-tot_data,cli->max_xmit - (500+this_lparam));
- set_message(NULL,cli->outbuf,18,0,True);
+ set_message(cli->outbuf,18,0,True);
SCVAL(cli->outbuf,smb_com,SMBnttranss);
/* XXX - these should probably be aligned */
diff --git a/source/libsmb/doserr.c b/source/libsmb/doserr.c
index 7e386e9606b..022d9b62473 100644
--- a/source/libsmb/doserr.c
+++ b/source/libsmb/doserr.c
@@ -70,7 +70,6 @@ werror_code_struct dos_errs[] =
{ "WERR_DFS_CANT_CREATE_JUNCT", WERR_DFS_CANT_CREATE_JUNCT },
{ "WERR_MACHINE_LOCKED", WERR_MACHINE_LOCKED },
{ "WERR_DOMAIN_CONTROLLER_NOT_FOUND", WERR_DOMAIN_CONTROLLER_NOT_FOUND },
- { "WERR_DEVICE_NOT_AVAILABLE", WERR_DEVICE_NOT_AVAILABLE },
{ "WERR_LOGON_FAILURE", WERR_LOGON_FAILURE },
{ "WERR_NO_SUCH_DOMAIN", WERR_NO_SUCH_DOMAIN },
{ "WERR_INVALID_SECURITY_DESCRIPTOR", WERR_INVALID_SECURITY_DESCRIPTOR },
diff --git a/source/libsmb/errormap.c b/source/libsmb/errormap.c
index bb4154ee956..35da0f962be 100644
--- a/source/libsmb/errormap.c
+++ b/source/libsmb/errormap.c
@@ -4,7 +4,6 @@
* Copyright (C) Andrew Tridgell 2001
* Copyright (C) Andrew Bartlett 2001
* Copyright (C) Tim Potter 2000
- * Copyright (C) Jeremy Allison 2007
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1505,107 +1504,96 @@ WERROR ntstatus_to_werror(NTSTATUS error)
return W_ERROR(NT_STATUS_V(error) & 0xffff);
}
-#if defined(HAVE_GSSAPI)
-/*******************************************************************************
- Map between gssapi errors and NT status. I made these up :-(. JRA.
-*******************************************************************************/
+/* Mapping between Unix, DOS and NT error numbers */
-static const struct {
- unsigned long gss_err;
- NTSTATUS ntstatus;
-} gss_to_ntstatus_errormap[] = {
-#if defined(GSS_S_CALL_INACCESSIBLE_READ)
- {GSS_S_CALL_INACCESSIBLE_READ, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_CALL_INACCESSIBLE_WRITE)
- {GSS_S_CALL_INACCESSIBLE_WRITE, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_CALL_BAD_STRUCTURE)
- {GSS_S_CALL_BAD_STRUCTURE, NT_STATUS_INVALID_PARAMETER},
+const struct unix_error_map unix_dos_nt_errmap[] = {
+ { EPERM, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED },
+ { EACCES, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED },
+ { ENOENT, ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND },
+ { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_NOT_A_DIRECTORY },
+ { EIO, ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR },
+ { EBADF, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE },
+ { EINVAL, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE },
+ { EEXIST, ERRDOS, ERRfilexists, NT_STATUS_OBJECT_NAME_COLLISION},
+ { ENFILE, ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES },
+ { EMFILE, ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES },
+ { ENOSPC, ERRHRD, ERRdiskfull, NT_STATUS_DISK_FULL },
+ { ENOMEM, ERRDOS, ERRnomem, NT_STATUS_NO_MEMORY },
+ { EISDIR, ERRDOS, ERRnoaccess, NT_STATUS_FILE_IS_A_DIRECTORY},
+ { EMLINK, ERRDOS, ERRgeneral, NT_STATUS_TOO_MANY_LINKS },
+#ifdef ELOOP
+ { ELOOP, ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND },
#endif
-#if defined(GSS_S_BAD_MECH)
- {GSS_S_BAD_MECH, NT_STATUS_INVALID_PARAMETER},
+#ifdef EDQUOT
+ { EDQUOT, ERRHRD, ERRdiskfull, NT_STATUS_DISK_FULL }, /* Windows apps need this, not NT_STATUS_QUOTA_EXCEEDED */
#endif
-#if defined(GSS_S_BAD_NAME)
- {GSS_S_BAD_NAME, NT_STATUS_INVALID_ACCOUNT_NAME},
+#ifdef ENOTEMPTY
+ { ENOTEMPTY, ERRDOS, ERRnoaccess, NT_STATUS_DIRECTORY_NOT_EMPTY },
#endif
-#if defined(GSS_S_BAD_NAMETYPE)
- {GSS_S_BAD_NAMETYPE, NT_STATUS_INVALID_PARAMETER},
+#ifdef EXDEV
+ { EXDEV, ERRDOS, ERRdiffdevice, NT_STATUS_NOT_SAME_DEVICE },
#endif
-#if defined(GSS_S_BAD_BINDINGS)
- {GSS_S_BAD_BINDINGS, NT_STATUS_INVALID_PARAMETER},
+#ifdef EROFS
+ { EROFS, ERRHRD, ERRnowrite, NT_STATUS_ACCESS_DENIED },
#endif
-#if defined(GSS_S_BAD_STATUS)
- {GSS_S_BAD_STATUS, NT_STATUS_UNSUCCESSFUL},
+#ifdef ENAMETOOLONG
+ { ENAMETOOLONG, ERRDOS, 206, NT_STATUS_OBJECT_NAME_INVALID },
#endif
-#if defined(GSS_S_BAD_SIG)
- {GSS_S_BAD_SIG, NT_STATUS_ACCESS_DENIED},
+#ifdef EFBIG
+ { EFBIG, ERRHRD, ERRdiskfull, NT_STATUS_DISK_FULL },
#endif
-#if defined(GSS_S_NO_CRED)
- {GSS_S_NO_CRED, NT_STATUS_ACCESS_DENIED},
+#ifdef ENOBUFS
+ { ENOBUFS, ERRDOS, ERRnomem, NT_STATUS_INSUFFICIENT_RESOURCES },
#endif
-#if defined(GSS_S_NO_CONTEXT)
- {GSS_S_NO_CONTEXT, NT_STATUS_ACCESS_DENIED},
+ { EAGAIN, ERRDOS, 111, NT_STATUS_NETWORK_BUSY },
+#ifdef EADDRINUSE
+ { EADDRINUSE, ERRDOS, 52, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED},
#endif
-#if defined(GSS_S_DEFECTIVE_TOKEN)
- {GSS_S_DEFECTIVE_TOKEN, NT_STATUS_ACCESS_DENIED},
+#ifdef ENETUNREACH
+ { ENETUNREACH, ERRHRD, ERRgeneral, NT_STATUS_NETWORK_UNREACHABLE},
#endif
-#if defined(GSS_S_DEFECTIVE_CREDENTIAL)
- {GSS_S_DEFECTIVE_CREDENTIAL, NT_STATUS_ACCESS_DENIED},
+#ifdef EHOSTUNREACH
+ { EHOSTUNREACH, ERRHRD, ERRgeneral, NT_STATUS_HOST_UNREACHABLE},
#endif
-#if defined(GSS_S_CREDENTIALS_EXPIRED)
- {GSS_S_CREDENTIALS_EXPIRED, NT_STATUS_PASSWORD_EXPIRED},
+#ifdef ECONNREFUSED
+ { ECONNREFUSED, ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_REFUSED},
#endif
-#if defined(GSS_S_CONTEXT_EXPIRED)
- {GSS_S_CONTEXT_EXPIRED, NT_STATUS_PASSWORD_EXPIRED},
+#ifdef ETIMEDOUT
+ { ETIMEDOUT, ERRHRD, 121, NT_STATUS_IO_TIMEOUT},
#endif
-#if defined(GSS_S_BAD_QOP)
- {GSS_S_BAD_QOP, NT_STATUS_ACCESS_DENIED},
+#ifdef ECONNABORTED
+ { ECONNABORTED, ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ABORTED},
#endif
-#if defined(GSS_S_UNAUTHORIZED)
- {GSS_S_UNAUTHORIZED, NT_STATUS_ACCESS_DENIED},
+#ifdef ENODEV
+ { ENODEV, ERRDOS, 55, NT_STATUS_DEVICE_DOES_NOT_EXIST},
#endif
-#if defined(GSS_S_UNAVAILABLE)
- {GSS_S_UNAVAILABLE, NT_STATUS_UNSUCCESSFUL},
+#ifdef EPIPE
+ {EPIPE, ERRDOS, 109, NT_STATUS_PIPE_BROKEN},
#endif
-#if defined(GSS_S_DUPLICATE_ELEMENT)
- {GSS_S_DUPLICATE_ELEMENT, NT_STATUS_INVALID_PARAMETER},
+#ifdef EWOULDBLOCK
+ { EWOULDBLOCK, ERRDOS, 111, NT_STATUS_NETWORK_BUSY },
#endif
-#if defined(GSS_S_NAME_NOT_MN)
- {GSS_S_NAME_NOT_MN, NT_STATUS_INVALID_PARAMETER},
-#endif
- { 0, NT_STATUS_OK }
+ { 0, 0, 0, NT_STATUS_OK }
};
/*********************************************************************
- Map an NT error code from a gssapi error code.
+ Map an NT error code from a Unix error code.
*********************************************************************/
-NTSTATUS map_nt_error_from_gss(uint32 gss_maj, uint32 minor)
+NTSTATUS map_nt_error_from_unix(int unix_error)
{
int i = 0;
- if (gss_maj == GSS_S_COMPLETE) {
+ if (unix_error == 0)
return NT_STATUS_OK;
- }
- if (gss_maj == GSS_S_CONTINUE_NEEDED) {
- return NT_STATUS_MORE_PROCESSING_REQUIRED;
- }
-
- if (gss_maj == GSS_S_FAILURE) {
- return map_nt_error_from_unix((int)minor);
- }
-
/* Look through list */
- while(gss_to_ntstatus_errormap[i].gss_err != 0) {
- if (gss_to_ntstatus_errormap[i].gss_err == gss_maj) {
- return gss_to_ntstatus_errormap[i].ntstatus;
- }
+ while(unix_dos_nt_errmap[i].unix_error != 0) {
+ if (unix_dos_nt_errmap[i].unix_error == unix_error)
+ return unix_dos_nt_errmap[i].nt_error;
i++;
}
/* Default return */
return NT_STATUS_ACCESS_DENIED;
}
-#endif
diff --git a/source/libsmb/libsmb_compat.c b/source/libsmb/libsmb_compat.c
index cfd5948e269..82b02cdf67e 100644
--- a/source/libsmb/libsmb_compat.c
+++ b/source/libsmb/libsmb_compat.c
@@ -157,13 +157,13 @@ int smbc_open(const char *furl, int flags, mode_t mode)
SMBCFILE * file;
int fd;
- file = statcont->open(statcont, furl, flags, mode);
+ file = (statcont->open)(statcont, furl, flags, mode);
if (!file)
return -1;
fd = add_fd(file);
if (fd == -1)
- statcont->close_fn(statcont, file);
+ (statcont->close_fn)(statcont, file);
return fd;
}
@@ -173,15 +173,15 @@ int smbc_creat(const char *furl, mode_t mode)
SMBCFILE * file;
int fd;
- file = statcont->creat(statcont, furl, mode);
+ file = (statcont->creat)(statcont, furl, mode);
if (!file)
return -1;
fd = add_fd(file);
if (fd == -1) {
/* Hmm... should we delete the file too ? I guess we could try */
- statcont->close_fn(statcont, file);
- statcont->unlink(statcont, furl);
+ (statcont->close_fn)(statcont, file);
+ (statcont->unlink)(statcont, furl);
}
return fd;
}
@@ -190,36 +190,36 @@ int smbc_creat(const char *furl, mode_t mode)
ssize_t smbc_read(int fd, void *buf, size_t bufsize)
{
SMBCFILE * file = find_fd(fd);
- return statcont->read(statcont, file, buf, bufsize);
+ return (statcont->read)(statcont, file, buf, bufsize);
}
ssize_t smbc_write(int fd, void *buf, size_t bufsize)
{
SMBCFILE * file = find_fd(fd);
- return statcont->write(statcont, file, buf, bufsize);
+ return (statcont->write)(statcont, file, buf, bufsize);
}
off_t smbc_lseek(int fd, off_t offset, int whence)
{
SMBCFILE * file = find_fd(fd);
- return statcont->lseek(statcont, file, offset, whence);
+ return (statcont->lseek)(statcont, file, offset, whence);
}
int smbc_close(int fd)
{
SMBCFILE * file = find_fd(fd);
del_fd(fd);
- return statcont->close_fn(statcont, file);
+ return (statcont->close_fn)(statcont, file);
}
int smbc_unlink(const char *fname)
{
- return statcont->unlink(statcont, fname);
+ return (statcont->unlink)(statcont, fname);
}
int smbc_rename(const char *ourl, const char *nurl)
{
- return statcont->rename(statcont, ourl, statcont, nurl);
+ return (statcont->rename)(statcont, ourl, statcont, nurl);
}
int smbc_opendir(const char *durl)
@@ -227,13 +227,13 @@ int smbc_opendir(const char *durl)
SMBCFILE * file;
int fd;
- file = statcont->opendir(statcont, durl);
+ file = (statcont->opendir)(statcont, durl);
if (!file)
return -1;
fd = add_fd(file);
if (fd == -1)
- statcont->closedir(statcont, file);
+ (statcont->closedir)(statcont, file);
return fd;
}
@@ -242,62 +242,62 @@ int smbc_closedir(int dh)
{
SMBCFILE * file = find_fd(dh);
del_fd(dh);
- return statcont->closedir(statcont, file);
+ return (statcont->closedir)(statcont, file);
}
int smbc_getdents(unsigned int dh, struct smbc_dirent *dirp, int count)
{
SMBCFILE * file = find_fd(dh);
- return statcont->getdents(statcont, file,dirp, count);
+ return (statcont->getdents)(statcont, file,dirp, count);
}
struct smbc_dirent* smbc_readdir(unsigned int dh)
{
SMBCFILE * file = find_fd(dh);
- return statcont->readdir(statcont, file);
+ return (statcont->readdir)(statcont, file);
}
off_t smbc_telldir(int dh)
{
SMBCFILE * file = find_fd(dh);
- return statcont->telldir(statcont, file);
+ return (statcont->telldir)(statcont, file);
}
int smbc_lseekdir(int fd, off_t offset)
{
SMBCFILE * file = find_fd(fd);
- return statcont->lseekdir(statcont, file, offset);
+ return (statcont->lseekdir)(statcont, file, offset);
}
int smbc_mkdir(const char *durl, mode_t mode)
{
- return statcont->mkdir(statcont, durl, mode);
+ return (statcont->mkdir)(statcont, durl, mode);
}
int smbc_rmdir(const char *durl)
{
- return statcont->rmdir(statcont, durl);
+ return (statcont->rmdir)(statcont, durl);
}
int smbc_stat(const char *url, struct stat *st)
{
- return statcont->stat(statcont, url, st);
+ return (statcont->stat)(statcont, url, st);
}
int smbc_fstat(int fd, struct stat *st)
{
SMBCFILE * file = find_fd(fd);
- return statcont->fstat(statcont, file, st);
+ return (statcont->fstat)(statcont, file, st);
}
int smbc_chmod(const char *url, mode_t mode)
{
- return statcont->chmod(statcont, url, mode);
+ return (statcont->chmod)(statcont, url, mode);
}
int smbc_utimes(const char *fname, struct timeval *tbuf)
{
- return statcont->utimes(statcont, fname, tbuf);
+ return (statcont->utimes)(statcont, fname, tbuf);
}
#ifdef HAVE_UTIME_H
@@ -306,13 +306,13 @@ int smbc_utime(const char *fname, struct utimbuf *utbuf)
struct timeval tv[2];
if (utbuf == NULL)
- return statcont->utimes(statcont, fname, NULL);
+ return (statcont->utimes)(statcont, fname, NULL);
tv[0].tv_sec = utbuf->actime;
tv[1].tv_sec = utbuf->modtime;
tv[0].tv_usec = tv[1].tv_usec = 0;
- return statcont->utimes(statcont, fname, tv);
+ return (statcont->utimes)(statcont, fname, tv);
}
#endif
@@ -322,7 +322,7 @@ int smbc_setxattr(const char *fname,
size_t size,
int flags)
{
- return statcont->setxattr(statcont, fname, name, value, size, flags);
+ return (statcont->setxattr)(statcont, fname, name, value, size, flags);
}
int smbc_lsetxattr(const char *fname,
@@ -331,7 +331,7 @@ int smbc_lsetxattr(const char *fname,
size_t size,
int flags)
{
- return statcont->setxattr(statcont, fname, name, value, size, flags);
+ return (statcont->setxattr)(statcont, fname, name, value, size, flags);
}
int smbc_fsetxattr(int fd,
@@ -345,8 +345,8 @@ int smbc_fsetxattr(int fd,
errno = EBADF;
return -1;
}
- return statcont->setxattr(statcont, file->fname,
- name, value, size, flags);
+ return (statcont->setxattr)(statcont, file->fname,
+ name, value, size, flags);
}
int smbc_getxattr(const char *fname,
@@ -354,7 +354,7 @@ int smbc_getxattr(const char *fname,
const void *value,
size_t size)
{
- return statcont->getxattr(statcont, fname, name, value, size);
+ return (statcont->getxattr)(statcont, fname, name, value, size);
}
int smbc_lgetxattr(const char *fname,
@@ -362,7 +362,7 @@ int smbc_lgetxattr(const char *fname,
const void *value,
size_t size)
{
- return statcont->getxattr(statcont, fname, name, value, size);
+ return (statcont->getxattr)(statcont, fname, name, value, size);
}
int smbc_fgetxattr(int fd,
@@ -375,19 +375,19 @@ int smbc_fgetxattr(int fd,
errno = EBADF;
return -1;
}
- return statcont->getxattr(statcont, file->fname, name, value, size);
+ return (statcont->getxattr)(statcont, file->fname, name, value, size);
}
int smbc_removexattr(const char *fname,
const char *name)
{
- return statcont->removexattr(statcont, fname, name);
+ return (statcont->removexattr)(statcont, fname, name);
}
int smbc_lremovexattr(const char *fname,
const char *name)
{
- return statcont->removexattr(statcont, fname, name);
+ return (statcont->removexattr)(statcont, fname, name);
}
int smbc_fremovexattr(int fd,
@@ -398,21 +398,21 @@ int smbc_fremovexattr(int fd,
errno = EBADF;
return -1;
}
- return statcont->removexattr(statcont, file->fname, name);
+ return (statcont->removexattr)(statcont, file->fname, name);
}
int smbc_listxattr(const char *fname,
char *list,
size_t size)
{
- return statcont->listxattr(statcont, fname, list, size);
+ return (statcont->listxattr)(statcont, fname, list, size);
}
int smbc_llistxattr(const char *fname,
char *list,
size_t size)
{
- return statcont->listxattr(statcont, fname, list, size);
+ return (statcont->listxattr)(statcont, fname, list, size);
}
int smbc_flistxattr(int fd,
@@ -424,29 +424,29 @@ int smbc_flistxattr(int fd,
errno = EBADF;
return -1;
}
- return statcont->listxattr(statcont, file->fname, list, size);
+ return (statcont->listxattr)(statcont, file->fname, list, size);
}
int smbc_print_file(const char *fname, const char *printq)
{
- return statcont->print_file(statcont, fname, statcont, printq);
+ return (statcont->print_file)(statcont, fname, statcont, printq);
}
int smbc_open_print_job(const char *fname)
{
- SMBCFILE * file = statcont->open_print_job(statcont, fname);
+ SMBCFILE * file = (statcont->open_print_job)(statcont, fname);
if (!file) return -1;
return file->cli_fd;
}
int smbc_list_print_jobs(const char *purl, smbc_list_print_job_fn fn)
{
- return statcont->list_print_jobs(statcont, purl, fn);
+ return (statcont->list_print_jobs)(statcont, purl, fn);
}
int smbc_unlink_print_job(const char *purl, int id)
{
- return statcont->unlink_print_job(statcont, purl, id);
+ return (statcont->unlink_print_job)(statcont, purl, id);
}
diff --git a/source/libsmb/libsmbclient.c b/source/libsmb/libsmbclient.c
index 550c691a8d0..1633aa469cc 100644
--- a/source/libsmb/libsmbclient.c
+++ b/source/libsmb/libsmbclient.c
@@ -503,30 +503,8 @@ smbc_check_server(SMBCCTX * context,
socklen_t size;
struct sockaddr addr;
- /*
- * Although the use of port 139 is not a guarantee that we're using
- * netbios, we assume so. We don't want to send a keepalive packet if
- * not netbios because it's not valid, and Vista, at least,
- * disconnects the client on such a request.
- */
- if (server->cli->port == 139) {
- /* Assuming netbios. Send a keepalive packet */
- if ( send_keepalive(server->cli->fd) == False ) {
- return 1;
- }
- } else {
- /*
- * Assuming not netbios. Try a different method to detect if
- * the connection is still alive.
- */
- size = sizeof(addr);
- if (getpeername(server->cli->fd, &addr, &size) == -1) {
- return 1;
- }
- }
-
- /* connection is ok */
- return 0;
+ size = sizeof(addr);
+ return (getpeername(server->cli->fd, &addr, &size) == -1);
}
/*
@@ -564,7 +542,7 @@ smbc_remove_unused_server(SMBCCTX * context,
DEBUG(3, ("smbc_remove_usused_server: %p removed.\n", srv));
- context->callbacks.remove_cached_srv_fn(context, srv);
+ (context->callbacks.remove_cached_srv_fn)(context, srv);
SAFE_FREE(srv);
@@ -584,19 +562,19 @@ find_server(SMBCCTX *context,
check_server_cache:
- srv = context->callbacks.get_cached_srv_fn(context, server, share,
- workgroup, username);
+ srv = (context->callbacks.get_cached_srv_fn)(context, server, share,
+ workgroup, username);
if (!auth_called && !srv && (!username[0] || !password[0])) {
if (context->internal->_auth_fn_with_context != NULL) {
- context->internal->_auth_fn_with_context(
+ (context->internal->_auth_fn_with_context)(
context,
server, share,
workgroup, sizeof(fstring),
username, sizeof(fstring),
password, sizeof(fstring));
} else {
- context->callbacks.auth_fn(
+ (context->callbacks.auth_fn)(
server, share,
workgroup, sizeof(fstring),
username, sizeof(fstring),
@@ -614,22 +592,22 @@ find_server(SMBCCTX *context,
}
if (srv) {
- if (context->callbacks.check_server_fn(context, srv)) {
+ if ((context->callbacks.check_server_fn)(context, srv)) {
/*
* This server is no good anymore
* Try to remove it and check for more possible
* servers in the cache
*/
- if (context->callbacks.remove_unused_server_fn(context,
- srv)) {
+ if ((context->callbacks.remove_unused_server_fn)(context,
+ srv)) {
/*
* We could not remove the server completely,
* remove it from the cache so we will not get
* it again. It will be removed when the last
* file/dir is closed.
*/
- context->callbacks.remove_cached_srv_fn(context,
- srv);
+ (context->callbacks.remove_cached_srv_fn)(context,
+ srv);
}
/*
@@ -706,14 +684,14 @@ smbc_server(SMBCCTX *context,
if (srv->cli->cnum == (uint16) -1) {
/* Ensure we have accurate auth info */
if (context->internal->_auth_fn_with_context != NULL) {
- context->internal->_auth_fn_with_context(
+ (context->internal->_auth_fn_with_context)(
context,
server, share,
workgroup, sizeof(fstring),
username, sizeof(fstring),
password, sizeof(fstring));
} else {
- context->callbacks.auth_fn(
+ (context->callbacks.auth_fn)(
server, share,
workgroup, sizeof(fstring),
username, sizeof(fstring),
@@ -726,8 +704,8 @@ smbc_server(SMBCCTX *context,
errno = smbc_errno(context, srv->cli);
cli_shutdown(srv->cli);
srv->cli = NULL;
- context->callbacks.remove_cached_srv_fn(context,
- srv);
+ (context->callbacks.remove_cached_srv_fn)(context,
+ srv);
srv = NULL;
}
@@ -904,7 +882,9 @@ smbc_server(SMBCCTX *context,
/* now add it to the cache (internal or external) */
/* Let the cache function set errno if it wants to */
errno = 0;
- if (context->callbacks.add_cached_srv_fn(context, srv, server, share, workgroup, username)) {
+ if ((context->callbacks.add_cached_srv_fn)(context, srv,
+ server, share,
+ workgroup, username)) {
int saved_errno = errno;
DEBUG(3, (" Failed to add server to cache\n"));
errno = saved_errno;
@@ -963,14 +943,14 @@ smbc_attr_server(SMBCCTX *context,
if (*password == '\0') {
/* ... then retrieve it now. */
if (context->internal->_auth_fn_with_context != NULL) {
- context->internal->_auth_fn_with_context(
+ (context->internal->_auth_fn_with_context)(
context,
server, share,
workgroup, sizeof(fstring),
username, sizeof(fstring),
password, sizeof(fstring));
} else {
- context->callbacks.auth_fn(
+ (context->callbacks.auth_fn)(
server, share,
workgroup, sizeof(fstring),
username, sizeof(fstring),
@@ -1042,11 +1022,11 @@ smbc_attr_server(SMBCCTX *context,
/* now add it to the cache (internal or external) */
errno = 0; /* let cache function set errno if it likes */
- if (context->callbacks.add_cached_srv_fn(context, ipc_srv,
- server,
- "*IPC$",
- workgroup,
- username)) {
+ if ((context->callbacks.add_cached_srv_fn)(context, ipc_srv,
+ server,
+ "*IPC$",
+ workgroup,
+ username)) {
DEBUG(3, (" Failed to add server to cache\n"));
if (errno == 0) {
errno = ENOMEM;
@@ -1209,7 +1189,7 @@ smbc_open_ctx(SMBCCTX *context,
int eno = 0;
eno = smbc_errno(context, srv->cli);
- file = context->opendir(context, fname);
+ file = (context->opendir)(context, fname);
if (!file) errno = eno;
return file;
@@ -1448,7 +1428,7 @@ smbc_close_ctx(SMBCCTX *context,
/* IS a dir ... */
if (!file->file) {
- return context->closedir(context, file);
+ return (context->closedir)(context, file);
}
@@ -1485,7 +1465,7 @@ smbc_close_ctx(SMBCCTX *context,
DLIST_REMOVE(context->internal->_files, file);
SAFE_FREE(file->fname);
SAFE_FREE(file);
- context->callbacks.remove_unused_server_fn(context, srv);
+ (context->callbacks.remove_unused_server_fn)(context, srv);
return -1;
@@ -2198,7 +2178,7 @@ smbc_fstat_ctx(SMBCCTX *context,
if (!file->file) {
- return context->fstatdir(context, file, st);
+ return (context->fstatdir)(context, file, st);
}
@@ -2492,15 +2472,16 @@ net_share_enum_rpc(struct cli_state *cli,
void *state)
{
int i;
- NTSTATUS result;
- uint32 enum_hnd;
+ WERROR result;
+ ENUM_HND enum_hnd;
uint32 info_level = 1;
uint32 preferred_len = 0xffffffff;
- struct srvsvc_NetShareCtr1 ctr1;
- union srvsvc_NetShareCtr ctr;
+ uint32 type;
+ SRV_SHARE_INFO_CTR ctr;
+ fstring name = "";
+ fstring comment = "";
void *mem_ctx;
struct rpc_pipe_client *pipe_hnd;
- uint32 numentries;
NTSTATUS nt_status;
/* Open the server service pipe */
@@ -2518,28 +2499,37 @@ net_share_enum_rpc(struct cli_state *cli,
return -1;
}
- ZERO_STRUCT(ctr1);
- ctr.ctr1 = &ctr1;
-
/* Issue the NetShareEnum RPC call and retrieve the response */
- enum_hnd = 0;
- result = rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, NULL,
- &info_level, &ctr, preferred_len,
- &numentries, &enum_hnd);
+ init_enum_hnd(&enum_hnd, 0);
+ result = rpccli_srvsvc_net_share_enum(pipe_hnd,
+ mem_ctx,
+ info_level,
+ &ctr,
+ preferred_len,
+ &enum_hnd);
/* Was it successful? */
- if (!NT_STATUS_IS_OK(result) || numentries == 0) {
+ if (!W_ERROR_IS_OK(result) || ctr.num_entries == 0) {
/* Nope. Go clean up. */
goto done;
}
/* For each returned entry... */
- for (i = 0; i < numentries; i++) {
+ for (i = 0; i < ctr.num_entries; i++) {
+
+ /* pull out the share name */
+ rpcstr_pull_unistr2_fstring(
+ name, &ctr.share.info1[i].info_1_str.uni_netname);
+
+ /* pull out the share's comment */
+ rpcstr_pull_unistr2_fstring(
+ comment, &ctr.share.info1[i].info_1_str.uni_remark);
+
+ /* Get the type value */
+ type = ctr.share.info1[i].info_1.type;
/* Add this share to the list */
- (*fn)(ctr.ctr1->array[i].name,
- ctr.ctr1->array[i].type,
- ctr.ctr1->array[i].comment, state);
+ (*fn)(name, type, comment, state);
}
done:
@@ -2550,7 +2540,7 @@ done:
TALLOC_FREE(mem_ctx);
/* Tell 'em if it worked */
- return NT_STATUS_IS_OK(result) ? 0 : -1;
+ return W_ERROR_IS_OK(result) ? 0 : -1;
}
@@ -2957,20 +2947,22 @@ smbc_opendir_ctx(SMBCCTX *context,
*/
cb = &context->callbacks;
if (cli_is_error(targetcli) &&
- cb->check_server_fn(context, srv)) {
-
- /* ... then remove it. */
- if (cb->remove_unused_server_fn(context,
- srv)) {
- /*
- * We could not remove the server
- * completely, remove it from the
- * cache so we will not get it
- * again. It will be removed when the
- * last file/dir is closed.
- */
- cb->remove_cached_srv_fn(context, srv);
- }
+ (cb->check_server_fn)(context, srv)) {
+
+ /* ... then remove it. */
+ if ((cb->remove_unused_server_fn)(context,
+ srv)) {
+ /*
+ * We could not remove the
+ * server completely, remove
+ * it from the cache so we
+ * will not get it again. It
+ * will be removed when the
+ * last file/dir is closed.
+ */
+ (cb->remove_cached_srv_fn)(context,
+ srv);
+ }
}
errno = saved_errno;
@@ -3435,8 +3427,6 @@ static off_t
smbc_telldir_ctx(SMBCCTX *context,
SMBCFILE *dir)
{
- off_t ret_val; /* Squash warnings about cast */
-
if (!context || !context->internal ||
!context->internal->_initialized) {
@@ -3459,12 +3449,16 @@ smbc_telldir_ctx(SMBCCTX *context,
}
+ /* See if we're already at the end. */
+ if (dir->dir_next == NULL) {
+ /* We are. */
+ return -1;
+ }
+
/*
* We return the pointer here as the offset
*/
- ret_val = (off_t)(long)dir->dir_next;
- return ret_val;
-
+ return (off_t)(long)dir->dir_next->dirent;
}
/*
@@ -3535,6 +3529,11 @@ smbc_lseekdir_ctx(SMBCCTX *context,
}
+ if (offset == -1) { /* Seek to the end of the list */
+ dir->dir_next = NULL;
+ return 0;
+ }
+
/* Now, run down the list and make sure that the entry is OK */
/* This may need to be changed if we change the format of the list */
@@ -3731,32 +3730,94 @@ smbc_utimes_ctx(SMBCCTX *context,
}
-/* The MSDN is contradictory over the ordering of ACE entries in an ACL.
- However NT4 gives a "The information may have been modified by a
- computer running Windows NT 5.0" if denied ACEs do not appear before
- allowed ACEs. */
+/*
+ * Sort ACEs according to the documentation at
+ * http://support.microsoft.com/kb/269175, at least as far as it defines the
+ * order.
+ */
static int
ace_compare(SEC_ACE *ace1,
SEC_ACE *ace2)
{
- if (sec_ace_equal(ace1, ace2))
+ BOOL b1;
+ BOOL b2;
+
+ /* If the ACEs are equal, we have nothing more to do. */
+ if (sec_ace_equal(ace1, ace2)) {
return 0;
+ }
+
+ /* Inherited follow non-inherited */
+ b1 = ((ace1->flags & SEC_ACE_FLAG_INHERITED_ACE) != 0);
+ b2 = ((ace2->flags & SEC_ACE_FLAG_INHERITED_ACE) != 0);
+ if (b1 != b2) {
+ return (b1 ? 1 : -1);
+ }
+
+ /*
+ * What shall we do with AUDITs and ALARMs? It's undefined. We'll
+ * sort them after DENY and ALLOW.
+ */
+ b1 = (ace1->type != SEC_ACE_TYPE_ACCESS_ALLOWED &&
+ ace1->type != SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT &&
+ ace1->type != SEC_ACE_TYPE_ACCESS_DENIED &&
+ ace1->type != SEC_ACE_TYPE_ACCESS_DENIED_OBJECT);
+ b2 = (ace2->type != SEC_ACE_TYPE_ACCESS_ALLOWED &&
+ ace2->type != SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT &&
+ ace2->type != SEC_ACE_TYPE_ACCESS_DENIED &&
+ ace2->type != SEC_ACE_TYPE_ACCESS_DENIED_OBJECT);
+ if (b1 != b2) {
+ return (b1 ? 1 : -1);
+ }
+
+ /* Allowed ACEs follow denied ACEs */
+ b1 = (ace1->type == SEC_ACE_TYPE_ACCESS_ALLOWED ||
+ ace1->type == SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT);
+ b2 = (ace2->type == SEC_ACE_TYPE_ACCESS_ALLOWED ||
+ ace2->type == SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT);
+ if (b1 != b2) {
+ return (b1 ? 1 : -1);
+ }
+
+ /*
+ * ACEs applying to an entity's object follow those applying to the
+ * entity itself
+ */
+ b1 = (ace1->type == SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT ||
+ ace1->type == SEC_ACE_TYPE_ACCESS_DENIED_OBJECT);
+ b2 = (ace2->type == SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT ||
+ ace2->type == SEC_ACE_TYPE_ACCESS_DENIED_OBJECT);
+ if (b1 != b2) {
+ return (b1 ? 1 : -1);
+ }
- if (ace1->type != ace2->type)
+ /*
+ * If we get this far, the ACEs are similar as far as the
+ * characteristics we typically care about (those defined by the
+ * referenced MS document). We'll now sort by characteristics that
+ * just seems reasonable.
+ */
+
+ if (ace1->type != ace2->type) {
return ace2->type - ace1->type;
+ }
- if (sid_compare(&ace1->trustee, &ace2->trustee))
+ if (sid_compare(&ace1->trustee, &ace2->trustee)) {
return sid_compare(&ace1->trustee, &ace2->trustee);
+ }
- if (ace1->flags != ace2->flags)
+ if (ace1->flags != ace2->flags) {
return ace1->flags - ace2->flags;
+ }
- if (ace1->access_mask != ace2->access_mask)
+ if (ace1->access_mask != ace2->access_mask) {
return ace1->access_mask - ace2->access_mask;
+ }
- if (ace1->size != ace2->size)
+ if (ace1->size != ace2->size) {
return ace1->size - ace2->size;
+ }
return memcmp(ace1, ace2, sizeof(SEC_ACE));
}
@@ -3849,7 +3910,7 @@ convert_string_to_sid(struct cli_state *ipc_cli,
}
if (!NT_STATUS_IS_OK(rpccli_lsa_lookup_names(pipe_hnd, ipc_cli->mem_ctx,
- pol, 1, &str, NULL, 1, &sids,
+ pol, 1, &str, NULL, &sids,
&types))) {
result = False;
goto done;
@@ -4024,7 +4085,7 @@ sec_desc_parse(TALLOC_CTX *ctx,
fstring tok;
SEC_DESC *ret = NULL;
size_t sd_size;
- DOM_SID *grp_sid=NULL;
+ DOM_SID *group_sid=NULL;
DOM_SID *owner_sid=NULL;
SEC_ACL *dacl=NULL;
int revision=1;
@@ -4069,15 +4130,15 @@ sec_desc_parse(TALLOC_CTX *ctx,
}
if (StrnCaseCmp(tok,"GROUP:", 6) == 0) {
- if (grp_sid) {
+ if (group_sid) {
DEBUG(5, ("GROUP specified more than once!\n"));
goto done;
}
- grp_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
- if (!grp_sid ||
+ group_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
+ if (!group_sid ||
!convert_string_to_sid(ipc_cli, pol,
numeric,
- grp_sid, tok+6)) {
+ group_sid, tok+6)) {
DEBUG(5, ("Failed to parse group sid\n"));
goto done;
}
@@ -4085,15 +4146,15 @@ sec_desc_parse(TALLOC_CTX *ctx,
}
if (StrnCaseCmp(tok,"GROUP+:", 7) == 0) {
- if (grp_sid) {
+ if (group_sid) {
DEBUG(5, ("GROUP specified more than once!\n"));
goto done;
}
- grp_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
- if (!grp_sid ||
+ group_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
+ if (!group_sid ||
!convert_string_to_sid(ipc_cli, pol,
False,
- grp_sid, tok+6)) {
+ group_sid, tok+6)) {
DEBUG(5, ("Failed to parse group sid\n"));
goto done;
}
@@ -4131,10 +4192,10 @@ sec_desc_parse(TALLOC_CTX *ctx,
}
ret = make_sec_desc(ctx, revision, SEC_DESC_SELF_RELATIVE,
- owner_sid, grp_sid, NULL, dacl, &sd_size);
+ owner_sid, group_sid, NULL, dacl, &sd_size);
done:
- SAFE_FREE(grp_sid);
+ SAFE_FREE(group_sid);
SAFE_FREE(owner_sid);
return ret;
@@ -4527,6 +4588,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_nt_owner) {
@@ -4574,6 +4636,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_nt_group) {
@@ -4619,6 +4682,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_nt_acl) {
@@ -4709,6 +4773,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
}
@@ -4783,6 +4848,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_dos_size) {
@@ -4827,6 +4893,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_dos_create_time &&
@@ -4869,6 +4936,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_dos_access_time) {
@@ -4910,6 +4978,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_dos_write_time) {
@@ -4951,6 +5020,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_dos_change_time) {
@@ -4992,6 +5062,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
if (! exclude_dos_inode) {
@@ -5036,6 +5107,7 @@ cacl_get(SMBCCTX *context,
buf += n;
n_used += n;
bufsize -= n;
+ n = 0;
}
/* Restore name pointer to its original value */
@@ -5069,7 +5141,7 @@ cacl_set(TALLOC_CTX *ctx,
SEC_DESC *sd = NULL, *old;
SEC_ACL *dacl = NULL;
DOM_SID *owner_sid = NULL;
- DOM_SID *grp_sid = NULL;
+ DOM_SID *group_sid = NULL;
uint32 i, j;
size_t sd_size;
int ret = 0;
@@ -5130,9 +5202,6 @@ cacl_set(TALLOC_CTX *ctx,
switch (mode) {
case SMBC_XATTR_MODE_REMOVE_ALL:
old->dacl->num_aces = 0;
- SAFE_FREE(old->dacl->aces);
- SAFE_FREE(old->dacl);
- old->dacl = NULL;
dacl = old->dacl;
break;
@@ -5149,11 +5218,6 @@ cacl_set(TALLOC_CTX *ctx,
old->dacl->aces[k+1];
}
old->dacl->num_aces--;
- if (old->dacl->num_aces == 0) {
- SAFE_FREE(old->dacl->aces);
- SAFE_FREE(old->dacl);
- old->dacl = NULL;
- }
found = True;
dacl = old->dacl;
break;
@@ -5202,7 +5266,7 @@ cacl_set(TALLOC_CTX *ctx,
case SMBC_XATTR_MODE_SET:
old = sd;
owner_sid = old->owner_sid;
- grp_sid = old->group_sid;
+ group_sid = old->group_sid;
dacl = old->dacl;
break;
@@ -5211,7 +5275,7 @@ cacl_set(TALLOC_CTX *ctx,
break;
case SMBC_XATTR_MODE_CHGRP:
- grp_sid = sd->group_sid;
+ group_sid = sd->group_sid;
break;
}
@@ -5220,7 +5284,7 @@ cacl_set(TALLOC_CTX *ctx,
/* Create new security descriptor and set it */
sd = make_sec_desc(ctx, old->revision, SEC_DESC_SELF_RELATIVE,
- owner_sid, grp_sid, NULL, dacl, &sd_size);
+ owner_sid, group_sid, NULL, dacl, &sd_size);
fnum = cli_nt_create(cli, filename,
WRITE_DAC_ACCESS | WRITE_OWNER_ACCESS);
@@ -5920,7 +5984,7 @@ smbc_open_print_job_ctx(SMBCCTX *context,
/* What if the path is empty, or the file exists? */
- return context->open(context, fname, O_WRONLY, 666);
+ return (context->open)(context, fname, O_WRONLY, 666);
}
@@ -5961,7 +6025,7 @@ smbc_print_file_ctx(SMBCCTX *c_file,
/* Try to open the file for reading ... */
- if ((long)(fid1 = c_file->open(c_file, fname, O_RDONLY, 0666)) < 0) {
+ if ((long)(fid1 = (c_file->open)(c_file, fname, O_RDONLY, 0666)) < 0) {
DEBUG(3, ("Error, fname=%s, errno=%i\n", fname, errno));
return -1; /* smbc_open sets errno */
@@ -5970,24 +6034,24 @@ smbc_print_file_ctx(SMBCCTX *c_file,
/* Now, try to open the printer file for writing */
- if ((long)(fid2 = c_print->open_print_job(c_print, printq)) < 0) {
+ if ((long)(fid2 = (c_print->open_print_job)(c_print, printq)) < 0) {
saverr = errno; /* Save errno */
- c_file->close_fn(c_file, fid1);
+ (c_file->close_fn)(c_file, fid1);
errno = saverr;
return -1;
}
- while ((bytes = c_file->read(c_file, fid1, buf, sizeof(buf))) > 0) {
+ while ((bytes = (c_file->read)(c_file, fid1, buf, sizeof(buf))) > 0) {
tot_bytes += bytes;
- if ((c_print->write(c_print, fid2, buf, bytes)) < 0) {
+ if (((c_print->write)(c_print, fid2, buf, bytes)) < 0) {
saverr = errno;
- c_file->close_fn(c_file, fid1);
- c_print->close_fn(c_print, fid2);
+ (c_file->close_fn)(c_file, fid1);
+ (c_print->close_fn)(c_print, fid2);
errno = saverr;
}
@@ -5996,8 +6060,8 @@ smbc_print_file_ctx(SMBCCTX *c_file,
saverr = errno;
- c_file->close_fn(c_file, fid1); /* We have to close these anyway */
- c_print->close_fn(c_print, fid2);
+ (c_file->close_fn)(c_file, fid1); /* We have to close these anyway */
+ (c_print->close_fn)(c_print, fid2);
if (bytes < 0) {
@@ -6247,7 +6311,7 @@ smbc_free_context(SMBCCTX *context,
f = context->internal->_files;
while (f) {
- context->close_fn(context, f);
+ (context->close_fn)(context, f);
f = f->next;
}
context->internal->_files = NULL;
@@ -6263,8 +6327,8 @@ smbc_free_context(SMBCCTX *context,
DEBUG(1, ("Forced shutdown: %p (fd=%d)\n",
s, s->cli->fd));
cli_shutdown(s->cli);
- context->callbacks.remove_cached_srv_fn(context,
- s);
+ (context->callbacks.remove_cached_srv_fn)(context,
+ s);
next = s->next;
DLIST_REMOVE(context->internal->_servers, s);
SAFE_FREE(s);
@@ -6275,7 +6339,7 @@ smbc_free_context(SMBCCTX *context,
}
else {
/* This is the polite way */
- if (context->callbacks.purge_cached_fn(context)) {
+ if ((context->callbacks.purge_cached_fn)(context)) {
DEBUG(1, ("Could not purge all servers, "
"free_context failed.\n"));
errno = EBUSY;
diff --git a/source/libsmb/namequery.c b/source/libsmb/namequery.c
index bde24b4b904..cbd94ff5672 100644
--- a/source/libsmb/namequery.c
+++ b/source/libsmb/namequery.c
@@ -145,11 +145,15 @@ char *saf_fetch( const char *domain )
static int generate_trn_id(void)
{
- uint16 id;
+ static int trn_id;
- generate_random_buffer((uint8 *)&id, sizeof(id));
+ if (trn_id == 0) {
+ sys_srandom(sys_getpid());
+ }
+
+ trn_id = sys_random();
- return id % (unsigned)0x7FFF;
+ return trn_id % (unsigned)0x7FFF;
}
/****************************************************************************
@@ -647,7 +651,7 @@ struct in_addr *name_query(int fd,const char *name,int name_type,
Start parsing the lmhosts file.
*********************************************************/
-XFILE *startlmhosts(const char *fname)
+XFILE *startlmhosts(char *fname)
{
XFILE *fp = x_fopen(fname,O_RDONLY, 0);
if (!fp) {
diff --git a/source/libsmb/namequery_dc.c b/source/libsmb/namequery_dc.c
index 65e860d45e7..eee5e92c045 100644
--- a/source/libsmb/namequery_dc.c
+++ b/source/libsmb/namequery_dc.c
@@ -99,15 +99,23 @@ static BOOL ads_dc_name(const char *domain,
}
#ifdef HAVE_KRB5
- if (is_our_primary_domain(domain) && (ads->config.flags & ADS_KDC) && ads_closest_dc(ads)) {
- /* We're going to use this KDC for this realm/domain.
- If we are using sites, then force the krb5 libs
- to use this KDC. */
-
- create_local_private_krb5_conf_for_domain(realm,
- domain,
- sitename,
- ads->ldap_ip);
+ if (is_our_primary_domain(domain) && (ads->config.flags & ADS_KDC)) {
+ if (ads_closest_dc(ads)) {
+ /* We're going to use this KDC for this realm/domain.
+ If we are using sites, then force the krb5 libs
+ to use this KDC. */
+
+ create_local_private_krb5_conf_for_domain(realm,
+ domain,
+ sitename,
+ ads->ldap_ip);
+ } else {
+ /* use an off site KDC */
+ create_local_private_krb5_conf_for_domain(realm,
+ domain,
+ NULL,
+ ads->ldap_ip);
+ }
}
#endif
break;
diff --git a/source/libsmb/ntlm_check.c b/source/libsmb/ntlm_check.c
index 1ce5d5e4242..e1fc92e3449 100644
--- a/source/libsmb/ntlm_check.c
+++ b/source/libsmb/ntlm_check.c
@@ -65,13 +65,13 @@ static BOOL smb_pwd_check_ntlmv1(const DATA_BLOB *nt_response,
#ifdef DEBUG_PASSWORD
DEBUG(100,("Part password (P16) was |\n"));
- dump_data(100, part_passwd, 16);
+ dump_data(100, (const char *)part_passwd, 16);
DEBUGADD(100,("Password from client was |\n"));
- dump_data(100, nt_response->data, nt_response->length);
+ dump_data(100, (const char *)nt_response->data, nt_response->length);
DEBUGADD(100,("Given challenge was |\n"));
- dump_data(100, sec_blob->data, sec_blob->length);
+ dump_data(100, (const char *)sec_blob->data, sec_blob->length);
DEBUGADD(100,("Value from encryption was |\n"));
- dump_data(100, p24, 24);
+ dump_data(100, (const char *)p24, 24);
#endif
return (memcmp(p24, nt_response->data, 24) == 0);
}
@@ -136,15 +136,15 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response,
#if DEBUG_PASSWORD
DEBUG(100,("Part password (P16) was |\n"));
- dump_data(100, part_passwd, 16);
+ dump_data(100, (const char *)part_passwd, 16);
DEBUGADD(100,("Password from client was |\n"));
- dump_data(100, ntv2_response->data, ntv2_response->length);
+ dump_data(100, (const char *)ntv2_response->data, ntv2_response->length);
DEBUGADD(100,("Variable data from client was |\n"));
- dump_data(100, client_key_data.data, client_key_data.length);
+ dump_data(100, (const char *)client_key_data.data, client_key_data.length);
DEBUGADD(100,("Given challenge was |\n"));
- dump_data(100, sec_blob->data, sec_blob->length);
+ dump_data(100, (const char *)sec_blob->data, sec_blob->length);
DEBUGADD(100,("Value from encryption was |\n"));
- dump_data(100, value_from_encryption, 16);
+ dump_data(100, (const char *)value_from_encryption, 16);
#endif
data_blob_clear_free(&client_key_data);
res = (memcmp(value_from_encryption, client_response, 16) == 0);
diff --git a/source/libsmb/ntlmssp.c b/source/libsmb/ntlmssp.c
index 73680709859..2f919b3f766 100644
--- a/source/libsmb/ntlmssp.c
+++ b/source/libsmb/ntlmssp.c
@@ -299,13 +299,13 @@ NTSTATUS ntlmssp_update(NTLMSSP_STATE *ntlmssp_state,
return NT_STATUS_INVALID_PARAMETER;
}
- *out = data_blob_null;
+ *out = data_blob(NULL, 0);
if (!in.length && ntlmssp_state->stored_response.length) {
input = ntlmssp_state->stored_response;
/* we only want to read the stored response once - overwrite it */
- ntlmssp_state->stored_response = data_blob_null;
+ ntlmssp_state->stored_response = data_blob(NULL, 0);
} else {
input = in;
}
@@ -325,7 +325,7 @@ NTSTATUS ntlmssp_update(NTLMSSP_STATE *ntlmssp_state,
"NTLMSSP",
&ntlmssp_command)) {
DEBUG(1, ("Failed to parse NTLMSSP packet, could not extract NTLMSSP command\n"));
- dump_data(2, input.data, input.length);
+ dump_data(2, (const char *)input.data, input.length);
return NT_STATUS_INVALID_PARAMETER;
}
}
@@ -531,7 +531,7 @@ static NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state,
&neg_flags)) {
DEBUG(1, ("ntlmssp_server_negotiate: failed to parse NTLMSSP Negotiate of length %u\n",
(unsigned int)request.length));
- dump_data(2, request.data, request.length);
+ dump_data(2, (const char *)request.data, request.length);
return NT_STATUS_INVALID_PARAMETER;
}
debug_ntlmssp_flags(neg_flags);
@@ -582,7 +582,7 @@ static NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state,
NTLMSSP_NAME_TYPE_SERVER_DNS, dnsname,
0, "");
} else {
- struct_blob = data_blob_null;
+ struct_blob = data_blob(NULL, 0);
}
{
@@ -623,10 +623,10 @@ static NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state,
static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
const DATA_BLOB request, DATA_BLOB *reply)
{
- DATA_BLOB encrypted_session_key = data_blob_null;
- DATA_BLOB user_session_key = data_blob_null;
- DATA_BLOB lm_session_key = data_blob_null;
- DATA_BLOB session_key = data_blob_null;
+ DATA_BLOB encrypted_session_key = data_blob(NULL, 0);
+ DATA_BLOB user_session_key = data_blob(NULL, 0);
+ DATA_BLOB lm_session_key = data_blob(NULL, 0);
+ DATA_BLOB session_key = data_blob(NULL, 0);
uint32 ntlmssp_command, auth_flags;
NTSTATUS nt_status = NT_STATUS_OK;
@@ -642,7 +642,7 @@ static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
char *workstation = NULL;
/* parse the NTLMSSP packet */
- *reply = data_blob_null;
+ *reply = data_blob(NULL, 0);
#if 0
file_save("ntlmssp_auth.dat", request.data, request.length);
@@ -695,7 +695,7 @@ static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
&user,
&workstation)) {
DEBUG(1, ("ntlmssp_server_auth: failed to parse NTLMSSP (tried both formats):\n"));
- dump_data(2, request.data, request.length);
+ dump_data(2, (const char *)request.data, request.length);
SAFE_FREE(domain);
SAFE_FREE(user);
SAFE_FREE(workstation);
@@ -807,7 +807,7 @@ static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
} else {
DEBUG(10,("ntlmssp_server_auth: Failed to create NTLM2 session key.\n"));
- session_key = data_blob_null;
+ session_key = data_blob(NULL, 0);
}
} else if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_LM_KEY) {
if (lm_session_key.data && lm_session_key.length >= 8) {
@@ -834,7 +834,7 @@ static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
session_key.length);
} else {
DEBUG(10,("ntlmssp_server_auth: Failed to create NTLM session key.\n"));
- session_key = data_blob_null;
+ session_key = data_blob(NULL, 0);
}
} else if (user_session_key.data) {
session_key = user_session_key;
@@ -846,7 +846,7 @@ static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
dump_data_pw("unmodified session key:\n", session_key.data, session_key.length);
} else {
DEBUG(10,("ntlmssp_server_auth: Failed to create unmodified session key.\n"));
- session_key = data_blob_null;
+ session_key = data_blob(NULL, 0);
}
/* With KEY_EXCH, the client supplies the proposed session key,
@@ -877,7 +877,7 @@ static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
}
if (!NT_STATUS_IS_OK(nt_status)) {
- ntlmssp_state->session_key = data_blob_null;
+ ntlmssp_state->session_key = data_blob(NULL, 0);
} else if (ntlmssp_state->session_key.length) {
nt_status = ntlmssp_sign_init(ntlmssp_state);
}
@@ -992,14 +992,14 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_state *ntlmssp_state,
uint32 chal_flags, ntlmssp_command, unkn1, unkn2;
DATA_BLOB server_domain_blob;
DATA_BLOB challenge_blob;
- DATA_BLOB struct_blob = data_blob_null;
+ DATA_BLOB struct_blob = data_blob(NULL, 0);
char *server_domain;
const char *chal_parse_string;
const char *auth_gen_string;
- DATA_BLOB lm_response = data_blob_null;
- DATA_BLOB nt_response = data_blob_null;
- DATA_BLOB session_key = data_blob_null;
- DATA_BLOB encrypted_session_key = data_blob_null;
+ DATA_BLOB lm_response = data_blob(NULL, 0);
+ DATA_BLOB nt_response = data_blob(NULL, 0);
+ DATA_BLOB session_key = data_blob(NULL, 0);
+ DATA_BLOB encrypted_session_key = data_blob(NULL, 0);
NTSTATUS nt_status = NT_STATUS_OK;
if (!msrpc_parse(&reply, "CdBd",
@@ -1008,7 +1008,7 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_state *ntlmssp_state,
&server_domain_blob,
&chal_flags)) {
DEBUG(1, ("Failed to parse the NTLMSSP Challenge: (#1)\n"));
- dump_data(2, reply.data, reply.length);
+ dump_data(2, (const char *)reply.data, reply.length);
return NT_STATUS_INVALID_PARAMETER;
}
@@ -1049,7 +1049,7 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_state *ntlmssp_state,
&unkn1, &unkn2,
&struct_blob)) {
DEBUG(1, ("Failed to parse the NTLMSSP Challenge: (#2)\n"));
- dump_data(2, reply.data, reply.length);
+ dump_data(2, (const char *)reply.data, reply.length);
return NT_STATUS_INVALID_PARAMETER;
}
@@ -1111,7 +1111,7 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_state *ntlmssp_state,
DEBUG(5, ("NTLMSSP challenge set by NTLM2\n"));
DEBUG(5, ("challenge is: \n"));
- dump_data(5, session_nonce_hash, 8);
+ dump_data(5, (const char *)session_nonce_hash, 8);
nt_response = data_blob_talloc(ntlmssp_state->mem_ctx, NULL, 24);
SMBNTencrypt_hash(ntlmssp_state->nt_hash,
diff --git a/source/libsmb/ntlmssp_parse.c b/source/libsmb/ntlmssp_parse.c
index a3977dbc010..e71504867e9 100644
--- a/source/libsmb/ntlmssp_parse.c
+++ b/source/libsmb/ntlmssp_parse.c
@@ -220,10 +220,9 @@ BOOL msrpc_parse(const DATA_BLOB *blob,
return False;
if (0 < len1) {
- pull_string(
- NULL, 0, p,
- blob->data + ptr, sizeof(p),
- len1, STR_UNICODE|STR_NOALIGN);
+ pull_string(NULL, p, blob->data + ptr, sizeof(p),
+ len1,
+ STR_UNICODE|STR_NOALIGN);
(*ps) = smb_xstrdup(p);
} else {
(*ps) = smb_xstrdup("");
@@ -249,10 +248,9 @@ BOOL msrpc_parse(const DATA_BLOB *blob,
return False;
if (0 < len1) {
- pull_string(
- NULL, 0, p,
- blob->data + ptr, sizeof(p),
- len1, STR_ASCII|STR_NOALIGN);
+ pull_string(NULL, p, blob->data + ptr, sizeof(p),
+ len1,
+ STR_ASCII|STR_NOALIGN);
(*ps) = smb_xstrdup(p);
} else {
(*ps) = smb_xstrdup("");
@@ -267,7 +265,7 @@ BOOL msrpc_parse(const DATA_BLOB *blob,
b = (DATA_BLOB *)va_arg(ap, void *);
if (len1 == 0 && len2 == 0) {
- *b = data_blob_null;
+ *b = data_blob(NULL, 0);
} else {
/* make sure its in the right format - be strict */
if ((len1 != len2) || (ptr + len1 < ptr) || (ptr + len1 < len1) || (ptr + len1 > blob->length)) {
@@ -302,10 +300,9 @@ BOOL msrpc_parse(const DATA_BLOB *blob,
if (blob->data + head_ofs < (uint8 *)head_ofs || blob->data + head_ofs < blob->data)
return False;
- head_ofs += pull_string(
- NULL, 0, p, blob->data+head_ofs, sizeof(p),
- blob->length - head_ofs,
- STR_ASCII|STR_TERMINATE);
+ head_ofs += pull_string(NULL, p, blob->data+head_ofs, sizeof(p),
+ blob->length - head_ofs,
+ STR_ASCII|STR_TERMINATE);
if (strcmp(s, p) != 0) {
return False;
}
diff --git a/source/libsmb/ntlmssp_sign.c b/source/libsmb/ntlmssp_sign.c
index a30535e2ded..5642be42a3d 100644
--- a/source/libsmb/ntlmssp_sign.c
+++ b/source/libsmb/ntlmssp_sign.c
@@ -196,10 +196,10 @@ NTSTATUS ntlmssp_check_packet(NTLMSSP_STATE *ntlmssp_state,
if (local_sig.length != sig->length ||
memcmp(local_sig.data, sig->data, sig->length) != 0) {
DEBUG(5, ("BAD SIG NTLM2: wanted signature of\n"));
- dump_data(5, local_sig.data, local_sig.length);
+ dump_data(5, (const char *)local_sig.data, local_sig.length);
DEBUG(5, ("BAD SIG: got signature of\n"));
- dump_data(5, sig->data, sig->length);
+ dump_data(5, (const char *)sig->data, sig->length);
DEBUG(0, ("NTLMSSP NTLM2 packet check failed due to invalid signature!\n"));
data_blob_free(&local_sig);
@@ -209,10 +209,10 @@ NTSTATUS ntlmssp_check_packet(NTLMSSP_STATE *ntlmssp_state,
if (local_sig.length != sig->length ||
memcmp(local_sig.data + 8, sig->data + 8, sig->length - 8) != 0) {
DEBUG(5, ("BAD SIG NTLM1: wanted signature of\n"));
- dump_data(5, local_sig.data, local_sig.length);
+ dump_data(5, (const char *)local_sig.data, local_sig.length);
DEBUG(5, ("BAD SIG: got signature of\n"));
- dump_data(5, sig->data, sig->length);
+ dump_data(5, (const char *)sig->data, sig->length);
DEBUG(0, ("NTLMSSP NTLM1 packet check failed due to invalid signature!\n"));
data_blob_free(&local_sig);
diff --git a/source/libsmb/samlogon_cache.c b/source/libsmb/samlogon_cache.c
index 106ff21dfe4..c3ca9a3b15b 100644
--- a/source/libsmb/samlogon_cache.c
+++ b/source/libsmb/samlogon_cache.c
@@ -155,7 +155,7 @@ BOOL netsamlogon_cache_store( const char *username, NET_USER_INFO_3 *user )
if ( net_io_user_info3("", user, &ps, 0, 3, 0) )
{
data.dsize = prs_offset( &ps );
- data.dptr = (uint8 *)prs_data_p( &ps );
+ data.dptr = prs_data_p( &ps );
if (tdb_store_bystring(netsamlogon_tdb, keystr, data, TDB_REPLACE) != -1)
result = True;
@@ -176,7 +176,7 @@ BOOL netsamlogon_cache_store( const char *username, NET_USER_INFO_3 *user )
NET_USER_INFO_3* netsamlogon_cache_get( TALLOC_CTX *mem_ctx, const DOM_SID *user_sid)
{
NET_USER_INFO_3 *user = NULL;
- TDB_DATA data;
+ TDB_DATA data, key;
prs_struct ps;
fstring keystr;
uint32 t;
@@ -189,7 +189,9 @@ NET_USER_INFO_3* netsamlogon_cache_get( TALLOC_CTX *mem_ctx, const DOM_SID *user
/* Prepare key as DOMAIN-SID/USER-RID string */
slprintf(keystr, sizeof(keystr), "%s", sid_string_static(user_sid));
DEBUG(10,("netsamlogon_cache_get: SID [%s]\n", keystr));
- data = tdb_fetch_bystring( netsamlogon_tdb, keystr );
+ key.dptr = keystr;
+ key.dsize = strlen(keystr)+1;
+ data = tdb_fetch( netsamlogon_tdb, key );
if ( data.dptr ) {
@@ -199,7 +201,7 @@ NET_USER_INFO_3* netsamlogon_cache_get( TALLOC_CTX *mem_ctx, const DOM_SID *user
}
prs_init( &ps, 0, mem_ctx, UNMARSHALL );
- prs_give_memory( &ps, (char *)data.dptr, data.dsize, True );
+ prs_give_memory( &ps, data.dptr, data.dsize, True );
if ( !prs_uint32( "timestamp", &ps, 0, &t ) ) {
prs_mem_free( &ps );
diff --git a/source/libsmb/smb_seal.c b/source/libsmb/smb_seal.c
deleted file mode 100644
index 81c6ff1bac2..00000000000
--- a/source/libsmb/smb_seal.c
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SMB Transport encryption (sealing) code.
- Copyright (C) Jeremy Allison 2007.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-/******************************************************************************
- Pull out the encryption context for this packet. 0 means global context.
-******************************************************************************/
-
-NTSTATUS get_enc_ctx_num(char *buf, uint16 *p_enc_ctx_num)
-{
- if (smb_len(buf) < 8) {
- return NT_STATUS_INVALID_BUFFER_SIZE;
- }
-
- if (buf[4] == (char)0xFF) {
- if (buf[5] == 'S' && buf [6] == 'M' && buf[7] == 'B') {
- /* Not an encrypted buffer. */
- return NT_STATUS_NOT_FOUND;
- }
- if (buf[5] == 'E') {
- *p_enc_ctx_num = SVAL(buf,6);
- return NT_STATUS_OK;
- }
- }
- return NT_STATUS_INVALID_NETWORK_RESPONSE;
-}
-
-/******************************************************************************
- Generic code for client and server.
- Is encryption turned on ?
-******************************************************************************/
-
-BOOL common_encryption_on(struct smb_trans_enc_state *es)
-{
- return ((es != NULL) && es->enc_on);
-}
-
-/******************************************************************************
- Generic code for client and server.
- NTLM decrypt an incoming buffer.
- Abartlett tells me that SSPI puts the signature first before the encrypted
- output, so cope with the same for compatibility.
-******************************************************************************/
-
-NTSTATUS common_ntlm_decrypt_buffer(NTLMSSP_STATE *ntlmssp_state, char *buf)
-{
- NTSTATUS status;
- size_t buf_len = smb_len(buf) + 4; /* Don't forget the 4 length bytes. */
- size_t data_len;
- char *inbuf;
- DATA_BLOB sig;
-
- if (buf_len < 8 + NTLMSSP_SIG_SIZE) {
- return NT_STATUS_BUFFER_TOO_SMALL;
- }
-
- inbuf = (char *)smb_xmemdup(buf, buf_len);
-
- /* Adjust for the signature. */
- data_len = buf_len - 8 - NTLMSSP_SIG_SIZE;
-
- /* Point at the signature. */
- sig = data_blob_const(inbuf+8, NTLMSSP_SIG_SIZE);
-
- status = ntlmssp_unseal_packet(ntlmssp_state,
- (unsigned char *)inbuf + 8 + NTLMSSP_SIG_SIZE, /* 4 byte len + 0xFF 'E' <enc> <ctx> */
- data_len,
- (unsigned char *)inbuf + 8 + NTLMSSP_SIG_SIZE,
- data_len,
- &sig);
-
- if (!NT_STATUS_IS_OK(status)) {
- SAFE_FREE(inbuf);
- return status;
- }
-
- memcpy(buf + 8, inbuf + 8 + NTLMSSP_SIG_SIZE, data_len);
-
- /* Reset the length. */
- smb_setlen(inbuf, buf, data_len + 4);
-
- SAFE_FREE(inbuf);
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Generic code for client and server.
- NTLM encrypt an outgoing buffer. Return the encrypted pointer in ppbuf_out.
- Abartlett tells me that SSPI puts the signature first before the encrypted
- output, so do the same for compatibility.
-******************************************************************************/
-
-NTSTATUS common_ntlm_encrypt_buffer(NTLMSSP_STATE *ntlmssp_state,
- uint16 enc_ctx_num,
- char *buf,
- char **ppbuf_out)
-{
- NTSTATUS status;
- char *buf_out;
- size_t data_len = smb_len(buf) - 4; /* Ignore the 0xFF SMB bytes. */
- DATA_BLOB sig;
-
- *ppbuf_out = NULL;
-
- if (data_len == 0) {
- return NT_STATUS_BUFFER_TOO_SMALL;
- }
-
- /*
- * We know smb_len can't return a value > 128k, so no int overflow
- * check needed.
- */
-
- buf_out = SMB_XMALLOC_ARRAY(char, 8 + NTLMSSP_SIG_SIZE + data_len);
-
- /* Copy the data from the original buffer. */
-
- memcpy(buf_out + 8 + NTLMSSP_SIG_SIZE, buf + 8, data_len);
-
- smb_set_enclen(buf_out, smb_len(buf) + NTLMSSP_SIG_SIZE, enc_ctx_num);
-
- sig = data_blob(NULL, NTLMSSP_SIG_SIZE);
-
- status = ntlmssp_seal_packet(ntlmssp_state,
- (unsigned char *)buf_out + 8 + NTLMSSP_SIG_SIZE, /* 4 byte len + 0xFF 'S' <enc> <ctx> */
- data_len,
- (unsigned char *)buf_out + 8 + NTLMSSP_SIG_SIZE,
- data_len,
- &sig);
-
- if (!NT_STATUS_IS_OK(status)) {
- data_blob_free(&sig);
- SAFE_FREE(buf_out);
- return status;
- }
-
- /* First 16 data bytes are signature for SSPI compatibility. */
- memcpy(buf_out + 8, sig.data, NTLMSSP_SIG_SIZE);
- *ppbuf_out = buf_out;
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Generic code for client and server.
- gss-api decrypt an incoming buffer. We insist that the size of the
- unwrapped buffer must be smaller or identical to the incoming buffer.
-******************************************************************************/
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
-static NTSTATUS common_gss_decrypt_buffer(struct smb_tran_enc_state_gss *gss_state, char *buf)
-{
- gss_ctx_id_t gss_ctx = gss_state->gss_ctx;
- OM_uint32 ret = 0;
- OM_uint32 minor = 0;
- int flags_got = 0;
- gss_buffer_desc in_buf, out_buf;
- size_t buf_len = smb_len(buf) + 4; /* Don't forget the 4 length bytes. */
-
- if (buf_len < 8) {
- return NT_STATUS_BUFFER_TOO_SMALL;
- }
-
- in_buf.value = buf + 8;
- in_buf.length = buf_len - 8;
-
- ret = gss_unwrap(&minor,
- gss_ctx,
- &in_buf,
- &out_buf,
- &flags_got, /* did we get sign+seal ? */
- (gss_qop_t *) NULL);
-
- if (ret != GSS_S_COMPLETE) {
- ADS_STATUS adss = ADS_ERROR_GSS(ret, minor);
- DEBUG(0,("common_gss_encrypt_buffer: gss_unwrap failed. Error %s\n",
- ads_errstr(adss) ));
- return map_nt_error_from_gss(ret, minor);
- }
-
- if (out_buf.length > in_buf.length) {
- DEBUG(0,("common_gss_encrypt_buffer: gss_unwrap size (%u) too large (%u) !\n",
- (unsigned int)out_buf.length,
- (unsigned int)in_buf.length ));
- gss_release_buffer(&minor, &out_buf);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- memcpy(buf + 8, out_buf.value, out_buf.length);
- smb_setlen((char *)out_buf.value, buf, out_buf.length + 4);
-
- gss_release_buffer(&minor, &out_buf);
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Generic code for client and server.
- gss-api encrypt an outgoing buffer. Return the alloced encrypted pointer in buf_out.
-******************************************************************************/
-
-static NTSTATUS common_gss_encrypt_buffer(struct smb_tran_enc_state_gss *gss_state,
- uint16 enc_ctx_num,
- char *buf,
- char **ppbuf_out)
-{
- gss_ctx_id_t gss_ctx = gss_state->gss_ctx;
- OM_uint32 ret = 0;
- OM_uint32 minor = 0;
- int flags_got = 0;
- gss_buffer_desc in_buf, out_buf;
- size_t buf_len = smb_len(buf) + 4; /* Don't forget the 4 length bytes. */
-
- *ppbuf_out = NULL;
-
- if (buf_len < 8) {
- return NT_STATUS_BUFFER_TOO_SMALL;
- }
-
- in_buf.value = buf + 8;
- in_buf.length = buf_len - 8;
-
- ret = gss_wrap(&minor,
- gss_ctx,
- True, /* we want sign+seal. */
- GSS_C_QOP_DEFAULT,
- &in_buf,
- &flags_got, /* did we get sign+seal ? */
- &out_buf);
-
- if (ret != GSS_S_COMPLETE) {
- ADS_STATUS adss = ADS_ERROR_GSS(ret, minor);
- DEBUG(0,("common_gss_encrypt_buffer: gss_wrap failed. Error %s\n",
- ads_errstr(adss) ));
- return map_nt_error_from_gss(ret, minor);
- }
-
- if (!flags_got) {
- /* Sign+seal not supported. */
- gss_release_buffer(&minor, &out_buf);
- return NT_STATUS_NOT_SUPPORTED;
- }
-
- /* Ya see - this is why I *hate* gss-api. I don't
- * want to have to malloc another buffer of the
- * same size + 8 bytes just to get a continuous
- * header + buffer, but gss won't let me pass in
- * a pre-allocated buffer. Bastards (and you know
- * who you are....). I might fix this by
- * going to "encrypt_and_send" passing in a file
- * descriptor and doing scatter-gather write with
- * TCP cork on Linux. But I shouldn't have to
- * bother :-*(. JRA.
- */
-
- *ppbuf_out = (char *)SMB_MALLOC(out_buf.length + 8); /* We know this can't wrap. */
- if (!*ppbuf_out) {
- gss_release_buffer(&minor, &out_buf);
- return NT_STATUS_NO_MEMORY;
- }
-
- memcpy(*ppbuf_out+8, out_buf.value, out_buf.length);
- smb_set_enclen(*ppbuf_out, out_buf.length + 4, enc_ctx_num);
-
- gss_release_buffer(&minor, &out_buf);
- return NT_STATUS_OK;
-}
-#endif
-
-/******************************************************************************
- Generic code for client and server.
- Encrypt an outgoing buffer. Return the alloced encrypted pointer in buf_out.
-******************************************************************************/
-
-NTSTATUS common_encrypt_buffer(struct smb_trans_enc_state *es, char *buffer, char **buf_out)
-{
- if (!common_encryption_on(es)) {
- /* Not encrypting. */
- *buf_out = buffer;
- return NT_STATUS_OK;
- }
-
- switch (es->smb_enc_type) {
- case SMB_TRANS_ENC_NTLM:
- return common_ntlm_encrypt_buffer(es->s.ntlmssp_state, es->enc_ctx_num, buffer, buf_out);
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- case SMB_TRANS_ENC_GSS:
- return common_gss_encrypt_buffer(es->s.gss_state, es->enc_ctx_num, buffer, buf_out);
-#endif
- default:
- return NT_STATUS_NOT_SUPPORTED;
- }
-}
-
-/******************************************************************************
- Generic code for client and server.
- Decrypt an incoming SMB buffer. Replaces the data within it.
- New data must be less than or equal to the current length.
-******************************************************************************/
-
-NTSTATUS common_decrypt_buffer(struct smb_trans_enc_state *es, char *buf)
-{
- if (!common_encryption_on(es)) {
- /* Not decrypting. */
- return NT_STATUS_OK;
- }
-
- switch (es->smb_enc_type) {
- case SMB_TRANS_ENC_NTLM:
- return common_ntlm_decrypt_buffer(es->s.ntlmssp_state, buf);
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- case SMB_TRANS_ENC_GSS:
- return common_gss_decrypt_buffer(es->s.gss_state, buf);
-#endif
- default:
- return NT_STATUS_NOT_SUPPORTED;
- }
-}
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
-/******************************************************************************
- Shutdown a gss encryption state.
-******************************************************************************/
-
-static void common_free_gss_state(struct smb_tran_enc_state_gss **pp_gss_state)
-{
- OM_uint32 minor = 0;
- struct smb_tran_enc_state_gss *gss_state = *pp_gss_state;
-
- if (gss_state->creds != GSS_C_NO_CREDENTIAL) {
- gss_release_cred(&minor, &gss_state->creds);
- }
- if (gss_state->gss_ctx != GSS_C_NO_CONTEXT) {
- gss_delete_sec_context(&minor, &gss_state->gss_ctx, NULL);
- }
- SAFE_FREE(*pp_gss_state);
-}
-#endif
-
-/******************************************************************************
- Shutdown an encryption state.
-******************************************************************************/
-
-void common_free_encryption_state(struct smb_trans_enc_state **pp_es)
-{
- struct smb_trans_enc_state *es = *pp_es;
-
- if (es == NULL) {
- return;
- }
-
- if (es->smb_enc_type == SMB_TRANS_ENC_NTLM) {
- if (es->s.ntlmssp_state) {
- ntlmssp_end(&es->s.ntlmssp_state);
- }
- }
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- if (es->smb_enc_type == SMB_TRANS_ENC_GSS) {
- /* Free the gss context handle. */
- if (es->s.gss_state) {
- common_free_gss_state(&es->s.gss_state);
- }
- }
-#endif
- SAFE_FREE(es);
- *pp_es = NULL;
-}
-
-/******************************************************************************
- Free an encryption-allocated buffer.
-******************************************************************************/
-
-void common_free_enc_buffer(struct smb_trans_enc_state *es, char *buf)
-{
- if (!common_encryption_on(es)) {
- return;
- }
-
- if (es->smb_enc_type == SMB_TRANS_ENC_NTLM) {
- SAFE_FREE(buf);
- return;
- }
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- if (es->smb_enc_type == SMB_TRANS_ENC_GSS) {
- OM_uint32 min;
- gss_buffer_desc rel_buf;
- rel_buf.value = buf;
- rel_buf.length = smb_len(buf) + 4;
- gss_release_buffer(&min, &rel_buf);
- }
-#endif
-}
-
-/******************************************************************************
- Client side encryption.
-******************************************************************************/
-
-/******************************************************************************
- Is client encryption on ?
-******************************************************************************/
-
-BOOL cli_encryption_on(struct cli_state *cli)
-{
- /* If we supported multiple encrytion contexts
- * here we'd look up based on tid.
- */
- return common_encryption_on(cli->trans_enc_state);
-}
-
-/******************************************************************************
- Shutdown a client encryption state.
-******************************************************************************/
-
-void cli_free_encryption_context(struct cli_state *cli)
-{
- common_free_encryption_state(&cli->trans_enc_state);
-}
-
-/******************************************************************************
- Free an encryption-allocated buffer.
-******************************************************************************/
-
-void cli_free_enc_buffer(struct cli_state *cli, char *buf)
-{
- /* We know this is an smb buffer, and we
- * didn't malloc, only copy, for a keepalive,
- * so ignore session keepalives. */
-
- if(CVAL(buf,0) == SMBkeepalive) {
- return;
- }
-
- /* If we supported multiple encrytion contexts
- * here we'd look up based on tid.
- */
- common_free_enc_buffer(cli->trans_enc_state, buf);
-}
-
-/******************************************************************************
- Decrypt an incoming buffer.
-******************************************************************************/
-
-NTSTATUS cli_decrypt_message(struct cli_state *cli)
-{
- NTSTATUS status;
- uint16 enc_ctx_num;
-
- /* Ignore session keepalives. */
- if(CVAL(cli->inbuf,0) == SMBkeepalive) {
- return NT_STATUS_OK;
- }
-
- status = get_enc_ctx_num(cli->inbuf, &enc_ctx_num);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- if (enc_ctx_num != cli->trans_enc_state->enc_ctx_num) {
- return NT_STATUS_INVALID_HANDLE;
- }
-
- return common_decrypt_buffer(cli->trans_enc_state, cli->inbuf);
-}
-
-/******************************************************************************
- Encrypt an outgoing buffer. Return the encrypted pointer in buf_out.
-******************************************************************************/
-
-NTSTATUS cli_encrypt_message(struct cli_state *cli, char **buf_out)
-{
- /* Ignore session keepalives. */
- if(CVAL(cli->outbuf,0) == SMBkeepalive) {
- return NT_STATUS_OK;
- }
-
- /* If we supported multiple encrytion contexts
- * here we'd look up based on tid.
- */
- return common_encrypt_buffer(cli->trans_enc_state, cli->outbuf, buf_out);
-}
diff --git a/source/libsmb/smb_share_modes.c b/source/libsmb/smb_share_modes.c
index 89395fe373d..b63ec7ff78b 100644
--- a/source/libsmb/smb_share_modes.c
+++ b/source/libsmb/smb_share_modes.c
@@ -42,12 +42,12 @@ int smb_create_share_mode_entry_ex(struct smbdb_ctx *db_ctx, uint64_t dev,
uint64_t ino, const struct smb_share_mode_entry *new_entry,
const char *sharepath, const char *filename);
-static BOOL sharemodes_procid_equal(const struct server_id *p1, const struct server_id *p2)
+static BOOL sharemodes_procid_equal(const struct process_id *p1, const struct process_id *p2)
{
return (p1->pid == p2->pid);
}
-static pid_t sharemodes_procid_to_pid(const struct server_id *proc)
+static pid_t sharemodes_procid_to_pid(const struct process_id *proc)
{
return proc->pid;
}
@@ -101,7 +101,7 @@ static TDB_DATA get_locking_key(uint64_t dev, uint64_t ino)
memset(&lk, '\0', sizeof(struct locking_key));
lk.dev = (SMB_DEV_T)dev;
lk.inode = (SMB_INO_T)ino;
- ld.dptr = (uint8 *)&lk;
+ ld.dptr = (char *)&lk;
ld.dsize = sizeof(lk);
return ld;
}
@@ -137,8 +137,8 @@ static int share_mode_entry_equal(const struct smb_share_mode_entry *e_entry,
e_entry->open_time.tv_usec == entry->time.tv_usec &&
e_entry->share_access == (uint32_t)entry->share_access &&
e_entry->access_mask == (uint32_t)entry->access_mask &&
- e_entry->dev == entry->id.devid &&
- e_entry->ino == entry->id.inode);
+ e_entry->dev == (uint64_t)entry->dev &&
+ e_entry->ino == (uint64_t)entry->inode);
}
/*
@@ -156,8 +156,8 @@ static void create_share_mode_entry(struct share_mode_entry *out,
out->time.tv_usec = in->open_time.tv_usec;
out->share_access = in->share_access;
out->access_mask = in->access_mask;
- out->id.devid = in->dev;
- out->id.inode = in->ino;
+ out->dev = (SMB_DEV_T)in->dev;
+ out->inode = (SMB_INO_T)in->ino;
out->uid = (uint32)geteuid();
out->flags = 0;
}
@@ -211,7 +211,7 @@ int smb_get_share_mode_entries(struct smbdb_ctx *db_ctx,
for (i = 0; i < num_share_modes; i++) {
struct share_mode_entry *share = &shares[i];
struct smb_share_mode_entry *sme = &list[list_num];
- struct server_id pid = share->pid;
+ struct process_id pid = share->pid;
/* Check this process really exists. */
if (kill(sharemodes_procid_to_pid(&pid), 0) == -1 && (errno == ESRCH)) {
@@ -224,8 +224,8 @@ int smb_get_share_mode_entries(struct smbdb_ctx *db_ctx,
}
/* Copy into the external list. */
- sme->dev = share->id.devid;
- sme->ino = share->id.inode;
+ sme->dev = (uint64_t)share->dev;
+ sme->ino = (uint64_t)share->inode;
sme->share_access = (uint32_t)share->share_access;
sme->access_mask = (uint32_t)share->access_mask;
sme->open_time.tv_sec = share->time.tv_sec;
@@ -263,13 +263,13 @@ int smb_create_share_mode_entry_ex(struct smbdb_ctx *db_ctx,
int orig_num_share_modes = 0;
struct locking_data *ld = NULL; /* internal samba db state. */
struct share_mode_entry *shares = NULL;
- uint8 *new_data_p = NULL;
+ char *new_data_p = NULL;
size_t new_data_size = 0;
db_data = tdb_fetch(db_ctx->smb_tdb, locking_key);
if (!db_data.dptr) {
/* We must create the entry. */
- db_data.dptr = (uint8 *)malloc(
+ db_data.dptr = (char *)malloc(
sizeof(struct locking_data) +
sizeof(struct share_mode_entry) +
strlen(sharepath) + 1 +
@@ -305,7 +305,7 @@ int smb_create_share_mode_entry_ex(struct smbdb_ctx *db_ctx,
}
/* Entry exists, we must add a new entry. */
- new_data_p = (uint8 *)malloc(
+ new_data_p = (char *)malloc(
db_data.dsize + sizeof(struct share_mode_entry));
if (!new_data_p) {
free(db_data.dptr);
@@ -376,10 +376,10 @@ int smb_delete_share_mode_entry(struct smbdb_ctx *db_ctx,
int orig_num_share_modes = 0;
struct locking_data *ld = NULL; /* internal samba db state. */
struct share_mode_entry *shares = NULL;
- uint8 *new_data_p = NULL;
+ char *new_data_p = NULL;
size_t remaining_size = 0;
size_t i, num_share_modes;
- const uint8 *remaining_ptr = NULL;
+ const char *remaining_ptr = NULL;
db_data = tdb_fetch(db_ctx->smb_tdb, locking_key);
if (!db_data.dptr) {
@@ -403,7 +403,7 @@ int smb_delete_share_mode_entry(struct smbdb_ctx *db_ctx,
}
/* More than one - allocate a new record minus the one we'll delete. */
- new_data_p = (uint8 *)malloc(
+ new_data_p = (char *)malloc(
db_data.dsize - sizeof(struct share_mode_entry));
if (!new_data_p) {
free(db_data.dptr);
@@ -416,7 +416,7 @@ int smb_delete_share_mode_entry(struct smbdb_ctx *db_ctx,
num_share_modes = 0;
for (i = 0; i < orig_num_share_modes; i++) {
struct share_mode_entry *share = &shares[i];
- struct server_id pid = share->pid;
+ struct process_id pid = share->pid;
/* Check this process really exists. */
if (kill(sharemodes_procid_to_pid(&pid), 0) == -1 && (errno == ESRCH)) {
@@ -492,7 +492,7 @@ int smb_change_share_mode_entry(struct smbdb_ctx *db_ctx,
for (i = 0; i < num_share_modes; i++) {
struct share_mode_entry *share = &shares[i];
- struct server_id pid = share->pid;
+ struct process_id pid = share->pid;
/* Check this process really exists. */
if (kill(sharemodes_procid_to_pid(&pid), 0) == -1 && (errno == ESRCH)) {
diff --git a/source/libsmb/smb_signing.c b/source/libsmb/smb_signing.c
index 30f41476e3a..df74b2db36a 100644
--- a/source/libsmb/smb_signing.c
+++ b/source/libsmb/smb_signing.c
@@ -347,7 +347,7 @@ static void client_sign_outgoing_message(char *outbuf, struct smb_sign_info *si)
data->send_seq_num, calc_md5_mac);
DEBUG(10, ("client_sign_outgoing_message: sent SMB signature of\n"));
- dump_data(10, calc_md5_mac, 8);
+ dump_data(10, (const char *)calc_md5_mac, 8);
memcpy(&outbuf[smb_ss_field], calc_md5_mac, 8);
@@ -408,10 +408,10 @@ static BOOL client_check_incoming_message(char *inbuf, struct smb_sign_info *si,
if (!good) {
DEBUG(5, ("client_check_incoming_message: BAD SIG: wanted SMB signature of\n"));
- dump_data(5, calc_md5_mac, 8);
+ dump_data(5, (const char *)calc_md5_mac, 8);
DEBUG(5, ("client_check_incoming_message: BAD SIG: got SMB signature of\n"));
- dump_data(5, server_sent_mac, 8);
+ dump_data(5, (const char *)server_sent_mac, 8);
#if 1 /* JRATEST */
{
int i;
@@ -428,7 +428,7 @@ We were expecting seq %u\n", reply_seq_number+i, reply_seq_number ));
} else {
DEBUG(10, ("client_check_incoming_message: seq %u: got good SMB signature of\n", (unsigned int)reply_seq_number));
- dump_data(10, server_sent_mac, 8);
+ dump_data(10, (const char *)server_sent_mac, 8);
}
return signing_good(inbuf, si, good, reply_seq_number, must_be_ok);
}
@@ -488,12 +488,12 @@ BOOL cli_simple_set_signing(struct cli_state *cli,
memcpy(&data->mac_key.data[0], user_session_key.data, user_session_key.length);
DEBUG(10, ("cli_simple_set_signing: user_session_key\n"));
- dump_data(10, user_session_key.data, user_session_key.length);
+ dump_data(10, (const char *)user_session_key.data, user_session_key.length);
if (response.length) {
memcpy(&data->mac_key.data[user_session_key.length],response.data, response.length);
DEBUG(10, ("cli_simple_set_signing: response_data\n"));
- dump_data(10, response.data, response.length);
+ dump_data(10, (const char *)response.data, response.length);
} else {
DEBUG(10, ("cli_simple_set_signing: NULL response_data\n"));
}
@@ -658,16 +658,6 @@ BOOL client_set_trans_sign_state_off(struct cli_state *cli, uint16 mid)
}
/***********************************************************
- Is client signing on ?
-************************************************************/
-
-BOOL client_is_signing_on(struct cli_state *cli)
-{
- struct smb_sign_info *si = &cli->sign_info;
- return si->doing_signing;
-}
-
-/***********************************************************
SMB signing - Server implementation - send the MAC.
************************************************************/
@@ -701,7 +691,7 @@ static void srv_sign_outgoing_message(char *outbuf, struct smb_sign_info *si)
simple_packet_signature(data, (const unsigned char *)outbuf, send_seq_number, calc_md5_mac);
DEBUG(10, ("srv_sign_outgoing_message: seq %u: sent SMB signature of\n", (unsigned int)send_seq_number));
- dump_data(10, calc_md5_mac, 8);
+ dump_data(10, (const char *)calc_md5_mac, 8);
memcpy(&outbuf[smb_ss_field], calc_md5_mac, 8);
@@ -745,11 +735,11 @@ static BOOL srv_check_incoming_message(char *inbuf, struct smb_sign_info *si, BO
if (saved_seq) {
DEBUG(0, ("srv_check_incoming_message: BAD SIG: seq %u wanted SMB signature of\n",
(unsigned int)saved_seq));
- dump_data(5, calc_md5_mac, 8);
+ dump_data(5, (const char *)calc_md5_mac, 8);
DEBUG(0, ("srv_check_incoming_message: BAD SIG: seq %u got SMB signature of\n",
(unsigned int)reply_seq_number));
- dump_data(5, server_sent_mac, 8);
+ dump_data(5, (const char *)server_sent_mac, 8);
}
#if 1 /* JRATEST */
@@ -769,7 +759,7 @@ We were expecting seq %u\n", reply_seq_number, saved_seq ));
} else {
DEBUG(10, ("srv_check_incoming_message: seq %u: (current is %u) got good SMB signature of\n", (unsigned int)reply_seq_number, (unsigned int)data->send_seq_num));
- dump_data(10, server_sent_mac, 8);
+ dump_data(10, (const char *)server_sent_mac, 8);
}
return (signing_good(inbuf, si, good, saved_seq, must_be_ok));
@@ -808,9 +798,8 @@ BOOL srv_oplock_set_signing(BOOL onoff)
BOOL srv_check_sign_mac(char *inbuf, BOOL must_be_ok)
{
/* Check if it's a session keepalive. */
- if(CVAL(inbuf,0) == SMBkeepalive) {
+ if(CVAL(inbuf,0) == SMBkeepalive)
return True;
- }
return srv_sign_info.check_incoming_message(inbuf, &srv_sign_info, must_be_ok);
}
@@ -822,9 +811,9 @@ BOOL srv_check_sign_mac(char *inbuf, BOOL must_be_ok)
void srv_calculate_sign_mac(char *outbuf)
{
/* Check if it's a session keepalive. */
- if(CVAL(outbuf,0) == SMBkeepalive) {
+ /* JRA Paranioa test - do we ever generate these in the server ? */
+ if(CVAL(outbuf,0) == SMBkeepalive)
return;
- }
srv_sign_info.sign_outgoing_message(outbuf, &srv_sign_info);
}
diff --git a/source/libsmb/smbencrypt.c b/source/libsmb/smbencrypt.c
index 4e8c5066a82..5f7b5b18093 100644
--- a/source/libsmb/smbencrypt.c
+++ b/source/libsmb/smbencrypt.c
@@ -36,9 +36,9 @@ void SMBencrypt_hash(const uchar lm_hash[16], const uchar *c8, uchar p24[24])
#ifdef DEBUG_PASSWORD
DEBUG(100,("SMBencrypt_hash: lm#, challenge, response\n"));
- dump_data(100, p21, 16);
- dump_data(100, c8, 8);
- dump_data(100, p24, 24);
+ dump_data(100, (const char *)p21, 16);
+ dump_data(100, (const char *)c8, 8);
+ dump_data(100, (const char *)p24, 24);
#endif
}
@@ -146,16 +146,16 @@ void nt_lm_owf_gen(const char *pwd, uchar nt_p16[16], uchar p16[16])
#ifdef DEBUG_PASSWORD
DEBUG(100,("nt_lm_owf_gen: pwd, nt#\n"));
- dump_data(120, (uint8 *)pwd, strlen(pwd));
- dump_data(100, nt_p16, 16);
+ dump_data(120, pwd, strlen(pwd));
+ dump_data(100, (char *)nt_p16, 16);
#endif
E_deshash(pwd, (uchar *)p16);
#ifdef DEBUG_PASSWORD
DEBUG(100,("nt_lm_owf_gen: pwd, lm#\n"));
- dump_data(120, (uint8 *)pwd, strlen(pwd));
- dump_data(100, p16, 16);
+ dump_data(120, pwd, strlen(pwd));
+ dump_data(100, (char *)p16, 16);
#endif
}
@@ -204,10 +204,10 @@ BOOL ntv2_owf_gen(const uchar owf[16],
#ifdef DEBUG_PASSWORD
DEBUG(100, ("ntv2_owf_gen: user, domain, owfkey, kr\n"));
- dump_data(100, (uint8 *)user, user_byte_len);
- dump_data(100, (uint8 *)domain, domain_byte_len);
- dump_data(100, (uint8 *)owf, 16);
- dump_data(100, (uint8 *)kr_buf, 16);
+ dump_data(100, (const char *)user, user_byte_len);
+ dump_data(100, (const char *)domain, domain_byte_len);
+ dump_data(100, (const char *)owf, 16);
+ dump_data(100, (const char *)kr_buf, 16);
#endif
SAFE_FREE(user);
@@ -238,9 +238,9 @@ void NTLMSSPOWFencrypt(const uchar passwd[8], const uchar *ntlmchalresp, uchar p
E_P24(p21, ntlmchalresp, p24);
#ifdef DEBUG_PASSWORD
DEBUG(100,("NTLMSSPOWFencrypt: p21, c8, p24\n"));
- dump_data(100, p21, 21);
- dump_data(100, ntlmchalresp, 8);
- dump_data(100, p24, 24);
+ dump_data(100, (char *)p21, 21);
+ dump_data(100, (const char *)ntlmchalresp, 8);
+ dump_data(100, (char *)p24, 24);
#endif
}
@@ -257,9 +257,9 @@ void SMBNTencrypt_hash(const uchar nt_hash[16], uchar *c8, uchar *p24)
#ifdef DEBUG_PASSWORD
DEBUG(100,("SMBNTencrypt: nt#, challenge, response\n"));
- dump_data(100, p21, 16);
- dump_data(100, c8, 8);
- dump_data(100, p24, 24);
+ dump_data(100, (char *)p21, 16);
+ dump_data(100, (char *)c8, 8);
+ dump_data(100, (char *)p24, 24);
#endif
}
@@ -287,9 +287,9 @@ void SMBOWFencrypt_ntv2(const uchar kr[16],
#ifdef DEBUG_PASSWORD
DEBUG(100, ("SMBOWFencrypt_ntv2: srv_chal, cli_chal, resp_buf\n"));
- dump_data(100, srv_chal->data, srv_chal->length);
- dump_data(100, cli_chal->data, cli_chal->length);
- dump_data(100, resp_buf, 16);
+ dump_data(100, (const char *)srv_chal->data, srv_chal->length);
+ dump_data(100, (const char *)cli_chal->data, cli_chal->length);
+ dump_data(100, (const char *)resp_buf, 16);
#endif
}
@@ -306,7 +306,7 @@ void SMBsesskeygen_ntv2(const uchar kr[16],
#ifdef DEBUG_PASSWORD
DEBUG(100, ("SMBsesskeygen_ntv2:\n"));
- dump_data(100, sess_key, 16);
+ dump_data(100, (const char *)sess_key, 16);
#endif
}
@@ -320,7 +320,7 @@ void SMBsesskeygen_ntv1(const uchar kr[16],
#ifdef DEBUG_PASSWORD
DEBUG(100, ("SMBsesskeygen_ntv1:\n"));
- dump_data(100, sess_key, 16);
+ dump_data(100, (const char *)sess_key, 16);
#endif
}
@@ -340,14 +340,14 @@ void SMBsesskeygen_lm_sess_key(const uchar lm_hash[16],
#ifdef DEBUG_PASSWORD
DEBUG(100, ("SMBsesskeygen_lmv1_jerry:\n"));
- dump_data(100, sess_key, 16);
+ dump_data(100, (const char *)sess_key, 16);
#endif
}
DATA_BLOB NTLMv2_generate_names_blob(const char *hostname,
const char *domain)
{
- DATA_BLOB names_blob = data_blob_null;
+ DATA_BLOB names_blob = data_blob(NULL, 0);
msrpc_gen(&names_blob, "aaa",
NTLMSSP_NAME_TYPE_DOMAIN, domain,
@@ -359,7 +359,7 @@ DATA_BLOB NTLMv2_generate_names_blob(const char *hostname,
static DATA_BLOB NTLMv2_generate_client_data(const DATA_BLOB *names_blob)
{
uchar client_chal[8];
- DATA_BLOB response = data_blob_null;
+ DATA_BLOB response = data_blob(NULL, 0);
char long_date[8];
generate_random_buffer(client_chal, sizeof(client_chal));
@@ -544,7 +544,7 @@ BOOL decode_pw_buffer(uint8 in_buffer[516], char *new_pwrd,
byte_len = IVAL(in_buffer, 512);
#ifdef DEBUG_PASSWORD
- dump_data(100, in_buffer, 516);
+ dump_data(100, (const char *)in_buffer, 516);
#endif
/* Password cannot be longer than the size of the password buffer */
@@ -555,13 +555,12 @@ BOOL decode_pw_buffer(uint8 in_buffer[516], char *new_pwrd,
}
/* decode into the return buffer. Buffer length supplied */
- *new_pw_len = pull_string(NULL, 0, new_pwrd,
- &in_buffer[512 - byte_len], new_pwrd_size,
+ *new_pw_len = pull_string(NULL, new_pwrd, &in_buffer[512 - byte_len], new_pwrd_size,
byte_len, string_flags);
#ifdef DEBUG_PASSWORD
DEBUG(100,("decode_pw_buffer: new_pwrd: "));
- dump_data(100, (uint8 *)new_pwrd, *new_pw_len);
+ dump_data(100, (const char *)new_pwrd, *new_pw_len);
DEBUG(100,("multibyte len:%d\n", *new_pw_len));
DEBUG(100,("original char len:%d\n", byte_len/2));
#endif
diff --git a/source/libsmb/trustdom_cache.c b/source/libsmb/trustdom_cache.c
index 57fcc1b2485..dc0b5010a27 100644
--- a/source/libsmb/trustdom_cache.c
+++ b/source/libsmb/trustdom_cache.c
@@ -99,7 +99,7 @@ static char* trustdom_cache_key(const char* name)
/**
* Store trusted domain in gencache as the domain name (key)
- * and trusted domain's SID (value)
+ * and ip address of domain controller (value)
*
* @param name trusted domain name
* @param alt_name alternative trusted domain name (used in ADS domains)
@@ -152,7 +152,7 @@ BOOL trustdom_cache_store(char* name, char* alt_name, const DOM_SID *sid,
/**
- * Fetch trusted domain's SID from the gencache.
+ * Fetch trusted domain's dc from the gencache.
* This routine can also be used to check whether given
* domain is currently trusted one.
*
@@ -189,7 +189,7 @@ BOOL trustdom_cache_fetch(const char* name, DOM_SID* sid)
DEBUG(5, ("trusted domain %s found (%s)\n", name, value));
}
- /* convert sid string representation into DOM_SID structure */
+ /* convert ip string representation into in_addr structure */
if(! string_to_sid(sid, value)) {
sid = NULL;
SAFE_FREE(value);
diff --git a/source/libsmb/unexpected.c b/source/libsmb/unexpected.c
index 5aee16e4c61..97d6071e714 100644
--- a/source/libsmb/unexpected.c
+++ b/source/libsmb/unexpected.c
@@ -63,9 +63,9 @@ void unexpected_packet(struct packet_struct *p)
key.timestamp = p->timestamp;
key.count = count++;
- kbuf.dptr = (uint8_t *)&key;
+ kbuf.dptr = (char *)&key;
kbuf.dsize = sizeof(key);
- dbuf.dptr = (uint8_t *)buf;
+ dbuf.dptr = buf;
dbuf.dsize = len;
tdb_store(tdbd, kbuf, dbuf, TDB_REPLACE);
@@ -124,7 +124,7 @@ static int traverse_match(TDB_CONTEXT *ttdb, TDB_DATA kbuf, TDB_DATA dbuf, void
if (key.packet_type != match_type) return 0;
- p = parse_packet((char *)dbuf.dptr, dbuf.dsize, match_type);
+ p = parse_packet(dbuf.dptr, dbuf.dsize, match_type);
if ((match_type == NMB_PACKET &&
p->packet.nmb.header.name_trn_id == match_id) ||
diff --git a/source/locking/brlock.c b/source/locking/brlock.c
index 9b90d87ff0b..38f96e78a74 100644
--- a/source/locking/brlock.c
+++ b/source/locking/brlock.c
@@ -34,7 +34,7 @@
/* The open brlock.tdb database. */
-static struct db_context *brlock_db;
+static TDB_CONTEXT *tdb;
/****************************************************************************
Debug info at level 10 for lock struct.
@@ -261,20 +261,21 @@ static NTSTATUS brl_lock_failed(files_struct *fsp, const struct lock_struct *loc
void brl_init(int read_only)
{
- if (brlock_db) {
+ if (tdb) {
return;
}
- brlock_db = db_open(NULL, lock_path("brlock.tdb"),
- lp_open_files_db_hash_size(),
- TDB_DEFAULT
- |TDB_VOLATILE
- |(read_only?0x0:TDB_CLEAR_IF_FIRST),
- read_only?O_RDONLY:(O_RDWR|O_CREAT), 0644 );
- if (!brlock_db) {
+ tdb = tdb_open_log(lock_path("brlock.tdb"),
+ lp_open_files_db_hash_size(),
+ TDB_DEFAULT|(read_only?0x0:TDB_CLEAR_IF_FIRST),
+ read_only?O_RDONLY:(O_RDWR|O_CREAT), 0644 );
+ if (!tdb) {
DEBUG(0,("Failed to open byte range locking database %s\n",
lock_path("brlock.tdb")));
return;
}
+
+ /* Activate the per-hashchain freelist */
+ tdb_set_max_dead(tdb, 5);
}
/****************************************************************************
@@ -283,10 +284,10 @@ void brl_init(int read_only)
void brl_shutdown(int read_only)
{
- if (!brlock_db) {
+ if (!tdb) {
return;
}
- TALLOC_FREE(brlock_db);
+ tdb_close(tdb);
}
#if ZERO_ZERO
@@ -316,7 +317,7 @@ static NTSTATUS brl_lock_windows(struct byte_range_lock *br_lck,
{
unsigned int i;
files_struct *fsp = br_lck->fsp;
- struct lock_struct *locks = br_lck->lock_data;
+ struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
for (i=0; i < br_lck->num_locks; i++) {
/* Do any Windows or POSIX locks conflict ? */
@@ -367,7 +368,7 @@ static NTSTATUS brl_lock_windows(struct byte_range_lock *br_lck,
memcpy(&locks[br_lck->num_locks], plock, sizeof(struct lock_struct));
br_lck->num_locks += 1;
- br_lck->lock_data = locks;
+ br_lck->lock_data = (void *)locks;
br_lck->modified = True;
return NT_STATUS_OK;
@@ -577,9 +578,9 @@ OR
}
/* Never get here. */
- smb_panic("brlock_posix_split_merge");
+ smb_panic("brlock_posix_split_merge\n");
/* Notreached. */
-
+ abort();
/* Keep some compilers happy. */
return 0;
}
@@ -589,12 +590,11 @@ OR
We must cope with range splits and merges.
****************************************************************************/
-static NTSTATUS brl_lock_posix(struct messaging_context *msg_ctx,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
+static NTSTATUS brl_lock_posix(struct byte_range_lock *br_lck,
+ struct lock_struct *plock)
{
unsigned int i, count;
- struct lock_struct *locks = br_lck->lock_data;
+ struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
struct lock_struct *tp;
BOOL lock_was_added = False;
BOOL signal_pending_read = False;
@@ -700,7 +700,7 @@ static NTSTATUS brl_lock_posix(struct messaging_context *msg_ctx,
}
br_lck->num_locks = count;
SAFE_FREE(br_lck->lock_data);
- br_lck->lock_data = tp;
+ br_lck->lock_data = (void *)tp;
locks = tp;
br_lck->modified = True;
@@ -722,8 +722,9 @@ static NTSTATUS brl_lock_posix(struct messaging_context *msg_ctx,
DEBUG(10,("brl_lock_posix: sending unlock message to pid %s\n",
procid_str_static(&pend_lock->context.pid )));
- messaging_send(msg_ctx, pend_lock->context.pid,
- MSG_SMB_UNLOCK, &data_blob_null);
+ message_send_pid(pend_lock->context.pid,
+ MSG_SMB_UNLOCK,
+ NULL, 0, True);
}
}
}
@@ -735,10 +736,9 @@ static NTSTATUS brl_lock_posix(struct messaging_context *msg_ctx,
Lock a range of bytes.
****************************************************************************/
-NTSTATUS brl_lock(struct messaging_context *msg_ctx,
- struct byte_range_lock *br_lck,
+NTSTATUS brl_lock(struct byte_range_lock *br_lck,
uint32 smbpid,
- struct server_id pid,
+ struct process_id pid,
br_off start,
br_off size,
enum brl_type lock_type,
@@ -767,7 +767,7 @@ NTSTATUS brl_lock(struct messaging_context *msg_ctx,
if (lock_flav == WINDOWS_LOCK) {
ret = brl_lock_windows(br_lck, &lock, blocking_lock);
} else {
- ret = brl_lock_posix(msg_ctx, br_lck, &lock);
+ ret = brl_lock_posix(br_lck, &lock);
}
#if ZERO_ZERO
@@ -786,12 +786,10 @@ NTSTATUS brl_lock(struct messaging_context *msg_ctx,
Unlock a range of bytes - Windows semantics.
****************************************************************************/
-static BOOL brl_unlock_windows(struct messaging_context *msg_ctx,
- struct byte_range_lock *br_lck,
- const struct lock_struct *plock)
+static BOOL brl_unlock_windows(struct byte_range_lock *br_lck, const struct lock_struct *plock)
{
unsigned int i, j;
- struct lock_struct *locks = br_lck->lock_data;
+ struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
enum brl_type deleted_lock_type = READ_LOCK; /* shut the compiler up.... */
#if ZERO_ZERO
@@ -877,8 +875,9 @@ static BOOL brl_unlock_windows(struct messaging_context *msg_ctx,
DEBUG(10,("brl_unlock: sending unlock message to pid %s\n",
procid_str_static(&pend_lock->context.pid )));
- messaging_send(msg_ctx, pend_lock->context.pid,
- MSG_SMB_UNLOCK, &data_blob_null);
+ message_send_pid(pend_lock->context.pid,
+ MSG_SMB_UNLOCK,
+ NULL, 0, True);
}
}
@@ -889,13 +888,11 @@ static BOOL brl_unlock_windows(struct messaging_context *msg_ctx,
Unlock a range of bytes - POSIX semantics.
****************************************************************************/
-static BOOL brl_unlock_posix(struct messaging_context *msg_ctx,
- struct byte_range_lock *br_lck,
- const struct lock_struct *plock)
+static BOOL brl_unlock_posix(struct byte_range_lock *br_lck, const struct lock_struct *plock)
{
unsigned int i, j, count;
struct lock_struct *tp;
- struct lock_struct *locks = br_lck->lock_data;
+ struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
BOOL overlap_found = False;
/* No zero-zero locks for POSIX. */
@@ -1028,7 +1025,7 @@ static BOOL brl_unlock_posix(struct messaging_context *msg_ctx,
br_lck->num_locks = count;
SAFE_FREE(br_lck->lock_data);
locks = tp;
- br_lck->lock_data = tp;
+ br_lck->lock_data = (void *)tp;
br_lck->modified = True;
/* Send unlock messages to any pending waiters that overlap. */
@@ -1046,8 +1043,9 @@ static BOOL brl_unlock_posix(struct messaging_context *msg_ctx,
DEBUG(10,("brl_unlock: sending unlock message to pid %s\n",
procid_str_static(&pend_lock->context.pid )));
- messaging_send(msg_ctx, pend_lock->context.pid,
- MSG_SMB_UNLOCK, &data_blob_null);
+ message_send_pid(pend_lock->context.pid,
+ MSG_SMB_UNLOCK,
+ NULL, 0, True);
}
}
@@ -1058,10 +1056,9 @@ static BOOL brl_unlock_posix(struct messaging_context *msg_ctx,
Unlock a range of bytes.
****************************************************************************/
-BOOL brl_unlock(struct messaging_context *msg_ctx,
- struct byte_range_lock *br_lck,
+BOOL brl_unlock(struct byte_range_lock *br_lck,
uint32 smbpid,
- struct server_id pid,
+ struct process_id pid,
br_off start,
br_off size,
enum brl_flavour lock_flav)
@@ -1078,9 +1075,9 @@ BOOL brl_unlock(struct messaging_context *msg_ctx,
lock.lock_flav = lock_flav;
if (lock_flav == WINDOWS_LOCK) {
- return brl_unlock_windows(msg_ctx, br_lck, &lock);
+ return brl_unlock_windows(br_lck, &lock);
} else {
- return brl_unlock_posix(msg_ctx, br_lck, &lock);
+ return brl_unlock_posix(br_lck, &lock);
}
}
@@ -1091,7 +1088,7 @@ BOOL brl_unlock(struct messaging_context *msg_ctx,
BOOL brl_locktest(struct byte_range_lock *br_lck,
uint32 smbpid,
- struct server_id pid,
+ struct process_id pid,
br_off start,
br_off size,
enum brl_type lock_type,
@@ -1100,7 +1097,7 @@ BOOL brl_locktest(struct byte_range_lock *br_lck,
BOOL ret = True;
unsigned int i;
struct lock_struct lock;
- const struct lock_struct *locks = br_lck->lock_data;
+ const struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
files_struct *fsp = br_lck->fsp;
lock.context.smbpid = smbpid;
@@ -1149,7 +1146,7 @@ BOOL brl_locktest(struct byte_range_lock *br_lck,
NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
uint32 *psmbpid,
- struct server_id pid,
+ struct process_id pid,
br_off *pstart,
br_off *psize,
enum brl_type *plock_type,
@@ -1157,7 +1154,7 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
{
unsigned int i;
struct lock_struct lock;
- const struct lock_struct *locks = br_lck->lock_data;
+ const struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
files_struct *fsp = br_lck->fsp;
lock.context.smbpid = *psmbpid;
@@ -1217,13 +1214,13 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
BOOL brl_lock_cancel(struct byte_range_lock *br_lck,
uint32 smbpid,
- struct server_id pid,
+ struct process_id pid,
br_off start,
br_off size,
enum brl_flavour lock_flav)
{
unsigned int i;
- struct lock_struct *locks = br_lck->lock_data;
+ struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
struct lock_context context;
context.smbpid = smbpid;
@@ -1266,16 +1263,15 @@ BOOL brl_lock_cancel(struct byte_range_lock *br_lck,
fd and so we should not immediately close the fd.
****************************************************************************/
-void brl_close_fnum(struct messaging_context *msg_ctx,
- struct byte_range_lock *br_lck)
+void brl_close_fnum(struct byte_range_lock *br_lck)
{
files_struct *fsp = br_lck->fsp;
uint16 tid = fsp->conn->cnum;
int fnum = fsp->fnum;
unsigned int i, j, dcount=0;
int num_deleted_windows_locks = 0;
- struct lock_struct *locks = br_lck->lock_data;
- struct server_id pid = procid_self();
+ struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
+ struct process_id pid = procid_self();
BOOL unlock_individually = False;
if(lp_posix_locking(fsp->conn->params)) {
@@ -1309,7 +1305,7 @@ void brl_close_fnum(struct messaging_context *msg_ctx,
if (br_lck->num_locks) {
locks_copy = (struct lock_struct *)TALLOC_MEMDUP(br_lck, locks, br_lck->num_locks * sizeof(struct lock_struct));
if (!locks_copy) {
- smb_panic("brl_close_fnum: talloc failed");
+ smb_panic("brl_close_fnum: talloc fail.\n");
}
} else {
locks_copy = NULL;
@@ -1322,8 +1318,7 @@ void brl_close_fnum(struct messaging_context *msg_ctx,
if (lock->context.tid == tid && procid_equal(&lock->context.pid, &pid) &&
(lock->fnum == fnum)) {
- brl_unlock(msg_ctx,
- br_lck,
+ brl_unlock(br_lck,
lock->context.smbpid,
pid,
lock->start,
@@ -1372,8 +1367,9 @@ void brl_close_fnum(struct messaging_context *msg_ctx,
/* We could send specific lock info here... */
if (brl_pending_overlap(lock, pend_lock)) {
- messaging_send(msg_ctx, pend_lock->context.pid,
- MSG_SMB_UNLOCK, &data_blob_null);
+ message_send_pid(pend_lock->context.pid,
+ MSG_SMB_UNLOCK,
+ NULL, 0, True);
}
}
@@ -1447,40 +1443,31 @@ static BOOL validate_lock_entries(unsigned int *pnum_entries, struct lock_struct
return True;
}
-struct brl_forall_cb {
- void (*fn)(struct file_id id, struct server_id pid,
- enum brl_type lock_type,
- enum brl_flavour lock_flav,
- br_off start, br_off size,
- void *private_data);
- void *private_data;
-};
-
/****************************************************************************
Traverse the whole database with this function, calling traverse_callback
on each lock.
****************************************************************************/
-static int traverse_fn(struct db_record *rec, void *state)
+static int traverse_fn(TDB_CONTEXT *ttdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state)
{
- struct brl_forall_cb *cb = (struct brl_forall_cb *)state;
struct lock_struct *locks;
- struct file_id *key;
+ struct lock_key *key;
unsigned int i;
unsigned int num_locks = 0;
unsigned int orig_num_locks = 0;
+ BRLOCK_FN(traverse_callback) = (BRLOCK_FN_CAST())state;
+
/* In a traverse function we must make a copy of
dbuf before modifying it. */
- locks = (struct lock_struct *)memdup(rec->value.dptr,
- rec->value.dsize);
+ locks = (struct lock_struct *)memdup(dbuf.dptr, dbuf.dsize);
if (!locks) {
return -1; /* Terminate traversal. */
}
- key = (struct file_id *)rec->key.dptr;
- orig_num_locks = num_locks = rec->value.dsize/sizeof(*locks);
+ key = (struct lock_key *)kbuf.dptr;
+ orig_num_locks = num_locks = dbuf.dsize/sizeof(*locks);
/* Ensure the lock db is clean of entries from invalid processes. */
@@ -1490,24 +1477,24 @@ static int traverse_fn(struct db_record *rec, void *state)
}
if (orig_num_locks != num_locks) {
- if (num_locks) {
- TDB_DATA data;
- data.dptr = (uint8_t *)locks;
- data.dsize = num_locks*sizeof(struct lock_struct);
- rec->store(rec, data, TDB_REPLACE);
+ dbuf.dptr = (char *)locks;
+ dbuf.dsize = num_locks * sizeof(*locks);
+
+ if (dbuf.dsize) {
+ tdb_store(ttdb, kbuf, dbuf, TDB_REPLACE);
} else {
- rec->delete_rec(rec);
+ tdb_delete(ttdb, kbuf);
}
}
for ( i=0; i<num_locks; i++) {
- cb->fn(*key,
- locks[i].context.pid,
- locks[i].lock_type,
- locks[i].lock_flav,
- locks[i].start,
- locks[i].size,
- cb->private_data);
+ traverse_callback(key->device,
+ key->inode,
+ locks[i].context.pid,
+ locks[i].lock_type,
+ locks[i].lock_flav,
+ locks[i].start,
+ locks[i].size);
}
SAFE_FREE(locks);
@@ -1518,21 +1505,12 @@ static int traverse_fn(struct db_record *rec, void *state)
Call the specified function on each lock in the database.
********************************************************************/
-int brl_forall(void (*fn)(struct file_id id, struct server_id pid,
- enum brl_type lock_type,
- enum brl_flavour lock_flav,
- br_off start, br_off size,
- void *private_data),
- void *private_data)
+int brl_forall(BRLOCK_FN(fn))
{
- struct brl_forall_cb cb;
-
- if (!brlock_db) {
+ if (!tdb) {
return 0;
}
- cb.fn = fn;
- cb.private_data = private_data;
- return brlock_db->traverse(brlock_db, traverse_fn, &cb);
+ return tdb_traverse(tdb, traverse_fn, (void *)fn);
}
/*******************************************************************
@@ -1545,8 +1523,8 @@ static int byte_range_lock_destructor(struct byte_range_lock *br_lck)
{
TDB_DATA key;
- key.dptr = (uint8 *)&br_lck->key;
- key.dsize = sizeof(struct file_id);
+ key.dptr = (char *)&br_lck->key;
+ key.dsize = sizeof(struct lock_key);
if (br_lck->read_only) {
SMB_ASSERT(!br_lck->modified);
@@ -1558,31 +1536,25 @@ static int byte_range_lock_destructor(struct byte_range_lock *br_lck)
if (br_lck->num_locks == 0) {
/* No locks - delete this entry. */
- NTSTATUS status = br_lck->record->delete_rec(br_lck->record);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("delete_rec returned %s\n",
- nt_errstr(status)));
- smb_panic("Could not delete byte range lock entry");
+ if (tdb_delete(tdb, key) == -1) {
+ smb_panic("Could not delete byte range lock entry\n");
}
} else {
TDB_DATA data;
- NTSTATUS status;
-
- data.dptr = (uint8 *)br_lck->lock_data;
+ data.dptr = (char *)br_lck->lock_data;
data.dsize = br_lck->num_locks * sizeof(struct lock_struct);
- status = br_lck->record->store(br_lck->record, data,
- TDB_REPLACE);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("store returned %s\n", nt_errstr(status)));
- smb_panic("Could not store byte range mode entry");
+ if (tdb_store(tdb, key, data, TDB_REPLACE) == -1) {
+ smb_panic("Could not store byte range mode entry\n");
}
}
done:
+ if (!br_lck->read_only) {
+ tdb_chainunlock(tdb, key);
+ }
SAFE_FREE(br_lck->lock_data);
- TALLOC_FREE(br_lck->record);
return 0;
}
@@ -1595,7 +1567,8 @@ static int byte_range_lock_destructor(struct byte_range_lock *br_lck)
static struct byte_range_lock *brl_get_locks_internal(TALLOC_CTX *mem_ctx,
files_struct *fsp, BOOL read_only)
{
- TDB_DATA key, data;
+ TDB_DATA key;
+ TDB_DATA data;
struct byte_range_lock *br_lck = TALLOC_P(mem_ctx, struct byte_range_lock);
if (br_lck == NULL) {
@@ -1605,11 +1578,12 @@ static struct byte_range_lock *brl_get_locks_internal(TALLOC_CTX *mem_ctx,
br_lck->fsp = fsp;
br_lck->num_locks = 0;
br_lck->modified = False;
- memset(&br_lck->key, '\0', sizeof(struct file_id));
- br_lck->key = fsp->file_id;
+ memset(&br_lck->key, '\0', sizeof(struct lock_key));
+ br_lck->key.device = fsp->dev;
+ br_lck->key.inode = fsp->inode;
- key.dptr = (uint8 *)&br_lck->key;
- key.dsize = sizeof(struct file_id);
+ key.dptr = (char *)&br_lck->key;
+ key.dsize = sizeof(struct lock_key);
if (!fsp->lockdb_clean) {
/* We must be read/write to clean
@@ -1618,39 +1592,22 @@ static struct byte_range_lock *brl_get_locks_internal(TALLOC_CTX *mem_ctx,
}
if (read_only) {
- if (brlock_db->fetch(brlock_db, br_lck, key, &data) == -1) {
- DEBUG(3, ("Could not fetch byte range lock record\n"));
- TALLOC_FREE(br_lck);
- return NULL;
- }
- br_lck->record = NULL;
- }
- else {
- br_lck->record = brlock_db->fetch_locked(brlock_db, br_lck, key);
-
- if (br_lck->record == NULL) {
+ br_lck->read_only = True;
+ } else {
+ if (tdb_chainlock(tdb, key) != 0) {
DEBUG(3, ("Could not lock byte range lock entry\n"));
TALLOC_FREE(br_lck);
return NULL;
}
-
- data = br_lck->record->value;
+ br_lck->read_only = False;
}
- br_lck->read_only = read_only;
-
talloc_set_destructor(br_lck, byte_range_lock_destructor);
+ data = tdb_fetch(tdb, key);
+ br_lck->lock_data = (void *)data.dptr;
br_lck->num_locks = data.dsize / sizeof(struct lock_struct);
- br_lck->lock_data = SMB_MALLOC_ARRAY(struct lock_struct, br_lck->num_locks);
- if ((br_lck->num_locks != 0) && (br_lck->lock_data == NULL)) {
- DEBUG(0, ("malloc failed\n"));
- TALLOC_FREE(br_lck);
- return NULL;
- }
- memcpy(br_lck->lock_data, data.dptr, data.dsize);
-
if (!fsp->lockdb_clean) {
int orig_num_locks = br_lck->num_locks;
@@ -1658,28 +1615,37 @@ static struct byte_range_lock *brl_get_locks_internal(TALLOC_CTX *mem_ctx,
/* Go through and ensure all entries exist - remove any that don't. */
/* Makes the lockdb self cleaning at low cost. */
- if (!validate_lock_entries(&br_lck->num_locks,
- &br_lck->lock_data)) {
+ struct lock_struct *locks =
+ (struct lock_struct *)br_lck->lock_data;
+
+ if (!validate_lock_entries(&br_lck->num_locks, &locks)) {
SAFE_FREE(br_lck->lock_data);
TALLOC_FREE(br_lck);
return NULL;
}
- /* Ensure invalid locks are cleaned up in the destructor. */
+ /* Ensure invalid locks are cleaned up in the destructor. */
if (orig_num_locks != br_lck->num_locks) {
br_lck->modified = True;
}
+ /*
+ * validate_lock_entries might have changed locks. We can't
+ * use a direct pointer here because otherwise gcc warnes
+ * about strict aliasing rules being violated.
+ */
+ br_lck->lock_data = locks;
+
/* Mark the lockdb as "clean" as seen from this open file. */
fsp->lockdb_clean = True;
}
if (DEBUGLEVEL >= 10) {
unsigned int i;
- struct lock_struct *locks = br_lck->lock_data;
- DEBUG(10,("brl_get_locks_internal: %u current locks on file_id %s\n",
+ struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
+ DEBUG(10,("brl_get_locks_internal: %u current locks on dev=%.0f, inode=%.0f\n",
br_lck->num_locks,
- file_id_static_string(&fsp->file_id)));
+ (double)fsp->dev, (double)fsp->inode ));
for( i = 0; i < br_lck->num_locks; i++) {
print_lock_struct(i, &locks[i]);
}
@@ -1698,109 +1664,3 @@ struct byte_range_lock *brl_get_locks_readonly(TALLOC_CTX *mem_ctx,
{
return brl_get_locks_internal(mem_ctx, fsp, True);
}
-
-struct brl_revalidate_state {
- ssize_t array_size;
- uint32 num_pids;
- struct server_id *pids;
-};
-
-/*
- * Collect PIDs of all processes with pending entries
- */
-
-static void brl_revalidate_collect(struct file_id id, struct server_id pid,
- enum brl_type lock_type,
- enum brl_flavour lock_flav,
- br_off start, br_off size,
- void *private_data)
-{
- struct brl_revalidate_state *state =
- (struct brl_revalidate_state *)private_data;
-
- if (!IS_PENDING_LOCK(lock_type)) {
- return;
- }
-
- add_to_large_array(state, sizeof(pid), (void *)&pid,
- &state->pids, &state->num_pids,
- &state->array_size);
-}
-
-/*
- * qsort callback to sort the processes
- */
-
-static int compare_procids(const void *p1, const void *p2)
-{
- const struct server_id *i1 = (struct server_id *)p1;
- const struct server_id *i2 = (struct server_id *)p2;
-
- if (i1->pid < i2->pid) return -1;
- if (i2->pid > i2->pid) return 1;
- return 0;
-}
-
-/*
- * Send a MSG_SMB_UNLOCK message to all processes with pending byte range
- * locks so that they retry. Mainly used in the cluster code after a node has
- * died.
- *
- * Done in two steps to avoid double-sends: First we collect all entries in an
- * array, then qsort that array and only send to non-dupes.
- */
-
-static void brl_revalidate(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
-{
- struct brl_revalidate_state *state;
- uint32 i;
- struct server_id last_pid;
-
- if (!(state = TALLOC_ZERO_P(NULL, struct brl_revalidate_state))) {
- DEBUG(0, ("talloc failed\n"));
- return;
- }
-
- brl_forall(brl_revalidate_collect, state);
-
- if (state->array_size == -1) {
- DEBUG(0, ("talloc failed\n"));
- goto done;
- }
-
- if (state->num_pids == 0) {
- goto done;
- }
-
- qsort(state->pids, state->num_pids, sizeof(state->pids[0]),
- compare_procids);
-
- ZERO_STRUCT(last_pid);
-
- for (i=0; i<state->num_pids; i++) {
- if (procid_equal(&last_pid, &state->pids[i])) {
- /*
- * We've seen that one already
- */
- continue;
- }
-
- messaging_send(msg_ctx, state->pids[i], MSG_SMB_UNLOCK,
- &data_blob_null);
- last_pid = state->pids[i];
- }
-
- done:
- TALLOC_FREE(state);
- return;
-}
-
-void brl_register_msgs(struct messaging_context *msg_ctx)
-{
- messaging_register(msg_ctx, NULL, MSG_SMB_BRL_VALIDATE,
- brl_revalidate);
-}
diff --git a/source/locking/locking.c b/source/locking/locking.c
index 6f7d2d53c6b..a0debcd8de5 100644
--- a/source/locking/locking.c
+++ b/source/locking/locking.c
@@ -41,8 +41,10 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_LOCKING
+#define NO_LOCKING_COUNT (-1)
+
/* the locking database handle */
-static struct db_context *lock_db;
+static TDB_CONTEXT *tdb;
/****************************************************************************
Debugging aids :-).
@@ -180,8 +182,7 @@ NTSTATUS query_lock(files_struct *fsp,
Utility function called by locking requests.
****************************************************************************/
-struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
- files_struct *fsp,
+struct byte_range_lock *do_lock(files_struct *fsp,
uint32 lock_pid,
SMB_BIG_UINT count,
SMB_BIG_UINT offset,
@@ -215,8 +216,7 @@ struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
return NULL;
}
- *perr = brl_lock(msg_ctx,
- br_lck,
+ *perr = brl_lock(br_lck,
lock_pid,
procid_self(),
offset,
@@ -226,11 +226,19 @@ struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
blocking_lock,
plock_pid);
- /* blocking ie. pending, locks also count here,
- * as this is an efficiency counter to avoid checking
- * the lock db. on close. JRA. */
+ if (lock_flav == WINDOWS_LOCK &&
+ fsp->current_lock_count != NO_LOCKING_COUNT) {
+ /* blocking ie. pending, locks also count here,
+ * as this is an efficiency counter to avoid checking
+ * the lock db. on close. JRA. */
- fsp->current_lock_count++;
+ fsp->current_lock_count++;
+ } else {
+ /* Notice that this has had a POSIX lock request.
+ * We can't count locks after this so forget them.
+ */
+ fsp->current_lock_count = NO_LOCKING_COUNT;
+ }
return br_lck;
}
@@ -239,8 +247,7 @@ struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
Utility function called by unlocking requests.
****************************************************************************/
-NTSTATUS do_unlock(struct messaging_context *msg_ctx,
- files_struct *fsp,
+NTSTATUS do_unlock(files_struct *fsp,
uint32 lock_pid,
SMB_BIG_UINT count,
SMB_BIG_UINT offset,
@@ -265,8 +272,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx,
return NT_STATUS_NO_MEMORY;
}
- ok = brl_unlock(msg_ctx,
- br_lck,
+ ok = brl_unlock(br_lck,
lock_pid,
procid_self(),
offset,
@@ -280,8 +286,11 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx,
return NT_STATUS_RANGE_NOT_LOCKED;
}
- SMB_ASSERT(fsp->current_lock_count > 0);
- fsp->current_lock_count--;
+ if (lock_flav == WINDOWS_LOCK &&
+ fsp->current_lock_count != NO_LOCKING_COUNT) {
+ SMB_ASSERT(fsp->current_lock_count > 0);
+ fsp->current_lock_count--;
+ }
return NT_STATUS_OK;
}
@@ -330,8 +339,11 @@ NTSTATUS do_lock_cancel(files_struct *fsp,
return NT_STATUS_DOS(ERRDOS, ERRcancelviolation);
}
- SMB_ASSERT(fsp->current_lock_count > 0);
- fsp->current_lock_count--;
+ if (lock_flav == WINDOWS_LOCK &&
+ fsp->current_lock_count != NO_LOCKING_COUNT) {
+ SMB_ASSERT(fsp->current_lock_count > 0);
+ fsp->current_lock_count--;
+ }
return NT_STATUS_OK;
}
@@ -340,8 +352,7 @@ NTSTATUS do_lock_cancel(files_struct *fsp,
Remove any locks on this fd. Called from file_close().
****************************************************************************/
-void locking_close_file(struct messaging_context *msg_ctx,
- files_struct *fsp)
+void locking_close_file(files_struct *fsp)
{
struct byte_range_lock *br_lck;
@@ -361,7 +372,7 @@ void locking_close_file(struct messaging_context *msg_ctx,
if (br_lck) {
cancel_pending_lock_requests_by_fid(fsp, br_lck);
- brl_close_fnum(msg_ctx, br_lck);
+ brl_close_fnum(br_lck);
TALLOC_FREE(br_lck);
}
}
@@ -376,21 +387,23 @@ BOOL locking_init(int read_only)
{
brl_init(read_only);
- if (lock_db)
+ if (tdb)
return True;
- lock_db = db_open(NULL, lock_path("locking.tdb"),
- lp_open_files_db_hash_size(),
- TDB_DEFAULT
- |TDB_VOLATILE
- |(read_only?0x0:TDB_CLEAR_IF_FIRST),
- read_only?O_RDONLY:O_RDWR|O_CREAT, 0644);
+ tdb = tdb_open_log(lock_path("locking.tdb"),
+ lp_open_files_db_hash_size(),
+ TDB_DEFAULT|(read_only?0x0:TDB_CLEAR_IF_FIRST),
+ read_only?O_RDONLY:O_RDWR|O_CREAT,
+ 0644);
- if (!lock_db) {
+ if (!tdb) {
DEBUG(0,("ERROR: Failed to initialise locking database\n"));
return False;
}
+ /* Activate the per-hashchain freelist */
+ tdb_set_max_dead(tdb, 5);
+
if (!posix_locking_init(read_only))
return False;
@@ -405,23 +418,40 @@ BOOL locking_init(int read_only)
BOOL locking_end(void)
{
+ BOOL ret = True;
+
brl_shutdown(open_read_only);
- if (lock_db) {
- TALLOC_FREE(lock_db);
+ if (tdb) {
+ if (tdb_close(tdb) != 0)
+ ret = False;
}
- return True;
+
+ return ret;
}
/*******************************************************************
Form a static locking key for a dev/inode pair.
******************************************************************/
-static TDB_DATA locking_key(struct file_id id)
+/* key and data records in the tdb locking database */
+struct locking_key {
+ SMB_DEV_T dev;
+ SMB_INO_T ino;
+};
+
+/*******************************************************************
+ Form a static locking key for a dev/inode pair.
+******************************************************************/
+
+static TDB_DATA locking_key(SMB_DEV_T dev, SMB_INO_T inode)
{
- static struct file_id key;
+ static struct locking_key key;
TDB_DATA kbuf;
- key = id;
- kbuf.dptr = (uint8 *)&key;
+
+ memset(&key, '\0', sizeof(key));
+ key.dev = dev;
+ key.ino = inode;
+ kbuf.dptr = (char *)&key;
kbuf.dsize = sizeof(key);
return kbuf;
}
@@ -436,15 +466,15 @@ char *share_mode_str(int num, struct share_mode_entry *e)
slprintf(share_str, sizeof(share_str)-1, "share_mode_entry[%d]: %s "
"pid = %s, share_access = 0x%x, private_options = 0x%x, "
- "access_mask = 0x%x, mid = 0x%x, type= 0x%x, gen_id = %lu, "
- "uid = %u, flags = %u, file_id %s",
+ "access_mask = 0x%x, mid = 0x%x, type= 0x%x, file_id = %lu, "
+ "uid = %u, flags = %u, dev = 0x%x, inode = %.0f",
num,
e->op_type == UNUSED_SHARE_MODE_ENTRY ? "UNUSED" : "",
procid_str_static(&e->pid),
e->share_access, e->private_options,
e->access_mask, e->op_mid, e->op_type, e->share_file_id,
(unsigned int)e->uid, (unsigned int)e->flags,
- file_id_static_string(&e->id));
+ (unsigned int)e->dev, (double)e->inode );
return share_str;
}
@@ -479,7 +509,7 @@ static BOOL parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
int i;
if (dbuf.dsize < sizeof(struct locking_data)) {
- smb_panic("parse_share_modes: buffer too short");
+ smb_panic("PANIC: parse_share_modes: buffer too short.\n");
}
data = (struct locking_data *)dbuf.dptr;
@@ -495,7 +525,7 @@ static BOOL parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
if ((lck->num_share_modes < 0) || (lck->num_share_modes > 1000000)) {
DEBUG(0, ("invalid number of share modes: %d\n",
lck->num_share_modes));
- smb_panic("parse_share_modes: invalid number of share modes");
+ smb_panic("PANIC: invalid number of share modes");
}
lck->share_modes = NULL;
@@ -505,7 +535,7 @@ static BOOL parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
if (dbuf.dsize < (sizeof(struct locking_data) +
(lck->num_share_modes *
sizeof(struct share_mode_entry)))) {
- smb_panic("parse_share_modes: buffer too short");
+ smb_panic("PANIC: parse_share_modes: buffer too short.\n");
}
lck->share_modes = (struct share_mode_entry *)
@@ -514,13 +544,13 @@ static BOOL parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
sizeof(struct share_mode_entry));
if (lck->share_modes == NULL) {
- smb_panic("parse_share_modes: talloc failed");
+ smb_panic("talloc failed\n");
}
}
/* Get any delete token. */
if (data->u.s.delete_token_size) {
- uint8 *p = dbuf.dptr + sizeof(*data) +
+ char *p = dbuf.dptr + sizeof(*data) +
(lck->num_share_modes *
sizeof(struct share_mode_entry));
@@ -528,12 +558,12 @@ static BOOL parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
((data->u.s.delete_token_size - sizeof(uid_t)) % sizeof(gid_t)) != 0) {
DEBUG(0, ("parse_share_modes: invalid token size %d\n",
data->u.s.delete_token_size));
- smb_panic("parse_share_modes: invalid token size");
+ smb_panic("parse_share_modes: invalid token size\n");
}
lck->delete_token = TALLOC_P(lck, UNIX_USER_TOKEN);
if (!lck->delete_token) {
- smb_panic("parse_share_modes: talloc failed");
+ smb_panic("talloc failed\n");
}
/* Copy out the uid and gid. */
@@ -552,7 +582,7 @@ static BOOL parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
lck->delete_token->groups = TALLOC_ARRAY(lck->delete_token, gid_t,
lck->delete_token->ngroups);
if (!lck->delete_token) {
- smb_panic("parse_share_modes: talloc failed");
+ smb_panic("talloc failed\n");
}
for (i = 0; i < lck->delete_token->ngroups; i++) {
@@ -566,21 +596,21 @@ static BOOL parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
}
/* Save off the associated service path and filename. */
- lck->servicepath = talloc_strdup(lck, (const char *)dbuf.dptr + sizeof(*data) +
+ lck->servicepath = talloc_strdup(lck, dbuf.dptr + sizeof(*data) +
(lck->num_share_modes *
sizeof(struct share_mode_entry)) +
data->u.s.delete_token_size );
if (lck->servicepath == NULL) {
- smb_panic("parse_share_modes: talloc_strdup failed");
+ smb_panic("talloc_strdup failed\n");
}
- lck->filename = talloc_strdup(lck, (const char *)dbuf.dptr + sizeof(*data) +
+ lck->filename = talloc_strdup(lck, dbuf.dptr + sizeof(*data) +
(lck->num_share_modes *
sizeof(struct share_mode_entry)) +
data->u.s.delete_token_size +
strlen(lck->servicepath) + 1 );
if (lck->filename == NULL) {
- smb_panic("parse_share_modes: talloc_strdup failed");
+ smb_panic("talloc_strdup failed\n");
}
/*
@@ -634,10 +664,10 @@ static TDB_DATA unparse_share_modes(struct share_mode_lock *lck)
delete_token_size +
sp_len + 1 +
strlen(lck->filename) + 1;
- result.dptr = TALLOC_ARRAY(lck, uint8, result.dsize);
+ result.dptr = TALLOC_ARRAY(lck, char, result.dsize);
if (result.dptr == NULL) {
- smb_panic("talloc failed");
+ smb_panic("talloc failed\n");
}
data = (struct locking_data *)result.dptr;
@@ -656,7 +686,7 @@ static TDB_DATA unparse_share_modes(struct share_mode_lock *lck)
/* Store any delete on close token. */
if (lck->delete_token) {
- uint8 *p = result.dptr + offset;
+ char *p = result.dptr + offset;
memcpy(p, &lck->delete_token->uid, sizeof(uid_t));
p += sizeof(uid_t);
@@ -671,10 +701,10 @@ static TDB_DATA unparse_share_modes(struct share_mode_lock *lck)
offset = p - result.dptr;
}
- safe_strcpy((char *)result.dptr + offset, lck->servicepath,
+ safe_strcpy(result.dptr + offset, lck->servicepath,
result.dsize - offset - 1);
offset += sp_len + 1;
- safe_strcpy((char *)result.dptr + offset, lck->filename,
+ safe_strcpy(result.dptr + offset, lck->filename,
result.dsize - offset - 1);
if (DEBUGLEVEL >= 10) {
@@ -686,11 +716,11 @@ static TDB_DATA unparse_share_modes(struct share_mode_lock *lck)
static int share_mode_lock_destructor(struct share_mode_lock *lck)
{
- NTSTATUS status;
+ TDB_DATA key = locking_key(lck->dev, lck->ino);
TDB_DATA data;
if (!lck->modified) {
- return 0;
+ goto done;
}
data = unparse_share_modes(lck);
@@ -698,40 +728,45 @@ static int share_mode_lock_destructor(struct share_mode_lock *lck)
if (data.dptr == NULL) {
if (!lck->fresh) {
/* There has been an entry before, delete it */
-
- status = lck->record->delete_rec(lck->record);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("delete_rec returned %s\n",
- nt_errstr(status)));
- smb_panic("could not delete share entry");
+ if (tdb_delete(tdb, key) == -1) {
+ smb_panic("Could not delete share entry\n");
}
}
goto done;
}
- status = lck->record->store(lck->record, data, TDB_REPLACE);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("store returned %s\n", nt_errstr(status)));
- smb_panic("could not store share mode entry");
+ if (tdb_store(tdb, key, data, TDB_REPLACE) == -1) {
+ smb_panic("Could not store share mode entry\n");
}
done:
+ tdb_chainunlock(tdb, key);
return 0;
}
-static BOOL fill_share_mode_lock(struct share_mode_lock *lck,
- struct file_id id,
- const char *servicepath,
- const char *fname,
- TDB_DATA share_mode_data)
+struct share_mode_lock *get_share_mode_lock(TALLOC_CTX *mem_ctx,
+ SMB_DEV_T dev, SMB_INO_T ino,
+ const char *servicepath,
+ const char *fname)
{
+ struct share_mode_lock *lck;
+ TDB_DATA key = locking_key(dev, ino);
+ TDB_DATA data;
+
+ lck = TALLOC_P(mem_ctx, struct share_mode_lock);
+ if (lck == NULL) {
+ DEBUG(0, ("talloc failed\n"));
+ return NULL;
+ }
+
/* Ensure we set every field here as the destructor must be
valid even if parse_share_modes fails. */
lck->servicepath = NULL;
lck->filename = NULL;
- lck->id = id;
+ lck->dev = dev;
+ lck->ino = ino;
lck->num_share_modes = 0;
lck->share_modes = NULL;
lck->delete_token = NULL;
@@ -739,89 +774,44 @@ static BOOL fill_share_mode_lock(struct share_mode_lock *lck,
lck->fresh = False;
lck->modified = False;
- lck->fresh = (share_mode_data.dptr == NULL);
+ if (tdb_chainlock(tdb, key) != 0) {
+ DEBUG(3, ("Could not lock share entry\n"));
+ TALLOC_FREE(lck);
+ return NULL;
+ }
+
+ /* We must set the destructor immediately after the chainlock
+ ensure the lock is cleaned up on any of the error return
+ paths below. */
+
+ talloc_set_destructor(lck, share_mode_lock_destructor);
+
+ data = tdb_fetch(tdb, key);
+ lck->fresh = (data.dptr == NULL);
if (lck->fresh) {
+
if (fname == NULL || servicepath == NULL) {
- return False;
+ TALLOC_FREE(lck);
+ return NULL;
}
lck->filename = talloc_strdup(lck, fname);
lck->servicepath = talloc_strdup(lck, servicepath);
if (lck->filename == NULL || lck->servicepath == NULL) {
DEBUG(0, ("talloc failed\n"));
- return False;
+ TALLOC_FREE(lck);
+ return NULL;
}
} else {
- if (!parse_share_modes(share_mode_data, lck)) {
+ if (!parse_share_modes(data, lck)) {
DEBUG(0, ("Could not parse share modes\n"));
- return False;
+ TALLOC_FREE(lck);
+ SAFE_FREE(data.dptr);
+ return NULL;
}
}
- return True;
-}
-
-struct share_mode_lock *get_share_mode_lock(TALLOC_CTX *mem_ctx,
- struct file_id id,
- const char *servicepath,
- const char *fname)
-{
- struct share_mode_lock *lck;
- TDB_DATA key;
-
- key.dptr = (unsigned char *)&id;
- key.dsize = sizeof(id);
-
- if (!(lck = TALLOC_P(mem_ctx, struct share_mode_lock))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- if (!(lck->record = lock_db->fetch_locked(lock_db, lck, key))) {
- DEBUG(3, ("Could not lock share entry\n"));
- TALLOC_FREE(lck);
- return NULL;
- }
-
- if (!fill_share_mode_lock(lck, id, servicepath, fname,
- lck->record->value)) {
- DEBUG(3, ("fill_share_mode_lock failed\n"));
- TALLOC_FREE(lck);
- return NULL;
- }
-
- talloc_set_destructor(lck, share_mode_lock_destructor);
-
- return lck;
-}
-
-struct share_mode_lock *fetch_share_mode_unlocked(TALLOC_CTX *mem_ctx,
- struct file_id id,
- const char *servicepath,
- const char *fname)
-{
- struct share_mode_lock *lck;
- TDB_DATA key = locking_key(id);
- TDB_DATA data;
-
- if (!(lck = TALLOC_P(mem_ctx, struct share_mode_lock))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
- }
-
- if (lock_db->fetch(lock_db, lck, key, &data) == -1) {
- DEBUG(3, ("Could not fetch share entry\n"));
- TALLOC_FREE(lck);
- return NULL;
- }
-
- if (!fill_share_mode_lock(lck, id, servicepath, fname, data)) {
- DEBUG(3, ("fill_share_mode_lock failed\n"));
- TALLOC_FREE(lck);
- return NULL;
- }
-
- TALLOC_FREE(data.dptr);
+ SAFE_FREE(data.dptr);
return lck;
}
@@ -833,8 +823,7 @@ struct share_mode_lock *fetch_share_mode_unlocked(TALLOC_CTX *mem_ctx,
Based on an initial code idea from SATOH Fumiyasu <fumiya@samba.gr.jp>
********************************************************************/
-BOOL rename_share_filename(struct messaging_context *msg_ctx,
- struct share_mode_lock *lck,
+BOOL rename_share_filename(struct share_mode_lock *lck,
const char *servicepath,
const char *newname)
{
@@ -844,6 +833,10 @@ BOOL rename_share_filename(struct messaging_context *msg_ctx,
char *frm = NULL;
int i;
+ if (!lck) {
+ return False;
+ }
+
DEBUG(10, ("rename_share_filename: servicepath %s newname %s\n",
servicepath, newname));
@@ -874,7 +867,8 @@ BOOL rename_share_filename(struct messaging_context *msg_ctx,
return False;
}
- push_file_id_16(frm, &lck->id);
+ SDEV_T_VAL(frm,0,lck->dev);
+ SINO_T_VAL(frm,8,lck->ino);
DEBUG(10,("rename_share_filename: msg_len = %u\n", (unsigned int)msg_len ));
@@ -893,28 +887,41 @@ BOOL rename_share_filename(struct messaging_context *msg_ctx,
}
DEBUG(10,("rename_share_filename: sending rename message to pid %s "
- "file_id %s sharepath %s newname %s\n",
- procid_str_static(&se->pid),
- file_id_static_string(&lck->id),
- lck->servicepath, lck->filename ));
+ "dev %x, inode %.0f sharepath %s newname %s\n",
+ procid_str_static(&se->pid),
+ (unsigned int)lck->dev, (double)lck->ino,
+ lck->servicepath, lck->filename ));
- messaging_send_buf(msg_ctx, se->pid, MSG_SMB_FILE_RENAME,
- (uint8 *)frm, msg_len);
+ message_send_pid(se->pid, MSG_SMB_FILE_RENAME,
+ frm, msg_len, True);
}
return True;
}
-BOOL get_delete_on_close_flag(struct file_id id)
+static int pull_delete_on_close_flag(TDB_DATA key, TDB_DATA dbuf,
+ void *private_data)
{
- BOOL result;
- struct share_mode_lock *lck;
-
- if (!(lck = fetch_share_mode_unlocked(NULL, id, NULL, NULL))) {
- return False;
+ BOOL *result = (BOOL *)private_data;
+ struct locking_data *data;
+
+ if (dbuf.dsize < sizeof(struct locking_data)) {
+ smb_panic("PANIC: parse_share_modes: buffer too short.\n");
}
- result = lck->delete_on_close;
- TALLOC_FREE(lck);
+
+ data = (struct locking_data *)dbuf.dptr;
+
+ *result = data->u.s.delete_on_close;
+ return 0;
+}
+
+BOOL get_delete_on_close_flag(SMB_DEV_T dev, SMB_INO_T inode)
+{
+ TDB_DATA key = locking_key(dev, inode);
+ BOOL result = False;
+
+ tdb_parse_record(tdb, key, pull_delete_on_close_flag,
+ (void *)&result);
return result;
}
@@ -922,6 +929,14 @@ BOOL is_valid_share_mode_entry(const struct share_mode_entry *e)
{
int num_props = 0;
+ if (e->op_type == UNUSED_SHARE_MODE_ENTRY) {
+ /* cope with dead entries from the process not
+ existing. These should not be considered valid,
+ otherwise we end up doing zero timeout sharing
+ violation */
+ return False;
+ }
+
num_props += ((e->op_type == NO_OPLOCK) ? 1 : 0);
num_props += (EXCLUSIVE_OPLOCK_TYPE(e->op_type) ? 1 : 0);
num_props += (LEVEL_II_OPLOCK_TYPE(e->op_type) ? 1 : 0);
@@ -957,15 +972,16 @@ static void fill_share_mode_entry(struct share_mode_entry *e,
e->op_type = op_type;
e->time.tv_sec = fsp->open_time.tv_sec;
e->time.tv_usec = fsp->open_time.tv_usec;
- e->id = fsp->file_id;
- e->share_file_id = fsp->fh->gen_id;
+ e->dev = fsp->dev;
+ e->inode = fsp->inode;
+ e->share_file_id = fsp->fh->file_id;
e->uid = (uint32)uid;
e->flags = fsp->posix_open ? SHARE_MODE_FLAG_POSIX_OPEN : 0;
}
static void fill_deferred_open_entry(struct share_mode_entry *e,
const struct timeval request_time,
- struct file_id id, uint16 mid)
+ SMB_DEV_T dev, SMB_INO_T ino, uint16 mid)
{
ZERO_STRUCTP(e);
e->pid = procid_self();
@@ -973,7 +989,8 @@ static void fill_deferred_open_entry(struct share_mode_entry *e,
e->op_type = DEFERRED_OPEN_ENTRY;
e->time.tv_sec = request_time.tv_sec;
e->time.tv_usec = request_time.tv_usec;
- e->id = id;
+ e->dev = dev;
+ e->inode = ino;
e->uid = (uint32)-1;
e->flags = 0;
}
@@ -1012,10 +1029,10 @@ void set_share_mode(struct share_mode_lock *lck, files_struct *fsp,
void add_deferred_open(struct share_mode_lock *lck, uint16 mid,
struct timeval request_time,
- struct file_id id)
+ SMB_DEV_T dev, SMB_INO_T ino)
{
struct share_mode_entry entry;
- fill_deferred_open_entry(&entry, request_time, id, mid);
+ fill_deferred_open_entry(&entry, request_time, dev, ino, mid);
add_share_mode_entry(lck, &entry);
}
@@ -1034,7 +1051,8 @@ static BOOL share_modes_identical(struct share_mode_entry *e1,
fsp->share_access field. */
return (procid_equal(&e1->pid, &e2->pid) &&
- file_id_equal(&e1->id, &e2->id) &&
+ e1->dev == e2->dev &&
+ e1->inode == e2->inode &&
e1->share_file_id == e2->share_file_id );
}
@@ -1043,7 +1061,8 @@ static BOOL deferred_open_identical(struct share_mode_entry *e1,
{
return (procid_equal(&e1->pid, &e2->pid) &&
(e1->op_mid == e2->op_mid) &&
- file_id_equal(&e1->id, &e2->id));
+ (e1->dev == e2->dev) &&
+ (e1->inode == e2->inode));
}
static struct share_mode_entry *find_share_mode_entry(struct share_mode_lock *lck,
@@ -1094,7 +1113,7 @@ void del_deferred_open_entry(struct share_mode_lock *lck, uint16 mid)
struct share_mode_entry entry, *e;
fill_deferred_open_entry(&entry, timeval_zero(),
- lck->id, mid);
+ lck->dev, lck->ino, mid);
e = find_share_mode_entry(lck, &entry);
if (e == NULL) {
@@ -1305,7 +1324,7 @@ BOOL set_delete_on_close(files_struct *fsp, BOOL delete_on_close, UNIX_USER_TOKE
return True;
}
- lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
if (lck == NULL) {
return False;
}
@@ -1353,7 +1372,8 @@ struct forall_state {
void *private_data;
};
-static int traverse_fn(struct db_record *rec, void *_state)
+static int traverse_fn(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf,
+ void *_state)
{
struct forall_state *state = (struct forall_state *)_state;
struct locking_data *data;
@@ -1363,15 +1383,15 @@ static int traverse_fn(struct db_record *rec, void *_state)
int i;
/* Ensure this is a locking_key record. */
- if (rec->key.dsize != sizeof(struct file_id))
+ if (kbuf.dsize != sizeof(struct locking_key))
return 0;
- data = (struct locking_data *)rec->value.dptr;
- shares = (struct share_mode_entry *)(rec->value.dptr + sizeof(*data));
- sharepath = (const char *)rec->value.dptr + sizeof(*data) +
+ data = (struct locking_data *)dbuf.dptr;
+ shares = (struct share_mode_entry *)(dbuf.dptr + sizeof(*data));
+ sharepath = dbuf.dptr + sizeof(*data) +
data->u.s.num_share_mode_entries*sizeof(*shares) +
data->u.s.delete_token_size;
- fname = (const char *)rec->value.dptr + sizeof(*data) +
+ fname = dbuf.dptr + sizeof(*data) +
data->u.s.num_share_mode_entries*sizeof(*shares) +
data->u.s.delete_token_size +
strlen(sharepath) + 1;
@@ -1394,11 +1414,11 @@ int share_mode_forall(void (*fn)(const struct share_mode_entry *, const char *,
{
struct forall_state state;
- if (lock_db == NULL)
+ if (tdb == NULL)
return 0;
state.fn = fn;
state.private_data = private_data;
- return lock_db->traverse_read(lock_db, traverse_fn, (void *)&state);
+ return tdb_traverse(tdb, traverse_fn, (void *)&state);
}
diff --git a/source/locking/posix.c b/source/locking/posix.c
index 0b38d289d84..dc54a341941 100644
--- a/source/locking/posix.c
+++ b/source/locking/posix.c
@@ -195,8 +195,8 @@ static BOOL posix_fcntl_lock(files_struct *fsp, int op, SMB_OFF_T offset, SMB_OF
DEBUG(0,("posix_fcntl_lock: WARNING: lock request at offset %.0f, length %.0f returned\n",
(double)offset,(double)count));
- DEBUGADD(0,("an %s error. This can happen when using 64 bit lock offsets\n", strerror(errno)));
- DEBUGADD(0,("on 32 bit NFS mounted file systems.\n"));
+ DEBUG(0,("an %s error. This can happen when using 64 bit lock offsets\n", strerror(errno)));
+ DEBUG(0,("on 32 bit NFS mounted file systems.\n"));
/*
* If the offset is > 0x7FFFFFFF then this will cause problems on
@@ -240,8 +240,8 @@ static BOOL posix_fcntl_getlock(files_struct *fsp, SMB_OFF_T *poffset, SMB_OFF_T
DEBUG(0,("posix_fcntl_getlock: WARNING: lock request at offset %.0f, length %.0f returned\n",
(double)*poffset,(double)*pcount));
- DEBUGADD(0,("an %s error. This can happen when using 64 bit lock offsets\n", strerror(errno)));
- DEBUGADD(0,("on 32 bit NFS mounted file systems.\n"));
+ DEBUG(0,("an %s error. This can happen when using 64 bit lock offsets\n", strerror(errno)));
+ DEBUG(0,("on 32 bit NFS mounted file systems.\n"));
/*
* If the offset is > 0x7FFFFFFF then this will cause problems on
@@ -318,20 +318,29 @@ BOOL is_posix_locked(files_struct *fsp,
/* The key used in the in-memory POSIX databases. */
struct lock_ref_count_key {
- struct file_id id;
+ SMB_DEV_T device;
+ SMB_INO_T inode;
char r;
};
+struct fd_key {
+ SMB_DEV_T device;
+ SMB_INO_T inode;
+};
+
/*******************************************************************
Form a static locking key for a dev/inode pair for the fd array.
******************************************************************/
-static TDB_DATA fd_array_key(struct file_id id)
+static TDB_DATA fd_array_key(SMB_DEV_T dev, SMB_INO_T inode)
{
- static struct file_id key;
+ static struct fd_key key;
TDB_DATA kbuf;
- key = id;
- kbuf.dptr = (uint8 *)&key;
+
+ memset(&key, '\0', sizeof(key));
+ key.device = dev;
+ key.inode = inode;
+ kbuf.dptr = (char *)&key;
kbuf.dsize = sizeof(key);
return kbuf;
}
@@ -340,15 +349,16 @@ static TDB_DATA fd_array_key(struct file_id id)
Form a static locking key for a dev/inode pair for the lock ref count
******************************************************************/
-static TDB_DATA locking_ref_count_key(struct file_id id)
+static TDB_DATA locking_ref_count_key(SMB_DEV_T dev, SMB_INO_T inode)
{
static struct lock_ref_count_key key;
TDB_DATA kbuf;
memset(&key, '\0', sizeof(key));
- key.id = id;
+ key.device = dev;
+ key.inode = inode;
key.r = 'r';
- kbuf.dptr = (uint8 *)&key;
+ kbuf.dptr = (char *)&key;
kbuf.dsize = sizeof(key);
return kbuf;
}
@@ -359,7 +369,7 @@ static TDB_DATA locking_ref_count_key(struct file_id id)
static TDB_DATA fd_array_key_fsp(files_struct *fsp)
{
- return fd_array_key(fsp->file_id);
+ return fd_array_key(fsp->dev, fsp->inode);
}
/*******************************************************************
@@ -368,7 +378,7 @@ static TDB_DATA fd_array_key_fsp(files_struct *fsp)
static TDB_DATA locking_ref_count_key_fsp(files_struct *fsp)
{
- return locking_ref_count_key(fsp->file_id);
+ return locking_ref_count_key(fsp->dev, fsp->inode);
}
/*******************************************************************
@@ -432,9 +442,9 @@ static void increment_windows_lock_ref_count(files_struct *fsp)
dbuf = tdb_fetch(posix_pending_close_tdb, kbuf);
if (dbuf.dptr == NULL) {
- dbuf.dptr = (uint8 *)SMB_MALLOC_P(int);
+ dbuf.dptr = (char *)SMB_MALLOC_P(int);
if (!dbuf.dptr) {
- smb_panic("increment_windows_lock_ref_count: malloc fail");
+ smb_panic("increment_windows_lock_ref_count: malloc fail.\n");
}
memset(dbuf.dptr, '\0', sizeof(int));
dbuf.dsize = sizeof(int);
@@ -445,7 +455,7 @@ static void increment_windows_lock_ref_count(files_struct *fsp)
memcpy(dbuf.dptr, &lock_ref_count, sizeof(int));
if (tdb_store(posix_pending_close_tdb, kbuf, dbuf, TDB_REPLACE) == -1) {
- smb_panic("increment_windows_lock_ref_count: tdb_store_fail");
+ smb_panic("increment_windows_lock_ref_count: tdb_store_fail.\n");
}
SAFE_FREE(dbuf.dptr);
@@ -461,7 +471,7 @@ static void decrement_windows_lock_ref_count(files_struct *fsp)
dbuf = tdb_fetch(posix_pending_close_tdb, kbuf);
if (!dbuf.dptr) {
- smb_panic("decrement_windows_lock_ref_count: logic error");
+ smb_panic("decrement_windows_lock_ref_count: logic error.\n");
}
memcpy(&lock_ref_count, dbuf.dptr, sizeof(int));
@@ -469,11 +479,11 @@ static void decrement_windows_lock_ref_count(files_struct *fsp)
memcpy(dbuf.dptr, &lock_ref_count, sizeof(int));
if (lock_ref_count < 0) {
- smb_panic("decrement_windows_lock_ref_count: lock_count logic error");
+ smb_panic("decrement_windows_lock_ref_count: lock_count logic error.\n");
}
if (tdb_store(posix_pending_close_tdb, kbuf, dbuf, TDB_REPLACE) == -1) {
- smb_panic("decrement_windows_lock_ref_count: tdb_store_fail");
+ smb_panic("decrement_windows_lock_ref_count: tdb_store_fail.\n");
}
SAFE_FREE(dbuf.dptr);
@@ -500,12 +510,12 @@ void reduce_windows_lock_ref_count(files_struct *fsp, unsigned int dcount)
lock_ref_count -= dcount;
if (lock_ref_count < 0) {
- smb_panic("reduce_windows_lock_ref_count: lock_count logic error");
+ smb_panic("reduce_windows_lock_ref_count: lock_count logic error.\n");
}
memcpy(dbuf.dptr, &lock_ref_count, sizeof(int));
if (tdb_store(posix_pending_close_tdb, kbuf, dbuf, TDB_REPLACE) == -1) {
- smb_panic("reduce_windows_lock_ref_count: tdb_store_fail");
+ smb_panic("reduce_windows_lock_ref_count: tdb_store_fail.\n");
}
SAFE_FREE(dbuf.dptr);
@@ -563,16 +573,16 @@ static void add_fd_to_close_entry(files_struct *fsp)
dbuf = tdb_fetch(posix_pending_close_tdb, kbuf);
- dbuf.dptr = (uint8 *)SMB_REALLOC(dbuf.dptr, dbuf.dsize + sizeof(int));
+ dbuf.dptr = (char *)SMB_REALLOC(dbuf.dptr, dbuf.dsize + sizeof(int));
if (!dbuf.dptr) {
- smb_panic("add_fd_to_close_entry: SMB_REALLOC failed");
+ smb_panic("add_fd_to_close_entry: Realloc fail !\n");
}
memcpy(dbuf.dptr + dbuf.dsize, &fsp->fh->fd, sizeof(int));
dbuf.dsize += sizeof(int);
if (tdb_store(posix_pending_close_tdb, kbuf, dbuf, TDB_REPLACE) == -1) {
- smb_panic("add_fd_to_close_entry: tdb_store_fail");
+ smb_panic("add_fd_to_close_entry: tdb_store_fail.\n");
}
DEBUG(10,("add_fd_to_close_entry: added fd %d file %s\n",
@@ -590,7 +600,7 @@ static void delete_close_entries(files_struct *fsp)
TDB_DATA kbuf = fd_array_key_fsp(fsp);
if (tdb_delete(posix_pending_close_tdb, kbuf) == -1) {
- smb_panic("delete_close_entries: tdb_delete failed");
+ smb_panic("delete_close_entries: tdb_delete fail !\n");
}
}
@@ -641,7 +651,10 @@ NTSTATUS fd_close_posix(struct connection_struct *conn, files_struct *fsp)
*/
ret = SMB_VFS_CLOSE(fsp,fsp->fh->fd);
fsp->fh->fd = -1;
- return map_nt_error_from_unix(errno);
+ if (ret == -1) {
+ return map_nt_error_from_unix(errno);
+ }
+ return NT_STATUS_OK;
}
if (get_windows_lock_ref_count(fsp)) {
@@ -934,7 +947,7 @@ new: start=%.0f,size=%.0f\n", (double)l_curr->start, (double)l_curr->size,
pstring msg;
slprintf(msg, sizeof(msg)-1, "logic flaw in cases: l_curr: start = %.0f, size = %.0f : \
-lock: start = %.0f, size = %.0f", (double)l_curr->start, (double)l_curr->size, (double)lock->start, (double)lock->size );
+lock: start = %.0f, size = %.0f\n", (double)l_curr->start, (double)l_curr->size, (double)lock->start, (double)lock->size );
smb_panic(msg);
}
diff --git a/source/m4/check_gnu_make.m4 b/source/m4/check_gnu_make.m4
deleted file mode 100644
index 44e1d9aa20e..00000000000
--- a/source/m4/check_gnu_make.m4
+++ /dev/null
@@ -1,78 +0,0 @@
-##### http://autoconf-archive.cryp.to/check_gnu_make.html
-#
-# SYNOPSIS
-#
-# CHECK_GNU_MAKE()
-#
-# DESCRIPTION
-#
-# This macro searches for a GNU version of make. If a match is found,
-# the makefile variable `ifGNUmake' is set to the empty string,
-# otherwise it is set to "#". This is useful for including a special
-# features in a Makefile, which cannot be handled by other versions
-# of make. The variable _cv_gnu_make_command is set to the command to
-# invoke GNU make if it exists, the empty string otherwise.
-#
-# Here is an example of its use:
-#
-# Makefile.in might contain:
-#
-# # A failsafe way of putting a dependency rule into a makefile
-# $(DEPEND):
-# $(CC) -MM $(srcdir)/*.c > $(DEPEND)
-#
-# @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
-# @ifGNUmake@ include $(DEPEND)
-# @ifGNUmake@ endif
-#
-# Then configure.in would normally contain:
-#
-# CHECK_GNU_MAKE()
-# AC_OUTPUT(Makefile)
-#
-# Then perhaps to cause gnu make to override any other make, we could
-# do something like this (note that GNU make always looks for
-# GNUmakefile first):
-#
-# if ! test x$_cv_gnu_make_command = x ; then
-# mv Makefile GNUmakefile
-# echo .DEFAULT: > Makefile ;
-# echo \ $_cv_gnu_make_command \$@ >> Makefile;
-# fi
-#
-# Then, if any (well almost any) other make is called, and GNU make
-# also exists, then the other make wraps the GNU make.
-#
-# LAST MODIFICATION
-#
-# 2002-01-04
-#
-# COPYLEFT
-#
-# Copyright (c) 2002 John Darrington <j.darrington@elvis.murdoch.edu.au>
-#
-# Copying and distribution of this file, with or without
-# modification, are permitted in any medium without royalty provided
-# the copyright notice and this notice are preserved.
-
-AC_DEFUN(
- [CHECK_GNU_MAKE], [ AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
- _cv_gnu_make_command='' ;
-dnl Search all the common names for GNU make
- for a in "$MAKE" make gmake gnumake ; do
- if test -z "$a" ; then continue ; fi ;
- if ( sh -c "$a --version" 2> /dev/null | grep GNU 2>&1 > /dev/null ) ; then
- _cv_gnu_make_command=$a ;
- break;
- fi
- done ;
- ) ;
-dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise
- if test "x$_cv_gnu_make_command" != "x" ; then
- ifGNUmake='' ;
- else
- ifGNUmake='#' ;
- AC_MSG_RESULT("Not found");
- fi
- AC_SUBST(ifGNUmake)
-] )
diff --git a/source/m4/cond.m4 b/source/m4/cond.m4
deleted file mode 100644
index d9a58d2f39a..00000000000
--- a/source/m4/cond.m4
+++ /dev/null
@@ -1,34 +0,0 @@
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
diff --git a/source/m4/depend.m4 b/source/m4/depend.m4
deleted file mode 100644
index fd0937330da..00000000000
--- a/source/m4/depend.m4
+++ /dev/null
@@ -1,158 +0,0 @@
-## -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 9
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery. Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
- [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_$1_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
- fi
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- case $depmode in
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- none) break ;;
- esac
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this.
- if depmode=$depmode \
- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_$1_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
diff --git a/source/m4/depout.m4 b/source/m4/depout.m4
deleted file mode 100644
index 0d9717a100d..00000000000
--- a/source/m4/depout.m4
+++ /dev/null
@@ -1,68 +0,0 @@
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 3
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
-done
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
diff --git a/source/m4/lead-dot.m4 b/source/m4/lead-dot.m4
deleted file mode 100644
index d83bfa0b088..00000000000
--- a/source/m4/lead-dot.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-## -*- Autoconf -*-
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
diff --git a/source/m4/make.m4 b/source/m4/make.m4
deleted file mode 100644
index 0969d9a7958..00000000000
--- a/source/m4/make.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo done
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
- am__include=include
- am__quote=
- _am_result=GNU
-fi
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
- am__include=.include
- am__quote="\""
- _am_result=BSD
- fi
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
diff --git a/source/m4/substnot.m4 b/source/m4/substnot.m4
deleted file mode 100644
index 27d3f1fbef9..00000000000
--- a/source/m4/substnot.m4
+++ /dev/null
@@ -1,12 +0,0 @@
-## -*- Autoconf -*-
-# Copyright (C) 2006 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
diff --git a/source/modules/charset_macosxfs.c b/source/modules/charset_macosxfs.c
index 6d829beae68..3e5e2ff8bd2 100644
--- a/source/modules/charset_macosxfs.c
+++ b/source/modules/charset_macosxfs.c
@@ -41,8 +41,8 @@
* See if autoconf has found us the internal headers in some form.
*/
#if HAVE_COREFOUNDATION_CFSTRINGENCODINGCONVERTER_H
-# include <CoreFoundation/CFStringEncodingConverter.h>
-# include <CoreFoundation/CFUnicodePrecomposition.h>
+# include <Corefoundation/CFStringEncodingConverter.h>
+# include <Corefoundation/CFUnicodePrecomposition.h>
# define USE_INTERNAL_API 1
#elif HAVE_CFSTRINGENCODINGCONVERTER_H
# include <CFStringEncodingConverter.h>
@@ -202,9 +202,9 @@ static void hexdump( const char * label, const char * s, size_t len )
* perfect fits.
*/
static size_t macosxfs_encoding_pull(
- void *cd, /* Encoder handle */
- const char **inbuf, size_t *inbytesleft, /* Script string */
- char **outbuf, size_t *outbytesleft) /* UTF-16-LE string */
+ void *cd, /* Encoder handle */
+ char **inbuf, size_t *inbytesleft, /* Script string */
+ char **outbuf, size_t *outbytesleft) /* UTF-16-LE string */
{
static const int script_code = kCFStringEncodingUTF8;
static CFMutableStringRef cfstring = NULL;
@@ -324,9 +324,9 @@ static size_t macosxfs_encoding_pull(
}
static size_t macosxfs_encoding_push(
- void *cd, /* Encoder handle */
- const char **inbuf, size_t *inbytesleft, /* UTF-16-LE string */
- char **outbuf, size_t *outbytesleft) /* Script string */
+ void *cd, /* Encoder handle */
+ char **inbuf, size_t *inbytesleft, /* UTF-16-LE string */
+ char **outbuf, size_t *outbytesleft) /* Script string */
{
static const int script_code = kCFStringEncodingUTF8;
static CFMutableStringRef cfstring = NULL;
@@ -374,7 +374,7 @@ static size_t macosxfs_encoding_push(
charsconverted = CFStringGetBytes(
cfstring, CFRangeMake(0,cfsize),
script_code, 0, False,
- (uint8_t *)(*outbuf), *outbytesleft, &outsize);
+ *outbuf, *outbytesleft, &outsize);
if (0 == charsconverted) {
debug_out("String conversion: "
diff --git a/source/modules/exports.darwin b/source/modules/exports.darwin
deleted file mode 100644
index 5999025534f..00000000000
--- a/source/modules/exports.darwin
+++ /dev/null
@@ -1 +0,0 @@
-_init_module
diff --git a/source/modules/gpfs.c b/source/modules/gpfs.c
index d274984ec70..19050ad3ca5 100644
--- a/source/modules/gpfs.c
+++ b/source/modules/gpfs.c
@@ -25,7 +25,6 @@
#include "gpfs_gpl.h"
static void *libgpfs_handle = NULL;
-static BOOL gpfs_share_modes;
static int (*gpfs_set_share_fn)(int fd, unsigned int allow, unsigned int deny);
static int (*gpfs_set_lease_fn)(int fd, unsigned int leaseType);
@@ -40,10 +39,6 @@ BOOL set_gpfs_sharemode(files_struct *fsp, uint32 access_mask,
unsigned int deny = GPFS_DENY_NONE;
int result;
- if (!gpfs_share_modes) {
- return True;
- }
-
if (gpfs_set_share_fn == NULL) {
return False;
}
@@ -89,10 +84,6 @@ int set_gpfs_lease(int fd, int leasetype)
{
int gpfs_type = GPFS_LEASE_NONE;
- if (!gpfs_share_modes) {
- return True;
- }
-
if (gpfs_set_lease_fn == NULL) {
errno = EINVAL;
return -1;
@@ -147,7 +138,15 @@ void init_gpfs(void)
if (gpfs_set_share_fn == NULL) {
DEBUG(3, ("libgpfs_gpl.so does not contain the symbol "
"'gpfs_set_share'\n"));
- goto failed;
+ sys_dlclose(libgpfs_handle);
+
+ /* leave libgpfs_handle != NULL around, no point
+ in trying twice */
+ gpfs_set_share_fn = NULL;
+ gpfs_set_lease_fn = NULL;
+ gpfs_getacl_fn = NULL;
+ gpfs_putacl_fn = NULL;
+ return;
}
gpfs_set_lease_fn = sys_dlsym(libgpfs_handle, "gpfs_set_lease");
@@ -156,39 +155,45 @@ void init_gpfs(void)
"'gpfs_set_lease'\n"));
sys_dlclose(libgpfs_handle);
- goto failed;
+ /* leave libgpfs_handle != NULL around, no point
+ in trying twice */
+ gpfs_set_share_fn = NULL;
+ gpfs_set_lease_fn = NULL;
+ gpfs_getacl_fn = NULL;
+ gpfs_putacl_fn = NULL;
+ return;
}
gpfs_getacl_fn = sys_dlsym(libgpfs_handle, "gpfs_getacl");
if (gpfs_getacl_fn == NULL) {
DEBUG(3, ("libgpfs_gpl.so does not contain the symbol "
"'gpfs_getacl'\n"));
- goto failed;
+ sys_dlclose(libgpfs_handle);
+
+ /* leave libgpfs_handle != NULL around, no point
+ in trying twice */
+ gpfs_set_share_fn = NULL;
+ gpfs_set_lease_fn = NULL;
+ gpfs_getacl_fn = NULL;
+ gpfs_putacl_fn = NULL;
+ return;
}
gpfs_putacl_fn = sys_dlsym(libgpfs_handle, "gpfs_putacl");
if (gpfs_putacl_fn == NULL) {
DEBUG(3, ("libgpfs_gpl.so does not contain the symbol "
"'gpfs_putacl'\n"));
- goto failed;
- }
+ sys_dlclose(libgpfs_handle);
- if (lp_parm_bool(-1, "gpfs", "sharemodes", True)) {
- gpfs_share_modes = True;
- } else {
- gpfs_share_modes = False;
+ /* leave libgpfs_handle != NULL around, no point
+ in trying twice */
+ gpfs_set_share_fn = NULL;
+ gpfs_set_lease_fn = NULL;
+ gpfs_getacl_fn = NULL;
+ gpfs_putacl_fn = NULL;
+ return;
}
- return;
-
-failed:
- sys_dlclose(libgpfs_handle);
- /* leave libgpfs_handle != NULL around, no point
- in trying twice */
- gpfs_set_share_fn = NULL;
- gpfs_set_lease_fn = NULL;
- gpfs_getacl_fn = NULL;
- gpfs_putacl_fn = NULL;
}
#else
diff --git a/source/modules/nfs4_acls.c b/source/modules/nfs4_acls.c
index 30c209dd93a..8530a5db032 100644
--- a/source/modules/nfs4_acls.c
+++ b/source/modules/nfs4_acls.c
@@ -42,7 +42,7 @@ typedef struct _SMB_ACL4_INT_T
extern struct current_user current_user;
extern int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid);
-extern NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp,
+extern BOOL unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp,
uint32 security_info_sent, SEC_DESC *psd);
static SMB_ACL4_INT_T *get_validated_aclint(SMB4ACL_T *acl)
@@ -84,13 +84,14 @@ static SMB_ACE4_INT_T *get_validated_aceint(SMB4ACE_T *ace)
SMB4ACL_T *smb_create_smb4acl(void)
{
TALLOC_CTX *mem_ctx = main_loop_talloc_get();
- SMB_ACL4_INT_T *acl = (SMB_ACL4_INT_T *)TALLOC_ZERO_SIZE(mem_ctx, sizeof(SMB_ACL4_INT_T));
+ SMB_ACL4_INT_T *acl = (SMB_ACL4_INT_T *)TALLOC_SIZE(mem_ctx, sizeof(SMB_ACL4_INT_T));
if (acl==NULL)
{
DEBUG(0, ("TALLOC_SIZE failed\n"));
errno = ENOMEM;
return NULL;
}
+ memset(acl, 0, sizeof(SMB_ACL4_INT_T));
acl->magic = SMB_ACL4_INT_MAGIC;
/* acl->first, last = NULL not needed */
return (SMB4ACL_T *)acl;
@@ -102,13 +103,14 @@ SMB4ACE_T *smb_add_ace4(SMB4ACL_T *acl, SMB_ACE4PROP_T *prop)
TALLOC_CTX *mem_ctx = main_loop_talloc_get();
SMB_ACE4_INT_T *ace;
- ace = (SMB_ACE4_INT_T *)TALLOC_ZERO_SIZE(mem_ctx, sizeof(SMB_ACE4_INT_T));
+ ace = (SMB_ACE4_INT_T *)TALLOC_SIZE(mem_ctx, sizeof(SMB_ACE4_INT_T));
if (ace==NULL)
{
DEBUG(0, ("TALLOC_SIZE failed\n"));
errno = ENOMEM;
return NULL;
}
+ memset(ace, 0, sizeof(SMB_ACE4_INT_T));
ace->magic = SMB_ACE4_INT_MAGIC;
/* ace->next = NULL not needed */
memcpy(&ace->prop, prop, sizeof(SMB_ACE4PROP_T));
@@ -185,7 +187,7 @@ static int smbacl4_GetFileOwner(files_struct *fsp, SMB_STRUCT_STAT *psbuf)
return 0;
}
-static BOOL smbacl4_nfs42win(TALLOC_CTX *mem_ctx, SMB4ACL_T *acl, /* in */
+static BOOL smbacl4_nfs42win(SMB4ACL_T *acl, /* in */
DOM_SID *psid_owner, /* in */
DOM_SID *psid_group, /* in */
SEC_ACE **ppnt_ace_list, /* out */
@@ -196,18 +198,25 @@ static BOOL smbacl4_nfs42win(TALLOC_CTX *mem_ctx, SMB4ACL_T *acl, /* in */
SMB_ACE4_INT_T *aceint;
SEC_ACE *nt_ace_list = NULL;
int good_aces = 0;
+ TALLOC_CTX *mem_ctx = main_loop_talloc_get();
DEBUG(10, ("smbacl_nfs42win entered"));
aclint = get_validated_aclint(acl);
- /* We do not check for naces being 0 or acl being NULL here because it is done upstream */
- /* in smb_get_nt_acl_nfs4(). */
- nt_ace_list = (SEC_ACE *)TALLOC_ZERO_SIZE(mem_ctx, aclint->naces * sizeof(SEC_ACE));
- if (nt_ace_list==NULL)
- {
- DEBUG(10, ("talloc error"));
- errno = ENOMEM;
+ if (aclint==NULL)
return False;
+
+ if (aclint->naces) {
+ nt_ace_list = (SEC_ACE *)TALLOC_SIZE(mem_ctx, aclint->naces * sizeof(SEC_ACE));
+ if (nt_ace_list==NULL)
+ {
+ DEBUG(10, ("talloc error"));
+ errno = ENOMEM;
+ return False;
+ }
+ memset(nt_ace_list, 0, aclint->naces * sizeof(SEC_ACE));
+ } else {
+ nt_ace_list = NULL;
}
for (aceint=aclint->first; aceint!=NULL; aceint=(SMB_ACE4_INT_T *)aceint->next) {
@@ -281,22 +290,31 @@ size_t smb_get_nt_acl_nfs4(files_struct *fsp,
uid_to_sid(&sid_owner, sbuf.st_uid);
gid_to_sid(&sid_group, sbuf.st_gid);
- if (smbacl4_nfs42win(mem_ctx, acl, &sid_owner, &sid_group, &nt_ace_list, &good_aces)==False) {
+ if (smbacl4_nfs42win(acl,
+ &sid_owner,
+ &sid_group,
+ &nt_ace_list,
+ &good_aces
+ )==False) {
DEBUG(8,("smbacl4_nfs42win failed\n"));
return 0;
}
- psa = make_sec_acl(mem_ctx, NT4_ACL_REVISION, good_aces, nt_ace_list);
+ psa = make_sec_acl(mem_ctx, NT4_ACL_REVISION,
+ good_aces, nt_ace_list);
if (psa == NULL) {
DEBUG(2,("make_sec_acl failed\n"));
return 0;
}
DEBUG(10,("after make sec_acl\n"));
- *ppdesc = make_sec_desc(mem_ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE,
- (security_info & OWNER_SECURITY_INFORMATION) ? &sid_owner : NULL,
- (security_info & GROUP_SECURITY_INFORMATION) ? &sid_group : NULL,
- NULL, psa, &sd_size);
+ *ppdesc = make_sec_desc(mem_ctx, SEC_DESC_REVISION,
+ SEC_DESC_SELF_RELATIVE,
+ (security_info & OWNER_SECURITY_INFORMATION)
+ ? &sid_owner : NULL,
+ (security_info & GROUP_SECURITY_INFORMATION)
+ ? &sid_group : NULL,
+ NULL, psa, &sd_size);
if (*ppdesc==NULL) {
DEBUG(2,("make_sec_desc failed\n"));
return 0;
@@ -430,7 +448,7 @@ static int smbacl4_fill_ace4(
sid_string_static(&ace_nt->trustee)));
memset(ace_v4, 0, sizeof(SMB_ACE4PROP_T));
- ace_v4->aceType = ace_nt->type; /* only ACCESS|DENY supported right now */
+ ace_v4->aceType = ace_nt->type; /* only ACCES|DENY supported right now */
ace_v4->aceFlags = ace_nt->flags & SEC_ACE_FLAG_VALID_INHERIT;
ace_v4->aceMask = ace_nt->access_mask &
(STD_RIGHT_ALL_ACCESS | SA_RIGHT_FILE_ALL_ACCESS);
@@ -559,7 +577,7 @@ static SMB4ACL_T *smbacl4_win2nfs4(
return acl;
}
-NTSTATUS smb_set_nt_acl_nfs4(files_struct *fsp,
+BOOL smb_set_nt_acl_nfs4(files_struct *fsp,
uint32 security_info_sent,
SEC_DESC *psd,
set_nfs4acl_native_fn_t set_nfs4_native)
@@ -569,6 +587,7 @@ NTSTATUS smb_set_nt_acl_nfs4(files_struct *fsp,
BOOL result;
SMB_STRUCT_STAT sbuf;
+ BOOL need_chown = False;
uid_t newUID = (uid_t)-1;
gid_t newGID = (gid_t)-1;
@@ -579,37 +598,43 @@ NTSTATUS smb_set_nt_acl_nfs4(files_struct *fsp,
{
DEBUG(9, ("security_info_sent (0x%x) ignored\n",
security_info_sent));
- return NT_STATUS_OK; /* won't show error - later to be refined... */
+ return True; /* won't show error - later to be refined... */
}
/* Special behaviours */
if (smbacl4_get_vfs_params(SMBACL4_PARAM_TYPE_NAME, fsp, &params))
- return NT_STATUS_NO_MEMORY;
+ return False;
if (smbacl4_GetFileOwner(fsp, &sbuf))
- return map_nt_error_from_unix(errno);
+ return False;
if (params.do_chown) {
/* chown logic is a copy/paste from posix_acl.c:set_nt_acl */
- NTSTATUS status = unpack_nt_owners(SNUM(fsp->conn), &newUID, &newGID, security_info_sent, psd);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!unpack_nt_owners(SNUM(fsp->conn), &newUID, &newGID, security_info_sent, psd))
+ {
DEBUG(8, ("unpack_nt_owners failed"));
- return status;
+ return False;
}
if (((newUID != (uid_t)-1) && (sbuf.st_uid != newUID)) ||
- ((newGID != (gid_t)-1) && (sbuf.st_gid != newGID))) {
- if(try_chown(fsp->conn, fsp->fsp_name, newUID, newGID)) {
- DEBUG(3,("chown %s, %u, %u failed. Error = %s.\n",
- fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID, strerror(errno) ));
- if (errno == EPERM) {
- return NT_STATUS_INVALID_OWNER;
+ ((newGID != (gid_t)-1) && (sbuf.st_gid != newGID))) {
+ need_chown = True;
+ }
+ if (need_chown) {
+ if ((newUID == (uid_t)-1 || newUID == current_user.ut.uid)) {
+ if(try_chown(fsp->conn, fsp->fsp_name, newUID, newGID)) {
+ DEBUG(3,("chown %s, %u, %u failed. Error = %s.\n",
+ fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID, strerror(errno) ));
+ return False;
}
- return map_nt_error_from_unix(errno);
+ DEBUG(10,("chown %s, %u, %u succeeded.\n",
+ fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID));
+ if (smbacl4_GetFileOwner(fsp, &sbuf))
+ return False;
+ need_chown = False;
+ } else { /* chown is needed, but _after_ changing acl */
+ sbuf.st_uid = newUID; /* OWNER@ in case of e_special */
+ sbuf.st_gid = newGID; /* GROUP@ in case of e_special */
}
- DEBUG(10,("chown %s, %u, %u succeeded.\n",
- fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID));
- if (smbacl4_GetFileOwner(fsp, &sbuf))
- return map_nt_error_from_unix(errno);
}
}
@@ -617,7 +642,7 @@ NTSTATUS smb_set_nt_acl_nfs4(files_struct *fsp,
{
acl = smbacl4_win2nfs4(psd->dacl, &params, sbuf.st_uid, sbuf.st_gid);
if (!acl)
- return map_nt_error_from_unix(errno);
+ return False;
smbacl4_dump_nfs4acl(10, acl);
@@ -625,11 +650,25 @@ NTSTATUS smb_set_nt_acl_nfs4(files_struct *fsp,
if (result!=True)
{
DEBUG(10, ("set_nfs4_native failed with %s\n", strerror(errno)));
- return map_nt_error_from_unix(errno);
+ return False;
}
} else
DEBUG(10, ("no dacl found; security_info_sent = 0x%x\n", security_info_sent));
+ /* Any chown pending? */
+ if (need_chown) {
+ DEBUG(3,("chown#2 %s. uid = %u, gid = %u.\n",
+ fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID));
+ if (try_chown(fsp->conn, fsp->fsp_name, newUID, newGID)) {
+ DEBUG(2,("chown#2 %s, %u, %u failed. Error = %s.\n",
+ fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID,
+ strerror(errno)));
+ return False;
+ }
+ DEBUG(10,("chown#2 %s, %u, %u succeeded.\n",
+ fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID));
+ }
+
DEBUG(10, ("smb_set_nt_acl_nfs4 succeeded\n"));
- return NT_STATUS_OK;
+ return True;
}
diff --git a/source/modules/vfs_afsacl.c b/source/modules/vfs_afsacl.c
index 2f472df28cd..47e8ec5aefa 100644
--- a/source/modules/vfs_afsacl.c
+++ b/source/modules/vfs_afsacl.c
@@ -883,7 +883,7 @@ static void merge_unknown_aces(struct afs_acl *src, struct afs_acl *dst)
}
}
-static NTSTATUS afs_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL afs_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
uint32 security_info_sent,
struct security_descriptor *psd)
{
@@ -980,7 +980,7 @@ static NTSTATUS afs_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
free_afs_acl(&old_afs_acl);
free_afs_acl(&new_afs_acl);
- return (ret == 0) ? NT_STATUS_OK : NT_STATUS_ACCESS_DENIED;
+ return (ret == 0);
}
static size_t afsacl_fget_nt_acl(struct vfs_handle_struct *handle,
@@ -998,7 +998,7 @@ static size_t afsacl_get_nt_acl(struct vfs_handle_struct *handle,
return afs_get_nt_acl(fsp, security_info, ppdesc);
}
-NTSTATUS afsacl_fset_nt_acl(vfs_handle_struct *handle,
+BOOL afsacl_fset_nt_acl(vfs_handle_struct *handle,
files_struct *fsp,
int fd, uint32 security_info_sent,
SEC_DESC *psd)
@@ -1006,7 +1006,7 @@ NTSTATUS afsacl_fset_nt_acl(vfs_handle_struct *handle,
return afs_set_nt_acl(handle, fsp, security_info_sent, psd);
}
-NTSTATUS afsacl_set_nt_acl(vfs_handle_struct *handle,
+BOOL afsacl_set_nt_acl(vfs_handle_struct *handle,
files_struct *fsp,
const char *name, uint32 security_info_sent,
SEC_DESC *psd)
diff --git a/source/modules/vfs_aixacl2.c b/source/modules/vfs_aixacl2.c
index 0ec2e6a5b3e..f1e116ec197 100644
--- a/source/modules/vfs_aixacl2.c
+++ b/source/modules/vfs_aixacl2.c
@@ -366,10 +366,10 @@ static BOOL aixjfs2_process_smbacl(files_struct *fsp, SMB4ACL_T *smbacl)
return True;
}
-static NTSTATUS aixjfs2_set_nt_acl_common(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
+static BOOL aixjfs2_set_nt_acl_common(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
{
acl_type_t acl_type_info;
- NTSTATUS result = NT_STATUS_ACCESS_DENIED;
+ BOOL result = False;
int rc;
rc = aixjfs2_query_acl_support(
@@ -385,17 +385,17 @@ static NTSTATUS aixjfs2_set_nt_acl_common(files_struct *fsp, uint32 security_inf
} else if (rc==1) { /* assume POSIX ACL - by default... */
result = set_nt_acl(fsp, security_info_sent, psd);
} else
- result = map_nt_error_from_unix(errno); /* query failed */
+ result = False; /* query failed */
return result;
}
-NTSTATUS aixjfs2_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd)
+BOOL aixjfs2_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd)
{
return aixjfs2_set_nt_acl_common(fsp, security_info_sent, psd);
}
-NTSTATUS aixjfs2_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd)
+BOOL aixjfs2_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd)
{
return aixjfs2_set_nt_acl_common(fsp, security_info_sent, psd);
}
diff --git a/source/modules/vfs_cap.c b/source/modules/vfs_cap.c
index 04dbec95b6b..f89e149d0eb 100644
--- a/source/modules/vfs_cap.c
+++ b/source/modules/vfs_cap.c
@@ -123,13 +123,6 @@ static int cap_chown(vfs_handle_struct *handle, const char *path, uid_t uid, gid
return SMB_VFS_NEXT_CHOWN(handle, cappath, uid, gid);
}
-static int cap_lchown(vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid)
-{
- pstring cappath;
- capencode(cappath, path);
- return SMB_VFS_NEXT_LCHOWN(handle, cappath, uid, gid);
-}
-
static int cap_chdir(vfs_handle_struct *handle, const char *path)
{
pstring cappath;
@@ -184,7 +177,7 @@ static char *cap_realpath(vfs_handle_struct *handle, const char *path, char *res
return SMB_VFS_NEXT_REALPATH(handle, path, resolved_path);
}
-static NTSTATUS cap_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor *psd)
+static BOOL cap_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor_info *psd)
{
pstring capname;
capencode(capname, name);
@@ -333,7 +326,6 @@ static vfs_op_tuple cap_op_tuples[] = {
{SMB_VFS_OP(cap_unlink), SMB_VFS_OP_UNLINK, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(cap_chmod), SMB_VFS_OP_CHMOD, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(cap_chown), SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_TRANSPARENT},
- {SMB_VFS_OP(cap_lchown), SMB_VFS_OP_LCHOWN, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(cap_chdir), SMB_VFS_OP_CHDIR, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(cap_ntimes), SMB_VFS_OP_NTIMES, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(cap_symlink), SMB_VFS_OP_SYMLINK, SMB_VFS_LAYER_TRANSPARENT},
diff --git a/source/modules/vfs_catia.c b/source/modules/vfs_catia.c
index e2a90a5dc9c..870bf626565 100644
--- a/source/modules/vfs_catia.c
+++ b/source/modules/vfs_catia.c
@@ -169,16 +169,6 @@ static int catia_chown(vfs_handle_struct *handle,
return SMB_VFS_NEXT_CHOWN(handle, name, uid, gid);
}
-static int catia_lchown(vfs_handle_struct *handle,
- const char *path, uid_t uid, gid_t gid)
-{
- pstring name;
- pstrcpy(name, path);
- to_unix(name);
-
- return SMB_VFS_NEXT_LCHOWN(handle, name, uid, gid);
-}
-
static int catia_chdir(vfs_handle_struct *handle,
const char *path)
{
@@ -232,15 +222,15 @@ static char *catia_realpath(vfs_handle_struct *handle,
static size_t catia_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
const char *name, uint32 security_info,
- struct security_descriptor **ppdesc)
+ struct security_descriptor_info **ppdesc)
{
return SMB_VFS_NEXT_GET_NT_ACL(handle, fsp, name, security_info,
ppdesc);
}
-static NTSTATUS catia_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL catia_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
const char *name, uint32 security_info_sent,
- struct security_descriptor *psd)
+ struct security_descriptor_info *psd)
{
return SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent,
psd);
@@ -284,8 +274,6 @@ SMB_VFS_LAYER_TRANSPARENT},
SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(catia_chown), SMB_VFS_OP_CHOWN,
SMB_VFS_LAYER_TRANSPARENT},
- {SMB_VFS_OP(catia_lchown), SMB_VFS_OP_LCHOWN,
-SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(catia_chdir), SMB_VFS_OP_CHDIR,
SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(catia_getwd), SMB_VFS_OP_GETWD,
diff --git a/source/modules/vfs_default.c b/source/modules/vfs_default.c
index 930b7c85072..98e9aaa2631 100644
--- a/source/modules/vfs_default.c
+++ b/source/modules/vfs_default.c
@@ -568,7 +568,7 @@ static int vfswrap_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd,
return result;
}
-static int vfswrap_chown(vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid)
+static int vfswrap_chown(vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid)
{
int result;
@@ -593,16 +593,6 @@ static int vfswrap_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd,
#endif
}
-static int vfswrap_lchown(vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid)
-{
- int result;
-
- START_PROFILE(syscall_lchown);
- result = sys_lchown(path, uid, gid);
- END_PROFILE(syscall_lchown);
- return result;
-}
-
static int vfswrap_chdir(vfs_handle_struct *handle, const char *path)
{
int result;
@@ -792,10 +782,6 @@ static BOOL vfswrap_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, i
BOOL result;
START_PROFILE(syscall_fcntl_lock);
-
- /* SMB_VFS_GETLOCK should be used to query lock status. */
- SMB_ASSERT(op != SMB_F_GETLK);
-
result = fcntl_lock(fd, op, offset, count, type);
END_PROFILE(syscall_fcntl_lock);
return result;
@@ -947,9 +933,9 @@ static size_t vfswrap_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, c
return result;
}
-static NTSTATUS vfswrap_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd)
+static BOOL vfswrap_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd)
{
- NTSTATUS result;
+ BOOL result;
START_PROFILE(fset_nt_acl);
result = set_nt_acl(fsp, security_info_sent, psd);
@@ -957,9 +943,9 @@ static NTSTATUS vfswrap_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp
return result;
}
-static NTSTATUS vfswrap_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd)
+static BOOL vfswrap_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd)
{
- NTSTATUS result;
+ BOOL result;
START_PROFILE(set_nt_acl);
result = set_nt_acl(fsp, security_info_sent, psd);
@@ -1282,8 +1268,6 @@ static vfs_op_tuple vfs_default_ops[] = {
SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(vfswrap_fchown), SMB_VFS_OP_FCHOWN,
SMB_VFS_LAYER_OPAQUE},
- {SMB_VFS_OP(vfswrap_lchown), SMB_VFS_OP_LCHOWN,
- SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(vfswrap_chdir), SMB_VFS_OP_CHDIR,
SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(vfswrap_getwd), SMB_VFS_OP_GETWD,
diff --git a/source/modules/vfs_full_audit.c b/source/modules/vfs_full_audit.c
index e76cb9fc23f..62530fb09ce 100644
--- a/source/modules/vfs_full_audit.c
+++ b/source/modules/vfs_full_audit.c
@@ -147,8 +147,6 @@ static int smb_full_audit_chown(vfs_handle_struct *handle,
const char *path, uid_t uid, gid_t gid);
static int smb_full_audit_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd,
uid_t uid, gid_t gid);
-static int smb_full_audit_lchown(vfs_handle_struct *handle,
- const char *path, uid_t uid, gid_t gid);
static int smb_full_audit_chdir(vfs_handle_struct *handle,
const char *path);
static char *smb_full_audit_getwd(vfs_handle_struct *handle,
@@ -191,10 +189,10 @@ static size_t smb_full_audit_fget_nt_acl(vfs_handle_struct *handle, files_struct
static size_t smb_full_audit_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
const char *name, uint32 security_info,
SEC_DESC **ppdesc);
-static NTSTATUS smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
int fd, uint32 security_info_sent,
SEC_DESC *psd);
-static NTSTATUS smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
const char *name, uint32 security_info_sent,
SEC_DESC *psd);
static int smb_full_audit_chmod_acl(vfs_handle_struct *handle,
@@ -382,8 +380,6 @@ static vfs_op_tuple audit_op_tuples[] = {
SMB_VFS_LAYER_LOGGER},
{SMB_VFS_OP(smb_full_audit_fchown), SMB_VFS_OP_FCHOWN,
SMB_VFS_LAYER_LOGGER},
- {SMB_VFS_OP(smb_full_audit_lchown), SMB_VFS_OP_LCHOWN,
- SMB_VFS_LAYER_LOGGER},
{SMB_VFS_OP(smb_full_audit_chdir), SMB_VFS_OP_CHDIR,
SMB_VFS_LAYER_LOGGER},
{SMB_VFS_OP(smb_full_audit_getwd), SMB_VFS_OP_GETWD,
@@ -564,7 +560,6 @@ static struct {
{ SMB_VFS_OP_FCHMOD, "fchmod" },
{ SMB_VFS_OP_CHOWN, "chown" },
{ SMB_VFS_OP_FCHOWN, "fchown" },
- { SMB_VFS_OP_LCHOWN, "lchown" },
{ SMB_VFS_OP_CHDIR, "chdir" },
{ SMB_VFS_OP_GETWD, "getwd" },
{ SMB_VFS_OP_NTIMES, "ntimes" },
@@ -1263,19 +1258,6 @@ static int smb_full_audit_fchown(vfs_handle_struct *handle, files_struct *fsp, i
return result;
}
-static int smb_full_audit_lchown(vfs_handle_struct *handle,
- const char *path, uid_t uid, gid_t gid)
-{
- int result;
-
- result = SMB_VFS_NEXT_LCHOWN(handle, path, uid, gid);
-
- do_log(SMB_VFS_OP_LCHOWN, (result >= 0), handle, "%s|%ld|%ld",
- path, (long int)uid, (long int)gid);
-
- return result;
-}
-
static int smb_full_audit_chdir(vfs_handle_struct *handle,
const char *path)
{
@@ -1497,30 +1479,30 @@ static size_t smb_full_audit_get_nt_acl(vfs_handle_struct *handle, files_struct
return result;
}
-static NTSTATUS smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
int fd, uint32 security_info_sent,
SEC_DESC *psd)
{
- NTSTATUS result;
+ BOOL result;
result = SMB_VFS_NEXT_FSET_NT_ACL(handle, fsp, fd, security_info_sent,
psd);
- do_log(SMB_VFS_OP_FSET_NT_ACL, NT_STATUS_IS_OK(result), handle, "%s", fsp->fsp_name);
+ do_log(SMB_VFS_OP_FSET_NT_ACL, result, handle, "%s", fsp->fsp_name);
return result;
}
-static NTSTATUS smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+static BOOL smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
const char *name, uint32 security_info_sent,
SEC_DESC *psd)
{
- NTSTATUS result;
+ BOOL result;
result = SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent,
psd);
- do_log(SMB_VFS_OP_SET_NT_ACL, NT_STATUS_IS_OK(result), handle, "%s", fsp->fsp_name);
+ do_log(SMB_VFS_OP_SET_NT_ACL, result, handle, "%s", fsp->fsp_name);
return result;
}
diff --git a/source/modules/vfs_gpfs.c b/source/modules/vfs_gpfs.c
index 9c9503e7722..932b5000c83 100644
--- a/source/modules/vfs_gpfs.c
+++ b/source/modules/vfs_gpfs.c
@@ -141,30 +141,28 @@ static struct gpfs_acl *gpfs_getacl_alloc(const char *fname, gpfs_aclType_t type
return acl;
}
-/* Tries to get nfs4 acls and returns SMB ACL allocated.
- * On failure returns 1 if it got non-NFSv4 ACL to prompt
- * retry with POSIX ACL checks.
- * On failure returns -1 if there is system (GPFS) error, check errno.
- * Returns 0 on success
- */
-static int gpfs_get_nfs4_acl(const char *fname, SMB4ACL_T **ppacl)
+static BOOL gpfs_get_nfs4_acl(struct files_struct *fsp, SMB4ACL_T **ppacl, BOOL *pretryPosix)
{
+ TALLOC_CTX *mem_ctx;
int i;
struct gpfs_acl *gacl = NULL;
- DEBUG(10, ("gpfs_get_nfs4_acl invoked for %s\n", fname));
+
+ mem_ctx = main_loop_talloc_get();
+
+ DEBUG(10, ("gpfs_get_nfs4_acl invoked for %s\n", fsp->fsp_name));
/* First get the real acl length */
- gacl = gpfs_getacl_alloc(fname, GPFS_ACL_TYPE_NFS4);
+ gacl = gpfs_getacl_alloc(fsp->fsp_name, GPFS_ACL_TYPE_NFS4);
if (gacl == NULL) {
DEBUG(9, ("gpfs_getacl failed for %s with %s\n",
- fname, strerror(errno)));
- return -1;
+ fsp->fsp_name, strerror(errno)));
+ return False;
}
if (gacl->acl_type != GPFS_ACL_TYPE_NFS4) {
DEBUG(10, ("Got non-nfsv4 acl\n"));
- /* Retry with POSIX ACLs check */
- return 1;
+ *pretryPosix = True;
+ return False;
}
*ppacl = smb_create_smb4acl();
@@ -176,11 +174,12 @@ static int gpfs_get_nfs4_acl(const char *fname, SMB4ACL_T **ppacl)
for (i=0; i<gacl->acl_nace; i++) {
struct gpfs_ace_v4 *gace = &gacl->ace_v4[i];
SMB_ACE4PROP_T smbace;
+ memset(&smbace, 0, sizeof(SMB4ACE_T));
+
DEBUG(10, ("type: %d, iflags: %x, flags: %x, mask: %x, "
"who: %d\n", gace->aceType, gace->aceIFlags,
gace->aceFlags, gace->aceMask, gace->aceWho));
- memset(&smbace, 0, sizeof(SMB4ACE_T));
if (gace->aceIFlags & ACE4_IFLAG_SPECIAL_ID) {
smbace.flags |= SMB_ACE4_ID_SPECIAL;
switch (gace->aceWho) {
@@ -205,47 +204,35 @@ static int gpfs_get_nfs4_acl(const char *fname, SMB4ACL_T **ppacl)
smbace.who.uid = gace->aceWho;
}
- /* remove redundent deny entries */
- if (i > 0 && gace->aceType == SMB_ACE4_ACCESS_DENIED_ACE_TYPE) {
- struct gpfs_ace_v4 *prev = &gacl->ace_v4[i-1];
- if (prev->aceType == SMB_ACE4_ACCESS_ALLOWED_ACE_TYPE &&
- prev->aceFlags == gace->aceFlags &&
- prev->aceIFlags == gace->aceIFlags &&
- (gace->aceMask & prev->aceMask) == 0 &&
- gace->aceWho == prev->aceWho) {
- /* its redundent - skip it */
- continue;
- }
- }
-
smbace.aceType = gace->aceType;
smbace.aceFlags = gace->aceFlags;
smbace.aceMask = gace->aceMask;
+ smbace.flags = (gace->aceIFlags&ACE4_IFLAG_SPECIAL_ID) ? SMB_ACE4_ID_SPECIAL : 0;
+
smb_add_ace4(*ppacl, &smbace);
}
- return 0;
+ return True;
}
static size_t gpfsacl_get_nt_acl_common(files_struct *fsp,
uint32 security_info, SEC_DESC **ppdesc)
{
SMB4ACL_T *pacl = NULL;
- int result;
+ BOOL result;
+ BOOL retryPosix = False;
*ppdesc = NULL;
- result = gpfs_get_nfs4_acl(fsp->fsp_name, &pacl);
-
- if (result == 0)
- return smb_get_nt_acl_nfs4(fsp, security_info, ppdesc, pacl);
-
- if (result > 0) {
+ result = gpfs_get_nfs4_acl(fsp, &pacl, &retryPosix);
+ if (retryPosix)
+ {
DEBUG(10, ("retrying with posix acl...\n"));
return get_nt_acl(fsp, security_info, ppdesc);
}
-
- /* GPFS ACL was not read, something wrong happened, error code is set in errno */
- return 0;
+ if (result==False)
+ return 0;
+
+ return smb_get_nt_acl_nfs4(fsp, security_info, ppdesc, pacl);
}
size_t gpfsacl_fget_nt_acl(vfs_handle_struct *handle,
@@ -334,14 +321,14 @@ static BOOL gpfsacl_process_smbacl(files_struct *fsp, SMB4ACL_T *smbacl)
return True;
}
-static NTSTATUS gpfsacl_set_nt_acl_internal(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
+static BOOL gpfsacl_set_nt_acl_internal(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
{
struct gpfs_acl *acl;
- NTSTATUS result = NT_STATUS_ACCESS_DENIED;
+ BOOL result = False;
acl = gpfs_getacl_alloc(fsp->fsp_name, GPFS_ACL_TYPE_ACCESS);
if (acl == NULL)
- return result;
+ return False;
if (acl->acl_version&GPFS_ACL_VERSION_NFS4)
{
@@ -355,12 +342,12 @@ static NTSTATUS gpfsacl_set_nt_acl_internal(files_struct *fsp, uint32 security_i
return result;
}
-static NTSTATUS gpfsacl_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd)
+static BOOL gpfsacl_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd)
{
return gpfsacl_set_nt_acl_internal(fsp, security_info_sent, psd);
}
-static NTSTATUS gpfsacl_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, char *name, uint32 security_info_sent, SEC_DESC *psd)
+static BOOL gpfsacl_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, char *name, uint32 security_info_sent, SEC_DESC *psd)
{
return gpfsacl_set_nt_acl_internal(fsp, security_info_sent, psd);
}
@@ -621,77 +608,57 @@ int gpfsacl_sys_acl_delete_def_file(vfs_handle_struct *handle,
return -1;
}
-static int vfs_gpfs_chmod(vfs_handle_struct *handle, const char *path, mode_t mode)
-{
- SMB_STRUCT_STAT st;
- if (SMB_VFS_NEXT_STAT(handle, path, &st) != 0) {
- return -1;
- }
- /* avoid chmod() if possible, to preserve acls */
- if ((st.st_mode & ~S_IFMT) == mode) {
- return 0;
- }
- return SMB_VFS_NEXT_CHMOD(handle, path, mode);
-}
-
-static int vfs_gpfs_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode)
-{
- SMB_STRUCT_STAT st;
- if (SMB_VFS_NEXT_FSTAT(handle, fsp, fd, &st) != 0) {
- return -1;
- }
- /* avoid chmod() if possible, to preserve acls */
- if ((st.st_mode & ~S_IFMT) == mode) {
- return 0;
- }
- return SMB_VFS_NEXT_FCHMOD(handle, fsp, fd, mode);
-}
-
/* VFS operations structure */
static vfs_op_tuple gpfs_op_tuples[] = {
- { SMB_VFS_OP(vfs_gpfs_kernel_flock), SMB_VFS_OP_KERNEL_FLOCK,
- SMB_VFS_LAYER_OPAQUE },
-
- { SMB_VFS_OP(vfs_gpfs_setlease), SMB_VFS_OP_LINUX_SETLEASE,
- SMB_VFS_LAYER_OPAQUE },
-
- { SMB_VFS_OP(gpfsacl_fget_nt_acl), SMB_VFS_OP_FGET_NT_ACL,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(vfs_gpfs_kernel_flock),
+ SMB_VFS_OP_KERNEL_FLOCK,
+ SMB_VFS_LAYER_OPAQUE},
- { SMB_VFS_OP(gpfsacl_get_nt_acl), SMB_VFS_OP_GET_NT_ACL,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(vfs_gpfs_setlease),
+ SMB_VFS_OP_LINUX_SETLEASE,
+ SMB_VFS_LAYER_OPAQUE},
- { SMB_VFS_OP(gpfsacl_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_fget_nt_acl),
+ SMB_VFS_OP_FGET_NT_ACL,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(gpfsacl_set_nt_acl), SMB_VFS_OP_SET_NT_ACL,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_get_nt_acl),
+ SMB_VFS_OP_GET_NT_ACL,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(gpfsacl_sys_acl_get_file), SMB_VFS_OP_SYS_ACL_GET_FILE,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_fset_nt_acl),
+ SMB_VFS_OP_FSET_NT_ACL,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(gpfsacl_sys_acl_get_fd), SMB_VFS_OP_SYS_ACL_GET_FD,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_set_nt_acl),
+ SMB_VFS_OP_SET_NT_ACL,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(gpfsacl_sys_acl_set_file), SMB_VFS_OP_SYS_ACL_SET_FILE,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_sys_acl_get_file),
+ SMB_VFS_OP_SYS_ACL_GET_FILE,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(gpfsacl_sys_acl_set_fd), SMB_VFS_OP_SYS_ACL_SET_FD,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_sys_acl_get_fd),
+ SMB_VFS_OP_SYS_ACL_GET_FD,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(gpfsacl_sys_acl_delete_def_file),
- SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_sys_acl_set_file),
+ SMB_VFS_OP_SYS_ACL_SET_FILE,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(vfs_gpfs_chmod), SMB_VFS_OP_CHMOD,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_sys_acl_set_fd),
+ SMB_VFS_OP_SYS_ACL_SET_FD,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(vfs_gpfs_fchmod), SMB_VFS_OP_FCHMOD,
- SMB_VFS_LAYER_TRANSPARENT },
+ {SMB_VFS_OP(gpfsacl_sys_acl_delete_def_file),
+ SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE,
+ SMB_VFS_LAYER_TRANSPARENT},
- { SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP }
+ {SMB_VFS_OP(NULL),
+ SMB_VFS_OP_NOOP,
+ SMB_VFS_LAYER_NOOP}
};
diff --git a/source/modules/vfs_netatalk.c b/source/modules/vfs_netatalk.c
index 6ff53760f57..efcc9816794 100644
--- a/source/modules/vfs_netatalk.c
+++ b/source/modules/vfs_netatalk.c
@@ -375,38 +375,6 @@ exit_chown:
return ret;
}
-static int atalk_lchown(struct vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid)
-{
- int ret = 0;
- char *adbl_path = 0;
- char *orig_path = 0;
- SMB_STRUCT_STAT adbl_info;
- SMB_STRUCT_STAT orig_info;
- TALLOC_CTX *ctx;
-
- ret = SMB_VFS_NEXT_CHOWN(handle, path, uid, gid);
-
- if (!path) return ret;
-
- if (!(ctx = talloc_init("lchown_file")))
- return ret;
-
- if (atalk_build_paths(ctx, handle->conn->origpath, path, &adbl_path, &orig_path,
- &adbl_info, &orig_info) != 0)
- goto exit_lchown;
-
- if (!S_ISDIR(orig_info.st_mode) && !S_ISREG(orig_info.st_mode)) {
- DEBUG(3, ("ATALK: %s has passed..\n", orig_path));
- goto exit_lchown;
- }
-
- sys_lchown(adbl_path, uid, gid);
-
-exit_lchown:
- talloc_destroy(ctx);
- return ret;
-}
-
static vfs_op_tuple atalk_ops[] = {
/* Directory operations */
@@ -420,7 +388,6 @@ static vfs_op_tuple atalk_ops[] = {
{SMB_VFS_OP(atalk_unlink), SMB_VFS_OP_UNLINK, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(atalk_chmod), SMB_VFS_OP_CHMOD, SMB_VFS_LAYER_TRANSPARENT},
{SMB_VFS_OP(atalk_chown), SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_TRANSPARENT},
- {SMB_VFS_OP(atalk_lchown), SMB_VFS_OP_LCHOWN, SMB_VFS_LAYER_TRANSPARENT},
/* Finish VFS operations definition */
diff --git a/source/modules/vfs_readahead.c b/source/modules/vfs_readahead.c
index 9c20acebd94..e0f137af81f 100644
--- a/source/modules/vfs_readahead.c
+++ b/source/modules/vfs_readahead.c
@@ -160,7 +160,7 @@ static int readahead_connect(struct vfs_handle_struct *handle,
handle->data = (void *)rhd;
handle->free_data = free_readahead_data;
- return 0;
+ return SMB_VFS_NEXT_CONNECT(handle, service, user);
}
/*******************************************************************
diff --git a/source/modules/vfs_recycle.c b/source/modules/vfs_recycle.c
index 3a72cacc137..a20e09f0108 100644
--- a/source/modules/vfs_recycle.c
+++ b/source/modules/vfs_recycle.c
@@ -386,28 +386,20 @@ static BOOL matchparam(const char **haystack_list, const char *needle)
/**
* Touch access or modify date
**/
-static void recycle_do_touch(vfs_handle_struct *handle, const char *fname,
- BOOL touch_mtime)
+static void recycle_do_touch(vfs_handle_struct *handle, const char *fname, BOOL touch_mtime)
{
SMB_STRUCT_STAT st;
struct timespec ts[2];
- int ret, err;
-
+
if (SMB_VFS_NEXT_STAT(handle, fname, &st) != 0) {
- DEBUG(0,("recycle: stat for %s returned %s\n",
- fname, strerror(errno)));
+ DEBUG(0,("recycle: stat for %s returned %s\n", fname, strerror(errno)));
return;
}
ts[0] = timespec_current(); /* atime */
ts[1] = touch_mtime ? ts[0] : get_mtimespec(&st); /* mtime */
- become_root();
- ret = SMB_VFS_NEXT_NTIMES(handle, fname, ts);
- err = errno;
- unbecome_root();
- if (ret == -1 ) {
- DEBUG(0, ("recycle: touching %s failed, reason = %s\n",
- fname, strerror(err)));
+ if (SMB_VFS_NEXT_NTIMES(handle, fname, ts) == -1 ) {
+ DEBUG(0, ("recycle: touching %s failed, reason = %s\n", fname, strerror(errno)));
}
}
diff --git a/source/modules/vfs_zfsacl.c b/source/modules/vfs_zfsacl.c
deleted file mode 100644
index a68258cfdb9..00000000000
--- a/source/modules/vfs_zfsacl.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Convert ZFS/NFSv4 acls to NT acls and vice versa.
- *
- * Copyright (C) Jiri Sasek, 2007
- * based on the foobar.c module which is copyrighted by Volker Lendecke
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include "includes.h"
-#include "nfs4_acls.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_VFS
-
-#define ZFSACL_MODULE_NAME "zfsacl"
-
-/* zfs_get_nt_acl()
- * read the local file's acls and return it in NT form
- * using the NFSv4 format conversion
- */
-static size_t zfs_get_nt_acl(struct files_struct *fsp, uint32 security_info,
- struct security_descriptor **ppdesc)
-{
- int naces, i;
- ace_t *acebuf;
- SMB4ACL_T *pacl;
- TALLOC_CTX *mem_ctx;
-
- /* read the number of file aces */
- if((naces = acl(fsp->fsp_name, ACE_GETACLCNT, 0, NULL)) == -1) {
- if(errno == ENOSYS) {
- DEBUG(9, ("acl(ACE_GETACLCNT, %s): Operation is not supported on the filesystem where the file reside"));
- } else {
- DEBUG(9, ("acl(ACE_GETACLCNT, %s): %s ", fsp->fsp_name,
- strerror(errno)));
- }
- return 0;
- }
- /* allocate the field of ZFS aces */
- mem_ctx = main_loop_talloc_get();
- acebuf = (ace_t *) talloc_size(mem_ctx, sizeof(ace_t)*naces);
- if(acebuf == NULL) {
- errno = ENOMEM;
- return 0;
- }
- /* read the aces into the field */
- if(acl(fsp->fsp_name, ACE_GETACL, naces, acebuf) < 0) {
- DEBUG(9, ("acl(ACE_GETACL, %s): %s ", fsp->fsp_name,
- strerror(errno)));
- return 0;
- }
- /* create SMB4ACL data */
- if((pacl = smb_create_smb4acl()) == NULL) return 0;
- for(i=0; i<naces; i++) {
- SMB_ACE4PROP_T aceprop;
-
- aceprop.aceType = (uint32) acebuf[i].a_type;
- aceprop.aceFlags = (uint32) acebuf[i].a_flags;
- aceprop.aceMask = (uint32) acebuf[i].a_access_mask;
- aceprop.who.id = (uint32) acebuf[i].a_who;
- aceprop.flags = 0;
- if(smb_add_ace4(pacl, &aceprop) == NULL) return 0;
- }
-
- return smb_get_nt_acl_nfs4(fsp, security_info, ppdesc, pacl);
-}
-
-/* call-back function processing the NT acl -> ZFS acl using NFSv4 conv. */
-static BOOL zfs_process_smbacl(files_struct *fsp, SMB4ACL_T *smbacl)
-{
- int naces = smb_get_naces(smbacl), i;
- ace_t *acebuf;
- SMB4ACE_T *smbace;
- TALLOC_CTX *mem_ctx;
-
- /* allocate the field of ZFS aces */
- mem_ctx = main_loop_talloc_get();
- acebuf = (ace_t *) talloc_size(mem_ctx, sizeof(ace_t)*naces);
- if(acebuf == NULL) {
- errno = ENOMEM;
- return False;
- }
- /* handle all aces */
- for(smbace = smb_first_ace4(smbacl), i = 0;
- smbace!=NULL;
- smbace = smb_next_ace4(smbace), i++) {
- SMB_ACE4PROP_T *aceprop = smb_get_ace4(smbace);
-
- acebuf[i].a_type = aceprop->aceType;
- acebuf[i].a_flags = aceprop->aceFlags;
- acebuf[i].a_access_mask = aceprop->aceMask;
- acebuf[i].a_who = aceprop->who.id;
- }
- SMB_ASSERT(i == naces);
-
- /* store acl */
- if(acl(fsp->fsp_name, ACE_SETACL, naces, acebuf)) {
- if(errno == ENOSYS) {
- DEBUG(9, ("acl(ACE_SETACL, %s): Operation is not supported on the filesystem where the file reside"));
- } else {
- DEBUG(9, ("acl(ACE_SETACL, %s): %s ", fsp->fsp_name,
- strerror(errno)));
- }
- return 0;
- }
-
- return True;
-}
-
-/* zfs_set_nt_acl()
- * set the local file's acls obtaining it in NT form
- * using the NFSv4 format conversion
- */
-static NTSTATUS zfs_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
- uint32 security_info_sent,
- struct security_descriptor *psd)
-{
- return smb_set_nt_acl_nfs4(fsp, security_info_sent, psd,
- zfs_process_smbacl);
-}
-
-static size_t zfsacl_fget_nt_acl(struct vfs_handle_struct *handle,
- struct files_struct *fsp,
- int fd, uint32 security_info,
- struct security_descriptor **ppdesc)
-{
- return zfs_get_nt_acl(fsp, security_info, ppdesc);
-}
-
-static size_t zfsacl_get_nt_acl(struct vfs_handle_struct *handle,
- struct files_struct *fsp,
- const char *name, uint32 security_info,
- struct security_descriptor **ppdesc)
-{
- return zfs_get_nt_acl(fsp, security_info, ppdesc);
-}
-
-static NTSTATUS zfsacl_fset_nt_acl(vfs_handle_struct *handle,
- files_struct *fsp,
- int fd, uint32 security_info_sent,
- SEC_DESC *psd)
-{
- return zfs_set_nt_acl(handle, fsp, security_info_sent, psd);
-}
-
-static NTSTATUS zfsacl_set_nt_acl(vfs_handle_struct *handle,
- files_struct *fsp,
- const char *name, uint32 security_info_sent,
- SEC_DESC *psd)
-{
- return zfs_set_nt_acl(handle, fsp, security_info_sent, psd);
-}
-
-/* VFS operations structure */
-
-static vfs_op_tuple zfsacl_ops[] = {
- {SMB_VFS_OP(zfsacl_fget_nt_acl), SMB_VFS_OP_FGET_NT_ACL,
- SMB_VFS_LAYER_OPAQUE},
- {SMB_VFS_OP(zfsacl_get_nt_acl), SMB_VFS_OP_GET_NT_ACL,
- SMB_VFS_LAYER_OPAQUE},
- {SMB_VFS_OP(zfsacl_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL,
- SMB_VFS_LAYER_OPAQUE},
- {SMB_VFS_OP(zfsacl_set_nt_acl), SMB_VFS_OP_SET_NT_ACL,
- SMB_VFS_LAYER_OPAQUE},
- {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
-};
-
-NTSTATUS vfs_zfsacl_init(void);
-NTSTATUS vfs_zfsacl_init(void)
-{
- return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "zfsacl",
- zfsacl_ops);
-}
diff --git a/source/nmbd/nmbd.c b/source/nmbd/nmbd.c
index d367dc70fbf..46f209872b0 100644
--- a/source/nmbd/nmbd.c
+++ b/source/nmbd/nmbd.c
@@ -33,6 +33,15 @@ extern BOOL global_in_nmbd;
extern BOOL override_logfile;
+/* are we running as a daemon ? */
+static BOOL is_daemon;
+
+/* fork or run in foreground ? */
+static BOOL Fork = True;
+
+/* log to standard output ? */
+static BOOL log_stdout;
+
/* have we found LanMan clients yet? */
BOOL found_lm_clients = False;
@@ -40,27 +49,6 @@ BOOL found_lm_clients = False;
time_t StartupTime = 0;
-struct event_context *nmbd_event_context(void)
-{
- static struct event_context *ctx;
-
- if (!ctx && !(ctx = event_context_init(NULL))) {
- smb_panic("Could not init nmbd event context");
- }
- return ctx;
-}
-
-struct messaging_context *nmbd_messaging_context(void)
-{
- static struct messaging_context *ctx;
-
- if (!ctx && !(ctx = messaging_init(NULL, server_id_self(),
- nmbd_event_context()))) {
- smb_panic("Could not init nmbd messaging context");
- }
- return ctx;
-}
-
/**************************************************************************** **
Handle a SIGTERM in band.
**************************************************************************** */
@@ -88,11 +76,8 @@ static void terminate(void)
Handle a SHUTDOWN message from smbcontrol.
**************************************************************************** */
-static void nmbd_terminate(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void nmbd_terminate(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
terminate();
}
@@ -286,39 +271,33 @@ static BOOL reload_nmbd_services(BOOL test)
* detects that there are no subnets.
**************************************************************************** */
-static void msg_reload_nmbd_services(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_reload_nmbd_services(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
write_browse_list( 0, True );
dump_all_namelists();
reload_nmbd_services( True );
reopen_logs();
- if (data->data) {
+ if(buf) {
/* We were called from process() */
/* If reload_interfaces() returned True */
/* we need to shutdown if there are no subnets... */
/* pass this info back to process() */
- *((BOOL*)data->data) = reload_interfaces(0);
+ *((BOOL*)buf) = reload_interfaces(0);
}
}
-static void msg_nmbd_send_packet(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void msg_nmbd_send_packet(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
- struct packet_struct *p = (struct packet_struct *)data->data;
+ struct packet_struct *p = (struct packet_struct *)buf;
struct subnet_record *subrec;
struct in_addr *local_ip;
DEBUG(10, ("Received send_packet from %d\n", procid_to_pid(&src)));
- if (data->length != sizeof(struct packet_struct)) {
+ if (len != sizeof(struct packet_struct)) {
DEBUG(2, ("Discarding invalid packet length from %d\n",
procid_to_pid(&src)));
return;
@@ -376,7 +355,7 @@ static void process(void)
/* Check for internal messages */
- message_dispatch(nmbd_messaging_context());
+ message_dispatch();
/*
* Check all broadcast subnets to see if
@@ -577,13 +556,9 @@ static void process(void)
*/
if(reload_after_sighup) {
- DATA_BLOB blob = data_blob_const(&no_subnets,
- sizeof(no_subnets));
DEBUG( 0, ( "Got SIGHUP dumping debug info.\n" ) );
- msg_reload_nmbd_services(nmbd_messaging_context(),
- NULL, MSG_SMB_CONF_UPDATED,
- procid_self(), &blob);
-
+ msg_reload_nmbd_services(MSG_SMB_CONF_UPDATED,
+ pid_to_procid(0), (void*) &no_subnets, 0, NULL);
if(no_subnets)
return;
reload_after_sighup = 0;
@@ -603,7 +578,7 @@ static void process(void)
Open the socket communication.
**************************************************************************** */
-static BOOL open_sockets(enum smb_server_mode server_mode, int port)
+static BOOL open_sockets(BOOL isdaemon, int port)
{
/*
* The sockets opened here will be used to receive broadcast
@@ -613,13 +588,12 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
* now deprecated.
*/
- if ( server_mode == SERVER_MODE_INETD ) {
- ClientNMB = 0;
- } else {
+ if ( isdaemon )
ClientNMB = open_socket_in(SOCK_DGRAM, port,
0, interpret_addr(lp_socket_address()),
True);
- }
+ else
+ ClientNMB = 0;
ClientDGRAM = open_socket_in(SOCK_DGRAM, DGRAM_PORT,
3, interpret_addr(lp_socket_address()),
@@ -648,20 +622,15 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
int main(int argc, const char *argv[])
{
pstring logfile;
+ static BOOL opt_interactive;
poptContext pc;
- const char *p_lmhosts = dyn_LMHOSTSFILE;
- BOOL no_process_group = False;
- BOOL log_stdout = False;
- enum smb_server_mode server_mode = SERVER_MODE_DAEMON;
-
+ static char *p_lmhosts = dyn_LMHOSTSFILE;
+ static BOOL no_process_group = False;
struct poptOption long_options[] = {
POPT_AUTOHELP
- {"daemon", 'D', POPT_ARG_VAL, &server_mode, SERVER_MODE_DAEMON,
- "Become a daemon(default)" },
- {"interactive", 'i', POPT_ARG_VAL, &server_mode,
- SERVER_MODE_INTERACTIVE, "Run interactive (not a daemon)" },
- {"foreground", 'F', POPT_ARG_VAL, &server_mode,
- SERVER_MODE_FOREGROUND, "Run daemon in foreground (for daemontools & etc)" },
+ {"daemon", 'D', POPT_ARG_VAL, &is_daemon, True, "Become a daemon(default)" },
+ {"interactive", 'i', POPT_ARG_VAL, &opt_interactive, True, "Run interactive (not a daemon)" },
+ {"foreground", 'F', POPT_ARG_VAL, &Fork, False, "Run daemon in foreground (for daemontools & etc)" },
{"no-process-group", 0, POPT_ARG_VAL, &no_process_group, True, "Don't create a new process group" },
{"log-stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
{"hosts", 'H', POPT_ARG_STRING, &p_lmhosts, 'H', "Load a netbios hosts file"},
@@ -711,11 +680,12 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
BlockSignals(True, SIGUSR2);
#endif
- if (server_mode == SERVER_MODE_INTERACTIVE) {
+ if ( opt_interactive ) {
+ Fork = False;
log_stdout = True;
}
- if (log_stdout && server_mode == SERVER_MODE_DAEMON) {
+ if ( log_stdout && Fork ) {
DEBUG(0,("ERROR: Can't log to stdout (-S) unless daemon is in foreground (-F) or interactive (-i)\n"));
exit(1);
}
@@ -742,19 +712,14 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
set_samba_nb_type();
- if (is_a_socket(0)) {
- if (server_mode == SERVER_MODE_DAEMON) {
- DEBUG(0,("standard input is a socket, "
- "assuming -F option\n"));
- }
- server_mode = SERVER_MODE_INETD;
+ if (!is_daemon && !is_a_socket(0)) {
+ DEBUG(0,("standard input is not a socket, assuming -D option\n"));
+ is_daemon = True;
}
-
- if (server_mode == SERVER_MODE_DAEMON) {
+
+ if (is_daemon && !opt_interactive) {
DEBUG( 2, ( "Becoming a daemon.\n" ) );
- become_daemon(True, no_process_group);
- } else if (server_mode == SERVER_MODE_FOREGROUND) {
- become_daemon(False, no_process_group);
+ become_daemon(Fork, no_process_group);
}
#if HAVE_SETPGID
@@ -762,14 +727,10 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
* If we're interactive we want to set our own process group for
* signal management.
*/
- if (server_mode == SERVER_MODE_INTERACTIVE && !no_process_group)
+ if (opt_interactive && !no_process_group)
setpgid( (pid_t)0, (pid_t)0 );
#endif
- if (nmbd_messaging_context() == NULL) {
- return 1;
- }
-
#ifndef SYNC_DNS
/* Setup the async dns. We do it here so it doesn't have all the other
stuff initialised and thus chewing memory and sockets */
@@ -783,25 +744,21 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
}
pidfile_create("nmbd");
- messaging_register(nmbd_messaging_context(), NULL,
- MSG_FORCE_ELECTION, nmbd_message_election);
+ message_init();
+ message_register(MSG_FORCE_ELECTION, nmbd_message_election, NULL);
#if 0
/* Until winsrepl is done. */
- messaging_register(nmbd_messaging_context(), NULL,
- MSG_WINS_NEW_ENTRY, nmbd_wins_new_entry);
+ message_register(MSG_WINS_NEW_ENTRY, nmbd_wins_new_entry, NULL);
#endif
- messaging_register(nmbd_messaging_context(), NULL,
- MSG_SHUTDOWN, nmbd_terminate);
- messaging_register(nmbd_messaging_context(), NULL,
- MSG_SMB_CONF_UPDATED, msg_reload_nmbd_services);
- messaging_register(nmbd_messaging_context(), NULL,
- MSG_SEND_PACKET, msg_nmbd_send_packet);
+ message_register(MSG_SHUTDOWN, nmbd_terminate, NULL);
+ message_register(MSG_SMB_CONF_UPDATED, msg_reload_nmbd_services, NULL);
+ message_register(MSG_SEND_PACKET, msg_nmbd_send_packet, NULL);
TimeInit();
DEBUG( 3, ( "Opening sockets %d\n", global_nmb_port ) );
- if ( !open_sockets( server_mode, global_nmb_port ) ) {
+ if ( !open_sockets( is_daemon, global_nmb_port ) ) {
kill_async_dns_child();
return 1;
}
diff --git a/source/nmbd/nmbd_elections.c b/source/nmbd/nmbd_elections.c
index bd4308674c6..eb6f1b6e0aa 100644
--- a/source/nmbd/nmbd_elections.c
+++ b/source/nmbd/nmbd_elections.c
@@ -378,11 +378,8 @@ yet registered on subnet %s\n", nmb_namestr(&nmbname), subrec->subnet_name ));
Process a internal Samba message forcing an election.
***************************************************************************/
-void nmbd_message_election(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void nmbd_message_election(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct subnet_record *subrec;
diff --git a/source/nmbd/nmbd_lmhosts.c b/source/nmbd/nmbd_lmhosts.c
index be3ddfe637a..b14e13f3a47 100644
--- a/source/nmbd/nmbd_lmhosts.c
+++ b/source/nmbd/nmbd_lmhosts.c
@@ -29,7 +29,7 @@
Load a lmhosts file.
****************************************************************************/
-void load_lmhosts_file(const char *fname)
+void load_lmhosts_file(char *fname)
{
pstring name;
int name_type;
diff --git a/source/nmbd/nmbd_packets.c b/source/nmbd/nmbd_packets.c
index 2fbf2f41468..87a38b9d2a1 100644
--- a/source/nmbd/nmbd_packets.c
+++ b/source/nmbd/nmbd_packets.c
@@ -1730,8 +1730,7 @@ BOOL listen_for_packets(BOOL run_election)
int i;
static int maxfd = 0;
- fd_set r_fds;
- fd_set w_fds;
+ fd_set fds;
int selrtn;
struct timeval timeout;
#ifndef SYNC_DNS
@@ -1746,13 +1745,12 @@ BOOL listen_for_packets(BOOL run_election)
rescan_listen_set = False;
}
- memcpy((char *)&r_fds, (char *)listen_set, sizeof(fd_set));
- FD_ZERO(&w_fds);
+ memcpy((char *)&fds, (char *)listen_set, sizeof(fd_set));
#ifndef SYNC_DNS
dns_fd = asyncdns_fd();
if (dns_fd != -1) {
- FD_SET(dns_fd, &r_fds);
+ FD_SET(dns_fd, &fds);
maxfd = MAX( maxfd, dns_fd);
}
#endif
@@ -1767,24 +1765,11 @@ BOOL listen_for_packets(BOOL run_election)
timeout.tv_sec = (run_election||num_response_packets) ? 1 : NMBD_SELECT_LOOP;
timeout.tv_usec = 0;
- {
- struct timeval now = timeval_current();
- event_add_to_select_args(nmbd_event_context(), &now,
- &r_fds, &w_fds, &timeout, &maxfd);
- }
-
- if (timeval_is_zero(&timeout)) {
- /* Process a timed event now... */
- if (run_events(nmbd_event_context(), 0, NULL, NULL)) {
- return False;
- }
- }
-
/* Prepare for the select - allow certain signals. */
BlockSignals(False, SIGTERM);
- selrtn = sys_select(maxfd+1,&r_fds,&w_fds,NULL,&timeout);
+ selrtn = sys_select(maxfd+1,&fds,NULL,NULL,&timeout);
/* We can only take signals when we are in the select - block them again here. */
@@ -1794,12 +1779,8 @@ BOOL listen_for_packets(BOOL run_election)
return False;
}
- if (run_events(nmbd_event_context(), selrtn, &r_fds, &w_fds)) {
- return False;
- }
-
#ifndef SYNC_DNS
- if (dns_fd != -1 && FD_ISSET(dns_fd,&r_fds)) {
+ if (dns_fd != -1 && FD_ISSET(dns_fd,&fds)) {
run_dns_queue();
}
#endif
@@ -1807,7 +1788,7 @@ BOOL listen_for_packets(BOOL run_election)
for(i = 0; i < listen_number; i++) {
if (i < (listen_number/2)) {
/* Processing a 137 socket. */
- if (FD_ISSET(sock_array[i],&r_fds)) {
+ if (FD_ISSET(sock_array[i],&fds)) {
struct packet_struct *packet = read_packet(sock_array[i], NMB_PACKET);
if (packet) {
/*
@@ -1834,7 +1815,7 @@ BOOL listen_for_packets(BOOL run_election)
}
} else {
/* Processing a 138 socket. */
- if (FD_ISSET(sock_array[i],&r_fds)) {
+ if (FD_ISSET(sock_array[i],&fds)) {
struct packet_struct *packet = read_packet(sock_array[i], DGRAM_PACKET);
if (packet) {
/*
@@ -1905,7 +1886,7 @@ BOOL send_mailslot(BOOL unique, const char *mailslot,char *buf, size_t len,
/* Setup the smb part. */
ptr -= 4; /* XXX Ugliness because of handling of tcp SMB length. */
memcpy(tmp,ptr,4);
- set_message(NULL,ptr,17,strlen(mailslot) + 1 + len,True);
+ set_message(ptr,17,strlen(mailslot) + 1 + len,True);
memcpy(ptr,tmp,4);
SCVAL(ptr,smb_com,SMBtrans);
diff --git a/source/nmbd/nmbd_processlogon.c b/source/nmbd/nmbd_processlogon.c
index 287f3e8897d..1672b039792 100644
--- a/source/nmbd/nmbd_processlogon.c
+++ b/source/nmbd/nmbd_processlogon.c
@@ -38,10 +38,24 @@ Send a message to smbd to do a sam delta sync
static void send_repl_message(uint32 low_serial)
{
+ TDB_CONTEXT *tdb;
+
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0,
+ TDB_DEFAULT, O_RDONLY, 0);
+
+ if (!tdb) {
+ DEBUG(3, ("send_repl_message(): failed to open connections "
+ "database\n"));
+ return;
+ }
+
DEBUG(3, ("sending replication message, serial = 0x%04x\n",
low_serial));
- message_send_all(nmbd_messaging_context(), MSG_SMB_SAM_REPL,
- &low_serial, sizeof(low_serial), NULL);
+
+ message_send_all(tdb, MSG_SMB_SAM_REPL, &low_serial,
+ sizeof(low_serial), False, NULL);
+
+ tdb_close(tdb);
}
/****************************************************************************
@@ -127,7 +141,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) ));
SSVAL(q, 0, token);
q += 2;
- dump_data(4, (uint8 *)outbuf, PTR_DIFF(q, outbuf));
+ dump_data(4, outbuf, PTR_DIFF(q, outbuf));
send_mailslot(True, getdc_str,
outbuf,PTR_DIFF(q,outbuf),
@@ -243,7 +257,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
QUERYFORPDC_R, (uint32)ntversion, (uint32)lmnttoken,
(uint32)lm20token ));
- dump_data(4, (uint8 *)outbuf, PTR_DIFF(q, outbuf));
+ dump_data(4, outbuf, PTR_DIFF(q, outbuf));
pull_ascii_fstring(getdc_str, getdc);
pull_ascii_nstring(source_name, sizeof(source_name), dgram->source_name.name);
@@ -487,7 +501,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
SSVAL(q, 6, 0xffff); /* our lm20token */
q += 8;
- dump_data(4, (uint8 *)outbuf, PTR_DIFF(q, outbuf));
+ dump_data(4, outbuf, PTR_DIFF(q, outbuf));
pull_ascii_fstring(getdc_str, getdc);
pull_ascii_nstring(source_name, sizeof(source_name), dgram->source_name.name);
diff --git a/source/nmbd/nmbd_winsserver.c b/source/nmbd/nmbd_winsserver.c
index bbaca83e217..9b9f7401675 100644
--- a/source/nmbd/nmbd_winsserver.c
+++ b/source/nmbd/nmbd_winsserver.c
@@ -103,7 +103,7 @@ static struct name_record *wins_record_to_name_record(TDB_DATA key, TDB_DATA dat
}
namerec->subnet = wins_server_subnet;
- push_ascii_nstring(namerec->name.name, (const char *)key.dptr);
+ push_ascii_nstring(namerec->name.name, key.dptr);
namerec->name.name_type = key.dptr[sizeof(unstring)];
/* Add the scope. */
push_ascii(namerec->name.scope, global_scope(), 64, STR_TERMINATE);
@@ -159,7 +159,7 @@ static TDB_DATA name_record_to_wins_record(const struct name_record *namerec)
len = (2 + 1 + (7*4)); /* "wbddddddd" */
len += (namerec->data.num_ips * 4);
- data.dptr = (uint8 *)SMB_MALLOC(len);
+ data.dptr = (char *)SMB_MALLOC(len);
if (!data.dptr) {
return data;
}
@@ -197,7 +197,7 @@ static TDB_DATA name_to_key(const struct nmb_name *nmbname)
pull_ascii_nstring(keydata, sizeof(unstring), nmbname->name);
strupper_m(keydata);
keydata[sizeof(unstring)] = nmbname->name_type;
- key.dptr = (uint8 *)keydata;
+ key.dptr = keydata;
key.dsize = sizeof(keydata);
return key;
@@ -2371,11 +2371,8 @@ void wins_write_database(time_t t, BOOL background)
Process a internal Samba message receiving a wins record.
***************************************************************************/
-void nmbd_wins_new_entry(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void nmbd_wins_new_entry(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
WINS_RECORD *record;
struct name_record *namerec = NULL;
diff --git a/source/nsswitch/idmap.c b/source/nsswitch/idmap.c
index efd2d533b4d..aa2e351c8ef 100644
--- a/source/nsswitch/idmap.c
+++ b/source/nsswitch/idmap.c
@@ -1,9 +1,9 @@
-/*
+/*
Unix SMB/CIFS implementation.
ID Mapping
Copyright (C) Tim Potter 2000
Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003
- Copyright (C) Simo Sorce 2003
+ Copyright (C) Simo Sorce 2003-2007
Copyright (C) Jeremy Allison 2006
This program is free software; you can redistribute it and/or modify
@@ -61,11 +61,23 @@ static int def_dom_num = -1;
static struct idmap_alloc_backend *alloc_backends = NULL;
static struct idmap_alloc_context *idmap_alloc_ctx = NULL;
-#define IDMAP_CHECK_RET(ret) do { if ( ! NT_STATUS_IS_OK(ret)) { DEBUG(2, ("ERROR: NTSTATUS = 0x%08x\n", NT_STATUS_V(ret))); goto done; } } while(0)
-#define IDMAP_REPORT_RET(ret) do { if ( ! NT_STATUS_IS_OK(ret)) { DEBUG(2, ("ERROR: NTSTATUS = 0x%08x\n", NT_STATUS_V(ret))); } } while(0)
-#define IDMAP_CHECK_ALLOC(mem) do { if (!mem) { DEBUG(0, ("Out of memory!\n")); ret = NT_STATUS_NO_MEMORY; goto done; } } while(0)
-
-static struct idmap_methods *get_methods(struct idmap_backend *be, const char *name)
+#define IDMAP_CHECK_RET(ret) do { \
+ if ( ! NT_STATUS_IS_OK(ret)) { \
+ DEBUG(2, ("ERROR: NTSTATUS = 0x%08x\n", NT_STATUS_V(ret))); \
+ goto done; \
+ } } while(0)
+#define IDMAP_REPORT_RET(ret) do { \
+ if ( ! NT_STATUS_IS_OK(ret)) { \
+ DEBUG(2, ("ERROR: NTSTATUS = 0x%08x\n", NT_STATUS_V(ret))); \
+ } } while(0)
+#define IDMAP_CHECK_ALLOC(mem) do { \
+ if (!mem) { \
+ DEBUG(0, ("Out of memory!\n")); ret = NT_STATUS_NO_MEMORY; \
+ goto done; \
+ } } while(0)
+
+static struct idmap_methods *get_methods(struct idmap_backend *be,
+ const char *name)
{
struct idmap_backend *b;
@@ -78,7 +90,9 @@ static struct idmap_methods *get_methods(struct idmap_backend *be, const char *n
return NULL;
}
-static struct idmap_alloc_methods *get_alloc_methods(struct idmap_alloc_backend *be, const char *name)
+static struct idmap_alloc_methods *get_alloc_methods(
+ struct idmap_alloc_backend *be,
+ const char *name)
{
struct idmap_alloc_backend *b;
@@ -101,7 +115,8 @@ BOOL idmap_is_offline(void)
Allow a module to register itself as a method.
**********************************************************************/
-NTSTATUS smb_register_idmap(int version, const char *name, struct idmap_methods *methods)
+NTSTATUS smb_register_idmap(int version, const char *name,
+ struct idmap_methods *methods)
{
struct idmap_methods *test;
struct idmap_backend *entry;
@@ -112,9 +127,11 @@ NTSTATUS smb_register_idmap(int version, const char *name, struct idmap_methods
if ((version != SMB_IDMAP_INTERFACE_VERSION)) {
DEBUG(0, ("Failed to register idmap module.\n"
- "The module was compiled against SMB_IDMAP_INTERFACE_VERSION %d,\n"
+ "The module was compiled against "
+ "SMB_IDMAP_INTERFACE_VERSION %d,\n"
"current SMB_IDMAP_INTERFACE_VERSION is %d.\n"
- "Please recompile against the current version of samba!\n",
+ "Please recompile against the current version "
+ "of samba!\n",
version, SMB_IDMAP_INTERFACE_VERSION));
return NT_STATUS_OBJECT_TYPE_MISMATCH;
}
@@ -151,7 +168,8 @@ NTSTATUS smb_register_idmap(int version, const char *name, struct idmap_methods
Allow a module to register itself as a method.
**********************************************************************/
-NTSTATUS smb_register_idmap_alloc(int version, const char *name, struct idmap_alloc_methods *methods)
+NTSTATUS smb_register_idmap_alloc(int version, const char *name,
+ struct idmap_alloc_methods *methods)
{
struct idmap_alloc_methods *test;
struct idmap_alloc_backend *entry;
@@ -162,9 +180,11 @@ NTSTATUS smb_register_idmap_alloc(int version, const char *name, struct idmap_al
if ((version != SMB_IDMAP_INTERFACE_VERSION)) {
DEBUG(0, ("Failed to register idmap alloc module.\n"
- "The module was compiled against SMB_IDMAP_INTERFACE_VERSION %d,\n"
+ "The module was compiled against "
+ "SMB_IDMAP_INTERFACE_VERSION %d,\n"
"current SMB_IDMAP_INTERFACE_VERSION is %d.\n"
- "Please recompile against the current version of samba!\n",
+ "Please recompile against the current version "
+ "of samba!\n",
version, SMB_IDMAP_INTERFACE_VERSION));
return NT_STATUS_OBJECT_TYPE_MISMATCH;
}
@@ -242,14 +262,14 @@ static const char *idmap_default_domain[] = { "default domain", NULL };
****************************************************************************/
NTSTATUS idmap_init_cache(void)
-{
+{
/* Always initialize the cache. We'll have to delay initialization
of backends if we are offline */
if ( idmap_ctx ) {
return NT_STATUS_OK;
- }
-
+ }
+
if ( (idmap_ctx = talloc_named_const(NULL, 0, "idmap_ctx")) == NULL ) {
return NT_STATUS_NO_MEMORY;
}
@@ -265,7 +285,7 @@ NTSTATUS idmap_init_cache(void)
****************************************************************************/
NTSTATUS idmap_init(void)
-{
+{
NTSTATUS ret;
static NTSTATUS idmap_init_status = NT_STATUS_UNSUCCESSFUL;
struct idmap_domain *dom;
@@ -279,65 +299,57 @@ NTSTATUS idmap_init(void)
int i;
ret = idmap_init_cache();
- if ( !NT_STATUS_IS_OK(ret) )
+ if (!NT_STATUS_IS_OK(ret))
return ret;
- if (NT_STATUS_IS_OK(idmap_init_status)) {
+ if (NT_STATUS_IS_OK(idmap_init_status))
return NT_STATUS_OK;
- }
-
- /* We can't reliably call intialization code here unless
- we are online. But return NT_STATUS_OK so the upper
- level code doesn't abort idmap lookups. */
-
- if ( get_global_winbindd_state_offline() ) {
- idmap_init_status = NT_STATUS_FILE_IS_OFFLINE;
- return NT_STATUS_OK;
- }
static_init_idmap;
dom_list = lp_idmap_domains();
-
+
if ( lp_idmap_backend() ) {
const char **compat_list = lp_idmap_backend();
char *p = NULL;
- const char *q = NULL;
+ const char *q = NULL;
- if ( dom_list ) {
- DEBUG(0, ("WARNING: idmap backend and idmap domains are "
- "mutually exclusive!\n"));
+ if (dom_list) {
+ DEBUG(0, ("WARNING: idmap backend and idmap domains "
+ "are mutually excusive!\n"));
DEBUGADD(0,("idmap backend option will be IGNORED!\n"));
} else {
compat = 1;
- if ( (compat_backend = talloc_strdup( idmap_ctx, *compat_list )) == NULL ) {
+ compat_backend = talloc_strdup(idmap_ctx, *compat_list);
+ if (compat_backend == NULL) {
ret = NT_STATUS_NO_MEMORY;
goto done;
}
-
+
/* strip any leading idmap_ prefix of */
if (strncmp(*compat_list, "idmap_", 6) == 0 ) {
q = *compat_list += 6;
- DEBUG(0, ("WARNING: idmap backend uses obsolete and "
- "deprecated 'idmap_' prefix.\n"
- "Please replace 'idmap_%s' by '%s' in %s\n",
- q, q, dyn_CONFIGFILE));
- compat_backend = talloc_strdup( idmap_ctx, q);
+ DEBUG(0, ("WARNING: idmap backend uses obsolete"
+ " and deprecated 'idmap_' prefix.\n"
+ "Please replace 'idmap_%s' by '%s' in"
+ " %s\n", q, q, dyn_CONFIGFILE));
+ compat_backend = talloc_strdup(idmap_ctx, q);
} else {
- compat_backend = talloc_strdup( idmap_ctx, *compat_list);
+ compat_backend = talloc_strdup(idmap_ctx,
+ *compat_list);
}
-
+
/* separate the backend and module arguements */
if ((p = strchr(compat_backend, ':')) != NULL) {
- *p = '\0';
+ *p = '\0';
compat_params = p + 1;
}
- }
+ }
} else if ( !dom_list ) {
/* Back compatible: without idmap domains and explicit
idmap backend. Taking default idmap backend: tdb */
-
+
compat = 1;
compat_backend = talloc_strdup( idmap_ctx, "tdb");
compat_params = compat_backend;
@@ -346,7 +358,7 @@ NTSTATUS idmap_init(void)
if ( ! dom_list) {
dom_list = idmap_default_domain;
}
-
+
/***************************
* initialize idmap domains
*/
@@ -357,10 +369,10 @@ NTSTATUS idmap_init(void)
char *config_option;
/* ignore BUILTIN and local MACHINE domains */
- if ( strequal(dom_list[i], "BUILTIN")
- || strequal(dom_list[i], get_global_sam_name() ) )
+ if (strequal(dom_list[i], "BUILTIN")
+ || strequal(dom_list[i], get_global_sam_name()))
{
- DEBUG(0,("idmap_init: Ignoring invalid domain %s\n",
+ DEBUG(0,("idmap_init: Ignoring invalid domain %s\n",
dom_list[i]));
continue;
}
@@ -369,44 +381,51 @@ NTSTATUS idmap_init(void)
pri_dom_is_in_list = True;
}
/* init domain */
-
+
dom = TALLOC_ZERO_P(idmap_ctx, struct idmap_domain);
IDMAP_CHECK_ALLOC(dom);
dom->name = talloc_strdup(dom, dom_list[i]);
IDMAP_CHECK_ALLOC(dom->name);
- config_option = talloc_asprintf(dom, "idmap config %s", dom->name);
+ config_option = talloc_asprintf(dom, "idmap config %s",
+ dom->name);
IDMAP_CHECK_ALLOC(config_option);
/* default or specific ? */
- dom->default_domain = lp_parm_bool(-1, config_option, "default", False);
+ dom->default_domain = lp_parm_bool(-1, config_option,
+ "default", False);
if (dom->default_domain ||
strequal(dom_list[i], idmap_default_domain[0])) {
- /* make sure this is set even when we match idmap_default_domain[0] */
+ /* make sure this is set even when we match
+ * idmap_default_domain[0] */
dom->default_domain = True;
if (default_already_defined) {
- DEBUG(1, ("ERROR: Multiple domains defined as default!\n"));
+ DEBUG(1, ("ERROR: Multiple domains defined as"
+ " default!\n"));
ret = NT_STATUS_INVALID_PARAMETER;
goto done;
}
default_already_defined = True;
- }
+ }
- dom->readonly = lp_parm_bool(-1, config_option, "readonly", False);
+ dom->readonly = lp_parm_bool(-1, config_option,
+ "readonly", False);
/* find associated backend (default: tdb) */
if (compat) {
parm_backend = talloc_strdup(idmap_ctx, compat_backend);
} else {
parm_backend = talloc_strdup(idmap_ctx,
- lp_parm_const_string(-1, config_option, "backend", "tdb"));
+ lp_parm_const_string(
+ -1, config_option,
+ "backend", "tdb"));
}
IDMAP_CHECK_ALLOC(parm_backend);
@@ -416,22 +435,27 @@ NTSTATUS idmap_init(void)
if ( ! dom->methods) {
ret = smb_probe_module("idmap", parm_backend);
if (NT_STATUS_IS_OK(ret)) {
- dom->methods = get_methods(backends, parm_backend);
+ dom->methods = get_methods(backends,
+ parm_backend);
}
}
if ( ! dom->methods) {
- DEBUG(0, ("ERROR: Could not get methods for backend %s\n", parm_backend));
+ DEBUG(0, ("ERROR: Could not get methods for "
+ "backend %s\n", parm_backend));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
- /* check the set_mapping function exists otherwise mark the module as readonly */
+ /* check the set_mapping function exists otherwise mark the
+ * module as readonly */
if ( ! dom->methods->set_mapping) {
- DEBUG(5, ("Forcing to readonly, as this module can't store arbitrary mappings.\n"));
+ DEBUG(5, ("Forcing to readonly, as this module can't"
+ " store arbitrary mappings.\n"));
dom->readonly = True;
}
- /* now that we have methods, set the destructor for this domain */
+ /* now that we have methods,
+ * set the destructor for this domain */
talloc_set_destructor(dom, close_domain_destructor);
if (compat_params) {
@@ -444,10 +468,12 @@ NTSTATUS idmap_init(void)
/* Finally instance a backend copy for this domain */
ret = dom->methods->init(dom);
if ( ! NT_STATUS_IS_OK(ret)) {
- DEBUG(0, ("ERROR: Initialization failed for backend %s (domain %s), deferred!\n",
- parm_backend, dom->name));
+ DEBUG(0, ("ERROR: Initialization failed for backend "
+ "%s (domain %s), deferred!\n",
+ parm_backend, dom->name));
}
- idmap_domains = talloc_realloc(idmap_ctx, idmap_domains, struct idmap_domain *, i+1);
+ idmap_domains = talloc_realloc(idmap_ctx, idmap_domains,
+ struct idmap_domain *, i+1);
if ( ! idmap_domains) {
DEBUG(0, ("Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
@@ -455,13 +481,15 @@ NTSTATUS idmap_init(void)
}
idmap_domains[i] = dom;
- if (dom->default_domain) { /* save default domain position for future uses */
+ /* save default domain position for future uses */
+ if (dom->default_domain) {
def_dom_num = i;
}
DEBUG(10, ("Domain %s - Backend %s - %sdefault - %sreadonly\n",
dom->name, parm_backend,
- dom->default_domain?"":"not ", dom->readonly?"":"not "));
+ dom->default_domain?"":"not ",
+ dom->readonly?"":"not "));
talloc_free(config_option);
}
@@ -488,12 +516,13 @@ NTSTATUS idmap_init(void)
/* (the nss module is always statically linked) */
if ( ! dom->methods) {
- DEBUG(0, ("ERROR: Could not get methods for idmap_nss ?!\n"));
+ DEBUG(0, ("ERROR: No methods for idmap_nss ?!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
- /* now that we have methods, set the destructor for this domain */
+ /* now that we have methods,
+ * set the destructor for this domain */
talloc_set_destructor(dom, close_domain_destructor);
if (compat_params) {
@@ -506,12 +535,15 @@ NTSTATUS idmap_init(void)
/* Finally instance a backend copy for this domain */
ret = dom->methods->init(dom);
if ( ! NT_STATUS_IS_OK(ret)) {
- DEBUG(0, ("ERROR: Initialization failed for idmap_nss ?!\n"));
+ DEBUG(0, ("ERROR: Init. failed for idmap_nss ?!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
- idmap_domains = talloc_realloc(idmap_ctx, idmap_domains, struct idmap_domain *, num_domains+1);
+ idmap_domains = talloc_realloc(idmap_ctx,
+ idmap_domains,
+ struct idmap_domain *,
+ num_domains+1);
if ( ! idmap_domains) {
DEBUG(0, ("Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
@@ -519,7 +551,8 @@ NTSTATUS idmap_init(void)
}
idmap_domains[num_domains] = dom;
- DEBUG(10, ("Domain %s - Backend nss - not default - readonly\n", dom->name ));
+ DEBUG(10, ("Domain %s - Backend nss - not default - readonly\n",
+ dom->name ));
num_domains++;
}
@@ -539,7 +572,7 @@ NTSTATUS idmap_init(void)
/* (the passdb module is always statically linked) */
if ( ! dom->methods) {
- DEBUG(0, ("ERROR: Could not get methods for idmap_passdb ?!\n"));
+ DEBUG(0, ("ERROR: No methods for idmap_passdb ?!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
@@ -557,12 +590,15 @@ NTSTATUS idmap_init(void)
/* Finally instance a backend copy for this domain */
ret = dom->methods->init(dom);
if ( ! NT_STATUS_IS_OK(ret)) {
- DEBUG(0, ("ERROR: Initialization failed for idmap_passdb ?!\n"));
+ DEBUG(0, ("ERROR: Init. failed for idmap_passdb ?!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
- idmap_domains = talloc_realloc(idmap_ctx, idmap_domains, struct idmap_domain *, num_domains+1);
+ idmap_domains = talloc_realloc(idmap_ctx,
+ idmap_domains,
+ struct idmap_domain *,
+ num_domains+1);
if ( ! idmap_domains) {
DEBUG(0, ("Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
@@ -573,14 +609,16 @@ NTSTATUS idmap_init(void)
/* needed to handle special BUILTIN and wellknown SIDs cases */
pdb_dom_num = num_domains;
- DEBUG(10, ("Domain %s - Backend passdb - not default - readonly\n", dom->name));
+ DEBUG(10, ("Domain %s - Backend passdb - not default - readonly\n",
+ dom->name));
num_domains++;
/**** finished adding idmap_passdb backend ****/
/* sort domains so that the default is the last one */
/* don't sort if no default domain defined */
- if (def_dom_num != -1 && def_dom_num != num_domains-1) { /* default is not last, move it */
+ if (def_dom_num != -1 && def_dom_num != num_domains-1) {
+ /* default is not last, move it */
struct idmap_domain *tmp;
if (pdb_dom_num > def_dom_num) {
@@ -609,28 +647,35 @@ NTSTATUS idmap_init(void)
alloc_backend = talloc_strdup(idmap_ctx, compat_backend);
} else {
char *ab = lp_idmap_alloc_backend();
-
+
if (ab && (ab[0] != '\0')) {
- alloc_backend = talloc_strdup(idmap_ctx, lp_idmap_alloc_backend());
+ alloc_backend = talloc_strdup(idmap_ctx,
+ lp_idmap_alloc_backend());
}
}
if ( alloc_backend ) {
-
- idmap_alloc_ctx = TALLOC_ZERO_P(idmap_ctx, struct idmap_alloc_context);
+
+ idmap_alloc_ctx = TALLOC_ZERO_P(idmap_ctx,
+ struct idmap_alloc_context);
IDMAP_CHECK_ALLOC(idmap_alloc_ctx);
- idmap_alloc_ctx->methods = get_alloc_methods(alloc_backends, alloc_backend);
+ idmap_alloc_ctx->methods = get_alloc_methods(alloc_backends,
+ alloc_backend);
if ( ! idmap_alloc_ctx->methods) {
ret = smb_probe_module("idmap", alloc_backend);
if (NT_STATUS_IS_OK(ret)) {
- idmap_alloc_ctx->methods = get_alloc_methods(alloc_backends, alloc_backend);
+ idmap_alloc_ctx->methods =
+ get_alloc_methods(alloc_backends,
+ alloc_backend);
}
}
if (idmap_alloc_ctx->methods) {
if (compat_params) {
- idmap_alloc_ctx->params = talloc_strdup(idmap_alloc_ctx, compat_params);
+ idmap_alloc_ctx->params =
+ talloc_strdup(idmap_alloc_ctx,
+ compat_params);
IDMAP_CHECK_ALLOC(idmap_alloc_ctx->params);
} else {
idmap_alloc_ctx->params = NULL;
@@ -638,13 +683,15 @@ NTSTATUS idmap_init(void)
ret = idmap_alloc_ctx->methods->init(idmap_alloc_ctx->params);
if ( ! NT_STATUS_IS_OK(ret)) {
- DEBUG(0, ("ERROR: Initialization failed for alloc "
- "backend %s, deferred!\n", alloc_backend));
+ DEBUG(0, ("ERROR: Initialization failed for "
+ "alloc backend %s, deferred!\n",
+ alloc_backend));
} else {
idmap_alloc_ctx->initialized = True;
}
} else {
- DEBUG(2, ("idmap_init: Unable to get methods for alloc backend %s\n",
+ DEBUG(2, ("idmap_init: Unable to get methods for "
+ "alloc backend %s\n",
alloc_backend));
/* certain compat backends are just readonly */
if ( compat ) {
@@ -655,12 +702,12 @@ NTSTATUS idmap_init(void)
}
}
}
-
+
/* cleanpu temporary strings */
TALLOC_FREE( compat_backend );
idmap_init_status = NT_STATUS_OK;
-
+
return ret;
done:
@@ -758,16 +805,16 @@ static struct idmap_domain* find_idmap_domain_from_sid( DOM_SID *account_sid )
uint32 rid;
struct winbindd_domain *domain = NULL;
int i;
-
+
/* 1. Handle BUILTIN or Special SIDs and prevent them from
falling into the default domain space (if we have a
configured passdb backend. */
- if ( (pdb_dom_num != -1) &&
+ if ( (pdb_dom_num != -1) &&
(sid_check_is_in_builtin(account_sid) ||
sid_check_is_in_wellknown_domain(account_sid) ||
sid_check_is_in_unix_groups(account_sid) ||
- sid_check_is_in_unix_users(account_sid)) )
+ sid_check_is_in_unix_users(account_sid)) )
{
return idmap_domains[pdb_dom_num];
}
@@ -775,8 +822,8 @@ static struct idmap_domain* find_idmap_domain_from_sid( DOM_SID *account_sid )
/* 2. Lookup the winbindd_domain from the account_sid */
sid_copy( &domain_sid, account_sid );
- sid_split_rid( &domain_sid, &rid );
- domain = find_domain_from_sid_noinit( &domain_sid );
+ sid_split_rid( &domain_sid, &rid );
+ domain = find_domain_from_sid_noinit( &domain_sid );
for (i = 0; domain && i < num_domains; i++) {
if ( strequal( idmap_domains[i]->name, domain->name ) ) {
@@ -800,13 +847,13 @@ static struct idmap_domain* find_idmap_domain_from_sid( DOM_SID *account_sid )
static uint32 find_idmap_domain_index( struct idmap_domain *id_domain)
{
int i;
-
+
for (i = 0; i < num_domains; i++) {
if ( idmap_domains[i] == id_domain )
- return i;
+ return i;
}
- return -1;
+ return -1;
}
@@ -814,18 +861,18 @@ static uint32 find_idmap_domain_index( struct idmap_domain *id_domain)
Check if creating a mapping is permitted for the domain
*********************************************************/
-static NTSTATUS idmap_can_map(const struct id_map *map, struct idmap_domain **ret_dom)
+static NTSTATUS idmap_can_map(const struct id_map *map,
+ struct idmap_domain **ret_dom)
{
struct idmap_domain *dom;
- /* Check we do not create mappings for our own local domain, or BUILTIN or special SIDs */
+ /* Check we do not create mappings for our own local domain,
+ * or BUILTIN or special SIDs */
if ((sid_compare_domain(map->sid, get_global_sam_sid()) == 0) ||
sid_check_is_in_builtin(map->sid) ||
- sid_check_is_in_wellknown_domain(map->sid) ||
- sid_check_is_in_unix_users(map->sid) ||
- sid_check_is_in_unix_groups(map->sid) )
- {
- DEBUG(10, ("We are not supposed to create mappings for our own domains (local, builtin, specials)\n"));
+ sid_check_is_in_wellknown_domain(map->sid)) {
+ DEBUG(10, ("We are not supposed to create mappings for "
+ "our own domains (local, builtin, specials)\n"));
return NT_STATUS_UNSUCCESSFUL;
}
@@ -833,21 +880,28 @@ static NTSTATUS idmap_can_map(const struct id_map *map, struct idmap_domain **re
if (lp_winbind_trusted_domains_only()) {
struct winbindd_domain *wdom = find_our_domain();
if (wdom && (sid_compare_domain(map->sid, &wdom->sid) == 0)) {
- DEBUG(10, ("We are not supposed to create mappings for our primary domain when <trusted domain only> is True\n"));
- DEBUGADD(10, ("Leave [%s] unmapped\n", sid_string_static(map->sid)));
+ DEBUG(10, ("We are not supposed to create mappings for "
+ "our primary domain when <trusted domain "
+ "only> is True\n"));
+ DEBUGADD(10, ("Leave [%s] unmapped\n",
+ sid_string_static(map->sid)));
return NT_STATUS_UNSUCCESSFUL;
}
}
if ( (dom = find_idmap_domain_from_sid( map->sid )) == NULL ) {
- /* huh, couldn't find a suitable domain, let's just leave it unmapped */
- DEBUG(10, ("Could not find idmap backend for SID %s", sid_string_static(map->sid)));
+ /* huh, couldn't find a suitable domain,
+ * let's just leave it unmapped */
+ DEBUG(10, ("Could not find idmap backend for SID %s",
+ sid_string_static(map->sid)));
return NT_STATUS_NO_SUCH_DOMAIN;
}
if (dom->readonly) {
- /* ouch the domain is read only, let's just leave it unmapped */
- DEBUG(10, ("idmap backend for SID %s is READONLY!\n", sid_string_static(map->sid)));
+ /* ouch the domain is read only,
+ * let's just leave it unmapped */
+ DEBUG(10, ("idmap backend for SID %s is READONLY!\n",
+ sid_string_static(map->sid)));
return NT_STATUS_UNSUCCESSFUL;
}
@@ -876,7 +930,8 @@ static NTSTATUS idmap_new_mapping(TALLOC_CTX *ctx, struct id_map *map)
ret = idmap_allocate_uid(&map->xid);
if ( ! NT_STATUS_IS_OK(ret)) {
/* can't allocate id, let's just leave it unmapped */
- DEBUG(2, ("uid allocation failed! Can't create mapping\n"));
+ DEBUG(2, ("uid allocation failed! "
+ "Can't create mapping\n"));
return NT_STATUS_NONE_MAPPED;
}
break;
@@ -884,14 +939,15 @@ static NTSTATUS idmap_new_mapping(TALLOC_CTX *ctx, struct id_map *map)
ret = idmap_allocate_gid(&map->xid);
if ( ! NT_STATUS_IS_OK(ret)) {
/* can't allocate id, let's just leave it unmapped */
- DEBUG(2, ("gid allocation failed! Can't create mapping\n"));
+ DEBUG(2, ("gid allocation failed! "
+ "Can't create mapping\n"));
return NT_STATUS_NONE_MAPPED;
}
break;
default:
/* invalid sid, let's just leave it unmapped */
DEBUG(3,("idmap_new_mapping: Refusing to create a "
- "mapping for an unspecified ID type.\n"));
+ "mapping for an unspecified ID type.\n"));
return NT_STATUS_NONE_MAPPED;
}
@@ -908,7 +964,7 @@ static NTSTATUS idmap_new_mapping(TALLOC_CTX *ctx, struct id_map *map)
/* something wrong here :-( */
DEBUG(2, ("Failed to commit mapping\n!"));
- /* TODO: would it make sense to have an "unalloc_id function?" */
+ /* TODO: would it make sense to have an "unalloc_id function?" */
return NT_STATUS_NONE_MAPPED;
}
@@ -931,7 +987,7 @@ static NTSTATUS idmap_backends_set_mapping(const struct id_map *map)
return ret;
}
- DEBUG(10,("set_mapping for domain %s\n", dom->name ));
+ DEBUG(10,("set_mapping for domain %s\n", dom->name ));
return dom->methods->set_mapping(dom, map);
}
@@ -969,7 +1025,7 @@ static NTSTATUS idmap_backends_unixids_to_sids(struct id_map **ids)
dom = idmap_domains[n];
DEBUG(10, ("Query sids from domain %s\n", dom->name));
-
+
ret = dom->methods->unixids_to_sids(dom, _ids);
IDMAP_REPORT_RET(ret);
@@ -977,7 +1033,8 @@ static NTSTATUS idmap_backends_unixids_to_sids(struct id_map **ids)
for (i = 0, u = 0; _ids[i]; i++) {
if (_ids[i]->status != ID_MAPPED) {
- unmapped = talloc_realloc(ctx, unmapped, struct id_map *, u + 2);
+ unmapped = talloc_realloc(ctx, unmapped,
+ struct id_map *, u + 2);
IDMAP_CHECK_ALLOC(unmapped);
unmapped[u] = _ids[i];
u++;
@@ -991,21 +1048,27 @@ static NTSTATUS idmap_backends_unixids_to_sids(struct id_map **ids)
}
_ids = unmapped;
-
+
}
if (unmapped) {
- /* there are still unmapped ids, map them to the unix users/groups domains */
- /* except for expired entries, these will be returned as valid (offline mode) */
+ /* there are still unmapped ids,
+ * map them to the unix users/groups domains */
+ /* except for expired entries,
+ * these will be returned as valid (offline mode) */
for (i = 0; unmapped[i]; i++) {
if (unmapped[i]->status == ID_EXPIRED) continue;
switch (unmapped[i]->xid.type) {
case ID_TYPE_UID:
- uid_to_unix_users_sid((uid_t)unmapped[i]->xid.id, unmapped[i]->sid);
+ uid_to_unix_users_sid(
+ (uid_t)unmapped[i]->xid.id,
+ unmapped[i]->sid);
unmapped[i]->status = ID_MAPPED;
break;
case ID_TYPE_GID:
- gid_to_unix_groups_sid((gid_t)unmapped[i]->xid.id, unmapped[i]->sid);
+ gid_to_unix_groups_sid(
+ (gid_t)unmapped[i]->xid.id,
+ unmapped[i]->sid);
unmapped[i]->status = ID_MAPPED;
break;
default: /* what?! */
@@ -1020,7 +1083,7 @@ static NTSTATUS idmap_backends_unixids_to_sids(struct id_map **ids)
done:
talloc_free(ctx);
return ret;
-}
+}
static NTSTATUS idmap_backends_sids_to_unixids(struct id_map **ids)
{
@@ -1051,22 +1114,23 @@ static NTSTATUS idmap_backends_sids_to_unixids(struct id_map **ids)
/* partition the requests by domain */
for (i = 0; ids[i]; i++) {
- uint32 idx;
+ uint32 idx;
- if ( (dom = find_idmap_domain_from_sid( ids[i]->sid )) == NULL ) {
+ if ((dom = find_idmap_domain_from_sid(ids[i]->sid)) == NULL) {
/* no available idmap_domain. Move on */
continue;
}
- DEBUG(10,("SID %s is being handled by %s\n",
- sid_string_static(ids[i]->sid),
+ DEBUG(10,("SID %s is being handled by %s\n",
+ sid_string_static(ids[i]->sid),
dom ? dom->name : "none" ));
idx = find_idmap_domain_index( dom );
SMB_ASSERT( idx != -1 );
-
- dom_ids[idx] = talloc_realloc(ctx, dom_ids[idx],
- struct id_map *, counters[idx] + 2);
+
+ dom_ids[idx] = talloc_realloc(ctx, dom_ids[idx],
+ struct id_map *,
+ counters[idx] + 2);
IDMAP_CHECK_ALLOC(dom_ids[idx]);
dom_ids[idx][counters[idx]] = ids[i];
@@ -1092,13 +1156,15 @@ static NTSTATUS idmap_backends_sids_to_unixids(struct id_map **ids)
for (i = 0; ids[i]; i++) {
/* NOTE: this will NOT touch ID_EXPIRED entries that the backend
* was not able to confirm/deny (offline mode) */
- if (ids[i]->status == ID_UNKNOWN || ids[i]->status == ID_UNMAPPED) {
+ if (ids[i]->status == ID_UNKNOWN ||
+ ids[i]->status == ID_UNMAPPED) {
/* ok this is an unmapped one, see if we can map it */
ret = idmap_new_mapping(ctx, ids[i]);
if (NT_STATUS_IS_OK(ret)) {
/* successfully mapped */
ids[i]->status = ID_MAPPED;
- } else if (NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED)) {
+ } else
+ if (NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED)) {
/* could not map it */
ids[i]->status = ID_UNMAPPED;
} else {
@@ -1114,7 +1180,7 @@ static NTSTATUS idmap_backends_sids_to_unixids(struct id_map **ids)
done:
talloc_free(ctx);
return ret;
-}
+}
/**************************************************************************
idmap interface functions
@@ -1127,7 +1193,6 @@ NTSTATUS idmap_unixids_to_sids(struct id_map **ids)
struct id_map **bids;
int i, bi;
int bn = 0;
- struct winbindd_domain *our_domain = find_our_domain();
if (! NT_STATUS_IS_OK(ret = idmap_init())) {
return ret;
@@ -1147,7 +1212,7 @@ NTSTATUS idmap_unixids_to_sids(struct id_map **ids)
/* no ids to be asked to the backends by default */
bids = NULL;
bi = 0;
-
+
for (i = 0; ids[i]; i++) {
if ( ! ids[i]->sid) {
@@ -1161,7 +1226,8 @@ NTSTATUS idmap_unixids_to_sids(struct id_map **ids)
if ( ! NT_STATUS_IS_OK(ret)) {
if ( ! bids) {
- /* alloc space for ids to be resolved by backends (realloc ten by ten) */
+ /* alloc space for ids to be resolved by
+ * backends (realloc ten by ten) */
bids = TALLOC_ARRAY(ctx, struct id_map *, 10);
if ( ! bids) {
DEBUG(1, ("Out of memory!\n"));
@@ -1171,14 +1237,17 @@ NTSTATUS idmap_unixids_to_sids(struct id_map **ids)
bn = 10;
}
- /* add this id to the ones to be retrieved from the backends */
+ /* add this id to the ones to be retrieved
+ * from the backends */
bids[bi] = ids[i];
bi++;
-
- /* check if we need to allocate new space on the rids array */
+
+ /* check if we need to allocate new space
+ * on the rids array */
if (bi == bn) {
bn += 10;
- bids = talloc_realloc(ctx, bids, struct id_map *, bn);
+ bids = talloc_realloc(ctx, bids,
+ struct id_map *, bn);
if ( ! bids) {
DEBUG(1, ("Out of memory!\n"));
talloc_free(ctx);
@@ -1191,13 +1260,9 @@ NTSTATUS idmap_unixids_to_sids(struct id_map **ids)
}
}
- /* let's see if there is any id mapping to be retieved from the backends */
+ /* let's see if there is any id mapping to be retieved
+ * from the backends */
if (bi) {
- /* Only do query if we are online */
- if ( IS_DOMAIN_OFFLINE(our_domain) ) {
- ret = NT_STATUS_FILE_IS_OFFLINE;
- goto done;
- }
ret = idmap_backends_unixids_to_sids(bids);
IDMAP_CHECK_RET(ret);
@@ -1207,18 +1272,21 @@ NTSTATUS idmap_unixids_to_sids(struct id_map **ids)
if (bids[i]->status == ID_MAPPED) {
ret = idmap_cache_set(idmap_cache, bids[i]);
} else if (bids[i]->status == ID_EXPIRED) {
- /* the cache returned an expired entry and the backend was
- * was not able to clear the situation (offline).
- * This handles a previous NT_STATUS_SYNCHRONIZATION_REQUIRED
+ /* the cache returned an expired entry and the
+ * backend was not able to clear the situation
+ * (offline). This handles a previous
+ * NT_STATUS_SYNCHRONIZATION_REQUIRED
* for disconnected mode, */
bids[i]->status = ID_MAPPED;
} else if (bids[i]->status == ID_UNKNOWN) {
- /* something bad here. We were not able to handle this for some
- * reason, mark it as unmapped and hope next time things will
+ /* something bad here. We were not able to
+ * handle this for some reason, mark it as
+ * unmapped and hope next time things will
* settle down. */
bids[i]->status = ID_UNMAPPED;
} else { /* unmapped */
- ret = idmap_cache_set_negative_id(idmap_cache, bids[i]);
+ ret = idmap_cache_set_negative_id(idmap_cache,
+ bids[i]);
}
IDMAP_CHECK_RET(ret);
}
@@ -1237,7 +1305,6 @@ NTSTATUS idmap_sids_to_unixids(struct id_map **ids)
struct id_map **bids;
int i, bi;
int bn = 0;
- struct winbindd_domain *our_domain = find_our_domain();
if (! NT_STATUS_IS_OK(ret = idmap_init())) {
return ret;
@@ -1257,7 +1324,7 @@ NTSTATUS idmap_sids_to_unixids(struct id_map **ids)
/* no ids to be asked to the backends by default */
bids = NULL;
bi = 0;
-
+
for (i = 0; ids[i]; i++) {
if ( ! ids[i]->sid) {
@@ -1282,14 +1349,17 @@ NTSTATUS idmap_sids_to_unixids(struct id_map **ids)
bn = 10;
}
- /* add this id to the ones to be retrieved from the backends */
+ /* add this id to the ones to be retrieved
+ * from the backends */
bids[bi] = ids[i];
bi++;
- /* check if we need to allocate new space on the ids array */
+ /* check if we need to allocate new space
+ * on the ids array */
if (bi == bn) {
bn += 10;
- bids = talloc_realloc(ctx, bids, struct id_map *, bn);
+ bids = talloc_realloc(ctx, bids,
+ struct id_map *, bn);
if ( ! bids) {
DEBUG(1, ("Out of memory!\n"));
talloc_free(ctx);
@@ -1302,14 +1372,10 @@ NTSTATUS idmap_sids_to_unixids(struct id_map **ids)
}
}
- /* let's see if there is any id mapping to be retieved from the backends */
+ /* let's see if there is any id mapping to be retieved
+ * from the backends */
if (bids) {
- /* Only do query if we are online */
- if ( IS_DOMAIN_OFFLINE(our_domain) ) {
- ret = NT_STATUS_FILE_IS_OFFLINE;
- goto done;
- }
-
+
ret = idmap_backends_sids_to_unixids(bids);
IDMAP_CHECK_RET(ret);
@@ -1318,18 +1384,21 @@ NTSTATUS idmap_sids_to_unixids(struct id_map **ids)
if (bids[i]->status == ID_MAPPED) {
ret = idmap_cache_set(idmap_cache, bids[i]);
} else if (bids[i]->status == ID_EXPIRED) {
- /* the cache returned an expired entry and the backend was
- * was not able to clear the situation (offline).
- * This handles a previous NT_STATUS_SYNCHRONIZATION_REQUIRED
+ /* the cache returned an expired entry and the
+ * backend was not able to clear the situation
+ * (offline). This handles a previous
+ * NT_STATUS_SYNCHRONIZATION_REQUIRED
* for disconnected mode, */
bids[i]->status = ID_MAPPED;
} else if (bids[i]->status == ID_UNKNOWN) {
- /* something bad here. We were not able to handle this for some
- * reason, mark it as unmapped and hope next time things will
+ /* something bad here. We were not able to
+ * handle this for some reason, mark it as
+ * unmapped and hope next time things will
* settle down. */
bids[i]->status = ID_UNMAPPED;
} else { /* unmapped */
- ret = idmap_cache_set_negative_sid(idmap_cache, bids[i]);
+ ret = idmap_cache_set_negative_sid(idmap_cache,
+ bids[i]);
}
IDMAP_CHECK_RET(ret);
}
@@ -1396,28 +1465,30 @@ void idmap_dump_maps(char *logfile)
dump = fopen(logfile, "w");
if ( ! dump) {
- DEBUG(0, ("Unable to open open stream for file [%s], errno: %d\n", logfile, errno));
+ DEBUG(0, ("Unable to open open stream for file [%s], "
+ "errno: %d\n", logfile, errno));
return;
}
- if (NT_STATUS_IS_OK(ret = idmap_alloc_init())) {
+ if (NT_STATUS_IS_OK(ret = idmap_alloc_init())) {
allid.type = ID_TYPE_UID;
allid.id = 0;
idmap_alloc_ctx->methods->get_id_hwm(&allid);
fprintf(dump, "USER HWM %lu\n", (unsigned long)allid.id);
-
+
allid.type = ID_TYPE_GID;
allid.id = 0;
idmap_alloc_ctx->methods->get_id_hwm(&allid);
fprintf(dump, "GROUP HWM %lu\n", (unsigned long)allid.id);
}
-
+
maps = talloc(idmap_ctx, struct id_map);
num_maps = 0;
for (i = 0; i < num_domains; i++) {
if (idmap_domains[i]->methods->dump_data) {
- idmap_domains[i]->methods->dump_data(idmap_domains[i], &maps, &num_maps);
+ idmap_domains[i]->methods->dump_data(idmap_domains[i],
+ &maps, &num_maps);
}
}
@@ -1454,13 +1525,13 @@ char *idmap_fetch_secret(const char *backend, bool alloc,
r = asprintf(&tmp, "IDMAP_%s_%s", backend, domain);
}
- if (r < 0)
+ if (r < 0)
return NULL;
strupper_m(tmp); /* make sure the key is case insensitive */
ret = secrets_fetch_generic(tmp, identity);
- SAFE_FREE( tmp );
+ SAFE_FREE(tmp);
return ret;
}
diff --git a/source/nsswitch/idmap_ad.c b/source/nsswitch/idmap_ad.c
index 45785892aa0..f181ca39575 100644
--- a/source/nsswitch/idmap_ad.c
+++ b/source/nsswitch/idmap_ad.c
@@ -143,7 +143,6 @@ static ADS_STRUCT *ad_idmap_cached_connection(void)
/* Otherwise, set the schema model */
if ( (ad_map_type == WB_POSIX_MAP_SFU) ||
- (ad_map_type == WB_POSIX_MAP_SFU20) ||
(ad_map_type == WB_POSIX_MAP_RFC2307) )
{
ADS_STATUS schema_status;
@@ -197,8 +196,6 @@ static NTSTATUS idmap_ad_initialize(struct idmap_domain *dom)
if ( schema_mode && schema_mode[0] ) {
if ( strequal(schema_mode, "sfu") )
ad_map_type = WB_POSIX_MAP_SFU;
- else if ( strequal(schema_mode, "sfu20" ) )
- ad_map_type = WB_POSIX_MAP_SFU20;
else if ( strequal(schema_mode, "rfc2307" ) )
ad_map_type = WB_POSIX_MAP_RFC2307;
else
@@ -676,11 +673,11 @@ static NTSTATUS idmap_ad_close(struct idmap_domain *dom)
}
/*
- * nss_info_{sfu,sfu20,rfc2307}
+ * nss_info_{sfu,rfc2307}
*/
/************************************************************************
- Initialize the {sfu,sfu20,rfc2307} state
+ Initialize the {sfu,rfc2307} state
***********************************************************************/
static NTSTATUS nss_sfu_init( struct nss_domain_entry *e )
@@ -696,25 +693,7 @@ static NTSTATUS nss_sfu_init( struct nss_domain_entry *e )
return NT_STATUS_NOT_SUPPORTED;
}
- ad_map_type = WB_POSIX_MAP_SFU;
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS nss_sfu20_init( struct nss_domain_entry *e )
-{
- /* Sanity check if we have previously been called with a
- different schema model */
-
- if ( (ad_map_type != WB_POSIX_MAP_UNKNOWN) &&
- (ad_map_type != WB_POSIX_MAP_SFU20) )
- {
- DEBUG(0,("nss_sfu20_init: Posix Map type has already been set. "
- "Mixed schema models not supported!\n"));
- return NT_STATUS_NOT_SUPPORTED;
- }
-
- ad_map_type = WB_POSIX_MAP_SFU20;
+ ad_map_type = WB_POSIX_MAP_SFU;
return NT_STATUS_OK;
}
@@ -732,7 +711,7 @@ static NTSTATUS nss_rfc2307_init( struct nss_domain_entry *e )
return NT_STATUS_NOT_SUPPORTED;
}
- ad_map_type = WB_POSIX_MAP_RFC2307;
+ ad_map_type = WB_POSIX_MAP_RFC2307;
return NT_STATUS_OK;
}
@@ -774,7 +753,7 @@ static NTSTATUS nss_ad_get_info( struct nss_domain_entry *e,
if ( gid ) {
if ( !ads_pull_uint32(ads, msg, ad_schema->posix_gidnumber_attr, gid ) )
- *gid = 0;
+ *gid = (uint32)-1;
}
return NT_STATUS_OK;
@@ -816,13 +795,6 @@ static struct nss_info_methods nss_sfu_methods = {
.close_fn = nss_ad_close
};
-static struct nss_info_methods nss_sfu20_methods = {
- .init = nss_sfu20_init,
- .get_nss_info = nss_ad_get_info,
- .close_fn = nss_ad_close
-};
-
-
/************************************************************************
Initialize the plugins
@@ -833,7 +805,6 @@ NTSTATUS idmap_ad_init(void)
static NTSTATUS status_idmap_ad = NT_STATUS_UNSUCCESSFUL;
static NTSTATUS status_nss_rfc2307 = NT_STATUS_UNSUCCESSFUL;
static NTSTATUS status_nss_sfu = NT_STATUS_UNSUCCESSFUL;
- static NTSTATUS status_nss_sfu20 = NT_STATUS_UNSUCCESSFUL;
/* Always register the AD method first in order to get the
idmap_domain interface called */
@@ -859,13 +830,6 @@ NTSTATUS idmap_ad_init(void)
return status_nss_sfu;
}
- if ( !NT_STATUS_IS_OK( status_nss_sfu20 ) ) {
- status_nss_sfu20 = smb_register_idmap_nss(SMB_NSS_INFO_INTERFACE_VERSION,
- "sfu20", &nss_sfu20_methods );
- if ( !NT_STATUS_IS_OK(status_nss_sfu20) )
- return status_nss_sfu20;
- }
-
return NT_STATUS_OK;
}
diff --git a/source/nsswitch/idmap_cache.c b/source/nsswitch/idmap_cache.c
index 4fbc3c7effe..b56b155f83c 100644
--- a/source/nsswitch/idmap_cache.c
+++ b/source/nsswitch/idmap_cache.c
@@ -104,7 +104,7 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
{
NTSTATUS ret;
time_t timeout = time(NULL) + lp_idmap_cache_time();
- TDB_DATA databuf;
+ TDB_DATA keybuf, databuf;
char *sidkey;
char *idkey;
char *valstr;
@@ -141,13 +141,16 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
goto done;
}
- databuf = string_term_tdb_data(valstr);
+ keybuf.dptr = sidkey;
+ keybuf.dsize = strlen(sidkey)+1;
+ databuf.dptr = valstr;
+ databuf.dsize = strlen(valstr)+1;
DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
- " %s (%d seconds %s)\n", sidkey, valstr , ctime(&timeout),
+ " %s (%d seconds %s)\n", keybuf.dptr, valstr , ctime(&timeout),
(int)(timeout - time(NULL)),
timeout > time(NULL) ? "ahead" : "in the past"));
- if (tdb_store_bystring(cache->tdb, sidkey, databuf, TDB_REPLACE) != 0) {
+ if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
DEBUG(3, ("Failed to store cache entry!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
@@ -163,13 +166,16 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
goto done;
}
- databuf = string_term_tdb_data(valstr);
+ keybuf.dptr = idkey;
+ keybuf.dsize = strlen(idkey)+1;
+ databuf.dptr = valstr;
+ databuf.dsize = strlen(valstr)+1;
DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
- " %s (%d seconds %s)\n", idkey, valstr, ctime(&timeout),
+ " %s (%d seconds %s)\n", keybuf.dptr, valstr, ctime(&timeout),
(int)(timeout - time(NULL)),
timeout > time(NULL) ? "ahead" : "in the past"));
- if (tdb_store_bystring(cache->tdb, idkey, databuf, TDB_REPLACE) != 0) {
+ if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
DEBUG(3, ("Failed to store cache entry!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
@@ -182,11 +188,52 @@ done:
return ret;
}
+NTSTATUS idmap_cache_del(struct idmap_cache_ctx *cache, const struct id_map *id)
+{
+ NTSTATUS ret;
+ TDB_DATA keybuf;
+ char *sidkey = NULL;
+ char *idkey = NULL;
+
+ ret = idmap_cache_build_sidkey(cache, &sidkey, id);
+ if (!NT_STATUS_IS_OK(ret)) return ret;
+
+ ret = idmap_cache_build_idkey(cache, &idkey, id);
+ if (!NT_STATUS_IS_OK(ret)) {
+ goto done;
+ }
+
+ /* delete SID */
+
+ keybuf.dptr = sidkey;
+ keybuf.dsize = strlen(sidkey)+1;
+ DEBUG(10, ("Deleting cache entry (key = %s)\n", keybuf.dptr));
+
+ if (tdb_delete(cache->tdb, keybuf) != 0) {
+ DEBUG(3, ("Failed to delete cache entry!\n"));
+ }
+
+ /* delete ID */
+
+ keybuf.dptr = idkey;
+ keybuf.dsize = strlen(idkey)+1;
+ DEBUG(10, ("Deleting cache entry (key = %s)\n", keybuf.dptr));
+
+ if (tdb_delete(cache->tdb, keybuf) != 0) {
+ DEBUG(3, ("Failed to delete cache entry!\n"));
+ }
+
+done:
+ talloc_free(sidkey);
+ talloc_free(idkey);
+ return ret;
+}
+
NTSTATUS idmap_cache_set_negative_sid(struct idmap_cache_ctx *cache, const struct id_map *id)
{
NTSTATUS ret;
time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
- TDB_DATA databuf;
+ TDB_DATA keybuf, databuf;
char *sidkey;
char *valstr;
@@ -201,13 +248,16 @@ NTSTATUS idmap_cache_set_negative_sid(struct idmap_cache_ctx *cache, const struc
goto done;
}
- databuf = string_term_tdb_data(valstr);
+ keybuf.dptr = sidkey;
+ keybuf.dsize = strlen(sidkey)+1;
+ databuf.dptr = valstr;
+ databuf.dsize = strlen(valstr)+1;
DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
- " %s (%d seconds %s)\n", sidkey, valstr, ctime(&timeout),
+ " %s (%d seconds %s)\n", keybuf.dptr, valstr, ctime(&timeout),
(int)(timeout - time(NULL)),
timeout > time(NULL) ? "ahead" : "in the past"));
- if (tdb_store_bystring(cache->tdb, sidkey, databuf, TDB_REPLACE) != 0) {
+ if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
DEBUG(3, ("Failed to store cache entry!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
@@ -222,7 +272,7 @@ NTSTATUS idmap_cache_set_negative_id(struct idmap_cache_ctx *cache, const struct
{
NTSTATUS ret;
time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
- TDB_DATA databuf;
+ TDB_DATA keybuf, databuf;
char *idkey;
char *valstr;
@@ -237,13 +287,16 @@ NTSTATUS idmap_cache_set_negative_id(struct idmap_cache_ctx *cache, const struct
goto done;
}
- databuf = string_term_tdb_data(valstr);
+ keybuf.dptr = idkey;
+ keybuf.dsize = strlen(idkey)+1;
+ databuf.dptr = valstr;
+ databuf.dsize = strlen(valstr)+1;
DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
- " %s (%d seconds %s)\n", idkey, valstr, ctime(&timeout),
+ " %s (%d seconds %s)\n", keybuf.dptr, valstr, ctime(&timeout),
(int)(timeout - time(NULL)),
timeout > time(NULL) ? "ahead" : "in the past"));
- if (tdb_store_bystring(cache->tdb, idkey, databuf, TDB_REPLACE) != 0) {
+ if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
DEBUG(3, ("Failed to store cache entry!\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
@@ -328,36 +381,40 @@ BOOL idmap_cache_is_negative(const char *val)
NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
{
NTSTATUS ret;
- TDB_DATA databuf;
- time_t t;
+ TDB_DATA keybuf, databuf;
+ time_t t, now;
char *sidkey;
char *endptr;
- struct winbindd_domain *our_domain = find_our_domain();
- time_t now = time(NULL);
- /* make sure it is marked as not mapped by default */
+ /* make sure it is marked as unknown by default */
id->status = ID_UNKNOWN;
ret = idmap_cache_build_sidkey(cache, &sidkey, id);
if (!NT_STATUS_IS_OK(ret)) return ret;
- databuf = tdb_fetch_bystring(cache->tdb, sidkey);
+ keybuf.dptr = sidkey;
+ keybuf.dsize = strlen(sidkey)+1;
+
+ databuf = tdb_fetch(cache->tdb, keybuf);
if (databuf.dptr == NULL) {
DEBUG(10, ("Cache entry with key = %s couldn't be found\n", sidkey));
- return NT_STATUS_NONE_MAPPED;
+ ret = NT_STATUS_NONE_MAPPED;
+ goto done;
}
- t = strtol((const char *)databuf.dptr, &endptr, 10);
+ t = strtol(databuf.dptr, &endptr, 10);
if ((endptr == NULL) || (*endptr != '/')) {
- DEBUG(2, ("Invalid gencache data format: %s\n", (const char *)databuf.dptr));
+ DEBUG(2, ("Invalid gencache data format: %s\n", databuf.dptr));
/* remove the entry */
- tdb_delete_bystring(cache->tdb, sidkey);
+ tdb_delete(cache->tdb, keybuf);
ret = NT_STATUS_NONE_MAPPED;
goto done;
}
+ now = time(NULL);
+
/* check it is not negative */
if (strcmp("IDMAP/NEGATIVE", endptr+1) != 0) {
@@ -369,7 +426,7 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
ret = idmap_cache_fill_map(id, endptr+1);
if ( ! NT_STATUS_IS_OK(ret)) {
/* if not valid form delete the entry */
- tdb_delete_bystring(cache->tdb, sidkey);
+ tdb_delete(cache->tdb, keybuf);
ret = NT_STATUS_NONE_MAPPED;
goto done;
}
@@ -377,40 +434,26 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
/* here ret == NT_STATUS_OK and id->status = ID_MAPPED */
if (t <= now) {
- /* If we've been told to be offline - stay in
- that state... */
- if ( IS_DOMAIN_OFFLINE(our_domain) ) {
- DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
- goto done;
- }
+
+ /* we have it, but it is expired */
+ id->status = ID_EXPIRED;
/* We're expired, set an error code
for upper layer */
ret = NT_STATUS_SYNCHRONIZATION_REQUIRED;
}
-
- goto done;
- }
-
- /* Was a negative cache hit */
-
- /* Ignore the negative cache when offline */
-
- if ( IS_DOMAIN_OFFLINE(our_domain) ) {
- DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
- goto done;
- }
-
-
- /* Check for valid or expired cache hits */
+ } else {
if (t <= now) {
- /* We're expired. Return not mapped */
+ /* We're expired, delete the NEGATIVE entry and return
+ not mapped */
+ tdb_delete(cache->tdb, keybuf);
ret = NT_STATUS_NONE_MAPPED;
} else {
/* this is not mapped as it was a negative cache hit */
id->status = ID_UNMAPPED;
ret = NT_STATUS_OK;
}
+ }
done:
SAFE_FREE(databuf.dptr);
@@ -420,7 +463,7 @@ done:
/* search the cahce for the ID an return a mapping if found *
*
- * 4 cases are possible
+ * 3 cases are possible
*
* 1 map found
* in this case id->status = ID_MAPPED and NT_STATUS_OK is returned
@@ -436,12 +479,10 @@ done:
NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
{
NTSTATUS ret;
- TDB_DATA databuf;
- time_t t;
+ TDB_DATA keybuf, databuf;
+ time_t t, now;
char *idkey;
char *endptr;
- struct winbindd_domain *our_domain = find_our_domain();
- time_t now = time(NULL);
/* make sure it is marked as unknown by default */
id->status = ID_UNKNOWN;
@@ -449,23 +490,29 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
ret = idmap_cache_build_idkey(cache, &idkey, id);
if (!NT_STATUS_IS_OK(ret)) return ret;
- databuf = tdb_fetch_bystring(cache->tdb, idkey);
+ keybuf.dptr = idkey;
+ keybuf.dsize = strlen(idkey)+1;
+
+ databuf = tdb_fetch(cache->tdb, keybuf);
if (databuf.dptr == NULL) {
DEBUG(10, ("Cache entry with key = %s couldn't be found\n", idkey));
- return NT_STATUS_NONE_MAPPED;
+ ret = NT_STATUS_NONE_MAPPED;
+ goto done;
}
- t = strtol((const char *)databuf.dptr, &endptr, 10);
+ t = strtol(databuf.dptr, &endptr, 10);
if ((endptr == NULL) || (*endptr != '/')) {
- DEBUG(2, ("Invalid gencache data format: %s\n", (const char *)databuf.dptr));
+ DEBUG(2, ("Invalid gencache data format: %s\n", databuf.dptr));
/* remove the entry */
- tdb_delete_bystring(cache->tdb, idkey);
+ tdb_delete(cache->tdb, keybuf);
ret = NT_STATUS_NONE_MAPPED;
goto done;
}
+ now = time(NULL);
+
/* check it is not negative */
if (strcmp("IDMAP/NEGATIVE", endptr+1) != 0) {
@@ -477,7 +524,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
ret = idmap_cache_fill_map(id, endptr+1);
if ( ! NT_STATUS_IS_OK(ret)) {
/* if not valid form delete the entry */
- tdb_delete_bystring(cache->tdb, idkey);
+ tdb_delete(cache->tdb, keybuf);
ret = NT_STATUS_NONE_MAPPED;
goto done;
}
@@ -485,43 +532,26 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
/* here ret == NT_STATUS_OK and id->mapped = ID_MAPPED */
if (t <= now) {
- /* If we've been told to be offline - stay in
- that state... */
- if ( IS_DOMAIN_OFFLINE(our_domain) ) {
- DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
- goto done;
- }
+
+ /* we have it, but it is expired */
+ id->status = ID_EXPIRED;
/* We're expired, set an error code
for upper layer */
ret = NT_STATUS_SYNCHRONIZATION_REQUIRED;
}
-
- goto done;
- }
-
- /* Was a negative cache hit */
-
- /* Ignore the negative cache when offline */
-
- if ( IS_DOMAIN_OFFLINE(our_domain) ) {
- DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
- ret = NT_STATUS_NONE_MAPPED;
-
- goto done;
- }
-
- /* Process the negative cache hit */
-
+ } else {
if (t <= now) {
- /* We're expired. Return not mapped */
+ /* We're expired, delete the NEGATIVE entry and return
+ not mapped */
+ tdb_delete(cache->tdb, keybuf);
ret = NT_STATUS_NONE_MAPPED;
} else {
- /* this is not mapped is it was a negative cache hit */
+ /* this is not mapped as it was a negative cache hit */
id->status = ID_UNMAPPED;
ret = NT_STATUS_OK;
}
-
+ }
done:
SAFE_FREE(databuf.dptr);
talloc_free(idkey);
diff --git a/source/nsswitch/idmap_ldap.c b/source/nsswitch/idmap_ldap.c
index e5dd658fe38..d1639c07721 100644
--- a/source/nsswitch/idmap_ldap.c
+++ b/source/nsswitch/idmap_ldap.c
@@ -6,7 +6,7 @@
Copyright (C) Tim Potter 2000
Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003
Copyright (C) Gerald Carter 2003
- Copyright (C) Simo Sorce 2003-2006
+ Copyright (C) Simo Sorce 2003-2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -24,7 +24,6 @@
*/
#include "includes.h"
-#include "winbindd.h"
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_IDMAP
@@ -53,39 +52,47 @@ struct idmap_ldap_alloc_context {
};
-#define CHECK_ALLOC_DONE(mem) do { if (!mem) { DEBUG(0, ("Out of memory!\n")); ret = NT_STATUS_NO_MEMORY; goto done; } } while (0)
+#define CHECK_ALLOC_DONE(mem) do { \
+ if (!mem) { \
+ DEBUG(0, ("Out of memory!\n")); \
+ ret = NT_STATUS_NO_MEMORY; \
+ goto done; \
+ } } while (0)
/**********************************************************************
IDMAP ALLOC TDB BACKEND
**********************************************************************/
-
+
static struct idmap_ldap_alloc_context *idmap_alloc_ldap;
/*********************************************************************
********************************************************************/
-static NTSTATUS get_credentials( TALLOC_CTX *mem_ctx,
+static NTSTATUS get_credentials( TALLOC_CTX *mem_ctx,
struct smbldap_state *ldap_state,
const char *config_option,
struct idmap_domain *dom,
char **dn )
{
NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
- char *user_dn = NULL;
char *secret = NULL;
const char *tmp = NULL;
-
+ char *user_dn = NULL;
+ BOOL anon = False;
+
/* assume anonymous if we don't have a specified user */
tmp = lp_parm_const_string(-1, config_option, "ldap_user_dn", NULL);
if ( tmp ) {
if (!dom) {
- /* only the alloc backend is allowed to pass in a NULL dom */
- secret = idmap_fetch_secret("ldap", true, NULL, tmp);
+ /* only the alloc backend can pass in a NULL dom */
+ secret = idmap_fetch_secret("ldap", True,
+ NULL, tmp);
} else {
- secret = idmap_fetch_secret("ldap", false, dom->name, tmp);
- }
+ secret = idmap_fetch_secret("ldap", False,
+ dom->name, tmp);
+ }
if (!secret) {
DEBUG(0, ("get_credentials: Unable to fetch "
@@ -93,33 +100,33 @@ static NTSTATUS get_credentials( TALLOC_CTX *mem_ctx,
tmp, (dom==NULL)?"ALLOC":dom->name));
ret = NT_STATUS_ACCESS_DENIED;
goto done;
- }
+ }
*dn = talloc_strdup(mem_ctx, tmp);
- CHECK_ALLOC_DONE(*dn);
+ CHECK_ALLOC_DONE(*dn);
} else {
- if ( !fetch_ldap_pw( &user_dn, &secret ) ) {
+ if (!fetch_ldap_pw(&user_dn, &secret)) {
DEBUG(2, ("get_credentials: Failed to lookup ldap "
- "bind creds. Using anonymous connection.\n"));
- *dn = talloc_strdup( mem_ctx, "" );
+ "bind creds. Using anonymous connection.\n"));
+ anon = True;
} else {
*dn = talloc_strdup(mem_ctx, user_dn);
- SAFE_FREE( user_dn );
+ SAFE_FREE( user_dn );
CHECK_ALLOC_DONE(*dn);
- }
+ }
}
- smbldap_set_creds(ldap_state, false, *dn, secret);
+ smbldap_set_creds(ldap_state, anon, *dn, secret);
ret = NT_STATUS_OK;
-
- done:
- SAFE_FREE( secret );
- return ret;
+done:
+ SAFE_FREE(secret);
+
+ return ret;
}
/**********************************************************************
- Verify the sambaUnixIdPool entry in the directory.
+ Verify the sambaUnixIdPool entry in the directory.
**********************************************************************/
static NTSTATUS verify_idpool(void)
@@ -132,7 +139,7 @@ static NTSTATUS verify_idpool(void)
char *filter;
int count;
int rc;
-
+
if ( ! idmap_alloc_ldap) {
return NT_STATUS_UNSUCCESSFUL;
}
@@ -145,12 +152,12 @@ static NTSTATUS verify_idpool(void)
filter = talloc_asprintf(ctx, "(objectclass=%s)", LDAP_OBJ_IDPOOL);
CHECK_ALLOC_DONE(filter);
-
+
attr_list = get_attr_list(ctx, idpool_attr_list);
CHECK_ALLOC_DONE(attr_list);
rc = smbldap_search(idmap_alloc_ldap->smbldap_state,
- idmap_alloc_ldap->suffix,
+ idmap_alloc_ldap->suffix,
LDAP_SCOPE_SUBTREE,
filter,
attr_list,
@@ -158,11 +165,13 @@ static NTSTATUS verify_idpool(void)
&result);
if (rc != LDAP_SUCCESS) {
- DEBUG(1, ("Unable to verify the idpool, cannot continue initialization!\n"));
+ DEBUG(1, ("Unable to verify the idpool, "
+ "cannot continue initialization!\n"));
return NT_STATUS_UNSUCCESSFUL;
}
- count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct, result);
+ count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct,
+ result);
ldap_msgfree(result);
@@ -174,17 +183,21 @@ static NTSTATUS verify_idpool(void)
}
else if (count == 0) {
char *uid_str, *gid_str;
-
- uid_str = talloc_asprintf(ctx, "%lu", (unsigned long)idmap_alloc_ldap->low_uid);
- gid_str = talloc_asprintf(ctx, "%lu", (unsigned long)idmap_alloc_ldap->low_gid);
+
+ uid_str = talloc_asprintf(ctx, "%lu",
+ (unsigned long)idmap_alloc_ldap->low_uid);
+ gid_str = talloc_asprintf(ctx, "%lu",
+ (unsigned long)idmap_alloc_ldap->low_gid);
smbldap_set_mod(&mods, LDAP_MOD_ADD,
"objectClass", LDAP_OBJ_IDPOOL);
- smbldap_set_mod(&mods, LDAP_MOD_ADD,
- get_attr_key2string(idpool_attr_list, LDAP_ATTR_UIDNUMBER),
+ smbldap_set_mod(&mods, LDAP_MOD_ADD,
+ get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_UIDNUMBER),
uid_str);
smbldap_set_mod(&mods, LDAP_MOD_ADD,
- get_attr_key2string(idpool_attr_list, LDAP_ATTR_GIDNUMBER),
+ get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_GIDNUMBER),
gid_str);
if (mods) {
rc = smbldap_modify(idmap_alloc_ldap->smbldap_state,
@@ -204,12 +217,12 @@ done:
}
/*****************************************************************************
- Initialise idmap database.
+ Initialise idmap database.
*****************************************************************************/
static NTSTATUS idmap_ldap_alloc_init(const char *params)
{
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
+ NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
const char *range;
const char *tmp;
uid_t low_uid = 0;
@@ -224,7 +237,7 @@ static NTSTATUS idmap_ldap_alloc_init(const char *params)
idmap_alloc_ldap = TALLOC_ZERO_P(NULL, struct idmap_ldap_alloc_context);
CHECK_ALLOC_DONE( idmap_alloc_ldap );
-
+
/* load ranges */
idmap_alloc_ldap->low_uid = 0;
@@ -238,13 +251,17 @@ static NTSTATUS idmap_ldap_alloc_init(const char *params)
if (sscanf(range, "%u - %u", &low_id, &high_id) == 2) {
if (low_id < high_id) {
- idmap_alloc_ldap->low_gid = idmap_alloc_ldap->low_uid = low_id;
- idmap_alloc_ldap->high_gid = idmap_alloc_ldap->high_uid = high_id;
+ idmap_alloc_ldap->low_gid = low_id;
+ idmap_alloc_ldap->low_uid = low_id;
+ idmap_alloc_ldap->high_gid = high_id;
+ idmap_alloc_ldap->high_uid = high_id;
} else {
- DEBUG(1, ("ERROR: invalid idmap alloc range [%s]", range));
+ DEBUG(1, ("ERROR: invalid idmap alloc range "
+ "[%s]", range));
}
} else {
- DEBUG(1, ("ERROR: invalid syntax for idmap alloc config:range [%s]", range));
+ DEBUG(1, ("ERROR: invalid syntax for idmap alloc "
+ "config:range [%s]", range));
}
}
@@ -276,28 +293,23 @@ static NTSTATUS idmap_ldap_alloc_init(const char *params)
/* assume location is the only parameter */
idmap_alloc_ldap->url = talloc_strdup(idmap_alloc_ldap, params);
} else {
- tmp = lp_parm_const_string(-1, "idmap alloc config", "ldap_url", NULL);
+ tmp = lp_parm_const_string(-1, "idmap alloc config",
+ "ldap_url", NULL);
if ( ! tmp) {
DEBUG(1, ("ERROR: missing idmap ldap url\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
-
+
idmap_alloc_ldap->url = talloc_strdup(idmap_alloc_ldap, tmp);
}
CHECK_ALLOC_DONE( idmap_alloc_ldap->url );
- tmp = lp_ldap_idmap_suffix();
+ tmp = lp_parm_const_string(-1, "idmap alloc config",
+ "ldap_base_dn", NULL);
if ( ! tmp || ! *tmp) {
- tmp = lp_parm_const_string(-1, "idmap alloc config", "ldap_base_dn", NULL);
- }
- if ( ! tmp) {
- tmp = lp_ldap_suffix();
- if (tmp) {
- DEBUG(1, ("WARNING: Trying to use the global ldap suffix(%s)\n", tmp));
- DEBUGADD(1, ("as suffix. This may not be what you want!\n"));
- }
+ tmp = lp_ldap_idmap_suffix();
if ( ! tmp) {
DEBUG(1, ("ERROR: missing idmap ldap suffix\n"));
ret = NT_STATUS_UNSUCCESSFUL;
@@ -307,34 +319,33 @@ static NTSTATUS idmap_ldap_alloc_init(const char *params)
idmap_alloc_ldap->suffix = talloc_strdup(idmap_alloc_ldap, tmp);
CHECK_ALLOC_DONE( idmap_alloc_ldap->suffix );
-
- ret = smbldap_init(idmap_alloc_ldap, winbind_event_context(),
- idmap_alloc_ldap->url,
- &idmap_alloc_ldap->smbldap_state);
- if (!NT_STATUS_IS_OK(ret)) {
- DEBUG(1, ("ERROR: smbldap_init (%s) failed!\n",
+
+ ret = smbldap_init(idmap_alloc_ldap, idmap_alloc_ldap->url,
+ &idmap_alloc_ldap->smbldap_state);
+ if (!NT_STATUS_IS_OK(ret)) {
+ DEBUG(1, ("ERROR: smbldap_init (%s) failed!\n",
idmap_alloc_ldap->url));
- goto done;
+ goto done;
}
- ret = get_credentials( idmap_alloc_ldap,
- idmap_alloc_ldap->smbldap_state,
+ ret = get_credentials( idmap_alloc_ldap,
+ idmap_alloc_ldap->smbldap_state,
"idmap alloc config", NULL,
&idmap_alloc_ldap->user_dn );
if ( !NT_STATUS_IS_OK(ret) ) {
DEBUG(1,("idmap_ldap_alloc_init: Failed to get connection "
"credentials (%s)\n", nt_errstr(ret)));
goto done;
- }
+ }
/* see if the idmap suffix and sub entries exists */
- ret = verify_idpool();
+ ret = verify_idpool();
done:
if ( !NT_STATUS_IS_OK( ret ) )
TALLOC_FREE( idmap_alloc_ldap );
-
+
return ret;
}
@@ -377,11 +388,13 @@ static NTSTATUS idmap_ldap_allocate_id(struct unixid *xid)
switch (xid->type) {
case ID_TYPE_UID:
- type = get_attr_key2string(idpool_attr_list, LDAP_ATTR_UIDNUMBER);
+ type = get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_UIDNUMBER);
break;
case ID_TYPE_GID:
- type = get_attr_key2string(idpool_attr_list, LDAP_ATTR_GIDNUMBER);
+ type = get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_GIDNUMBER);
break;
default:
@@ -401,23 +414,27 @@ static NTSTATUS idmap_ldap_allocate_id(struct unixid *xid)
idmap_alloc_ldap->suffix,
LDAP_SCOPE_SUBTREE, filter,
attr_list, 0, &result);
-
+
if (rc != LDAP_SUCCESS) {
DEBUG(0,("%s object not found\n", LDAP_OBJ_IDPOOL));
goto done;
}
talloc_autofree_ldapmsg(ctx, result);
-
- count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct, result);
+
+ count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct,
+ result);
if (count != 1) {
DEBUG(0,("Single %s object not found\n", LDAP_OBJ_IDPOOL));
goto done;
}
- entry = ldap_first_entry(idmap_alloc_ldap->smbldap_state->ldap_struct, result);
+ entry = ldap_first_entry(idmap_alloc_ldap->smbldap_state->ldap_struct,
+ result);
- dn = smbldap_talloc_dn(ctx, idmap_alloc_ldap->smbldap_state->ldap_struct, entry);
+ dn = smbldap_talloc_dn(ctx,
+ idmap_alloc_ldap->smbldap_state->ldap_struct,
+ entry);
if ( ! dn) {
goto done;
}
@@ -440,15 +457,15 @@ static NTSTATUS idmap_ldap_allocate_id(struct unixid *xid)
switch (xid->type) {
case ID_TYPE_UID:
if (xid->id > idmap_alloc_ldap->high_uid) {
- DEBUG(0,("Cannot allocate uid above %lu!\n",
+ DEBUG(0,("Cannot allocate uid above %lu!\n",
(unsigned long)idmap_alloc_ldap->high_uid));
goto done;
}
break;
-
- case ID_TYPE_GID:
+
+ case ID_TYPE_GID:
if (xid->id > idmap_alloc_ldap->high_gid) {
- DEBUG(0,("Cannot allocate gid above %lu!\n",
+ DEBUG(0,("Cannot allocate gid above %lu!\n",
(unsigned long)idmap_alloc_ldap->high_uid));
goto done;
}
@@ -458,33 +475,35 @@ static NTSTATUS idmap_ldap_allocate_id(struct unixid *xid)
/* impossible */
goto done;
}
-
+
new_id_str = talloc_asprintf(ctx, "%lu", (unsigned long)xid->id + 1);
if ( ! new_id_str) {
DEBUG(0,("Out of memory\n"));
ret = NT_STATUS_NO_MEMORY;
goto done;
}
-
+
smbldap_set_mod(&mods, LDAP_MOD_DELETE, type, id_str);
smbldap_set_mod(&mods, LDAP_MOD_ADD, type, new_id_str);
if (mods == NULL) {
DEBUG(0,("smbldap_set_mod() failed.\n"));
- goto done;
+ goto done;
}
- DEBUG(10, ("Try to atomically increment the id (%s -> %s)\n", id_str, new_id_str));
+ DEBUG(10, ("Try to atomically increment the id (%s -> %s)\n",
+ id_str, new_id_str));
rc = smbldap_modify(idmap_alloc_ldap->smbldap_state, dn, mods);
ldap_mods_free(mods, True);
if (rc != LDAP_SUCCESS) {
- DEBUG(1,("Failed to allocate new %s. smbldap_modify() failed.\n", type));
+ DEBUG(1,("Failed to allocate new %s. "
+ "smbldap_modify() failed.\n", type));
goto done;
}
-
+
ret = NT_STATUS_OK;
done:
@@ -493,7 +512,7 @@ done:
}
/**********************************
- Get current highest id.
+ Get current highest id.
**********************************/
static NTSTATUS idmap_ldap_get_hwm(struct unixid *xid)
@@ -528,11 +547,13 @@ static NTSTATUS idmap_ldap_get_hwm(struct unixid *xid)
switch (xid->type) {
case ID_TYPE_UID:
- type = get_attr_key2string(idpool_attr_list, LDAP_ATTR_UIDNUMBER);
+ type = get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_UIDNUMBER);
break;
case ID_TYPE_GID:
- type = get_attr_key2string(idpool_attr_list, LDAP_ATTR_GIDNUMBER);
+ type = get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_GIDNUMBER);
break;
default:
@@ -550,21 +571,23 @@ static NTSTATUS idmap_ldap_get_hwm(struct unixid *xid)
idmap_alloc_ldap->suffix,
LDAP_SCOPE_SUBTREE, filter,
attr_list, 0, &result);
-
+
if (rc != LDAP_SUCCESS) {
DEBUG(0,("%s object not found\n", LDAP_OBJ_IDPOOL));
goto done;
}
talloc_autofree_ldapmsg(memctx, result);
-
- count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct, result);
+
+ count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct,
+ result);
if (count != 1) {
DEBUG(0,("Single %s object not found\n", LDAP_OBJ_IDPOOL));
goto done;
}
- entry = ldap_first_entry(idmap_alloc_ldap->smbldap_state->ldap_struct, result);
+ entry = ldap_first_entry(idmap_alloc_ldap->smbldap_state->ldap_struct,
+ result);
id_str = smbldap_talloc_single_attribute(idmap_alloc_ldap->smbldap_state->ldap_struct,
entry, type, memctx);
@@ -579,14 +602,14 @@ static NTSTATUS idmap_ldap_get_hwm(struct unixid *xid)
}
xid->id = strtoul(id_str, NULL, 10);
-
+
ret = NT_STATUS_OK;
done:
talloc_free(memctx);
return ret;
}
/**********************************
- Set highest id.
+ Set highest id.
**********************************/
static NTSTATUS idmap_ldap_set_hwm(struct unixid *xid)
@@ -623,11 +646,13 @@ static NTSTATUS idmap_ldap_set_hwm(struct unixid *xid)
switch (xid->type) {
case ID_TYPE_UID:
- type = get_attr_key2string(idpool_attr_list, LDAP_ATTR_UIDNUMBER);
+ type = get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_UIDNUMBER);
break;
case ID_TYPE_GID:
- type = get_attr_key2string(idpool_attr_list, LDAP_ATTR_GIDNUMBER);
+ type = get_attr_key2string(idpool_attr_list,
+ LDAP_ATTR_GIDNUMBER);
break;
default:
@@ -645,23 +670,27 @@ static NTSTATUS idmap_ldap_set_hwm(struct unixid *xid)
idmap_alloc_ldap->suffix,
LDAP_SCOPE_SUBTREE, filter,
attr_list, 0, &result);
-
+
if (rc != LDAP_SUCCESS) {
DEBUG(0,("%s object not found\n", LDAP_OBJ_IDPOOL));
goto done;
}
talloc_autofree_ldapmsg(ctx, result);
-
- count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct, result);
+
+ count = ldap_count_entries(idmap_alloc_ldap->smbldap_state->ldap_struct,
+ result);
if (count != 1) {
DEBUG(0,("Single %s object not found\n", LDAP_OBJ_IDPOOL));
goto done;
}
- entry = ldap_first_entry(idmap_alloc_ldap->smbldap_state->ldap_struct, result);
+ entry = ldap_first_entry(idmap_alloc_ldap->smbldap_state->ldap_struct,
+ result);
- dn = smbldap_talloc_dn(ctx, idmap_alloc_ldap->smbldap_state->ldap_struct, entry);
+ dn = smbldap_talloc_dn(ctx,
+ idmap_alloc_ldap->smbldap_state->ldap_struct,
+ entry);
if ( ! dn) {
goto done;
}
@@ -672,12 +701,12 @@ static NTSTATUS idmap_ldap_set_hwm(struct unixid *xid)
ret = NT_STATUS_NO_MEMORY;
goto done;
}
-
+
smbldap_set_mod(&mods, LDAP_MOD_REPLACE, type, new_id_str);
if (mods == NULL) {
DEBUG(0,("smbldap_set_mod() failed.\n"));
- goto done;
+ goto done;
}
rc = smbldap_modify(idmap_alloc_ldap->smbldap_state, dn, mods);
@@ -685,10 +714,11 @@ static NTSTATUS idmap_ldap_set_hwm(struct unixid *xid)
ldap_mods_free(mods, True);
if (rc != LDAP_SUCCESS) {
- DEBUG(1,("Failed to allocate new %s. smbldap_modify() failed.\n", type));
+ DEBUG(1,("Failed to allocate new %s. "
+ "smbldap_modify() failed.\n", type));
goto done;
}
-
+
ret = NT_STATUS_OK;
done:
@@ -715,7 +745,7 @@ static NTSTATUS idmap_ldap_alloc_close(void)
/**********************************************************************
IDMAP MAPPING LDAP BACKEND
**********************************************************************/
-
+
static int idmap_ldap_close_destructor(struct idmap_ldap_context *ctx)
{
smbldap_free_struct(&ctx->smbldap_state);
@@ -726,7 +756,7 @@ static int idmap_ldap_close_destructor(struct idmap_ldap_context *ctx)
}
/********************************
- Initialise idmap database.
+ Initialise idmap database.
********************************/
static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom)
@@ -758,7 +788,8 @@ static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom)
/* load ranges */
range = lp_parm_const_string(-1, config_option, "range", NULL);
if (range && range[0]) {
- if ((sscanf(range, "%u - %u", &ctx->filter_low_id, &ctx->filter_high_id) != 2) ||
+ if ((sscanf(range, "%u - %u", &ctx->filter_low_id,
+ &ctx->filter_high_id) != 2) ||
(ctx->filter_low_id > ctx->filter_high_id)) {
DEBUG(1, ("ERROR: invalid filter range [%s]", range));
ctx->filter_low_id = 0;
@@ -777,44 +808,38 @@ static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom)
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
-
+
ctx->url = talloc_strdup(ctx, tmp);
}
CHECK_ALLOC_DONE(ctx->url);
- tmp = lp_ldap_idmap_suffix();
- if ( ! tmp || ! *tmp) {
- tmp = lp_parm_const_string(-1, config_option, "ldap_base_dn", NULL);
- }
- if ( ! tmp) {
- tmp = lp_ldap_suffix();
- if (tmp) {
- DEBUG(1, ("WARNING: Trying to use the global ldap suffix(%s)\n", tmp));
- DEBUGADD(1, ("as suffix. This may not be what you want!\n"));
- } else {
- DEBUG(1, ("ERROR: missing idmap ldap suffix\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
- }
+ tmp = lp_parm_const_string(-1, config_option, "ldap_base_dn", NULL);
+ if ( ! tmp || ! *tmp) {
+ tmp = lp_ldap_idmap_suffix();
+ if ( ! tmp) {
+ DEBUG(1, ("ERROR: missing idmap ldap suffix\n"));
+ ret = NT_STATUS_UNSUCCESSFUL;
+ goto done;
+ }
+ }
+
ctx->suffix = talloc_strdup(ctx, tmp);
CHECK_ALLOC_DONE(ctx->suffix);
- ret = smbldap_init(ctx, winbind_event_context(), ctx->url,
- &ctx->smbldap_state);
+ ret = smbldap_init(ctx, ctx->url, &ctx->smbldap_state);
if (!NT_STATUS_IS_OK(ret)) {
DEBUG(1, ("ERROR: smbldap_init (%s) failed!\n", ctx->url));
goto done;
}
- ret = get_credentials( ctx, ctx->smbldap_state, config_option,
+ ret = get_credentials( ctx, ctx->smbldap_state, config_option,
dom, &ctx->user_dn );
if ( !NT_STATUS_IS_OK(ret) ) {
DEBUG(1,("idmap_ldap_db_init: Failed to get connection "
"credentials (%s)\n", nt_errstr(ret)));
goto done;
- }
-
+ }
+
/* set the destructor on the context, so that resource are properly
freed if the contexts is released */
@@ -833,14 +858,17 @@ done:
}
/* max number of ids requested per batch query */
-#define IDMAP_LDAP_MAX_IDS 30
+#define IDMAP_LDAP_MAX_IDS 30
/**********************************
- lookup a set of unix ids.
+ lookup a set of unix ids.
**********************************/
-/* this function searches up to IDMAP_LDAP_MAX_IDS entries in maps for a match */
-static struct id_map *find_map_by_id(struct id_map **maps, enum id_type type, uint32_t id)
+/* this function searches up to IDMAP_LDAP_MAX_IDS entries
+ * in maps for a match */
+static struct id_map *find_map_by_id(struct id_map **maps,
+ enum id_type type,
+ uint32_t id)
{
int i;
@@ -853,10 +881,11 @@ static struct id_map *find_map_by_id(struct id_map **maps, enum id_type type, ui
}
}
- return NULL;
+ return NULL;
}
-static NTSTATUS idmap_ldap_unixids_to_sids(struct idmap_domain *dom, struct id_map **ids)
+static NTSTATUS idmap_ldap_unixids_to_sids(struct idmap_domain *dom,
+ struct id_map **ids)
{
NTSTATUS ret;
TALLOC_CTX *memctx;
@@ -886,7 +915,7 @@ static NTSTATUS idmap_ldap_unixids_to_sids(struct idmap_domain *dom, struct id_m
}
}
- ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
+ ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
memctx = talloc_new(ctx);
if ( ! memctx) {
@@ -897,7 +926,7 @@ static NTSTATUS idmap_ldap_unixids_to_sids(struct idmap_domain *dom, struct id_m
uidNumber = get_attr_key2string(idpool_attr_list, LDAP_ATTR_UIDNUMBER);
gidNumber = get_attr_key2string(idpool_attr_list, LDAP_ATTR_GIDNUMBER);
- attr_list = get_attr_list(ctx, sidmap_attr_list);
+ attr_list = get_attr_list(memctx, sidmap_attr_list);
if ( ! ids[1]) {
/* if we are requested just one mapping use the simple filter */
@@ -917,7 +946,9 @@ again:
if (multi) {
talloc_free(filter);
- filter = talloc_asprintf(memctx, "(&(objectClass=%s)(|", LDAP_OBJ_IDMAP_ENTRY);
+ filter = talloc_asprintf(memctx,
+ "(&(objectClass=%s)(|",
+ LDAP_OBJ_IDMAP_ENTRY);
CHECK_ALLOC_DONE(filter);
bidx = idx;
@@ -935,7 +966,7 @@ again:
idx = 1;
}
- rc = smbldap_search(ctx->smbldap_state, ctx->suffix, LDAP_SCOPE_SUBTREE,
+ rc = smbldap_search(ctx->smbldap_state, ctx->suffix, LDAP_SCOPE_SUBTREE,
filter, attr_list, 0, &result);
if (rc != LDAP_SUCCESS) {
@@ -959,12 +990,15 @@ again:
uint32_t id;
if (i == 0) { /* first entry */
- entry = ldap_first_entry(ctx->smbldap_state->ldap_struct, result);
+ entry = ldap_first_entry(ctx->smbldap_state->ldap_struct,
+ result);
} else { /* following ones */
- entry = ldap_next_entry(ctx->smbldap_state->ldap_struct, entry);
+ entry = ldap_next_entry(ctx->smbldap_state->ldap_struct,
+ entry);
}
if ( ! entry) {
- DEBUG(2, ("ERROR: Unable to fetch ldap entries from results\n"));
+ DEBUG(2, ("ERROR: Unable to fetch ldap entries "
+ "from results\n"));
break;
}
@@ -979,7 +1013,8 @@ again:
/* now try to see if it is a uid, if not try with a gid
* (gid is more common, but in case both uidNumber and
- * gidNumber are returned the SID is mapped to the uid not the gid) */
+ * gidNumber are returned the SID is mapped to the uid
+ *not the gid) */
type = ID_TYPE_UID;
tmp = smbldap_talloc_single_attribute(
ctx->smbldap_state->ldap_struct,
@@ -991,7 +1026,8 @@ again:
entry, gidNumber, memctx);
}
if ( ! tmp) { /* wow very strange entry, how did it match ? */
- DEBUG(5, ("Unprobable match on (%s), no uidNumber, nor gidNumber returned\n", sidstr));
+ DEBUG(5, ("Unprobable match on (%s), no uidNumber, "
+ "nor gidNumber returned\n", sidstr));
TALLOC_FREE(sidstr);
continue;
}
@@ -1000,8 +1036,9 @@ again:
if ((id == 0) ||
(ctx->filter_low_id && (id < ctx->filter_low_id)) ||
(ctx->filter_high_id && (id > ctx->filter_high_id))) {
- DEBUG(5, ("Requested id (%u) out of range (%u - %u). Filtered!\n",
- id, ctx->filter_low_id, ctx->filter_high_id));
+ DEBUG(5, ("Requested id (%u) out of range (%u - %u). "
+ "Filtered!\n", id,
+ ctx->filter_low_id, ctx->filter_high_id));
TALLOC_FREE(sidstr);
TALLOC_FREE(tmp);
continue;
@@ -1010,7 +1047,8 @@ again:
map = find_map_by_id(&ids[bidx], type, id);
if (!map) {
- DEBUG(2, ("WARNING: couldn't match sid (%s) with requested ids\n", sidstr));
+ DEBUG(2, ("WARNING: couldn't match sid (%s) "
+ "with requested ids\n", sidstr));
TALLOC_FREE(sidstr);
continue;
}
@@ -1025,7 +1063,9 @@ again:
/* mapped */
map->status = ID_MAPPED;
- DEBUG(10, ("Mapped %s -> %lu (%d)\n", sid_string_static(map->sid), (unsigned long)map->xid.id, map->xid.type));
+ DEBUG(10, ("Mapped %s -> %lu (%d)\n",
+ sid_string_static(map->sid),
+ (unsigned long)map->xid.id, map->xid.type));
}
/* free the ldap results */
@@ -1052,10 +1092,11 @@ done:
}
/**********************************
- lookup a set of sids.
+ lookup a set of sids.
**********************************/
-/* this function searches up to IDMAP_LDAP_MAX_IDS entries in maps for a match */
+/* this function searches up to IDMAP_LDAP_MAX_IDS entries
+ * in maps for a match */
static struct id_map *find_map_by_sid(struct id_map **maps, DOM_SID *sid)
{
int i;
@@ -1069,10 +1110,11 @@ static struct id_map *find_map_by_sid(struct id_map **maps, DOM_SID *sid)
}
}
- return NULL;
+ return NULL;
}
-static NTSTATUS idmap_ldap_sids_to_unixids(struct idmap_domain *dom, struct id_map **ids)
+static NTSTATUS idmap_ldap_sids_to_unixids(struct idmap_domain *dom,
+ struct id_map **ids)
{
LDAPMessage *entry = NULL;
NTSTATUS ret;
@@ -1103,7 +1145,7 @@ static NTSTATUS idmap_ldap_sids_to_unixids(struct idmap_domain *dom, struct id_m
}
}
- ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
+ ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
memctx = talloc_new(ctx);
if ( ! memctx) {
@@ -1114,7 +1156,7 @@ static NTSTATUS idmap_ldap_sids_to_unixids(struct idmap_domain *dom, struct id_m
uidNumber = get_attr_key2string(idpool_attr_list, LDAP_ATTR_UIDNUMBER);
gidNumber = get_attr_key2string(idpool_attr_list, LDAP_ATTR_GIDNUMBER);
- attr_list = get_attr_list(ctx, sidmap_attr_list);
+ attr_list = get_attr_list(memctx, sidmap_attr_list);
if ( ! ids[1]) {
/* if we are requested just one mapping use the simple filter */
@@ -1134,7 +1176,9 @@ again:
if (multi) {
TALLOC_FREE(filter);
- filter = talloc_asprintf(memctx, "(&(objectClass=%s)(|", LDAP_OBJ_IDMAP_ENTRY);
+ filter = talloc_asprintf(memctx,
+ "(&(objectClass=%s)(|",
+ LDAP_OBJ_IDMAP_ENTRY);
CHECK_ALLOC_DONE(filter);
bidx = idx;
@@ -1152,11 +1196,12 @@ again:
idx = 1;
}
- rc = smbldap_search(ctx->smbldap_state, ctx->suffix, LDAP_SCOPE_SUBTREE,
+ rc = smbldap_search(ctx->smbldap_state, ctx->suffix, LDAP_SCOPE_SUBTREE,
filter, attr_list, 0, &result);
if (rc != LDAP_SUCCESS) {
- DEBUG(3,("Failure looking up sids (%s)\n", ldap_err2string(rc)));
+ DEBUG(3,("Failure looking up sids (%s)\n",
+ ldap_err2string(rc)));
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
@@ -1176,12 +1221,15 @@ again:
uint32_t id;
if (i == 0) { /* first entry */
- entry = ldap_first_entry(ctx->smbldap_state->ldap_struct, result);
+ entry = ldap_first_entry(ctx->smbldap_state->ldap_struct,
+ result);
} else { /* following ones */
- entry = ldap_next_entry(ctx->smbldap_state->ldap_struct, entry);
+ entry = ldap_next_entry(ctx->smbldap_state->ldap_struct,
+ entry);
}
if ( ! entry) {
- DEBUG(2, ("ERROR: Unable to fetch ldap entries from results\n"));
+ DEBUG(2, ("ERROR: Unable to fetch ldap entries "
+ "from results\n"));
break;
}
@@ -1202,7 +1250,8 @@ again:
map = find_map_by_sid(&ids[bidx], &sid);
if (!map) {
- DEBUG(2, ("WARNING: couldn't find entry sid (%s) in ids", sidstr));
+ DEBUG(2, ("WARNING: couldn't find entry sid (%s) "
+ "in ids", sidstr));
TALLOC_FREE(sidstr);
continue;
}
@@ -1211,7 +1260,8 @@ again:
/* now try to see if it is a uid, if not try with a gid
* (gid is more common, but in case both uidNumber and
- * gidNumber are returned the SID is mapped to the uid not the gid) */
+ * gidNumber are returned the SID is mapped to the uid
+ * not the gid) */
type = ID_TYPE_UID;
tmp = smbldap_talloc_single_attribute(
ctx->smbldap_state->ldap_struct,
@@ -1223,7 +1273,8 @@ again:
entry, gidNumber, memctx);
}
if ( ! tmp) { /* no ids ?? */
- DEBUG(5, ("no uidNumber, nor gidNumber attributes found\n"));
+ DEBUG(5, ("no uidNumber, "
+ "nor gidNumber attributes found\n"));
continue;
}
@@ -1231,8 +1282,9 @@ again:
if ((id == 0) ||
(ctx->filter_low_id && (id < ctx->filter_low_id)) ||
(ctx->filter_high_id && (id > ctx->filter_high_id))) {
- DEBUG(5, ("Requested id (%u) out of range (%u - %u). Filtered!\n",
- id, ctx->filter_low_id, ctx->filter_high_id));
+ DEBUG(5, ("Requested id (%u) out of range (%u - %u). "
+ "Filtered!\n", id,
+ ctx->filter_low_id, ctx->filter_high_id));
TALLOC_FREE(tmp);
continue;
}
@@ -1242,8 +1294,10 @@ again:
map->xid.type = type;
map->xid.id = id;
map->status = ID_MAPPED;
-
- DEBUG(10, ("Mapped %s -> %lu (%d)\n", sid_string_static(map->sid), (unsigned long)map->xid.id, map->xid.type));
+
+ DEBUG(10, ("Mapped %s -> %lu (%d)\n",
+ sid_string_static(map->sid),
+ (unsigned long)map->xid.id, map->xid.type));
}
/* free the ldap results */
@@ -1270,12 +1324,14 @@ done:
}
/**********************************
- set a mapping.
+ set a mapping.
**********************************/
-/* TODO: change this: This function cannot be called to modify a mapping, only set a new one */
+/* TODO: change this: This function cannot be called to modify a mapping,
+ * only set a new one */
-static NTSTATUS idmap_ldap_set_mapping(struct idmap_domain *dom, const struct id_map *map)
+static NTSTATUS idmap_ldap_set_mapping(struct idmap_domain *dom,
+ const struct id_map *map)
{
NTSTATUS ret;
TALLOC_CTX *memctx;
@@ -1301,15 +1357,17 @@ static NTSTATUS idmap_ldap_set_mapping(struct idmap_domain *dom, const struct id
}
}
- ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
+ ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
switch(map->xid.type) {
case ID_TYPE_UID:
- type = get_attr_key2string(sidmap_attr_list, LDAP_ATTR_UIDNUMBER);
+ type = get_attr_key2string(sidmap_attr_list,
+ LDAP_ATTR_UIDNUMBER);
break;
case ID_TYPE_GID:
- type = get_attr_key2string(sidmap_attr_list, LDAP_ATTR_GIDNUMBER);
+ type = get_attr_key2string(sidmap_attr_list,
+ LDAP_ATTR_GIDNUMBER);
break;
default:
@@ -1334,12 +1392,15 @@ static NTSTATUS idmap_ldap_set_mapping(struct idmap_domain *dom, const struct id
ctx->suffix);
CHECK_ALLOC_DONE(dn);
- smbldap_set_mod(&mods, LDAP_MOD_ADD, "objectClass", LDAP_OBJ_IDMAP_ENTRY);
+ smbldap_set_mod(&mods, LDAP_MOD_ADD,
+ "objectClass", LDAP_OBJ_IDMAP_ENTRY);
- smbldap_make_mod(ctx->smbldap_state->ldap_struct, entry, &mods, type, id_str);
+ smbldap_make_mod(ctx->smbldap_state->ldap_struct,
+ entry, &mods, type, id_str);
- smbldap_make_mod(ctx->smbldap_state->ldap_struct, entry, &mods,
- get_attr_key2string(sidmap_attr_list, LDAP_ATTR_SID), sid);
+ smbldap_make_mod(ctx->smbldap_state->ldap_struct, entry, &mods,
+ get_attr_key2string(sidmap_attr_list, LDAP_ATTR_SID),
+ sid);
if ( ! mods) {
DEBUG(2, ("ERROR: No mods?\n"));
@@ -1354,14 +1415,16 @@ static NTSTATUS idmap_ldap_set_mapping(struct idmap_domain *dom, const struct id
DEBUG(10, ("Set DN %s (%s -> %s)\n", dn, sid, id_str));
rc = smbldap_add(ctx->smbldap_state, dn, mods);
- ldap_mods_free(mods, True);
+ ldap_mods_free(mods, True);
if (rc != LDAP_SUCCESS) {
char *ld_error = NULL;
- ldap_get_option(ctx->smbldap_state->ldap_struct, LDAP_OPT_ERROR_STRING, &ld_error);
- DEBUG(0,("ldap_set_mapping_internals: Failed to add %s to %lu mapping [%s]\n",
- sid, (unsigned long)map->xid.id, type));
- DEBUG(0, ("ldap_set_mapping_internals: Error was: %s (%s)\n",
+ ldap_get_option(ctx->smbldap_state->ldap_struct,
+ LDAP_OPT_ERROR_STRING, &ld_error);
+ DEBUG(0,("ldap_set_mapping_internals: Failed to add %s to %lu "
+ "mapping [%s]\n", sid,
+ (unsigned long)map->xid.id, type));
+ DEBUG(0, ("ldap_set_mapping_internals: Error was: %s (%s)\n",
ld_error ? ld_error : "(NULL)", ldap_err2string (rc)));
if (ld_error) {
ldap_memfree(ld_error);
@@ -1369,9 +1432,9 @@ static NTSTATUS idmap_ldap_set_mapping(struct idmap_domain *dom, const struct id
ret = NT_STATUS_UNSUCCESSFUL;
goto done;
}
-
- DEBUG(10,("ldap_set_mapping: Successfully created mapping from %s to %lu [%s]\n",
- sid, (unsigned long)map->xid.id, type));
+
+ DEBUG(10,("ldap_set_mapping: Successfully created mapping from %s to "
+ "%lu [%s]\n", sid, (unsigned long)map->xid.id, type));
ret = NT_STATUS_OK;
@@ -1381,7 +1444,7 @@ done:
}
/**********************************
- Close the idmap ldap instance
+ Close the idmap ldap instance
**********************************/
static NTSTATUS idmap_ldap_close(struct idmap_domain *dom)
@@ -1389,12 +1452,13 @@ static NTSTATUS idmap_ldap_close(struct idmap_domain *dom)
struct idmap_ldap_context *ctx;
if (dom->private_data) {
- ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
+ ctx = talloc_get_type(dom->private_data,
+ struct idmap_ldap_context);
talloc_free(ctx);
dom->private_data = NULL;
}
-
+
return NT_STATUS_OK;
}
@@ -1419,18 +1483,21 @@ static struct idmap_alloc_methods idmap_ldap_alloc_methods = {
NTSTATUS idmap_alloc_ldap_init(void)
{
- return smb_register_idmap_alloc(SMB_IDMAP_INTERFACE_VERSION, "ldap", &idmap_ldap_alloc_methods);
+ return smb_register_idmap_alloc(SMB_IDMAP_INTERFACE_VERSION, "ldap",
+ &idmap_ldap_alloc_methods);
}
NTSTATUS idmap_ldap_init(void)
{
NTSTATUS ret;
- /* FIXME: bad hack to actually register also the alloc_ldap module without changining configure.in */
+ /* FIXME: bad hack to actually register also the alloc_ldap module
+ * without changining configure.in */
ret = idmap_alloc_ldap_init();
if (! NT_STATUS_IS_OK(ret)) {
return ret;
}
- return smb_register_idmap(SMB_IDMAP_INTERFACE_VERSION, "ldap", &idmap_ldap_methods);
+ return smb_register_idmap(SMB_IDMAP_INTERFACE_VERSION, "ldap",
+ &idmap_ldap_methods);
}
diff --git a/source/nsswitch/idmap_rid.c b/source/nsswitch/idmap_rid.c
index 96ce4c081a1..c6839dca314 100644
--- a/source/nsswitch/idmap_rid.c
+++ b/source/nsswitch/idmap_rid.c
@@ -79,7 +79,7 @@ static NTSTATUS idmap_rid_initialize(struct idmap_domain *dom)
if (lp_idmap_gid(&low_gid, &high_gid)) {
if ((ctx->low_id != low_gid) ||
(ctx->high_id != high_uid)) {
- DEBUG(1, ("ERROR: idmap uid range must match idmap gid range\n"));
+ DEBUG(1, ("ERROR: idmap uid irange must match idmap gid range\n"));
ret = NT_STATUS_UNSUCCESSFUL;
goto failed;
}
diff --git a/source/nsswitch/idmap_tdb.c b/source/nsswitch/idmap_tdb.c
index 2961229e491..ec866519353 100644
--- a/source/nsswitch/idmap_tdb.c
+++ b/source/nsswitch/idmap_tdb.c
@@ -57,24 +57,24 @@ static int convert_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA data, void *state
TDB_DATA key2;
BOOL *failed = (BOOL *)state;
- DEBUG(10,("Converting %s\n", (const char *)key.dptr));
+ DEBUG(10,("Converting %s\n", key.dptr));
- p = strchr((const char *)key.dptr, '/');
+ p = strchr(key.dptr, '/');
if (!p)
return 0;
*p = 0;
- fstrcpy(dom_name, (const char *)key.dptr);
+ fstrcpy(dom_name, key.dptr);
*p++ = '/';
domain = find_domain_from_name(dom_name);
if (domain == NULL) {
/* We must delete the old record. */
DEBUG(0,("Unable to find domain %s\n", dom_name ));
- DEBUG(0,("deleting record %s\n", (const char *)key.dptr ));
+ DEBUG(0,("deleting record %s\n", key.dptr ));
if (tdb_delete(tdb, key) != 0) {
- DEBUG(0, ("Unable to delete record %s\n", (const char *)key.dptr));
+ DEBUG(0, ("Unable to delete record %s\n", key.dptr));
*failed = True;
return -1;
}
@@ -88,22 +88,23 @@ static int convert_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA data, void *state
sid_append_rid(&sid, rid);
sid_to_string(keystr, &sid);
- key2 = string_term_tdb_data(keystr);
+ key2.dptr = keystr;
+ key2.dsize = strlen(keystr) + 1;
if (tdb_store(tdb, key2, data, TDB_INSERT) != 0) {
- DEBUG(0,("Unable to add record %s\n", (const char *)key2.dptr ));
+ DEBUG(0,("Unable to add record %s\n", key2.dptr ));
*failed = True;
return -1;
}
if (tdb_store(tdb, data, key2, TDB_REPLACE) != 0) {
- DEBUG(0,("Unable to update record %s\n", (const char *)data.dptr ));
+ DEBUG(0,("Unable to update record %s\n", data.dptr ));
*failed = True;
return -1;
}
if (tdb_delete(tdb, key) != 0) {
- DEBUG(0,("Unable to delete record %s\n", (const char *)key.dptr ));
+ DEBUG(0,("Unable to delete record %s\n", key.dptr ));
*failed = True;
return -1;
}
@@ -115,15 +116,13 @@ static int convert_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA data, void *state
Convert the idmap database from an older version.
*****************************************************************************/
-static BOOL idmap_tdb_upgrade(const char *idmap_name)
+static BOOL idmap_tdb_convert(const char *idmap_name)
{
int32 vers;
BOOL bigendianheader;
BOOL failed = False;
TDB_CONTEXT *idmap_tdb;
- DEBUG(0, ("Upgrading winbindd_idmap.tdb from an old version\n"));
-
if (!(idmap_tdb = tdb_open_log(idmap_name, 0,
TDB_DEFAULT, O_RDWR,
0600))) {
@@ -191,6 +190,32 @@ static BOOL idmap_tdb_upgrade(const char *idmap_name)
return True;
}
+/*****************************************************************************
+ Convert the idmap database from an older version if necessary
+*****************************************************************************/
+
+BOOL idmap_tdb_upgrade(TALLOC_CTX *ctx, const char *tdbfile)
+{
+ char *backup_name;
+
+ DEBUG(0, ("Upgrading winbindd_idmap.tdb from an old version\n"));
+
+ backup_name = talloc_asprintf(ctx, "%s.bak", tdbfile);
+ if ( ! backup_name) {
+ DEBUG(0, ("Out of memory!\n"));
+ return False;
+ }
+
+ if (backup_tdb(tdbfile, backup_name, 0) != 0) {
+ DEBUG(0, ("Could not backup idmap database\n"));
+ talloc_free(backup_name);
+ return False;
+ }
+
+ talloc_free(backup_name);
+ return idmap_tdb_convert(tdbfile);
+}
+
/* WARNING: We can't open a tdb twice inthe same process, for that reason
* I'm going to use a hack with open ref counts to open the winbindd_idmap.tdb
* only once. We will later decide whether to split the db in multiple files
@@ -258,7 +283,7 @@ static NTSTATUS idmap_tdb_open_db(TALLOC_CTX *memctx, TDB_CONTEXT **tdbctx)
/* backup_tdb expects the tdb not to be open */
tdb_close(idmap_tdb_common_ctx);
- if ( ! idmap_tdb_upgrade(tdbfile)) {
+ if ( ! idmap_tdb_upgrade(ctx, tdbfile)) {
DEBUG(0, ("Unable to open idmap database, it's in an old formati, and upgrade failed!\n"));
ret = NT_STATUS_INTERNAL_DB_ERROR;
@@ -637,8 +662,7 @@ failed:
static NTSTATUS idmap_tdb_id_to_sid(struct idmap_tdb_context *ctx, struct id_map *map)
{
NTSTATUS ret;
- TDB_DATA data;
- char *keystr;
+ TDB_DATA key, data;
if (!ctx || !map) {
return NT_STATUS_INVALID_PARAMETER;
@@ -655,11 +679,11 @@ static NTSTATUS idmap_tdb_id_to_sid(struct idmap_tdb_context *ctx, struct id_map
switch (map->xid.type) {
case ID_TYPE_UID:
- keystr = talloc_asprintf(ctx, "UID %lu", (unsigned long)map->xid.id);
+ key.dptr = talloc_asprintf(ctx, "UID %lu", (unsigned long)map->xid.id);
break;
case ID_TYPE_GID:
- keystr = talloc_asprintf(ctx, "GID %lu", (unsigned long)map->xid.id);
+ key.dptr = talloc_asprintf(ctx, "GID %lu", (unsigned long)map->xid.id);
break;
default:
@@ -670,36 +694,38 @@ static NTSTATUS idmap_tdb_id_to_sid(struct idmap_tdb_context *ctx, struct id_map
/* final SAFE_FREE safe */
data.dptr = NULL;
- if (keystr == NULL) {
+ if (key.dptr == NULL) {
DEBUG(0, ("Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
goto done;
}
- DEBUG(10,("Fetching record %s\n", keystr));
+ key.dsize = strlen(key.dptr) + 1;
+
+ DEBUG(10,("Fetching record %s\n", key.dptr));
/* Check if the mapping exists */
- data = tdb_fetch_bystring(ctx->tdb, keystr);
+ data = tdb_fetch(ctx->tdb, key);
if (!data.dptr) {
- DEBUG(10,("Record %s not found\n", keystr));
+ DEBUG(10,("Record %s not found\n", key.dptr));
ret = NT_STATUS_NONE_MAPPED;
goto done;
}
- if (!string_to_sid(map->sid, (const char *)data.dptr)) {
+ if (!string_to_sid(map->sid, data.dptr)) {
DEBUG(10,("INVALID SID (%s) in record %s\n",
- (const char *)data.dptr, keystr));
+ data.dptr, key.dptr));
ret = NT_STATUS_INTERNAL_DB_ERROR;
goto done;
}
- DEBUG(10,("Found record %s -> %s\n", keystr, (const char *)data.dptr));
+ DEBUG(10,("Found record %s -> %s\n", key.dptr, data.dptr));
ret = NT_STATUS_OK;
done:
SAFE_FREE(data.dptr);
- talloc_free(keystr);
+ talloc_free(key.dptr);
return ret;
}
@@ -710,41 +736,42 @@ done:
static NTSTATUS idmap_tdb_sid_to_id(struct idmap_tdb_context *ctx, struct id_map *map)
{
NTSTATUS ret;
- TDB_DATA data;
- char *keystr;
+ TDB_DATA key, data;
unsigned long rec_id = 0;
- if ((keystr = talloc_asprintf(ctx, "%s", sid_string_static(map->sid))) == NULL) {
+ if ((key.dptr = talloc_asprintf(ctx, "%s", sid_string_static(map->sid))) == NULL) {
DEBUG(0, ("Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
goto done;
}
- DEBUG(10,("Fetching record %s\n", keystr));
+ key.dsize = strlen(key.dptr) + 1;
+
+ DEBUG(10,("Fetching record %s\n", key.dptr));
/* Check if sid is present in database */
- data = tdb_fetch_bystring(ctx->tdb, keystr);
+ data = tdb_fetch(ctx->tdb, key);
if (!data.dptr) {
- DEBUG(10,("Record %s not found\n", keystr));
+ DEBUG(10,("Record %s not found\n", key.dptr));
ret = NT_STATUS_NONE_MAPPED;
goto done;
}
/* What type of record is this ? */
- if (sscanf((const char *)data.dptr, "UID %lu", &rec_id) == 1) { /* Try a UID record. */
+ if (sscanf(data.dptr, "UID %lu", &rec_id) == 1) { /* Try a UID record. */
map->xid.id = rec_id;
map->xid.type = ID_TYPE_UID;
- DEBUG(10,("Found uid record %s -> %s \n", keystr, (const char *)data.dptr ));
+ DEBUG(10,("Found uid record %s -> %s \n", key.dptr, data.dptr ));
ret = NT_STATUS_OK;
- } else if (sscanf((const char *)data.dptr, "GID %lu", &rec_id) == 1) { /* Try a GID record. */
+ } else if (sscanf(data.dptr, "GID %lu", &rec_id) == 1) { /* Try a GID record. */
map->xid.id = rec_id;
map->xid.type = ID_TYPE_GID;
- DEBUG(10,("Found gid record %s -> %s \n", keystr, (const char *)data.dptr ));
+ DEBUG(10,("Found gid record %s -> %s \n", key.dptr, data.dptr ));
ret = NT_STATUS_OK;
} else { /* Unknown record type ! */
- DEBUG(2, ("Found INVALID record %s -> %s\n", keystr, (const char *)data.dptr));
+ DEBUG(2, ("Found INVALID record %s -> %s\n", key.dptr, data.dptr));
ret = NT_STATUS_INTERNAL_DB_ERROR;
}
@@ -759,7 +786,7 @@ static NTSTATUS idmap_tdb_sid_to_id(struct idmap_tdb_context *ctx, struct id_map
}
done:
- talloc_free(keystr);
+ talloc_free(key.dptr);
return ret;
}
@@ -864,7 +891,6 @@ static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, const struct id_
struct idmap_tdb_context *ctx;
NTSTATUS ret;
TDB_DATA ksid, kid, data;
- char *ksidstr, *kidstr;
/* make sure we initialized */
if ( ! dom->initialized) {
@@ -878,8 +904,7 @@ static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, const struct id_
return NT_STATUS_INVALID_PARAMETER;
}
- ksidstr = kidstr = NULL;
- data.dptr = NULL;
+ ksid.dptr = kid.dptr = data.dptr = NULL;
/* TODO: should we filter a set_mapping using low/high filters ? */
@@ -888,11 +913,11 @@ static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, const struct id_
switch (map->xid.type) {
case ID_TYPE_UID:
- kidstr = talloc_asprintf(ctx, "UID %lu", (unsigned long)map->xid.id);
+ kid.dptr = talloc_asprintf(ctx, "UID %lu", (unsigned long)map->xid.id);
break;
case ID_TYPE_GID:
- kidstr = talloc_asprintf(ctx, "GID %lu", (unsigned long)map->xid.id);
+ kid.dptr = talloc_asprintf(ctx, "GID %lu", (unsigned long)map->xid.id);
break;
default:
@@ -900,21 +925,21 @@ static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, const struct id_
return NT_STATUS_INVALID_PARAMETER;
}
- if (kidstr == NULL) {
+ if (kid.dptr == NULL) {
DEBUG(0, ("ERROR: Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
goto done;
}
+ kid.dsize = strlen(kid.dptr) + 1;
- if ((ksidstr = talloc_asprintf(ctx, "%s", sid_string_static(map->sid))) == NULL) {
+ if ((ksid.dptr = talloc_asprintf(ctx, "%s", sid_string_static(map->sid))) == NULL) {
DEBUG(0, ("Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
goto done;
}
+ ksid.dsize = strlen(ksid.dptr) + 1;
- DEBUG(10, ("Storing %s <-> %s map\n", ksidstr, kidstr));
- kid = string_term_tdb_data(kidstr);
- ksid = string_term_tdb_data(ksidstr);
+ DEBUG(10, ("Storing %s <-> %s map\n", ksid.dptr, kid.dptr));
/* *DELETE* previous mappings if any.
* This is done both SID and [U|G]ID passed in */
@@ -922,13 +947,13 @@ static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, const struct id_
/* Lock the record for this SID. */
if (tdb_chainlock(ctx->tdb, ksid) != 0) {
DEBUG(10,("Failed to lock record %s. Error %s\n",
- ksidstr, tdb_errorstr(ctx->tdb) ));
+ ksid.dptr, tdb_errorstr(ctx->tdb) ));
return NT_STATUS_UNSUCCESSFUL;
}
data = tdb_fetch(ctx->tdb, ksid);
if (data.dptr) {
- DEBUG(10, ("Deleting existing mapping %s <-> %s\n", (const char *)data.dptr, ksidstr ));
+ DEBUG(10, ("Deleting existing mapping %s <-> %s\n", data.dptr, ksid.dptr ));
tdb_delete(ctx->tdb, data);
tdb_delete(ctx->tdb, ksid);
SAFE_FREE(data.dptr);
@@ -936,7 +961,7 @@ static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, const struct id_
data = tdb_fetch(ctx->tdb, kid);
if (data.dptr) {
- DEBUG(10,("Deleting existing mapping %s <-> %s\n", (const char *)data.dptr, kidstr ));
+ DEBUG(10,("Deleting existing mapping %s <-> %s\n", data.dptr, kid.dptr ));
tdb_delete(ctx->tdb, data);
tdb_delete(ctx->tdb, kid);
SAFE_FREE(data.dptr);
@@ -958,12 +983,12 @@ static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, const struct id_
}
tdb_chainunlock(ctx->tdb, ksid);
- DEBUG(10,("Stored %s <-> %s\n", ksidstr, kidstr));
+ DEBUG(10,("Stored %s <-> %s\n", ksid.dptr, kid.dptr));
ret = NT_STATUS_OK;
done:
- talloc_free(ksidstr);
- talloc_free(kidstr);
+ talloc_free(ksid.dptr);
+ talloc_free(kid.dptr);
SAFE_FREE(data.dptr);
return ret;
}
@@ -977,7 +1002,6 @@ static NTSTATUS idmap_tdb_remove_mapping(struct idmap_domain *dom, const struct
struct idmap_tdb_context *ctx;
NTSTATUS ret;
TDB_DATA ksid, kid, data;
- char *ksidstr, *kidstr;
/* make sure we initialized */
if ( ! dom->initialized) {
@@ -991,8 +1015,7 @@ static NTSTATUS idmap_tdb_remove_mapping(struct idmap_domain *dom, const struct
return NT_STATUS_INVALID_PARAMETER;
}
- ksidstr = kidstr = NULL;
- data.dptr = NULL;
+ ksid.dptr = kid.dptr = data.dptr = NULL;
/* TODO: should we filter a remove_mapping using low/high filters ? */
@@ -1001,11 +1024,11 @@ static NTSTATUS idmap_tdb_remove_mapping(struct idmap_domain *dom, const struct
switch (map->xid.type) {
case ID_TYPE_UID:
- kidstr = talloc_asprintf(ctx, "UID %lu", (unsigned long)map->xid.id);
+ kid.dptr = talloc_asprintf(ctx, "UID %lu", (unsigned long)map->xid.id);
break;
case ID_TYPE_GID:
- kidstr = talloc_asprintf(ctx, "GID %lu", (unsigned long)map->xid.id);
+ kid.dptr = talloc_asprintf(ctx, "GID %lu", (unsigned long)map->xid.id);
break;
default:
@@ -1013,33 +1036,33 @@ static NTSTATUS idmap_tdb_remove_mapping(struct idmap_domain *dom, const struct
return NT_STATUS_INVALID_PARAMETER;
}
- if (kidstr == NULL) {
+ if (kid.dptr == NULL) {
DEBUG(0, ("ERROR: Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
goto done;
}
+ kid.dsize = strlen(kid.dptr) + 1;
- if ((ksidstr = talloc_asprintf(ctx, "%s", sid_string_static(map->sid))) == NULL) {
+ if ((ksid.dptr = talloc_asprintf(ctx, "%s", sid_string_static(map->sid))) == NULL) {
DEBUG(0, ("Out of memory!\n"));
ret = NT_STATUS_NO_MEMORY;
goto done;
}
+ ksid.dsize = strlen(ksid.dptr) + 1;
- DEBUG(10, ("Checking %s <-> %s map\n", ksidstr, kidstr));
- ksid = string_term_tdb_data(ksidstr);
- kid = string_term_tdb_data(kidstr);
+ DEBUG(10, ("Checking %s <-> %s map\n", ksid.dptr, kid.dptr));
/* Lock the record for this SID. */
if (tdb_chainlock(ctx->tdb, ksid) != 0) {
DEBUG(10,("Failed to lock record %s. Error %s\n",
- ksidstr, tdb_errorstr(ctx->tdb) ));
+ ksid.dptr, tdb_errorstr(ctx->tdb) ));
return NT_STATUS_UNSUCCESSFUL;
}
/* Check if sid is present in database */
data = tdb_fetch(ctx->tdb, ksid);
if (!data.dptr) {
- DEBUG(10,("Record %s not found\n", ksidstr));
+ DEBUG(10,("Record %s not found\n", ksid.dptr));
tdb_chainunlock(ctx->tdb, ksid);
ret = NT_STATUS_NONE_MAPPED;
goto done;
@@ -1049,28 +1072,28 @@ static NTSTATUS idmap_tdb_remove_mapping(struct idmap_domain *dom, const struct
if ((data.dsize != kid.dsize) ||
(memcmp(data.dptr, kid.dptr, data.dsize) != 0)) {
DEBUG(10,("Specified SID does not map to specified ID\n"));
- DEBUGADD(10,("Actual mapping is %s -> %s\n", ksidstr, (const char *)data.dptr));
+ DEBUGADD(10,("Actual mapping is %s -> %s\n", ksid.dptr, data.dptr));
tdb_chainunlock(ctx->tdb, ksid);
ret = NT_STATUS_NONE_MAPPED;
goto done;
}
- DEBUG(10, ("Removing %s <-> %s map\n", ksidstr, kidstr));
+ DEBUG(10, ("Removing %s <-> %s map\n", ksid.dptr, kid.dptr));
/* Delete previous mappings. */
- DEBUG(10, ("Deleting existing mapping %s -> %s\n", ksidstr, kidstr ));
+ DEBUG(10, ("Deleting existing mapping %s -> %s\n", ksid.dptr, kid.dptr ));
tdb_delete(ctx->tdb, ksid);
- DEBUG(10,("Deleting existing mapping %s -> %s\n", kidstr, ksidstr ));
+ DEBUG(10,("Deleting existing mapping %s -> %s\n", kid.dptr, ksid.dptr ));
tdb_delete(ctx->tdb, kid);
tdb_chainunlock(ctx->tdb, ksid);
ret = NT_STATUS_OK;
done:
- talloc_free(ksidstr);
- talloc_free(kidstr);
+ talloc_free(ksid.dptr);
+ talloc_free(kid.dptr);
SAFE_FREE(data.dptr);
return ret;
}
@@ -1109,7 +1132,7 @@ static int idmap_tdb_dump_one_entry(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA val
int num_maps = *data->num_maps;
/* ignore any record but the ones with a SID as key */
- if (strncmp((const char *)key.dptr, "S-", 2) == 0) {
+ if (strncmp(key.dptr, "S-", 2) == 0) {
maps = talloc_realloc(NULL, *data->maps, struct id_map, num_maps+1);
if ( ! maps) {
@@ -1125,21 +1148,21 @@ static int idmap_tdb_dump_one_entry(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA val
return -1;
}
- if (!string_to_sid(maps[num_maps].sid, (const char *)key.dptr)) {
- DEBUG(10,("INVALID record %s\n", (const char *)key.dptr));
+ if (!string_to_sid(maps[num_maps].sid, key.dptr)) {
+ DEBUG(10,("INVALID record %s\n", key.dptr));
/* continue even with errors */
return 0;
}
/* Try a UID record. */
- if (sscanf((const char *)value.dptr, "UID %u", &(maps[num_maps].xid.id)) == 1) {
+ if (sscanf(value.dptr, "UID %u", &(maps[num_maps].xid.id)) == 1) {
maps[num_maps].xid.type = ID_TYPE_UID;
maps[num_maps].status = ID_MAPPED;
*data->num_maps = num_maps + 1;
/* Try a GID record. */
} else
- if (sscanf((const char *)value.dptr, "GID %u", &(maps[num_maps].xid.id)) == 1) {
+ if (sscanf(value.dptr, "GID %u", &(maps[num_maps].xid.id)) == 1) {
maps[num_maps].xid.type = ID_TYPE_GID;
maps[num_maps].status = ID_MAPPED;
*data->num_maps = num_maps + 1;
@@ -1147,8 +1170,7 @@ static int idmap_tdb_dump_one_entry(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA val
/* Unknown record type ! */
} else {
maps[num_maps].status = ID_UNKNOWN;
- DEBUG(2, ("Found INVALID record %s -> %s\n",
- (const char *)key.dptr, (const char *)value.dptr));
+ DEBUG(2, ("Found INVALID record %s -> %s\n", key.dptr, value.dptr));
/* do not increment num_maps */
}
}
diff --git a/source/nsswitch/idmap_util.c b/source/nsswitch/idmap_util.c
index 445e067a2d8..40a5fb854be 100644
--- a/source/nsswitch/idmap_util.c
+++ b/source/nsswitch/idmap_util.c
@@ -158,7 +158,7 @@ NTSTATUS idmap_sid_to_gid(DOM_SID *sid, gid_t *gid)
}
if ((map.status != ID_MAPPED) || (map.xid.type != ID_TYPE_GID)) {
- DEBUG(10, ("sid [%s] not mapped to a gid [%u,%u,%u]\n",
+ DEBUG(10, ("sid [%s] not mapped to an gid [%u,%u,%u]\n",
sid_string_static(sid),
map.status,
map.xid.type,
diff --git a/source/nsswitch/nss_info.c b/source/nsswitch/nss_info.c
index 3fab9db8391..8c18162deb4 100644
--- a/source/nsswitch/nss_info.c
+++ b/source/nsswitch/nss_info.c
@@ -156,7 +156,7 @@ static BOOL parse_nss_parm( const char *config, char **backend, char **domain )
if ( !parse_nss_parm(nss_list[i], &backend, &domain) ) {
DEBUG(0,("nss_init: failed to parse \"%s\"!\n",
- nss_list[0]));
+ nss_list[i]));
continue;
}
@@ -190,11 +190,10 @@ static BOOL parse_nss_parm( const char *config, char **backend, char **domain )
nss_domain->backend = nss_backend;
nss_domain->domain = talloc_strdup( nss_domain, domain );
- /* Try to init and ave the result */
-
- nss_domain->init_status = nss_domain->backend->methods->init( nss_domain );
+ status = nss_domain->backend->methods->init( nss_domain );
+ if ( NT_STATUS_IS_OK( status ) ) {
DLIST_ADD( nss_domain_list, nss_domain );
- if ( !NT_STATUS_IS_OK(nss_domain->init_status) ) {
+ } else {
DEBUG(0,("nss_init: Failed to init backend for %s domain!\n",
nss_domain->domain));
}
@@ -249,10 +248,6 @@ static struct nss_domain_entry *find_nss_domain( const char *domain )
p = nss_domain_list;
}
- if ( !NT_STATUS_IS_OK( p->init_status ) ) {
- p->init_status = p->backend->methods->init( p );
- }
-
return p;
}
diff --git a/source/nsswitch/nss_info_template.c b/source/nsswitch/nss_info_template.c
index 2a144288021..845371e53ba 100644
--- a/source/nsswitch/nss_info_template.c
+++ b/source/nsswitch/nss_info_template.c
@@ -42,7 +42,7 @@ static NTSTATUS nss_template_get_info( struct nss_domain_entry *e,
char **homedir,
char **shell,
char **gecos,
- uint32 *gid )
+ gid_t *gid )
{
if ( !homedir || !shell || !gecos )
return NT_STATUS_INVALID_PARAMETER;
diff --git a/source/nsswitch/pam_winbind.c b/source/nsswitch/pam_winbind.c
index db3a0893291..ec6361e52be 100644
--- a/source/nsswitch/pam_winbind.c
+++ b/source/nsswitch/pam_winbind.c
@@ -264,10 +264,6 @@ static int _pam_parse(const pam_handle_t *pamh, int flags, int argc, const char
ctrl |= WINBIND_TRY_FIRST_PASS_ARG;
}
- if (iniparser_getint(d, "global:warn_pwd_expire", 0)) {
- ctrl |= WINBIND_WARN_PWD_EXPIRE;
- }
-
config_from_pam:
/* step through arguments */
for (i=argc,v=argv; i-- > 0; ++v) {
@@ -277,8 +273,6 @@ config_from_pam:
ctrl |= WINBIND_DEBUG_ARG;
else if (!strcasecmp(*v, "debug_state"))
ctrl |= WINBIND_DEBUG_STATE;
- else if (!strcasecmp(*v, "silent"))
- ctrl |= WINBIND_SILENT;
else if (!strcasecmp(*v, "use_authtok"))
ctrl |= WINBIND_USE_AUTHTOK_ARG;
else if (!strcasecmp(*v, "use_first_pass"))
@@ -565,12 +559,7 @@ static int pam_winbind_request_log(pam_handle_t * pamh,
* @return boolean Returns True if message has been sent, False if not.
*/
-static BOOL _pam_send_password_expiry_message(pam_handle_t *pamh,
- int ctrl,
- time_t next_change,
- time_t now,
- int warn_pwd_expire,
- BOOL *already_expired)
+static BOOL _pam_send_password_expiry_message(pam_handle_t *pamh, int ctrl, time_t next_change, time_t now, BOOL *already_expired)
{
int days = 0;
struct tm tm_now, tm_next_change;
@@ -588,7 +577,7 @@ static BOOL _pam_send_password_expiry_message(pam_handle_t *pamh,
}
if ((next_change < 0) ||
- (next_change > now + warn_pwd_expire * SECONDS_PER_DAY)) {
+ (next_change > now + DAYS_TO_WARN_BEFORE_PWD_EXPIRES * SECONDS_PER_DAY)) {
return False;
}
@@ -604,7 +593,7 @@ static BOOL _pam_send_password_expiry_message(pam_handle_t *pamh,
return True;
}
- if (days > 0 && days < warn_pwd_expire) {
+ if (days > 0 && days < DAYS_TO_WARN_BEFORE_PWD_EXPIRES) {
_make_remark_format(pamh, ctrl, PAM_TEXT_INFO, "Your password will expire in %d %s",
days, (days > 1) ? "days":"day");
return True;
@@ -627,7 +616,6 @@ static BOOL _pam_send_password_expiry_message(pam_handle_t *pamh,
static void _pam_warn_password_expiry(pam_handle_t *pamh,
int flags,
const struct winbindd_response *response,
- int warn_pwd_expire,
BOOL *already_expired)
{
time_t now = time(NULL);
@@ -650,8 +638,7 @@ static void _pam_warn_password_expiry(pam_handle_t *pamh,
/* check if the info3 must change timestamp has been set */
next_change = response->data.auth.info3.pass_must_change_time;
- if (_pam_send_password_expiry_message(pamh, flags, next_change, now,
- warn_pwd_expire,
+ if (_pam_send_password_expiry_message(pamh, flags, next_change, now,
already_expired)) {
return;
}
@@ -666,8 +653,7 @@ static void _pam_warn_password_expiry(pam_handle_t *pamh,
next_change = response->data.auth.info3.pass_last_set_time +
response->data.auth.policy.expire;
- if (_pam_send_password_expiry_message(pamh, flags, next_change, now,
- warn_pwd_expire,
+ if (_pam_send_password_expiry_message(pamh, flags, next_change, now,
already_expired)) {
return;
}
@@ -942,30 +928,6 @@ static void _pam_warn_logon_type(pam_handle_t *pamh, int ctrl, const char *usern
}
/**
- * Send PAM_ERROR_MSG for krb5 errors.
- *
- * @param pamh PAM handle
- * @param ctrl PAM winbind options.
- * @param username User in PAM request.
- * @param info3_user_flgs Info3 flags containing logon type bits.
- *
- * @return void.
- */
-
-static void _pam_warn_krb5_failure(pam_handle_t *pamh, int ctrl, const char *username, uint32 info3_user_flgs)
-{
- if (PAM_WB_KRB5_CLOCK_SKEW(info3_user_flgs)) {
- _make_remark(pamh, ctrl, PAM_ERROR_MSG,
- "Failed to establish your Kerberos Ticket cache "
- "due time differences\n"
- "with the domain controller. "
- "Please verify the system time.\n");
- _pam_log_debug(pamh, ctrl, LOG_DEBUG,
- "User %s: Clock skew when getting Krb5 TGT\n", username);
- }
-}
-
-/**
* Compose Password Restriction String for a PAM_ERROR_MSG conversation.
*
* @param response The struct winbindd_response.
@@ -1041,7 +1003,6 @@ static int winbind_auth_request(pam_handle_t * pamh,
const char *pass,
const char *member,
const char *cctype,
- const int warn_pwd_expire,
struct winbindd_response *p_response,
time_t *pwd_last_set,
char **user_ret)
@@ -1147,9 +1108,7 @@ static int winbind_auth_request(pam_handle_t * pamh,
if (ret == PAM_SUCCESS) {
/* warn a user if the password is about to expire soon */
- _pam_warn_password_expiry(pamh, ctrl, &response,
- warn_pwd_expire,
- &already_expired);
+ _pam_warn_password_expiry(pamh, ctrl, &response, &already_expired);
if (already_expired == True) {
_pam_log_debug(pamh, ctrl, LOG_DEBUG, "Password has expired "
@@ -1166,9 +1125,6 @@ static int winbind_auth_request(pam_handle_t * pamh,
/* inform about logon type */
_pam_warn_logon_type(pamh, ctrl, user, response.data.auth.info3.user_flgs);
- /* inform about krb5 failures */
- _pam_warn_krb5_failure(pamh, ctrl, user, response.data.auth.info3.user_flgs);
-
/* set some info3 info for other modules in the stack */
_pam_set_data_info3(pamh, ctrl, &response);
@@ -1495,28 +1451,15 @@ const char *get_conf_item_string(const pam_handle_t *pamh,
{
int i = 0;
const char *parm_opt = NULL;
+ char *key = NULL;
if (!(ctrl & config_flag)) {
goto out;
}
/* let the pam opt take precedence over the pam_winbind.conf option */
- for ( i=0; i<argc; i++ ) {
-
- if ((strncmp(argv[i], item, strlen(item)) == 0)) {
- char *p;
-
- if ( (p = strchr( argv[i], '=' )) == NULL) {
- _pam_log(pamh, ctrl, LOG_INFO, "no \"=\" delimiter for \"%s\" found\n", item);
- goto out;
- }
- _pam_log_debug(pamh, ctrl, LOG_INFO, "PAM config: %s '%s'\n", item, p+1);
- return p + 1;
- }
- }
if (d != NULL) {
- char *key = NULL;
if (!asprintf(&key, "global:%s", item)) {
goto out;
@@ -1524,60 +1467,24 @@ const char *get_conf_item_string(const pam_handle_t *pamh,
parm_opt = iniparser_getstr(d, key);
SAFE_FREE(key);
-
- _pam_log_debug(pamh, ctrl, LOG_INFO, "CONFIG file: %s '%s'\n", item, parm_opt);
- }
-out:
- return parm_opt;
-}
-
-int get_config_item_int(const pam_handle_t *pamh,
- int argc,
- const char **argv,
- int ctrl,
- dictionary *d,
- const char *item,
- int config_flag)
-{
- int i, parm_opt = -1;
-
- if (!(ctrl & config_flag)) {
- goto out;
}
- /* let the pam opt take precedence over the pam_winbind.conf option */
- for (i = 0; i < argc; i++) {
+ for ( i=0; i<argc; i++ ) {
if ((strncmp(argv[i], item, strlen(item)) == 0)) {
char *p;
if ( (p = strchr( argv[i], '=' )) == NULL) {
- _pam_log(pamh, ctrl, LOG_INFO,
- "no \"=\" delimiter for \"%s\" found\n",
- item);
+ _pam_log(pamh, ctrl, LOG_INFO, "no \"=\" delimiter for \"%s\" found\n", item);
goto out;
}
- parm_opt = atoi(p + 1);
- _pam_log_debug(pamh, ctrl, LOG_INFO,
- "PAM config: %s '%d'\n",
- item, parm_opt);
- return parm_opt;
+ _pam_log_debug(pamh, ctrl, LOG_INFO, "PAM config: %s '%s'\n", item, p+1);
+ return p + 1;
}
}
if (d != NULL) {
- char *key = NULL;
-
- if (!asprintf(&key, "global:%s", item)) {
- goto out;
- }
-
- parm_opt = iniparser_getint(d, key, -1);
- SAFE_FREE(key);
-
- _pam_log_debug(pamh, ctrl, LOG_INFO,
- "CONFIG file: %s '%d'\n",
- item, parm_opt);
+ _pam_log_debug(pamh, ctrl, LOG_INFO, "CONFIG file: %s '%s'\n", item, parm_opt);
}
out:
return parm_opt;
@@ -1598,22 +1505,6 @@ const char *get_member_from_config(const pam_handle_t *pamh, int argc, const cha
return get_conf_item_string(pamh, argc, argv, ctrl, d, "require-membership-of", WINBIND_REQUIRED_MEMBERSHIP);
}
-int get_warn_pwd_expire_from_config(const pam_handle_t *pamh,
- int argc,
- const char **argv,
- int ctrl,
- dictionary *d)
-{
- int ret;
- ret = get_config_item_int(pamh, argc, argv, ctrl, d,
- "warn_pwd_expire", WINBIND_WARN_PWD_EXPIRE);
- /* no or broken setting */
- if (ret <= 0) {
- return DEFAULT_DAYS_TO_WARN_BEFORE_PWD_EXPIRES;
- }
- return ret;
-}
-
PAM_EXTERN
int pam_sm_authenticate(pam_handle_t *pamh, int flags,
int argc, const char **argv)
@@ -1622,7 +1513,6 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags,
const char *password;
const char *member = NULL;
const char *cctype = NULL;
- int warn_pwd_expire;
int retval = PAM_AUTH_ERR;
dictionary *d = NULL;
char *username_ret = NULL;
@@ -1693,13 +1583,9 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags,
cctype = get_krb5_cc_type_from_config(pamh, argc, argv, ctrl, d);
- warn_pwd_expire = get_warn_pwd_expire_from_config(pamh, argc, argv,
- ctrl, d);
-
/* Now use the username to look up password */
retval = winbind_auth_request(pamh, ctrl, username, password, member,
- cctype, warn_pwd_expire, NULL, NULL,
- &username_ret);
+ cctype, NULL, NULL, &username_ret);
if (retval == PAM_NEW_AUTHTOK_REQD ||
retval == PAM_AUTHTOK_EXPIRED) {
@@ -2149,8 +2035,7 @@ int pam_sm_chauthtok(pam_handle_t * pamh, int flags,
/* verify that this is the password for this user */
ret = winbind_auth_request(pamh, ctrl, user, pass_old,
- NULL, NULL, 0, &response,
- &pwdlastset_prelim, NULL);
+ NULL, NULL, &response, &pwdlastset_prelim, NULL);
if (ret != PAM_ACCT_EXPIRED &&
ret != PAM_AUTHTOK_EXPIRED &&
@@ -2242,13 +2127,9 @@ int pam_sm_chauthtok(pam_handle_t * pamh, int flags,
const char *member = get_member_from_config(pamh, argc, argv, ctrl, d);
const char *cctype = get_krb5_cc_type_from_config(pamh, argc, argv, ctrl, d);
- const int warn_pwd_expire =
- get_warn_pwd_expire_from_config(pamh, argc, argv, ctrl,
- d);
ret = winbind_auth_request(pamh, ctrl, user, pass_new,
- member, cctype, 0, &response,
- NULL, &username_ret);
+ member, cctype, &response, NULL, &username_ret);
_pam_overwrite(pass_new);
_pam_overwrite(pass_old);
pass_old = pass_new = NULL;
@@ -2256,8 +2137,7 @@ int pam_sm_chauthtok(pam_handle_t * pamh, int flags,
if (ret == PAM_SUCCESS) {
/* warn a user if the password is about to expire soon */
- _pam_warn_password_expiry(pamh, ctrl, &response,
- warn_pwd_expire , NULL);
+ _pam_warn_password_expiry(pamh, ctrl, &response, NULL);
/* set some info3 info for other modules in the stack */
_pam_set_data_info3(pamh, ctrl, &response);
diff --git a/source/nsswitch/pam_winbind.h b/source/nsswitch/pam_winbind.h
index 59a2f39584c..73da2826cab 100644
--- a/source/nsswitch/pam_winbind.h
+++ b/source/nsswitch/pam_winbind.h
@@ -23,11 +23,7 @@
/* Solaris always uses dynamic pam modules */
#define PAM_EXTERN extern
-#if defined(HAVE_SECURITY_PAM_APPL_H)
#include <security/pam_appl.h>
-#elif defined(HAVE_PAM_PAM_APPL_H)
-#include <pam/pam_appl.h>
-#endif
#ifndef PAM_AUTHTOK_RECOVER_ERR
#define PAM_AUTHTOK_RECOVER_ERR PAM_AUTHTOK_RECOVERY_ERR
@@ -35,16 +31,12 @@
#endif /* defined(SUNOS5) || defined(SUNOS4) || defined(HPUX) || defined(FREEBSD) || defined(AIX) */
-#if defined(HAVE_SECURITY_PAM_MODULES_H)
+#ifdef HAVE_SECURITY_PAM_MODULES_H
#include <security/pam_modules.h>
-#elif defined(HAVE_PAM_PAM_MODULES_H)
-#include <pam/pam_modules.h>
#endif
-#if defined(HAVE_SECURITY__PAM_MACROS_H)
+#ifdef HAVE_SECURITY__PAM_MACROS_H
#include <security/_pam_macros.h>
-#elif defined(HAVE_PAM__PAM_MACROS_H)
-#include <pam/_pam_macros.h>
#else
/* Define required macros from (Linux PAM 0.68) security/_pam_macros.h */
#define _pam_drop_reply(/* struct pam_response * */ reply, /* int */ replies) \
@@ -95,7 +87,6 @@ do { \
#define WINBIND_CONFIG_FILE (1<<10)
#define WINBIND_SILENT (1<<11)
#define WINBIND_DEBUG_STATE (1<<12)
-#define WINBIND_WARN_PWD_EXPIRE (1<<13)
/*
* here is the string to inform the user that the new passwords they
@@ -117,7 +108,7 @@ do { \
#define SECONDS_PER_DAY 86400
-#define DEFAULT_DAYS_TO_WARN_BEFORE_PWD_EXPIRES 14
+#define DAYS_TO_WARN_BEFORE_PWD_EXPIRES 5
#include "winbind_client.h"
@@ -193,8 +184,6 @@ do { \
/* from include/rpc_netlogon.h */
#define LOGON_CACHED_ACCOUNT 0x00000004
#define LOGON_GRACE_LOGON 0x01000000
-#define LOGON_KRB5_FAIL_CLOCK_SKEW 0x02000000
#define PAM_WB_CACHED_LOGON(x) (x & LOGON_CACHED_ACCOUNT)
-#define PAM_WB_KRB5_CLOCK_SKEW(x) (x & LOGON_KRB5_FAIL_CLOCK_SKEW)
#define PAM_WB_GRACE_LOGON(x) ((LOGON_CACHED_ACCOUNT|LOGON_GRACE_LOGON) == ( x & (LOGON_CACHED_ACCOUNT|LOGON_GRACE_LOGON)))
diff --git a/source/nsswitch/wb_common.c b/source/nsswitch/wb_common.c
index fb84373aa63..563c38648af 100644
--- a/source/nsswitch/wb_common.c
+++ b/source/nsswitch/wb_common.c
@@ -422,7 +422,7 @@ int write_sock(void *buffer, int count, int recursing, int need_priv)
static int read_sock(void *buffer, int count)
{
- int result = 0, nread = 0;
+ int nread = 0;
int total_time = 0, selret;
if (winbindd_fd == -1) {
@@ -463,7 +463,7 @@ static int read_sock(void *buffer, int count)
/* Do the Read */
- result = read(winbindd_fd, (char *)buffer + nread,
+ int result = read(winbindd_fd, (char *)buffer + nread,
count - nread);
if ((result == -1) || (result == 0)) {
@@ -481,7 +481,7 @@ static int read_sock(void *buffer, int count)
}
}
- return result;
+ return nread;
}
/* Read reply */
diff --git a/source/nsswitch/winbind_nss.h b/source/nsswitch/winbind_nss.h
index c9331d91666..3bef6ca5954 100644
--- a/source/nsswitch/winbind_nss.h
+++ b/source/nsswitch/winbind_nss.h
@@ -39,7 +39,8 @@
* Linux (glibc)
*/
-#include "nsswitch/winbind_nss_linux.h"
+#include <nss.h>
+typedef enum nss_status NSS_STATUS;
#elif HAVE_NS_API_H
diff --git a/source/nsswitch/winbind_nss_linux.h b/source/nsswitch/winbind_nss_linux.h
index 456bfa5c143..1c7e8300373 100644
--- a/source/nsswitch/winbind_nss_linux.h
+++ b/source/nsswitch/winbind_nss_linux.h
@@ -24,8 +24,12 @@
#ifndef _WINBIND_NSS_LINUX_H
#define _WINBIND_NSS_LINUX_H
+#if HAVE_NSS_H
+
#include <nss.h>
typedef enum nss_status NSS_STATUS;
+#endif /* HAVE_NSS_H */
+
#endif /* _WINBIND_NSS_LINUX_H */
diff --git a/source/nsswitch/winbind_nss_netbsd.c b/source/nsswitch/winbind_nss_netbsd.c
index 09385100ad3..97eb0cc76d4 100644
--- a/source/nsswitch/winbind_nss_netbsd.c
+++ b/source/nsswitch/winbind_nss_netbsd.c
@@ -22,10 +22,10 @@
Boston, MA 02111-1307, USA.
*/
+#include <sys/param.h>
#include "winbind_client.h"
-#include <sys/param.h>
#include <stdarg.h>
#include <syslog.h>
diff --git a/source/nsswitch/winbind_nss_solaris.c b/source/nsswitch/winbind_nss_solaris.c
index fb63795d177..3b069d339f2 100644
--- a/source/nsswitch/winbind_nss_solaris.c
+++ b/source/nsswitch/winbind_nss_solaris.c
@@ -27,7 +27,6 @@
#undef DEVELOPER
-#include "winbind_client.h"
#include <stdlib.h>
#include <sys/types.h>
#include <sys/param.h>
@@ -38,6 +37,7 @@
#if !defined(HPUX)
#include <sys/syslog.h>
#endif /*hpux*/
+#include "winbind_nss_config.h"
#if defined(HAVE_NSS_COMMON_H) || defined(HPUX)
diff --git a/source/nsswitch/winbindd.c b/source/nsswitch/winbindd.c
index 2eedbcbd0f0..34f04adab2e 100644
--- a/source/nsswitch/winbindd.c
+++ b/source/nsswitch/winbindd.c
@@ -7,7 +7,6 @@
Copyright (C) Andrew Tridgell 2002
Copyright (C) Jelmer Vernooij 2003
Copyright (C) Volker Lendecke 2004
- Copyright (C) James Peach 2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -31,6 +30,7 @@
#define DBGC_CLASS DBGC_WINBIND
BOOL opt_nocache = False;
+static BOOL interactive = False;
extern BOOL override_logfile;
@@ -39,18 +39,7 @@ struct event_context *winbind_event_context(void)
static struct event_context *ctx;
if (!ctx && !(ctx = event_context_init(NULL))) {
- smb_panic("Could not init winbind event context");
- }
- return ctx;
-}
-
-struct messaging_context *winbind_messaging_context(void)
-{
- static struct messaging_context *ctx;
-
- if (!ctx && !(ctx = messaging_init(NULL, server_id_self(),
- winbind_event_context()))) {
- smb_panic("Could not init winbind messaging context");
+ smb_panic("Could not init winbind event context\n");
}
return ctx;
}
@@ -130,8 +119,13 @@ static void flush_caches(void)
static void terminate(void)
{
+ pstring path;
+
+ /* Remove socket file */
+ pstr_sprintf(path, "%s/%s",
+ WINBINDD_SOCKET_DIR, WINBINDD_SOCKET_NAME);
+ unlink(path);
- winbindd_release_sockets();
idmap_close();
trustdom_cache_shutdown();
@@ -182,11 +176,8 @@ static void sigchld_handler(int signum)
}
/* React on 'smbcontrol winbindd reload-config' in the same way as on SIGHUP*/
-static void msg_reload_services(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_reload_services(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
/* Flush various caches */
flush_caches();
@@ -194,11 +185,8 @@ static void msg_reload_services(struct messaging_context *msg,
}
/* React on 'smbcontrol winbindd shutdown' in the same way as on SIGTERM*/
-static void msg_shutdown(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_shutdown(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
do_sigterm = True;
}
@@ -735,19 +723,28 @@ static BOOL remove_idle_client(void)
simultaneous connections while remaining impervious to many denial of
service attacks. */
-static int process_loop(int listen_sock, int listen_priv_sock)
+static void process_loop(void)
{
struct winbindd_cli_state *state;
struct fd_event *ev;
fd_set r_fds, w_fds;
- int maxfd, selret;
+ int maxfd, listen_sock, listen_priv_sock, selret;
struct timeval timeout, ev_timeout;
+ /* Open Sockets here to get stuff going ASAP */
+ listen_sock = open_winbindd_socket();
+ listen_priv_sock = open_winbindd_priv_socket();
+
+ if (listen_sock == -1 || listen_priv_sock == -1) {
+ perror("open_winbind_socket");
+ exit(1);
+ }
+
/* We'll be doing this a lot */
/* Handle messages */
- message_dispatch(winbind_messaging_context());
+ message_dispatch();
run_events(winbind_event_context(), 0, NULL, NULL);
@@ -892,9 +889,7 @@ static int process_loop(int listen_sock, int listen_priv_sock)
DEBUG(3, ("got SIGHUP\n"));
- flush_caches();
- reload_services_file();
-
+ msg_reload_services(MSG_SMB_CONF_UPDATED, pid_to_procid(0), NULL, 0, NULL);
do_sighup = False;
}
@@ -912,55 +907,6 @@ static int process_loop(int listen_sock, int listen_priv_sock)
winbind_child_died(pid);
}
}
-
-
- return winbindd_num_clients();
-}
-
-static void winbindd_process_loop(enum smb_server_mode server_mode)
-{
- int idle_timeout_sec;
- struct timeval starttime;
- int listen_public, listen_priv;
-
- errno = 0;
- if (!winbindd_init_sockets(&listen_public, &listen_priv,
- &idle_timeout_sec)) {
- terminate();
- }
-
- starttime = timeval_current();
-
- if (listen_public == -1 || listen_priv == -1) {
- DEBUG(0, ("failed to open winbindd pipes: %s\n",
- errno ? strerror(errno) : "unknown error"));
- terminate();
- }
-
- for (;;) {
- int clients = process_loop(listen_public, listen_priv);
-
- /* Don't bother figuring out the idle time if we won't be
- * timing out anyway.
- */
- if (idle_timeout_sec < 0) {
- continue;
- }
-
- if (clients == 0 && server_mode == SERVER_MODE_FOREGROUND) {
- struct timeval now;
-
- now = timeval_current();
- if (timeval_elapsed2(&starttime, &now) >
- (double)idle_timeout_sec) {
- DEBUG(0, ("idle for %d secs, exitting\n",
- idle_timeout_sec));
- terminate();
- }
- } else {
- starttime = timeval_current();
- }
- }
}
/* Main function */
@@ -968,17 +914,15 @@ static void winbindd_process_loop(enum smb_server_mode server_mode)
int main(int argc, char **argv, char **envp)
{
pstring logfile;
- BOOL log_stdout = False;
- BOOL no_process_group = False;
-
- enum smb_server_mode server_mode = SERVER_MODE_DAEMON;
-
+ static BOOL Fork = True;
+ static BOOL log_stdout = False;
+ static BOOL no_process_group = False;
struct poptOption long_options[] = {
POPT_AUTOHELP
{ "stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
- { "foreground", 'F', POPT_ARG_VAL, &server_mode, SERVER_MODE_FOREGROUND, "Daemon in foreground mode" },
+ { "foreground", 'F', POPT_ARG_VAL, &Fork, False, "Daemon in foreground mode" },
{ "no-process-group", 0, POPT_ARG_VAL, &no_process_group, True, "Don't create a new process group" },
- { "interactive", 'i', POPT_ARG_VAL, &server_mode, SERVER_MODE_INTERACTIVE, "Interactive mode" },
+ { "interactive", 'i', POPT_ARG_NONE, NULL, 'i', "Interactive mode" },
{ "no-caching", 'n', POPT_ARG_VAL, &opt_nocache, True, "Disable caching" },
POPT_COMMON_SAMBA
POPT_TABLEEND
@@ -1016,17 +960,20 @@ int main(int argc, char **argv, char **envp)
pc = poptGetContext("winbindd", argc, (const char **)argv, long_options,
POPT_CONTEXT_KEEP_FIRST);
- while ((opt = poptGetNextOpt(pc)) != -1) {}
-
- if (server_mode == SERVER_MODE_INTERACTIVE) {
- log_stdout = True;
- if (DEBUGLEVEL >= 9) {
- talloc_enable_leak_report();
+ while ((opt = poptGetNextOpt(pc)) != -1) {
+ switch (opt) {
+ /* Don't become a daemon */
+ case 'i':
+ interactive = True;
+ log_stdout = True;
+ Fork = False;
+ break;
}
}
- if (log_stdout && server_mode == SERVER_MODE_DAEMON) {
- printf("Can't log to stdout (-S) unless daemon is in foreground (-F) or interactive (-i)\n");
+
+ if (log_stdout && Fork) {
+ printf("Can't log to stdout (-S) unless daemon is in foreground +(-F) or interactive (-i)\n");
poptPrintUsage(pc, stderr, 0);
exit(1);
}
@@ -1097,44 +1044,25 @@ int main(int argc, char **argv, char **envp)
CatchSignal(SIGUSR2, sigusr2_handler); /* Debugging sigs */
CatchSignal(SIGHUP, sighup_handler);
- if (server_mode == SERVER_MODE_DAEMON) {
- DEBUG( 3, ( "Becoming a daemon.\n" ) );
- become_daemon(True, no_process_group);
- } else if (server_mode == SERVER_MODE_FOREGROUND) {
- become_daemon(False, no_process_group);
- }
+ if (!interactive)
+ become_daemon(Fork, no_process_group);
pidfile_create("winbindd");
- /* Ensure all cache and idmap caches are consistent
- before we startup. */
-
- if (winbindd_validate_cache()) {
- /* We have a bad cache, but luckily we
- just deleted it. Restart ourselves */
- int i;
- /* Ensure we have no open low fd's. */
- for (i = 3; i < 100; i++) {
- close(i);
- }
- return execve(argv[0], argv, envp);
- }
-
#if HAVE_SETPGID
/*
* If we're interactive we want to set our own process group for
* signal management.
*/
- if (server_mode == SERVER_MODE_INTERACTIVE && !no_process_group) {
+ if (interactive && !no_process_group)
setpgid( (pid_t)0, (pid_t)0);
- }
#endif
TimeInit();
/* Initialise messaging system */
- if (winbind_messaging_context() == NULL) {
+ if (!message_init()) {
DEBUG(0, ("unable to initialize messaging system\n"));
exit(1);
}
@@ -1146,30 +1074,19 @@ int main(int argc, char **argv, char **envp)
/* React on 'smbcontrol winbindd reload-config' in the same way
as to SIGHUP signal */
- messaging_register(winbind_messaging_context(), NULL,
- MSG_SMB_CONF_UPDATED, msg_reload_services);
- messaging_register(winbind_messaging_context(), NULL,
- MSG_SHUTDOWN, msg_shutdown);
+ message_register(MSG_SMB_CONF_UPDATED, msg_reload_services, NULL);
+ message_register(MSG_SHUTDOWN, msg_shutdown, NULL);
/* Handle online/offline messages. */
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_OFFLINE, winbind_msg_offline);
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_ONLINE, winbind_msg_online);
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_ONLINESTATUS, winbind_msg_onlinestatus);
-
- messaging_register(winbind_messaging_context(), NULL,
- MSG_DUMP_EVENT_LIST, winbind_msg_dump_event_list);
+ message_register(MSG_WINBIND_OFFLINE, winbind_msg_offline, NULL);
+ message_register(MSG_WINBIND_ONLINE, winbind_msg_online, NULL);
+ message_register(MSG_WINBIND_ONLINESTATUS, winbind_msg_onlinestatus,
+ NULL);
poptFreeContext(pc);
netsamlogon_cache_init(); /* Non-critical */
- /* clear the cached list of trusted domains */
-
- wcache_tdc_clear();
-
if (!init_domain_list()) {
DEBUG(0,("unable to initalize domain list\n"));
exit(1);
@@ -1181,7 +1098,9 @@ int main(int argc, char **argv, char **envp)
smb_nscd_flush_group_cache();
/* Loop waiting for requests */
- winbindd_process_loop(server_mode);
+
+ while (1)
+ process_loop();
return 0;
}
diff --git a/source/nsswitch/winbindd.h b/source/nsswitch/winbindd.h
index 3d71aff0cd6..198c655b2d3 100644
--- a/source/nsswitch/winbindd.h
+++ b/source/nsswitch/winbindd.h
@@ -153,13 +153,10 @@ struct winbindd_child {
/* Structures to hold per domain information */
struct winbindd_domain {
- fstring name; /* Domain name (NetBIOS) */
- fstring alt_name; /* alt Domain name, if any (FQDN for ADS) */
+ fstring name; /* Domain name */
+ fstring alt_name; /* alt Domain name (if any) */
fstring forest_name; /* Name of the AD forest we're in */
DOM_SID sid; /* SID for this domain */
- uint32 domain_flags; /* Domain flags from rpc_ds.h */
- uint32 domain_type; /* Domain type from rpc_ds.h */
- uint32 domain_trust_attribs; /* Trust attribs from rpc_ds.h */
BOOL initialized; /* Did we already ask for the domain mode? */
BOOL native_mode; /* is this a win2k domain in native mode ? */
BOOL active_directory; /* is this a win2k active directory ? */
@@ -169,14 +166,6 @@ struct winbindd_domain {
time_t startup_time; /* When we set "startup" true. */
BOOL startup; /* are we in the first 30 seconds after startup_time ? */
- BOOL can_do_samlogon_ex; /* Due to the lack of finer control what type
- * of DC we have, let us try to do a
- * credential-chain less samlogon_ex call
- * with AD and schannel. If this fails with
- * DCERPC_FAULT_OP_RNG_ERROR, then set this
- * to False. This variable is around so that
- * we don't have to try _ex every time. */
-
/* Lookup methods for this domain (LDAP or RPC) */
struct winbindd_methods *methods;
@@ -244,7 +233,6 @@ struct winbindd_methods {
/* convert one user or group name to a sid */
NTSTATUS (*name_to_sid)(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- enum winbindd_cmd orig_cmd,
const char *domain_name,
const char *name,
DOM_SID *sid,
@@ -344,26 +332,11 @@ struct winbindd_idmap_methods {
void (*status)(void);
};
-/* Data structures for dealing with the trusted domain cache */
-
-struct winbindd_tdc_domain {
- const char *domain_name;
- const char *dns_name;
- DOM_SID sid;
- uint32 trust_flags;
- uint32 trust_attribs;
- uint32 trust_type;
-};
-
-
#include "nsswitch/winbindd_proto.h"
#define WINBINDD_ESTABLISH_LOOP 30
-#define WINBINDD_RESCAN_FREQ lp_winbind_cache_time()
+#define WINBINDD_RESCAN_FREQ 300
#define WINBINDD_PAM_AUTH_KRB5_RENEW_TIME 2592000 /* one month */
#define DOM_SEQUENCE_NONE ((uint32)-1)
-#define IS_DOMAIN_OFFLINE(x) ( lp_winbind_offline_logon() && \
- ( get_global_winbindd_state_offline() \
- || !(x)->online ) )
#endif /* _WINBINDD_H */
diff --git a/source/nsswitch/winbindd_ads.c b/source/nsswitch/winbindd_ads.c
index b6aa95c51ea..01f94137502 100644
--- a/source/nsswitch/winbindd_ads.c
+++ b/source/nsswitch/winbindd_ads.c
@@ -88,7 +88,7 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain)
DOM_SID sid;
time_t last_set_time;
- if ( !pdb_get_trusteddom_pw( domain->name, &ads->auth.password, &sid, &last_set_time ) ) {
+ if ( !secrets_fetch_trusted_domain_password( domain->name, &ads->auth.password, &sid, &last_set_time ) ) {
ads_destroy( &ads );
return NULL;
}
@@ -168,12 +168,6 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
DEBUG(3,("ads: query_user_list\n"));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("query_user_list: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
ads = ads_cached_connection(domain);
if (!ads) {
@@ -219,7 +213,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
name = ads_pull_username(ads, mem_ctx, msg);
if ( ads_pull_sid( ads, msg, "objectSid", &user_sid ) ) {
- status = nss_get_info_cached( domain, &user_sid, mem_ctx,
+ status = nss_get_info( domain->name, &user_sid, mem_ctx,
ads, msg, &homedir, &shell, &gecos,
&primary_gid );
}
@@ -280,14 +274,8 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
DEBUG(3,("ads: enum_dom_groups\n"));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("enum_dom_groups: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
/* only grab domain local groups for our domain */
- if ( domain->active_directory && strequal(lp_realm(), domain->alt_name) ) {
+ if ( domain->native_mode && strequal(lp_realm(), domain->alt_name) ) {
enum_dom_local_groups = True;
}
@@ -402,10 +390,49 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
return NT_STATUS_OK;
}
-/* If you are looking for "dn_lookup": Yes, it used to be here!
- * It has gone now since it was a major speed bottleneck in
- * lookup_groupmem (its only use). It has been replaced by
- * an rpc lookup sids call... R.I.P. */
+/* convert a DN to a name, SID and name type
+ this might become a major speed bottleneck if groups have
+ lots of users, in which case we could cache the results
+*/
+static BOOL dn_lookup(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
+ const char *dn,
+ char **name, uint32 *name_type, DOM_SID *sid)
+{
+ LDAPMessage *res = NULL;
+ const char *attrs[] = {"userPrincipalName", "sAMAccountName",
+ "objectSid", "sAMAccountType", NULL};
+ ADS_STATUS rc;
+ uint32 atype;
+ DEBUG(3,("ads: dn_lookup\n"));
+
+ rc = ads_search_retry_dn(ads, &res, dn, attrs);
+
+ if (!ADS_ERR_OK(rc) || !res) {
+ goto failed;
+ }
+
+ (*name) = ads_pull_username(ads, mem_ctx, res);
+
+ if (!ads_pull_uint32(ads, res, "sAMAccountType", &atype)) {
+ goto failed;
+ }
+ (*name_type) = ads_atype_map(atype);
+
+ if (!ads_pull_sid(ads, res, "objectSid", sid)) {
+ goto failed;
+ }
+
+ if (res)
+ ads_msgfree(ads, res);
+
+ return True;
+
+failed:
+ if (res)
+ ads_msgfree(ads, res);
+
+ return False;
+}
/* Lookup user information from a rid */
static NTSTATUS query_user(struct winbindd_domain *domain,
@@ -422,63 +449,9 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
char *sidstr;
uint32 group_rid;
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- NET_USER_INFO_3 *user;
DEBUG(3,("ads: query_user\n"));
- info->homedir = NULL;
- info->shell = NULL;
- info->primary_gid = (gid_t)-1;
-
- /* try netsamlogon cache first */
-
- if ( (user = netsamlogon_cache_get( mem_ctx, sid )) != NULL )
- {
-
- DEBUG(5,("query_user: Cache lookup succeeded for %s\n",
- sid_string_static(sid)));
-
- sid_compose(&info->user_sid, &domain->sid, user->user_rid);
- sid_compose(&info->group_sid, &domain->sid, user->group_rid);
-
- info->acct_name = unistr2_tdup(mem_ctx, &user->uni_user_name);
- info->full_name = unistr2_tdup(mem_ctx, &user->uni_full_name);
-
- nss_get_info_cached( domain, sid, mem_ctx, NULL, NULL,
- &info->homedir, &info->shell, &info->full_name,
- &info->primary_gid );
-
- TALLOC_FREE(user);
-
- return NT_STATUS_OK;
- }
-
- if ( !winbindd_can_contact_domain(domain)) {
- DEBUG(8,("query_user: No incoming trust from domain %s\n",
- domain->name));
-
- /* We still need to generate some basic information
- about the user even if we cannot contact the
- domain. Most of this stuff we can deduce. */
-
- sid_copy( &info->user_sid, sid );
-
- /* Assume "Domain Users" for the primary group */
-
- sid_compose(&info->group_sid, &domain->sid, DOMAIN_GROUP_RID_USERS );
-
- /* Try to fill in what the nss_info backend can do */
-
- nss_get_info_cached( domain, sid, mem_ctx, NULL, NULL,
- &info->homedir, &info->shell, &info->full_name,
- &info->primary_gid );
-
- status = NT_STATUS_OK;
- goto done;
- }
-
- /* no cache...do the query */
-
if ( (ads = ads_cached_connection(domain)) == NULL ) {
domain->last_status = NT_STATUS_SERVER_DISABLED;
goto done;
@@ -504,9 +477,9 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
info->acct_name = ads_pull_username(ads, mem_ctx, msg);
- nss_get_info_cached( domain, sid, mem_ctx, ads, msg,
- &info->homedir, &info->shell, &info->full_name,
- &info->primary_gid );
+ info->primary_gid = (gid_t)-1;
+ nss_get_info( domain->name, sid, mem_ctx, ads, msg,
+ &info->homedir, &info->shell, &info->full_name, &info->primary_gid );
if (info->full_name == NULL) {
info->full_name = ads_pull_string(ads, mem_ctx, msg, "name");
@@ -552,12 +525,6 @@ static NTSTATUS lookup_usergroups_member(struct winbindd_domain *domain,
DEBUG(3,("ads: lookup_usergroups_member\n"));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("lookup_usergroups_members: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
ads = ads_cached_connection(domain);
if (!ads) {
@@ -570,12 +537,7 @@ static NTSTATUS lookup_usergroups_member(struct winbindd_domain *domain,
goto done;
}
- ldap_exp = talloc_asprintf(mem_ctx,
- "(&(member=%s)(objectCategory=group)(groupType:dn:%s:=%d))",
- escaped_dn,
- ADS_LDAP_MATCHING_RULE_BIT_AND,
- GROUP_TYPE_SECURITY_ENABLED);
- if (!ldap_exp) {
+ if (!(ldap_exp = talloc_asprintf(mem_ctx, "(&(member=%s)(objectCategory=group))", escaped_dn))) {
DEBUG(1,("lookup_usergroups(dn=%s) asprintf failed!\n", user_dn));
SAFE_FREE(escaped_dn);
status = NT_STATUS_NO_MEMORY;
@@ -647,23 +609,16 @@ static NTSTATUS lookup_usergroups_memberof(struct winbindd_domain *domain,
{
ADS_STATUS rc;
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
+ int count;
+ LDAPMessage *res = NULL;
ADS_STRUCT *ads;
const char *attrs[] = {"memberOf", NULL};
size_t num_groups = 0;
DOM_SID *group_sids = NULL;
int i;
- char **strings;
- size_t num_strings = 0;
-
DEBUG(3,("ads: lookup_usergroups_memberof\n"));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("lookup_usergroups_memberof: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
ads = ads_cached_connection(domain);
if (!ads) {
@@ -671,16 +626,22 @@ static NTSTATUS lookup_usergroups_memberof(struct winbindd_domain *domain,
goto done;
}
- rc = ads_search_retry_extended_dn_ranged(ads, mem_ctx, user_dn, attrs,
- ADS_EXTENDED_DN_HEX_STRING,
- &strings, &num_strings);
-
- if (!ADS_ERR_OK(rc)) {
+ rc = ads_search_retry_extended_dn(ads, &res, user_dn, attrs,
+ ADS_EXTENDED_DN_HEX_STRING);
+
+ if (!ADS_ERR_OK(rc) || !res) {
DEBUG(1,("lookup_usergroups_memberof ads_search member=%s: %s\n",
user_dn, ads_errstr(rc)));
return ads_ntstatus(rc);
}
+ count = ads_count_replies(ads, res);
+
+ if (count == 0) {
+ status = NT_STATUS_NO_SUCH_USER;
+ goto done;
+ }
+
*user_sids = NULL;
num_groups = 0;
@@ -690,32 +651,16 @@ static NTSTATUS lookup_usergroups_memberof(struct winbindd_domain *domain,
goto done;
}
- group_sids = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_strings + 1);
- if (!group_sids) {
- TALLOC_FREE(strings);
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- for (i=0; i<num_strings; i++) {
-
- if (!ads_get_sid_from_extended_dn(mem_ctx, strings[i],
- ADS_EXTENDED_DN_HEX_STRING,
- &(group_sids)[i])) {
- TALLOC_FREE(group_sids);
- TALLOC_FREE(strings);
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
- }
-
- if (i == 0) {
+ count = ads_pull_sids_from_extendeddn(ads, mem_ctx, res, "memberOf",
+ ADS_EXTENDED_DN_HEX_STRING,
+ &group_sids);
+ if (count == 0) {
DEBUG(1,("No memberOf for this user?!?\n"));
status = NT_STATUS_NO_MEMORY;
goto done;
}
- for (i=0; i<num_strings; i++) {
+ for (i=0; i<count; i++) {
/* ignore Builtin groups from ADS - Guenther */
if (sid_check_is_in_builtin(&group_sids[i])) {
@@ -736,6 +681,8 @@ static NTSTATUS lookup_usergroups_memberof(struct winbindd_domain *domain,
DEBUG(3,("ads lookup_usergroups (memberof) succeeded for dn=%s\n", user_dn));
done:
TALLOC_FREE(group_sids);
+ if (res)
+ ads_msgfree(ads, res);
return status;
}
@@ -770,15 +717,6 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
return NT_STATUS_OK;
}
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("lookup_usergroups: No incoming trust for domain %s\n",
- domain->name));
-
- /* Tell the cache manager not to remember this one */
-
- return NT_STATUS_SYNCHRONIZATION_REQUIRED;
- }
-
ads = ads_cached_connection(domain);
if (!ads) {
@@ -903,41 +841,27 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
uint32 **name_types)
{
ADS_STATUS rc;
+ int count;
+ LDAPMessage *res=NULL;
ADS_STRUCT *ads = NULL;
char *ldap_exp;
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- char *sidbinstr;
- char **members = NULL;
+ char *sidstr;
+ char **members;
int i;
- size_t num_members = 0;
- ads_control args;
- struct rpc_pipe_client *cli;
- POLICY_HND lsa_policy;
- DOM_SID *sid_mem_nocache = NULL;
- char **names_nocache = NULL;
- uint32 *name_types_nocache = NULL;
- char **domains_nocache = NULL; /* only needed for rpccli_lsa_lookup_sids */
- uint32 num_nocache = 0;
- TALLOC_CTX *tmp_ctx = NULL;
+ size_t num_members;
+ fstring sid_string;
+ BOOL more_values;
+ const char **attrs;
+ uint32 first_usn;
+ uint32 current_usn;
+ int num_retries = 0;
DEBUG(10,("ads: lookup_groupmem %s sid=%s\n", domain->name,
sid_string_static(group_sid)));
*num_names = 0;
- tmp_ctx = talloc_new(mem_ctx);
- if (!tmp_ctx) {
- DEBUG(1, ("ads: lookup_groupmem: talloc failed\n"));
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("lookup_groupmem: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
ads = ads_cached_connection(domain);
if (!ads) {
@@ -945,163 +869,134 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
goto done;
}
- if ((sidbinstr = sid_binstring(group_sid)) == NULL) {
+ if ((sidstr = sid_binstring(group_sid)) == NULL) {
status = NT_STATUS_NO_MEMORY;
goto done;
}
/* search for all members of the group */
- if (!(ldap_exp = talloc_asprintf(tmp_ctx, "(objectSid=%s)",
- sidbinstr)))
- {
- SAFE_FREE(sidbinstr);
- DEBUG(1, ("ads: lookup_groupmem: talloc_asprintf for ldap_exp failed!\n"));
+ if (!(ldap_exp = talloc_asprintf(mem_ctx, "(objectSid=%s)",sidstr))) {
+ SAFE_FREE(sidstr);
+ DEBUG(1, ("ads: lookup_groupmem: tallloc_asprintf for ldap_exp failed!\n"));
status = NT_STATUS_NO_MEMORY;
goto done;
}
- SAFE_FREE(sidbinstr);
-
- args.control = ADS_EXTENDED_DN_OID;
- args.val = ADS_EXTENDED_DN_HEX_STRING;
- args.critical = True;
+ SAFE_FREE(sidstr);
- rc = ads_ranged_search(ads, tmp_ctx, LDAP_SCOPE_SUBTREE, ads->config.bind_path,
- ldap_exp, &args, "member", &members, &num_members);
+ members = NULL;
+ num_members = 0;
- if (!ADS_ERR_OK(rc)) {
- DEBUG(0,("ads_ranged_search failed with: %s\n", ads_errstr(rc)));
- status = NT_STATUS_UNSUCCESSFUL;
+ if ((attrs = TALLOC_ARRAY(mem_ctx, const char *, 3)) == NULL) {
+ status = NT_STATUS_NO_MEMORY;
goto done;
- }
-
- DEBUG(10, ("ads lookup_groupmem: got %d sids via extended dn call\n", (int)num_members));
-
- /* Now that we have a list of sids, we need to get the
- * lists of names and name_types belonging to these sids.
- * even though conceptually not quite clean, we use the
- * RPC call lsa_lookup_sids for this since it can handle a
- * list of sids. ldap calls can just resolve one sid at a time.
- *
- * At this stage, the sids are still hidden in the exetended dn
- * member output format. We actually do a little better than
- * stated above: In extracting the sids from the member strings,
- * we try to resolve as many sids as possible from the
- * cache. Only the rest is passed to the lsa_lookup_sids call. */
-
- if (num_members) {
- (*sid_mem) = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_members);
- (*names) = TALLOC_ZERO_ARRAY(mem_ctx, char *, num_members);
- (*name_types) = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_members);
- (sid_mem_nocache) = TALLOC_ZERO_ARRAY(tmp_ctx, DOM_SID, num_members);
+ }
+
+ attrs[1] = talloc_strdup(mem_ctx, "usnChanged");
+ attrs[2] = NULL;
+
+ do {
+ if (num_members == 0)
+ attrs[0] = talloc_strdup(mem_ctx, "member");
- if ((members == NULL) || (*sid_mem == NULL) ||
- (*names == NULL) || (*name_types == NULL) ||
- (sid_mem_nocache == NULL))
- {
- DEBUG(1, ("ads: lookup_groupmem: talloc failed\n"));
- status = NT_STATUS_NO_MEMORY;
+ DEBUG(10, ("Searching for attrs[0] = %s, attrs[1] = %s\n", attrs[0], attrs[1]));
+
+ rc = ads_search_retry(ads, &res, ldap_exp, attrs);
+
+ if (!ADS_ERR_OK(rc) || !res) {
+ DEBUG(1,("ads: lookup_groupmem ads_search: %s\n",
+ ads_errstr(rc)));
+ status = ads_ntstatus(rc);
goto done;
}
- }
- else {
- (*sid_mem) = NULL;
- (*names) = NULL;
- (*name_types) = NULL;
- }
- for (i=0; i<num_members; i++) {
- uint32 name_type;
- char *name, *domain_name;
- DOM_SID sid;
+ count = ads_count_replies(ads, res);
+ if (count == 0)
+ break;
- if (!ads_get_sid_from_extended_dn(tmp_ctx, members[i], args.val, &sid)) {
- status = NT_STATUS_INVALID_PARAMETER;
- goto done;
+ if (num_members == 0) {
+ if (!ads_pull_uint32(ads, res, "usnChanged", &first_usn)) {
+ DEBUG(1, ("ads: lookup_groupmem could not pull usnChanged!\n"));
+ goto done;
+ }
}
- if (lookup_cached_sid(mem_ctx, &sid, &domain_name, &name, &name_type)) {
- DEBUG(10,("ads: lookup_groupmem: got sid %s from cache\n",
- sid_string_static(&sid)));
- sid_copy(&(*sid_mem)[*num_names], &sid);
- (*names)[*num_names] = talloc_asprintf(*names, "%s%c%s",
- domain_name,
- *lp_winbind_separator(),
- name );
-
- (*name_types)[*num_names] = name_type;
- (*num_names)++;
+
+ if (!ads_pull_uint32(ads, res, "usnChanged", &current_usn)) {
+ DEBUG(1, ("ads: lookup_groupmem could not pull usnChanged!\n"));
+ goto done;
}
- else {
- DEBUG(10, ("ads: lookup_groupmem: sid %s not found in cache\n",
- sid_string_static(&sid)));
- sid_copy(&(sid_mem_nocache)[num_nocache], &sid);
- num_nocache++;
+
+ if (first_usn != current_usn) {
+ DEBUG(5, ("ads: lookup_groupmem USN on this record changed"
+ " - restarting search\n"));
+ if (num_retries < 5) {
+ num_retries++;
+ num_members = 0;
+ ads_msgfree(ads, res);
+ res = NULL;
+ continue;
+ } else {
+ DEBUG(5, ("ads: lookup_groupmem USN on this record changed"
+ " - restarted search too many times, aborting!\n"));
+ status = NT_STATUS_UNSUCCESSFUL;
+ goto done;
+ }
}
- }
- DEBUG(10, ("ads: lookup_groupmem: %d sids found in cache, "
- "%d left for lsa_lookupsids\n", *num_names, num_nocache));
+ members = ads_pull_strings_range(ads, mem_ctx, res,
+ "member",
+ members,
+ &attrs[0],
+ &num_members,
+ &more_values);
- /* handle sids not resolved from cache by lsa_lookup_sids */
- if (num_nocache > 0) {
+ ads_msgfree(ads, res);
+ res = NULL;
- status = cm_connect_lsa(domain, tmp_ctx, &cli, &lsa_policy);
+ if ((members == NULL) || (num_members == 0))
+ break;
- if (!NT_STATUS_IS_OK(status)) {
- goto done;
- }
+ } while (more_values);
+
+ /* now we need to turn a list of members into rids, names and name types
+ the problem is that the members are in the form of distinguised names
+ */
- status = rpccli_lsa_lookup_sids_all(cli, tmp_ctx,
- &lsa_policy,
- num_nocache,
- sid_mem_nocache,
- &domains_nocache,
- &names_nocache,
- &name_types_nocache);
-
- if (NT_STATUS_IS_OK(status) ||
- NT_STATUS_EQUAL(status, STATUS_SOME_UNMAPPED))
- {
- /* Copy the entries over from the "_nocache" arrays
- * to the result arrays, skipping the gaps the
- * lookup_sids call left. */
- for (i=0; i < num_nocache; i++) {
- if (((names_nocache)[i] != NULL) &&
- ((name_types_nocache)[i] != SID_NAME_UNKNOWN))
- {
- sid_copy(&(*sid_mem)[*num_names],
- &sid_mem_nocache[i]);
- (*names)[*num_names] = talloc_asprintf( *names,
- "%s%c%s",
- domains_nocache[i],
- *lp_winbind_separator(),
- names_nocache[i] );
- (*name_types)[*num_names] = name_types_nocache[i];
- (*num_names)++;
- }
- }
- }
- else if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
- DEBUG(10, ("lookup_groupmem: lsa_lookup_sids could "
- "not map any SIDs at all.\n"));
- /* Don't handle this as an error here.
- * There is nothing left to do with respect to the
- * overall result... */
- }
- else if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("lookup_groupmem: Error looking up %d "
- "sids via rpc_lsa_lookup_sids: %s\n",
- (int)num_members, nt_errstr(status)));
+ if (num_members) {
+ (*sid_mem) = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_members);
+ (*name_types) = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_members);
+ (*names) = TALLOC_ZERO_ARRAY(mem_ctx, char *, num_members);
+
+ if ((members == NULL) || (*sid_mem == NULL) ||
+ (*name_types == NULL) || (*names == NULL)) {
+ DEBUG(1, ("talloc failed\n"));
+ status = NT_STATUS_NO_MEMORY;
goto done;
}
+ } else {
+ (*sid_mem) = NULL;
+ (*name_types) = NULL;
+ (*names) = NULL;
}
+
+ for (i=0;i<num_members;i++) {
+ uint32 name_type;
+ char *name;
+ DOM_SID sid;
- status = NT_STATUS_OK;
- DEBUG(3,("ads lookup_groupmem for sid=%s succeeded\n",
- sid_string_static(group_sid)));
+ if (dn_lookup(ads, mem_ctx, members[i], &name, &name_type, &sid)) {
+ (*names)[*num_names] = name;
+ (*name_types)[*num_names] = name_type;
+ sid_copy(&(*sid_mem)[*num_names], &sid);
+ (*num_names)++;
+ }
+ }
+ status = NT_STATUS_OK;
+ DEBUG(3,("ads lookup_groupmem for sid=%s\n", sid_to_string(sid_string, group_sid)));
done:
- TALLOC_FREE(tmp_ctx);
+ if (res)
+ ads_msgfree(ads, res);
return status;
}
@@ -1114,13 +1009,6 @@ static NTSTATUS sequence_number(struct winbindd_domain *domain, uint32 *seq)
DEBUG(3,("ads: fetch sequence_number for %s\n", domain->name));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("sequence: No incoming trust for domain %s\n",
- domain->name));
- *seq = time(NULL);
- return NT_STATUS_OK;
- }
-
*seq = DOM_SEQUENCE_NONE;
ads = ads_cached_connection(domain);
@@ -1159,11 +1047,9 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
struct ds_domain_trust *domains = NULL;
int count = 0;
int i;
- uint32 flags;
+ uint32 flags = DS_DOMAIN_IN_FOREST | DS_DOMAIN_DIRECT_OUTBOUND;
struct rpc_pipe_client *cli;
- uint32 fr_flags = (DS_DOMAIN_IN_FOREST | DS_DOMAIN_TREE_ROOT);
- int ret_count;
-
+
DEBUG(3,("ads: trusted_domains\n"));
*num_domains = 0;
@@ -1171,20 +1057,6 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
*names = NULL;
*dom_sids = NULL;
- /* If this is our primary domain or a root in our forest,
- query for all trusts. If not, then just look for domain
- trusts in the target forest */
-
- if ( domain->primary ||
- ((domain->domain_flags&fr_flags) == fr_flags) )
- {
- flags = DS_DOMAIN_DIRECT_OUTBOUND |
- DS_DOMAIN_DIRECT_INBOUND |
- DS_DOMAIN_IN_FOREST;
- } else {
- flags = DS_DOMAIN_IN_FOREST;
- }
-
result = cm_connect_netlogon(domain, &cli);
if (!NT_STATUS_IS_OK(result)) {
@@ -1202,7 +1074,7 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
}
if ( NT_STATUS_IS_OK(result) && count) {
-
+
/* Allocate memory for trusted domain names and sids */
if ( !(*names = TALLOC_ARRAY(mem_ctx, char *, count)) ) {
@@ -1222,70 +1094,14 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
/* Copy across names and sids */
-
- ret_count = 0;
for (i = 0; i < count; i++) {
- struct winbindd_domain d;
-
- /* drop external trusts if this is not our primary
- domain. This means that the returned number of
- domains may be less that the ones actually trusted
- by the DC. */
-
- if ( (domains[i].trust_attributes == DS_DOMAIN_TRUST_ATTRIB_QUARANTINED_DOMAIN) &&
- !domain->primary )
- {
- DEBUG(10,("trusted_domains: Skipping external trusted domain "
- "%s because it is outside of our primary domain\n",
- domains[i].netbios_domain));
- continue;
- }
-
- (*names)[ret_count] = domains[i].netbios_domain;
- (*alt_names)[ret_count] = domains[i].dns_domain;
- sid_copy(&(*dom_sids)[ret_count], &domains[i].sid);
-
- /* add to the trusted domain cache */
-
- fstrcpy( d.name, domains[i].netbios_domain );
- fstrcpy( d.alt_name, domains[i].dns_domain );
- sid_copy( &d.sid, &domains[i].sid );
-
- /* This gets a little tricky. If we are
- following a transitive forest trust, then
- innerit the flags, type, and attrins from
- the domain we queried to make sure we don't
- record the view of the trust from the wrong
- side. Always view it from the side of our
- primary domain. --jerry */
- if ( domain->primary ||
- ((domain->domain_flags&fr_flags) == fr_flags) )
- {
- DEBUG(10,("trusted_domains(ads): Storing trust "
- "flags for domain %s\n", d.alt_name));
-
- /* Look this up in cache to make sure
- we have the current trust flags and
- attributes */
-
- d.domain_flags = domains[i].flags;
- d.domain_type = domains[i].trust_type;
- d.domain_trust_attribs = domains[i].trust_attributes;
- } else {
- DEBUG(10,("trusted_domains(ads): Inheriting trust "
- "flags for domain %s\n", d.alt_name));
- d.domain_flags = domain->domain_flags;
- d.domain_type = domain->domain_type;
- d.domain_trust_attribs = domain->domain_trust_attribs;
- }
-
- wcache_tdc_add_domain( &d );
-
- ret_count++;
+ (*names)[i] = domains[i].netbios_domain;
+ (*alt_names)[i] = domains[i].dns_domain;
+ sid_copy(&(*dom_sids)[i], &domains[i].sid);
}
- *num_domains = ret_count;
+ *num_domains = count;
}
return result;
diff --git a/source/nsswitch/winbindd_async.c b/source/nsswitch/winbindd_async.c
index dbe4ad012b1..eb8631ab868 100644
--- a/source/nsswitch/winbindd_async.c
+++ b/source/nsswitch/winbindd_async.c
@@ -687,40 +687,6 @@ static void name2gid_recv(TALLOC_CTX *mem_ctx, BOOL success,
}
#endif /* not used */
-struct lookupsid_state {
- DOM_SID sid;
- void *caller_private_data;
-};
-
-
-static void lookupsid_recv2(TALLOC_CTX *mem_ctx, BOOL success,
- struct winbindd_response *response,
- void *c, void *private_data)
-{
- void (*cont)(void *priv, BOOL succ, const char *dom_name,
- const char *name, enum lsa_SidType type) =
- (void (*)(void *, BOOL, const char *, const char *,
- enum lsa_SidType))c;
- struct lookupsid_state *s = talloc_get_type_abort(private_data,
- struct lookupsid_state);
-
- if (!success) {
- DEBUG(5, ("Could not trigger lookupsid\n"));
- cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
- return;
- }
-
- if (response->result != WINBINDD_OK) {
- DEBUG(5, ("lookupsid (forest root) returned an error\n"));
- cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
- return;
- }
-
- cont(s->caller_private_data, True, response->data.name.dom_name,
- response->data.name.name,
- (enum lsa_SidType)response->data.name.type);
-}
-
static void lookupsid_recv(TALLOC_CTX *mem_ctx, BOOL success,
struct winbindd_response *response,
void *c, void *private_data)
@@ -729,37 +695,20 @@ static void lookupsid_recv(TALLOC_CTX *mem_ctx, BOOL success,
const char *name, enum lsa_SidType type) =
(void (*)(void *, BOOL, const char *, const char *,
enum lsa_SidType))c;
- struct lookupsid_state *s = talloc_get_type_abort(private_data,
- struct lookupsid_state);
if (!success) {
DEBUG(5, ("Could not trigger lookupsid\n"));
- cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
+ cont(private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
return;
}
if (response->result != WINBINDD_OK) {
- /* Try again using the forest root */
- struct winbindd_domain *root_domain = find_root_domain();
- struct winbindd_request request;
-
- if ( !root_domain ) {
- DEBUG(5,("lookupsid_recv: unable to determine forest root\n"));
- cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
- return;
- }
-
- ZERO_STRUCT(request);
- request.cmd = WINBINDD_LOOKUPSID;
- fstrcpy(request.data.sid, sid_string_static(&s->sid));
-
- do_async_domain(mem_ctx, root_domain, &request, lookupsid_recv2,
- (void *)cont, s);
-
+ DEBUG(5, ("lookupsid returned an error\n"));
+ cont(private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
return;
}
- cont(s->caller_private_data, True, response->data.name.dom_name,
+ cont(private_data, True, response->data.name.dom_name,
response->data.name.name,
(enum lsa_SidType)response->data.name.type);
}
@@ -773,7 +722,6 @@ void winbindd_lookupsid_async(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
{
struct winbindd_domain *domain;
struct winbindd_request request;
- struct lookupsid_state *s;
domain = find_lookup_domain_from_sid(sid);
if (domain == NULL) {
@@ -787,17 +735,8 @@ void winbindd_lookupsid_async(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
request.cmd = WINBINDD_LOOKUPSID;
fstrcpy(request.data.sid, sid_string_static(sid));
- if ( (s = TALLOC_ZERO_P(mem_ctx, struct lookupsid_state)) == NULL ) {
- DEBUG(0, ("winbindd_lookupsid_async: talloc failed\n"));
- cont(private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
- return;
- }
-
- sid_copy( &s->sid, sid );
- s->caller_private_data = private_data;
-
do_async_domain(mem_ctx, domain, &request, lookupsid_recv,
- (void *)cont, s);
+ (void *)cont, private_data);
}
enum winbindd_result winbindd_dual_lookupsid(struct winbindd_domain *domain,
@@ -823,9 +762,8 @@ enum winbindd_result winbindd_dual_lookupsid(struct winbindd_domain *domain,
/* Lookup the sid */
- if (!winbindd_lookup_name_by_sid(state->mem_ctx, domain, &sid,
- &dom_name, &name, &type))
- {
+ if (!winbindd_lookup_name_by_sid(state->mem_ctx, &sid, &dom_name, &name,
+ &type)) {
TALLOC_FREE(dom_name);
TALLOC_FREE(name);
return WINBINDD_ERROR;
@@ -844,13 +782,6 @@ enum winbindd_result winbindd_dual_lookupsid(struct winbindd_domain *domain,
This is the second callback after contacting the forest root
********************************************************************/
-struct lookupname_state {
- char *dom_name;
- char *name;
- void *caller_private_data;
-};
-
-
static void lookupname_recv2(TALLOC_CTX *mem_ctx, BOOL success,
struct winbindd_response *response,
void *c, void *private_data)
@@ -859,30 +790,27 @@ static void lookupname_recv2(TALLOC_CTX *mem_ctx, BOOL success,
enum lsa_SidType type) =
(void (*)(void *, BOOL, const DOM_SID *, enum lsa_SidType))c;
DOM_SID sid;
- struct lookupname_state *s = talloc_get_type_abort( private_data,
- struct lookupname_state );
-
if (!success) {
DEBUG(5, ("Could not trigger lookup_name\n"));
- cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
+ cont(private_data, False, NULL, SID_NAME_UNKNOWN);
return;
}
if (response->result != WINBINDD_OK) {
DEBUG(5, ("lookup_name returned an error\n"));
- cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
+ cont(private_data, False, NULL, SID_NAME_UNKNOWN);
return;
}
if (!string_to_sid(&sid, response->data.sid.sid)) {
DEBUG(0, ("Could not convert string %s to sid\n",
response->data.sid.sid));
- cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
+ cont(private_data, False, NULL, SID_NAME_UNKNOWN);
return;
}
- cont(s->caller_private_data, True, &sid,
+ cont(private_data, True, &sid,
(enum lsa_SidType)response->data.sid.type);
}
@@ -898,34 +826,36 @@ static void lookupname_recv(TALLOC_CTX *mem_ctx, BOOL success,
enum lsa_SidType type) =
(void (*)(void *, BOOL, const DOM_SID *, enum lsa_SidType))c;
DOM_SID sid;
- struct lookupname_state *s = talloc_get_type_abort( private_data,
- struct lookupname_state );
if (!success) {
DEBUG(5, ("lookupname_recv: lookup_name() failed!\n"));
- cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
+ cont(private_data, False, NULL, SID_NAME_UNKNOWN);
return;
}
if (response->result != WINBINDD_OK) {
/* Try again using the forest root */
struct winbindd_domain *root_domain = find_root_domain();
+ struct winbindd_cli_state *state = (struct winbindd_cli_state*)private_data;
struct winbindd_request request;
+ char *name_domain, *name_account;
if ( !root_domain ) {
DEBUG(5,("lookupname_recv: unable to determine forest root\n"));
- cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
+ cont(private_data, False, NULL, SID_NAME_UNKNOWN);
return;
}
+ name_domain = state->request.data.name.dom_name;
+ name_account = state->request.data.name.name;
+
ZERO_STRUCT(request);
request.cmd = WINBINDD_LOOKUPNAME;
-
- fstrcpy( request.data.name.dom_name, s->dom_name );
- fstrcpy( request.data.name.name, s->name );
+ fstrcpy(request.data.name.dom_name, name_domain);
+ fstrcpy(request.data.name.name, name_account);
do_async_domain(mem_ctx, root_domain, &request, lookupname_recv2,
- (void *)cont, s);
+ (void *)cont, private_data);
return;
}
@@ -933,11 +863,11 @@ static void lookupname_recv(TALLOC_CTX *mem_ctx, BOOL success,
if (!string_to_sid(&sid, response->data.sid.sid)) {
DEBUG(0, ("Could not convert string %s to sid\n",
response->data.sid.sid));
- cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
+ cont(private_data, False, NULL, SID_NAME_UNKNOWN);
return;
}
- cont(s->caller_private_data, True, &sid,
+ cont(private_data, True, &sid,
(enum lsa_SidType)response->data.sid.type);
}
@@ -952,12 +882,10 @@ void winbindd_lookupname_async(TALLOC_CTX *mem_ctx,
void (*cont)(void *private_data, BOOL success,
const DOM_SID *sid,
enum lsa_SidType type),
- enum winbindd_cmd orig_cmd,
void *private_data)
{
struct winbindd_request request;
struct winbindd_domain *domain;
- struct lookupname_state *s;
if ( (domain = find_lookup_domain_from_name(dom_name)) == NULL ) {
DEBUG(5, ("Could not find domain for name %s\n", dom_name));
@@ -967,22 +895,11 @@ void winbindd_lookupname_async(TALLOC_CTX *mem_ctx,
ZERO_STRUCT(request);
request.cmd = WINBINDD_LOOKUPNAME;
- request.original_cmd = orig_cmd;
fstrcpy(request.data.name.dom_name, dom_name);
fstrcpy(request.data.name.name, name);
- if ( (s = TALLOC_ZERO_P(mem_ctx, struct lookupname_state)) == NULL ) {
- DEBUG(0, ("winbindd_lookupname_async: talloc failed\n"));
- cont(private_data, False, NULL, SID_NAME_UNKNOWN);
- return;
- }
-
- s->dom_name = talloc_strdup( s, dom_name );
- s->name = talloc_strdup( s, name );
- s->caller_private_data = private_data;
-
do_async_domain(mem_ctx, domain, &request, lookupname_recv,
- (void *)cont, s);
+ (void *)cont, private_data);
}
enum winbindd_result winbindd_dual_lookupname(struct winbindd_domain *domain,
@@ -1014,7 +931,7 @@ enum winbindd_result winbindd_dual_lookupname(struct winbindd_domain *domain,
name_domain, lp_winbind_separator(), name_user));
/* Lookup name from DC using lsa_lookup_names() */
- if (!winbindd_lookup_sid_by_name(state->mem_ctx, state->request.original_cmd, domain, name_domain,
+ if (!winbindd_lookup_sid_by_name(state->mem_ctx, domain, name_domain,
name_user, &sid, &type)) {
return WINBINDD_ERROR;
}
@@ -1496,12 +1413,6 @@ static void query_user_recv(TALLOC_CTX *mem_ctx, BOOL success,
return;
}
- if (response->result != WINBINDD_OK) {
- DEBUG(5, ("query_user returned an error\n"));
- cont(private_data, False, NULL, NULL, NULL, NULL, -1, -1);
- return;
- }
-
cont(private_data, True, response->data.user_info.acct_name,
response->data.user_info.full_name,
response->data.user_info.homedir,
diff --git a/source/nsswitch/winbindd_cache.c b/source/nsswitch/winbindd_cache.c
index 67d689a5f3e..a88a061686c 100644
--- a/source/nsswitch/winbindd_cache.c
+++ b/source/nsswitch/winbindd_cache.c
@@ -4,10 +4,9 @@
Winbind cache backend functions
Copyright (C) Andrew Tridgell 2001
- Copyright (C) Gerald Carter 2003-2007
+ Copyright (C) Gerald Carter 2003
Copyright (C) Volker Lendecke 2005
Copyright (C) Guenther Deschner 2005
- Copyright (C) Michael Adam 2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -94,8 +93,6 @@ struct cache_entry {
uint32 len, ofs;
};
-void (*smb_panic_fn)(const char *const why) = smb_panic;
-
#define WINBINDD_MAX_CACHE_SIZE (50*1024*1024)
static struct winbind_cache *wcache;
@@ -133,6 +130,9 @@ void winbindd_check_cache_size(time_t t)
static struct winbind_cache *get_cache(struct winbindd_domain *domain)
{
struct winbind_cache *ret = wcache;
+#ifdef HAVE_ADS
+ struct winbindd_domain *our_domain = domain;
+#endif
/* We have to know what type of domain we are dealing with first. */
@@ -160,17 +160,13 @@ static struct winbind_cache *get_cache(struct winbindd_domain *domain)
if (!domain->backend) {
#ifdef HAVE_ADS
- struct winbindd_domain *our_domain = domain;
-
/* find our domain first so we can figure out if we
are joined to a kerberized domain */
if ( !domain->primary )
our_domain = find_our_domain();
- if ((our_domain->active_directory || IS_DC)
- && domain->active_directory
- && !lp_winbind_rpc_only()) {
+ if ( (our_domain->active_directory || IS_DC) && domain->active_directory ) {
DEBUG(5,("get_cache: Setting ADS methods for domain %s\n", domain->name));
domain->backend = &ads_methods;
} else {
@@ -205,26 +201,16 @@ static void centry_free(struct cache_entry *centry)
free(centry);
}
-static BOOL centry_check_bytes(struct cache_entry *centry, size_t nbytes)
-{
- if (centry->len - centry->ofs < nbytes) {
- DEBUG(0,("centry corruption? needed %u bytes, have %d\n",
- (unsigned int)nbytes,
- centry->len - centry->ofs));
- return False;
- }
- return True;
-}
-
/*
pull a uint32 from a cache entry
*/
static uint32 centry_uint32(struct cache_entry *centry)
{
uint32 ret;
-
- if (!centry_check_bytes(centry, 4)) {
- smb_panic_fn("centry_uint32");
+ if (centry->len - centry->ofs < 4) {
+ DEBUG(0,("centry corruption? needed 4 bytes, have %d\n",
+ centry->len - centry->ofs));
+ smb_panic("centry_uint32");
}
ret = IVAL(centry->data, centry->ofs);
centry->ofs += 4;
@@ -237,8 +223,10 @@ static uint32 centry_uint32(struct cache_entry *centry)
static uint16 centry_uint16(struct cache_entry *centry)
{
uint16 ret;
- if (!centry_check_bytes(centry, 2)) {
- smb_panic_fn("centry_uint16");
+ if (centry->len - centry->ofs < 2) {
+ DEBUG(0,("centry corruption? needed 2 bytes, have %d\n",
+ centry->len - centry->ofs));
+ smb_panic("centry_uint16");
}
ret = CVAL(centry->data, centry->ofs);
centry->ofs += 2;
@@ -251,8 +239,10 @@ static uint16 centry_uint16(struct cache_entry *centry)
static uint8 centry_uint8(struct cache_entry *centry)
{
uint8 ret;
- if (!centry_check_bytes(centry, 1)) {
- smb_panic_fn("centry_uint8");
+ if (centry->len - centry->ofs < 1) {
+ DEBUG(0,("centry corruption? needed 1 bytes, have %d\n",
+ centry->len - centry->ofs));
+ smb_panic("centry_uint32");
}
ret = CVAL(centry->data, centry->ofs);
centry->ofs += 1;
@@ -265,8 +255,10 @@ static uint8 centry_uint8(struct cache_entry *centry)
static NTTIME centry_nttime(struct cache_entry *centry)
{
NTTIME ret;
- if (!centry_check_bytes(centry, 8)) {
- smb_panic_fn("centry_nttime");
+ if (centry->len - centry->ofs < 8) {
+ DEBUG(0,("centry corruption? needed 8 bytes, have %d\n",
+ centry->len - centry->ofs));
+ smb_panic("centry_nttime");
}
ret = IVAL(centry->data, centry->ofs);
centry->ofs += 4;
@@ -298,13 +290,15 @@ static char *centry_string(struct cache_entry *centry, TALLOC_CTX *mem_ctx)
return NULL;
}
- if (!centry_check_bytes(centry, (size_t)len)) {
- smb_panic_fn("centry_string");
+ if (centry->len - centry->ofs < len) {
+ DEBUG(0,("centry corruption? needed %d bytes, have %d\n",
+ len, centry->len - centry->ofs));
+ smb_panic("centry_string");
}
ret = TALLOC_ARRAY(mem_ctx, char, len+1);
if (!ret) {
- smb_panic_fn("centry_string out of memory\n");
+ smb_panic("centry_string out of memory\n");
}
memcpy(ret,centry->data + centry->ofs, len);
ret[len] = 0;
@@ -328,13 +322,15 @@ static char *centry_hash16(struct cache_entry *centry, TALLOC_CTX *mem_ctx)
return NULL;
}
- if (!centry_check_bytes(centry, 16)) {
+ if (centry->len - centry->ofs < 16) {
+ DEBUG(0,("centry corruption? needed 16 bytes, have %d\n",
+ centry->len - centry->ofs));
return NULL;
}
ret = TALLOC_ARRAY(mem_ctx, char, 16);
if (!ret) {
- smb_panic_fn("centry_hash out of memory\n");
+ smb_panic("centry_hash out of memory\n");
}
memcpy(ret,centry->data + centry->ofs, 16);
centry->ofs += 16;
@@ -415,7 +411,7 @@ static NTSTATUS store_cache_seqnum( struct winbindd_domain *domain )
{
TDB_DATA data;
fstring key_str;
- uint8 buf[8];
+ char buf[8];
if (!wcache->tdb) {
DEBUG(10,("store_cache_seqnum: tdb == NULL\n"));
@@ -453,10 +449,6 @@ static void refresh_sequence_number(struct winbindd_domain *domain, BOOL force)
time_t t = time(NULL);
unsigned cache_time = lp_winbind_cache_time();
- if ( IS_DOMAIN_OFFLINE(domain) ) {
- return;
- }
-
get_cache( domain );
#if 0 /* JERRY -- disable as the default cache time is now 5 minutes */
@@ -482,17 +474,9 @@ static void refresh_sequence_number(struct winbindd_domain *domain, BOOL force)
goto done;
/* important! make sure that we know if this is a native
- mode domain or not. And that we can contact it. */
-
- if ( winbindd_can_contact_domain( domain ) ) {
- status = domain->backend->sequence_number(domain,
- &domain->sequence_number);
- } else {
- /* just use the current time */
- status = NT_STATUS_OK;
- domain->sequence_number = time(NULL);
- }
+ mode domain or not */
+ status = domain->backend->sequence_number(domain, &domain->sequence_number);
/* the above call could have set our domain->backend to NULL when
* coming from offline to online mode, make sure to reinitialize the
@@ -569,7 +553,8 @@ static struct cache_entry *wcache_fetch_raw(char *kstr)
struct cache_entry *centry;
TDB_DATA key;
- key = string_tdb_data(kstr);
+ key.dptr = kstr;
+ key.dsize = strlen(kstr);
data = tdb_fetch(wcache->tdb, key);
if (!data.dptr) {
/* a cache miss */
@@ -653,7 +638,8 @@ static void wcache_delete(const char *format, ...)
smb_xvasprintf(&kstr, format, ap);
va_end(ap);
- key = string_tdb_data(kstr);
+ key.dptr = kstr;
+ key.dsize = strlen(kstr);
tdb_delete(wcache->tdb, key);
free(kstr);
@@ -671,7 +657,7 @@ static void centry_expand(struct cache_entry *centry, uint32 len)
centry->len);
if (!centry->data) {
DEBUG(0,("out of memory: needed %d bytes in centry_expand\n", centry->len));
- smb_panic_fn("out of memory in centry_expand");
+ smb_panic("out of memory in centry_expand");
}
}
@@ -804,8 +790,9 @@ static void centry_end(struct cache_entry *centry, const char *format, ...)
smb_xvasprintf(&kstr, format, ap);
va_end(ap);
- key = string_tdb_data(kstr);
- data.dptr = centry->data;
+ key.dptr = kstr;
+ key.dsize = strlen(kstr);
+ data.dptr = (char *)centry->data;
data.dsize = centry->ofs;
tdb_store(wcache->tdb, key, data, TDB_REPLACE);
@@ -828,8 +815,8 @@ static void wcache_save_name_to_sid(struct winbindd_domain *domain,
fstrcpy(uname, name);
strupper_m(uname);
centry_end(centry, "NS/%s/%s", domain_name, uname);
- DEBUG(10,("wcache_save_name_to_sid: %s\\%s -> %s (%s)\n", domain_name, uname,
- sid_string_static(sid), nt_errstr(status)));
+ DEBUG(10,("wcache_save_name_to_sid: %s\\%s -> %s\n", domain_name, uname,
+ sid_string_static(sid)));
centry_free(centry);
}
@@ -852,8 +839,7 @@ static void wcache_save_sid_to_name(struct winbindd_domain *domain, NTSTATUS sta
centry_put_string(centry, name);
}
centry_end(centry, "SN/%s", sid_to_string(sid_string, sid));
- DEBUG(10,("wcache_save_sid_to_name: %s -> %s (%s)\n", sid_string,
- name, nt_errstr(status)));
+ DEBUG(10,("wcache_save_sid_to_name: %s -> %s\n", sid_string, name));
centry_free(centry);
}
@@ -943,7 +929,7 @@ NTSTATUS wcache_cached_creds_exist(struct winbindd_domain *domain, const DOM_SID
fstr_sprintf(key_str, "CRED/%s", sid_string_static(sid));
- data = tdb_fetch(cache->tdb, string_tdb_data(key_str));
+ data = tdb_fetch(cache->tdb, make_tdb_data(key_str, strlen(key_str)));
if (!data.dptr) {
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
@@ -1017,9 +1003,9 @@ NTSTATUS wcache_get_creds(struct winbindd_domain *domain,
}
#if DEBUG_PASSWORD
- dump_data(100, *cached_nt_pass, NT_HASH_LEN);
+ dump_data(100, (const char *)*cached_nt_pass, NT_HASH_LEN);
if (*cached_salt) {
- dump_data(100, *cached_salt, NT_HASH_LEN);
+ dump_data(100, (const char *)*cached_salt, NT_HASH_LEN);
}
#endif
status = centry->status;
@@ -1058,7 +1044,7 @@ NTSTATUS wcache_save_creds(struct winbindd_domain *domain,
}
#if DEBUG_PASSWORD
- dump_data(100, nt_pass, NT_HASH_LEN);
+ dump_data(100, (const char *)nt_pass, NT_HASH_LEN);
#endif
centry_put_time(centry, time(NULL));
@@ -1103,9 +1089,8 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
goto do_cached;
(*info) = TALLOC_ARRAY(mem_ctx, WINBIND_USERINFO, *num_entries);
- if (! (*info)) {
- smb_panic_fn("query_user_list out of memory");
- }
+ if (! (*info))
+ smb_panic("query_user_list out of memory");
for (i=0; i<(*num_entries); i++) {
(*info)[i].acct_name = centry_string(centry, mem_ctx);
(*info)[i].full_name = centry_string(centry, mem_ctx);
@@ -1148,14 +1133,15 @@ do_query:
domain->name ));
status = domain->backend->query_user_list(domain, mem_ctx, num_entries, info);
- if (!NT_STATUS_IS_OK(status))
+ if (!NT_STATUS_IS_OK(status)) {
DEBUG(3, ("query_user_list: returned 0x%08x, "
"retrying\n", NT_STATUS_V(status)));
- if (NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL)) {
- DEBUG(3, ("query_user_list: flushing "
- "connection cache\n"));
- invalidate_cm_connection(&domain->conn);
- }
+ }
+ if (NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL)) {
+ DEBUG(3, ("query_user_list: flushing "
+ "connection cache\n"));
+ invalidate_cm_connection(&domain->conn);
+ }
} while (NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_UNSUCCESSFUL) &&
(retry++ < 5));
@@ -1219,9 +1205,8 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
goto do_cached;
(*info) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_entries);
- if (! (*info)) {
- smb_panic_fn("enum_dom_groups out of memory");
- }
+ if (! (*info))
+ smb_panic("enum_dom_groups out of memory");
for (i=0; i<(*num_entries); i++) {
fstrcpy((*info)[i].acct_name, centry_string(centry, mem_ctx));
fstrcpy((*info)[i].acct_desc, centry_string(centry, mem_ctx));
@@ -1293,9 +1278,8 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
goto do_cached;
(*info) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_entries);
- if (! (*info)) {
- smb_panic_fn("enum_dom_groups out of memory");
- }
+ if (! (*info))
+ smb_panic("enum_dom_groups out of memory");
for (i=0; i<(*num_entries); i++) {
fstrcpy((*info)[i].acct_name, centry_string(centry, mem_ctx));
fstrcpy((*info)[i].acct_desc, centry_string(centry, mem_ctx));
@@ -1356,7 +1340,6 @@ skip_save:
/* convert a single name to a sid in a domain */
static NTSTATUS name_to_sid(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- enum winbindd_cmd orig_cmd,
const char *domain_name,
const char *name,
DOM_SID *sid,
@@ -1404,8 +1387,7 @@ do_query:
DEBUG(10,("name_to_sid: [Cached] - doing backend query for name for domain %s\n",
domain->name ));
- status = domain->backend->name_to_sid(domain, mem_ctx, orig_cmd,
- domain_name, name, sid, type);
+ status = domain->backend->name_to_sid(domain, mem_ctx, domain_name, name, sid, type);
/* and save it */
refresh_sequence_number(domain, False);
@@ -1712,9 +1694,8 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
goto do_cached;
(*user_gids) = TALLOC_ARRAY(mem_ctx, DOM_SID, *num_groups);
- if (! (*user_gids)) {
- smb_panic_fn("lookup_usergroups out of memory");
- }
+ if (! (*user_gids))
+ smb_panic("lookup_usergroups out of memory");
for (i=0; i<(*num_groups); i++) {
centry_sid(centry, mem_ctx, &(*user_gids)[i]);
}
@@ -1742,9 +1723,6 @@ do_query:
status = domain->backend->lookup_usergroups(domain, mem_ctx, user_sid, num_groups, user_gids);
- if ( NT_STATUS_EQUAL(status, NT_STATUS_SYNCHRONIZATION_REQUIRED) )
- goto skip_save;
-
/* and save it */
refresh_sequence_number(domain, False);
centry = centry_start(domain, status);
@@ -1880,7 +1858,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
(*name_types) = TALLOC_ARRAY(mem_ctx, uint32, *num_names);
if (! (*sid_mem) || ! (*names) || ! (*name_types)) {
- smb_panic_fn("lookup_groupmem out of memory");
+ smb_panic("lookup_groupmem out of memory");
}
for (i=0; i<(*num_names); i++) {
@@ -1975,7 +1953,7 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
(*dom_sids) = TALLOC_ARRAY(mem_ctx, DOM_SID, *num_domains);
if (! (*dom_sids) || ! (*names) || ! (*alt_names)) {
- smb_panic_fn("trusted_domains out of memory");
+ smb_panic("trusted_domains out of memory");
}
} else {
(*names) = NULL;
@@ -2022,10 +2000,6 @@ do_query:
status = NT_STATUS_OK;
}
-
-#if 0 /* Disabled as we want the trust dom list to be managed by
- the main parent and always to make the query. --jerry */
-
/* and save it */
refresh_sequence_number(domain, False);
@@ -2046,8 +2020,6 @@ do_query:
centry_free(centry);
skip_save:
-#endif
-
return status;
}
@@ -2156,8 +2128,8 @@ do_query:
static int traverse_fn(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf,
void *state)
{
- if (strncmp((const char *)kbuf.dptr, "UL/", 3) == 0 ||
- strncmp((const char *)kbuf.dptr, "GL/", 3) == 0)
+ if (strncmp(kbuf.dptr, "UL/", 3) == 0 ||
+ strncmp(kbuf.dptr, "GL/", 3) == 0)
tdb_delete(the_tdb, kbuf);
return 0;
@@ -2198,7 +2170,7 @@ void wcache_invalidate_cache(void)
}
}
-BOOL init_wcache(void)
+static BOOL init_wcache(void)
{
if (wcache == NULL) {
wcache = SMB_XMALLOC_P(struct winbind_cache);
@@ -2289,7 +2261,7 @@ void cache_store_response(pid_t pid, struct winbindd_response *response)
fstr_sprintf(key_str, "DR/%d", pid);
if (tdb_store(wcache->tdb, string_tdb_data(key_str),
- make_tdb_data((uint8 *)response, sizeof(*response)),
+ make_tdb_data((const char *)response, sizeof(*response)),
TDB_REPLACE) == -1)
return;
@@ -2303,7 +2275,7 @@ void cache_store_response(pid_t pid, struct winbindd_response *response)
fstr_sprintf(key_str, "DE/%d", pid);
if (tdb_store(wcache->tdb, string_tdb_data(key_str),
- make_tdb_data((uint8 *)response->extra_data.data,
+ make_tdb_data((const char *)response->extra_data.data,
response->length - sizeof(*response)),
TDB_REPLACE) == 0)
return;
@@ -2363,7 +2335,7 @@ BOOL cache_retrieve_response(pid_t pid, struct winbindd_response * response)
return False;
}
- dump_data(11, (uint8 *)data.dptr, data.dsize);
+ dump_data(11, data.dptr, data.dsize);
response->extra_data.data = data.dptr;
return True;
@@ -2387,7 +2359,7 @@ void cache_cleanup_response(pid_t pid)
BOOL lookup_cached_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
- char **domain_name, char **name,
+ const char **domain_name, const char **name,
enum lsa_SidType *type)
{
struct winbindd_domain *domain;
@@ -2433,7 +2405,6 @@ BOOL lookup_cached_name(TALLOC_CTX *mem_ctx,
struct cache_entry *centry = NULL;
NTSTATUS status;
fstring uname;
- BOOL original_online_state;
domain = find_lookup_domain_from_name(domain_name);
if (domain == NULL) {
@@ -2449,14 +2420,7 @@ BOOL lookup_cached_name(TALLOC_CTX *mem_ctx,
fstrcpy(uname, name);
strupper_m(uname);
- /* If we are doing a cached logon, temporarily set the domain
- offline so the cache won't expire the entry */
-
- original_online_state = domain->online;
- domain->online = False;
centry = wcache_fetch(cache, domain, "NS/%s/%s", domain_name, uname);
- domain->online = original_online_state;
-
if (centry == NULL) {
return False;
}
@@ -2481,6 +2445,7 @@ void cache_name2sid(struct winbindd_domain *domain,
sid, type);
}
+/* delete all centries that don't have NT_STATUS_OK set */
/*
* The original idea that this cache only contains centries has
* been blurred - now other stuff gets put in here. Ensure we
@@ -2496,13 +2461,13 @@ static int traverse_fn_cleanup(TDB_CONTEXT *the_tdb, TDB_DATA kbuf,
return 0;
}
- centry = wcache_fetch_raw((char *)kbuf.dptr);
+ centry = wcache_fetch_raw(kbuf.dptr);
if (!centry) {
return 0;
}
if (!NT_STATUS_IS_OK(centry->status)) {
- DEBUG(10,("deleting centry %s\n", (const char *)kbuf.dptr));
+ DEBUG(10,("deleting centry %s\n", kbuf.dptr));
tdb_delete(the_tdb, kbuf);
}
@@ -2545,7 +2510,7 @@ static int traverse_fn_cached_creds(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DAT
{
int *cred_count = (int*)state;
- if (strncmp((const char *)kbuf.dptr, "CRED/", 5) == 0) {
+ if (strncmp(kbuf.dptr, "CRED/", 5) == 0) {
(*cred_count)++;
}
return 0;
@@ -2579,7 +2544,7 @@ static int traverse_fn_get_credlist(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DAT
{
struct cred_list *cred;
- if (strncmp((const char *)kbuf.dptr, "CRED/", 5) == 0) {
+ if (strncmp(kbuf.dptr, "CRED/", 5) == 0) {
cred = SMB_MALLOC_P(struct cred_list);
if (cred == NULL) {
@@ -2591,7 +2556,7 @@ static int traverse_fn_get_credlist(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DAT
/* save a copy of the key */
- fstrcpy(cred->name, (const char *)kbuf.dptr);
+ fstrcpy(cred->name, kbuf.dptr);
DLIST_ADD(wcache_cred_list, cred);
}
@@ -2637,7 +2602,7 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const
TDB_DATA data;
time_t t;
- data = tdb_fetch(cache->tdb, string_tdb_data(cred->name));
+ data = tdb_fetch(cache->tdb, make_tdb_data(cred->name, strlen(cred->name)));
if (!data.dptr) {
DEBUG(10,("wcache_remove_oldest_cached_creds: entry for [%s] not found\n",
cred->name));
@@ -2745,1039 +2710,6 @@ BOOL get_global_winbindd_state_offline(void)
return global_winbindd_offline_state;
}
-/***********************************************************************
- Validate functions for all possible cache tdb keys.
-***********************************************************************/
-
-static struct cache_entry *create_centry_validate(const char *kstr, TDB_DATA data,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry;
-
- centry = SMB_XMALLOC_P(struct cache_entry);
- centry->data = (unsigned char *)memdup(data.dptr, data.dsize);
- if (!centry->data) {
- SAFE_FREE(centry);
- return NULL;
- }
- centry->len = data.dsize;
- centry->ofs = 0;
-
- if (centry->len < 8) {
- /* huh? corrupt cache? */
- DEBUG(0,("create_centry_validate: Corrupt cache for key %s (len < 8) ?\n", kstr));
- centry_free(centry);
- state->bad_entry = True;
- state->success = False;
- return NULL;
- }
-
- centry->status = NT_STATUS(centry_uint32(centry));
- centry->sequence_number = centry_uint32(centry);
- return centry;
-}
-
-static int validate_seqnum(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- if (dbuf.dsize != 8) {
- DEBUG(0,("validate_seqnum: Corrupt cache for key %s (len %u != 8) ?\n",
- keystr, (unsigned int)dbuf.dsize ));
- state->bad_entry = True;
- return 1;
- }
- return 0;
-}
-
-static int validate_ns(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- if (!centry) {
- return 1;
- }
-
- (void)centry_uint32(centry);
- if (NT_STATUS_IS_OK(centry->status)) {
- DOM_SID sid;
- (void)centry_sid(centry, mem_ctx, &sid);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_ns: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_sn(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- if (!centry) {
- return 1;
- }
-
- if (NT_STATUS_IS_OK(centry->status)) {
- (void)centry_uint32(centry);
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_sn: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_u(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- DOM_SID sid;
-
- if (!centry) {
- return 1;
- }
-
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_uint32(centry);
- (void)centry_sid(centry, mem_ctx, &sid);
- (void)centry_sid(centry, mem_ctx, &sid);
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_u: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_loc_pol(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
-
- if (!centry) {
- return 1;
- }
-
- (void)centry_nttime(centry);
- (void)centry_nttime(centry);
- (void)centry_uint16(centry);
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_loc_pol: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_pwd_pol(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
-
- if (!centry) {
- return 1;
- }
-
- (void)centry_uint16(centry);
- (void)centry_uint16(centry);
- (void)centry_uint32(centry);
- (void)centry_nttime(centry);
- (void)centry_nttime(centry);
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_pwd_pol: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_cred(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
-
- if (!centry) {
- return 1;
- }
-
- (void)centry_time(centry);
- (void)centry_hash16(centry, mem_ctx);
-
- /* We only have 17 bytes more data in the salted cred case. */
- if (centry->len - centry->ofs == 17) {
- (void)centry_hash16(centry, mem_ctx);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_cred: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_ul(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- int32 num_entries, i;
-
- if (!centry) {
- return 1;
- }
-
- num_entries = (int32)centry_uint32(centry);
-
- for (i=0; i< num_entries; i++) {
- DOM_SID sid;
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_sid(centry, mem_ctx, &sid);
- (void)centry_sid(centry, mem_ctx, &sid);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_ul: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_gl(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- int32 num_entries, i;
-
- if (!centry) {
- return 1;
- }
-
- num_entries = centry_uint32(centry);
-
- for (i=0; i< num_entries; i++) {
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_uint32(centry);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_gl: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_ug(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- int32 num_groups, i;
-
- if (!centry) {
- return 1;
- }
-
- num_groups = centry_uint32(centry);
-
- for (i=0; i< num_groups; i++) {
- DOM_SID sid;
- centry_sid(centry, mem_ctx, &sid);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_ug: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_ua(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- int32 num_aliases, i;
-
- if (!centry) {
- return 1;
- }
-
- num_aliases = centry_uint32(centry);
-
- for (i=0; i < num_aliases; i++) {
- (void)centry_uint32(centry);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_ua: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_gm(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- int32 num_names, i;
-
- if (!centry) {
- return 1;
- }
-
- num_names = centry_uint32(centry);
-
- for (i=0; i< num_names; i++) {
- DOM_SID sid;
- centry_sid(centry, mem_ctx, &sid);
- (void)centry_string(centry, mem_ctx);
- (void)centry_uint32(centry);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_gm: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_dr(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- /* Can't say anything about this other than must be nonzero. */
- if (dbuf.dsize == 0) {
- DEBUG(0,("validate_dr: Corrupt cache for key %s (len == 0) ?\n",
- keystr));
- state->bad_entry = True;
- state->success = False;
- return 1;
- }
-
- DEBUG(10,("validate_dr: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_de(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- /* Can't say anything about this other than must be nonzero. */
- if (dbuf.dsize == 0) {
- DEBUG(0,("validate_de: Corrupt cache for key %s (len == 0) ?\n",
- keystr));
- state->bad_entry = True;
- state->success = False;
- return 1;
- }
-
- DEBUG(10,("validate_de: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_trustdoms(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
- int32 num_domains, i;
-
- if (!centry) {
- return 1;
- }
-
- num_domains = centry_uint32(centry);
-
- for (i=0; i< num_domains; i++) {
- DOM_SID sid;
- (void)centry_string(centry, mem_ctx);
- (void)centry_string(centry, mem_ctx);
- (void)centry_sid(centry, mem_ctx, &sid);
- }
-
- centry_free(centry);
-
- if (!(state->success)) {
- return 1;
- }
- DEBUG(10,("validate_trustdoms: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_trustdomcache(TALLOC_CTX *mem_ctx, const char *keystr,
- TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- if (dbuf.dsize == 0) {
- DEBUG(0, ("validate_trustdomcache: Corrupt cache for "
- "key %s (len ==0) ?\n", keystr));
- state->bad_entry = True;
- state->success = False;
- return 1;
- }
-
- DEBUG(10, ("validate_trustdomcache: %s ok\n", keystr));
- DEBUGADD(10, (" Don't trust me, I am a DUMMY!\n"));
- return 0;
-}
-
-static int validate_offline(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- if (dbuf.dsize != 4) {
- DEBUG(0,("validate_offline: Corrupt cache for key %s (len %u != 4) ?\n",
- keystr, (unsigned int)dbuf.dsize ));
- state->bad_entry = True;
- state->success = False;
- return 1;
- }
- DEBUG(10,("validate_offline: %s ok\n", keystr));
- return 0;
-}
-
-static int validate_cache_version(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
- struct tdb_validation_status *state)
-{
- if (dbuf.dsize != 4) {
- DEBUG(0, ("validate_cache_version: Corrupt cache for "
- "key %s (len %u != 4) ?\n",
- keystr, (unsigned int)dbuf.dsize));
- state->bad_entry = True;
- state->success = False;
- return 1;
- }
-
- DEBUG(10, ("validate_cache_version: %s ok\n", keystr));
- return 0;
-}
-
-/***********************************************************************
- A list of all possible cache tdb keys with associated validation
- functions.
-***********************************************************************/
-
-struct key_val_struct {
- const char *keyname;
- int (*validate_data_fn)(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf, struct tdb_validation_status* state);
-} key_val[] = {
- {"SEQNUM/", validate_seqnum},
- {"NS/", validate_ns},
- {"SN/", validate_sn},
- {"U/", validate_u},
- {"LOC_POL/", validate_loc_pol},
- {"PWD_POL/", validate_pwd_pol},
- {"CRED/", validate_cred},
- {"UL/", validate_ul},
- {"GL/", validate_gl},
- {"UG/", validate_ug},
- {"UA", validate_ua},
- {"GM/", validate_gm},
- {"DR/", validate_dr},
- {"DE/", validate_de},
- {"TRUSTDOMS/", validate_trustdoms},
- {"TRUSTDOMCACHE/", validate_trustdomcache},
- {"WINBINDD_OFFLINE", validate_offline},
- {WINBINDD_CACHE_VERSION_KEYSTR, validate_cache_version},
- {NULL, NULL}
-};
-
-/***********************************************************************
- Function to look at every entry in the tdb and validate it as far as
- possible.
-***********************************************************************/
-
-static int cache_traverse_validate_fn(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state)
-{
- int i;
- struct tdb_validation_status *v_state = (struct tdb_validation_status *)state;
-
- /* Paranoia check. */
- if (kbuf.dsize > 1024) {
- DEBUG(0,("cache_traverse_validate_fn: key length too large (%u) > 1024\n\n",
- (unsigned int)kbuf.dsize ));
- return 1;
- }
-
- for (i = 0; key_val[i].keyname; i++) {
- size_t namelen = strlen(key_val[i].keyname);
- if (kbuf.dsize >= namelen && (
- strncmp(key_val[i].keyname, (const char *)kbuf.dptr, namelen)) == 0) {
- TALLOC_CTX *mem_ctx;
- char *keystr;
- int ret;
-
- keystr = SMB_MALLOC_ARRAY(char, kbuf.dsize+1);
- if (!keystr) {
- return 1;
- }
- memcpy(keystr, kbuf.dptr, kbuf.dsize);
- keystr[kbuf.dsize] = '\0';
-
- mem_ctx = talloc_init("validate_ctx");
- if (!mem_ctx) {
- SAFE_FREE(keystr);
- return 1;
- }
-
- ret = key_val[i].validate_data_fn(mem_ctx, keystr, dbuf,
- v_state);
-
- SAFE_FREE(keystr);
- talloc_destroy(mem_ctx);
- return ret;
- }
- }
-
- DEBUG(0,("cache_traverse_validate_fn: unknown cache entry\nkey :\n"));
- dump_data(0, (uint8 *)kbuf.dptr, kbuf.dsize);
- DEBUG(0,("data :\n"));
- dump_data(0, (uint8 *)dbuf.dptr, dbuf.dsize);
- v_state->unknown_key = True;
- v_state->success = False;
- return 1; /* terminate. */
-}
-
-static void validate_panic(const char *const why)
-{
- DEBUG(0,("validating cache: would panic %s\n", why ));
- DEBUGADD(0, ("exiting instead (cache validation mode)\n"));
- exit(47);
-}
-
-/***********************************************************************
- Try and validate every entry in the winbindd cache. If we fail here,
- delete the cache tdb and return non-zero - the caller (main winbindd
- function) will restart us as we don't know if we crashed or not.
-***********************************************************************/
-
-int winbindd_validate_cache(void)
-{
- int ret = -1;
- const char *tdb_path = lock_path("winbindd_cache.tdb");
- TDB_CONTEXT *tdb = NULL;
-
- DEBUG(10, ("winbindd_validate_cache: replacing panic function\n"));
- smb_panic_fn = validate_panic;
-
-
- tdb = tdb_open_log(tdb_path,
- WINBINDD_CACHE_TDB_DEFAULT_HASH_SIZE,
- ( lp_winbind_offline_logon()
- ? TDB_DEFAULT
- : TDB_DEFAULT | TDB_CLEAR_IF_FIRST ),
- O_RDWR|O_CREAT,
- 0600);
- if (!tdb) {
- DEBUG(0, ("winbindd_validate_cache: "
- "error opening/initializing tdb\n"));
- goto done;
- }
- tdb_close(tdb);
-
- ret = tdb_validate(lock_path("winbindd_cache.tdb"),
- cache_traverse_validate_fn);
-
- if (ret != 0) {
- DEBUG(10, ("winbindd_validate_cache: validation not successful.\n"));
- DEBUGADD(10, ("removing tdb %s.\n", tdb_path));
- unlink(tdb_path);
- }
-
-done:
- DEBUG(10, ("winbindd_validate_cache: restoring panic function\n"));
- smb_panic_fn = smb_panic;
- return ret;
-}
-
-/*********************************************************************
- ********************************************************************/
-
-static BOOL add_wbdomain_to_tdc_array( struct winbindd_domain *new_dom,
- struct winbindd_tdc_domain **domains,
- size_t *num_domains )
-{
- struct winbindd_tdc_domain *list = NULL;
- size_t idx;
- int i;
- BOOL set_only = False;
-
- /* don't allow duplicates */
-
- idx = *num_domains;
- list = *domains;
-
- for ( i=0; i< (*num_domains); i++ ) {
- if ( strequal( new_dom->name, list[i].domain_name ) ) {
- DEBUG(10,("add_wbdomain_to_tdc_array: Found existing record for %s\n",
- new_dom->name));
- idx = i;
- set_only = True;
-
- break;
- }
- }
-
- if ( !set_only ) {
- if ( !*domains ) {
- list = TALLOC_ARRAY( NULL, struct winbindd_tdc_domain, 1 );
- idx = 0;
- } else {
- list = TALLOC_REALLOC_ARRAY( *domains, *domains,
- struct winbindd_tdc_domain,
- (*num_domains)+1);
- idx = *num_domains;
- }
-
- ZERO_STRUCT( list[idx] );
- }
-
- if ( !list )
- return False;
-
- list[idx].domain_name = talloc_strdup( list, new_dom->name );
- list[idx].dns_name = talloc_strdup( list, new_dom->alt_name );
-
- if ( !is_null_sid( &new_dom->sid ) )
- sid_copy( &list[idx].sid, &new_dom->sid );
-
- if ( new_dom->domain_flags != 0x0 )
- list[idx].trust_flags = new_dom->domain_flags;
-
- if ( new_dom->domain_type != 0x0 )
- list[idx].trust_type = new_dom->domain_type;
-
- if ( new_dom->domain_trust_attribs != 0x0 )
- list[idx].trust_attribs = new_dom->domain_trust_attribs;
-
- if ( !set_only ) {
- *domains = list;
- *num_domains = idx + 1;
- }
-
- return True;
-}
-
-/*********************************************************************
- ********************************************************************/
-
-static TDB_DATA make_tdc_key( const char *domain_name )
-{
- char *keystr = NULL;
- TDB_DATA key = { NULL, 0 };
-
- if ( !domain_name ) {
- DEBUG(5,("make_tdc_key: Keyname workgroup is NULL!\n"));
- return key;
- }
-
-
- asprintf( &keystr, "TRUSTDOMCACHE/%s", domain_name );
- key = string_term_tdb_data(keystr);
-
- return key;
-}
-
-/*********************************************************************
- ********************************************************************/
-
-static int pack_tdc_domains( struct winbindd_tdc_domain *domains,
- size_t num_domains,
- unsigned char **buf )
-{
- unsigned char *buffer = NULL;
- int len = 0;
- int buflen = 0;
- int i = 0;
-
- DEBUG(10,("pack_tdc_domains: Packing %d trusted domains\n",
- (int)num_domains));
-
- buflen = 0;
-
- again:
- len = 0;
-
- /* Store the number of array items first */
- len += tdb_pack( buffer+len, buflen-len, "d",
- num_domains );
-
- /* now pack each domain trust record */
- for ( i=0; i<num_domains; i++ ) {
-
- if ( buflen > 0 ) {
- DEBUG(10,("pack_tdc_domains: Packing domain %s (%s)\n",
- domains[i].domain_name,
- domains[i].dns_name ? domains[i].dns_name : "UNKNOWN" ));
- }
-
- len += tdb_pack( buffer+len, buflen-len, "fffddd",
- domains[i].domain_name,
- domains[i].dns_name,
- sid_string_static(&domains[i].sid),
- domains[i].trust_flags,
- domains[i].trust_attribs,
- domains[i].trust_type );
- }
-
- if ( buflen < len ) {
- SAFE_FREE(buffer);
- if ( (buffer = SMB_MALLOC_ARRAY(unsigned char, len)) == NULL ) {
- DEBUG(0,("pack_tdc_domains: failed to alloc buffer!\n"));
- buflen = -1;
- goto done;
- }
- buflen = len;
- goto again;
- }
-
- *buf = buffer;
-
- done:
- return buflen;
-}
-
-/*********************************************************************
- ********************************************************************/
-
-static size_t unpack_tdc_domains( unsigned char *buf, int buflen,
- struct winbindd_tdc_domain **domains )
-{
- fstring domain_name, dns_name, sid_string;
- uint32 type, attribs, flags;
- int num_domains;
- int len = 0;
- int i;
- struct winbindd_tdc_domain *list = NULL;
-
- /* get the number of domains */
- len += tdb_unpack( buf+len, buflen-len, "d", &num_domains);
- if ( len == -1 ) {
- DEBUG(5,("unpack_tdc_domains: Failed to unpack domain array\n"));
- return 0;
- }
-
- list = TALLOC_ARRAY( NULL, struct winbindd_tdc_domain, num_domains );
- if ( !list ) {
- DEBUG(0,("unpack_tdc_domains: Failed to talloc() domain list!\n"));
- return 0;
- }
-
- for ( i=0; i<num_domains; i++ ) {
- len += tdb_unpack( buf+len, buflen-len, "fffddd",
- domain_name,
- dns_name,
- sid_string,
- &flags,
- &attribs,
- &type );
-
- if ( len == -1 ) {
- DEBUG(5,("unpack_tdc_domains: Failed to unpack domain array\n"));
- TALLOC_FREE( list );
- return 0;
- }
-
- DEBUG(11,("unpack_tdc_domains: Unpacking domain %s (%s) "
- "SID %s, flags = 0x%x, attribs = 0x%x, type = 0x%x\n",
- domain_name, dns_name, sid_string,
- flags, attribs, type));
-
- list[i].domain_name = talloc_strdup( list, domain_name );
- list[i].dns_name = talloc_strdup( list, dns_name );
- if ( !string_to_sid( &(list[i].sid), sid_string ) ) {
- DEBUG(10,("unpack_tdc_domains: no SID for domain %s\n",
- domain_name));
- }
- list[i].trust_flags = flags;
- list[i].trust_attribs = attribs;
- list[i].trust_type = type;
- }
-
- *domains = list;
-
- return num_domains;
-}
-
-/*********************************************************************
- ********************************************************************/
-
-static BOOL wcache_tdc_store_list( struct winbindd_tdc_domain *domains, size_t num_domains )
-{
- TDB_DATA key = make_tdc_key( lp_workgroup() );
- TDB_DATA data = { NULL, 0 };
- int ret;
-
- if ( !key.dptr )
- return False;
-
- /* See if we were asked to delete the cache entry */
-
- if ( !domains ) {
- ret = tdb_delete( wcache->tdb, key );
- goto done;
- }
-
- data.dsize = pack_tdc_domains( domains, num_domains, &data.dptr );
-
- if ( !data.dptr ) {
- ret = -1;
- goto done;
- }
-
- ret = tdb_store( wcache->tdb, key, data, 0 );
-
- done:
- SAFE_FREE( data.dptr );
- SAFE_FREE( key.dptr );
-
- return ( ret != -1 );
-}
-
-/*********************************************************************
- ********************************************************************/
-
-BOOL wcache_tdc_fetch_list( struct winbindd_tdc_domain **domains, size_t *num_domains )
-{
- TDB_DATA key = make_tdc_key( lp_workgroup() );
- TDB_DATA data = { NULL, 0 };
-
- *domains = NULL;
- *num_domains = 0;
-
- if ( !key.dptr )
- return False;
-
- data = tdb_fetch( wcache->tdb, key );
-
- SAFE_FREE( key.dptr );
-
- if ( !data.dptr )
- return False;
-
- *num_domains = unpack_tdc_domains( data.dptr, data.dsize, domains );
-
- SAFE_FREE( data.dptr );
-
- if ( !*domains )
- return False;
-
- return True;
-}
-
-/*********************************************************************
- ********************************************************************/
-
-BOOL wcache_tdc_add_domain( struct winbindd_domain *domain )
-{
- struct winbindd_tdc_domain *dom_list = NULL;
- size_t num_domains = 0;
- BOOL ret = False;
-
- DEBUG(10,("wcache_tdc_add_domain: Adding domain %s (%s), SID %s, "
- "flags = 0x%x, attributes = 0x%x, type = 0x%x\n",
- domain->name, domain->alt_name,
- sid_string_static(&domain->sid),
- domain->domain_flags,
- domain->domain_trust_attribs,
- domain->domain_type));
-
- if ( !init_wcache() ) {
- return False;
- }
-
- /* fetch the list */
-
- wcache_tdc_fetch_list( &dom_list, &num_domains );
-
- /* add the new domain */
-
- if ( !add_wbdomain_to_tdc_array( domain, &dom_list, &num_domains ) ) {
- goto done;
- }
-
- /* pack the domain */
-
- if ( !wcache_tdc_store_list( dom_list, num_domains ) ) {
- goto done;
- }
-
- /* Success */
-
- ret = True;
- done:
- TALLOC_FREE( dom_list );
-
- return ret;
-}
-
-/*********************************************************************
- ********************************************************************/
-
-struct winbindd_tdc_domain * wcache_tdc_fetch_domain( TALLOC_CTX *ctx, const char *name )
-{
- struct winbindd_tdc_domain *dom_list = NULL;
- size_t num_domains = 0;
- int i;
- struct winbindd_tdc_domain *d = NULL;
-
- DEBUG(10,("wcache_tdc_fetch_domain: Searching for domain %s\n", name));
-
- if ( !init_wcache() ) {
- return False;
- }
-
- /* fetch the list */
-
- wcache_tdc_fetch_list( &dom_list, &num_domains );
-
- for ( i=0; i<num_domains; i++ ) {
- if ( strequal(name, dom_list[i].domain_name) ||
- strequal(name, dom_list[i].dns_name) )
- {
- DEBUG(10,("wcache_tdc_fetch_domain: Found domain %s\n",
- name));
-
- d = TALLOC_P( ctx, struct winbindd_tdc_domain );
- if ( !d )
- break;
-
- d->domain_name = talloc_strdup( d, dom_list[i].domain_name );
- d->dns_name = talloc_strdup( d, dom_list[i].dns_name );
- sid_copy( &d->sid, &dom_list[i].sid );
- d->trust_flags = dom_list[i].trust_flags;
- d->trust_type = dom_list[i].trust_type;
- d->trust_attribs = dom_list[i].trust_attribs;
-
- break;
- }
- }
-
- TALLOC_FREE( dom_list );
-
- return d;
-}
-
-
-/*********************************************************************
- ********************************************************************/
-
-void wcache_tdc_clear( void )
-{
- if ( !init_wcache() )
- return;
-
- wcache_tdc_store_list( NULL, 0 );
-
- return;
-}
-
-
-/*********************************************************************
- ********************************************************************/
-
-static void wcache_save_user_pwinfo(struct winbindd_domain *domain,
- NTSTATUS status,
- const DOM_SID *user_sid,
- const char *homedir,
- const char *shell,
- const char *gecos,
- uint32 gid)
-{
- struct cache_entry *centry;
-
- if ( (centry = centry_start(domain, status)) == NULL )
- return;
-
- centry_put_string( centry, homedir );
- centry_put_string( centry, shell );
- centry_put_string( centry, gecos );
- centry_put_uint32( centry, gid );
-
- centry_end(centry, "NSS/PWINFO/%s", sid_string_static(user_sid) );
-
- DEBUG(10,("wcache_save_user_pwinfo: %s\n", sid_string_static(user_sid) ));
-
- centry_free(centry);
-}
-
-NTSTATUS nss_get_info_cached( struct winbindd_domain *domain,
- const DOM_SID *user_sid,
- TALLOC_CTX *ctx,
- ADS_STRUCT *ads, LDAPMessage *msg,
- char **homedir, char **shell, char **gecos,
- gid_t *p_gid)
-{
- struct winbind_cache *cache = get_cache(domain);
- struct cache_entry *centry = NULL;
- NTSTATUS nt_status;
-
- if (!cache->tdb)
- goto do_query;
-
- centry = wcache_fetch(cache, domain, "NSS/PWINFO/%s", sid_string_static(user_sid));
-
- if (!centry)
- goto do_query;
-
- *homedir = centry_string( centry, ctx );
- *shell = centry_string( centry, ctx );
- *gecos = centry_string( centry, ctx );
- *p_gid = centry_uint32( centry );
-
- centry_free(centry);
-
- DEBUG(10,("nss_get_info_cached: [Cached] - user_sid %s\n",
- sid_string_static(user_sid)));
-
- return NT_STATUS_OK;
-
-do_query:
-
- nt_status = nss_get_info( domain->name, user_sid, ctx, ads, msg,
- homedir, shell, gecos, p_gid );
-
- if ( NT_STATUS_IS_OK(nt_status) ) {
- wcache_save_user_pwinfo( domain, nt_status, user_sid,
- *homedir, *shell, *gecos, *p_gid );
- }
-
- if ( NT_STATUS_EQUAL( nt_status, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND ) ) {
- DEBUG(5,("nss_get_info_cached: Setting domain %s offline\n",
- domain->name ));
- set_domain_offline( domain );
- }
-
- return nt_status;
-}
-
-
/* the cache backend methods are exposed via this structure */
struct winbindd_methods cache_methods = {
True,
diff --git a/source/nsswitch/winbindd_ccache_access.c b/source/nsswitch/winbindd_ccache_access.c
index 31f475cb26a..f439a0457d7 100644
--- a/source/nsswitch/winbindd_ccache_access.c
+++ b/source/nsswitch/winbindd_ccache_access.c
@@ -94,8 +94,8 @@ static NTSTATUS do_ntlm_auth_with_hashes(const char *username,
Since we have a copy of the initial message that the client sent, we could
resolve any discrepancies if we had to.
*/
- dummy_msg = data_blob_null;
- reply = data_blob_null;
+ dummy_msg = data_blob(NULL, 0);
+ reply = data_blob(NULL, 0);
status = ntlmssp_update(ntlmssp_state, dummy_msg, &reply);
data_blob_free(&dummy_msg);
data_blob_free(&reply);
diff --git a/source/nsswitch/winbindd_cm.c b/source/nsswitch/winbindd_cm.c
index 85700272ea0..9fa1ef16269 100644
--- a/source/nsswitch/winbindd_cm.c
+++ b/source/nsswitch/winbindd_cm.c
@@ -82,16 +82,13 @@ static BOOL get_dcs(TALLOC_CTX *mem_ctx, const struct winbindd_domain *domain,
Child failed to find DC's. Reschedule check.
****************************************************************/
-static void msg_failed_to_go_online(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_failed_to_go_online(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct winbindd_domain *domain;
- const char *domainname = (const char *)data->data;
+ const char *domainname = (const char *)buf;
- if (data->data == NULL || data->length == 0) {
+ if (buf == NULL || len == 0) {
return;
}
@@ -121,16 +118,13 @@ static void msg_failed_to_go_online(struct messaging_context *msg,
Actually cause a reconnect from a message.
****************************************************************/
-static void msg_try_to_go_online(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_try_to_go_online(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct winbindd_domain *domain;
- const char *domainname = (const char *)data->data;
+ const char *domainname = (const char *)buf;
- if (data->data == NULL || data->length == 0) {
+ if (buf == NULL || len == 0) {
return;
}
@@ -178,21 +172,23 @@ static BOOL fork_child_dc_connect(struct winbindd_domain *domain)
/* Stop zombies */
CatchChild();
+ message_block();
+
child_pid = sys_fork();
if (child_pid == -1) {
DEBUG(0, ("fork_child_dc_connect: Could not fork: %s\n", strerror(errno)));
+ message_unblock();
return False;
}
if (child_pid != 0) {
/* Parent */
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_TRY_TO_GO_ONLINE,
- msg_try_to_go_online);
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_FAILED_TO_GO_ONLINE,
- msg_failed_to_go_online);
+ message_register(MSG_WINBIND_TRY_TO_GO_ONLINE,
+ msg_try_to_go_online, NULL);
+ message_register(MSG_WINBIND_FAILED_TO_GO_ONLINE,
+ msg_failed_to_go_online, NULL);
+ message_unblock();
return True;
}
@@ -223,22 +219,18 @@ static BOOL fork_child_dc_connect(struct winbindd_domain *domain)
if ((!get_dcs(mem_ctx, domain, &dcs, &num_dcs)) || (num_dcs == 0)) {
/* Still offline ? Can't find DC's. */
- messaging_send_buf(winbind_messaging_context(),
- pid_to_procid(parent_pid),
- MSG_WINBIND_FAILED_TO_GO_ONLINE,
- (uint8 *)domain->name,
- strlen(domain->name)+1);
+ message_send_pid(pid_to_procid(parent_pid), MSG_WINBIND_FAILED_TO_GO_ONLINE,
+ domain->name,
+ strlen(domain->name)+1, False);
_exit(0);
}
/* We got a DC. Send a message to our parent to get it to
try and do the same. */
- messaging_send_buf(winbind_messaging_context(),
- pid_to_procid(parent_pid),
- MSG_WINBIND_TRY_TO_GO_ONLINE,
- (uint8 *)domain->name,
- strlen(domain->name)+1);
+ message_send_pid(pid_to_procid(parent_pid), MSG_WINBIND_TRY_TO_GO_ONLINE,
+ domain->name,
+ strlen(domain->name)+1, False);
_exit(0);
}
@@ -254,9 +246,8 @@ static void check_domain_online_handler(struct event_context *ctx,
struct winbindd_domain *domain =
(struct winbindd_domain *)private_data;
- DEBUG(10,("check_domain_online_handler: called for domain "
- "%s (online = %s)\n", domain->name,
- domain->online ? "True" : "False" ));
+ DEBUG(10,("check_domain_online_handler: called for domain %s\n",
+ domain->name ));
TALLOC_FREE(domain->check_online_event);
@@ -349,28 +340,11 @@ void set_domain_offline(struct winbindd_domain *domain)
/* The above *has* to succeed for winbindd to work. */
if (!domain->check_online_event) {
- smb_panic("set_domain_offline: failed to add online handler");
+ smb_panic("set_domain_offline: failed to add online handler.\n");
}
DEBUG(10,("set_domain_offline: added event handler for domain %s\n",
domain->name ));
-
- /* Send an offline message to the idmap child when our
- primary domain goes offline */
-
- if ( domain->primary ) {
- struct winbindd_child *idmap = idmap_child();
-
- if ( idmap->pid != 0 ) {
- messaging_send_buf(winbind_messaging_context(),
- pid_to_procid(idmap->pid),
- MSG_WINBIND_OFFLINE,
- (uint8 *)domain->name,
- strlen(domain->name)+1);
- }
- }
-
- return;
}
/****************************************************************
@@ -425,29 +399,10 @@ static void set_domain_online(struct winbindd_domain *domain)
TALLOC_FREE(domain->check_online_event);
/* Ensure we ignore any pending child messages. */
- messaging_deregister(winbind_messaging_context(),
- MSG_WINBIND_TRY_TO_GO_ONLINE, NULL);
- messaging_deregister(winbind_messaging_context(),
- MSG_WINBIND_FAILED_TO_GO_ONLINE, NULL);
+ message_deregister(MSG_WINBIND_TRY_TO_GO_ONLINE);
+ message_deregister(MSG_WINBIND_FAILED_TO_GO_ONLINE);
domain->online = True;
-
- /* Send an online message to the idmap child when our
- primary domain comes online */
-
- if ( domain->primary ) {
- struct winbindd_child *idmap = idmap_child();
-
- if ( idmap->pid != 0 ) {
- messaging_send_buf(winbind_messaging_context(),
- pid_to_procid(idmap->pid),
- MSG_WINBIND_ONLINE,
- (uint8 *)domain->name,
- strlen(domain->name)+1);
- }
- }
-
- return;
}
/****************************************************************
@@ -490,7 +445,7 @@ void set_domain_online_request(struct winbindd_domain *domain)
/* The above *has* to succeed for winbindd to work. */
if (!domain->check_online_event) {
- smb_panic("set_domain_online_request: failed to add online handler");
+ smb_panic("set_domain_online_request: failed to add online handler.\n");
}
}
@@ -975,8 +930,7 @@ static BOOL send_getdc_request(struct in_addr dc_ip,
SSVAL(p, 6, 0xffff);
p+=8;
- return cli_send_mailslot(winbind_messaging_context(),
- False, "\\MAILSLOT\\NET\\NTLOGON", 0,
+ return cli_send_mailslot(False, "\\MAILSLOT\\NET\\NTLOGON", 0,
outbuf, PTR_DIFF(p, outbuf),
global_myname(), 0, domain_name, 0x1c,
dc_ip);
@@ -1078,19 +1032,27 @@ static BOOL dcip_to_name(const struct winbindd_domain *domain, struct in_addr ip
DEBUG(10,("dcip_to_name: flags = 0x%x\n", (unsigned int)ads->config.flags));
- if (domain->primary && (ads->config.flags & ADS_KDC) && ads_closest_dc(ads)) {
- char *sitename = sitename_fetch(ads->config.realm);
-
- /* We're going to use this KDC for this realm/domain.
- If we are using sites, then force the krb5 libs
- to use this KDC. */
-
- create_local_private_krb5_conf_for_domain(domain->alt_name,
- domain->name,
- sitename,
- ip);
-
- SAFE_FREE(sitename);
+ if (domain->primary && (ads->config.flags & ADS_KDC)) {
+ if (ads_closest_dc(ads)) {
+ char *sitename = sitename_fetch(ads->config.realm);
+
+ /* We're going to use this KDC for this realm/domain.
+ If we are using sites, then force the krb5 libs
+ to use this KDC. */
+
+ create_local_private_krb5_conf_for_domain(domain->alt_name,
+ domain->name,
+ sitename,
+ ip);
+
+ SAFE_FREE(sitename);
+ } else {
+ /* use an off site KDC */
+ create_local_private_krb5_conf_for_domain(domain->alt_name,
+ domain->name,
+ NULL,
+ ip);
+ }
/* Ensure we contact this DC also. */
saf_store( domain->name, name);
saf_store( domain->alt_name, name);
@@ -1544,106 +1506,6 @@ NTSTATUS init_dc_connection(struct winbindd_domain *domain)
}
/******************************************************************************
- Set the trust flags (direction and forest location) for a domain
-******************************************************************************/
-
-static BOOL set_dc_type_and_flags_trustinfo( struct winbindd_domain *domain )
-{
- struct winbindd_domain *our_domain;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- struct ds_domain_trust *domains = NULL;
- int count = 0;
- int i;
- uint32 flags = (DS_DOMAIN_IN_FOREST |
- DS_DOMAIN_DIRECT_OUTBOUND |
- DS_DOMAIN_DIRECT_INBOUND);
- struct rpc_pipe_client *cli;
- TALLOC_CTX *mem_ctx = NULL;
-
- DEBUG(5, ("set_dc_type_and_flags_trustinfo: domain %s\n", domain->name ));
-
- /* Our primary domain doesn't need to worry about trust flags.
- Force it to go through the network setup */
- if ( domain->primary ) {
- return False;
- }
-
- our_domain = find_our_domain();
-
- if ( !connection_ok(our_domain) ) {
- DEBUG(3,("set_dc_type_and_flags_trustinfo: No connection to our domain!\n"));
- return False;
- }
-
- /* This won't work unless our domain is AD */
-
- if ( !our_domain->active_directory ) {
- return False;
- }
-
- /* Use DsEnumerateDomainTrusts to get us the trust direction
- and type */
-
- result = cm_connect_netlogon(our_domain, &cli);
-
- if (!NT_STATUS_IS_OK(result)) {
- DEBUG(5, ("set_dc_type_and_flags_trustinfo: Could not open "
- "a connection to %s for PIPE_NETLOGON (%s)\n",
- domain->name, nt_errstr(result)));
- return False;
- }
-
- if ( (mem_ctx = talloc_init("set_dc_type_and_flags_trustinfo")) == NULL ) {
- DEBUG(0,("set_dc_type_and_flags_trustinfo: talloc_init() failed!\n"));
- return False;
- }
-
- result = rpccli_ds_enum_domain_trusts(cli, mem_ctx,
- cli->cli->desthost,
- flags, &domains,
- (unsigned int *)&count);
-
- /* Now find the domain name and get the flags */
-
- for ( i=0; i<count; i++ ) {
- if ( strequal( domain->name, domains[i].netbios_domain ) ) {
- domain->domain_flags = domains[i].flags;
- domain->domain_type = domains[i].trust_type;
- domain->domain_trust_attribs = domains[i].trust_attributes;
-
- if ( domain->domain_type == DS_DOMAIN_TRUST_TYPE_UPLEVEL )
- domain->active_directory = True;
-
- /* This flag is only set if the domain is *our*
- primary domain and the primary domain is in
- native mode */
-
- domain->native_mode = (domain->domain_flags & DS_DOMAIN_NATIVE_MODE);
-
- DEBUG(5, ("set_dc_type_and_flags_trustinfo: domain %s is %sin "
- "native mode.\n", domain->name,
- domain->native_mode ? "" : "NOT "));
-
- DEBUG(5,("set_dc_type_and_flags_trustinfo: domain %s is %s"
- "running active directory.\n", domain->name,
- domain->active_directory ? "" : "NOT "));
-
-
- domain->initialized = True;
-
- if ( !winbindd_can_contact_domain( domain) )
- domain->internal = True;
-
- break;
- }
- }
-
- talloc_destroy( mem_ctx );
-
- return domain->initialized;
-}
-
-/******************************************************************************
We can 'sense' certain things about the DC by it's replies to certain
questions.
@@ -1651,7 +1513,7 @@ static BOOL set_dc_type_and_flags_trustinfo( struct winbindd_domain *domain )
is native mode.
******************************************************************************/
-static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
+static void set_dc_type_and_flags( struct winbindd_domain *domain )
{
NTSTATUS result;
DS_DOMINFO_CTR ctr;
@@ -1670,13 +1532,13 @@ static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
return;
}
- DEBUG(5, ("set_dc_type_and_flags_connect: domain %s\n", domain->name ));
+ DEBUG(5, ("set_dc_type_and_flags: domain %s\n", domain->name ));
cli = cli_rpc_pipe_open_noauth(domain->conn.cli, PI_LSARPC_DS,
&result);
if (cli == NULL) {
- DEBUG(5, ("set_dc_type_and_flags_connect: Could not bind to "
+ DEBUG(5, ("set_dc_type_and_flags: Could not bind to "
"PI_LSARPC_DS on domain %s: (%s)\n",
domain->name, nt_errstr(result)));
@@ -1693,7 +1555,7 @@ static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
cli_rpc_pipe_close(cli);
if (!NT_STATUS_IS_OK(result)) {
- DEBUG(5, ("set_dc_type_and_flags_connect: rpccli_ds_getprimarydominfo "
+ DEBUG(5, ("set_dc_type_and_flags: rpccli_ds_getprimarydominfo "
"on domain %s failed: (%s)\n",
domain->name, nt_errstr(result)));
@@ -1720,7 +1582,7 @@ no_lsarpc_ds:
cli = cli_rpc_pipe_open_noauth(domain->conn.cli, PI_LSARPC, &result);
if (cli == NULL) {
- DEBUG(5, ("set_dc_type_and_flags_connect: Could not bind to "
+ DEBUG(5, ("set_dc_type_and_flags: Could not bind to "
"PI_LSARPC on domain %s: (%s)\n",
domain->name, nt_errstr(result)));
cli_rpc_pipe_close(cli);
@@ -1730,7 +1592,7 @@ no_lsarpc_ds:
mem_ctx = talloc_init("set_dc_type_and_flags on domain %s\n",
domain->name);
if (!mem_ctx) {
- DEBUG(1, ("set_dc_type_and_flags_connect: talloc_init() failed\n"));
+ DEBUG(1, ("set_dc_type_and_flags: talloc_init() failed\n"));
cli_rpc_pipe_close(cli);
return;
}
@@ -1785,10 +1647,10 @@ no_lsarpc_ds:
}
done:
- DEBUG(5, ("set_dc_type_and_flags_connect: domain %s is %sin native mode.\n",
+ DEBUG(5, ("set_dc_type_and_flags: domain %s is %sin native mode.\n",
domain->name, domain->native_mode ? "" : "NOT "));
- DEBUG(5,("set_dc_type_and_flags_connect: domain %s is %srunning active directory.\n",
+ DEBUG(5,("set_dc_type_and_flags: domain %s is %srunning active directory.\n",
domain->name, domain->active_directory ? "" : "NOT "));
cli_rpc_pipe_close(cli);
@@ -1798,37 +1660,6 @@ done:
domain->initialized = True;
}
-/**********************************************************************
- Set the domain_flags (trust attributes, domain operating modes, etc...
-***********************************************************************/
-
-static void set_dc_type_and_flags( struct winbindd_domain *domain )
-{
- /* we always have to contact our primary domain */
-
- if ( domain->primary ) {
- DEBUG(10,("set_dc_type_and_flags: setting up flags for "
- "primary domain\n"));
- set_dc_type_and_flags_connect( domain );
- return;
- }
-
- /* Use our DC to get the information if possible */
-
- if ( !set_dc_type_and_flags_trustinfo( domain ) ) {
- /* Otherwise, fallback to contacting the
- domain directly */
- set_dc_type_and_flags_connect( domain );
- }
-
- return;
-}
-
-
-
-/**********************************************************************
-***********************************************************************/
-
static BOOL cm_get_schannel_dcinfo(struct winbindd_domain *domain,
struct dcinfo **ppdc)
{
@@ -2142,7 +1973,7 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
return NT_STATUS_OK;
}
- if (domain->primary && !get_trust_pw(domain->name, mach_pwd, &sec_chan_type)) {
+ if (!get_trust_pw(domain->name, mach_pwd, &sec_chan_type)) {
return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
}
@@ -2152,12 +1983,6 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
return result;
}
- if ( !domain->primary ) {
- /* Clear the schannel request bit and drop down */
- neg_flags &= ~NETLOGON_NEG_SCHANNEL;
- goto no_schannel;
- }
-
if (lp_client_schannel() != False) {
neg_flags |= NETLOGON_NEG_SCHANNEL;
}
@@ -2202,15 +2027,8 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
return NT_STATUS_ACCESS_DENIED;
}
- no_schannel:
if ((lp_client_schannel() == False) ||
((neg_flags & NETLOGON_NEG_SCHANNEL) == 0)) {
-
- /*
- * NetSamLogonEx only works for schannel
- */
- domain->can_do_samlogon_ex = False;
-
/* We're done - just keep the existing connection to NETLOGON
* open */
conn->netlogon_pipe = netlogon_pipe;
@@ -2242,11 +2060,6 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
return !NT_STATUS_IS_OK(result) ? result : NT_STATUS_PIPE_NOT_AVAILABLE;
}
- /*
- * Try NetSamLogonEx for AD domains
- */
- domain->can_do_samlogon_ex = domain->active_directory;
-
*cli = conn->netlogon_pipe;
return NT_STATUS_OK;
}
diff --git a/source/nsswitch/winbindd_cred_cache.c b/source/nsswitch/winbindd_cred_cache.c
index 2c9572d7f86..368090c3909 100644
--- a/source/nsswitch/winbindd_cred_cache.c
+++ b/source/nsswitch/winbindd_cred_cache.c
@@ -111,8 +111,7 @@ static void krb5_ticket_refresh_handler(struct event_context *event_ctx,
entry->ccname,
False, /* no PAC required anymore */
True,
- WINBINDD_PAM_AUTH_KRB5_RENEW_TIME,
- NULL);
+ WINBINDD_PAM_AUTH_KRB5_RENEW_TIME);
gain_root_privilege();
if (ret) {
@@ -225,8 +224,7 @@ static void krb5_ticket_gain_handler(struct event_context *event_ctx,
entry->ccname,
False, /* no PAC required anymore */
True,
- WINBINDD_PAM_AUTH_KRB5_RENEW_TIME,
- NULL);
+ WINBINDD_PAM_AUTH_KRB5_RENEW_TIME);
gain_root_privilege();
if (ret) {
diff --git a/source/nsswitch/winbindd_creds.c b/source/nsswitch/winbindd_creds.c
index 920527810a4..f11b80909bf 100644
--- a/source/nsswitch/winbindd_creds.c
+++ b/source/nsswitch/winbindd_creds.c
@@ -119,7 +119,7 @@ NTSTATUS winbindd_store_creds(struct winbindd_domain *domain,
E_md4hash(pass, nt_pass);
#if DEBUG_PASSWORD
- dump_data(100, nt_pass, NT_HASH_LEN);
+ dump_data(100, (const char *)nt_pass, NT_HASH_LEN);
#endif
status = wcache_save_creds(domain, mem_ctx, &cred_sid, nt_pass);
diff --git a/source/nsswitch/winbindd_dual.c b/source/nsswitch/winbindd_dual.c
index 255577c58cf..ffbedfa9bf2 100644
--- a/source/nsswitch/winbindd_dual.c
+++ b/source/nsswitch/winbindd_dual.c
@@ -547,11 +547,8 @@ void winbindd_flush_negative_conn_cache(struct winbindd_domain *domain)
/* Set our domains as offline and forward the offline message to our children. */
-void winbind_msg_offline(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void winbind_msg_offline(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct winbindd_child *child;
struct winbindd_domain *domain;
@@ -576,6 +573,21 @@ void winbind_msg_offline(struct messaging_context *msg_ctx,
}
DEBUG(5,("winbind_msg_offline: marking %s offline.\n", domain->name));
set_domain_offline(domain);
+
+ /* Send an offline message to the idmap child when our
+ primary domain goes offline */
+
+ if ( domain->primary ) {
+ struct winbindd_child *idmap = idmap_child();
+
+ if ( idmap->pid != 0 ) {
+ message_send_pid(pid_to_procid(idmap->pid),
+ MSG_WINBIND_OFFLINE,
+ domain->name,
+ strlen(domain->name)+1,
+ False);
+ }
+ }
}
for (child = children; child != NULL; child = child->next) {
@@ -596,20 +608,15 @@ void winbind_msg_offline(struct messaging_context *msg_ctx,
DEBUG(10,("winbind_msg_offline: sending message to pid %u for domain %s.\n",
(unsigned int)child->pid, domain->name ));
- messaging_send_buf(msg_ctx, pid_to_procid(child->pid),
- MSG_WINBIND_OFFLINE,
- (uint8 *)child->domain->name,
- strlen(child->domain->name)+1);
+ message_send_pid(pid_to_procid(child->pid), MSG_WINBIND_OFFLINE, child->domain->name,
+ strlen(child->domain->name)+1, False);
}
}
/* Set our domains as online and forward the online message to our children. */
-void winbind_msg_online(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void winbind_msg_online(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct winbindd_child *child;
struct winbindd_domain *domain;
@@ -644,11 +651,11 @@ void winbind_msg_online(struct messaging_context *msg_ctx,
struct winbindd_child *idmap = idmap_child();
if ( idmap->pid != 0 ) {
- messaging_send_buf(msg_ctx,
- pid_to_procid(idmap->pid),
- MSG_WINBIND_ONLINE,
- (uint8 *)domain->name,
- strlen(domain->name)+1);
+ message_send_pid(pid_to_procid(idmap->pid),
+ MSG_WINBIND_ONLINE,
+ domain->name,
+ strlen(domain->name)+1,
+ False);
}
}
@@ -671,19 +678,14 @@ void winbind_msg_online(struct messaging_context *msg_ctx,
DEBUG(10,("winbind_msg_online: sending message to pid %u for domain %s.\n",
(unsigned int)child->pid, child->domain->name ));
- messaging_send_buf(msg_ctx, pid_to_procid(child->pid),
- MSG_WINBIND_ONLINE,
- (uint8 *)child->domain->name,
- strlen(child->domain->name)+1);
+ message_send_pid(pid_to_procid(child->pid), MSG_WINBIND_ONLINE, child->domain->name,
+ strlen(child->domain->name)+1, False);
}
}
/* Forward the online/offline messages to our children. */
-void winbind_msg_onlinestatus(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void winbind_msg_onlinestatus(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct winbindd_child *child;
@@ -694,38 +696,13 @@ void winbind_msg_onlinestatus(struct messaging_context *msg_ctx,
DEBUG(10,("winbind_msg_onlinestatus: "
"sending message to pid %u of primary domain.\n",
(unsigned int)child->pid));
- messaging_send_buf(msg_ctx, pid_to_procid(child->pid),
- MSG_WINBIND_ONLINESTATUS,
- (uint8 *)data->data,
- data->length);
+ message_send_pid(pid_to_procid(child->pid),
+ MSG_WINBIND_ONLINESTATUS, buf, len, False);
break;
}
}
}
-void winbind_msg_dump_event_list(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
-{
- struct winbindd_child *child;
-
- DEBUG(10,("winbind_msg_dump_event_list received\n"));
-
- dump_event_list(winbind_event_context());
-
- for (child = children; child != NULL; child = child->next) {
-
- DEBUG(10,("winbind_msg_dump_event_list: sending message to pid %u\n",
- (unsigned int)child->pid));
-
- messaging_send_buf(msg_ctx, pid_to_procid(child->pid),
- MSG_DUMP_EVENT_LIST,
- NULL, 0);
- }
-
-}
static void account_lockout_policy_handler(struct event_context *ctx,
struct timed_event *te,
@@ -743,14 +720,6 @@ static void account_lockout_policy_handler(struct event_context *ctx,
TALLOC_FREE(child->lockout_policy_event);
- if ( !winbindd_can_contact_domain( child->domain ) ) {
- DEBUG(10,("account_lockout_policy_handler: Removing myself since I "
- "do not have an incoming trust to domain %s\n",
- child->domain->name));
-
- return;
- }
-
methods = child->domain->methods;
mem_ctx = talloc_init("account_lockout_policy_handler ctx");
@@ -776,16 +745,13 @@ static void account_lockout_policy_handler(struct event_context *ctx,
/* Deal with a request to go offline. */
-static void child_msg_offline(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void child_msg_offline(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct winbindd_domain *domain;
- const char *domainname = (const char *)data->data;
+ const char *domainname = (const char *)buf;
- if (data->data == NULL || data->length == 0) {
+ if (buf == NULL || len == 0) {
return;
}
@@ -796,6 +762,12 @@ static void child_msg_offline(struct messaging_context *msg,
return;
}
+ /* Set our global state as offline. */
+ if (!set_global_winbindd_state_offline()) {
+ DEBUG(10,("child_msg_offline: offline request failed.\n"));
+ return;
+ }
+
/* Mark the requested domain offline. */
for (domain = domain_list(); domain; domain = domain->next) {
@@ -811,16 +783,13 @@ static void child_msg_offline(struct messaging_context *msg,
/* Deal with a request to go online. */
-static void child_msg_online(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void child_msg_online(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
struct winbindd_domain *domain;
- const char *domainname = (const char *)data->data;
+ const char *domainname = (const char *)buf;
- if (data->data == NULL || data->length == 0) {
+ if (buf == NULL || len == 0) {
return;
}
@@ -876,23 +845,20 @@ static const char *collect_onlinestatus(TALLOC_CTX *mem_ctx)
return buf;
}
-static void child_msg_onlinestatus(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void child_msg_onlinestatus(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
TALLOC_CTX *mem_ctx;
const char *message;
- struct server_id *sender;
+ struct process_id *sender;
DEBUG(5,("winbind_msg_onlinestatus received.\n"));
- if (!data->data) {
+ if (!buf) {
return;
}
- sender = (struct server_id *)data->data;
+ sender = (struct process_id *)buf;
mem_ctx = talloc_init("winbind_msg_onlinestatus");
if (mem_ctx == NULL) {
@@ -905,24 +871,12 @@ static void child_msg_onlinestatus(struct messaging_context *msg_ctx,
return;
}
- messaging_send_buf(msg_ctx, *sender, MSG_WINBIND_ONLINESTATUS,
- (uint8 *)message, strlen(message) + 1);
+ message_send_pid(*sender, MSG_WINBIND_ONLINESTATUS,
+ message, strlen(message) + 1, True);
talloc_destroy(mem_ctx);
}
-static void child_msg_dump_event_list(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
-{
- DEBUG(5,("child_msg_dump_event_list received\n"));
-
- dump_event_list(winbind_event_context());
-}
-
-
static BOOL fork_domain_child(struct winbindd_child *child)
{
int fdpair[2];
@@ -941,10 +895,15 @@ static BOOL fork_domain_child(struct winbindd_child *child)
/* Stop zombies */
CatchChild();
+ /* Ensure we don't process messages whilst we're
+ changing the disposition for the child. */
+ message_block();
+
child->pid = sys_fork();
if (child->pid == -1) {
DEBUG(0, ("Could not fork: %s\n", strerror(errno)));
+ message_unblock();
return False;
}
@@ -957,6 +916,8 @@ static BOOL fork_domain_child(struct winbindd_child *child)
child->event.flags = 0;
child->requests = NULL;
add_fd_event(&child->event);
+ /* We're ok with online/offline messages now. */
+ message_unblock();
return True;
}
@@ -978,36 +939,21 @@ static BOOL fork_domain_child(struct winbindd_child *child)
reopen_logs();
}
- /*
- * For clustering, we need to re-init our ctdbd connection after the
- * fork
- */
- if (!NT_STATUS_IS_OK(messaging_reinit(winbind_messaging_context())))
- exit(1);
-
/* Don't handle the same messages as our parent. */
- messaging_deregister(winbind_messaging_context(),
- MSG_SMB_CONF_UPDATED, NULL);
- messaging_deregister(winbind_messaging_context(),
- MSG_SHUTDOWN, NULL);
- messaging_deregister(winbind_messaging_context(),
- MSG_WINBIND_OFFLINE, NULL);
- messaging_deregister(winbind_messaging_context(),
- MSG_WINBIND_ONLINE, NULL);
- messaging_deregister(winbind_messaging_context(),
- MSG_WINBIND_ONLINESTATUS, NULL);
- messaging_deregister(winbind_messaging_context(),
- MSG_DUMP_EVENT_LIST, NULL);
+ message_deregister(MSG_SMB_CONF_UPDATED);
+ message_deregister(MSG_SHUTDOWN);
+ message_deregister(MSG_WINBIND_OFFLINE);
+ message_deregister(MSG_WINBIND_ONLINE);
+ message_deregister(MSG_WINBIND_ONLINESTATUS);
+
+ /* The child is ok with online/offline messages now. */
+ message_unblock();
/* Handle online/offline messages. */
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_OFFLINE, child_msg_offline);
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_ONLINE, child_msg_online);
- messaging_register(winbind_messaging_context(), NULL,
- MSG_WINBIND_ONLINESTATUS, child_msg_onlinestatus);
- messaging_register(winbind_messaging_context(), NULL,
- MSG_DUMP_EVENT_LIST, child_msg_dump_event_list);
+ message_register(MSG_WINBIND_OFFLINE, child_msg_offline, NULL);
+ message_register(MSG_WINBIND_ONLINE, child_msg_online, NULL);
+ message_register(MSG_WINBIND_ONLINESTATUS, child_msg_onlinestatus,
+ NULL);
if ( child->domain ) {
child->domain->startup = True;
@@ -1074,7 +1020,7 @@ static BOOL fork_domain_child(struct winbindd_child *child)
/* Handle messages */
- message_dispatch(winbind_messaging_context());
+ message_dispatch();
FD_ZERO(&read_fds);
FD_SET(state.sock, &read_fds);
diff --git a/source/nsswitch/winbindd_group.c b/source/nsswitch/winbindd_group.c
index 2b2ae7e5795..c7baecfbaa6 100644
--- a/source/nsswitch/winbindd_group.c
+++ b/source/nsswitch/winbindd_group.c
@@ -195,279 +195,7 @@ static BOOL fill_grent(struct winbindd_gr *gr, const char *dom_name,
return True;
}
-/***********************************************************************
- If "enum users" is set to false, and the group being looked
- up is the Domain Users SID: S-1-5-domain-513, then for the
- list of members check if the querying user is in that group,
- and if so only return that user as the gr_mem array.
- We can change this to a different parameter than "enum users"
- if neccessaey, or parameterize the group list we do this for.
-***********************************************************************/
-
-static BOOL fill_grent_mem_domusers( TALLOC_CTX *mem_ctx,
- struct winbindd_domain *domain,
- struct winbindd_cli_state *state,
- DOM_SID *group_sid,
- enum lsa_SidType group_name_type,
- size_t *num_gr_mem, char **gr_mem,
- size_t *gr_mem_len)
-{
- DOM_SID querying_user_sid;
- DOM_SID *pquerying_user_sid = NULL;
- uint32 num_groups = 0;
- DOM_SID *user_sids = NULL;
- BOOL u_in_group = False;
- NTSTATUS status;
- int i;
- unsigned int buf_len = 0;
- char *buf = NULL;
-
- DEBUG(10,("fill_grent_mem_domain_users: domain %s\n",
- domain->name ));
-
- if (state) {
- uid_t ret_uid = (uid_t)-1;
- if (sys_getpeereid(state->sock, &ret_uid)==0) {
- /* We know who's asking - look up their SID if
- it's one we've mapped before. */
- status = idmap_uid_to_sid(&querying_user_sid, ret_uid);
- if (NT_STATUS_IS_OK(status)) {
- pquerying_user_sid = &querying_user_sid;
- DEBUG(10,("fill_grent_mem_domain_users: querying uid %u -> %s\n",
- (unsigned int)ret_uid,
- sid_string_static(pquerying_user_sid) ));
- }
- }
- }
-
- /* Only look up if it was a winbindd user in this domain. */
- if (pquerying_user_sid &&
- (sid_compare_domain(pquerying_user_sid, &domain->sid) == 0)) {
-
- DEBUG(10,("fill_grent_mem_domain_users: querying user = %s\n",
- sid_string_static(pquerying_user_sid) ));
-
- status = domain->methods->lookup_usergroups(domain,
- mem_ctx,
- pquerying_user_sid,
- &num_groups,
- &user_sids);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(1, ("fill_grent_mem_domain_users: lookup_usergroups failed "
- "for sid %s in domain %s (error: %s)\n",
- sid_string_static(pquerying_user_sid),
- domain->name,
- nt_errstr(status)));
- return False;
- }
-
- for (i = 0; i < num_groups; i++) {
- if (sid_equal(group_sid, &user_sids[i])) {
- /* User is in Domain Users, add their name
- as the only group member. */
- u_in_group = True;
- break;
- }
- }
- }
-
- if (u_in_group) {
- size_t len = 0;
- char *domainname = NULL;
- char *username = NULL;
- fstring name;
- enum lsa_SidType type;
-
- DEBUG(10,("fill_grent_mem_domain_users: sid %s in 'Domain Users' in domain %s\n",
- sid_string_static(pquerying_user_sid), domain->name ));
-
- status = domain->methods->sid_to_name(domain, mem_ctx,
- pquerying_user_sid,
- &domainname,
- &username,
- &type);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(1, ("could not lookup username for user "
- "sid %s in domain %s (error: %s)\n",
- sid_string_static(pquerying_user_sid),
- domain->name,
- nt_errstr(status)));
- return False;
- }
- fill_domain_username(name, domain->name, username, True);
- len = strlen(name);
- buf_len = len + 1;
- if (!(buf = (char *)SMB_MALLOC(buf_len))) {
- DEBUG(1, ("out of memory\n"));
- return False;
- }
- memcpy(buf, name, buf_len);
-
- DEBUG(10,("fill_grent_mem_domain_users: user %s in "
- "'Domain Users' in domain %s\n",
- name, domain->name ));
-
- /* user is the only member */
- *num_gr_mem = 1;
- }
-
- *gr_mem = buf;
- *gr_mem_len = buf_len;
-
- DEBUG(10, ("fill_grent_mem_domain_users: num_mem = %u, len = %u, mem = %s\n",
- (unsigned int)*num_gr_mem,
- (unsigned int)buf_len, *num_gr_mem ? buf : "NULL"));
-
- return True;
-}
-
-/***********************************************************************
- Add names to a list. Assumes a canonical version of the string
- in DOMAIN\user
-***********************************************************************/
-
-static int namecmp( const void *a, const void *b )
-{
- return StrCaseCmp( * (char * const *) a, * (char * const *) b);
-}
-
-static NTSTATUS add_names_to_list( TALLOC_CTX *ctx,
- char ***list, uint32 *n_list,
- char **names, uint32 n_names )
-{
- char **new_list = NULL;
- uint32 n_new_list = 0;
- int i, j;
-
- if ( !names || (n_names == 0) )
- return NT_STATUS_OK;
-
- /* Alloc the maximum size we'll need */
-
- if ( *list == NULL ) {
- if ( (new_list = TALLOC_ARRAY( ctx, char *, n_names )) == NULL )
- return NT_STATUS_NO_MEMORY;
- n_new_list = n_names;
- } else {
- new_list = TALLOC_REALLOC_ARRAY( ctx, *list, char *,
- (*n_list) + n_names );
- if ( !new_list )
- return NT_STATUS_NO_MEMORY;
- n_new_list = (*n_list) + n_names;
- }
-
- /* Add all names */
-
- for ( i=*n_list, j=0; i<n_new_list; i++, j++ ) {
- new_list[i] = talloc_strdup( new_list, names[j] );
- }
-
- /* search for duplicates for sorting and looking for matching
- neighbors */
-
- qsort( new_list, n_new_list, sizeof(char*), QSORT_CAST namecmp );
-
- for ( i=1; i<n_new_list; i++ ) {
- if ( strcmp( new_list[i-1], new_list[i] ) == 0 ) {
- memmove( &new_list[i-1], &new_list[i],
- sizeof(char*)*(n_new_list-i) );
- n_new_list--;
- }
- }
-
- *list = new_list;
- *n_list = n_new_list;
-
- return NT_STATUS_OK;
-}
-
-/***********************************************************************
-***********************************************************************/
-
-static NTSTATUS expand_groups( TALLOC_CTX *ctx,
- struct winbindd_domain *d,
- DOM_SID *glist, uint32 n_glist,
- DOM_SID **new_glist, uint32 *n_new_glist,
- char ***members, uint32 *n_members )
-{
- int i, j;
- NTSTATUS status = NT_STATUS_OK;
- uint32 num_names = 0;
- uint32 *name_types = NULL;
- char **names = NULL;
- DOM_SID *sid_mem = NULL;
- TALLOC_CTX *tmp_ctx = NULL;
- DOM_SID *new_groups = NULL;
- size_t new_groups_size = 0;
-
- *members = NULL;
- *n_members = 0;
- *new_glist = NULL;
- *n_new_glist = 0;
-
- for ( i=0; i<n_glist; i++ ) {
- tmp_ctx = talloc_new( ctx );
-
- /* Lookup the group membership */
-
- status = d->methods->lookup_groupmem(d, tmp_ctx,
- &glist[i], &num_names,
- &sid_mem, &names,
- &name_types);
- if ( !NT_STATUS_IS_OK(status) )
- goto out;
-
- /* Separate users and groups into two lists */
-
- for ( j=0; j<num_names; j++ ) {
-
- /* Users */
- if ( name_types[j] == SID_NAME_USER ||
- name_types[j] == SID_NAME_COMPUTER )
- {
- status = add_names_to_list( ctx, members,
- n_members,
- names+j, 1 );
- if ( !NT_STATUS_IS_OK(status) )
- goto out;
-
- continue;
- }
-
- /* Groups */
- if ( name_types[j] == SID_NAME_DOM_GRP ||
- name_types[j] == SID_NAME_ALIAS )
- {
- BOOL ret;
-
- ret = add_sid_to_array_unique( ctx,
- &sid_mem[j],
- &new_groups,
- &new_groups_size );
- if ( !ret ) {
- status = NT_STATUS_NO_MEMORY;
- goto out;
- }
-
- continue;
- }
- }
-
- TALLOC_FREE( tmp_ctx );
- }
-
- *new_glist = new_groups;
- *n_new_glist = (uint32)new_groups_size;
-
- out:
- TALLOC_FREE( tmp_ctx );
-
- return status;
-}
-
-/***********************************************************************
- Fill in the group membership field of a NT group given by group_sid
-***********************************************************************/
+/* Fill in the group membership field of a NT group given by group_sid */
static BOOL fill_grent_mem(struct winbindd_domain *domain,
struct winbindd_cli_state *state,
@@ -475,24 +203,25 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
enum lsa_SidType group_name_type,
size_t *num_gr_mem, char **gr_mem, size_t *gr_mem_len)
{
+ DOM_SID *sid_mem = NULL;
uint32 num_names = 0;
+ uint32 *name_types = NULL;
unsigned int buf_len = 0, buf_ndx = 0, i;
char **names = NULL, *buf = NULL;
BOOL result = False;
TALLOC_CTX *mem_ctx;
+ NTSTATUS status;
uint32 group_rid;
- DOM_SID *glist = NULL;
- DOM_SID *new_glist = NULL;
- uint32 n_glist, n_new_glist;
- int max_depth = lp_winbind_expand_groups();
+ fstring sid_string;
if (!(mem_ctx = talloc_init("fill_grent_mem(%s)", domain->name)))
return False;
- DEBUG(10, ("group SID %s\n", sid_string_static(group_sid)));
+ /* Initialise group membership information */
+
+ DEBUG(10, ("group SID %s\n", sid_to_string(sid_string, group_sid)));
/* Initialize with no members */
-
*num_gr_mem = 0;
/* HACK ALERT!! This whole routine does not cope with group members
@@ -505,92 +234,176 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
gr_mem, gr_mem_len);
goto done;
}
-
- /* Verify name type */
-
+
if ( !((group_name_type==SID_NAME_DOM_GRP) ||
- ((group_name_type==SID_NAME_ALIAS) && domain->primary)) )
+ ((group_name_type==SID_NAME_ALIAS) && domain->primary)) )
{
DEBUG(1, ("SID %s in domain %s isn't a domain group (%d)\n",
- sid_string_static(group_sid), domain->name,
+ sid_to_string(sid_string, group_sid), domain->name,
group_name_type));
goto done;
}
- /* OPTIMIZATION / HACK. See comment in
- fill_grent_mem_domusers() */
+ /* OPTIMIZATION / HACK. */
+ /* If "enum users" is set to false, and the group being looked
+ up is the Domain Users SID: S-1-5-domain-513, then for the
+ list of members check if the querying user is in that group,
+ and if so only return that user as the gr_mem array.
+ We can change this to a different parameter than "enum users"
+ if neccessaey, or parameterize the group list we do this for. */
sid_peek_rid( group_sid, &group_rid );
if (!lp_winbind_enum_users() && group_rid == DOMAIN_GROUP_RID_USERS) {
- result = fill_grent_mem_domusers( mem_ctx, domain, state,
- group_sid, group_name_type,
- num_gr_mem, gr_mem,
- gr_mem_len );
- goto done;
- }
+ DOM_SID querying_user_sid;
+ DOM_SID *pquerying_user_sid = NULL;
+ uint32 num_groups = 0;
+ DOM_SID *user_sids = NULL;
+ BOOL u_in_group = False;
+
+ DEBUG(10,("fill_grent_mem: optimized lookup for sid %s domain %s\n",
+ sid_to_string(sid_string, group_sid), domain->name ));
+
+ if (state) {
+ uid_t ret_uid = (uid_t)-1;
+ if (sys_getpeereid(state->sock, &ret_uid)==0) {
+ /* We know who's asking - look up their SID if
+ it's one we've mapped before. */
+ status = idmap_uid_to_sid(&querying_user_sid, ret_uid);
+ if (NT_STATUS_IS_OK(status)) {
+ pquerying_user_sid = &querying_user_sid;
+ DEBUG(10,("fill_grent_mem: querying uid %u -> %s\n",
+ (unsigned int)ret_uid,
+ sid_to_string(sid_string, pquerying_user_sid) ));
+ }
+ }
+ }
- /* Real work goes here. Create a list of group names to
- expand startign with the initial one. Pass that to
- expand_groups() which returns a list of more group names
- to expand. Do this up to the max search depth. */
+ /* Only look up if it was a winbindd user in this domain. */
+ if (pquerying_user_sid &&
+ (sid_compare_domain(pquerying_user_sid, &domain->sid) == 0)) {
+
+ DEBUG(10,("fill_grent_mem: querying user = %s\n",
+ sid_to_string(sid_string, pquerying_user_sid) ));
+
+ status = domain->methods->lookup_usergroups(domain,
+ mem_ctx,
+ pquerying_user_sid,
+ &num_groups,
+ &user_sids);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(1, ("fill_grent_mem: lookup_usergroups failed "
+ "for sid %s in domain %s (error: %s)\n",
+ sid_to_string(sid_string, pquerying_user_sid),
+ domain->name,
+ nt_errstr(status)));
+ goto done;
+ }
- if ( (glist = TALLOC_ARRAY(mem_ctx, DOM_SID, 1 )) == NULL ) {
- result = False;
- DEBUG(0,("fill_grent_mem: talloc failure!\n"));
- goto done;
- }
- sid_copy( &glist[0], group_sid );
- n_glist = 1;
+ for (i = 0; i < num_groups; i++) {
+ if (sid_equal(group_sid, &user_sids[i])) {
+ /* User is in Domain Users, add their name
+ as the only group member. */
+ u_in_group = True;
+ break;
+ }
+ }
+ }
- for ( i=0; i<max_depth && glist; i++ ) {
- uint32 n_members = 0;
- char **members = NULL;
- NTSTATUS nt_status;
+ if (u_in_group) {
+ size_t len = 0;
+ char *domainname = NULL;
+ char *username = NULL;
+ fstring name;
+ enum lsa_SidType type;
- nt_status = expand_groups( mem_ctx, domain,
- glist, n_glist,
- &new_glist, &n_new_glist,
- &members, &n_members);
- if ( !NT_STATUS_IS_OK(nt_status) ) {
- result = False;
- goto done;
- }
-
- /* Add new group members to list */
+ DEBUG(10,("fill_grent_mem: sid %s in 'Domain Users' in domain %s\n",
+ sid_to_string(sid_string, pquerying_user_sid), domain->name ));
+
+ status = domain->methods->sid_to_name(domain, mem_ctx,
+ pquerying_user_sid,
+ &domainname,
+ &username,
+ &type);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(1, ("could not lookup username for user "
+ "sid %s in domain %s (error: %s)\n",
+ sid_to_string(sid_string, pquerying_user_sid),
+ domain->name,
+ nt_errstr(status)));
+ goto done;
+ }
+ fill_domain_username(name, domain->name, username, True);
+ len = strlen(name);
+ buf_len = len + 1;
+ if (!(buf = (char *)SMB_MALLOC(buf_len))) {
+ DEBUG(1, ("out of memory\n"));
+ goto done;
+ }
+ memcpy(buf, name, buf_len);
- nt_status = add_names_to_list( mem_ctx, &names, &num_names,
- members, n_members );
- if ( !NT_STATUS_IS_OK(nt_status) ) {
- result = False;
- goto done;
+ DEBUG(10,("fill_grent_mem: user %s in 'Domain Users' in domain %s\n",
+ name, domain->name ));
+
+ /* user is the only member */
+ *num_gr_mem = 1;
}
- TALLOC_FREE( members );
+ *gr_mem = buf;
+ *gr_mem_len = buf_len;
- /* If we have no more groups to expand, break out
- early */
-
- if ( !&new_glist )
- break;
+ DEBUG(10, ("num_mem = %u, len = %u, mem = %s\n", (unsigned int)*num_gr_mem,
+ (unsigned int)buf_len, *num_gr_mem ? buf : "NULL"));
+ result = True;
+ goto done;
+ }
- /* One more round */
- TALLOC_FREE(glist);
- glist = new_glist;
- n_glist = n_new_glist;
+ /* Lookup group members */
+ status = domain->methods->lookup_groupmem(domain, mem_ctx, group_sid, &num_names,
+ &sid_mem, &names, &name_types);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(1, ("could not lookup membership for group sid %s in domain %s (error: %s)\n",
+ sid_to_string(sid_string, group_sid), domain->name, nt_errstr(status)));
+ goto done;
}
- TALLOC_FREE( glist );
-
+
DEBUG(10, ("looked up %d names\n", num_names));
- again:
+ if (DEBUGLEVEL >= 10) {
+ for (i = 0; i < num_names; i++)
+ DEBUG(10, ("\t%20s %s %d\n", names[i],
+ sid_string_static(&sid_mem[i]),
+ name_types[i]));
+ }
+
/* Add members to list */
+ again:
+
for (i = 0; i < num_names; i++) {
+ char *the_name;
+ fstring name;
int len;
- DEBUG(10, ("processing name %s\n", names[i]));
+ the_name = names[i];
+
+ DEBUG(10, ("processing name %s\n", the_name));
- len = strlen(names[i]);
+ /* FIXME: need to cope with groups within groups. These
+ occur in Universal groups on a Windows 2000 native mode
+ server. */
+
+ /* make sure to allow machine accounts */
+
+ if (name_types[i] != SID_NAME_USER && name_types[i] != SID_NAME_COMPUTER) {
+ DEBUG(3, ("name %s isn't a domain user (%s)\n", the_name, sid_type_lookup(name_types[i])));
+ continue;
+ }
+
+ /* Append domain name */
+
+ fill_domain_username(name, domain->name, the_name, True);
+
+ len = strlen(name);
/* Add to list or calculate buffer length */
@@ -599,8 +412,8 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
(*num_gr_mem)++;
DEBUG(10, ("buf_len + %d = %d\n", len + 1, buf_len));
} else {
- DEBUG(10, ("appending %s at ndx %d\n", names[i], buf_ndx));
- safe_strcpy(&buf[buf_ndx], names[i], len);
+ DEBUG(10, ("appending %s at ndx %d\n", name, buf_ndx));
+ safe_strcpy(&buf[buf_ndx], name, len);
buf_ndx += len;
buf[buf_ndx] = ',';
buf_ndx++;
@@ -619,8 +432,6 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
goto again;
}
- /* Now we're done */
-
if (buf && buf_ndx > 0) {
buf[buf_ndx - 1] = '\0';
}
@@ -641,36 +452,21 @@ done:
return result;
}
-static void winbindd_getgrsid( struct winbindd_cli_state *state, DOM_SID group_sid );
-
-static void getgrnam_recv( void *private_data, BOOL success, const DOM_SID *sid,
- enum lsa_SidType type )
-{
- struct winbindd_cli_state *state = (struct winbindd_cli_state*)private_data;
-
- if (!success) {
- DEBUG(5,("getgrnam_recv: lookupname failed!\n"));
- request_error(state);
- return;
- }
-
- if ( (type != SID_NAME_DOM_GRP) && (type != SID_NAME_ALIAS) ) {
- DEBUG(5,("getgrnam_recv: not a group!\n"));
- request_error(state);
- return;
- }
-
- winbindd_getgrsid( state, *sid );
-}
-
-
/* Return a group structure from a group name */
void winbindd_getgrnam(struct winbindd_cli_state *state)
{
+ DOM_SID group_sid, tmp_sid;
+ uint32 grp_rid;
struct winbindd_domain *domain;
+ enum lsa_SidType name_type;
fstring name_domain, name_group;
- char *tmp;
+ char *tmp, *gr_mem;
+ size_t gr_mem_len;
+ size_t num_gr_mem;
+ gid_t gid;
+ union unid_t id;
+ NTSTATUS status;
/* Ensure null termination */
state->request.data.groupname[sizeof(state->request.data.groupname)-1]='\0';
@@ -717,137 +513,152 @@ void winbindd_getgrnam(struct winbindd_cli_state *state)
ws_name_replace( name_group, WB_REPLACE_CHAR );
- winbindd_lookupname_async( state->mem_ctx, domain->name, name_group,
- getgrnam_recv, WINBINDD_GETGRNAM, state );
-}
-
-struct getgrsid_state {
- struct winbindd_cli_state *state;
- struct winbindd_domain *domain;
- char *group_name;
- enum lsa_SidType group_type;
- uid_t gid;
- DOM_SID group_sid;
-};
+ if (!winbindd_lookup_sid_by_name(state->mem_ctx, domain, domain->name,
+ name_group, &group_sid, &name_type)) {
+ DEBUG(1, ("group %s in domain %s does not exist\n",
+ name_group, name_domain));
+ request_error(state);
+ return;
+ }
-static void getgrsid_sid2gid_recv(void *private_data, BOOL success, gid_t gid)
+ if ( !((name_type==SID_NAME_DOM_GRP) ||
+ ((name_type==SID_NAME_ALIAS) && domain->primary) ||
+ ((name_type==SID_NAME_ALIAS) && domain->internal) ||
+ ((name_type==SID_NAME_WKN_GRP) && domain->internal)) )
{
- struct getgrsid_state *s =
- (struct getgrsid_state *)private_data;
- struct winbindd_domain *domain;
- size_t gr_mem_len;
- size_t num_gr_mem;
- char *gr_mem;
- fstring dom_name, group_name;
-
- if (!success) {
- DEBUG(5,("getgrsid_sid2gid_recv: sid2gid failed!\n"));
- request_error(s->state);
+ DEBUG(1, ("name '%s' is not a local, domain or builtin "
+ "group: %d\n", name_group, name_type));
+ request_error(state);
return;
}
- s->gid = gid;
+ /* Make sure that the group SID is within the domain of the
+ original domain */
- if ( !parse_domain_user( s->group_name, dom_name, group_name ) ) {
- DEBUG(5,("getgrsid_sid2gid_recv: parse_domain_user() failed!\n"));
- request_error(s->state);
+ sid_copy( &tmp_sid, &group_sid );
+ sid_split_rid( &tmp_sid, &grp_rid );
+ if ( !sid_equal( &tmp_sid, &domain->sid ) ) {
+ DEBUG(3,("winbindd_getgrnam: group %s resolves to a SID in the wrong domain [%s]\n",
+ state->request.data.groupname, sid_string_static(&group_sid)));
+ request_error(state);
return;
}
- /* Fill in group structure */
- if ( (domain = find_domain_from_name_noinit(dom_name)) == NULL ) {
- DEBUG(1,("Can't find domain from name (%s)\n", dom_name));
- request_error(s->state);
- return;
- }
+ /* Try to get the GID */
- if (!fill_grent(&s->state->response.data.gr, dom_name, group_name, gid) ||
- !fill_grent_mem(domain, s->state, &s->group_sid, s->group_type,
- &num_gr_mem, &gr_mem, &gr_mem_len))
- {
- request_error(s->state);
- return;
+ status = idmap_sid_to_gid(&group_sid, &gid);
+
+ if (NT_STATUS_IS_OK(status)) {
+ goto got_gid;
}
- s->state->response.data.gr.num_gr_mem = (uint32)num_gr_mem;
+ /* Maybe it's one of our aliases in passdb */
- /* Group membership lives at start of extra data */
+ if (pdb_sid_to_id(&group_sid, &id, &name_type) &&
+ ((name_type == SID_NAME_ALIAS) ||
+ (name_type == SID_NAME_WKN_GRP))) {
+ gid = id.gid;
+ goto got_gid;
+ }
- s->state->response.data.gr.gr_mem_ofs = 0;
+ DEBUG(1, ("error converting unix gid to sid\n"));
+ request_error(state);
+ return;
- s->state->response.length += gr_mem_len;
- s->state->response.extra_data.data = gr_mem;
+ got_gid:
- request_ok(s->state);
+ if (!fill_grent(&state->response.data.gr, name_domain,
+ name_group, gid) ||
+ !fill_grent_mem(domain, state, &group_sid, name_type,
+ &num_gr_mem,
+ &gr_mem, &gr_mem_len)) {
+ request_error(state);
+ return;
}
-static void getgrsid_lookupsid_recv( void *private_data, BOOL success,
- const char *dom_name, const char *name,
- enum lsa_SidType name_type )
-{
- struct getgrsid_state *s = (struct getgrsid_state *)private_data;
+ state->response.data.gr.num_gr_mem = (uint32)num_gr_mem;
- if (!success) {
- DEBUG(5,("getgrsid_lookupsid_recv: lookupsid failed!\n"));
- request_error(s->state);
- return;
- }
+ /* Group membership lives at start of extra data */
- /* either it's a domain group, a domain local group, or a
- local group in an internal domain */
+ state->response.data.gr.gr_mem_ofs = 0;
- if ( !( (name_type==SID_NAME_DOM_GRP) ||
- ((name_type==SID_NAME_ALIAS) &&
- (s->domain->primary || s->domain->internal)) ) )
- {
- DEBUG(1, ("name '%s\\%s' is not a local or domain group: %d\n",
- dom_name, name, name_type));
- request_error(s->state);
- return;
+ state->response.length += gr_mem_len;
+ state->response.extra_data.data = gr_mem;
+ request_ok(state);
}
- if ( (s->group_name = talloc_asprintf( s->state->mem_ctx,
- "%s\\%s",
- dom_name, name )) == NULL )
+static void getgrgid_got_sid(struct winbindd_cli_state *state, DOM_SID group_sid)
{
- DEBUG(1, ("getgrsid_lookupsid_recv: talloc_asprintf() Failed!\n"));
- request_error(s->state);
+ struct winbindd_domain *domain;
+ enum lsa_SidType name_type;
+ char *dom_name;
+ char *group_name;
+ size_t gr_mem_len;
+ size_t num_gr_mem;
+ char *gr_mem;
+
+ /* Get name from sid */
+
+ if (!winbindd_lookup_name_by_sid(state->mem_ctx, &group_sid, &dom_name,
+ &group_name, &name_type)) {
+ DEBUG(1, ("could not lookup sid\n"));
+ request_error(state);
+ TALLOC_FREE(group_name);
+ TALLOC_FREE(dom_name);
return;
}
- s->group_type = name_type;
+ /* Fill in group structure */
+
+ domain = find_domain_from_sid_noinit(&group_sid);
- winbindd_sid2gid_async(s->state->mem_ctx, &s->group_sid,
- getgrsid_sid2gid_recv, s);
+ if (!domain) {
+ DEBUG(1,("Can't find domain from sid\n"));
+ request_error(state);
+ TALLOC_FREE(group_name);
+ TALLOC_FREE(dom_name);
+ return;
}
-static void winbindd_getgrsid( struct winbindd_cli_state *state, const DOM_SID group_sid )
+ if ( !((name_type==SID_NAME_DOM_GRP) ||
+ ((name_type==SID_NAME_ALIAS) && domain->primary) ||
+ ((name_type==SID_NAME_ALIAS) && domain->internal)) )
{
- struct getgrsid_state *s;
-
- if ( (s = TALLOC_ZERO_P(state->mem_ctx, struct getgrsid_state)) == NULL ) {
- DEBUG(0, ("talloc failed\n"));
+ DEBUG(1, ("name '%s' is not a local or domain group: %d\n",
+ group_name, name_type));
request_error(state);
+ TALLOC_FREE(group_name);
+ TALLOC_FREE(dom_name);
return;
}
- s->state = state;
-
- if ( (s->domain = find_domain_from_sid_noinit(&group_sid)) == NULL ) {
- DEBUG(3, ("Could not find domain for sid %s\n",
- sid_string_static(&group_sid)));
+ if (!fill_grent(&state->response.data.gr, dom_name, group_name,
+ state->request.data.gid) ||
+ !fill_grent_mem(domain, state, &group_sid, name_type,
+ &num_gr_mem,
+ &gr_mem, &gr_mem_len)) {
request_error(state);
+ TALLOC_FREE(group_name);
+ TALLOC_FREE(dom_name);
return;
}
- sid_copy(&s->group_sid, &group_sid);
+ state->response.data.gr.num_gr_mem = (uint32)num_gr_mem;
- winbindd_lookupsid_async( s->state->mem_ctx, &group_sid,
- getgrsid_lookupsid_recv, s );
-}
+ /* Group membership lives at start of extra data */
+
+ state->response.data.gr.gr_mem_ofs = 0;
+
+ state->response.length += gr_mem_len;
+ state->response.extra_data.data = gr_mem;
+ TALLOC_FREE(group_name);
+ TALLOC_FREE(dom_name);
+
+ request_ok(state);
+}
static void getgrgid_recv(void *private_data, BOOL success, const char *sid)
{
@@ -860,7 +671,7 @@ static void getgrgid_recv(void *private_data, BOOL success, const char *sid)
(unsigned long)(state->request.data.gid), sid));
string_to_sid(&group_sid, sid);
- winbindd_getgrsid(state, group_sid);
+ getgrgid_got_sid(state, group_sid);
return;
}
@@ -871,7 +682,7 @@ static void getgrgid_recv(void *private_data, BOOL success, const char *sid)
/* Hey, got an alias */
DEBUG(10,("getgrgid_recv: we have an alias with gid %lu and sid %s\n",
(unsigned long)(state->request.data.gid), sid));
- winbindd_getgrsid(state, group_sid);
+ getgrgid_got_sid(state, group_sid);
return;
}
@@ -1513,7 +1324,7 @@ void winbindd_getgroups(struct winbindd_cli_state *state)
/* Get rid and name type from name. The following costs 1 packet */
winbindd_lookupname_async(state->mem_ctx, s->domname, s->username,
- getgroups_usersid_recv, WINBINDD_GETGROUPS, s);
+ getgroups_usersid_recv, s);
}
static void getgroups_usersid_recv(void *private_data, BOOL success,
diff --git a/source/nsswitch/winbindd_misc.c b/source/nsswitch/winbindd_misc.c
index acb7dbf8a97..1aa3c7c398a 100644
--- a/source/nsswitch/winbindd_misc.c
+++ b/source/nsswitch/winbindd_misc.c
@@ -100,41 +100,10 @@ enum winbindd_result winbindd_dual_check_machine_acct(struct winbindd_domain *do
void winbindd_list_trusted_domains(struct winbindd_cli_state *state)
{
- struct winbindd_domain *d = NULL;
- int extra_data_len = 0;
- char *extra_data = NULL;
-
DEBUG(3, ("[%5lu]: list trusted domains\n",
(unsigned long)state->pid));
- for ( d=domain_list(); d; d=d->next ) {
- if ( !extra_data ) {
- extra_data = talloc_asprintf(state->mem_ctx, "%s\\%s\\%s",
- d->name,
- d->alt_name ? d->alt_name : d->name,
- sid_string_static(&d->sid));
- } else {
- extra_data = talloc_asprintf(state->mem_ctx, "%s\n%s\\%s\\%s",
- extra_data,
- d->name,
- d->alt_name ? d->alt_name : d->name,
- sid_string_static(&d->sid));
- }
- }
-
- extra_data_len = 0;
- if (extra_data != NULL) {
- extra_data_len = strlen(extra_data);
- }
-
- if (extra_data_len > 0) {
- state->response.extra_data.data = SMB_STRDUP(extra_data);
- state->response.length += extra_data_len+1;
- }
-
- TALLOC_FREE( extra_data );
-
- request_ok(state);
+ sendto_domain(state, find_our_domain());
}
enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain *domain,
diff --git a/source/nsswitch/winbindd_nss.h b/source/nsswitch/winbindd_nss.h
index 4ad1aa196c4..b6c262e4667 100644
--- a/source/nsswitch/winbindd_nss.h
+++ b/source/nsswitch/winbindd_nss.h
@@ -28,14 +28,7 @@
#define _WINBINDD_NTDOM_H
#define WINBINDD_SOCKET_NAME "pipe" /* Name of PF_UNIX socket */
-
-/* Let the build environment override the public winbindd socket location. This
- * is needed for launchd support -- jpeach.
- */
-#ifndef WINBINDD_SOCKET_DIR
#define WINBINDD_SOCKET_DIR "/tmp/.winbindd" /* Name of PF_UNIX dir */
-#endif
-
#define WINBINDD_PRIV_SOCKET_SUBDIR "winbindd_privileged" /* name of subdirectory of lp_lockdir() to hold the 'privileged' pipe */
#define WINBINDD_DOMAIN_ENV "WINBINDD_DOMAIN" /* Environment variables */
#define WINBINDD_DONT_ENV "_NO_WINBINDD"
@@ -195,25 +188,25 @@ typedef struct winbindd_gr {
} WINBINDD_GR;
-#define WBFLAG_PAM_INFO3_NDR 0x00000001
-#define WBFLAG_PAM_INFO3_TEXT 0x00000002
-#define WBFLAG_PAM_USER_SESSION_KEY 0x00000004
-#define WBFLAG_PAM_LMKEY 0x00000008
-#define WBFLAG_PAM_CONTACT_TRUSTDOM 0x00000010
-#define WBFLAG_QUERY_ONLY 0x00000020
-#define WBFLAG_PAM_UNIX_NAME 0x00000080
-#define WBFLAG_PAM_AFS_TOKEN 0x00000100
-#define WBFLAG_PAM_NT_STATUS_SQUASH 0x00000200
+#define WBFLAG_PAM_INFO3_NDR 0x0001
+#define WBFLAG_PAM_INFO3_TEXT 0x0002
+#define WBFLAG_PAM_USER_SESSION_KEY 0x0004
+#define WBFLAG_PAM_LMKEY 0x0008
+#define WBFLAG_PAM_CONTACT_TRUSTDOM 0x0010
+#define WBFLAG_QUERY_ONLY 0x0020
+#define WBFLAG_PAM_UNIX_NAME 0x0080
+#define WBFLAG_PAM_AFS_TOKEN 0x0100
+#define WBFLAG_PAM_NT_STATUS_SQUASH 0x0200
/* This is a flag that can only be sent from parent to child */
-#define WBFLAG_IS_PRIVILEGED 0x00000400
+#define WBFLAG_IS_PRIVILEGED 0x0400
/* Flag to say this is a winbindd internal send - don't recurse. */
-#define WBFLAG_RECURSE 0x00000800
+#define WBFLAG_RECURSE 0x0800
-#define WBFLAG_PAM_KRB5 0x00001000
-#define WBFLAG_PAM_FALLBACK_AFTER_KRB5 0x00002000
-#define WBFLAG_PAM_CACHED_LOGIN 0x00004000
-#define WBFLAG_PAM_GET_PWD_POLICY 0x00008000 /* not used */
+#define WBFLAG_PAM_KRB5 0x1000
+#define WBFLAG_PAM_FALLBACK_AFTER_KRB5 0x2000
+#define WBFLAG_PAM_CACHED_LOGIN 0x4000
+#define WBFLAG_PAM_GET_PWD_POLICY 0x8000 /* not used */
#define WINBINDD_MAX_EXTRA_DATA (128*1024)
@@ -230,8 +223,6 @@ typedef struct winbindd_gr {
struct winbindd_request {
uint32 length;
enum winbindd_cmd cmd; /* Winbindd command to execute */
- enum winbindd_cmd original_cmd; /* Original Winbindd command
- issued to parent process */
pid_t pid; /* pid of calling process */
uint32 flags; /* flags relavant to a given request */
fstring domain_name; /* name of domain for which the request applies */
diff --git a/source/nsswitch/winbindd_pam.c b/source/nsswitch/winbindd_pam.c
index 9c0b642b941..589f4839e0b 100644
--- a/source/nsswitch/winbindd_pam.c
+++ b/source/nsswitch/winbindd_pam.c
@@ -127,12 +127,13 @@ static NTSTATUS check_info3_in_group(TALLOC_CTX *mem_ctx,
{
DOM_SID *require_membership_of_sid;
size_t num_require_membership_of_sid;
- fstring req_sid;
- const char *p;
- DOM_SID sid;
- size_t i;
- struct nt_user_token *token;
- NTSTATUS status;
+ DOM_SID *all_sids;
+ size_t num_all_sids = (2 + info3->num_groups2 + info3->num_other_sids);
+ size_t i, j = 0, k;
+ size_t group_sid_length;
+ const char *search_location;
+ char *single_group_sid;
+ const char *comma;
/* Parse the 'required group' SID */
@@ -141,59 +142,88 @@ static NTSTATUS check_info3_in_group(TALLOC_CTX *mem_ctx,
return NT_STATUS_OK;
}
- if (!(token = TALLOC_ZERO_P(mem_ctx, struct nt_user_token))) {
- DEBUG(0, ("talloc failed\n"));
- return NT_STATUS_NO_MEMORY;
+ num_require_membership_of_sid = 1;
+ group_sid_length = strlen(group_sid);
+ for (i = 0; i < group_sid_length; i++) {
+ if (',' == group_sid[i]) {
+ num_require_membership_of_sid++;
+ }
}
- num_require_membership_of_sid = 0;
- require_membership_of_sid = NULL;
+ require_membership_of_sid = TALLOC_ARRAY(mem_ctx, DOM_SID, num_require_membership_of_sid);
+ if (!require_membership_of_sid)
+ return NT_STATUS_NO_MEMORY;
- p = group_sid;
+ i = 0;
+ search_location = group_sid;
- while (next_token(&p, req_sid, ",", sizeof(req_sid))) {
- if (!string_to_sid(&sid, req_sid)) {
- DEBUG(0, ("check_info3_in_group: could not parse %s "
- "as a SID!", req_sid));
- return NT_STATUS_INVALID_PARAMETER;
- }
+ if (num_require_membership_of_sid > 1) {
- if (!add_sid_to_array(mem_ctx, &sid,
- &require_membership_of_sid,
- &num_require_membership_of_sid)) {
- DEBUG(0, ("add_sid_to_array failed\n"));
+ /* Allocate the maximum possible size */
+ single_group_sid = TALLOC(mem_ctx, group_sid_length);
+ if (!single_group_sid)
return NT_STATUS_NO_MEMORY;
+
+ while ( (comma = strstr(search_location, ",")) != NULL ) {
+
+ strncpy(single_group_sid, search_location, comma - search_location);
+ single_group_sid[comma - search_location] = 0;
+
+ if (!string_to_sid(&require_membership_of_sid[i++], single_group_sid)) {
+ DEBUG(0, ("check_info3_in_group: could not parse %s as a SID!",
+ single_group_sid));
+
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
+ search_location = comma + 1;
}
}
- if (!sid_compose(&sid, &(info3->dom_sid.sid),
- info3->user_rid)
- || !add_sid_to_array(mem_ctx, &sid,
- &token->user_sids, &token->num_sids)) {
- DEBUG(3,("could not add user SID from rid 0x%x\n",
+ if (!string_to_sid(&require_membership_of_sid[i++], search_location)) {
+ DEBUG(0, ("check_info3_in_group: could not parse %s as a SID!",
+ search_location));
+
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
+ all_sids = TALLOC_ARRAY(mem_ctx, DOM_SID, num_all_sids);
+ if (!all_sids)
+ return NT_STATUS_NO_MEMORY;
+
+ /* and create (by appending rids) the 'domain' sids */
+
+ sid_copy(&all_sids[0], &(info3->dom_sid.sid));
+
+ if (!sid_append_rid(&all_sids[0], info3->user_rid)) {
+ DEBUG(3,("could not append user's primary RID 0x%x\n",
info3->user_rid));
+
return NT_STATUS_INVALID_PARAMETER;
}
+ j++;
- if (!sid_compose(&sid, &(info3->dom_sid.sid),
- info3->group_rid)
- || !add_sid_to_array(mem_ctx, &sid,
- &token->user_sids, &token->num_sids)) {
+ sid_copy(&all_sids[1], &(info3->dom_sid.sid));
+
+ if (!sid_append_rid(&all_sids[1], info3->group_rid)) {
DEBUG(3,("could not append additional group rid 0x%x\n",
info3->group_rid));
return NT_STATUS_INVALID_PARAMETER;
}
+ j++;
for (i = 0; i < info3->num_groups2; i++) {
- if (!sid_compose(&sid, &(info3->dom_sid.sid),
- info3->gids[i].g_rid)
- || !add_sid_to_array(mem_ctx, &sid,
- &token->user_sids, &token->num_sids)) {
+
+ sid_copy(&all_sids[j], &(info3->dom_sid.sid));
+
+ if (!sid_append_rid(&all_sids[j], info3->gids[i].g_rid)) {
DEBUG(3,("could not append additional group rid 0x%x\n",
- info3->gids[i].g_rid));
+ info3->gids[i].g_rid));
+
return NT_STATUS_INVALID_PARAMETER;
}
+ j++;
}
/* Copy 'other' sids. We need to do sid filtering here to
@@ -203,32 +233,21 @@ static NTSTATUS check_info3_in_group(TALLOC_CTX *mem_ctx,
*/
for (i = 0; i < info3->num_other_sids; i++) {
- if (!add_sid_to_array(mem_ctx, &info3->other_sids[i].sid,
- &token->user_sids, &token->num_sids)) {
- DEBUG(3, ("could not add SID to array: %s\n",
- sid_string_static(&info3->other_sids[i].sid)));
- return NT_STATUS_NO_MEMORY;
- }
- }
-
- if (!NT_STATUS_IS_OK(status = add_aliases(get_global_sam_sid(),
- token))
- || !NT_STATUS_IS_OK(status = add_aliases(&global_sid_Builtin,
- token))) {
- DEBUG(3, ("could not add aliases: %s\n",
- nt_errstr(status)));
- return status;
- }
-
- debug_nt_user_token(DBGC_CLASS, 10, token);
-
- for (i=0; i<num_require_membership_of_sid; i++) {
- DEBUG(10, ("Checking SID %s\n", sid_string_static(
- &require_membership_of_sid[i])));
- if (nt_token_check_sid(&require_membership_of_sid[i],
- token)) {
- DEBUG(10, ("Access ok\n"));
- return NT_STATUS_OK;
+ sid_copy(&all_sids[info3->num_groups2 + i + 2],
+ &info3->other_sids[i].sid);
+ j++;
+ }
+
+ for (i = 0; i < j; i++) {
+ fstring sid1, sid2;
+ DEBUG(10, ("User has SID: %s\n",
+ sid_to_string(sid1, &all_sids[i])));
+ for (k = 0; k < num_require_membership_of_sid; k++) {
+ if (sid_equal(&require_membership_of_sid[k], &all_sids[i])) {
+ DEBUG(10, ("SID %s matches %s - user permitted to authenticate!\n",
+ sid_to_string(sid1, &require_membership_of_sid[k]), sid_to_string(sid2, &all_sids[i])));
+ return NT_STATUS_OK;
+ }
}
}
@@ -293,12 +312,6 @@ static NTSTATUS fillup_password_policy(struct winbindd_domain *domain,
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
SAM_UNK_INFO_1 password_policy;
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(5,("fillup_password_policy: No inbound trust to "
- "contact domain %s\n", domain->name));
- return NT_STATUS_NOT_SUPPORTED;
- }
-
methods = domain->methods;
status = methods->password_policy(domain, state->mem_ctx, &password_policy);
@@ -551,12 +564,12 @@ static NTSTATUS winbindd_raw_kerberos_login(struct winbindd_domain *domain,
cc,
True,
True,
- WINBINDD_PAM_AUTH_KRB5_RENEW_TIME,
- &result);
+ WINBINDD_PAM_AUTH_KRB5_RENEW_TIME);
if (krb5_ret) {
DEBUG(1,("winbindd_raw_kerberos_login: kinit failed for '%s' with: %s (%d)\n",
principal_s, error_message(krb5_ret), krb5_ret));
+ result = krb5_to_nt_status(krb5_ret);
goto failed;
}
@@ -615,7 +628,7 @@ static NTSTATUS winbindd_raw_kerberos_login(struct winbindd_domain *domain,
&client_princ_out,
&pac_data,
&ap_rep,
- &session_key, False);
+ &session_key);
if (!NT_STATUS_IS_OK(result)) {
DEBUG(0,("winbindd_raw_kerberos_login: ads_verify_ticket failed: %s\n",
nt_errstr(result)));
@@ -784,9 +797,6 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain,
NET_USER_INFO_3 *my_info3;
time_t kickoff_time, must_change_time;
BOOL password_good = False;
-#ifdef HAVE_KRB5
- struct winbindd_tdc_domain *tdc_domain = NULL;
-#endif
*info3 = NULL;
@@ -829,10 +839,10 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain,
E_md4hash(state->request.data.auth.pass, new_nt_pass);
#if DEBUG_PASSWORD
- dump_data(100, new_nt_pass, NT_HASH_LEN);
- dump_data(100, cached_nt_pass, NT_HASH_LEN);
+ dump_data(100, (const char *)new_nt_pass, NT_HASH_LEN);
+ dump_data(100, (const char *)cached_nt_pass, NT_HASH_LEN);
if (cached_salt) {
- dump_data(100, cached_salt, NT_HASH_LEN);
+ dump_data(100, (const char *)cached_salt, NT_HASH_LEN);
}
#endif
@@ -897,9 +907,9 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain,
}
#ifdef HAVE_KRB5
- if ((state->request.flags & WBFLAG_PAM_KRB5) &&
- ((tdc_domain = wcache_tdc_fetch_domain(state->mem_ctx, name_domain)) != NULL) &&
- (tdc_domain->trust_type & DS_DOMAIN_TRUST_TYPE_UPLEVEL)) {
+ /* FIXME: what else points out that the remote domain is AD ? */
+ if (!strequal(domain->name, domain->alt_name) &&
+ (state->request.flags & WBFLAG_PAM_KRB5)) {
uid_t uid = -1;
const char *cc = NULL;
@@ -1166,7 +1176,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain,
local_lm_response,
sizeof(local_lm_response));
} else {
- lm_resp = data_blob_null;
+ lm_resp = data_blob(NULL, 0);
}
SMBNTencrypt(state->request.data.auth.pass,
chal,
@@ -1200,17 +1210,6 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain,
/* check authentication loop */
do {
- NTSTATUS (*logon_fn)(struct rpc_pipe_client
- *cli, TALLOC_CTX *mem_ctx,
- uint32 logon_parameters,
- const char *server,
- const char *username,
- const char *domain,
- const char *workstation,
- const uint8 chal[8],
- DATA_BLOB lm_response,
- DATA_BLOB nt_response,
- NET_USER_INFO_3 *info3);
ZERO_STRUCTP(my_info3);
retry = False;
@@ -1222,11 +1221,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain,
goto done;
}
- logon_fn = contact_domain->can_do_samlogon_ex
- ? rpccli_netlogon_sam_network_logon_ex
- : rpccli_netlogon_sam_network_logon;
-
- result = logon_fn(netlogon_pipe,
+ result = rpccli_netlogon_sam_network_logon(netlogon_pipe,
state->mem_ctx,
0,
contact_domain->dcname, /* server name */
@@ -1237,16 +1232,6 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain,
lm_resp,
nt_resp,
my_info3);
-
- if ((NT_STATUS_V(result) == DCERPC_FAULT_OP_RNG_ERROR)
- && contact_domain->can_do_samlogon_ex) {
- DEBUG(3, ("Got a DC that can not do NetSamLogonEx, "
- "retrying with NetSamLogon\n"));
- contact_domain->can_do_samlogon_ex = False;
- retry = True;
- continue;
- }
-
attempts += 1;
/* We have to try a second time as cm_connect_netlogon
@@ -1343,7 +1328,6 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain,
struct winbindd_cli_state *state)
{
NTSTATUS result = NT_STATUS_LOGON_FAILURE;
- NTSTATUS krb5_result = NT_STATUS_OK;
fstring name_domain, name_user;
NET_USER_INFO_3 *info3 = NULL;
@@ -1383,9 +1367,6 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain,
if (domain->online && (state->request.flags & WBFLAG_PAM_KRB5)) {
result = winbindd_dual_pam_auth_kerberos(domain, state, &info3);
- /* save for later */
- krb5_result = result;
-
if (NT_STATUS_IS_OK(result)) {
DEBUG(10,("winbindd_dual_pam_auth_kerberos succeeded\n"));
@@ -1398,8 +1379,7 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain,
NT_STATUS_EQUAL(result, NT_STATUS_IO_TIMEOUT) ||
NT_STATUS_EQUAL(result, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND)) {
DEBUG(10,("winbindd_dual_pam_auth_kerberos setting domain to offline\n"));
- set_domain_offline( domain );
- goto cached_logon;
+ domain->online = False;
}
/* there are quite some NT_STATUS errors where there is no
@@ -1434,29 +1414,15 @@ sam_logon:
if (NT_STATUS_IS_OK(result)) {
DEBUG(10,("winbindd_dual_pam_auth_samlogon succeeded\n"));
- /* add the Krb5 err if we have one */
- if ( NT_STATUS_EQUAL(krb5_result, NT_STATUS_TIME_DIFFERENCE_AT_DC ) ) {
- info3->user_flgs |= LOGON_KRB5_FAIL_CLOCK_SKEW;
- }
goto process_result;
- }
-
- DEBUG(10,("winbindd_dual_pam_auth_samlogon failed: %s\n",
- nt_errstr(result)));
-
- if (NT_STATUS_EQUAL(result, NT_STATUS_NO_LOGON_SERVERS) ||
- NT_STATUS_EQUAL(result, NT_STATUS_IO_TIMEOUT) ||
- NT_STATUS_EQUAL(result, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND))
- {
- DEBUG(10,("winbindd_dual_pam_auth_samlogon setting domain to offline\n"));
- set_domain_offline( domain );
- goto cached_logon;
- }
-
+ } else {
+ DEBUG(10,("winbindd_dual_pam_auth_samlogon failed: %s\n", nt_errstr(result)));
if (domain->online) {
/* We're still online - fail. */
goto done;
}
+ /* Else drop through and see if we can check offline.... */
+ }
}
cached_logon:
@@ -1491,16 +1457,9 @@ process_result:
netsamlogon_cache_store(name_user, info3);
wcache_invalidate_samlogon(find_domain_from_name(name_domain), info3);
- /* save name_to_sid info as early as possible (only if
- this is our primary domain so we don't invalidate
- the cache entry by storing the seq_num for the wrong
- domain). */
- if ( domain->primary ) {
- sid_compose(&user_sid, &info3->dom_sid.sid,
- info3->user_rid);
- cache_name2sid(domain, name_domain, name_user,
- SID_NAME_USER, &user_sid);
- }
+ /* save name_to_sid info as early as possible */
+ sid_compose(&user_sid, &info3->dom_sid.sid, info3->user_rid);
+ cache_name2sid(domain, name_domain, name_user, SID_NAME_USER, &user_sid);
/* Check if the user is in the right group */
@@ -1560,15 +1519,11 @@ process_result:
result = fillup_password_policy(domain, state);
- if (!NT_STATUS_IS_OK(result)
- && !NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED) )
- {
+ if (!NT_STATUS_IS_OK(result)) {
DEBUG(10,("Failed to get password policies: %s\n", nt_errstr(result)));
goto done;
}
- result = NT_STATUS_OK;
-
if (state->request.flags & WBFLAG_PAM_UNIX_NAME) {
/* We've been asked to return the unix username, per
'winbind use default domain' settings and the like */
@@ -1832,18 +1787,6 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
}
do {
- NTSTATUS (*logon_fn)(struct rpc_pipe_client
- *cli, TALLOC_CTX *mem_ctx,
- uint32 logon_parameters,
- const char *server,
- const char *username,
- const char *domain,
- const char *workstation,
- const uint8 chal[8],
- DATA_BLOB lm_response,
- DATA_BLOB nt_response,
- NET_USER_INFO_3 *info3);
-
ZERO_STRUCT(info3);
retry = False;
@@ -1856,11 +1799,7 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
goto done;
}
- logon_fn = contact_domain->can_do_samlogon_ex
- ? rpccli_netlogon_sam_network_logon_ex
- : rpccli_netlogon_sam_network_logon;
-
- result = logon_fn(netlogon_pipe,
+ result = rpccli_netlogon_sam_network_logon(netlogon_pipe,
state->mem_ctx,
state->request.data.auth_crap.logon_parameters,
contact_domain->dcname,
@@ -1873,15 +1812,6 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
nt_resp,
&info3);
- if ((NT_STATUS_V(result) == DCERPC_FAULT_OP_RNG_ERROR)
- && contact_domain->can_do_samlogon_ex) {
- DEBUG(3, ("Got a DC that can not do NetSamLogonEx, "
- "retrying with NetSamLogon\n"));
- contact_domain->can_do_samlogon_ex = False;
- retry = True;
- continue;
- }
-
attempts += 1;
/* We have to try a second time as cm_connect_netlogon
@@ -1918,8 +1848,7 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
if (!NT_STATUS_IS_OK(result = check_info3_in_group(state->mem_ctx, &info3,
state->request.data.auth_crap.require_membership_of_sid))) {
- DEBUG(3, ("User %s is not in the required group (%s), so "
- "crap authentication is rejected\n",
+ DEBUG(3, ("User %s is not in the required group (%s), so plaintext authentication is rejected\n",
state->request.data.auth_crap.user,
state->request.data.auth_crap.require_membership_of_sid));
goto done;
@@ -2010,8 +1939,6 @@ void winbindd_pam_chauthtok(struct winbindd_cli_state *state)
/* Setup crap */
- ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
-
if (!canonicalize_username(state->request.data.chauthtok.user, domain, user)) {
set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
DEBUG(5, ("winbindd_pam_chauthtok: canonicalize_username %s failed with %s"
diff --git a/source/nsswitch/winbindd_passdb.c b/source/nsswitch/winbindd_passdb.c
index 8b8c4c66c62..56166be7d31 100644
--- a/source/nsswitch/winbindd_passdb.c
+++ b/source/nsswitch/winbindd_passdb.c
@@ -93,28 +93,16 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
/* convert a single name to a sid in a domain */
static NTSTATUS name_to_sid(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- enum winbindd_cmd original_cmd,
const char *domain_name,
const char *name,
DOM_SID *sid,
enum lsa_SidType *type)
{
- uint32 flags = LOOKUP_NAME_ALL;
-
- switch ( original_cmd ) {
- case WINBINDD_LOOKUPNAME:
- /* This call is ok */
- break;
- default:
- /* Avoid any NSS calls in the lookup_name by default */
- flags |= LOOKUP_NAME_EXPLICIT;
- DEBUG(10,("winbindd_passdb: limiting name_to_sid() to explicit mappings\n"));
- break;
- }
-
DEBUG(10, ("Finding name %s\n", name));
- if ( !lookup_name( mem_ctx, name, flags, NULL, NULL, sid, type ) ) {
+ if ( !lookup_name( mem_ctx, name, LOOKUP_NAME_ALL,
+ NULL, NULL, sid, type ) )
+ {
return NT_STATUS_NONE_MAPPED;
}
@@ -137,12 +125,7 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
/* Paranoia check */
if (!sid_check_is_in_builtin(sid) &&
- !sid_check_is_in_our_domain(sid) &&
- !sid_check_is_in_unix_users(sid) &&
- !sid_check_is_unix_users(sid) &&
- !sid_check_is_in_unix_groups(sid) &&
- !sid_check_is_unix_groups(sid) )
- {
+ !sid_check_is_in_our_domain(sid)) {
DEBUG(0, ("Possible deadlock: Trying to lookup SID %s with "
"passdb backend\n", sid_string_static(sid)));
return NT_STATUS_NONE_MAPPED;
@@ -413,7 +396,8 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
return NT_STATUS_NO_MEMORY;
}
- nt_status = pdb_enum_trusteddoms(tmp_ctx, num_domains, &domains);
+ nt_status = secrets_trusted_domains(tmp_ctx, num_domains,
+ &domains);
if (!NT_STATUS_IS_OK(nt_status)) {
TALLOC_FREE(tmp_ctx);
return nt_status;
diff --git a/source/nsswitch/winbindd_reconnect.c b/source/nsswitch/winbindd_reconnect.c
index 70e5579109b..6b484bdd062 100644
--- a/source/nsswitch/winbindd_reconnect.c
+++ b/source/nsswitch/winbindd_reconnect.c
@@ -84,7 +84,6 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
/* convert a single name to a sid in a domain */
static NTSTATUS name_to_sid(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- enum winbindd_cmd orig_cmd,
const char *domain_name,
const char *name,
DOM_SID *sid,
@@ -92,12 +91,12 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
{
NTSTATUS result;
- result = msrpc_methods.name_to_sid(domain, mem_ctx, orig_cmd,
+ result = msrpc_methods.name_to_sid(domain, mem_ctx,
domain_name, name,
sid, type);
if (NT_STATUS_EQUAL(result, NT_STATUS_UNSUCCESSFUL))
- result = msrpc_methods.name_to_sid(domain, mem_ctx, orig_cmd,
+ result = msrpc_methods.name_to_sid(domain, mem_ctx,
domain_name, name,
sid, type);
diff --git a/source/nsswitch/winbindd_rpc.c b/source/nsswitch/winbindd_rpc.c
index 31ccdc1f73a..3c79670d635 100644
--- a/source/nsswitch/winbindd_rpc.c
+++ b/source/nsswitch/winbindd_rpc.c
@@ -48,12 +48,6 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
*num_entries = 0;
*info = NULL;
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("query_user_list: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
result = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol);
if (!NT_STATUS_IS_OK(result))
return result;
@@ -146,12 +140,6 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
DEBUG(3,("rpc: enum_dom_groups\n"));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("enum_domain_groups: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
status = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol);
if (!NT_STATUS_IS_OK(status))
return status;
@@ -180,8 +168,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
(*num_entries) + count);
if (! *info) {
talloc_destroy(mem_ctx2);
- status = NT_STATUS_NO_MEMORY;
- break;
+ return NT_STATUS_NO_MEMORY;
}
memcpy(&(*info)[*num_entries], info2, count*sizeof(*info2));
@@ -208,12 +195,6 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
DEBUG(3,("rpc: enum_local_groups\n"));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("enum_local_groups: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
result = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol);
if (!NT_STATUS_IS_OK(result))
return result;
@@ -255,12 +236,11 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
/* convert a single name to a sid in a domain */
NTSTATUS msrpc_name_to_sid(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
- enum winbindd_cmd original_cmd,
- const char *domain_name,
- const char *name,
- DOM_SID *sid,
- enum lsa_SidType *type)
+ TALLOC_CTX *mem_ctx,
+ const char *domain_name,
+ const char *name,
+ DOM_SID *sid,
+ enum lsa_SidType *type)
{
NTSTATUS result;
DOM_SID *sids = NULL;
@@ -269,20 +249,18 @@ NTSTATUS msrpc_name_to_sid(struct winbindd_domain *domain,
struct rpc_pipe_client *cli;
POLICY_HND lsa_policy;
- if (name == NULL || *name=='\0') {
- full_name = talloc_asprintf(mem_ctx, "%s", domain_name);
- } else if (domain_name == NULL || *domain_name == '\0') {
- full_name = talloc_asprintf(mem_ctx, "%s", name);
- } else {
- full_name = talloc_asprintf(mem_ctx, "%s\\%s", domain_name, name);
- }
+ if(name == NULL || *name=='\0') {
+ DEBUG(3,("rpc: name_to_sid name=%s\n", domain_name));
+ full_name = talloc_asprintf(mem_ctx, "%s", domain_name);
+ } else {
+ DEBUG(3,("rpc: name_to_sid name=%s\\%s\n", domain_name, name));
+ full_name = talloc_asprintf(mem_ctx, "%s\\%s", domain_name, name);
+ }
if (!full_name) {
DEBUG(0, ("talloc_asprintf failed!\n"));
return NT_STATUS_NO_MEMORY;
}
- DEBUG(3,("rpc: name_to_sid name=%s\n", full_name));
-
ws_name_return( full_name, WB_REPLACE_CHAR );
DEBUG(3,("name_to_sid [rpc] %s for domain %s\n", full_name?full_name:"", domain_name ));
@@ -292,7 +270,7 @@ NTSTATUS msrpc_name_to_sid(struct winbindd_domain *domain,
return result;
result = rpccli_lsa_lookup_names(cli, mem_ctx, &lsa_policy, 1,
- (const char**) &full_name, NULL, 1, &sids, &types);
+ (const char**) &full_name, NULL, &sids, &types);
if (!NT_STATUS_IS_OK(result))
return result;
@@ -326,20 +304,13 @@ NTSTATUS msrpc_sid_to_name(struct winbindd_domain *domain,
domain->name ));
result = cm_connect_lsa(domain, mem_ctx, &cli, &lsa_policy);
- if (!NT_STATUS_IS_OK(result)) {
- DEBUG(2,("msrpc_sid_to_name: cm_connect_lsa() failed (%s)\n",
- nt_errstr(result)));
+ if (!NT_STATUS_IS_OK(result))
return result;
- }
-
result = rpccli_lsa_lookup_sids(cli, mem_ctx, &lsa_policy,
1, sid, &domains, &names, &types);
- if (!NT_STATUS_IS_OK(result)) {
- DEBUG(2,("msrpc_sid_to_name: rpccli_lsa_lookup_sids() failed (%s)\n",
- nt_errstr(result)));
+ if (!NT_STATUS_IS_OK(result))
return result;
- }
*type = (enum lsa_SidType)types[0];
*domain_name = domains[0];
@@ -429,10 +400,6 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
if (!sid_peek_check_rid(&domain->sid, user_sid, &user_rid))
return NT_STATUS_UNSUCCESSFUL;
- user_info->homedir = NULL;
- user_info->shell = NULL;
- user_info->primary_gid = (gid_t)-1;
-
/* try netsamlogon cache first */
if ( (user = netsamlogon_cache_get( mem_ctx, user_sid )) != NULL )
@@ -441,7 +408,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
DEBUG(5,("query_user: Cache lookup succeeded for %s\n",
sid_string_static(user_sid)));
- sid_compose(&user_info->user_sid, &domain->sid, user->user_rid);
+ sid_compose(&user_info->user_sid, &domain->sid, user_rid);
sid_compose(&user_info->group_sid, &domain->sid,
user->group_rid);
@@ -450,20 +417,12 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
user_info->full_name = unistr2_tdup(mem_ctx,
&user->uni_full_name);
- TALLOC_FREE(user);
+ user_info->homedir = NULL;
+ user_info->shell = NULL;
+ user_info->primary_gid = (gid_t)-1;
- return NT_STATUS_OK;
- }
+ TALLOC_FREE(user);
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("query_user: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("query_user: No incoming trust for domain %s\n",
- domain->name));
return NT_STATUS_OK;
}
@@ -536,15 +495,6 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
return NT_STATUS_OK;
}
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("lookup_usergroups: No incoming trust for domain %s\n",
- domain->name));
-
- /* Tell the cache manager not to remember this one */
-
- return NT_STATUS_SYNCHRONIZATION_REQUIRED;
- }
-
/* no cache; hit the wire */
result = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol);
@@ -601,12 +551,6 @@ NTSTATUS msrpc_lookup_useraliases(struct winbindd_domain *domain,
DEBUG(3,("rpc: lookup_useraliases\n"));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("msrpc_lookup_useraliases: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
result = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol);
if (!NT_STATUS_IS_OK(result))
return result;
@@ -693,12 +637,6 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
DEBUG(10,("rpc: lookup_groupmem %s sid=%s\n", domain->name,
sid_to_string(sid_string, group_sid)));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("lookup_groupmem: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_OK;
- }
-
if (!sid_peek_check_rid(&domain->sid, group_sid, &group_rid))
return NT_STATUS_UNSUCCESSFUL;
@@ -883,20 +821,13 @@ static NTSTATUS sequence_number(struct winbindd_domain *domain, uint32 *seq)
DEBUG(10,("rpc: fetch sequence_number for %s\n", domain->name));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("sequence_number: No incoming trust for domain %s\n",
- domain->name));
- *seq = time(NULL);
- return NT_STATUS_OK;
- }
-
*seq = DOM_SEQUENCE_NONE;
if (!(mem_ctx = talloc_init("sequence_number[rpc]")))
return NT_STATUS_NO_MEMORY;
#ifdef HAVE_LDAP
- if ( domain->active_directory )
+ if ( domain->native_mode )
{
int res;
@@ -1035,12 +966,6 @@ NTSTATUS msrpc_lockout_policy(struct winbindd_domain *domain,
DEBUG(10,("rpc: fetch lockout policy for %s\n", domain->name));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("msrpc_lockout_policy: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_NOT_SUPPORTED;
- }
-
result = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol);
if (!NT_STATUS_IS_OK(result)) {
goto done;
@@ -1073,12 +998,6 @@ NTSTATUS msrpc_password_policy(struct winbindd_domain *domain,
DEBUG(10,("rpc: fetch password policy for %s\n", domain->name));
- if ( !winbindd_can_contact_domain( domain ) ) {
- DEBUG(10,("msrpc_password_policy: No incoming trust for domain %s\n",
- domain->name));
- return NT_STATUS_NOT_SUPPORTED;
- }
-
result = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol);
if (!NT_STATUS_IS_OK(result)) {
goto done;
diff --git a/source/nsswitch/winbindd_sid.c b/source/nsswitch/winbindd_sid.c
index 147917f9789..648d71f2d5d 100644
--- a/source/nsswitch/winbindd_sid.c
+++ b/source/nsswitch/winbindd_sid.c
@@ -103,8 +103,7 @@ void winbindd_lookupname(struct winbindd_cli_state *state)
name_domain, lp_winbind_separator(), name_user));
winbindd_lookupname_async(state->mem_ctx, name_domain, name_user,
- lookupname_recv, WINBINDD_LOOKUPNAME,
- state);
+ lookupname_recv, state);
}
static void lookupname_recv(void *private_data, BOOL success,
@@ -271,7 +270,7 @@ static void sid2gid_lookupsid_recv( void *private_data, BOOL success,
DOM_SID sid;
if (!success) {
- DEBUG(5, ("sid2gid_lookupsid_recv: Could not get sid type for %s\n",
+ DEBUG(5, ("sid2gid_lookupsid_recv: Could not convert get sid type for %s\n",
state->request.data.sid));
request_error(state);
return;
diff --git a/source/nsswitch/winbindd_sockinit.c b/source/nsswitch/winbindd_sockinit.c
deleted file mode 100644
index a1ae4768839..00000000000
--- a/source/nsswitch/winbindd_sockinit.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Copyright (C) Tim Potter 2000-2001
- Copyright (C) 2001 by Martin Pool <mbp@samba.org>
- Copyright (C) James Peach 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "winbindd.h"
-#include "smb_launchd.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_WINBIND
-
-/* Open the winbindd socket */
-
-static int _winbindd_socket = -1;
-static int _winbindd_priv_socket = -1;
-static BOOL unlink_winbindd_socket = True;
-
-static int open_winbindd_socket(void)
-{
- if (_winbindd_socket == -1) {
- _winbindd_socket = create_pipe_sock(
- WINBINDD_SOCKET_DIR, WINBINDD_SOCKET_NAME, 0755);
- DEBUG(10, ("open_winbindd_socket: opened socket fd %d\n",
- _winbindd_socket));
- }
-
- return _winbindd_socket;
-}
-
-static int open_winbindd_priv_socket(void)
-{
- if (_winbindd_priv_socket == -1) {
- _winbindd_priv_socket = create_pipe_sock(
- get_winbind_priv_pipe_dir(), WINBINDD_SOCKET_NAME, 0750);
- DEBUG(10, ("open_winbindd_priv_socket: opened socket fd %d\n",
- _winbindd_priv_socket));
- }
-
- return _winbindd_priv_socket;
-}
-
-/* Close the winbindd socket */
-
-static void close_winbindd_socket(void)
-{
- if (_winbindd_socket != -1) {
- DEBUG(10, ("close_winbindd_socket: closing socket fd %d\n",
- _winbindd_socket));
- close(_winbindd_socket);
- _winbindd_socket = -1;
- }
- if (_winbindd_priv_socket != -1) {
- DEBUG(10, ("close_winbindd_socket: closing socket fd %d\n",
- _winbindd_priv_socket));
- close(_winbindd_priv_socket);
- _winbindd_priv_socket = -1;
- }
-}
-
-BOOL winbindd_init_sockets(int *public_sock, int *priv_sock,
- int *idle_timeout_sec)
-{
- struct smb_launch_info linfo;
-
- if (smb_launchd_checkin_names(&linfo, "WinbindPublicPipe",
- "WinbindPrivilegedPipe", NULL)) {
- if (linfo.num_sockets != 2) {
- DEBUG(0, ("invalid launchd configuration, "
- "expected 2 sockets but got %d\n",
- linfo.num_sockets));
- return False;
- }
-
- *public_sock = _winbindd_socket = linfo.socket_list[0];
- *priv_sock = _winbindd_priv_socket = linfo.socket_list[1];
- *idle_timeout_sec = linfo.idle_timeout_secs;
-
- unlink_winbindd_socket = False;
-
- smb_launchd_checkout(&linfo);
- return True;
- } else {
- *public_sock = open_winbindd_socket();
- *priv_sock = open_winbindd_priv_socket();
- *idle_timeout_sec = -1;
-
- if (*public_sock == -1 || *priv_sock == -1) {
- DEBUG(0, ("failed to open winbindd pipes: %s\n",
- errno ? strerror(errno) : "unknown error"));
- return False;
- }
-
- return True;
- }
-}
-
-void winbindd_release_sockets(void)
-{
- pstring path;
-
- close_winbindd_socket();
-
- /* Remove socket file */
- if (unlink_winbindd_socket) {
- pstr_sprintf(path, "%s/%s",
- WINBINDD_SOCKET_DIR, WINBINDD_SOCKET_NAME);
- unlink(path);
- }
-}
-
diff --git a/source/nsswitch/winbindd_user.c b/source/nsswitch/winbindd_user.c
index ef37e86dec3..18797772dd4 100644
--- a/source/nsswitch/winbindd_user.c
+++ b/source/nsswitch/winbindd_user.c
@@ -105,7 +105,9 @@ static BOOL winbindd_fill_pwent(char *dom_name, char *user_name,
safe_strcpy(pw->pw_gecos, full_name, sizeof(pw->pw_gecos) - 1);
- /* Home directory and shell */
+ /* Home directory and shell - use template config parameters. The
+ defaults are /tmp for the home directory and /bin/false for
+ shell. */
if (!fillup_pw_field(lp_template_homedir(), user_name, dom_name,
pw->pw_uid, pw->pw_gid, homedir, pw->pw_dir))
@@ -237,30 +239,7 @@ static void getpwsid_queryuser_recv(void *private_data, BOOL success,
return;
}
- if ( acct_name && *acct_name ) {
fstrcpy( username, acct_name );
- } else {
- char *domain_name = NULL;
- enum lsa_SidType type;
- char *user_name = NULL;
- struct winbindd_domain *domain = NULL;
-
- domain = find_lookup_domain_from_sid(&s->user_sid);
- winbindd_lookup_name_by_sid(s->state->mem_ctx, domain,
- &s->user_sid, &domain_name,
- &user_name, &type );
-
- /* If this still fails we ar4e done. Just error out */
- if ( !user_name ) {
- DEBUG(5,("Could not obtain a name for SID %s\n",
- sid_string_static(&s->user_sid)));
- request_error(s->state);
- return;
- }
-
- fstrcpy( username, user_name );
- }
-
strlower_m( username );
s->username = talloc_strdup(s->state->mem_ctx, username);
@@ -381,14 +360,11 @@ void winbindd_getpwnam(struct winbindd_cli_state *state)
domain = find_domain_from_name(domname);
if (domain == NULL) {
- DEBUG(7, ("could not find domain entry for domain %s. "
- "Using primary domain\n", domname));
- if ( (domain = find_our_domain()) == NULL ) {
- DEBUG(0,("Cannot find my primary domain structure!\n"));
+ DEBUG(7, ("could not find domain entry for domain %s\n",
+ domname));
request_error(state);
return;
}
- }
if ( strequal(domname, lp_workgroup()) && lp_winbind_trusted_domains_only() ) {
DEBUG(7,("winbindd_getpwnam: My domain -- rejecting getpwnam() for %s\\%s.\n",
@@ -400,8 +376,7 @@ void winbindd_getpwnam(struct winbindd_cli_state *state)
/* Get rid and name type from name. The following costs 1 packet */
winbindd_lookupname_async(state->mem_ctx, domname, username,
- getpwnam_name2sid_recv, WINBINDD_GETPWNAM,
- state);
+ getpwnam_name2sid_recv, state);
}
static void getpwnam_name2sid_recv(void *private_data, BOOL success,
@@ -409,7 +384,6 @@ static void getpwnam_name2sid_recv(void *private_data, BOOL success,
{
struct winbindd_cli_state *state =
(struct winbindd_cli_state *)private_data;
- fstring domname, username;
if (!success) {
DEBUG(5, ("Could not lookup name for user %s\n",
@@ -424,12 +398,6 @@ static void getpwnam_name2sid_recv(void *private_data, BOOL success,
return;
}
- if ( parse_domain_user(state->request.data.username, domname, username) ) {
- check_domain_trusted( domname, sid );
- }
-
-
-
winbindd_getpwsid(state, sid);
}
diff --git a/source/nsswitch/winbindd_util.c b/source/nsswitch/winbindd_util.c
index bf606c35c3a..d2daf7830db 100644
--- a/source/nsswitch/winbindd_util.c
+++ b/source/nsswitch/winbindd_util.c
@@ -36,6 +36,7 @@ extern struct winbindd_methods passdb_methods;
* Winbind daemon for NT domain authentication nss module.
**/
+
/* The list of trusted domains. Note that the list can be deleted and
recreated using the init_domain_list() function so pointers to
individual winbindd_domain structures cannot be made. Keep a copy of
@@ -56,7 +57,7 @@ struct winbindd_domain *domain_list(void)
/* Initialise list */
if ((!_domain_list) && (!init_domain_list())) {
- smb_panic("Init_domain_list failed");
+ smb_panic("Init_domain_list failed\n");
}
return _domain_list;
@@ -118,42 +119,24 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
init_domain_list() and we'll get stuck in a loop. */
for (domain = _domain_list; domain; domain = domain->next) {
if (strequal(domain_name, domain->name) ||
- strequal(domain_name, domain->alt_name))
- {
- break;
+ strequal(domain_name, domain->alt_name)) {
+ return domain;
}
-
- if (alternative_name && *alternative_name)
- {
+ if (alternative_name && *alternative_name) {
if (strequal(alternative_name, domain->name) ||
- strequal(alternative_name, domain->alt_name))
- {
- break;
+ strequal(alternative_name, domain->alt_name)) {
+ return domain;
}
}
-
- if (sid)
- {
+ if (sid) {
if (is_null_sid(sid)) {
- continue;
- }
- if (sid_equal(sid, &domain->sid)) {
- break;
+ } else if (sid_equal(sid, &domain->sid)) {
+ return domain;
}
}
}
- /* See if we found a match. Check if we need to update the
- SID. */
-
- if ( domain ) {
- if ( sid_equal( &domain->sid, &global_sid_NULL ) )
- sid_copy( &domain->sid, sid );
-
- return domain;
- }
-
/* Create new domain entry */
if ((domain = SMB_MALLOC_P(struct winbindd_domain)) == NULL)
@@ -189,8 +172,6 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
/* Link to domain list */
DLIST_ADD(_domain_list, domain);
- wcache_tdc_add_domain( domain );
-
DEBUG(2,("Added domain %s %s %s\n",
domain->name, domain->alt_name,
&domain->sid?sid_string_static(&domain->sid):""));
@@ -204,21 +185,16 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
struct trustdom_state {
TALLOC_CTX *mem_ctx;
- BOOL primary;
- BOOL forest_root;
struct winbindd_response *response;
};
static void trustdom_recv(void *private_data, BOOL success);
-static void rescan_forest_root_trusts( void );
-static void rescan_forest_trusts( void );
static void add_trusted_domains( struct winbindd_domain *domain )
{
TALLOC_CTX *mem_ctx;
struct winbindd_request *request;
struct winbindd_response *response;
- uint32 fr_flags = (DS_DOMAIN_TREE_ROOT|DS_DOMAIN_IN_FOREST);
struct trustdom_state *state;
@@ -241,11 +217,6 @@ static void add_trusted_domains( struct winbindd_domain *domain )
state->mem_ctx = mem_ctx;
state->response = response;
- /* Flags used to know how to continue the forest trust search */
-
- state->primary = domain->primary;
- state->forest_root = ((domain->domain_flags & fr_flags) == fr_flags );
-
request->length = sizeof(*request);
request->cmd = WINBINDD_LIST_TRUSTDOM;
@@ -271,8 +242,6 @@ static void trustdom_recv(void *private_data, BOOL success)
while ((p != NULL) && (*p != '\0')) {
char *q, *sidstr, *alt_name;
DOM_SID sid;
- struct winbindd_domain *domain;
- char *alternate_name = NULL;
alt_name = strchr(p, '\\');
if (alt_name == NULL) {
@@ -306,21 +275,15 @@ static void trustdom_recv(void *private_data, BOOL success)
}
}
+ if (find_domain_from_name_noinit(p) == NULL) {
+ struct winbindd_domain *domain;
+ char *alternate_name = NULL;
+
/* use the real alt_name if we have one, else pass in NULL */
if ( !strequal( alt_name, "(null)" ) )
alternate_name = alt_name;
- /* If we have an existing domain structure, calling
- add_trusted_domain() will update the SID if
- necessary. This is important because we need the
- SID for sibling domains */
-
- if ( find_domain_from_name_noinit(p) != NULL ) {
- domain = add_trusted_domain(p, alternate_name,
- &cache_methods,
- &sid);
- } else {
domain = add_trusted_domain(p, alternate_name,
&cache_methods,
&sid);
@@ -332,161 +295,13 @@ static void trustdom_recv(void *private_data, BOOL success)
}
SAFE_FREE(response->extra_data.data);
-
- /*
- Cases to consider when scanning trusts:
- (a) we are calling from a child domain (primary && !forest_root)
- (b) we are calling from the root of the forest (primary && forest_root)
- (c) we are calling from a trusted forest domain (!primary
- && !forest_root)
- */
-
- if ( state->primary ) {
- /* If this is our primary domain and we are not the in the
- forest root, we have to scan the root trusts first */
-
- if ( !state->forest_root )
- rescan_forest_root_trusts();
- else
- rescan_forest_trusts();
-
- } else if ( state->forest_root ) {
- /* Once we have done root forest trust search, we can
- go on to search thing trusted forests */
-
- rescan_forest_trusts();
- }
-
talloc_destroy(state->mem_ctx);
-
- return;
}
/********************************************************************
- Scan the trusts of our forest root
+ Periodically we need to refresh the trusted domain cache for smbd
********************************************************************/
-static void rescan_forest_root_trusts( void )
-{
- struct winbindd_tdc_domain *dom_list = NULL;
- size_t num_trusts = 0;
- int i;
-
- /* The only transitive trusts supported by Windows 2003 AD are
- (a) Parent-Child, (b) Tree-Root, and (c) Forest. The
- first two are handled in forest and listed by
- DsEnumerateDomainTrusts(). Forest trusts are not so we
- have to do that ourselves. */
-
- if ( !wcache_tdc_fetch_list( &dom_list, &num_trusts ) )
- return;
-
- for ( i=0; i<num_trusts; i++ ) {
- struct winbindd_domain *d = NULL;
-
- /* Find the forest root. Don't necessarily trust
- the domain_list() as our primary domain may not
- have been initialized. */
-
- if ( !(dom_list[i].trust_flags & DS_DOMAIN_TREE_ROOT) ) {
- continue;
- }
-
- /* Here's the forest root */
-
- d = find_domain_from_name_noinit( dom_list[i].domain_name );
-
- if ( !d ) {
- d = add_trusted_domain( dom_list[i].domain_name,
- dom_list[i].dns_name,
- &cache_methods,
- &dom_list[i].sid );
- }
-
- DEBUG(10,("rescan_forest_root_trusts: Following trust path "
- "for domain tree root %s (%s)\n",
- d->name, d->alt_name ));
-
- d->domain_flags = dom_list[i].trust_flags;
- d->domain_type = dom_list[i].trust_type;
- d->domain_trust_attribs = dom_list[i].trust_attribs;
-
- add_trusted_domains( d );
-
- break;
- }
-
- TALLOC_FREE( dom_list );
-
- return;
-}
-
-/********************************************************************
- scan the transitive forest trists (not our own)
-********************************************************************/
-
-
-static void rescan_forest_trusts( void )
-{
- struct winbindd_domain *d = NULL;
- struct winbindd_tdc_domain *dom_list = NULL;
- size_t num_trusts = 0;
- int i;
-
- /* The only transitive trusts supported by Windows 2003 AD are
- (a) Parent-Child, (b) Tree-Root, and (c) Forest. The
- first two are handled in forest and listed by
- DsEnumerateDomainTrusts(). Forest trusts are not so we
- have to do that ourselves. */
-
- if ( !wcache_tdc_fetch_list( &dom_list, &num_trusts ) )
- return;
-
- for ( i=0; i<num_trusts; i++ ) {
- uint32 flags = dom_list[i].trust_flags;
- uint32 type = dom_list[i].trust_type;
- uint32 attribs = dom_list[i].trust_attribs;
-
- d = find_domain_from_name_noinit( dom_list[i].domain_name );
-
- /* ignore our primary and internal domains */
-
- if ( d && (d->internal || d->primary ) )
- continue;
-
- if ( (flags & DS_DOMAIN_DIRECT_INBOUND) &&
- (type == DS_DOMAIN_TRUST_TYPE_UPLEVEL) &&
- (attribs == DS_DOMAIN_TRUST_ATTRIB_FOREST_TRANSITIVE) )
- {
- /* add the trusted domain if we don't know
- about it */
-
- if ( !d ) {
- d = add_trusted_domain( dom_list[i].domain_name,
- dom_list[i].dns_name,
- &cache_methods,
- &dom_list[i].sid );
- }
-
- DEBUG(10,("Following trust path for domain %s (%s)\n",
- d->name, d->alt_name ));
- add_trusted_domains( d );
- }
- }
-
- TALLOC_FREE( dom_list );
-
- return;
-}
-
-/*********************************************************************
- The process of updating the trusted domain list is a three step
- async process:
- (a) ask our domain
- (b) ask the root domain in our forest
- (c) ask the a DC in any Win2003 trusted forests
-*********************************************************************/
-
void rescan_trusted_domains( void )
{
time_t now = time(NULL);
@@ -497,12 +312,7 @@ void rescan_trusted_domains( void )
((now-last_trustdom_scan) < WINBINDD_RESCAN_FREQ) )
return;
- /* clear the TRUSTDOM cache first */
-
- wcache_tdc_clear();
-
- /* this will only add new domains we didn't already know about
- in the domain_list()*/
+ /* this will only add new domains we didn't already know about */
add_trusted_domains( find_our_domain() );
@@ -560,11 +370,11 @@ enum winbindd_result init_child_connection(struct winbindd_domain *domain,
state->continuation = continuation;
state->private_data = private_data;
- if (IS_DC || domain->primary || domain->internal ) {
+ if (IS_DC || domain->primary) {
/* The primary domain has to find the DC name itself */
request->cmd = WINBINDD_INIT_CONNECTION;
fstrcpy(request->domain_name, domain->name);
- request->data.init_conn.is_primary = domain->internal ? False : True;
+ request->data.init_conn.is_primary = True;
fstrcpy(request->data.init_conn.dcname, "");
async_request(mem_ctx, &domain->child, request, response,
init_child_recv, state);
@@ -578,6 +388,7 @@ enum winbindd_result init_child_connection(struct winbindd_domain *domain,
fstrcpy(request->domain_name, domain->name);
request_domain = find_our_domain();
+
async_domain_request(mem_ctx, request_domain, request, response,
init_child_getdc_recv, state);
return WINBINDD_PENDING;
@@ -733,44 +544,6 @@ BOOL init_domain_list(void)
return True;
}
-void check_domain_trusted( const char *name, const DOM_SID *user_sid )
-{
- struct winbindd_domain *domain;
- DOM_SID dom_sid;
- uint32 rid;
-
- domain = find_domain_from_name_noinit( name );
- if ( domain )
- return;
-
- sid_copy( &dom_sid, user_sid );
- if ( !sid_split_rid( &dom_sid, &rid ) )
- return;
-
- /* add the newly discovered trusted domain */
-
- domain = add_trusted_domain( name, NULL, &cache_methods,
- &dom_sid);
-
- if ( !domain )
- return;
-
- /* assume this is a trust from a one-way transitive
- forest trust */
-
- domain->active_directory = True;
- domain->domain_flags = DS_DOMAIN_DIRECT_OUTBOUND;
- domain->domain_type = DS_DOMAIN_TRUST_TYPE_UPLEVEL;
- domain->internal = False;
- domain->online = True;
-
- setup_domain_child(domain, &domain->child, NULL);
-
- wcache_tdc_add_domain( domain );
-
- return;
-}
-
/**
* Given a domain name, return the struct winbindd domain info for it
*
@@ -863,7 +636,7 @@ struct winbindd_domain *find_our_domain(void)
return domain;
}
- smb_panic("Could not find our domain");
+ smb_panic("Could not find our domain\n");
return NULL;
}
@@ -888,9 +661,8 @@ struct winbindd_domain *find_builtin_domain(void)
string_to_sid(&sid, "S-1-5-32");
domain = find_domain_from_sid(&sid);
- if (domain == NULL) {
- smb_panic("Could not find BUILTIN domain");
- }
+ if (domain == NULL)
+ smb_panic("Could not find BUILTIN domain\n");
return domain;
}
@@ -899,16 +671,6 @@ struct winbindd_domain *find_builtin_domain(void)
struct winbindd_domain *find_lookup_domain_from_sid(const DOM_SID *sid)
{
- /* SIDs in the S-1-22-{1,2} domain should be handled by our passdb */
-
- if ( sid_check_is_in_unix_groups(sid) ||
- sid_check_is_unix_groups(sid) ||
- sid_check_is_in_unix_users(sid) ||
- sid_check_is_unix_users(sid) )
- {
- return find_domain_from_sid(get_global_sam_sid());
- }
-
/* A DC can't ask the local smbd for remote SIDs, here winbindd is the
* one to contact the external DC's. On member servers the internal
* domains are different: These are part of the local SAM. */
@@ -919,7 +681,7 @@ struct winbindd_domain *find_lookup_domain_from_sid(const DOM_SID *sid)
if (IS_DC || is_internal_domain(sid) || is_in_internal_domain(sid)) {
DEBUG(10, ("calling find_domain_from_sid\n"));
return find_domain_from_sid(sid);
- }
+ }
/* On a member server a query for SID or name can always go to our
* primary DC. */
@@ -930,25 +692,16 @@ struct winbindd_domain *find_lookup_domain_from_sid(const DOM_SID *sid)
struct winbindd_domain *find_lookup_domain_from_name(const char *domain_name)
{
- if ( strequal(domain_name, unix_users_domain_name() ) ||
- strequal(domain_name, unix_groups_domain_name() ) )
- {
- return find_domain_from_name_noinit( get_global_sam_name() );
- }
-
if (IS_DC || strequal(domain_name, "BUILTIN") ||
strequal(domain_name, get_global_sam_name()))
return find_domain_from_name_noinit(domain_name);
- /* The "Unix User" and "Unix Group" domain our handled by passdb */
-
return find_our_domain();
}
/* Lookup a sid in a domain from a name */
BOOL winbindd_lookup_sid_by_name(TALLOC_CTX *mem_ctx,
- enum winbindd_cmd orig_cmd,
struct winbindd_domain *domain,
const char *domain_name,
const char *name, DOM_SID *sid,
@@ -957,8 +710,7 @@ BOOL winbindd_lookup_sid_by_name(TALLOC_CTX *mem_ctx,
NTSTATUS result;
/* Lookup name */
- result = domain->methods->name_to_sid(domain, mem_ctx, orig_cmd,
- domain_name, name, sid, type);
+ result = domain->methods->name_to_sid(domain, mem_ctx, domain_name, name, sid, type);
/* Return sid and type if lookup successful */
if (!NT_STATUS_IS_OK(result)) {
@@ -980,17 +732,24 @@ BOOL winbindd_lookup_sid_by_name(TALLOC_CTX *mem_ctx,
* are set, otherwise False.
**/
BOOL winbindd_lookup_name_by_sid(TALLOC_CTX *mem_ctx,
- struct winbindd_domain *domain,
DOM_SID *sid,
char **dom_name,
char **name,
enum lsa_SidType *type)
{
NTSTATUS result;
+ struct winbindd_domain *domain;
*dom_name = NULL;
*name = NULL;
+ domain = find_lookup_domain_from_sid(sid);
+
+ if (!domain) {
+ DEBUG(1,("Can't find domain from sid\n"));
+ return False;
+ }
+
/* Lookup name */
result = domain->methods->sid_to_name(domain, mem_ctx, sid, dom_name, name, type);
@@ -1154,6 +913,53 @@ char *get_winbind_priv_pipe_dir(void)
return lock_path(WINBINDD_PRIV_SOCKET_SUBDIR);
}
+/* Open the winbindd socket */
+
+static int _winbindd_socket = -1;
+static int _winbindd_priv_socket = -1;
+
+int open_winbindd_socket(void)
+{
+ if (_winbindd_socket == -1) {
+ _winbindd_socket = create_pipe_sock(
+ WINBINDD_SOCKET_DIR, WINBINDD_SOCKET_NAME, 0755);
+ DEBUG(10, ("open_winbindd_socket: opened socket fd %d\n",
+ _winbindd_socket));
+ }
+
+ return _winbindd_socket;
+}
+
+int open_winbindd_priv_socket(void)
+{
+ if (_winbindd_priv_socket == -1) {
+ _winbindd_priv_socket = create_pipe_sock(
+ get_winbind_priv_pipe_dir(), WINBINDD_SOCKET_NAME, 0750);
+ DEBUG(10, ("open_winbindd_priv_socket: opened socket fd %d\n",
+ _winbindd_priv_socket));
+ }
+
+ return _winbindd_priv_socket;
+}
+
+/* Close the winbindd socket */
+
+void close_winbindd_socket(void)
+{
+ if (_winbindd_socket != -1) {
+ DEBUG(10, ("close_winbindd_socket: closing socket fd %d\n",
+ _winbindd_socket));
+ close(_winbindd_socket);
+ _winbindd_socket = -1;
+ }
+ if (_winbindd_priv_socket != -1) {
+ DEBUG(10, ("close_winbindd_socket: closing socket fd %d\n",
+ _winbindd_priv_socket));
+ close(_winbindd_priv_socket);
+ _winbindd_priv_socket = -1;
+ }
+}
+
/*
* Client list accessor functions
*/
@@ -1297,33 +1103,3 @@ void ws_name_return( char *name, char replace )
return;
}
-
-/*********************************************************************
- ********************************************************************/
-
-BOOL winbindd_can_contact_domain( struct winbindd_domain *domain )
-{
- /* We can contact the domain if it is our primary domain */
-
- if ( domain->primary )
- return True;
-
- /* Can always contact a domain that is in out forest */
-
- if ( domain->domain_flags & DS_DOMAIN_IN_FOREST )
- return True;
-
- /* We cannot contact the domain if it is running AD and
- we have no inbound trust */
-
- if ( domain->active_directory &&
- ((domain->domain_flags&DS_DOMAIN_DIRECT_INBOUND) != DS_DOMAIN_DIRECT_INBOUND) )
- {
- return False;
- }
-
- /* Assume everything else is ok (probably not true but what
- can you do?) */
-
- return True;
-}
diff --git a/source/pam_smbpass/general.h b/source/pam_smbpass/general.h
index 320bdd0cc87..781581aaf55 100644
--- a/source/pam_smbpass/general.h
+++ b/source/pam_smbpass/general.h
@@ -1,17 +1,9 @@
#ifndef LINUX
/* This is only needed by modules in the Sun implementation. */
-#if defined(HAVE_SECURITY_PAM_APPL_H)
#include <security/pam_appl.h>
-#elif defined(HAVE_PAM_PAM_APPL_H)
-#include <pam/pam_appl.h>
-#endif
#endif /* LINUX */
-#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
-#elif defined(HAVE_PAM_PAM_MODULES_H)
-#include <pam/pam_modules.h>
-#endif
#ifndef PAM_AUTHTOK_RECOVER_ERR
#define PAM_AUTHTOK_RECOVER_ERR PAM_AUTHTOK_RECOVERY_ERR
diff --git a/source/pam_smbpass/pam_smb_acct.c b/source/pam_smbpass/pam_smb_acct.c
index 66e7301dae0..47bf0594798 100644
--- a/source/pam_smbpass/pam_smb_acct.c
+++ b/source/pam_smbpass/pam_smb_acct.c
@@ -23,19 +23,11 @@
#ifndef LINUX
/* This is only used in the Sun implementation. */
-#if defined(HAVE_SECURITY_PAM_APPL_H)
#include <security/pam_appl.h>
-#elif defined(HAVE_PAM_PAM_APPL_H)
-#include <pam/pam_appl.h>
-#endif
#endif /* LINUX */
-#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
-#elif defined(HAVE_PAM_PAM_MODULES_H)
-#include <pam/pam_modules.h>
-#endif
#include "general.h"
@@ -81,7 +73,7 @@ int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags,
/* Getting into places that might use LDAP -- protect the app
from a SIGPIPE it's not expecting */
oldsig_handler = CatchSignal(SIGPIPE, SIGNAL_CAST SIG_IGN);
- if (!initialize_password_db(True, NULL)) {
+ if (!initialize_password_db(True)) {
_log_err( LOG_ALERT, "Cannot access samba password database" );
CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
return PAM_AUTHINFO_UNAVAIL;
diff --git a/source/pam_smbpass/pam_smb_auth.c b/source/pam_smbpass/pam_smb_auth.c
index 819918e1442..df6d20e01ab 100644
--- a/source/pam_smbpass/pam_smb_auth.c
+++ b/source/pam_smbpass/pam_smb_auth.c
@@ -24,19 +24,11 @@
#ifndef LINUX
/* This is only used in the Sun implementation. */
-#if defined(HAVE_SECURITY_PAM_APPL_H)
#include <security/pam_appl.h>
-#elif defined(HAVE_PAM_PAM_APPL_H)
-#include <pam/pam_appl.h>
-#endif
#endif /* LINUX */
-#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
-#elif defined(HAVE_PAM_PAM_MODULES_H)
-#include <pam/pam_modules.h>
-#endif
#include "general.h"
@@ -109,7 +101,7 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags,
_log_err( LOG_DEBUG, "username [%s] obtained", name );
}
- if (!initialize_password_db(True, NULL)) {
+ if (!initialize_password_db(True)) {
_log_err( LOG_ALERT, "Cannot access samba password database" );
retval = PAM_AUTHINFO_UNAVAIL;
AUTH_RETURN;
diff --git a/source/pam_smbpass/pam_smb_passwd.c b/source/pam_smbpass/pam_smb_passwd.c
index 9f36bc11e4b..79bcfb6ff0f 100644
--- a/source/pam_smbpass/pam_smb_passwd.c
+++ b/source/pam_smbpass/pam_smb_passwd.c
@@ -29,18 +29,10 @@
and others (including FreeBSD). */
#ifndef LINUX
-#if defined(HAVE_SECURITY_PAM_APPL_H)
#include <security/pam_appl.h>
-#elif defined(HAVE_PAM_PAM_APPL_H)
-#include <pam/pam_appl.h>
-#endif
#endif
-#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
-#elif defined(HAVE_PAM_PAM_MODULES_H)
-#include <pam/pam_modules.h>
-#endif
#include "general.h"
@@ -137,7 +129,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
from a SIGPIPE it's not expecting */
oldsig_handler = CatchSignal(SIGPIPE, SIGNAL_CAST SIG_IGN);
- if (!initialize_password_db(False, NULL)) {
+ if (!initialize_password_db(False)) {
_log_err( LOG_ALERT, "Cannot access samba password database" );
CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
return PAM_AUTHINFO_UNAVAIL;
diff --git a/source/param/loadparm.c b/source/param/loadparm.c
index 759c24ca738..be49927cc6f 100644
--- a/source/param/loadparm.c
+++ b/source/param/loadparm.c
@@ -72,17 +72,6 @@ extern userdom_struct current_user_info;
#define HOMES_NAME "homes"
#endif
-/* the special value for the include parameter
- * to be interpreted not as a file name but to
- * trigger loading of the global smb.conf options
- * from registry. */
-#ifndef INCLUDE_REGISTRY_NAME
-#define INCLUDE_REGISTRY_NAME "registry"
-#endif
-
-static int regdb_last_seqnum = 0;
-static BOOL include_registry_globals = False;
-
/* some helpful bits */
#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && (ServicePtrs != NULL) && ServicePtrs[(i)]->valid)
#define VALID(i) (ServicePtrs != NULL && ServicePtrs[i]->valid)
@@ -90,6 +79,7 @@ static BOOL include_registry_globals = False;
#define USERSHARE_VALID 1
#define USERSHARE_PENDING_DELETE 2
+int keepalive = DEFAULT_KEEPALIVE;
BOOL use_getwd_cache = True;
extern int extra_time_offset;
@@ -188,11 +178,9 @@ typedef struct {
BOOL bWinbindUseDefaultDomain;
BOOL bWinbindTrustedDomainsOnly;
BOOL bWinbindNestedGroups;
- int winbind_expand_groups;
BOOL bWinbindRefreshTickets;
BOOL bWinbindOfflineLogon;
BOOL bWinbindNormalizeNames;
- BOOL bWinbindRpcOnly;
char **szIdmapDomains;
char **szIdmapBackend; /* deprecated */
char *szIdmapAllocBackend;
@@ -252,8 +240,6 @@ typedef struct {
int iAclCompat;
char *szCupsServer;
char *szIPrintServer;
- char *ctdbdSocket;
- BOOL clustering;
int ldap_passwd_sync;
int ldap_replication_sleep;
int ldap_timeout; /* This is initialised in init_globals */
@@ -319,7 +305,6 @@ typedef struct {
BOOL bASUSupport;
BOOL bUsershareOwnerOnly;
BOOL bUsershareAllowGuests;
- BOOL bRegistryShares;
int restrict_anonymous;
int name_cache_timeout;
int client_signing;
@@ -329,7 +314,6 @@ typedef struct {
int iIdmapNegativeCacheTime;
BOOL bResetOnZeroVC;
- int iKeepalive;
param_opt_struct *param_opt;
} global;
@@ -384,6 +368,7 @@ typedef struct {
char *fstype;
char **szVfsObjects;
char *szMSDfsProxy;
+ char *szAioWriteBehind;
char *szDfree;
int iMinPrintSpace;
int iMaxPrintJobs;
@@ -471,6 +456,7 @@ typedef struct {
int iAioReadSize;
int iAioWriteSize;
int iMap_readonly;
+ int iDirectoryNameCacheSize;
param_opt_struct *param_opt;
char dummy[3]; /* for alignment */
@@ -524,6 +510,7 @@ static service sDefault = {
NULL, /* fstype */
NULL, /* vfs objects */
NULL, /* szMSDfsProxy */
+ NULL, /* szAioWriteBehind */
NULL, /* szDfree */
0, /* iMinPrintSpace */
1000, /* iMaxPrintJobs */
@@ -611,7 +598,11 @@ static service sDefault = {
0, /* iAioReadSize */
0, /* iAioWriteSize */
MAP_READONLY_YES, /* iMap_readonly */
-
+#ifdef BROKEN_DIRECTORY_HANDLING
+ 0, /* iDirectoryNameCacheSize */
+#else
+ 100, /* iDirectoryNameCacheSize */
+#endif
NULL, /* Parametric options */
"" /* dummy */
@@ -978,6 +969,7 @@ static struct parm_struct parm_table[] = {
{"allocation roundup size", P_INTEGER, P_LOCAL, &sDefault.iallocation_roundup_size, NULL, NULL, FLAG_ADVANCED},
{"aio read size", P_INTEGER, P_LOCAL, &sDefault.iAioReadSize, NULL, NULL, FLAG_ADVANCED},
{"aio write size", P_INTEGER, P_LOCAL, &sDefault.iAioWriteSize, NULL, NULL, FLAG_ADVANCED},
+ {"aio write behind", P_STRING, P_LOCAL, &sDefault.szAioWriteBehind, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL },
{"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED},
{"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_ADVANCED},
{"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_ADVANCED},
@@ -1023,8 +1015,9 @@ static struct parm_struct parm_table[] = {
{"block size", P_INTEGER, P_LOCAL, &sDefault.iBlock_size, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
{"deadtime", P_INTEGER, P_GLOBAL, &Globals.deadtime, NULL, NULL, FLAG_ADVANCED},
{"getwd cache", P_BOOL, P_GLOBAL, &use_getwd_cache, NULL, NULL, FLAG_ADVANCED},
- {"keepalive", P_INTEGER, P_GLOBAL, &Globals.iKeepalive, NULL, NULL, FLAG_ADVANCED},
+ {"keepalive", P_INTEGER, P_GLOBAL, &keepalive, NULL, NULL, FLAG_ADVANCED},
{"change notify", P_BOOL, P_LOCAL, &sDefault.bChangeNotify, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE },
+ {"directory name cache size", P_INTEGER, P_LOCAL, &sDefault.iDirectoryNameCacheSize, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE },
{"kernel change notify", P_BOOL, P_LOCAL, &sDefault.bKernelChangeNotify, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE },
{"lpq cache time", P_INTEGER, P_GLOBAL, &Globals.lpqcachetime, NULL, NULL, FLAG_ADVANCED},
@@ -1046,8 +1039,6 @@ static struct parm_struct parm_table[] = {
{"write cache size", P_INTEGER, P_LOCAL, &sDefault.iWriteCacheSize, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_DEPRECATED},
{"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED},
- {"ctdbd socket", P_STRING, P_GLOBAL, &Globals.ctdbdSocket, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL},
- {"clustering", P_BOOL, P_GLOBAL, &Globals.clustering, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL},
{N_("Printing Options"), P_SEP, P_SEPARATOR},
@@ -1247,7 +1238,6 @@ static struct parm_struct parm_table[] = {
{"root preexec close", P_BOOL, P_LOCAL, &sDefault.bRootpreexecClose, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE},
{"root postexec", P_STRING, P_LOCAL, &sDefault.szRootPostExec, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT},
{"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT},
- {"registry shares", P_BOOL, P_GLOBAL, &Globals.bRegistryShares, NULL, NULL, FLAG_ADVANCED},
{"usershare allow guests", P_BOOL, P_GLOBAL, &Globals.bUsershareAllowGuests, NULL, NULL, FLAG_ADVANCED},
{"usershare max shares", P_INTEGER, P_GLOBAL, &Globals.iUsershareMaxShares, NULL, NULL, FLAG_ADVANCED},
{"usershare owner only", P_BOOL, P_GLOBAL, &Globals.bUsershareOwnerOnly, NULL, NULL, FLAG_ADVANCED},
@@ -1302,12 +1292,10 @@ static struct parm_struct parm_table[] = {
{"winbind use default domain", P_BOOL, P_GLOBAL, &Globals.bWinbindUseDefaultDomain, NULL, NULL, FLAG_ADVANCED},
{"winbind trusted domains only", P_BOOL, P_GLOBAL, &Globals.bWinbindTrustedDomainsOnly, NULL, NULL, FLAG_ADVANCED},
{"winbind nested groups", P_BOOL, P_GLOBAL, &Globals.bWinbindNestedGroups, NULL, NULL, FLAG_ADVANCED},
- {"winbind expand groups", P_INTEGER, P_GLOBAL, &Globals.winbind_expand_groups, NULL, NULL, FLAG_ADVANCED},
{"winbind nss info", P_LIST, P_GLOBAL, &Globals.szWinbindNssInfo, NULL, NULL, FLAG_ADVANCED},
{"winbind refresh tickets", P_BOOL, P_GLOBAL, &Globals.bWinbindRefreshTickets, NULL, NULL, FLAG_ADVANCED},
{"winbind offline logon", P_BOOL, P_GLOBAL, &Globals.bWinbindOfflineLogon, NULL, NULL, FLAG_ADVANCED},
{"winbind normalize names", P_BOOL, P_GLOBAL, &Globals.bWinbindNormalizeNames, NULL, NULL, FLAG_ADVANCED},
- {"winbind rpc only", P_BOOL, P_GLOBAL, &Globals.bWinbindRpcOnly, NULL, NULL, FLAG_ADVANCED},
{NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0}
};
@@ -1645,16 +1633,12 @@ static void init_globals(BOOL first_time_only)
string_set(&Globals.szCupsServer, "");
string_set(&Globals.szIPrintServer, "");
- string_set(&Globals.ctdbdSocket, "");
- Globals.clustering = False;
-
Globals.winbind_cache_time = 300; /* 5 minutes */
Globals.bWinbindEnumUsers = False;
Globals.bWinbindEnumGroups = False;
Globals.bWinbindUseDefaultDomain = False;
Globals.bWinbindTrustedDomainsOnly = False;
Globals.bWinbindNestedGroups = True;
- Globals.winbind_expand_groups = 1;
Globals.szWinbindNssInfo = str_list_make("template", NULL);
Globals.bWinbindRefreshTickets = False;
Globals.bWinbindOfflineLogon = False;
@@ -1689,11 +1673,6 @@ static void init_globals(BOOL first_time_only)
Globals.bUsershareOwnerOnly = True;
/* By default disallow guest access to usershares. */
Globals.bUsershareAllowGuests = False;
-
- Globals.iKeepalive = DEFAULT_KEEPALIVE;
-
- /* By default no shares out of the registry */
- Globals.bRegistryShares = False;
}
static TALLOC_CTX *lp_talloc;
@@ -1717,7 +1696,7 @@ TALLOC_CTX *tmp_talloc_ctx(void)
}
if (lp_talloc == NULL) {
- smb_panic("Could not create temporary talloc context");
+ smb_panic("Could not create temporary talloc context\n");
}
return lp_talloc;
@@ -1920,18 +1899,15 @@ FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups)
FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain)
FN_GLOBAL_BOOL(lp_winbind_trusted_domains_only, &Globals.bWinbindTrustedDomainsOnly)
FN_GLOBAL_BOOL(lp_winbind_nested_groups, &Globals.bWinbindNestedGroups)
-FN_GLOBAL_INTEGER(lp_winbind_expand_groups, &Globals.winbind_expand_groups)
FN_GLOBAL_BOOL(lp_winbind_refresh_tickets, &Globals.bWinbindRefreshTickets)
FN_GLOBAL_BOOL(lp_winbind_offline_logon, &Globals.bWinbindOfflineLogon)
FN_GLOBAL_BOOL(lp_winbind_normalize_names, &Globals.bWinbindNormalizeNames)
-FN_GLOBAL_BOOL(lp_winbind_rpc_only, &Globals.bWinbindRpcOnly)
FN_GLOBAL_LIST(lp_idmap_domains, &Globals.szIdmapDomains)
FN_GLOBAL_LIST(lp_idmap_backend, &Globals.szIdmapBackend) /* deprecated */
FN_GLOBAL_STRING(lp_idmap_alloc_backend, &Globals.szIdmapAllocBackend)
FN_GLOBAL_INTEGER(lp_idmap_cache_time, &Globals.iIdmapCacheTime)
FN_GLOBAL_INTEGER(lp_idmap_negative_cache_time, &Globals.iIdmapNegativeCacheTime)
-FN_GLOBAL_INTEGER(lp_keepalive, &Globals.iKeepalive)
FN_GLOBAL_BOOL(lp_passdb_expand_explicit, &Globals.bPassdbExpandExplicit)
FN_GLOBAL_STRING(lp_ldap_suffix, &Globals.szLdapSuffix)
@@ -1951,7 +1927,6 @@ FN_GLOBAL_LIST(lp_usershare_prefix_deny_list, &Globals.szUsersharePrefixDenyList
FN_GLOBAL_LIST(lp_eventlog_list, &Globals.szEventLogs)
-FN_GLOBAL_BOOL(lp_registry_shares, &Globals.bRegistryShares)
FN_GLOBAL_BOOL(lp_usershare_allow_guests, &Globals.bUsershareAllowGuests)
FN_GLOBAL_BOOL(lp_usershare_owner_only, &Globals.bUsershareOwnerOnly)
FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios)
@@ -2061,8 +2036,6 @@ FN_GLOBAL_LIST(lp_svcctl_list, &Globals.szServicesList)
FN_LOCAL_STRING(lp_cups_options, szCupsOptions)
FN_GLOBAL_STRING(lp_cups_server, &Globals.szCupsServer)
FN_GLOBAL_STRING(lp_iprint_server, &Globals.szIPrintServer)
-FN_GLOBAL_CONST_STRING(lp_ctdbd_socket, &Globals.ctdbdSocket)
-FN_GLOBAL_BOOL(lp_clustering, &Globals.clustering);
FN_LOCAL_STRING(lp_printcommand, szPrintcommand)
FN_LOCAL_STRING(lp_lpqcommand, szLpqcommand)
FN_LOCAL_STRING(lp_lprmcommand, szLprmcommand)
@@ -2091,6 +2064,7 @@ FN_LOCAL_STRING(lp_veto_files, szVetoFiles)
FN_LOCAL_STRING(lp_hide_files, szHideFiles)
FN_LOCAL_STRING(lp_veto_oplocks, szVetoOplockFiles)
FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot)
+FN_LOCAL_STRING(lp_aio_write_behind, szAioWriteBehind)
FN_LOCAL_STRING(lp_dfree_command, szDfree)
FN_LOCAL_BOOL(lp_autoloaded, autoloaded)
FN_LOCAL_BOOL(lp_preexec_close, bPreexecClose)
@@ -2172,6 +2146,7 @@ FN_LOCAL_INTEGER(lp_allocation_roundup_size, iallocation_roundup_size)
FN_LOCAL_INTEGER(lp_aio_read_size, iAioReadSize)
FN_LOCAL_INTEGER(lp_aio_write_size, iAioWriteSize)
FN_LOCAL_INTEGER(lp_map_readonly, iMap_readonly)
+FN_LOCAL_INTEGER(lp_directory_name_cache_size, iDirectoryNameCacheSize)
FN_LOCAL_CHAR(lp_magicchar, magic_char)
FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time)
FN_GLOBAL_LIST(lp_winbind_nss_info, &Globals.szWinbindNssInfo)
@@ -2188,6 +2163,7 @@ static int getservicebyname(const char *pszServiceName,
service * pserviceDest);
static void copy_service(service * pserviceDest,
service * pserviceSource, BOOL *pcopymapDest);
+static BOOL service_ok(int iService);
static BOOL do_parameter(const char *pszParmName, const char *pszParmValue);
static BOOL do_section(const char *pszSectionName);
static void init_copymap(service * pservice);
@@ -2605,7 +2581,7 @@ static int add_a_service(const service *pservice, const char *name)
}
/***************************************************************************
- Canonicalize by converting to lowercase.
+ Convert a string to uppercase and remove whitespaces.
***************************************************************************/
static char *canonicalize_servicename(const char *src)
@@ -2699,10 +2675,6 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService,
int lp_add_service(const char *pszService, int iDefaultService)
{
- if (iDefaultService < 0) {
- return add_a_service(&sDefault, pszService);
- }
-
return (add_a_service(ServicePtrs[iDefaultService], pszService));
}
@@ -2776,36 +2748,6 @@ BOOL lp_add_printer(const char *pszPrintername, int iDefaultService)
return (True);
}
-
-/***************************************************************************
- Check whether the given parameter name is valid.
- Parametric options (names containing a colon) are considered valid.
-***************************************************************************/
-
-BOOL lp_parameter_is_valid(const char *pszParmName)
-{
- return ((map_parameter(pszParmName) != -1) ||
- (strchr(pszParmName, ':') != NULL));
-}
-
-/***************************************************************************
- Check whether the given name is the name of a global parameter.
- Returns True for strings belonging to parameters of class
- P_GLOBAL, False for all other strings, also for parametric options
- and strings not belonging to any option.
-***************************************************************************/
-
-BOOL lp_parameter_is_global(const char *pszParmName)
-{
- int num = map_parameter(pszParmName);
-
- if (num >= 0) {
- return (parm_table[num].p_class == P_GLOBAL);
- }
-
- return False;
-}
-
/***************************************************************************
Map a parameter's string representation to something we can use.
Returns False if the parameter string is not recognised, else TRUE.
@@ -3037,7 +2979,7 @@ Check a service for consistency. Return False if the service is in any way
incomplete or faulty, else True.
***************************************************************************/
-BOOL service_ok(int iService)
+static BOOL service_ok(int iService)
{
BOOL bRetval;
@@ -3070,7 +3012,7 @@ BOOL service_ok(int iService)
ServicePtrs[iService]->bAvailable = False;
}
- /* If a service is flagged unavailable, log the fact at level 1. */
+ /* If a service is flagged unavailable, log the fact at level 0. */
if (!ServicePtrs[iService]->bAvailable)
DEBUG(1, ("NOTE: Service %s is flagged unavailable.\n",
ServicePtrs[iService]->szService));
@@ -3078,244 +3020,6 @@ BOOL service_ok(int iService)
return (bRetval);
}
-/*
- * lp_regdb_open - regdb helper function
- *
- * this should be considered an interim solution that becomes
- * superfluous once the registry code has been rewritten
- * do allow use of the tdb portion of the registry alone.
- *
- * in the meanwhile this provides a lean access
- * to the registry globals.
- */
-
-static struct tdb_wrap *lp_regdb_open(void)
-{
- struct tdb_wrap *reg_tdb = NULL;
- const char *vstring = "INFO/version";
- uint32 vers_id;
-
- become_root();
- reg_tdb = tdb_wrap_open(NULL, lock_path("registry.tdb"), 0,
- REG_TDB_FLAGS, O_RDWR, 0600);
- if (!reg_tdb) {
- DEBUG(1, ("lp_regdb_open: failed to open %s: %s\n",
- lock_path("registry.tdb"), strerror(errno)));
- goto done;
- }
- else {
- DEBUG(10, ("lp_regdb_open: reg tdb opened.\n"));
- }
- unbecome_root();
-
- vers_id = tdb_fetch_int32(reg_tdb->tdb, vstring);
- if (vers_id != REGVER_V1) {
- DEBUG(10, ("lp_regdb_open: INFO: registry tdb %s has wrong "
- "INFO/version (got %d, expected %d)\n",
- lock_path("registry.tdb"), vers_id, REGVER_V1));
- /* this is apparently not implemented in the tdb */
- }
-
-done:
- return reg_tdb;
-}
-
-/*
- * process_registry_globals
- *
- * this is the interim version of process_registry globals
- *
- * until we can do it as we would like using the api and only
- * using the tdb portion of the registry (see below),
- * this just provides the needed functionality of regdb_fetch_values
- * and regdb_unpack_values, circumventing any fancy stuff, to
- * give us access to the registry globals.
- */
-static BOOL process_registry_globals(BOOL (*pfunc)(const char *, const char *))
-{
- BOOL ret = False;
- struct tdb_wrap *reg_tdb = NULL;
- WERROR err;
- char *keystr;
- TDB_DATA data;
- /* vars for the tdb unpack loop */
- int len = 0;
- int i;
- int buflen;
- uint8 *buf;
- uint32 type;
- uint32 size;
- uint32 num_values = 0;
- uint8 *data_p;
- pstring valname;
- char * valstr;
- struct registry_value *value = NULL;
-
- include_registry_globals = True;
-
- ZERO_STRUCT(data);
-
- reg_tdb = lp_regdb_open();
- if (!reg_tdb) {
- DEBUG(1, ("Error opening the registry!\n"));
- goto done;
- }
-
- /* reg_tdb is from now on used as talloc ctx.
- * freeing it closes the tdb (if refcount is 0) */
-
- keystr = talloc_asprintf(reg_tdb,"%s/%s/%s", REG_VALUE_PREFIX,
- KEY_SMBCONF, GLOBAL_NAME);
- normalize_dbkey(keystr);
-
- DEBUG(10, ("process_registry_globals: fetching key '%s'\n",
- keystr));
-
- data = tdb_fetch_bystring(reg_tdb->tdb, keystr);
- if (!data.dptr) {
- ret = True;
- goto done;
- }
-
- buf = data.dptr;
- buflen = data.dsize;
-
- /* unpack number of values */
- len = tdb_unpack(buf, buflen, "d", &num_values);
- DEBUG(10, ("process_registry_globals: got %d values from tdb\n",
- num_values));
-
- /* unpack the values */
- for (i=0; i < num_values; i++) {
- type = REG_NONE;
- size = 0;
- data_p = NULL;
- len += tdb_unpack(buf+len, buflen-len, "fdB",
- valname,
- &type,
- &size,
- &data_p);
- if (registry_smbconf_valname_forbidden(valname)) {
- DEBUG(10, ("process_registry_globals: Ignoring "
- "parameter '%s' in registry.\n", valname));
- continue;
- }
- DEBUG(10, ("process_registry_globals: got value '%s'\n",
- valname));
- if (size && data_p) {
- err = registry_pull_value(reg_tdb,
- &value,
- type,
- data_p,
- size,
- size);
- SAFE_FREE(data_p);
- if (!W_ERROR_IS_OK(err)) {
- goto done;
- }
- switch(type) {
- case REG_DWORD:
- valstr = talloc_asprintf(reg_tdb, "%d",
- value->v.dword);
- pfunc(valname, valstr);
- break;
- case REG_SZ:
- pfunc(valname, value->v.sz.str);
- break;
- default:
- /* ignore other types */
- break;
- }
- }
- }
-
- ret = pfunc("registry shares", "yes");
- regdb_last_seqnum = tdb_get_seqnum(reg_tdb->tdb);
-
-done:
- TALLOC_FREE(reg_tdb);
- SAFE_FREE(data.dptr);
- return ret;
-}
-
-#if 0
-/*
- * this is process_registry_globals as it _should_ be (roughly)
- * using the reg_api functions...
- *
- */
-static BOOL process_registry_globals(BOOL (*pfunc)(const char *, const char *))
-{
- BOOL ret = False;
- TALLOC_CTX *ctx = NULL;
- char *regpath = NULL;
- WERROR werr = WERR_OK;
- struct registry_key *key = NULL;
- struct registry_value *value = NULL;
- char *valname = NULL;
- char *valstr = NULL;
- uint32 idx = 0;
- NT_USER_TOKEN *token;
-
- ctx = talloc_init("process_registry_globals");
- if (!ctx) {
- smb_panic("Failed to create talloc context!");
- }
-
- include_registry_globals = True;
-
- if (!registry_init_regdb()) {
- DEBUG(1, ("Error initializing the registry.\n"));
- goto done;
- }
-
- if (!(token = registry_create_admin_token(ctx))) {
- DEBUG(1, ("Error creating admin token\n"));
- goto done;
- }
-
- regpath = talloc_asprintf(ctx,"%s\\%s", KEY_SMBCONF, GLOBAL_NAME);
- werr = reg_open_path(ctx, regpath, REG_KEY_READ, token, &key);
- if (!W_ERROR_IS_OK(werr)) {
- DEBUG(1, ("Registry smbconf global section does not exist.\n"));
- DEBUGADD(1, ("Error opening registry path '%s\\%s: %s\n",
- KEY_SMBCONF, GLOBAL_NAME, dos_errstr(werr)));
- goto done;
- }
-
- for (idx = 0;
- W_ERROR_IS_OK(werr = reg_enumvalue(ctx, key, idx, &valname,
- &value));
- idx++)
- {
- DEBUG(5, ("got global registry parameter '%s'\n", valname));
- switch(value->type) {
- case REG_DWORD:
- valstr = talloc_asprintf(ctx, "%d", value->v.dword);
- pfunc(valname, valstr);
- TALLOC_FREE(valstr);
- break;
- case REG_SZ:
- pfunc(valname, value->v.sz.str);
- break;
- default:
- /* ignore other types */
- break;
- }
- TALLOC_FREE(value);
- TALLOC_FREE(valstr);
- }
-
- ret = pfunc("registry shares", "yes");
-
- regdb_last_seqnum = regdb_get_seqnum();
-
-done:
- talloc_destroy(ctx);
- return ret;
-}
-#endif /* if 0 */
-
static struct file_lists {
struct file_lists *next;
char *name;
@@ -3369,21 +3073,9 @@ static void add_to_file_list(const char *fname, const char *subfname)
BOOL lp_file_list_changed(void)
{
struct file_lists *f = file_lists;
- struct tdb_wrap *reg_tdb = NULL;
DEBUG(6, ("lp_file_list_changed()\n"));
- if (include_registry_globals) {
- reg_tdb = lp_regdb_open();
- if (reg_tdb && (regdb_last_seqnum != tdb_get_seqnum(reg_tdb->tdb)))
- {
- DEBUGADD(6, ("regdb seqnum changed: old = %d, new = %d\n",
- regdb_last_seqnum, tdb_get_seqnum(reg_tdb->tdb)));
- TALLOC_FREE(reg_tdb);
- return True;
- }
- }
-
while (f) {
pstring n2;
time_t mod_time;
@@ -3484,17 +3176,6 @@ static BOOL handle_include(int snum, const char *pszParmValue, char **ptr)
pstring fname;
pstrcpy(fname, pszParmValue);
- if (strequal(fname, INCLUDE_REGISTRY_NAME)) {
- if (bInGlobalSection) {
- return process_registry_globals(do_parameter);
- }
- else {
- DEBUG(1, ("\"include = registry\" only effective "
- "in %s section\n", GLOBAL_NAME));
- return False;
- }
- }
-
standard_sub_basic(get_current_username(), current_user_info.domain,
fname,sizeof(fname));
@@ -3843,7 +3524,9 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
parm_ptr =
((char *)ServicePtrs[snum]) + PTR_DIFF(def_ptr,
&sDefault);
+ }
+ if (snum >= 0) {
if (!ServicePtrs[snum]->copymap)
init_copymap(ServicePtrs[snum]);
@@ -4314,8 +3997,7 @@ BOOL dump_a_parameter(int snum, char *parm_name, FILE * f, BOOL isGlobal)
}
/***************************************************************************
- Return info about the next parameter in a service.
- snum==GLOBAL_SECTION_SNUM gives the globals.
+ Return info about the next service in a service. snum==GLOBAL_SECTION_SNUM gives the globals.
Return NULL when out of parameters.
***************************************************************************/
@@ -4335,9 +4017,6 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters)
&& (parm_table[*i].ptr ==
parm_table[(*i) - 1].ptr))
continue;
-
- if (is_default(*i) && !allparameters)
- continue;
return &parm_table[(*i)++];
}
diff --git a/source/passdb/login_cache.c b/source/passdb/login_cache.c
index dc13173a3fb..7fd3b47826f 100644
--- a/source/passdb/login_cache.c
+++ b/source/passdb/login_cache.c
@@ -66,8 +66,7 @@ BOOL login_cache_shutdown(void)
/* if we can't read the cache, oh well, no need to return anything */
LOGIN_CACHE * login_cache_read(struct samu *sampass)
{
- char *keystr;
- TDB_DATA databuf;
+ TDB_DATA keybuf, databuf;
LOGIN_CACHE *entry;
if (!login_cache_init())
@@ -77,16 +76,17 @@ LOGIN_CACHE * login_cache_read(struct samu *sampass)
return NULL;
}
- keystr = SMB_STRDUP(pdb_get_nt_username(sampass));
- if (!keystr || !keystr[0]) {
- SAFE_FREE(keystr);
+ keybuf.dptr = SMB_STRDUP(pdb_get_nt_username(sampass));
+ if (!keybuf.dptr || !strlen(keybuf.dptr)) {
+ SAFE_FREE(keybuf.dptr);
return NULL;
}
+ keybuf.dsize = strlen(keybuf.dptr) + 1;
DEBUG(7, ("Looking up login cache for user %s\n",
- keystr));
- databuf = tdb_fetch_bystring(cache, keystr);
- SAFE_FREE(keystr);
+ keybuf.dptr));
+ databuf = tdb_fetch(cache, keybuf);
+ SAFE_FREE(keybuf.dptr);
if (!(entry = SMB_MALLOC_P(LOGIN_CACHE))) {
DEBUG(1, ("Unable to allocate cache entry buffer!\n"));
@@ -114,8 +114,8 @@ LOGIN_CACHE * login_cache_read(struct samu *sampass)
BOOL login_cache_write(const struct samu *sampass, LOGIN_CACHE entry)
{
- char *keystr;
- TDB_DATA databuf;
+
+ TDB_DATA keybuf, databuf;
BOOL ret;
if (!login_cache_init())
@@ -125,11 +125,12 @@ BOOL login_cache_write(const struct samu *sampass, LOGIN_CACHE entry)
return False;
}
- keystr = SMB_STRDUP(pdb_get_nt_username(sampass));
- if (!keystr || !keystr[0]) {
- SAFE_FREE(keystr);
+ keybuf.dptr = SMB_STRDUP(pdb_get_nt_username(sampass));
+ if (!keybuf.dptr || !strlen(keybuf.dptr)) {
+ SAFE_FREE(keybuf.dptr);
return False;
}
+ keybuf.dsize = strlen(keybuf.dptr) + 1;
entry.entry_timestamp = time(NULL);
@@ -139,9 +140,9 @@ BOOL login_cache_write(const struct samu *sampass, LOGIN_CACHE entry)
entry.acct_ctrl,
entry.bad_password_count,
entry.bad_password_time);
- databuf.dptr = SMB_MALLOC_ARRAY(uint8, databuf.dsize);
+ databuf.dptr = SMB_MALLOC_ARRAY(char, databuf.dsize);
if (!databuf.dptr) {
- SAFE_FREE(keystr);
+ SAFE_FREE(keybuf.dptr);
return False;
}
@@ -151,13 +152,13 @@ BOOL login_cache_write(const struct samu *sampass, LOGIN_CACHE entry)
entry.bad_password_count,
entry.bad_password_time)
!= databuf.dsize) {
- SAFE_FREE(keystr);
+ SAFE_FREE(keybuf.dptr);
SAFE_FREE(databuf.dptr);
return False;
}
- ret = tdb_store_bystring(cache, keystr, databuf, 0);
- SAFE_FREE(keystr);
+ ret = tdb_store(cache, keybuf, databuf, 0);
+ SAFE_FREE(keybuf.dptr);
SAFE_FREE(databuf.dptr);
return ret == 0;
}
@@ -165,7 +166,7 @@ BOOL login_cache_write(const struct samu *sampass, LOGIN_CACHE entry)
BOOL login_cache_delentry(const struct samu *sampass)
{
int ret;
- char *keystr;
+ TDB_DATA keybuf;
if (!login_cache_init())
return False;
@@ -174,16 +175,17 @@ BOOL login_cache_delentry(const struct samu *sampass)
return False;
}
- keystr = SMB_STRDUP(pdb_get_nt_username(sampass));
- if (!keystr || !keystr[0]) {
- SAFE_FREE(keystr);
+ keybuf.dptr = SMB_STRDUP(pdb_get_nt_username(sampass));
+ if (!keybuf.dptr || !strlen(keybuf.dptr)) {
+ SAFE_FREE(keybuf.dptr);
return False;
}
-
- DEBUG(9, ("About to delete entry for %s\n", keystr));
- ret = tdb_delete_bystring(cache, keystr);
+ keybuf.dsize = strlen(keybuf.dptr) + 1;
+ DEBUG(9, ("About to delete entry for %s\n", keybuf.dptr));
+ ret = tdb_delete(cache, keybuf);
DEBUG(9, ("tdb_delete returned %d\n", ret));
- SAFE_FREE(keystr);
+ SAFE_FREE(keybuf.dptr);
return ret == 0;
}
+
diff --git a/source/passdb/lookup_sid.c b/source/passdb/lookup_sid.c
index f6aacd17675..37285f01d23 100644
--- a/source/passdb/lookup_sid.c
+++ b/source/passdb/lookup_sid.c
@@ -102,7 +102,7 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
goto ok;
}
- if (!(flags & LOOKUP_NAME_EXPLICIT) && strequal(domain, unix_users_domain_name())) {
+ if (strequal(domain, unix_users_domain_name())) {
if (lookup_unix_user_name(name, &sid)) {
type = SID_NAME_USER;
goto ok;
@@ -111,7 +111,7 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
return False;
}
- if (!(flags & LOOKUP_NAME_EXPLICIT) && strequal(domain, unix_groups_domain_name())) {
+ if (strequal(domain, unix_groups_domain_name())) {
if (lookup_unix_group_name(name, &sid)) {
type = SID_NAME_DOM_GRP;
goto ok;
@@ -178,7 +178,8 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
/* 5. Trusted domains as such, to me it looks as if members don't do
this, tested an XP workstation in a NT domain -- vl */
- if (IS_DC && (pdb_get_trusteddom_pw(name, NULL, &sid, NULL))) {
+ if (IS_DC && (secrets_fetch_trusted_domain_password(name, NULL,
+ &sid, NULL))) {
/* Swap domain and name */
tmp = name; name = domain; domain = tmp;
type = SID_NAME_DOMAIN;
@@ -262,13 +263,13 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
/* 11. Ok, windows would end here. Samba has two more options:
Unmapped users and unmapped groups */
- if (!(flags & LOOKUP_NAME_EXPLICIT) && lookup_unix_user_name(name, &sid)) {
+ if (lookup_unix_user_name(name, &sid)) {
domain = talloc_strdup(tmp_ctx, unix_users_domain_name());
type = SID_NAME_USER;
goto ok;
}
- if (!(flags & LOOKUP_NAME_EXPLICIT) && lookup_unix_group_name(name, &sid)) {
+ if (lookup_unix_group_name(name, &sid)) {
domain = talloc_strdup(tmp_ctx, unix_groups_domain_name());
type = SID_NAME_DOM_GRP;
goto ok;
@@ -591,9 +592,9 @@ static BOOL lookup_as_domain(const DOM_SID *sid, TALLOC_CTX *mem_ctx,
* and for SIDs that have 4 sub-authorities and thus look like
* domains */
- if (!NT_STATUS_IS_OK(pdb_enum_trusteddoms(mem_ctx,
- &num_domains,
- &domains))) {
+ if (!NT_STATUS_IS_OK(secrets_trusted_domains(mem_ctx,
+ &num_domains,
+ &domains))) {
return False;
}
@@ -631,7 +632,7 @@ static BOOL lookup_as_domain(const DOM_SID *sid, TALLOC_CTX *mem_ctx,
* Level 2: Ask domain and trusted domains, no builtin and wkn
* Level 3: Only ask domain
* Level 4: W2k3ad: Only ask AD trusts
- * Level 5: Only ask transitive forest trusts
+ * Level 5: Don't lookup anything
* Level 6: Like 4
*/
@@ -1228,7 +1229,7 @@ static BOOL legacy_sid_to_uid(const DOM_SID *psid, uid_t *puid)
}
/* This was ours, but it was not mapped. Fail */
- }
+ }
DEBUG(10,("LEGACY: mapping failed for sid %s\n", sid_string_static(psid)));
return False;
@@ -1287,12 +1288,12 @@ static BOOL legacy_sid_to_gid(const DOM_SID *psid, gid_t *pgid)
*pgid = id.gid;
goto done;
}
-
+
/* This was ours, but it was not mapped. Fail */
}
DEBUG(10,("LEGACY: mapping failed for sid %s\n", sid_string_static(psid)));
- return False;
+ return False;
done:
DEBUG(10,("LEGACY: sid %s -> gid %u\n", sid_string_static(psid),
@@ -1324,7 +1325,7 @@ void uid_to_sid(DOM_SID *psid, uid_t uid)
uid));
return;
}
-
+
DEBUG(10,("uid %u -> sid %s\n",
(unsigned int)uid, sid_string_static(psid)));
@@ -1339,7 +1340,7 @@ void uid_to_sid(DOM_SID *psid, uid_t uid)
void gid_to_sid(DOM_SID *psid, gid_t gid)
{
ZERO_STRUCTP(psid);
-
+
if (fetch_sid_from_gid_cache(psid, gid))
return;
@@ -1398,7 +1399,7 @@ BOOL sid_to_uid(const DOM_SID *psid, uid_t *puid)
sid_string_static(psid)));
return False;
}
-
+
/* TODO: Here would be the place to allocate both a gid and a uid for
* the SID in question */
diff --git a/source/passdb/machine_sid.c b/source/passdb/machine_sid.c
index 998dd8ad732..d7cae06749c 100644
--- a/source/passdb/machine_sid.c
+++ b/source/passdb/machine_sid.c
@@ -186,7 +186,7 @@ DOM_SID *get_global_sam_sid(void)
pdb_generate_sam_sid() as needed */
if (!(global_sam_sid = pdb_generate_sam_sid())) {
- smb_panic("could not generate a machine SID");
+ smb_panic("Could not generate a machine SID\n");
}
return global_sam_sid;
@@ -220,5 +220,6 @@ BOOL sid_check_is_in_our_domain(const DOM_SID *sid)
sid_copy(&dom_sid, sid);
sid_split_rid(&dom_sid, &rid);
- return sid_check_is_domain(&dom_sid);
+
+ return sid_equal(&dom_sid, get_global_sam_sid());
}
diff --git a/source/passdb/passdb.c b/source/passdb/passdb.c
index ee84472d785..c073cc9a40d 100644
--- a/source/passdb/passdb.c
+++ b/source/passdb/passdb.c
@@ -550,7 +550,7 @@ BOOL algorithmic_pdb_rid_is_user(uint32 rid)
Convert a name into a SID. Used in the lookup name rpc.
********************************************************************/
-BOOL lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
+BOOL lookup_global_sam_name(const char *user, int flags, uint32_t *rid,
enum lsa_SidType *type)
{
GROUP_MAP map;
@@ -561,7 +561,7 @@ BOOL lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
name "None" on Windows. You will get an error that
the group already exists. */
- if ( strequal( name, "None" ) ) {
+ if ( strequal( user, "None" ) ) {
*rid = DOMAIN_GROUP_RID_USERS;
*type = SID_NAME_DOM_GRP;
@@ -581,7 +581,7 @@ BOOL lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
}
become_root();
- ret = pdb_getsampwnam(sam_account, name);
+ ret = pdb_getsampwnam(sam_account, user);
unbecome_root();
if (ret) {
@@ -593,7 +593,7 @@ BOOL lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
if (ret) {
if (!sid_check_is_in_our_domain(&user_sid)) {
DEBUG(0, ("User %s with invalid SID %s in passdb\n",
- name, sid_string_static(&user_sid)));
+ user, sid_string_static(&user_sid)));
return False;
}
@@ -608,7 +608,7 @@ BOOL lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
*/
become_root();
- ret = pdb_getgrnam(&map, name);
+ ret = pdb_getgrnam(&map, user);
unbecome_root();
if (!ret) {
@@ -618,7 +618,7 @@ BOOL lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
/* BUILTIN groups are looked up elsewhere */
if (!sid_check_is_in_our_domain(&map.sid)) {
DEBUG(10, ("Found group %s (%s) not in our domain -- "
- "ignoring.", name,
+ "ignoring.", user,
sid_string_static(&map.sid)));
return False;
}
@@ -873,7 +873,7 @@ BOOL init_sam_from_buffer_v3(struct samu *sampass, uint8 *buf, uint32 buflen)
/* TDB_FORMAT_STRING_V3 "dddddddBBBBBBBBBBBBddBBBdwdBwwd" */
/* unpack the buffer into variables */
- len = tdb_unpack (buf, buflen, TDB_FORMAT_STRING_V3,
+ len = tdb_unpack ((char *)buf, buflen, TDB_FORMAT_STRING_V3,
&logon_time, /* d */
&logoff_time, /* d */
&kickoff_time, /* d */
@@ -1278,7 +1278,7 @@ uint32 init_buffer_from_sam_v3 (uint8 **buf, struct samu *sampass, BOOL size_onl
}
/* now for the real call to tdb_pack() */
- buflen = tdb_pack(*buf, len, TDB_FORMAT_STRING_V3,
+ buflen = tdb_pack((char *)*buf, len, TDB_FORMAT_STRING_V3,
logon_time, /* d */
logoff_time, /* d */
kickoff_time, /* d */
@@ -1439,11 +1439,10 @@ BOOL pdb_update_autolock_flag(struct samu *sampass, BOOL *updated)
pdb_get_username(sampass), (uint32)LastBadPassword, duration*60, (uint32)time(NULL)));
if (LastBadPassword == (time_t)0) {
- DEBUG(1,("pdb_update_autolock_flag: Account %s "
- "administratively locked out with no bad password "
- "time. Leaving locked out.\n",
- pdb_get_username(sampass) ));
- return True;
+ DEBUG(1,("pdb_update_autolock_flag: Account %s administratively locked out with no \
+bad password time. Leaving locked out.\n",
+ pdb_get_username(sampass) ));
+ return True;
}
if ((time(NULL) > (LastBadPassword + convert_uint32_to_time_t(duration) * 60))) {
@@ -1517,46 +1516,3 @@ BOOL pdb_increment_bad_password_count(struct samu *sampass)
return True;
}
-
-
-/*******************************************************************
- Wrapper around retrieving the trust account password
-*******************************************************************/
-
-BOOL get_trust_pw(const char *domain, uint8 ret_pwd[16], uint32 *channel)
-{
- DOM_SID sid;
- char *pwd;
- time_t last_set_time;
-
- /* if we are a DC and this is not our domain, then lookup an account
- for the domain trust */
-
- if ( IS_DC && !strequal(domain, lp_workgroup()) && lp_allow_trusted_domains() ) {
- if (!pdb_get_trusteddom_pw(domain, &pwd, &sid, &last_set_time)) {
- DEBUG(0, ("get_trust_pw: could not fetch trust "
- "account password for trusted domain %s\n",
- domain));
- return False;
- }
-
- *channel = SEC_CHAN_DOMAIN;
- E_md4hash(pwd, ret_pwd);
- SAFE_FREE(pwd);
-
- return True;
- }
-
- /* Just get the account for the requested domain. In the future this
- * might also cover to be member of more than one domain. */
-
- if (secrets_fetch_trust_account_password(domain, ret_pwd,
- &last_set_time, channel))
- return True;
-
- DEBUG(5, ("get_trust_pw: could not fetch trust account "
- "password for domain %s\n", domain));
- return False;
-}
-
-/* END */
diff --git a/source/passdb/pdb_get_set.c b/source/passdb/pdb_get_set.c
index 309161bf0f4..62898f3dac8 100644
--- a/source/passdb/pdb_get_set.c
+++ b/source/passdb/pdb_get_set.c
@@ -849,7 +849,7 @@ BOOL pdb_set_nt_passwd(struct samu *sampass, const uint8 pwd[NT_HASH_LEN], enum
sampass->nt_pw =
data_blob_talloc(sampass, pwd, NT_HASH_LEN);
} else {
- sampass->nt_pw = data_blob_null;
+ sampass->nt_pw = data_blob(NULL, 0);
}
return pdb_set_init_flags(sampass, PDB_NTPASSWD, flag);
@@ -868,7 +868,7 @@ BOOL pdb_set_lanman_passwd(struct samu *sampass, const uint8 pwd[LM_HASH_LEN], e
if (pwd && lp_lanman_auth() ) {
sampass->lm_pw = data_blob_talloc(sampass, pwd, LM_HASH_LEN);
} else {
- sampass->lm_pw = data_blob_null;
+ sampass->lm_pw = data_blob(NULL, 0);
}
return pdb_set_init_flags(sampass, PDB_LMPASSWD, flag);
diff --git a/source/passdb/pdb_interface.c b/source/passdb/pdb_interface.c
index 7f0555c9910..66eb87752b1 100644
--- a/source/passdb/pdb_interface.c
+++ b/source/passdb/pdb_interface.c
@@ -94,23 +94,6 @@ struct pdb_init_function_entry *pdb_find_backend_entry(const char *name)
return NULL;
}
-/*
- * The event context for the passdb backend. I know this is a bad hack and yet
- * another static variable, but our pdb API is a global thing per
- * definition. The first use for this is the LDAP idle function, more might be
- * added later.
- *
- * I don't feel too bad about this static variable, it replaces the
- * smb_idle_event_list that used to exist in lib/module.c. -- VL
- */
-
-static struct event_context *pdb_event_ctx;
-
-struct event_context *pdb_get_event_context(void)
-{
- return pdb_event_ctx;
-}
-
/******************************************************************
Make a pdb_methods from scratch
*******************************************************************/
@@ -904,28 +887,35 @@ NTSTATUS pdb_del_groupmem(TALLOC_CTX *mem_ctx, uint32 group_rid,
return pdb->del_groupmem(pdb, mem_ctx, group_rid, member_rid);
}
+BOOL pdb_find_alias(const char *name, DOM_SID *sid)
+{
+ struct pdb_methods *pdb = pdb_get_methods();
+ return NT_STATUS_IS_OK(pdb->find_alias(pdb, name, sid));
+}
+
NTSTATUS pdb_create_alias(const char *name, uint32 *rid)
{
struct pdb_methods *pdb = pdb_get_methods();
return pdb->create_alias(pdb, name, rid);
}
-NTSTATUS pdb_delete_alias(const DOM_SID *sid)
+BOOL pdb_delete_alias(const DOM_SID *sid)
{
struct pdb_methods *pdb = pdb_get_methods();
- return pdb->delete_alias(pdb, sid);
+ return NT_STATUS_IS_OK(pdb->delete_alias(pdb, sid));
+
}
-NTSTATUS pdb_get_aliasinfo(const DOM_SID *sid, struct acct_info *info)
+BOOL pdb_get_aliasinfo(const DOM_SID *sid, struct acct_info *info)
{
struct pdb_methods *pdb = pdb_get_methods();
- return pdb->get_aliasinfo(pdb, sid, info);
+ return NT_STATUS_IS_OK(pdb->get_aliasinfo(pdb, sid, info));
}
-NTSTATUS pdb_set_aliasinfo(const DOM_SID *sid, struct acct_info *info)
+BOOL pdb_set_aliasinfo(const DOM_SID *sid, struct acct_info *info)
{
struct pdb_methods *pdb = pdb_get_methods();
- return pdb->set_aliasinfo(pdb, sid, info);
+ return NT_STATUS_IS_OK(pdb->set_aliasinfo(pdb, sid, info));
}
NTSTATUS pdb_add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
@@ -1126,9 +1116,8 @@ BOOL pdb_new_rid(uint32 *rid)
If uninitialised, context will auto-init on first use.
***************************************************************/
-BOOL initialize_password_db(BOOL reload, struct event_context *event_ctx)
-{
- pdb_event_ctx = event_ctx;
+BOOL initialize_password_db(BOOL reload)
+{
return (pdb_get_methods_reload(reload) != NULL);
}
@@ -1307,7 +1296,7 @@ static BOOL pdb_default_sid_to_id(struct pdb_methods *methods,
goto done;
}
- /* check for "Unix Group" */
+ /* check for "Unix User" */
if ( sid_peek_check_rid(&global_sid_Unix_Groups, sid, &rid) ) {
id->gid = rid;
@@ -1316,10 +1305,10 @@ static BOOL pdb_default_sid_to_id(struct pdb_methods *methods,
goto done;
}
+
/* BUILTIN */
- if (sid_check_is_in_builtin(sid) ||
- sid_check_is_in_wellknown_domain(sid)) {
+ if (sid_peek_check_rid(&global_sid_Builtin, sid, &rid)) {
/* Here we only have aliases */
GROUP_MAP map;
if (!NT_STATUS_IS_OK(methods->getgrsid(methods, &map, *sid))) {
@@ -1426,10 +1415,10 @@ static BOOL get_memberuids(TALLOC_CTX *mem_ctx, gid_t gid, uid_t **pp_uids, size
}
static NTSTATUS pdb_default_enum_group_members(struct pdb_methods *methods,
- TALLOC_CTX *mem_ctx,
- const DOM_SID *group,
- uint32 **pp_member_rids,
- size_t *p_num_members)
+ TALLOC_CTX *mem_ctx,
+ const DOM_SID *group,
+ uint32 **pp_member_rids,
+ size_t *p_num_members)
{
gid_t gid;
uid_t *uids;
@@ -1468,11 +1457,11 @@ static NTSTATUS pdb_default_enum_group_members(struct pdb_methods *methods,
}
static NTSTATUS pdb_default_enum_group_memberships(struct pdb_methods *methods,
- TALLOC_CTX *mem_ctx,
- struct samu *user,
- DOM_SID **pp_sids,
- gid_t **pp_gids,
- size_t *p_num_groups)
+ TALLOC_CTX *mem_ctx,
+ struct samu *user,
+ DOM_SID **pp_sids,
+ gid_t **pp_gids,
+ size_t *p_num_groups)
{
size_t i;
gid_t gid;
@@ -1607,11 +1596,11 @@ static BOOL lookup_global_sam_rid(TALLOC_CTX *mem_ctx, uint32 rid,
}
static NTSTATUS pdb_default_lookup_rids(struct pdb_methods *methods,
- const DOM_SID *domain_sid,
- int num_rids,
- uint32 *rids,
- const char **names,
- enum lsa_SidType *attrs)
+ const DOM_SID *domain_sid,
+ int num_rids,
+ uint32 *rids,
+ const char **names,
+ enum lsa_SidType *attrs)
{
int i;
NTSTATUS result;
@@ -1671,11 +1660,11 @@ static NTSTATUS pdb_default_lookup_rids(struct pdb_methods *methods,
#if 0
static NTSTATUS pdb_default_lookup_names(struct pdb_methods *methods,
- const DOM_SID *domain_sid,
- int num_names,
- const char **names,
- uint32 *rids,
- enum lsa_SidType *attrs)
+ const DOM_SID *domain_sid,
+ int num_names,
+ const char **names,
+ uint32 *rids,
+ enum lsa_SidType *attrs)
{
int i;
NTSTATUS result;
@@ -2041,77 +2030,6 @@ void pdb_search_destroy(struct pdb_search *search)
}
/*******************************************************************
- trustodm methods
- *******************************************************************/
-
-BOOL pdb_get_trusteddom_pw(const char *domain, char** pwd, DOM_SID *sid,
- time_t *pass_last_set_time)
-{
- struct pdb_methods *pdb = pdb_get_methods();
- return pdb->get_trusteddom_pw(pdb, domain, pwd, sid,
- pass_last_set_time);
-}
-
-BOOL pdb_set_trusteddom_pw(const char* domain, const char* pwd,
- const DOM_SID *sid)
-{
- struct pdb_methods *pdb = pdb_get_methods();
- return pdb->set_trusteddom_pw(pdb, domain, pwd, sid);
-}
-
-BOOL pdb_del_trusteddom_pw(const char *domain)
-{
- struct pdb_methods *pdb = pdb_get_methods();
- return pdb->del_trusteddom_pw(pdb, domain);
-}
-
-NTSTATUS pdb_enum_trusteddoms(TALLOC_CTX *mem_ctx, uint32 *num_domains,
- struct trustdom_info ***domains)
-{
- struct pdb_methods *pdb = pdb_get_methods();
- return pdb->enum_trusteddoms(pdb, mem_ctx, num_domains, domains);
-}
-
-/*******************************************************************
- the defaults for trustdom methods:
- these simply call the original passdb/secrets.c actions,
- to be replaced by pdb_ldap.
- *******************************************************************/
-
-static BOOL pdb_default_get_trusteddom_pw(struct pdb_methods *methods,
- const char *domain,
- char** pwd,
- DOM_SID *sid,
- time_t *pass_last_set_time)
-{
- return secrets_fetch_trusted_domain_password(domain, pwd,
- sid, pass_last_set_time);
-
-}
-
-static BOOL pdb_default_set_trusteddom_pw(struct pdb_methods *methods,
- const char* domain,
- const char* pwd,
- const DOM_SID *sid)
-{
- return secrets_store_trusted_domain_password(domain, pwd, sid);
-}
-
-static BOOL pdb_default_del_trusteddom_pw(struct pdb_methods *methods,
- const char *domain)
-{
- return trusted_domain_password_delete(domain);
-}
-
-static NTSTATUS pdb_default_enum_trusteddoms(struct pdb_methods *methods,
- TALLOC_CTX *mem_ctx,
- uint32 *num_domains,
- struct trustdom_info ***domains)
-{
- return secrets_trusted_domains(mem_ctx, num_domains, domains);
-}
-
-/*******************************************************************
Create a pdb_methods structure and initialize it with the default
operations. In this way a passdb module can simply implement
the functionality it cares about. However, normally this is done
@@ -2153,6 +2071,7 @@ NTSTATUS make_pdb_method( struct pdb_methods **methods )
(*methods)->set_unix_primary_group = pdb_default_set_unix_primary_group;
(*methods)->add_groupmem = pdb_default_add_groupmem;
(*methods)->del_groupmem = pdb_default_del_groupmem;
+ (*methods)->find_alias = pdb_default_find_alias;
(*methods)->create_alias = pdb_default_create_alias;
(*methods)->delete_alias = pdb_default_delete_alias;
(*methods)->get_aliasinfo = pdb_default_get_aliasinfo;
@@ -2174,10 +2093,5 @@ NTSTATUS make_pdb_method( struct pdb_methods **methods )
(*methods)->search_groups = pdb_default_search_groups;
(*methods)->search_aliases = pdb_default_search_aliases;
- (*methods)->get_trusteddom_pw = pdb_default_get_trusteddom_pw;
- (*methods)->set_trusteddom_pw = pdb_default_set_trusteddom_pw;
- (*methods)->del_trusteddom_pw = pdb_default_del_trusteddom_pw;
- (*methods)->enum_trusteddoms = pdb_default_enum_trusteddoms;
-
return NT_STATUS_OK;
}
diff --git a/source/passdb/pdb_ldap.c b/source/passdb/pdb_ldap.c
index d7fca4142d6..afcb463a631 100644
--- a/source/passdb/pdb_ldap.c
+++ b/source/passdb/pdb_ldap.c
@@ -1,7 +1,7 @@
/*
Unix SMB/CIFS implementation.
LDAP protocol helper functions for SAMBA
- Copyright (C) Jean François Micouleau 1998
+ Copyright (C) Jean François Micouleau 1998
Copyright (C) Gerald Carter 2001-2003
Copyright (C) Shahms King 2001
Copyright (C) Andrew Bartlett 2002-2003
@@ -5543,8 +5543,7 @@ static NTSTATUS pdb_init_ldapsam_common(struct pdb_methods **pdb_method, const c
return NT_STATUS_NO_MEMORY;
}
- nt_status = smbldap_init(*pdb_method, pdb_get_event_context(),
- location, &ldap_state->smbldap_state);
+ nt_status = smbldap_init(*pdb_method, location, &ldap_state->smbldap_state);
if ( !NT_STATUS_IS_OK(nt_status) ) {
return nt_status;
diff --git a/source/passdb/pdb_smbpasswd.c b/source/passdb/pdb_smbpasswd.c
index 18ca74b2733..e01b4b1855c 100644
--- a/source/passdb/pdb_smbpasswd.c
+++ b/source/passdb/pdb_smbpasswd.c
@@ -1023,7 +1023,7 @@ This is no longer supported.!\n", pwd->smb_name));
#ifdef DEBUG_PASSWORD
DEBUG(100,("mod_smbfilepwd_entry: "));
- dump_data(100, (uint8 *)ascii_p16, wr_len);
+ dump_data(100, ascii_p16, wr_len);
#endif
if(wr_len > sizeof(linebuf)) {
diff --git a/source/passdb/pdb_tdb.c b/source/passdb/pdb_tdb.c
index 094479774b5..e9beaa05368 100644
--- a/source/passdb/pdb_tdb.c
+++ b/source/passdb/pdb_tdb.c
@@ -115,7 +115,7 @@ static BOOL init_sam_from_buffer_v0(struct samu *sampass, uint8 *buf, uint32 buf
/* TDB_FORMAT_STRING_V0 "ddddddBBBBBBBBBBBBddBBwdwdBwwd" */
/* unpack the buffer into variables */
- len = tdb_unpack (buf, buflen, TDB_FORMAT_STRING_V0,
+ len = tdb_unpack ((char *)buf, buflen, TDB_FORMAT_STRING_V0,
&logon_time, /* d */
&logoff_time, /* d */
&kickoff_time, /* d */
@@ -301,7 +301,7 @@ static BOOL init_sam_from_buffer_v1(struct samu *sampass, uint8 *buf, uint32 buf
/* TDB_FORMAT_STRING_V1 "dddddddBBBBBBBBBBBBddBBwdwdBwwd" */
/* unpack the buffer into variables */
- len = tdb_unpack (buf, buflen, TDB_FORMAT_STRING_V1,
+ len = tdb_unpack ((char *)buf, buflen, TDB_FORMAT_STRING_V1,
&logon_time, /* d */
&logoff_time, /* d */
&kickoff_time, /* d */
@@ -493,7 +493,7 @@ BOOL init_sam_from_buffer_v2(struct samu *sampass, uint8 *buf, uint32 buflen)
/* TDB_FORMAT_STRING_V2 "dddddddBBBBBBBBBBBBddBBBwwdBwwd" */
/* unpack the buffer into variables */
- len = tdb_unpack (buf, buflen, TDB_FORMAT_STRING_V2,
+ len = tdb_unpack ((char *)buf, buflen, TDB_FORMAT_STRING_V2,
&logon_time, /* d */
&logoff_time, /* d */
&kickoff_time, /* d */
@@ -715,7 +715,7 @@ static BOOL tdbsam_convert(int32 from)
while (key.dptr) {
/* skip all non-USER entries (eg. RIDs) */
- while ((key.dsize != 0) && (strncmp((const char *)key.dptr, prefix, strlen (prefix)))) {
+ while ((key.dsize != 0) && (strncmp(key.dptr, prefix, strlen (prefix)))) {
old_key = key;
/* increment to next in line */
key = tdb_nextkey(tdbsam, key);
@@ -768,8 +768,7 @@ static BOOL tdbsam_convert(int32 from)
/* pack from the buffer into the new format */
- DEBUG(10,("tdbsam_convert: Try packing a record (key:%s) (version:%d)\n",
- (const char *)key.dptr, from));
+ DEBUG(10,("tdbsam_convert: Try packing a record (key:%s) (version:%d)\n", key.dptr, from));
data.dsize = init_buffer_from_sam (&buf, user, False);
TALLOC_FREE(user );
@@ -777,7 +776,7 @@ static BOOL tdbsam_convert(int32 from)
DEBUG(0,("tdbsam_convert: cannot pack the struct samu into the new format\n"));
return False;
}
- data.dptr = buf;
+ data.dptr = (char *)buf;
/* Store the buffer inside the TDBSAM */
if (tdb_store(tdbsam, key, data, TDB_MODIFY) != TDB_SUCCESS) {
@@ -902,7 +901,7 @@ static int tdbsam_traverse_setpwent(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data,
int prefixlen = strlen (prefix);
struct pwent_list *ptr;
- if ( strncmp((const char *)key.dptr, prefix, prefixlen) == 0 ) {
+ if ( strncmp(key.dptr, prefix, prefixlen) == 0 ) {
if ( !(ptr=SMB_MALLOC_P(struct pwent_list)) ) {
DEBUG(0,("tdbsam_traverse_setpwent: Failed to malloc new entry for list\n"));
@@ -913,7 +912,7 @@ static int tdbsam_traverse_setpwent(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data,
/* save a copy of the key */
- ptr->key.dptr = (uint8 *)memdup( key.dptr, key.dsize );
+ ptr->key.dptr = (char *)memdup( key.dptr, key.dsize );
if (!ptr->key.dptr) {
DEBUG(0,("tdbsam_traverse_setpwent: memdup failed\n"));
/* just return 0 and let the traversal continue */
@@ -1026,7 +1025,7 @@ static NTSTATUS tdbsam_getsampwent(struct pdb_methods *my_methods, struct samu *
static NTSTATUS tdbsam_getsampwnam (struct pdb_methods *my_methods, struct samu *user, const char *sname)
{
- TDB_DATA data;
+ TDB_DATA data, key;
fstring keystr;
fstring name;
@@ -1041,6 +1040,8 @@ static NTSTATUS tdbsam_getsampwnam (struct pdb_methods *my_methods, struct samu
/* set search key */
slprintf(keystr, sizeof(keystr)-1, "%s%s", USERPREFIX, name);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr) + 1;
/* open the database */
@@ -1051,7 +1052,7 @@ static NTSTATUS tdbsam_getsampwnam (struct pdb_methods *my_methods, struct samu
/* get the record */
- data = tdb_fetch_bystring(tdbsam, keystr);
+ data = tdb_fetch(tdbsam, key);
if (!data.dptr) {
DEBUG(5,("pdb_getsampwnam (TDB): error fetching database.\n"));
DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam)));
@@ -1062,7 +1063,7 @@ static NTSTATUS tdbsam_getsampwnam (struct pdb_methods *my_methods, struct samu
/* unpack the buffer */
- if (!init_sam_from_buffer(user, data.dptr, data.dsize)) {
+ if (!init_sam_from_buffer(user, (unsigned char *)data.dptr, data.dsize)) {
DEBUG(0,("pdb_getsampwent: Bad struct samu entry returned from TDB!\n"));
SAFE_FREE(data.dptr);
tdbsam_close();
@@ -1084,7 +1085,7 @@ static NTSTATUS tdbsam_getsampwnam (struct pdb_methods *my_methods, struct samu
static NTSTATUS tdbsam_getsampwrid (struct pdb_methods *my_methods, struct samu *user, uint32 rid)
{
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
- TDB_DATA data;
+ TDB_DATA data, key;
fstring keystr;
fstring name;
@@ -1096,6 +1097,8 @@ static NTSTATUS tdbsam_getsampwrid (struct pdb_methods *my_methods, struct samu
/* set search key */
slprintf(keystr, sizeof(keystr)-1, "%s%.8x", RIDPREFIX, rid);
+ key.dptr = keystr;
+ key.dsize = strlen (keystr) + 1;
/* open the database */
@@ -1106,7 +1109,7 @@ static NTSTATUS tdbsam_getsampwrid (struct pdb_methods *my_methods, struct samu
/* get the record */
- data = tdb_fetch_bystring (tdbsam, keystr);
+ data = tdb_fetch (tdbsam, key);
if (!data.dptr) {
DEBUG(5,("pdb_getsampwrid (TDB): error looking up RID %d by key %s.\n", rid, keystr));
DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam)));
@@ -1114,7 +1117,7 @@ static NTSTATUS tdbsam_getsampwrid (struct pdb_methods *my_methods, struct samu
goto done;
}
- fstrcpy(name, (const char *)data.dptr);
+ fstrcpy(name, data.dptr);
SAFE_FREE(data.dptr);
nt_status = tdbsam_getsampwnam (my_methods, user, name);
@@ -1139,6 +1142,7 @@ static NTSTATUS tdbsam_getsampwsid(struct pdb_methods *my_methods, struct samu *
static BOOL tdb_delete_samacct_only( struct samu *sam_pass )
{
+ TDB_DATA key;
fstring keystr;
fstring name;
@@ -1148,10 +1152,12 @@ static BOOL tdb_delete_samacct_only( struct samu *sam_pass )
/* set the search key */
slprintf(keystr, sizeof(keystr)-1, "%s%s", USERPREFIX, name);
+ key.dptr = keystr;
+ key.dsize = strlen (keystr) + 1;
/* it's outaa here! 8^) */
- if (tdb_delete_bystring(tdbsam, keystr) != TDB_SUCCESS) {
+ if (tdb_delete(tdbsam, key) != TDB_SUCCESS) {
DEBUG(5, ("Error deleting entry from tdb passwd database!\n"));
DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam)));
return False;
@@ -1167,6 +1173,7 @@ static BOOL tdb_delete_samacct_only( struct samu *sam_pass )
static NTSTATUS tdbsam_delete_sam_account(struct pdb_methods *my_methods, struct samu *sam_pass)
{
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
+ TDB_DATA key;
fstring keystr;
uint32 rid;
fstring name;
@@ -1185,12 +1192,14 @@ static NTSTATUS tdbsam_delete_sam_account(struct pdb_methods *my_methods, struct
/* set the search key */
slprintf(keystr, sizeof(keystr)-1, "%s%s", USERPREFIX, name);
+ key.dptr = keystr;
+ key.dsize = strlen (keystr) + 1;
rid = pdb_get_user_rid(sam_pass);
/* it's outaa here! 8^) */
- if ( tdb_delete_bystring(tdbsam, keystr) != TDB_SUCCESS ) {
+ if ( tdb_delete(tdbsam, key) != TDB_SUCCESS ) {
DEBUG(5, ("Error deleting entry from tdb passwd database!\n"));
DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam)));
nt_status = NT_STATUS_UNSUCCESSFUL;
@@ -1200,10 +1209,12 @@ static NTSTATUS tdbsam_delete_sam_account(struct pdb_methods *my_methods, struct
/* set the search key */
slprintf(keystr, sizeof(keystr)-1, "%s%.8x", RIDPREFIX, rid);
+ key.dptr = keystr;
+ key.dsize = strlen (keystr) + 1;
/* it's outaa here! 8^) */
- if ( tdb_delete_bystring(tdbsam, keystr) != TDB_SUCCESS ) {
+ if ( tdb_delete(tdbsam, key) != TDB_SUCCESS ) {
DEBUG(5, ("Error deleting entry from tdb rid database!\n"));
DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam)));
nt_status = NT_STATUS_UNSUCCESSFUL;
@@ -1225,7 +1236,7 @@ static NTSTATUS tdbsam_delete_sam_account(struct pdb_methods *my_methods, struct
****************************************************************************/
static BOOL tdb_update_samacct_only( struct samu* newpwd, int flag )
{
- TDB_DATA data;
+ TDB_DATA key, data;
uint8 *buf = NULL;
fstring keystr;
fstring name;
@@ -1238,7 +1249,7 @@ static BOOL tdb_update_samacct_only( struct samu* newpwd, int flag )
ret = False;
goto done;
}
- data.dptr = buf;
+ data.dptr = (char *)buf;
fstrcpy(name, pdb_get_username(newpwd));
strlower_m(name);
@@ -1249,10 +1260,12 @@ static BOOL tdb_update_samacct_only( struct samu* newpwd, int flag )
/* setup the USER index key */
slprintf(keystr, sizeof(keystr)-1, "%s%s", USERPREFIX, name);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr) + 1;
/* add the account */
- if ( tdb_store_bystring(tdbsam, keystr, data, flag) != TDB_SUCCESS ) {
+ if ( tdb_store(tdbsam, key, data, flag) != TDB_SUCCESS ) {
DEBUG(0, ("Unable to modify passwd TDB!"));
DEBUGADD(0, (" Error: %s", tdb_errorstr(tdbsam)));
DEBUGADD(0, (" occured while storing the main record (%s)\n",
@@ -1274,7 +1287,7 @@ done:
****************************************************************************/
static BOOL tdb_update_ridrec_only( struct samu* newpwd, int flag )
{
- TDB_DATA data;
+ TDB_DATA key, data;
fstring keystr;
fstring name;
@@ -1282,13 +1295,16 @@ static BOOL tdb_update_ridrec_only( struct samu* newpwd, int flag )
strlower_m(name);
/* setup RID data */
- data = string_term_tdb_data(name);
+ data.dsize = strlen(name) + 1;
+ data.dptr = name;
/* setup the RID index key */
slprintf(keystr, sizeof(keystr)-1, "%s%.8x", RIDPREFIX, pdb_get_user_rid(newpwd));
+ key.dptr = keystr;
+ key.dsize = strlen (keystr) + 1;
/* add the reference */
- if (tdb_store_bystring(tdbsam, keystr, data, flag) != TDB_SUCCESS) {
+ if (tdb_store(tdbsam, key, data, flag) != TDB_SUCCESS) {
DEBUG(0, ("Unable to modify TDB passwd !"));
DEBUGADD(0, (" Error: %s\n", tdb_errorstr(tdbsam)));
DEBUGADD(0, (" occured while storing the RID index (%s)\n", keystr));
@@ -1568,7 +1584,7 @@ static BOOL tdbsam_new_rid(struct pdb_methods *methods, uint32 *prid)
done:
if ((tdb != NULL) && (tdb_close(tdb) != 0)) {
- smb_panic("tdb_close(idmap_tdb) failed");
+ smb_panic("tdb_close(idmap_tdb) failed\n");
}
return ret;
diff --git a/source/passdb/secrets.c b/source/passdb/secrets.c
index 3af4b0f36fa..3ac3a932338 100644
--- a/source/passdb/secrets.c
+++ b/source/passdb/secrets.c
@@ -105,7 +105,7 @@ BOOL secrets_store(const char *key, const void *data, size_t size)
if (!tdb)
return False;
return tdb_trans_store(tdb, string_tdb_data(key),
- make_tdb_data((uint8 *)data, size),
+ make_tdb_data((const char *)data, size),
TDB_REPLACE) == 0;
}
@@ -117,7 +117,7 @@ BOOL secrets_delete(const char *key)
secrets_init();
if (!tdb)
return False;
- return tdb_trans_delete(tdb, string_tdb_data(key)) == 0;
+ return tdb_delete(tdb, string_tdb_data(key)) == 0;
}
BOOL secrets_store_domain_sid(const char *domain, const DOM_SID *sid)
@@ -330,7 +330,7 @@ BOOL secrets_fetch_trust_account_password(const char *domain, uint8 ret_pwd[16],
*
* @return length of the packed representation of the whole structure
**/
-static size_t tdb_sid_pack(uint8 *pack_buf, int bufsize, DOM_SID* sid)
+static size_t tdb_sid_pack(char* pack_buf, int bufsize, DOM_SID* sid)
{
int idx;
size_t len = 0;
@@ -362,7 +362,7 @@ static size_t tdb_sid_pack(uint8 *pack_buf, int bufsize, DOM_SID* sid)
*
* @return size of structure unpacked from buffer
**/
-static size_t tdb_sid_unpack(uint8 *pack_buf, int bufsize, DOM_SID* sid)
+static size_t tdb_sid_unpack(char* pack_buf, int bufsize, DOM_SID* sid)
{
int idx, len = 0;
@@ -393,7 +393,7 @@ static size_t tdb_sid_unpack(uint8 *pack_buf, int bufsize, DOM_SID* sid)
*
* @return length of the packed representation of the whole structure
**/
-static size_t tdb_trusted_dom_pass_pack(uint8 *pack_buf, int bufsize,
+static size_t tdb_trusted_dom_pass_pack(char* pack_buf, int bufsize,
TRUSTED_DOM_PASS* pass)
{
int idx, len = 0;
@@ -427,7 +427,7 @@ static size_t tdb_trusted_dom_pass_pack(uint8 *pack_buf, int bufsize,
*
* @return size of structure unpacked from buffer
**/
-static size_t tdb_trusted_dom_pass_unpack(uint8 *pack_buf, int bufsize,
+static size_t tdb_trusted_dom_pass_unpack(char* pack_buf, int bufsize,
TRUSTED_DOM_PASS* pass)
{
int idx, len = 0;
@@ -462,13 +462,13 @@ BOOL secrets_fetch_trusted_domain_password(const char *domain, char** pwd,
size_t size = 0;
/* unpacking structures */
- uint8 *pass_buf;
+ char* pass_buf;
int pass_len = 0;
ZERO_STRUCT(pass);
/* fetching trusted domain password structure */
- if (!(pass_buf = (uint8 *)secrets_fetch(trustdom_keystr(domain),
+ if (!(pass_buf = (char *)secrets_fetch(trustdom_keystr(domain),
&size))) {
DEBUG(5, ("secrets_fetch failed!\n"));
return False;
@@ -500,6 +500,20 @@ BOOL secrets_fetch_trusted_domain_password(const char *domain, char** pwd,
return True;
}
+/************************************************************************
+ Routine to set the trust account password for a domain.
+************************************************************************/
+
+BOOL secrets_store_trust_account_password(const char *domain, uint8 new_pwd[16])
+{
+ struct machine_acct_pass pass;
+
+ pass.mod_time = time(NULL);
+ memcpy(pass.hash, new_pwd, 16);
+
+ return secrets_store(trust_keystr(domain), (void *)&pass, sizeof(pass));
+}
+
/**
* Routine to store the password for trusted domain
*
@@ -543,7 +557,7 @@ BOOL secrets_store_trusted_domain_password(const char* domain, const char* pwd,
/* domain sid */
sid_copy(&pass.domain_sid, sid);
- pass_len = tdb_trusted_dom_pass_pack((uint8 *)pass_buf, pass_buf_len, &pass);
+ pass_len = tdb_trusted_dom_pass_pack(pass_buf, pass_buf_len, &pass);
return secrets_store(trustdom_keystr(domain), (void *)&pass_buf, pass_len);
}
@@ -556,78 +570,40 @@ the password is assumed to be a null terminated ascii string
BOOL secrets_store_machine_password(const char *pass, const char *domain, uint32 sec_channel)
{
char *key = NULL;
- BOOL ret = False;
+ BOOL ret;
uint32 last_change_time;
uint32 sec_channel_type;
- if (tdb_transaction_start(tdb) == -1) {
- DEBUG(5, ("tdb_transaction_start failed: %s\n",
- tdb_errorstr(tdb)));
+ asprintf(&key, "%s/%s", SECRETS_MACHINE_PASSWORD, domain);
+ if (!key)
return False;
- }
-
- if (asprintf(&key, "%s/%s", SECRETS_MACHINE_PASSWORD, domain) == -1) {
- DEBUG(5, ("asprintf failed\n"));
- goto fail;
- }
strupper_m(key);
ret = secrets_store(key, pass, strlen(pass)+1);
SAFE_FREE(key);
- if (!ret) {
- DEBUG(5, ("secrets_store failed: %s\n",
- tdb_errorstr(tdb)));
- goto fail;
- }
+ if (!ret)
+ return ret;
- if (asprintf(&key, "%s/%s", SECRETS_MACHINE_LAST_CHANGE_TIME,
- domain) == -1) {
- DEBUG(5, ("asprintf failed\n"));
- goto fail;
- }
+ asprintf(&key, "%s/%s", SECRETS_MACHINE_LAST_CHANGE_TIME, domain);
+ if (!key)
+ return False;
strupper_m(key);
SIVAL(&last_change_time, 0, time(NULL));
ret = secrets_store(key, &last_change_time, sizeof(last_change_time));
SAFE_FREE(key);
- if (!ret) {
- DEBUG(5, ("secrets_store failed: %s\n",
- tdb_errorstr(tdb)));
- goto fail;
- }
-
- if (asprintf(&key, "%s/%s", SECRETS_MACHINE_SEC_CHANNEL_TYPE,
- domain) == -1) {
- DEBUG(5, ("asprintf failed\n"));
- goto fail;
- }
+ asprintf(&key, "%s/%s", SECRETS_MACHINE_SEC_CHANNEL_TYPE, domain);
+ if (!key)
+ return False;
strupper_m(key);
SIVAL(&sec_channel_type, 0, sec_channel);
ret = secrets_store(key, &sec_channel_type, sizeof(sec_channel_type));
SAFE_FREE(key);
- if (!ret) {
- DEBUG(5, ("secrets_store failed: %s\n",
- tdb_errorstr(tdb)));
- goto fail;
- }
-
- if (tdb_transaction_commit(tdb) != 0) {
- DEBUG(5, ("tdb_transaction_commit failed: %s\n",
- tdb_errorstr(tdb)));
- return False;
- }
-
- return True;
-
- fail:
- if (tdb_transaction_cancel(tdb) != 0) {
- smb_panic("tdb_transaction_cancel failed!\n");
- }
- return False;
+ return ret;
}
/************************************************************************
@@ -679,6 +655,56 @@ char *secrets_fetch_machine_password(const char *domain,
return ret;
}
+/*******************************************************************
+ Wrapper around retrieving the trust account password
+*******************************************************************/
+
+BOOL get_trust_pw(const char *domain, uint8 ret_pwd[16], uint32 *channel)
+{
+ DOM_SID sid;
+ char *pwd;
+ time_t last_set_time;
+
+ /* if we are a DC and this is not our domain, then lookup an account
+ for the domain trust */
+
+ if ( IS_DC && !strequal(domain, lp_workgroup()) && lp_allow_trusted_domains() ) {
+ if (!secrets_fetch_trusted_domain_password(domain, &pwd, &sid,
+ &last_set_time)) {
+ DEBUG(0, ("get_trust_pw: could not fetch trust "
+ "account password for trusted domain %s\n",
+ domain));
+ return False;
+ }
+
+ *channel = SEC_CHAN_DOMAIN;
+ E_md4hash(pwd, ret_pwd);
+ SAFE_FREE(pwd);
+
+ return True;
+ }
+
+ /* Just get the account for the requested domain. In the future this
+ * might also cover to be member of more than one domain. */
+
+ if (secrets_fetch_trust_account_password(domain, ret_pwd,
+ &last_set_time, channel))
+ return True;
+
+ DEBUG(5, ("get_trust_pw: could not fetch trust account "
+ "password for domain %s\n", domain));
+ return False;
+}
+
+/************************************************************************
+ Routine to delete the machine trust account password file for a domain.
+************************************************************************/
+
+BOOL trust_password_delete(const char *domain)
+{
+ return secrets_delete(trust_keystr(domain));
+}
+
/************************************************************************
Routine to delete the password for trusted domain
************************************************************************/
@@ -813,7 +839,7 @@ NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains,
/* searching for keys in secrets db -- way to go ... */
for (k = keys; k; k = k->next) {
- uint8 *packed_pass;
+ char *packed_pass;
size_t size = 0, packed_size = 0;
struct trusted_dom_pass pass;
char *secrets_key;
@@ -821,7 +847,7 @@ NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains,
/* important: ensure null-termination of the key string */
secrets_key = talloc_strndup(tmp_ctx,
- (const char *)k->node_key.dptr,
+ k->node_key.dptr,
k->node_key.dsize);
if (!secrets_key) {
DEBUG(0, ("strndup failed!\n"));
@@ -830,7 +856,7 @@ NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains,
return NT_STATUS_NO_MEMORY;
}
- packed_pass = (uint8 *)secrets_fetch(secrets_key, &size);
+ packed_pass = (char *)secrets_fetch(secrets_key, &size);
packed_size = tdb_trusted_dom_pass_unpack(packed_pass, size,
&pass);
/* packed representation isn't needed anymore */
@@ -1033,7 +1059,7 @@ static TDB_CONTEXT *open_schannel_session_store(TALLOC_CTX *mem_ctx)
if (vers.dptr == NULL) {
/* First opener, no version. */
SIVAL(&ver,0,1);
- vers.dptr = (uint8 *)&ver;
+ vers.dptr = (char *)&ver;
vers.dsize = 4;
tdb_store_bystring(tdb_sc, "SCHANNEL_STORE_VERSION", vers, TDB_REPLACE);
vers.dptr = NULL;
@@ -1090,7 +1116,7 @@ BOOL secrets_store_schannel_session_info(TALLOC_CTX *mem_ctx,
pdc->remote_machine,
pdc->domain);
- value.dptr = TALLOC_ARRAY(mem_ctx, uint8, value.dsize);
+ value.dptr = (char *)TALLOC(mem_ctx, value.dsize);
if (!value.dptr) {
TALLOC_FREE(keystr);
return False;
diff --git a/source/printing/notify.c b/source/printing/notify.c
index 3b227198041..b79a6bb54a4 100644
--- a/source/printing/notify.c
+++ b/source/printing/notify.c
@@ -31,7 +31,7 @@ static struct notify_queue {
struct notify_queue *next, *prev;
struct spoolss_notify_msg *msg;
struct timeval tv;
- uint8 *buf;
+ char *buf;
size_t buflen;
} *notify_queue_head = NULL;
@@ -75,7 +75,7 @@ BOOL print_notify_messages_pending(void)
static BOOL flatten_message(struct notify_queue *q)
{
struct spoolss_notify_msg *msg = q->msg;
- uint8 *buf = NULL;
+ char *buf = NULL;
size_t buflen = 0, len;
again:
@@ -99,7 +99,7 @@ again:
msg->len, msg->notify.data);
if (buflen != len) {
- buf = (uint8 *)TALLOC_REALLOC(send_ctx, buf, len);
+ buf = (char *)TALLOC_REALLOC(send_ctx, buf, len);
if (!buf)
return False;
buflen = len;
@@ -116,9 +116,7 @@ again:
Send the batched messages - on a per-printer basis.
*******************************************************************/
-static void print_notify_send_messages_to_printer(struct messaging_context *msg_ctx,
- const char *printer,
- unsigned int timeout)
+static void print_notify_send_messages_to_printer(const char *printer, unsigned int timeout)
{
char *buf;
struct notify_queue *pq, *pq_next;
@@ -126,7 +124,6 @@ static void print_notify_send_messages_to_printer(struct messaging_context *msg_
size_t num_pids = 0;
size_t i;
pid_t *pid_list = NULL;
- struct timeval end_time = timeval_zero();
/* Count the space needed to send the messages. */
for (pq = notify_queue_head; pq; pq = pq->next) {
@@ -178,19 +175,16 @@ static void print_notify_send_messages_to_printer(struct messaging_context *msg_
if (!print_notify_pid_list(printer, send_ctx, &num_pids, &pid_list))
return;
- if (timeout != 0) {
- end_time = timeval_current_ofs(timeout, 0);
- }
-
for (i = 0; i < num_pids; i++) {
- messaging_send_buf(msg_ctx,
- pid_to_procid(pid_list[i]),
- MSG_PRINTER_NOTIFY2 | MSG_FLAG_LOWPRIORITY,
- (uint8 *)buf, offset);
-
- if ((timeout != 0) && timeval_expired(&end_time)) {
- break;
+ unsigned int q_len = messages_pending_for_pid(pid_to_procid(pid_list[i]));
+ if (q_len > 1000) {
+ DEBUG(5, ("print_notify_send_messages_to_printer: discarding notify to printer %s as queue length = %u\n",
+ printer, q_len ));
+ continue;
}
+ message_send_pid_with_timeout(pid_to_procid(pid_list[i]),
+ MSG_PRINTER_NOTIFY2,
+ buf, offset, True, timeout);
}
}
@@ -198,8 +192,7 @@ static void print_notify_send_messages_to_printer(struct messaging_context *msg_
Actually send the batched messages.
*******************************************************************/
-void print_notify_send_messages(struct messaging_context *msg_ctx,
- unsigned int timeout)
+void print_notify_send_messages(unsigned int timeout)
{
if (!print_notify_messages_pending())
return;
@@ -208,8 +201,7 @@ void print_notify_send_messages(struct messaging_context *msg_ctx,
return;
while (print_notify_messages_pending())
- print_notify_send_messages_to_printer(
- msg_ctx, notify_queue_head->msg->printer, timeout);
+ print_notify_send_messages_to_printer(notify_queue_head->msg->printer, timeout);
talloc_free_children(send_ctx);
num_messages = 0;
diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c
index c0a9407d6af..34f46c4a9cd 100644
--- a/source/printing/nt_printing.c
+++ b/source/printing/nt_printing.c
@@ -240,7 +240,8 @@ static TDB_DATA make_printer_tdbkey( const char *sharename )
pstr_sprintf( keystr, "%s%s", PRINTERS_PREFIX, share );
- key = string_term_tdb_data(keystr);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr)+1;
return key;
}
@@ -249,20 +250,17 @@ static TDB_DATA make_printer_tdbkey( const char *sharename )
generate a new TDB_DATA key for storing a printer security descriptor
****************************************************************************/
-static TDB_DATA make_printers_secdesc_tdbkey( const char* sharename )
+static char *make_printers_secdesc_tdbkey( const char* sharename )
{
fstring share;
static pstring keystr;
- TDB_DATA key;
-
+
fstrcpy( share, sharename );
strlower_m( share );
pstr_sprintf( keystr, "%s%s", SECDESC_PREFIX, share );
- key = string_term_tdb_data(keystr);
-
- return key;
+ return keystr;
}
/****************************************************************************
@@ -279,7 +277,7 @@ static BOOL upgrade_to_version_3(void)
dbuf = tdb_fetch(tdb_drivers, kbuf);
- if (strncmp((const char *)kbuf.dptr, FORMS_PREFIX, strlen(FORMS_PREFIX)) == 0) {
+ if (strncmp(kbuf.dptr, FORMS_PREFIX, strlen(FORMS_PREFIX)) == 0) {
DEBUG(0,("upgrade_to_version_3:moving form\n"));
if (tdb_store(tdb_forms, kbuf, dbuf, TDB_REPLACE) != 0) {
SAFE_FREE(dbuf.dptr);
@@ -293,7 +291,7 @@ static BOOL upgrade_to_version_3(void)
}
}
- if (strncmp((const char *)kbuf.dptr, PRINTERS_PREFIX, strlen(PRINTERS_PREFIX)) == 0) {
+ if (strncmp(kbuf.dptr, PRINTERS_PREFIX, strlen(PRINTERS_PREFIX)) == 0) {
DEBUG(0,("upgrade_to_version_3:moving printer\n"));
if (tdb_store(tdb_printers, kbuf, dbuf, TDB_REPLACE) != 0) {
SAFE_FREE(dbuf.dptr);
@@ -307,7 +305,7 @@ static BOOL upgrade_to_version_3(void)
}
}
- if (strncmp((const char *)kbuf.dptr, SECDESC_PREFIX, strlen(SECDESC_PREFIX)) == 0) {
+ if (strncmp(kbuf.dptr, SECDESC_PREFIX, strlen(SECDESC_PREFIX)) == 0) {
DEBUG(0,("upgrade_to_version_3:moving secdesc\n"));
if (tdb_store(tdb_printers, kbuf, dbuf, TDB_REPLACE) != 0) {
SAFE_FREE(dbuf.dptr);
@@ -352,7 +350,7 @@ static int sec_desc_upg_fn( TDB_CONTEXT *the_tdb, TDB_DATA key,
return 0;
}
- if ( strncmp((const char *) key.dptr, SECDESC_PREFIX, strlen(SECDESC_PREFIX) ) != 0 ) {
+ if ( strncmp( key.dptr, SECDESC_PREFIX, strlen(SECDESC_PREFIX) ) != 0 ) {
return 0;
}
@@ -361,12 +359,11 @@ static int sec_desc_upg_fn( TDB_CONTEXT *the_tdb, TDB_DATA key,
ZERO_STRUCT( ps );
prs_init( &ps, 0, ctx, UNMARSHALL );
- prs_give_memory( &ps, (char *)data.dptr, data.dsize, False );
+ prs_give_memory( &ps, data.dptr, data.dsize, False );
if ( !sec_io_desc_buf( "sec_desc_upg_fn", &sd_orig, &ps, 1 ) ) {
/* delete bad entries */
- DEBUG(0,("sec_desc_upg_fn: Failed to parse original sec_desc for %si. Deleting....\n",
- (const char *)key.dptr ));
+ DEBUG(0,("sec_desc_upg_fn: Failed to parse original sec_desc for %si. Deleting....\n", key.dptr ));
tdb_delete( tdb_printers, key );
prs_mem_free( &ps );
return 0;
@@ -376,7 +373,7 @@ static int sec_desc_upg_fn( TDB_CONTEXT *the_tdb, TDB_DATA key,
prs_mem_free( &ps );
return 0;
}
- sec = sd_orig->sd;
+ sec = sd_orig->sec;
/* is this even valid? */
@@ -431,7 +428,7 @@ static int sec_desc_upg_fn( TDB_CONTEXT *the_tdb, TDB_DATA key,
/* store it back */
- sd_size = sec_desc_size(sd_store->sd) + sizeof(SEC_DESC_BUF);
+ sd_size = sec_desc_size(sd_store->sec) + sizeof(SEC_DESC_BUF);
prs_init(&ps, sd_size, ctx, MARSHALL);
if ( !sec_io_desc_buf( "sec_desc_upg_fn", &sd_store, &ps, 1 ) ) {
@@ -440,7 +437,7 @@ static int sec_desc_upg_fn( TDB_CONTEXT *the_tdb, TDB_DATA key,
return 0;
}
- data.dptr = (uint8 *)prs_data_p( &ps );
+ data.dptr = prs_data_p( &ps );
data.dsize = sd_size;
result = tdb_store( tdb_printers, key, data, TDB_REPLACE );
@@ -490,11 +487,12 @@ static int normalize_printers_fn( TDB_CONTEXT *the_tdb, TDB_DATA key,
/* upgrade printer records and security descriptors */
- if ( strncmp((const char *) key.dptr, PRINTERS_PREFIX, strlen(PRINTERS_PREFIX) ) == 0 ) {
- new_key = make_printer_tdbkey( (const char *)key.dptr+strlen(PRINTERS_PREFIX) );
+ if ( strncmp( key.dptr, PRINTERS_PREFIX, strlen(PRINTERS_PREFIX) ) == 0 ) {
+ new_key = make_printer_tdbkey( key.dptr+strlen(PRINTERS_PREFIX) );
}
- else if ( strncmp((const char *) key.dptr, SECDESC_PREFIX, strlen(SECDESC_PREFIX) ) == 0 ) {
- new_key = make_printers_secdesc_tdbkey( (const char *)key.dptr+strlen(SECDESC_PREFIX) );
+ else if ( strncmp( key.dptr, SECDESC_PREFIX, strlen(SECDESC_PREFIX) ) == 0 ) {
+ new_key.dptr = make_printers_secdesc_tdbkey( key.dptr+strlen(SECDESC_PREFIX) );
+ new_key.dsize = strlen( new_key.dptr ) + 1;
}
else {
/* ignore this record */
@@ -542,7 +540,7 @@ static BOOL upgrade_to_version_5(void)
Open the NT printing tdbs. Done once before fork().
****************************************************************************/
-BOOL nt_printing_init(struct messaging_context *msg_ctx)
+BOOL nt_printing_init(void)
{
const char *vstring = "INFO/version";
WERROR win_rc;
@@ -631,16 +629,15 @@ BOOL nt_printing_init(struct messaging_context *msg_ctx)
* drivers are installed
*/
- messaging_register(msg_ctx, NULL, MSG_PRINTER_DRVUPGRADE,
- do_drv_upgrade_printer);
+ message_register(MSG_PRINTER_DRVUPGRADE, do_drv_upgrade_printer, NULL);
/*
* register callback to handle updating printer data
* when a driver is initialized
*/
- messaging_register(msg_ctx, NULL, MSG_PRINTERDATA_INIT_RESET,
- reset_all_printerdata);
+ message_register(MSG_PRINTERDATA_INIT_RESET, reset_all_printerdata,
+ NULL);
/* of course, none of the message callbacks matter if you don't
tell messages.c that you interested in receiving PRINT_GENERAL
@@ -788,14 +785,14 @@ int get_ntforms(nt_forms_struct **list)
kbuf.dptr;
newkey = tdb_nextkey(tdb_forms, kbuf), safe_free(kbuf.dptr), kbuf=newkey)
{
- if (strncmp((const char *)kbuf.dptr, FORMS_PREFIX, strlen(FORMS_PREFIX)) != 0)
+ if (strncmp(kbuf.dptr, FORMS_PREFIX, strlen(FORMS_PREFIX)) != 0)
continue;
dbuf = tdb_fetch(tdb_forms, kbuf);
if (!dbuf.dptr)
continue;
- fstrcpy(form.name, (const char *)kbuf.dptr+strlen(FORMS_PREFIX));
+ fstrcpy(form.name, kbuf.dptr+strlen(FORMS_PREFIX));
ret = tdb_unpack(dbuf.dptr, dbuf.dsize, "dddddddd",
&i, &form.flag, &form.width, &form.length, &form.left,
&form.top, &form.right, &form.bottom);
@@ -823,20 +820,22 @@ int write_ntforms(nt_forms_struct **list, int number)
{
pstring buf, key;
int len;
- TDB_DATA dbuf;
+ TDB_DATA kbuf,dbuf;
int i;
for (i=0;i<number;i++) {
/* save index, so list is rebuilt in correct order */
- len = tdb_pack((uint8 *)buf, sizeof(buf), "dddddddd",
+ len = tdb_pack(buf, sizeof(buf), "dddddddd",
i, (*list)[i].flag, (*list)[i].width, (*list)[i].length,
(*list)[i].left, (*list)[i].top, (*list)[i].right,
(*list)[i].bottom);
if (len > sizeof(buf)) break;
slprintf(key, sizeof(key)-1, "%s%s", FORMS_PREFIX, (*list)[i].name);
+ kbuf.dsize = strlen(key)+1;
+ kbuf.dptr = key;
dbuf.dsize = len;
- dbuf.dptr = (uint8 *)buf;
- if (tdb_store_bystring(tdb_forms, key, dbuf, TDB_REPLACE) != 0) break;
+ dbuf.dptr = buf;
+ if (tdb_store(tdb_forms, kbuf, dbuf, TDB_REPLACE) != 0) break;
}
return i;
@@ -897,6 +896,7 @@ BOOL add_a_form(nt_forms_struct **list, const FORM *form, int *count)
BOOL delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR *ret)
{
pstring key;
+ TDB_DATA kbuf;
int n=0;
fstring form_name;
@@ -918,7 +918,9 @@ BOOL delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR
}
slprintf(key, sizeof(key)-1, "%s%s", FORMS_PREFIX, (*list)[n].name);
- if (tdb_delete_bystring(tdb_forms, key) != 0) {
+ kbuf.dsize = strlen(key)+1;
+ kbuf.dptr = key;
+ if (tdb_delete(tdb_forms, kbuf) != 0) {
*ret = WERR_NOMEM;
return False;
}
@@ -976,7 +978,7 @@ int get_ntdrivers(fstring **list, const char *architecture, uint32 version)
kbuf.dptr;
newkey = tdb_nextkey(tdb_drivers, kbuf), safe_free(kbuf.dptr), kbuf=newkey) {
- if (strncmp((const char *)kbuf.dptr, key, strlen(key)) != 0)
+ if (strncmp(kbuf.dptr, key, strlen(key)) != 0)
continue;
if((*list = SMB_REALLOC_ARRAY(*list, fstring, total+1)) == NULL) {
@@ -984,7 +986,7 @@ int get_ntdrivers(fstring **list, const char *architecture, uint32 version)
return -1;
}
- fstrcpy((*list)[total], (const char *)kbuf.dptr+strlen(key));
+ fstrcpy((*list)[total], kbuf.dptr+strlen(key));
total++;
}
@@ -1291,7 +1293,7 @@ static int file_version_is_newer(connection_struct *conn, fstring new_file, fstr
driver_unix_convert(filepath,conn,NULL,&stat_buf);
- status = open_file_ntcreate(conn, NULL, filepath, &stat_buf,
+ status = open_file_ntcreate(conn, filepath, &stat_buf,
FILE_GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -1327,7 +1329,7 @@ static int file_version_is_newer(connection_struct *conn, fstring new_file, fstr
pstrcpy(filepath, new_file);
driver_unix_convert(filepath,conn,NULL,&stat_buf);
- status = open_file_ntcreate(conn, NULL, filepath, &stat_buf,
+ status = open_file_ntcreate(conn, filepath, &stat_buf,
FILE_GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -1430,7 +1432,7 @@ static uint32 get_correct_cversion(const char *architecture, fstring driverpath_
*/
/* Null password is ok - we are already an authenticated user... */
- null_pw = data_blob_null;
+ null_pw = data_blob(NULL, 0);
fstrcpy(res_type, "A:");
become_root();
conn = make_connection_with_chdir("print$", null_pw, res_type, user->vuid, &nt_status);
@@ -1460,7 +1462,7 @@ static uint32 get_correct_cversion(const char *architecture, fstring driverpath_
goto error_exit;
}
- status = open_file_ntcreate(conn, NULL, driverpath, &st,
+ status = open_file_ntcreate(conn, driverpath, &st,
FILE_GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -1767,7 +1769,7 @@ WERROR move_driver_to_download_area(NT_PRINTER_DRIVER_INFO_LEVEL driver_abstract
* Note we must be root to do this.
*/
- null_pw = data_blob_null;
+ null_pw = data_blob(NULL, 0);
fstrcpy(res_type, "A:");
become_root();
conn = make_connection_with_chdir("print$", null_pw, res_type, user->vuid, &nt_status);
@@ -1931,9 +1933,9 @@ static uint32 add_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 *driver)
pstring directory;
fstring temp_name;
pstring key;
- uint8 *buf;
+ char *buf;
int i, ret;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
architecture = get_short_archi(driver->environment);
if (!architecture) {
@@ -2008,7 +2010,7 @@ static uint32 add_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 *driver)
}
if (len != buflen) {
- buf = (uint8 *)SMB_REALLOC(buf, len);
+ buf = (char *)SMB_REALLOC(buf, len);
if (!buf) {
DEBUG(0,("add_a_printer_driver_3: failed to enlarge buffer\n!"));
ret = -1;
@@ -2018,10 +2020,13 @@ static uint32 add_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 *driver)
goto again;
}
+
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
dbuf.dptr = buf;
dbuf.dsize = len;
- ret = tdb_store_bystring(tdb_drivers, key, dbuf, TDB_REPLACE);
+ ret = tdb_store(tdb_drivers, kbuf, dbuf, TDB_REPLACE);
done:
if (ret)
@@ -2089,7 +2094,7 @@ static WERROR get_a_printer_driver_3_default(NT_PRINTER_DRIVER_INFO_LEVEL_3 **in
static WERROR get_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 **info_ptr, fstring drivername, const char *arch, uint32 version)
{
NT_PRINTER_DRIVER_INFO_LEVEL_3 driver;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
const char *architecture;
int len = 0;
int i;
@@ -2110,8 +2115,11 @@ static WERROR get_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 **info_ptr,
DEBUG(8,("get_a_printer_driver_3: [%s%s/%d/%s]\n", DRIVERS_PREFIX, architecture, version, drivername));
slprintf(key, sizeof(key)-1, "%s%s/%d/%s", DRIVERS_PREFIX, architecture, version, drivername);
+
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
- dbuf = tdb_fetch_bystring(tdb_drivers, key);
+ dbuf = tdb_fetch(tdb_drivers, kbuf);
if (!dbuf.dptr)
return WERR_UNKNOWN_PRINTER_DRIVER;
@@ -2210,7 +2218,7 @@ static uint32 dump_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32
/****************************************************************************
****************************************************************************/
-int pack_devicemode(NT_DEVICEMODE *nt_devmode, uint8 *buf, int buflen)
+int pack_devicemode(NT_DEVICEMODE *nt_devmode, char *buf, int buflen)
{
int len = 0;
@@ -2274,7 +2282,7 @@ int pack_devicemode(NT_DEVICEMODE *nt_devmode, uint8 *buf, int buflen)
Pack all values in all printer keys
***************************************************************************/
-static int pack_values(NT_PRINTER_DATA *data, uint8 *buf, int buflen)
+static int pack_values(NT_PRINTER_DATA *data, char *buf, int buflen)
{
int len = 0;
int i, j;
@@ -2344,7 +2352,8 @@ uint32 del_a_printer(const char *sharename)
kbuf = make_printer_tdbkey( sharename );
tdb_delete(tdb_printers, kbuf);
- kbuf= make_printers_secdesc_tdbkey( sharename );
+ kbuf.dptr = make_printers_secdesc_tdbkey( sharename );
+ kbuf.dsize = strlen(kbuf.dptr) + 1;
tdb_delete(tdb_printers, kbuf);
close_all_print_db();
@@ -2364,7 +2373,7 @@ uint32 del_a_printer(const char *sharename)
****************************************************************************/
static WERROR update_a_printer_2(NT_PRINTER_INFO_LEVEL_2 *info)
{
- uint8 *buf;
+ char *buf;
int buflen, len;
WERROR ret;
TDB_DATA kbuf, dbuf;
@@ -2431,7 +2440,7 @@ static WERROR update_a_printer_2(NT_PRINTER_INFO_LEVEL_2 *info)
len += pack_values( info->data, buf+len, buflen-len );
if (buflen != len) {
- buf = (uint8 *)SMB_REALLOC(buf, len);
+ buf = (char *)SMB_REALLOC(buf, len);
if (!buf) {
DEBUG(0,("update_a_printer_2: failed to enlarge buffer!\n"));
ret = WERR_NOMEM;
@@ -2589,7 +2598,7 @@ static void free_nt_printer_info_level_2(NT_PRINTER_INFO_LEVEL_2 **info_ptr)
/****************************************************************************
****************************************************************************/
-int unpack_devicemode(NT_DEVICEMODE **nt_devmode, const uint8 *buf, int buflen)
+int unpack_devicemode(NT_DEVICEMODE **nt_devmode, char *buf, int buflen)
{
int len = 0;
int extra_len = 0;
@@ -3528,7 +3537,7 @@ REGISTRY_VALUE* get_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key,
Unpack a list of registry values frem the TDB
***************************************************************************/
-static int unpack_values(NT_PRINTER_DATA *printer_data, const uint8 *buf, int buflen)
+static int unpack_values(NT_PRINTER_DATA *printer_data, char *buf, int buflen)
{
int len = 0;
uint32 type;
@@ -4076,7 +4085,7 @@ static BOOL set_driver_init_2( NT_PRINTER_INFO_LEVEL_2 *info_ptr )
{
int len = 0;
pstring key;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
NT_PRINTER_INFO_LEVEL_2 info;
@@ -4093,7 +4102,10 @@ static BOOL set_driver_init_2( NT_PRINTER_INFO_LEVEL_2 *info_ptr )
slprintf(key, sizeof(key)-1, "%s%s", DRIVER_INIT_PREFIX, info_ptr->drivername);
- dbuf = tdb_fetch_bystring(tdb_drivers, key);
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
+
+ dbuf = tdb_fetch(tdb_drivers, kbuf);
if (!dbuf.dptr) {
/*
* When changing to a driver that has no init info in the tdb, remove
@@ -4186,6 +4198,7 @@ BOOL set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level)
BOOL del_driver_init(char *drivername)
{
pstring key;
+ TDB_DATA kbuf;
if (!drivername || !*drivername) {
DEBUG(3,("del_driver_init: No drivername specified!\n"));
@@ -4194,9 +4207,12 @@ BOOL del_driver_init(char *drivername)
slprintf(key, sizeof(key)-1, "%s%s", DRIVER_INIT_PREFIX, drivername);
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
+
DEBUG(6,("del_driver_init: Removing driver init data for [%s]\n", drivername));
- return (tdb_delete_bystring(tdb_drivers, key) == 0);
+ return (tdb_delete(tdb_drivers, kbuf) == 0);
}
/****************************************************************************
@@ -4210,9 +4226,9 @@ BOOL del_driver_init(char *drivername)
static uint32 update_driver_init_2(NT_PRINTER_INFO_LEVEL_2 *info)
{
pstring key;
- uint8 *buf;
+ char *buf;
int buflen, len, ret;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
buf = NULL;
buflen = 0;
@@ -4224,7 +4240,7 @@ static uint32 update_driver_init_2(NT_PRINTER_INFO_LEVEL_2 *info)
len += pack_values( info->data, buf+len, buflen-len );
if (buflen < len) {
- buf = (uint8 *)SMB_REALLOC(buf, len);
+ buf = (char *)SMB_REALLOC(buf, len);
if (!buf) {
DEBUG(0, ("update_driver_init_2: failed to enlarge buffer!\n"));
ret = -1;
@@ -4236,10 +4252,12 @@ static uint32 update_driver_init_2(NT_PRINTER_INFO_LEVEL_2 *info)
slprintf(key, sizeof(key)-1, "%s%s", DRIVER_INIT_PREFIX, info->drivername);
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
dbuf.dptr = buf;
dbuf.dsize = len;
- ret = tdb_store_bystring(tdb_drivers, key, dbuf, TDB_REPLACE);
+ ret = tdb_store(tdb_drivers, kbuf, dbuf, TDB_REPLACE);
done:
if (ret == -1)
@@ -4910,7 +4928,7 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
* do this.
*/
- null_pw = data_blob_null;
+ null_pw = data_blob( NULL, 0 );
fstrcpy(res_type, "A:");
become_root();
conn = make_connection_with_chdir( "print$", null_pw, res_type, user->vuid, &nt_status );
@@ -4941,7 +4959,7 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
pstrcpy( file, s );
driver_unix_convert(file, conn, NULL, &st);
DEBUG(10,("deleting driverfile [%s]\n", s));
- unlink_internals(conn, NULL, 0, file, False);
+ unlink_internals(conn, 0, file, False, False);
}
}
@@ -4950,7 +4968,7 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
pstrcpy( file, s );
driver_unix_convert(file, conn, NULL, &st);
DEBUG(10,("deleting configfile [%s]\n", s));
- unlink_internals(conn, NULL, 0, file, False);
+ unlink_internals(conn, 0, file, False, False);
}
}
@@ -4959,7 +4977,7 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
pstrcpy( file, s );
driver_unix_convert(file, conn, NULL, &st);
DEBUG(10,("deleting datafile [%s]\n", s));
- unlink_internals(conn, NULL, 0, file, False);
+ unlink_internals(conn, 0, file, False, False);
}
}
@@ -4968,7 +4986,7 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
pstrcpy( file, s );
driver_unix_convert(file, conn, NULL, &st);
DEBUG(10,("deleting helpfile [%s]\n", s));
- unlink_internals(conn, NULL, 0, file, False);
+ unlink_internals(conn, 0, file, False, False);
}
}
@@ -4984,7 +5002,7 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
pstrcpy( file, p );
driver_unix_convert(file, conn, NULL, &st);
DEBUG(10,("deleting dependent file [%s]\n", file));
- unlink_internals(conn, NULL, 0, file, False);
+ unlink_internals(conn, 0, file, False, False);
}
i++;
@@ -5006,7 +5024,7 @@ WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct cur
{
pstring key;
const char *arch;
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
NT_PRINTER_DRIVER_INFO_LEVEL ctr;
/* delete the tdb data first */
@@ -5024,9 +5042,12 @@ WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct cur
ctr.info_3 = info_3;
dump_a_printer_driver( ctr, 3 );
+ kbuf.dptr=key;
+ kbuf.dsize=strlen(key)+1;
+
/* check if the driver actually exists for this environment */
- dbuf = tdb_fetch_bystring( tdb_drivers, key );
+ dbuf = tdb_fetch( tdb_drivers, kbuf );
if ( !dbuf.dptr ) {
DEBUG(8,("delete_printer_driver: Driver unknown [%s]\n", key));
return WERR_UNKNOWN_PRINTER_DRIVER;
@@ -5036,7 +5057,7 @@ WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct cur
/* ok... the driver exists so the delete should return success */
- if (tdb_delete_bystring(tdb_drivers, key) == -1) {
+ if (tdb_delete(tdb_drivers, kbuf) == -1) {
DEBUG (0,("delete_printer_driver: fail to delete %s!\n", key));
return WERR_ACCESS_DENIED;
}
@@ -5066,7 +5087,7 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
SEC_DESC_BUF *old_secdesc_ctr = NULL;
prs_struct ps;
TALLOC_CTX *mem_ctx = NULL;
- TDB_DATA kbuf;
+ char *key;
WERROR status;
mem_ctx = talloc_init("nt_printing_setsec");
@@ -5078,7 +5099,7 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
permissions through NT. If they are NULL in the new security
descriptor then copy them over from the old one. */
- if (!secdesc_ctr->sd->owner_sid || !secdesc_ctr->sd->group_sid) {
+ if (!secdesc_ctr->sec->owner_sid || !secdesc_ctr->sec->group_sid) {
DOM_SID *owner_sid, *group_sid;
SEC_ACL *dacl, *sacl;
SEC_DESC *psd = NULL;
@@ -5091,25 +5112,25 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
/* Pick out correct owner and group sids */
- owner_sid = secdesc_ctr->sd->owner_sid ?
- secdesc_ctr->sd->owner_sid :
- old_secdesc_ctr->sd->owner_sid;
+ owner_sid = secdesc_ctr->sec->owner_sid ?
+ secdesc_ctr->sec->owner_sid :
+ old_secdesc_ctr->sec->owner_sid;
- group_sid = secdesc_ctr->sd->group_sid ?
- secdesc_ctr->sd->group_sid :
- old_secdesc_ctr->sd->group_sid;
+ group_sid = secdesc_ctr->sec->group_sid ?
+ secdesc_ctr->sec->group_sid :
+ old_secdesc_ctr->sec->group_sid;
- dacl = secdesc_ctr->sd->dacl ?
- secdesc_ctr->sd->dacl :
- old_secdesc_ctr->sd->dacl;
+ dacl = secdesc_ctr->sec->dacl ?
+ secdesc_ctr->sec->dacl :
+ old_secdesc_ctr->sec->dacl;
- sacl = secdesc_ctr->sd->sacl ?
- secdesc_ctr->sd->sacl :
- old_secdesc_ctr->sd->sacl;
+ sacl = secdesc_ctr->sec->sacl ?
+ secdesc_ctr->sec->sacl :
+ old_secdesc_ctr->sec->sacl;
/* Make a deep copy of the security descriptor */
- psd = make_sec_desc(mem_ctx, secdesc_ctr->sd->revision, secdesc_ctr->sd->type,
+ psd = make_sec_desc(mem_ctx, secdesc_ctr->sec->revision, secdesc_ctr->sec->type,
owner_sid, group_sid,
sacl,
dacl,
@@ -5129,7 +5150,7 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
/* Store the security descriptor in a tdb */
- prs_init(&ps, (uint32)sec_desc_size(new_secdesc_ctr->sd) +
+ prs_init(&ps, (uint32)sec_desc_size(new_secdesc_ctr->sec) +
sizeof(SEC_DESC_BUF), mem_ctx, MARSHALL);
if (!sec_io_desc_buf("nt_printing_setsec", &new_secdesc_ctr,
@@ -5138,9 +5159,9 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
goto out;
}
- kbuf = make_printers_secdesc_tdbkey( sharename );
+ key = make_printers_secdesc_tdbkey( sharename );
- if (tdb_prs_store(tdb_printers, kbuf, &ps)==0) {
+ if (tdb_prs_store(tdb_printers, key, &ps)==0) {
status = WERR_OK;
} else {
DEBUG(1,("Failed to store secdesc for %s\n", sharename));
@@ -5248,7 +5269,7 @@ static SEC_DESC_BUF *construct_default_printer_sdb(TALLOC_CTX *ctx)
BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **secdesc_ctr)
{
prs_struct ps;
- TDB_DATA kbuf;
+ char *key;
char *temp;
if (strlen(sharename) > 2 && (temp = strchr(sharename + 2, '\\'))) {
@@ -5259,9 +5280,9 @@ BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **s
/* Fetch security descriptor from tdb */
- kbuf = make_printers_secdesc_tdbkey( sharename );
+ key = make_printers_secdesc_tdbkey( sharename );
- if (tdb_prs_fetch(tdb_printers, kbuf, &ps, ctx)!=0 ||
+ if (tdb_prs_fetch(tdb_printers, key, &ps, ctx)!=0 ||
!sec_io_desc_buf("nt_printing_getsec", secdesc_ctr, &ps, 1)) {
prs_mem_free(&ps);
@@ -5274,11 +5295,11 @@ BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **s
/* Save default security descriptor for later */
- prs_init(&ps, (uint32)sec_desc_size((*secdesc_ctr)->sd) +
+ prs_init(&ps, (uint32)sec_desc_size((*secdesc_ctr)->sec) +
sizeof(SEC_DESC_BUF), ctx, MARSHALL);
if (sec_io_desc_buf("nt_printing_getsec", secdesc_ctr, &ps, 1)) {
- tdb_prs_store(tdb_printers, kbuf, &ps);
+ tdb_prs_store(tdb_printers, key, &ps);
}
prs_mem_free(&ps);
@@ -5292,7 +5313,7 @@ BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **s
this security descriptor has been created when winbindd was
down. Take ownership of security descriptor. */
- if (sid_equal((*secdesc_ctr)->sd->owner_sid, &global_sid_World)) {
+ if (sid_equal((*secdesc_ctr)->sec->owner_sid, &global_sid_World)) {
DOM_SID owner_sid;
/* Change sd owner to workgroup administrator */
@@ -5306,11 +5327,11 @@ BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **s
sid_append_rid(&owner_sid, DOMAIN_USER_RID_ADMIN);
- psd = make_sec_desc(ctx, (*secdesc_ctr)->sd->revision, (*secdesc_ctr)->sd->type,
+ psd = make_sec_desc(ctx, (*secdesc_ctr)->sec->revision, (*secdesc_ctr)->sec->type,
&owner_sid,
- (*secdesc_ctr)->sd->group_sid,
- (*secdesc_ctr)->sd->sacl,
- (*secdesc_ctr)->sd->dacl,
+ (*secdesc_ctr)->sec->group_sid,
+ (*secdesc_ctr)->sec->sacl,
+ (*secdesc_ctr)->sec->dacl,
&size);
if (!psd) {
@@ -5333,7 +5354,7 @@ BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **s
}
if (DEBUGLEVEL >= 10) {
- SEC_ACL *the_acl = (*secdesc_ctr)->sd->dacl;
+ SEC_ACL *the_acl = (*secdesc_ctr)->sec->dacl;
int i;
DEBUG(10, ("secdesc_ctr for %s has %d aces:\n",
@@ -5476,7 +5497,7 @@ BOOL print_access_check(struct current_user *user, int snum, int access_type)
against. This is because print jobs are child objects
objects of a printer. */
- secdesc = se_create_child_secdesc(mem_ctx, parent_secdesc->sd, False);
+ secdesc = se_create_child_secdesc(mem_ctx, parent_secdesc->sec, False);
if (!secdesc) {
talloc_destroy(mem_ctx);
@@ -5495,9 +5516,9 @@ BOOL print_access_check(struct current_user *user, int snum, int access_type)
/* Check access */
- map_printer_permissions(secdesc->sd);
+ map_printer_permissions(secdesc->sec);
- result = se_access_check(secdesc->sd, user->nt_user_token, access_type,
+ result = se_access_check(secdesc->sec, user->nt_user_token, access_type,
&access_granted, &status);
DEBUG(4, ("access check was %s\n", result ? "SUCCESS" : "FAILURE"));
diff --git a/source/printing/printfsp.c b/source/printing/printfsp.c
index 062a72080d6..5278c60f992 100644
--- a/source/printing/printfsp.c
+++ b/source/printing/printfsp.c
@@ -87,7 +87,8 @@ NTSTATUS print_fsp_open(connection_struct *conn, const char *fname,
fsp->wcp = NULL;
SMB_VFS_FSTAT(fsp,fsp->fh->fd, &sbuf);
fsp->mode = sbuf.st_mode;
- fsp->file_id = file_id_sbuf(&sbuf);
+ fsp->inode = sbuf.st_ino;
+ fsp->dev = sbuf.st_dev;
conn->num_files_open++;
diff --git a/source/printing/printing.c b/source/printing/printing.c
index 3453598480c..39efe19604e 100644
--- a/source/printing/printing.c
+++ b/source/printing/printing.c
@@ -76,7 +76,7 @@ uint16 pjobid_to_rap(const char* sharename, uint32 jobid)
ZERO_STRUCT( jinfo );
fstrcpy( jinfo.sharename, sharename );
jinfo.jobid = jobid;
- key.dptr = (uint8 *)&jinfo;
+ key.dptr = (char*)&jinfo;
key.dsize = sizeof(jinfo);
data = tdb_fetch(rap_tdb, key);
@@ -93,7 +93,7 @@ uint16 pjobid_to_rap(const char* sharename, uint32 jobid)
if (rap_jobid == 0)
rap_jobid = ++next_rap_jobid;
SSVAL(buf,0,rap_jobid);
- data.dptr = buf;
+ data.dptr = (char*)buf;
data.dsize = sizeof(rap_jobid);
tdb_store(rap_tdb, key, data, TDB_REPLACE);
tdb_store(rap_tdb, data, key, TDB_REPLACE);
@@ -114,7 +114,7 @@ BOOL rap_to_pjobid(uint16 rap_jobid, fstring sharename, uint32 *pjobid)
return False;
SSVAL(buf,0,rap_jobid);
- key.dptr = buf;
+ key.dptr = (char*)buf;
key.dsize = sizeof(rap_jobid);
data = tdb_fetch(rap_tdb, key);
if ( data.dptr && data.dsize == sizeof(struct rap_jobid_key) )
@@ -149,7 +149,7 @@ static void rap_jobid_delete(const char* sharename, uint32 jobid)
ZERO_STRUCT( jinfo );
fstrcpy( jinfo.sharename, sharename );
jinfo.jobid = jobid;
- key.dptr = (uint8 *)&jinfo;
+ key.dptr = (char*)&jinfo;
key.dsize = sizeof(jinfo);
data = tdb_fetch(rap_tdb, key);
@@ -166,7 +166,7 @@ static void rap_jobid_delete(const char* sharename, uint32 jobid)
rap_jobid = SVAL(data.dptr, 0);
SAFE_FREE(data.dptr);
SSVAL(buf,0,rap_jobid);
- data.dptr = buf;
+ data.dptr = (char*)buf;
data.dsize = sizeof(rap_jobid);
tdb_delete(rap_tdb, key);
tdb_delete(rap_tdb, data);
@@ -178,7 +178,7 @@ static int get_queue_status(const char* sharename, print_status_struct *);
Initialise the printing backend. Called once at startup before the fork().
****************************************************************************/
-BOOL print_backend_init(struct messaging_context *msg_ctx)
+BOOL print_backend_init(void)
{
const char *sversion = "INFO/version";
pstring printing_path;
@@ -215,7 +215,7 @@ BOOL print_backend_init(struct messaging_context *msg_ctx)
close_all_print_db(); /* Don't leave any open. */
/* do NT print initialization... */
- return nt_printing_init(msg_ctx);
+ return nt_printing_init();
}
/****************************************************************************
@@ -273,7 +273,7 @@ static TDB_DATA print_key(uint32 jobid)
TDB_DATA ret;
SIVAL(&j, 0, jobid);
- ret.dptr = (uint8 *)&j;
+ ret.dptr = (char *)&j;
ret.dsize = sizeof(j);
return ret;
}
@@ -282,7 +282,7 @@ static TDB_DATA print_key(uint32 jobid)
unpack a pjob from a tdb buffer
***********************************************************************/
-int unpack_pjob( uint8 *buf, int buflen, struct printjob *pjob )
+int unpack_pjob( char* buf, int buflen, struct printjob *pjob )
{
int len = 0;
int used;
@@ -518,7 +518,7 @@ static BOOL pjob_store(const char* sharename, uint32 jobid, struct printjob *pjo
TDB_DATA old_data, new_data;
BOOL ret = False;
struct tdb_print_db *pdb = get_print_db_byname(sharename);
- uint8 *buf = NULL;
+ char *buf = NULL;
int len, newlen, buflen;
@@ -554,7 +554,7 @@ static BOOL pjob_store(const char* sharename, uint32 jobid, struct printjob *pjo
len += pack_devicemode(pjob->nt_devmode, buf+len, buflen-len);
if (buflen != len) {
- buf = (uint8 *)SMB_REALLOC(buf, len);
+ buf = (char *)SMB_REALLOC(buf, len);
if (!buf) {
DEBUG(0,("pjob_store: failed to enlarge buffer!\n"));
goto done;
@@ -867,7 +867,8 @@ static pid_t get_updating_pid(const char *sharename)
if (!pdb)
return (pid_t)-1;
slprintf(keystr, sizeof(keystr)-1, "UPDATING/%s", sharename);
- key = string_tdb_data(keystr);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr);
data = tdb_fetch(pdb->tdb, key);
release_print_db(pdb);
@@ -904,7 +905,8 @@ static void set_updating_pid(const fstring sharename, BOOL updating)
return;
slprintf(keystr, sizeof(keystr)-1, "UPDATING/%s", sharename);
- key = string_tdb_data(keystr);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr);
DEBUG(5, ("set_updating_pid: %s updating lpq cache for print share %s\n",
updating ? "" : "not ",
@@ -917,7 +919,7 @@ static void set_updating_pid(const fstring sharename, BOOL updating)
}
SIVAL( buffer, 0, updating_pid);
- data.dptr = buffer;
+ data.dptr = (char *)buffer;
data.dsize = 4; /* we always assume this is a 4 byte value */
tdb_store(pdb->tdb, key, data, TDB_REPLACE);
@@ -984,7 +986,7 @@ static void store_queue_struct(struct tdb_print_db *pdb, struct traverse_struct
queue[i].fs_file);
}
- if ((data.dptr = (uint8 *)SMB_MALLOC(data.dsize)) == NULL)
+ if ((data.dptr = (char *)SMB_MALLOC(data.dsize)) == NULL)
return;
len = 0;
@@ -1231,10 +1233,11 @@ static void print_queue_update_internal( const char *sharename,
/* store the new queue status structure */
slprintf(keystr, sizeof(keystr)-1, "STATUS/%s", sharename);
- key = string_tdb_data(keystr);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr);
status.qcount = qcount;
- data.dptr = (uint8 *)&status;
+ data.dptr = (char *)&status;
data.dsize = sizeof(status);
tdb_store(pdb->tdb, key, data, TDB_REPLACE);
@@ -1348,18 +1351,16 @@ static void print_queue_update_with_lock( const char *sharename,
/****************************************************************************
this is the receive function of the background lpq updater
****************************************************************************/
-static void print_queue_receive(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void print_queue_receive(int msg_type, struct process_id src,
+ void *buf, size_t msglen,
+ void *private_data)
{
fstring sharename;
pstring lpqcommand, lprmcommand;
int printing_type;
size_t len;
- len = tdb_unpack( (uint8 *)data->data, data->length, "fdPP",
+ len = tdb_unpack( (char *)buf, msglen, "fdPP",
sharename,
&printing_type,
lpqcommand,
@@ -1396,15 +1397,15 @@ void start_background_queue(void)
/* Child. */
DEBUG(5,("start_background_queue: background LPQ thread started\n"));
- claim_connection( NULL, "smbd lpq backend",
+ claim_connection( NULL, "smbd lpq backend", 0, False,
FLAG_MSG_GENERAL|FLAG_MSG_SMBD|FLAG_MSG_PRINT_GENERAL);
if (!locking_init(0)) {
exit(1);
}
- messaging_register(smbd_messaging_context(), NULL,
- MSG_PRINTER_UPDATE, print_queue_receive);
+ message_register(MSG_PRINTER_UPDATE, print_queue_receive,
+ NULL);
DEBUG(5,("start_background_queue: background LPQ thread waiting for messages\n"));
while (1) {
@@ -1426,12 +1427,11 @@ void start_background_queue(void)
/* now check for messages */
DEBUG(10,("start_background_queue: background LPQ thread got a message\n"));
- message_dispatch(smbd_messaging_context());
+ message_dispatch();
/* process any pending print change notify messages */
- print_notify_send_messages(smbd_messaging_context(),
- 0);
+ print_notify_send_messages(0);
}
}
}
@@ -1445,7 +1445,7 @@ static void print_queue_update(int snum, BOOL force)
fstring key;
fstring sharename;
pstring lpqcommand, lprmcommand;
- uint8 *buffer = NULL;
+ char *buffer = NULL;
size_t len = 0;
size_t newlen;
struct tdb_print_db *pdb;
@@ -1499,7 +1499,7 @@ static void print_queue_update(int snum, BOOL force)
lpqcommand,
lprmcommand );
- buffer = SMB_XMALLOC_ARRAY( uint8, len );
+ buffer = SMB_XMALLOC_ARRAY( char, len );
/* now pack the buffer */
newlen = tdb_pack( buffer, len, "fdPP",
@@ -1537,9 +1537,8 @@ static void print_queue_update(int snum, BOOL force)
/* finally send the message */
- messaging_send_buf(smbd_messaging_context(),
- pid_to_procid(background_lpq_updater_pid),
- MSG_PRINTER_UPDATE, (uint8 *)buffer, len);
+ message_send_pid(pid_to_procid(background_lpq_updater_pid),
+ MSG_PRINTER_UPDATE, buffer, len, False);
SAFE_FREE( buffer );
@@ -1608,7 +1607,7 @@ BOOL print_notify_register_pid(int snum)
if (i == data.dsize) {
/* We weren't in the list. Realloc. */
- data.dptr = (uint8 *)SMB_REALLOC(data.dptr, data.dsize + 8);
+ data.dptr = (char *)SMB_REALLOC(data.dptr, data.dsize + 8);
if (!data.dptr) {
DEBUG(0,("print_notify_register_pid: Relloc fail for printer %s\n",
printername));
@@ -2303,7 +2302,7 @@ static BOOL add_to_jobs_changed(struct tdb_print_db *pdb, uint32 jobid)
uint32 store_jobid;
SIVAL(&store_jobid, 0, jobid);
- data.dptr = (uint8 *)&store_jobid;
+ data.dptr = (char *)&store_jobid;
data.dsize = 4;
DEBUG(10,("add_to_jobs_changed: Added jobid %u\n", (unsigned int)jobid ));
@@ -2702,8 +2701,8 @@ int print_queue_status(int snum,
ZERO_STRUCTP(status);
slprintf(keystr, sizeof(keystr)-1, "STATUS/%s", sharename);
- key = string_tdb_data(keystr);
-
+ key.dptr = keystr;
+ key.dsize = strlen(keystr);
data = tdb_fetch(pdb->tdb, key);
if (data.dptr) {
if (data.dsize == sizeof(*status)) {
diff --git a/source/profile/profile.c b/source/profile/profile.c
index 257b0abba53..b7a2ea23beb 100644
--- a/source/profile/profile.c
+++ b/source/profile/profile.c
@@ -44,7 +44,7 @@ BOOL do_profile_times = False;
/****************************************************************************
Set a profiling level.
****************************************************************************/
-void set_profile_level(int level, struct server_id src)
+void set_profile_level(int level, struct process_id src)
{
#ifdef WITH_PROFILE
switch (level) {
@@ -93,31 +93,19 @@ void set_profile_level(int level, struct server_id src)
/****************************************************************************
receive a set profile level message
****************************************************************************/
-static void profile_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+void profile_message(int msg_type, struct process_id src, void *buf, size_t len, void *private_data)
{
int level;
- if (data->length != sizeof(level)) {
- DEBUG(0, ("got invalid profile message\n"));
- return;
- }
-
- memcpy(&level, data->data, sizeof(level));
+ memcpy(&level, buf, sizeof(int));
set_profile_level(level, src);
}
/****************************************************************************
receive a request profile level message
****************************************************************************/
-static void reqprofile_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+void reqprofile_message(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
int level;
@@ -128,8 +116,7 @@ static void reqprofile_message(struct messaging_context *msg_ctx,
#endif
DEBUG(1,("INFO: Received REQ_PROFILELEVEL message from PID %u\n",
(unsigned int)procid_to_pid(&src)));
- messaging_send_buf(msg_ctx, src, MSG_PROFILELEVEL,
- (uint8 *)&level, sizeof(level));
+ message_send_pid(src, MSG_PROFILELEVEL, &level, sizeof(int), True);
}
/*******************************************************************
@@ -196,7 +183,7 @@ static void init_clock_gettime(void)
}
#endif
-BOOL profile_setup(struct messaging_context *msg_ctx, BOOL rdonly)
+BOOL profile_setup(BOOL rdonly)
{
struct shmid_ds shm_ds;
@@ -250,7 +237,7 @@ BOOL profile_setup(struct messaging_context *msg_ctx, BOOL rdonly)
}
if (shm_ds.shm_segsz != sizeof(*profile_h)) {
- DEBUG(0,("WARNING: profile size is %d (expected %d). Deleting\n",
+ DEBUG(0,("WARNING: profile size is %d (expected %lu). Deleting\n",
(int)shm_ds.shm_segsz, sizeof(*profile_h)));
if (shmctl(shm_id, IPC_RMID, &shm_ds) == 0) {
goto again;
@@ -267,12 +254,8 @@ BOOL profile_setup(struct messaging_context *msg_ctx, BOOL rdonly)
}
profile_p = &profile_h->stats;
- if (msg_ctx != NULL) {
- messaging_register(msg_ctx, NULL, MSG_PROFILE,
- profile_message);
- messaging_register(msg_ctx, NULL, MSG_REQ_PROFILELEVEL,
- reqprofile_message);
- }
+ message_register(MSG_PROFILE, profile_message, NULL);
+ message_register(MSG_REQ_PROFILELEVEL, reqprofile_message, NULL);
return True;
}
diff --git a/source/python/examples/tdbpack/tdbtimetrial.py b/source/python/examples/tdbpack/tdbtimetrial.py
index a72136a1afe..be6404899d8 100755
--- a/source/python/examples/tdbpack/tdbtimetrial.py
+++ b/source/python/examples/tdbpack/tdbtimetrial.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/python2.2
def run_trial():
# import tdbutil
diff --git a/source/python/examples/tdbpack/test_tdbpack.py b/source/python/examples/tdbpack/test_tdbpack.py
index af2ba2b296d..837600f789e 100755
--- a/source/python/examples/tdbpack/test_tdbpack.py
+++ b/source/python/examples/tdbpack/test_tdbpack.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python2.2
__doc__ = """test case for samba.tdbpack functions
diff --git a/source/python/py_lsa.c b/source/python/py_lsa.c
index 74047000314..068190c0202 100644
--- a/source/python/py_lsa.c
+++ b/source/python/py_lsa.c
@@ -125,7 +125,7 @@ static PyObject *lsa_close(PyObject *self, PyObject *args, PyObject *kw)
/* Call rpc function */
- result = rpccli_lsa_Close(hnd->cli, hnd->mem_ctx, &hnd->pol);
+ result = rpccli_lsa_close(hnd->cli, hnd->mem_ctx, &hnd->pol);
/* Cleanup samba stuff */
@@ -187,7 +187,7 @@ static PyObject *lsa_lookup_names(PyObject *self, PyObject *args)
ntstatus = rpccli_lsa_lookup_names(
hnd->cli, mem_ctx, &hnd->pol, num_names, names,
- NULL, 1, &sids, &name_types);
+ NULL, &sids, &name_types);
if (!NT_STATUS_IS_OK(ntstatus) && NT_STATUS_V(ntstatus) != 0x107) {
PyErr_SetObject(lsa_ntstatus, py_ntstatus_tuple(ntstatus));
diff --git a/source/python/py_ntsec.c b/source/python/py_ntsec.c
index f82433a69ff..f832b22fe01 100644
--- a/source/python/py_ntsec.c
+++ b/source/python/py_ntsec.c
@@ -157,7 +157,7 @@ BOOL py_to_ACL(SEC_ACL *acl, PyObject *dict, TALLOC_CTX *mem_ctx)
acl->num_aces = PyList_Size(obj);
- acl->aces = TALLOC_ARRAY(mem_ctx, struct security_ace, acl->num_aces);
+ acl->aces = _talloc(mem_ctx, acl->num_aces * sizeof(SEC_ACE));
acl->size = SEC_ACL_HEADER_SIZE;
for (i = 0; i < acl->num_aces; i++) {
diff --git a/source/python/py_smb.c b/source/python/py_smb.c
index 2f5d1161d87..a1eba47964a 100644
--- a/source/python/py_smb.c
+++ b/source/python/py_smb.c
@@ -48,7 +48,7 @@ static PyObject *py_smb_connect(PyObject *self, PyObject *args, PyObject *kw)
ZERO_STRUCT(ip);
- if (!cli_connect(cli, server, &ip))
+ if (!NT_STATUS_IS_OK(cli_connect(cli, server, &ip)))
return NULL;
return new_cli_state_object(cli);
diff --git a/source/python/py_spoolss_printers_conv.c b/source/python/py_spoolss_printers_conv.c
index 4ab030d9619..a36291f62d1 100644
--- a/source/python/py_spoolss_printers_conv.c
+++ b/source/python/py_spoolss_printers_conv.c
@@ -103,7 +103,6 @@ struct pyconv py_PRINTER_INFO_2[] = {
};
struct pyconv py_PRINTER_INFO_3[] = {
- { "flags", PY_UINT32, offsetof(PRINTER_INFO_3, flags) },
{ NULL }
};
diff --git a/source/python/py_srvsvc.c b/source/python/py_srvsvc.c
index 03ed7fd84b1..4e5649bdb87 100644
--- a/source/python/py_srvsvc.c
+++ b/source/python/py_srvsvc.c
@@ -122,7 +122,7 @@ PyObject *srvsvc_netservergetinfo(PyObject *self, PyObject *args,
status = rpccli_srvsvc_net_srv_get_info(cli->pipe_list, mem_ctx, level, &ctr);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!W_ERROR_IS_OK(status)) {
PyErr_SetObject(srvsvc_error, py_werror_tuple(status));
goto done;
}
diff --git a/source/registry/reg_api.c b/source/registry/reg_api.c
deleted file mode 100644
index 9147becf9b7..00000000000
--- a/source/registry/reg_api.c
+++ /dev/null
@@ -1,728 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Virtual Windows Registry Layer
- * Copyright (C) Volker Lendecke 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* Attempt to wrap the existing API in a more winreg.idl-like way */
-
-#include "includes.h"
-
-static WERROR fill_value_cache(struct registry_key *key)
-{
- if (key->values != NULL) {
- return WERR_OK;
- }
-
- if (!(key->values = TALLOC_ZERO_P(key, REGVAL_CTR))) {
- return WERR_NOMEM;
- }
- if (fetch_reg_values(key->key, key->values) == -1) {
- TALLOC_FREE(key->values);
- return WERR_BADFILE;
- }
-
- return WERR_OK;
-}
-
-static WERROR fill_subkey_cache(struct registry_key *key)
-{
- if (key->subkeys != NULL) {
- return WERR_OK;
- }
-
- if (!(key->subkeys = TALLOC_ZERO_P(key, REGSUBKEY_CTR))) {
- return WERR_NOMEM;
- }
-
- if (fetch_reg_keys(key->key, key->subkeys) == -1) {
- TALLOC_FREE(key->subkeys);
- return WERR_NO_MORE_ITEMS;
- }
-
- return WERR_OK;
-}
-
-static int regkey_destructor(REGISTRY_KEY *key)
-{
- return regdb_close();
-}
-
-static WERROR regkey_open_onelevel(TALLOC_CTX *mem_ctx,
- struct registry_key *parent,
- const char *name,
- const struct nt_user_token *token,
- uint32 access_desired,
- struct registry_key **pregkey)
-{
- WERROR result = WERR_OK;
- struct registry_key *regkey;
- REGISTRY_KEY *key;
- REGSUBKEY_CTR *subkeys = NULL;
-
- DEBUG(7,("regkey_open_onelevel: name = [%s]\n", name));
-
- SMB_ASSERT(strchr(name, '\\') == NULL);
-
- if (!(regkey = TALLOC_ZERO_P(mem_ctx, struct registry_key)) ||
- !(regkey->token = dup_nt_token(regkey, token)) ||
- !(regkey->key = TALLOC_ZERO_P(regkey, REGISTRY_KEY))) {
- result = WERR_NOMEM;
- goto done;
- }
-
- if ( !(W_ERROR_IS_OK(result = regdb_open())) ) {
- goto done;
- }
-
- key = regkey->key;
- talloc_set_destructor(key, regkey_destructor);
-
- /* initialization */
-
- key->type = REG_KEY_GENERIC;
-
- if (name[0] == '\0') {
- /*
- * Open a copy of the parent key
- */
- if (!parent) {
- result = WERR_BADFILE;
- goto done;
- }
- key->name = talloc_strdup(key, parent->key->name);
- }
- else {
- /*
- * Normal subkey open
- */
- key->name = talloc_asprintf(key, "%s%s%s",
- parent ? parent->key->name : "",
- parent ? "\\": "",
- name);
- }
-
- if (key->name == NULL) {
- result = WERR_NOMEM;
- goto done;
- }
-
- /* Tag this as a Performance Counter Key */
-
- if( StrnCaseCmp(key->name, KEY_HKPD, strlen(KEY_HKPD)) == 0 )
- key->type = REG_KEY_HKPD;
-
- /* Look up the table of registry I/O operations */
-
- if ( !(key->hook = reghook_cache_find( key->name )) ) {
- DEBUG(0,("reg_open_onelevel: Failed to assigned a "
- "REGISTRY_HOOK to [%s]\n", key->name ));
- result = WERR_BADFILE;
- goto done;
- }
-
- /* check if the path really exists; failed is indicated by -1 */
- /* if the subkey count failed, bail out */
-
- if ( !(subkeys = TALLOC_ZERO_P( key, REGSUBKEY_CTR )) ) {
- result = WERR_NOMEM;
- goto done;
- }
-
- if ( fetch_reg_keys( key, subkeys ) == -1 ) {
- result = WERR_BADFILE;
- goto done;
- }
-
- TALLOC_FREE( subkeys );
-
- if ( !regkey_access_check( key, access_desired, &key->access_granted,
- token ) ) {
- result = WERR_ACCESS_DENIED;
- goto done;
- }
-
- *pregkey = regkey;
- result = WERR_OK;
-
-done:
- if ( !W_ERROR_IS_OK(result) ) {
- TALLOC_FREE(regkey);
- }
-
- return result;
-}
-
-WERROR reg_openhive(TALLOC_CTX *mem_ctx, const char *hive,
- uint32 desired_access,
- const struct nt_user_token *token,
- struct registry_key **pkey)
-{
- SMB_ASSERT(hive != NULL);
- SMB_ASSERT(hive[0] != '\0');
- SMB_ASSERT(strchr(hive, '\\') == NULL);
-
- return regkey_open_onelevel(mem_ctx, NULL, hive, token, desired_access,
- pkey);
-}
-
-WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent,
- const char *name, uint32 desired_access,
- struct registry_key **pkey)
-{
- struct registry_key *direct_parent = parent;
- WERROR err;
- char *p, *path, *to_free;
- size_t len;
-
- if (!(path = SMB_STRDUP(name))) {
- return WERR_NOMEM;
- }
- to_free = path;
-
- len = strlen(path);
-
- if ((len > 0) && (path[len-1] == '\\')) {
- path[len-1] = '\0';
- }
-
- while ((p = strchr(path, '\\')) != NULL) {
- char *name_component;
- struct registry_key *tmp;
-
- if (!(name_component = SMB_STRNDUP(path, (p - path)))) {
- err = WERR_NOMEM;
- goto error;
- }
-
- err = regkey_open_onelevel(mem_ctx, direct_parent,
- name_component, parent->token,
- SEC_RIGHTS_ENUM_SUBKEYS, &tmp);
- SAFE_FREE(name_component);
-
- if (!W_ERROR_IS_OK(err)) {
- goto error;
- }
- if (direct_parent != parent) {
- TALLOC_FREE(direct_parent);
- }
-
- direct_parent = tmp;
- path = p+1;
- }
-
- err = regkey_open_onelevel(mem_ctx, direct_parent, path, parent->token,
- desired_access, pkey);
- error:
- if (direct_parent != parent) {
- TALLOC_FREE(direct_parent);
- }
- SAFE_FREE(to_free);
- return err;
-}
-
-WERROR reg_enumkey(TALLOC_CTX *mem_ctx, struct registry_key *key,
- uint32 idx, char **name, NTTIME *last_write_time)
-{
- WERROR err;
-
- if (!(key->key->access_granted & SEC_RIGHTS_ENUM_SUBKEYS)) {
- return WERR_ACCESS_DENIED;
- }
-
- if (!W_ERROR_IS_OK(err = fill_subkey_cache(key))) {
- return err;
- }
-
- if (idx >= key->subkeys->num_subkeys) {
- return WERR_NO_MORE_ITEMS;
- }
-
- if (!(*name = talloc_strdup(mem_ctx, key->subkeys->subkeys[idx]))) {
- return WERR_NOMEM;
- }
-
- if (last_write_time) {
- *last_write_time = 0;
- }
-
- return WERR_OK;
-}
-
-WERROR reg_enumvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
- uint32 idx, char **pname, struct registry_value **pval)
-{
- struct registry_value *val;
- WERROR err;
-
- if (!(key->key->access_granted & SEC_RIGHTS_QUERY_VALUE)) {
- return WERR_ACCESS_DENIED;
- }
-
- if (!(W_ERROR_IS_OK(err = fill_value_cache(key)))) {
- return err;
- }
-
- if (idx >= key->values->num_values) {
- return WERR_NO_MORE_ITEMS;
- }
-
- err = registry_pull_value(mem_ctx, &val,
- key->values->values[idx]->type,
- key->values->values[idx]->data_p,
- key->values->values[idx]->size,
- key->values->values[idx]->size);
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- if (pname
- && !(*pname = talloc_strdup(
- mem_ctx, key->values->values[idx]->valuename))) {
- SAFE_FREE(val);
- return WERR_NOMEM;
- }
-
- *pval = val;
- return WERR_OK;
-}
-
-WERROR reg_queryvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
- const char *name, struct registry_value **pval)
-{
- WERROR err;
- uint32 i;
-
- if (!(key->key->access_granted & SEC_RIGHTS_QUERY_VALUE)) {
- return WERR_ACCESS_DENIED;
- }
-
- if (!(W_ERROR_IS_OK(err = fill_value_cache(key)))) {
- return err;
- }
-
- for (i=0; i<key->values->num_values; i++) {
- if (strequal(key->values->values[i]->valuename, name)) {
- return reg_enumvalue(mem_ctx, key, i, NULL, pval);
- }
- }
-
- return WERR_BADFILE;
-}
-
-WERROR reg_queryinfokey(struct registry_key *key, uint32_t *num_subkeys,
- uint32_t *max_subkeylen, uint32_t *max_subkeysize,
- uint32_t *num_values, uint32_t *max_valnamelen,
- uint32_t *max_valbufsize, uint32_t *secdescsize,
- NTTIME *last_changed_time)
-{
- uint32 i, max_size;
- size_t max_len;
- TALLOC_CTX *mem_ctx;
- WERROR err;
- struct security_descriptor *secdesc;
-
- if (!(key->key->access_granted & SEC_RIGHTS_QUERY_VALUE)) {
- return WERR_ACCESS_DENIED;
- }
-
- if (!W_ERROR_IS_OK(fill_subkey_cache(key)) ||
- !W_ERROR_IS_OK(fill_value_cache(key))) {
- return WERR_BADFILE;
- }
-
- max_len = 0;
- for (i=0; i<key->subkeys->num_subkeys; i++) {
- max_len = MAX(max_len, strlen(key->subkeys->subkeys[i]));
- }
-
- *num_subkeys = key->subkeys->num_subkeys;
- *max_subkeylen = max_len;
- *max_subkeysize = 0; /* Class length? */
-
- max_len = 0;
- max_size = 0;
- for (i=0; i<key->values->num_values; i++) {
- max_len = MAX(max_len,
- strlen(key->values->values[i]->valuename));
- max_size = MAX(max_size, key->values->values[i]->size);
- }
-
- *num_values = key->values->num_values;
- *max_valnamelen = max_len;
- *max_valbufsize = max_size;
-
- if (!(mem_ctx = talloc_new(key))) {
- return WERR_NOMEM;
- }
-
- err = regkey_get_secdesc(mem_ctx, key->key, &secdesc);
- if (!W_ERROR_IS_OK(err)) {
- TALLOC_FREE(mem_ctx);
- return err;
- }
-
- *secdescsize = sec_desc_size(secdesc);
- TALLOC_FREE(mem_ctx);
-
- *last_changed_time = 0;
-
- return WERR_OK;
-}
-
-WERROR reg_createkey(TALLOC_CTX *ctx, struct registry_key *parent,
- const char *subkeypath, uint32 desired_access,
- struct registry_key **pkey,
- enum winreg_CreateAction *paction)
-{
- struct registry_key *key = parent;
- struct registry_key *create_parent;
- TALLOC_CTX *mem_ctx;
- char *path, *end;
- WERROR err;
- REGSUBKEY_CTR *subkeys;
-
- if (!(mem_ctx = talloc_new(ctx))) return WERR_NOMEM;
-
- if (!(path = talloc_strdup(mem_ctx, subkeypath))) {
- err = WERR_NOMEM;
- goto done;
- }
-
- while ((end = strchr(path, '\\')) != NULL) {
- struct registry_key *tmp;
- enum winreg_CreateAction action;
-
- *end = '\0';
-
- err = reg_createkey(mem_ctx, key, path,
- SEC_RIGHTS_ENUM_SUBKEYS, &tmp, &action);
- if (!W_ERROR_IS_OK(err)) {
- goto done;
- }
-
- if (key != parent) {
- TALLOC_FREE(key);
- }
-
- key = tmp;
- path = end+1;
- }
-
- /*
- * At this point, "path" contains the one-element subkey of "key". We
- * can try to open it.
- */
-
- err = reg_openkey(ctx, key, path, desired_access, pkey);
- if (W_ERROR_IS_OK(err)) {
- if (paction != NULL) {
- *paction = REG_OPENED_EXISTING_KEY;
- }
- goto done;
- }
-
- if (!W_ERROR_EQUAL(err, WERR_BADFILE)) {
- /*
- * Something but "notfound" has happened, so bail out
- */
- goto done;
- }
-
- /*
- * We have to make a copy of the current key, as we opened it only
- * with ENUM_SUBKEY access.
- */
-
- err = reg_openkey(mem_ctx, key, "", SEC_RIGHTS_CREATE_SUBKEY,
- &create_parent);
- if (!W_ERROR_IS_OK(err)) {
- goto done;
- }
-
- /*
- * Actually create the subkey
- */
-
- if (!(subkeys = TALLOC_ZERO_P(mem_ctx, REGSUBKEY_CTR))) {
- err = WERR_NOMEM;
- goto done;
- }
-
- err = fill_subkey_cache(create_parent);
- if (!W_ERROR_IS_OK(err)) goto done;
-
- err = regsubkey_ctr_addkey(create_parent->subkeys, path);
- if (!W_ERROR_IS_OK(err)) goto done;
-
- if (!store_reg_keys(create_parent->key, create_parent->subkeys)) {
- TALLOC_FREE(create_parent->subkeys);
- err = WERR_REG_IO_FAILURE;
- goto done;
- }
-
- /*
- * Now open the newly created key
- */
-
- err = reg_openkey(ctx, create_parent, path, desired_access, pkey);
- if (W_ERROR_IS_OK(err) && (paction != NULL)) {
- *paction = REG_CREATED_NEW_KEY;
- }
-
- done:
- TALLOC_FREE(mem_ctx);
- return err;
-}
-
-
-WERROR reg_deletekey(struct registry_key *parent, const char *path)
-{
- WERROR err;
- TALLOC_CTX *mem_ctx;
- char *name, *end;
- int num_subkeys;
- struct registry_key *tmp_key;
-
- if (!(mem_ctx = talloc_init("reg_createkey"))) return WERR_NOMEM;
-
- if (!(name = talloc_strdup(mem_ctx, path))) {
- err = WERR_NOMEM;
- goto error;
- }
-
- /* check if the key has subkeys */
- err = reg_openkey(mem_ctx, parent, name, REG_KEY_READ, &tmp_key);
- if (!W_ERROR_IS_OK(err)) {
- goto error;
- }
- if (!W_ERROR_IS_OK(err = fill_subkey_cache(tmp_key))) {
- goto error;
- }
- if (tmp_key->subkeys->num_subkeys > 0) {
- err = WERR_ACCESS_DENIED;
- goto error;
- }
-
- /* no subkeys - proceed with delete */
- if ((end = strrchr(name, '\\')) != NULL) {
- *end = '\0';
-
- err = reg_openkey(mem_ctx, parent, name,
- SEC_RIGHTS_CREATE_SUBKEY, &tmp_key);
- if (!W_ERROR_IS_OK(err)) {
- goto error;
- }
-
- parent = tmp_key;
- name = end+1;
- }
-
- if (name[0] == '\0') {
- err = WERR_INVALID_PARAM;
- goto error;
- }
-
- if (!W_ERROR_IS_OK(err = fill_subkey_cache(parent))) {
- goto error;
- }
-
- num_subkeys = parent->subkeys->num_subkeys;
-
- if (regsubkey_ctr_delkey(parent->subkeys, name) == num_subkeys) {
- err = WERR_BADFILE;
- goto error;
- }
-
- if (!store_reg_keys(parent->key, parent->subkeys)) {
- TALLOC_FREE(parent->subkeys);
- err = WERR_REG_IO_FAILURE;
- goto error;
- }
-
- err = WERR_OK;
- error:
- TALLOC_FREE(mem_ctx);
- return err;
-}
-
-WERROR reg_setvalue(struct registry_key *key, const char *name,
- const struct registry_value *val)
-{
- WERROR err;
- DATA_BLOB value_data;
- int res;
-
- if (!(key->key->access_granted & SEC_RIGHTS_SET_VALUE)) {
- return WERR_ACCESS_DENIED;
- }
-
- if (!W_ERROR_IS_OK(err = fill_value_cache(key))) {
- return err;
- }
-
- err = registry_push_value(key, val, &value_data);
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- res = regval_ctr_addvalue(key->values, name, val->type,
- (char *)value_data.data, value_data.length);
- TALLOC_FREE(value_data.data);
-
- if (res == 0) {
- TALLOC_FREE(key->values);
- return WERR_NOMEM;
- }
-
- if (!store_reg_values(key->key, key->values)) {
- TALLOC_FREE(key->values);
- return WERR_REG_IO_FAILURE;
- }
-
- return WERR_OK;
-}
-
-WERROR reg_deletevalue(struct registry_key *key, const char *name)
-{
- WERROR err;
-
- if (!(key->key->access_granted & SEC_RIGHTS_SET_VALUE)) {
- return WERR_ACCESS_DENIED;
- }
-
- if (!W_ERROR_IS_OK(err = fill_value_cache(key))) {
- return err;
- }
-
- regval_ctr_delvalue(key->values, name);
-
- if (!store_reg_values(key->key, key->values)) {
- TALLOC_FREE(key->values);
- return WERR_REG_IO_FAILURE;
- }
-
- return WERR_OK;
-}
-
-
-/*
- * Utility function to open a complete registry path including the hive
- * prefix. This should become the replacement function for
- * regkey_open_internal.
- */
-
-WERROR reg_open_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access, const struct nt_user_token *token,
- struct registry_key **pkey)
-{
- struct registry_key *hive, *key;
- char *path, *p;
- WERROR err;
-
- if (!(path = SMB_STRDUP(orig_path))) {
- return WERR_NOMEM;
- }
-
- p = strchr(path, '\\');
-
- if ((p == NULL) || (p[1] == '\0')) {
- /*
- * No key behind the hive, just return the hive
- */
-
- err = reg_openhive(mem_ctx, path, desired_access, token,
- &hive);
- if (!W_ERROR_IS_OK(err)) {
- SAFE_FREE(path);
- return err;
- }
- SAFE_FREE(path);
- *pkey = hive;
- return WERR_OK;
- }
-
- *p = '\0';
-
- err = reg_openhive(mem_ctx, path, SEC_RIGHTS_ENUM_SUBKEYS, token,
- &hive);
- if (!W_ERROR_IS_OK(err)) {
- SAFE_FREE(path);
- return err;
- }
-
- err = reg_openkey(mem_ctx, hive, p+1, desired_access, &key);
-
- TALLOC_FREE(hive);
- SAFE_FREE(path);
-
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- *pkey = key;
- return WERR_OK;
-}
-
-
-/*
- * Utility function to delete a registry key with all its subkeys.
- * Note that reg_deletekey returns ACCESS_DENIED when called on a
- * key that has subkeys.
- */
-WERROR reg_deletekey_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
- const char *path)
-{
- TALLOC_CTX *mem_ctx = NULL;
- WERROR werr = WERR_OK;
- struct registry_key *key;
- char *subkey_name = NULL;
-
- mem_ctx = talloc_new(ctx);
- if (mem_ctx == NULL) {
- werr = WERR_NOMEM;
- goto done;
- }
-
- /* recurse through subkeys first */
- werr = reg_openkey(mem_ctx, parent, path, REG_KEY_WRITE, &key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- while (W_ERROR_IS_OK(werr = reg_enumkey(mem_ctx, key, 0,
- &subkey_name, NULL)))
- {
- werr = reg_deletekey_recursive(mem_ctx, key, subkey_name);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
- }
- if (!W_ERROR_EQUAL(WERR_NO_MORE_ITEMS, werr)) {
- DEBUG(1, ("reg_deletekey_recursive: Error enumerating "
- "subkeys: %s\n", dos_errstr(werr)));
- goto done;
- }
-
- /* now delete the actual key */
- werr = reg_deletekey(parent, path);
-
-done:
- TALLOC_FREE(mem_ctx);
- return werr;
-}
diff --git a/source/registry/reg_db.c b/source/registry/reg_db.c
index f166467c50b..954cb6cf786 100644
--- a/source/registry/reg_db.c
+++ b/source/registry/reg_db.c
@@ -25,9 +25,11 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_SRV
-static struct tdb_wrap *tdb_reg = NULL;
+static TDB_CONTEXT *tdb_reg;
static int tdb_refcount;
+#define VALUE_PREFIX "SAMBA_REGVAL"
+
/* List the deepest path into the registry. All part components will be created.*/
/* If you want to have a part of the path controlled by the tdb and part by
@@ -44,7 +46,6 @@ static const char *builtin_registry_paths[] = {
KEY_PRINTING,
KEY_SHARES,
KEY_EVENTLOG,
- KEY_SMBCONF,
"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib",
"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009",
"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print\\Monitors",
@@ -80,6 +81,8 @@ static struct builtin_regkey_value builtin_registry_values[] = {
{ NULL, NULL, 0, { NULL } }
};
+#define REGVER_V1 1 /* first db version with write support */
+
/***********************************************************************
Open the registry data in the tdb
***********************************************************************/
@@ -102,7 +105,7 @@ static BOOL init_registry_data( void )
* transaction behaviour.
*/
- if ( tdb_transaction_start( tdb_reg->tdb ) == -1 ) {
+ if ( tdb_transaction_start( tdb_reg ) == -1 ) {
DEBUG(0, ("init_registry_data: tdb_transaction_start "
"failed\n"));
return False;
@@ -201,7 +204,7 @@ static BOOL init_registry_data( void )
TALLOC_FREE( values );
}
- if (tdb_transaction_commit( tdb_reg->tdb ) == -1) {
+ if (tdb_transaction_commit( tdb_reg ) == -1) {
DEBUG(0, ("init_registry_data: Could not commit "
"transaction\n"));
return False;
@@ -211,7 +214,7 @@ static BOOL init_registry_data( void )
fail:
- if (tdb_transaction_cancel( tdb_reg->tdb ) == -1) {
+ if (tdb_transaction_cancel( tdb_reg ) == -1) {
smb_panic("init_registry_data: tdb_transaction_cancel "
"failed\n");
}
@@ -231,9 +234,9 @@ BOOL regdb_init( void )
if ( tdb_reg )
return True;
- if ( !(tdb_reg = tdb_wrap_open(NULL, lock_path("registry.tdb"), 0, REG_TDB_FLAGS, O_RDWR, 0600)) )
+ if ( !(tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600)) )
{
- tdb_reg = tdb_wrap_open(NULL, lock_path("registry.tdb"), 0, REG_TDB_FLAGS, O_RDWR|O_CREAT, 0600);
+ tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
if ( !tdb_reg ) {
DEBUG(0,("regdb_init: Failed to open registry %s (%s)\n",
lock_path("registry.tdb"), strerror(errno) ));
@@ -244,13 +247,12 @@ BOOL regdb_init( void )
}
tdb_refcount = 1;
+
- vers_id = tdb_fetch_int32(tdb_reg->tdb, vstring);
+ vers_id = tdb_fetch_int32(tdb_reg, vstring);
if ( vers_id != REGVER_V1 ) {
/* any upgrade code here if needed */
- DEBUG(10, ("regdb_init: got INFO/version = %d != %d\n",
- vers_id, REGVER_V1));
}
/* always setup the necessary keys and values */
@@ -279,7 +281,7 @@ WERROR regdb_open( void )
become_root();
- tdb_reg = tdb_wrap_open(NULL, lock_path("registry.tdb"), 0, REG_TDB_FLAGS, O_RDWR, 0600);
+ tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600);
if ( !tdb_reg ) {
result = ntstatus_to_werror( map_nt_error_from_unix( errno ) );
DEBUG(0,("regdb_open: Failed to open %s! (%s)\n",
@@ -299,6 +301,8 @@ WERROR regdb_open( void )
int regdb_close( void )
{
+ int ret;
+
tdb_refcount--;
DEBUG(10,("regdb_close: decrementing refcount (%d)\n", tdb_refcount));
@@ -308,18 +312,10 @@ int regdb_close( void )
SMB_ASSERT( tdb_refcount >= 0 );
- TALLOC_FREE(tdb_reg);
- return 0;
-}
+ ret = tdb_close( tdb_reg );
+ tdb_reg = NULL;
-/***********************************************************************
- return the tdb sequence number of the registry tdb.
- this is an indicator for the content of the registry
- having changed. it will change upon regdb_init, too, though.
- ***********************************************************************/
-int regdb_get_seqnum(void)
-{
- return tdb_get_seqnum(tdb_reg->tdb);
+ return ret;
}
/***********************************************************************
@@ -330,8 +326,8 @@ int regdb_get_seqnum(void)
static BOOL regdb_store_keys_internal( const char *key, REGSUBKEY_CTR *ctr )
{
- TDB_DATA dbuf;
- uint8 *buffer;
+ TDB_DATA kbuf, dbuf;
+ char *buffer;
int i = 0;
uint32 len, buflen;
BOOL ret = True;
@@ -346,7 +342,7 @@ static BOOL regdb_store_keys_internal( const char *key, REGSUBKEY_CTR *ctr )
/* allocate some initial memory */
- if (!(buffer = (uint8 *)SMB_MALLOC(sizeof(pstring)))) {
+ if (!(buffer = (char *)SMB_MALLOC(sizeof(pstring)))) {
return False;
}
buflen = sizeof(pstring);
@@ -362,7 +358,7 @@ static BOOL regdb_store_keys_internal( const char *key, REGSUBKEY_CTR *ctr )
len += tdb_pack( buffer+len, buflen-len, "f", regsubkey_ctr_specific_key(ctr, i) );
if ( len > buflen ) {
/* allocate some extra space */
- if ((buffer = (uint8 *)SMB_REALLOC( buffer, len*2 )) == NULL) {
+ if ((buffer = (char *)SMB_REALLOC( buffer, len*2 )) == NULL) {
DEBUG(0,("regdb_store_keys: Failed to realloc memory of size [%d]\n", len*2));
ret = False;
goto done;
@@ -375,9 +371,11 @@ static BOOL regdb_store_keys_internal( const char *key, REGSUBKEY_CTR *ctr )
/* finally write out the data */
+ kbuf.dptr = keyname;
+ kbuf.dsize = strlen(keyname)+1;
dbuf.dptr = buffer;
dbuf.dsize = len;
- if ( tdb_store_bystring( tdb_reg->tdb, keyname, dbuf, TDB_REPLACE ) == -1) {
+ if ( tdb_store( tdb_reg, kbuf, dbuf, TDB_REPLACE ) == -1) {
ret = False;
goto done;
}
@@ -397,20 +395,14 @@ BOOL regdb_store_keys( const char *key, REGSUBKEY_CTR *ctr )
{
int num_subkeys, i;
pstring path;
- REGSUBKEY_CTR *subkeys = NULL, *old_subkeys = NULL;
+ REGSUBKEY_CTR *subkeys, *old_subkeys;
char *oldkeyname;
- if ( tdb_transaction_start( tdb_reg->tdb ) == -1 ) {
- DEBUG(0, ("regdb_store_keys: tdb_transaction_start failed\n"));
- return False;
- }
-
- /* fetch a list of the old subkeys so we can determine if any were
- * deleted */
+ /* fetch a list of the old subkeys so we can determine if any were deleted */
if ( !(old_subkeys = TALLOC_ZERO_P( ctr, REGSUBKEY_CTR )) ) {
DEBUG(0,("regdb_store_keys: talloc() failure!\n"));
- goto fail;
+ return False;
}
regdb_fetch_keys( key, old_subkeys );
@@ -418,9 +410,8 @@ BOOL regdb_store_keys( const char *key, REGSUBKEY_CTR *ctr )
/* store the subkey list for the parent */
if ( !regdb_store_keys_internal( key, ctr ) ) {
- DEBUG(0,("regdb_store_keys: Failed to store new subkey list "
- "for parent [%s]\n", key ));
- goto fail;
+ DEBUG(0,("regdb_store_keys: Failed to store new subkey list for parent [%s}\n", key ));
+ return False;
}
/* now delete removed keys */
@@ -428,30 +419,11 @@ BOOL regdb_store_keys( const char *key, REGSUBKEY_CTR *ctr )
num_subkeys = regsubkey_ctr_numkeys( old_subkeys );
for ( i=0; i<num_subkeys; i++ ) {
oldkeyname = regsubkey_ctr_specific_key( old_subkeys, i );
-
- if ( regsubkey_ctr_key_exists( ctr, oldkeyname ) ) {
- /*
- * It's still around, don't delete
- */
-
- continue;
+ if ( !regsubkey_ctr_key_exists( ctr, oldkeyname ) ) {
+ pstr_sprintf( path, "%s%c%s", key, '/', oldkeyname );
+ normalize_reg_path( path );
+ tdb_delete_bystring( tdb_reg, path );
}
-
- pstr_sprintf( path, "%s/%s", key, oldkeyname );
- normalize_reg_path( path );
- if (tdb_delete_bystring( tdb_reg->tdb, path ) == -1) {
- DEBUG(1, ("Deleting %s failed\n", path));
- goto fail;
- }
-
- pstr_sprintf( path, "%s/%s/%s", REG_VALUE_PREFIX, key,
- oldkeyname );
- normalize_reg_path( path );
-
- /*
- * Ignore errors here, we might have no values around
- */
- tdb_delete_bystring( tdb_reg->tdb, path );
}
TALLOC_FREE( old_subkeys );
@@ -460,42 +432,26 @@ BOOL regdb_store_keys( const char *key, REGSUBKEY_CTR *ctr )
num_subkeys = regsubkey_ctr_numkeys( ctr );
for ( i=0; i<num_subkeys; i++ ) {
- pstr_sprintf( path, "%s/%s", key,
- regsubkey_ctr_specific_key( ctr, i ) );
+ pstr_sprintf( path, "%s%c%s", key, '/', regsubkey_ctr_specific_key( ctr, i ) );
if ( !(subkeys = TALLOC_ZERO_P( ctr, REGSUBKEY_CTR )) ) {
DEBUG(0,("regdb_store_keys: talloc() failure!\n"));
- goto fail;
+ return False;
}
if ( regdb_fetch_keys( path, subkeys ) == -1 ) {
/* create a record with 0 subkeys */
if ( !regdb_store_keys_internal( path, subkeys ) ) {
- DEBUG(0,("regdb_store_keys: Failed to store "
- "new record for key [%s]\n", path ));
- goto fail;
+ DEBUG(0,("regdb_store_keys: Failed to store new record for key [%s}\n", path ));
+ TALLOC_FREE( subkeys );
+ return False;
}
}
TALLOC_FREE( subkeys );
}
-
- if (tdb_transaction_commit( tdb_reg->tdb ) == -1) {
- DEBUG(0, ("regdb_store_keys: Could not commit transaction\n"));
- return False;
- }
-
+
return True;
-
- fail:
- TALLOC_FREE( old_subkeys );
- TALLOC_FREE( subkeys );
-
- if (tdb_transaction_cancel( tdb_reg->tdb ) == -1) {
- smb_panic("regdb_store_keys: tdb_transaction_cancel failed\n");
- }
-
- return False;
}
@@ -509,7 +465,7 @@ int regdb_fetch_keys( const char* key, REGSUBKEY_CTR *ctr )
pstring path;
uint32 num_items;
TDB_DATA dbuf;
- uint8 *buf;
+ char *buf;
uint32 buflen, len;
int i;
fstring subkeyname;
@@ -522,7 +478,7 @@ int regdb_fetch_keys( const char* key, REGSUBKEY_CTR *ctr )
pstring_sub( path, "\\", "/" );
strupper_m( path );
- dbuf = tdb_fetch_bystring( tdb_reg->tdb, path );
+ dbuf = tdb_fetch_bystring( tdb_reg, path );
buf = dbuf.dptr;
buflen = dbuf.dsize;
@@ -550,7 +506,7 @@ int regdb_fetch_keys( const char* key, REGSUBKEY_CTR *ctr )
Unpack a list of registry values frem the TDB
***************************************************************************/
-static int regdb_unpack_values(REGVAL_CTR *values, uint8 *buf, int buflen)
+static int regdb_unpack_values(REGVAL_CTR *values, char *buf, int buflen)
{
int len = 0;
uint32 type;
@@ -595,7 +551,7 @@ static int regdb_unpack_values(REGVAL_CTR *values, uint8 *buf, int buflen)
Pack all values in all printer keys
***************************************************************************/
-static int regdb_pack_values(REGVAL_CTR *values, uint8 *buf, int buflen)
+static int regdb_pack_values(REGVAL_CTR *values, char *buf, int buflen)
{
int len = 0;
int i;
@@ -637,10 +593,10 @@ int regdb_fetch_values( const char* key, REGVAL_CTR *values )
DEBUG(10,("regdb_fetch_values: Looking for value of key [%s] \n", key));
- pstr_sprintf( keystr, "%s/%s", REG_VALUE_PREFIX, key );
+ pstr_sprintf( keystr, "%s/%s", VALUE_PREFIX, key );
normalize_reg_path( keystr );
- data = tdb_fetch_bystring( tdb_reg->tdb, keystr );
+ data = tdb_fetch_bystring( tdb_reg, keystr );
if ( !data.dptr ) {
/* all keys have zero values by default */
@@ -675,98 +631,23 @@ BOOL regdb_store_values( const char *key, REGVAL_CTR *values )
return False;
}
- data.dptr = SMB_MALLOC_ARRAY( uint8, len );
+ data.dptr = SMB_MALLOC_ARRAY( char, len );
data.dsize = len;
len = regdb_pack_values( values, data.dptr, data.dsize );
SMB_ASSERT( len == data.dsize );
- pstr_sprintf( keystr, "%s/%s", REG_VALUE_PREFIX, key );
+ pstr_sprintf( keystr, "%s/%s", VALUE_PREFIX, key );
normalize_reg_path( keystr );
- ret = tdb_trans_store_bystring(tdb_reg->tdb, keystr, data, TDB_REPLACE);
+ ret = tdb_store_bystring(tdb_reg, keystr, data, TDB_REPLACE);
SAFE_FREE( data.dptr );
return ret != -1 ;
}
-static WERROR regdb_get_secdesc(TALLOC_CTX *mem_ctx, const char *key,
- struct security_descriptor **psecdesc)
-{
- char *tdbkey;
- TDB_DATA data;
- NTSTATUS status;
-
- DEBUG(10, ("regdb_get_secdesc: Getting secdesc of key [%s]\n", key));
-
- if (asprintf(&tdbkey, "%s/%s", REG_SECDESC_PREFIX, key) == -1) {
- return WERR_NOMEM;
- }
- normalize_dbkey(tdbkey);
-
- data = tdb_fetch_bystring(tdb_reg->tdb, tdbkey);
- SAFE_FREE(tdbkey);
-
- if (data.dptr == NULL) {
- return WERR_BADFILE;
- }
-
- status = unmarshall_sec_desc(mem_ctx, (uint8 *)data.dptr, data.dsize,
- psecdesc);
-
- SAFE_FREE(data.dptr);
-
- if (NT_STATUS_EQUAL(status, NT_STATUS_NO_MEMORY)) {
- return WERR_NOMEM;
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- return WERR_REG_CORRUPT;
- }
-
- return WERR_OK;
-}
-
-static WERROR regdb_set_secdesc(const char *key,
- struct security_descriptor *secdesc)
-{
- prs_struct ps;
- TALLOC_CTX *mem_ctx;
- char *tdbkey;
- WERROR err = WERR_NOMEM;
- TDB_DATA tdbdata;
-
- if (!(mem_ctx = talloc_init("regdb_set_secdesc"))) {
- return WERR_NOMEM;
- }
-
- ZERO_STRUCT(ps);
-
- if (!(tdbkey = talloc_asprintf(mem_ctx, "%s/%s", REG_SECDESC_PREFIX,
- key))) {
- goto done;
- }
- normalize_dbkey(tdbkey);
-
- err = ntstatus_to_werror(marshall_sec_desc(mem_ctx, secdesc,
- &tdbdata.dptr,
- &tdbdata.dsize));
- if (!W_ERROR_IS_OK(err)) {
- goto done;
- }
-
- if (tdb_trans_store_bystring(tdb_reg->tdb, tdbkey, tdbdata, 0) == -1) {
- err = ntstatus_to_werror(map_nt_error_from_unix(errno));
- goto done;
- }
-
- done:
- prs_mem_free(&ps);
- TALLOC_FREE(mem_ctx);
- return err;
-}
/*
* Table of function pointers for default access
@@ -777,7 +658,7 @@ REGISTRY_OPS regdb_ops = {
regdb_fetch_values,
regdb_store_keys,
regdb_store_values,
- NULL,
- regdb_get_secdesc,
- regdb_set_secdesc
+ NULL
};
+
+
diff --git a/source/registry/reg_eventlog.c b/source/registry/reg_eventlog.c
index b70b79f1e39..1ad80d2b0e9 100644
--- a/source/registry/reg_eventlog.c
+++ b/source/registry/reg_eventlog.c
@@ -48,10 +48,8 @@ BOOL eventlog_init_keys( void )
}
regdb_fetch_keys( KEY_EVENTLOG, subkeys );
regsubkey_ctr_addkey( subkeys, *elogs );
- if ( !regdb_store_keys( KEY_EVENTLOG, subkeys ) ) {
- TALLOC_FREE(subkeys);
+ if ( !regdb_store_keys( KEY_EVENTLOG, subkeys ) )
return False;
- }
TALLOC_FREE( subkeys );
/* add in the key of form KEY_EVENTLOG/Application */
@@ -72,10 +70,8 @@ BOOL eventlog_init_keys( void )
regdb_fetch_keys( evtlogpath, subkeys );
regsubkey_ctr_addkey( subkeys, *elogs );
- if ( !regdb_store_keys( evtlogpath, subkeys ) ) {
- TALLOC_FREE(subkeys);
+ if ( !regdb_store_keys( evtlogpath, subkeys ) )
return False;
- }
TALLOC_FREE( subkeys );
/* now add the values to the KEY_EVENTLOG/Application form key */
@@ -241,7 +237,7 @@ BOOL eventlog_add_source( const char *eventlog, const char *sourcename,
already_in = False;
wrklist = NULL;
- dump_data( 1, rval->data_p, rval->size );
+ dump_data( 1, (const char *)rval->data_p, rval->size );
if ( ( numsources =
regval_convert_multi_sz( ( uint16 * ) rval->data_p, rval->size,
&wrklist ) ) > 0 ) {
@@ -284,7 +280,7 @@ BOOL eventlog_add_source( const char *eventlog, const char *sourcename,
*( wp + numsources ) = ( char * ) sourcename;
*( wp + numsources + 1 ) = NULL;
mbytes = regval_build_multi_sz( wp, &msz_wp );
- dump_data( 1, ( uint8 * ) msz_wp, mbytes );
+ dump_data( 1, ( char * ) msz_wp, mbytes );
regval_ctr_addvalue( values, "Sources", REG_MULTI_SZ,
( char * ) msz_wp, mbytes );
regdb_store_values( evtlogpath, values );
@@ -295,7 +291,8 @@ BOOL eventlog_add_source( const char *eventlog, const char *sourcename,
sourcename ) );
}
TALLOC_FREE( values );
- TALLOC_FREE( wrklist ); /* */
+ if ( wrklist )
+ TALLOC_FREE( wrklist ); /* */
if ( !( subkeys = TALLOC_ZERO_P( NULL, REGSUBKEY_CTR ) ) ) {
DEBUG( 0, ( "talloc() failure!\n" ) );
diff --git a/source/registry/reg_frontend.c b/source/registry/reg_frontend.c
index dd904f1863b..ed49cc998c7 100644
--- a/source/registry/reg_frontend.c
+++ b/source/registry/reg_frontend.c
@@ -28,7 +28,6 @@
extern REGISTRY_OPS printing_ops;
extern REGISTRY_OPS eventlog_ops;
extern REGISTRY_OPS shares_reg_ops;
-extern REGISTRY_OPS smbconf_reg_ops;
extern REGISTRY_OPS regdb_ops; /* these are the default */
/* array of REGISTRY_HOOK's which are read into a tree for easy access */
@@ -40,11 +39,68 @@ REGISTRY_HOOK reg_hooks[] = {
{ KEY_PRINTING_2K, &printing_ops },
{ KEY_PRINTING_PORTS, &printing_ops },
{ KEY_SHARES, &shares_reg_ops },
- { KEY_SMBCONF, &smbconf_reg_ops },
#endif
{ NULL, NULL }
};
+
+static struct generic_mapping reg_generic_map =
+ { REG_KEY_READ, REG_KEY_WRITE, REG_KEY_EXECUTE, REG_KEY_ALL };
+
+/********************************************************************
+********************************************************************/
+
+static NTSTATUS registry_access_check( SEC_DESC *sec_desc, NT_USER_TOKEN *token,
+ uint32 access_desired, uint32 *access_granted )
+{
+ NTSTATUS result;
+
+ if ( geteuid() == sec_initial_uid() ) {
+ DEBUG(5,("registry_access_check: using root's token\n"));
+ token = get_root_nt_token();
+ }
+
+ se_map_generic( &access_desired, &reg_generic_map );
+ se_access_check( sec_desc, token, access_desired, access_granted, &result );
+
+ return result;
+}
+
+/********************************************************************
+********************************************************************/
+
+static SEC_DESC* construct_registry_sd( TALLOC_CTX *ctx )
+{
+ SEC_ACE ace[2];
+ SEC_ACCESS mask;
+ size_t i = 0;
+ SEC_DESC *sd;
+ SEC_ACL *acl;
+ size_t sd_size;
+
+ /* basic access for Everyone */
+
+ init_sec_access(&mask, REG_KEY_READ );
+ init_sec_ace(&ace[i++], &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
+
+ /* Full Access 'BUILTIN\Administrators' */
+
+ init_sec_access(&mask, REG_KEY_ALL );
+ init_sec_ace(&ace[i++], &global_sid_Builtin_Administrators, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
+
+
+ /* create the security descriptor */
+
+ if ( !(acl = make_sec_acl(ctx, NT4_ACL_REVISION, i, ace)) )
+ return NULL;
+
+ if ( !(sd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, acl, &sd_size)) )
+ return NULL;
+
+ return sd;
+}
+
+
/***********************************************************************
Open the registry database and initialize the REGISTRY_HOOK cache
***********************************************************************/
@@ -84,125 +140,290 @@ BOOL init_registry( void )
return True;
}
-WERROR regkey_open_internal( TALLOC_CTX *ctx, REGISTRY_KEY **regkey,
- const char *path,
- const struct nt_user_token *token,
- uint32 access_desired )
+/***********************************************************************
+ High level wrapper function for storing registry subkeys
+ ***********************************************************************/
+
+BOOL store_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkeys )
{
- struct registry_key *key;
- WERROR err;
+ if ( key->hook && key->hook->ops && key->hook->ops->store_subkeys )
+ return key->hook->ops->store_subkeys( key->name, subkeys );
+
+ return False;
- err = reg_open_path(NULL, path, access_desired, token, &key);
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
+}
- *regkey = talloc_move(ctx, &key->key);
- TALLOC_FREE(key);
- return WERR_OK;
+/***********************************************************************
+ High level wrapper function for storing registry values
+ ***********************************************************************/
+
+BOOL store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val )
+{
+ if ( check_dynamic_reg_values( key ) )
+ return False;
+
+ if ( key->hook && key->hook->ops && key->hook->ops->store_values )
+ return key->hook->ops->store_values( key->name, val );
+
+ return False;
+}
+
+
+/***********************************************************************
+ High level wrapper function for enumerating registry subkeys
+ Initialize the TALLOC_CTX if necessary
+ ***********************************************************************/
+
+int fetch_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkey_ctr )
+{
+ int result = -1;
+
+ if ( key->hook && key->hook->ops && key->hook->ops->fetch_subkeys )
+ result = key->hook->ops->fetch_subkeys( key->name, subkey_ctr );
+
+ return result;
}
-WERROR regkey_set_secdesc(REGISTRY_KEY *key,
- struct security_descriptor *psecdesc)
+/***********************************************************************
+ retreive a specific subkey specified by index. Caller is
+ responsible for freeing memory
+ ***********************************************************************/
+
+BOOL fetch_reg_keys_specific( REGISTRY_KEY *key, char** subkey, uint32 key_index )
{
- if (key->hook && key->hook->ops && key->hook->ops->set_secdesc) {
- return key->hook->ops->set_secdesc(key->name, psecdesc);
+ static REGSUBKEY_CTR *ctr = NULL;
+ static pstring save_path;
+ char *s;
+
+ *subkey = NULL;
+
+ /* simple caching for performance; very basic heuristic */
+
+ DEBUG(8,("fetch_reg_keys_specific: Looking for key [%d] of [%s]\n", key_index, key->name));
+
+ if ( !ctr ) {
+ DEBUG(8,("fetch_reg_keys_specific: Initializing cache of subkeys for [%s]\n", key->name));
+
+ if ( !(ctr = TALLOC_ZERO_P( NULL, REGSUBKEY_CTR )) ) {
+ DEBUG(0,("fetch_reg_keys_specific: talloc() failed!\n"));
+ return False;
+ }
+
+ pstrcpy( save_path, key->name );
+
+ if ( fetch_reg_keys( key, ctr) == -1 )
+ return False;
+
}
+ /* clear the cache when key_index == 0 or the path has changed */
+ else if ( !key_index || StrCaseCmp( save_path, key->name) ) {
+
+ DEBUG(8,("fetch_reg_keys_specific: Updating cache of subkeys for [%s]\n", key->name));
+
+ TALLOC_FREE( ctr );
+
+ if ( !(ctr = TALLOC_ZERO_P( NULL, REGSUBKEY_CTR )) ) {
+ DEBUG(0,("fetch_reg_keys_specific: talloc() failed!\n"));
+ return False;
+ }
+
+ pstrcpy( save_path, key->name );
+
+ if ( fetch_reg_keys( key, ctr) == -1 )
+ return False;
+ }
+
+ if ( !(s = regsubkey_ctr_specific_key( ctr, key_index )) )
+ return False;
+
+ *subkey = SMB_STRDUP( s );
- return WERR_ACCESS_DENIED;
+ return True;
}
-/*
- * Utility function to create a registry key without opening the hive
- * before. Assumes the hive already exists.
- */
+/***********************************************************************
+ High level wrapper function for enumerating registry values
+ ***********************************************************************/
-WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access,
- const struct nt_user_token *token,
- enum winreg_CreateAction *paction,
- struct registry_key **pkey)
+int fetch_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val )
{
- struct registry_key *hive;
- char *path, *p;
- WERROR err;
+ int result = -1;
+
+ if ( key->hook && key->hook->ops && key->hook->ops->fetch_values )
+ result = key->hook->ops->fetch_values( key->name, val );
+
+ /* if the backend lookup returned no data, try the dynamic overlay */
+
+ if ( result == 0 ) {
+ result = fetch_dynamic_reg_values( key, val );
- if (!(path = SMB_STRDUP(orig_path))) {
- return WERR_NOMEM;
+ return ( result != -1 ) ? result : 0;
}
+
+ return result;
+}
- p = strchr(path, '\\');
- if ((p == NULL) || (p[1] == '\0')) {
- /*
- * No key behind the hive, just return the hive
- */
+/***********************************************************************
+ retreive a specific subkey specified by index. Caller is
+ responsible for freeing memory
+ ***********************************************************************/
+
+BOOL fetch_reg_values_specific( REGISTRY_KEY *key, REGISTRY_VALUE **val, uint32 val_index )
+{
+ static REGVAL_CTR *ctr = NULL;
+ static pstring save_path;
+ REGISTRY_VALUE *v;
+
+ *val = NULL;
+
+ /* simple caching for performance; very basic heuristic */
+
+ if ( !ctr ) {
+ DEBUG(8,("fetch_reg_values_specific: Initializing cache of values for [%s]\n", key->name));
- err = reg_openhive(mem_ctx, path, desired_access, token,
- &hive);
- if (!W_ERROR_IS_OK(err)) {
- SAFE_FREE(path);
- return err;
+ if ( !(ctr = TALLOC_ZERO_P( NULL, REGVAL_CTR )) ) {
+ DEBUG(0,("fetch_reg_values_specific: talloc() failed!\n"));
+ return False;
}
- SAFE_FREE(path);
- *pkey = hive;
- *paction = REG_OPENED_EXISTING_KEY;
- return WERR_OK;
+
+ pstrcpy( save_path, key->name );
+
+ if ( fetch_reg_values( key, ctr) == -1 )
+ return False;
}
+ /* clear the cache when val_index == 0 or the path has changed */
+ else if ( !val_index || !strequal(save_path, key->name) ) {
- *p = '\0';
+ DEBUG(8,("fetch_reg_values_specific: Updating cache of values for [%s]\n", key->name));
+
+ TALLOC_FREE( ctr );
+
+ if ( !(ctr = TALLOC_ZERO_P( NULL, REGVAL_CTR )) ) {
+ DEBUG(0,("fetch_reg_values_specific: talloc() failed!\n"));
+ return False;
+ }
- err = reg_openhive(mem_ctx, path,
- (strchr(p+1, '\\') != NULL) ?
- SEC_RIGHTS_ENUM_SUBKEYS : SEC_RIGHTS_CREATE_SUBKEY,
- token, &hive);
- if (!W_ERROR_IS_OK(err)) {
- SAFE_FREE(path);
- return err;
+ pstrcpy( save_path, key->name );
+
+ if ( fetch_reg_values( key, ctr) == -1 )
+ return False;
}
+
+ if ( !(v = regval_ctr_specific_value( ctr, val_index )) )
+ return False;
- err = reg_createkey(mem_ctx, hive, p+1, desired_access, pkey, paction);
- SAFE_FREE(path);
- TALLOC_FREE(hive);
- return err;
+ *val = dup_registry_value( v );
+
+ return True;
}
-/*
- * Utility function to create a registry key without opening the hive
- * before. Will not delete a hive.
- */
+/***********************************************************************
+ High level access check for passing the required access mask to the
+ underlying registry backend
+ ***********************************************************************/
+
+BOOL regkey_access_check( REGISTRY_KEY *key, uint32 requested, uint32 *granted, NT_USER_TOKEN *token )
+{
+ /* use the default security check if the backend has not defined its own */
+
+ if ( !(key->hook && key->hook->ops && key->hook->ops->reg_access_check) ) {
+ SEC_DESC *sec_desc;
+ NTSTATUS status;
+
+ if ( !(sec_desc = construct_registry_sd( get_talloc_ctx() )) )
+ return False;
+
+ status = registry_access_check( sec_desc, token, requested, granted );
+
+ return NT_STATUS_IS_OK(status);
+ }
+
+ return key->hook->ops->reg_access_check( key->name, requested, granted, token );
+}
-WERROR reg_delete_path(const struct nt_user_token *token,
- const char *orig_path)
+/***********************************************************************
+***********************************************************************/
+
+WERROR regkey_open_internal( REGISTRY_KEY **regkey, const char *path,
+ NT_USER_TOKEN *token, uint32 access_desired )
{
- struct registry_key *hive;
- char *path, *p;
- WERROR err;
+ WERROR result = WERR_OK;
+ REGISTRY_KEY *keyinfo;
+ REGSUBKEY_CTR *subkeys = NULL;
+ uint32 access_granted;
+
+ if ( !(W_ERROR_IS_OK(result = regdb_open()) ) )
+ return result;
+
+ DEBUG(7,("regkey_open_internal: name = [%s]\n", path));
- if (!(path = SMB_STRDUP(orig_path))) {
+ if ( !(*regkey = TALLOC_ZERO_P(NULL, REGISTRY_KEY)) ) {
+ regdb_close();
return WERR_NOMEM;
}
+
+ keyinfo = *regkey;
+
+ /* initialization */
+
+ keyinfo->type = REG_KEY_GENERIC;
+ if (!(keyinfo->name = talloc_strdup(keyinfo, path))) {
+ result = WERR_NOMEM;
+ goto done;
+ }
- p = strchr(path, '\\');
+ /* Tag this as a Performance Counter Key */
+
+ if( StrnCaseCmp(path, KEY_HKPD, strlen(KEY_HKPD)) == 0 )
+ keyinfo->type = REG_KEY_HKPD;
+
+ /* Look up the table of registry I/O operations */
- if ((p == NULL) || (p[1] == '\0')) {
- SAFE_FREE(path);
- return WERR_INVALID_PARAM;
+ if ( !(keyinfo->hook = reghook_cache_find( keyinfo->name )) ) {
+ DEBUG(0,("open_registry_key: Failed to assigned a REGISTRY_HOOK to [%s]\n",
+ keyinfo->name ));
+ result = WERR_BADFILE;
+ goto done;
}
+
+ /* check if the path really exists; failed is indicated by -1 */
+ /* if the subkey count failed, bail out */
+
+ if ( !(subkeys = TALLOC_ZERO_P( keyinfo, REGSUBKEY_CTR )) ) {
+ result = WERR_NOMEM;
+ goto done;
+ }
+
+ if ( fetch_reg_keys( keyinfo, subkeys ) == -1 ) {
+ result = WERR_BADFILE;
+ goto done;
+ }
+
+ TALLOC_FREE( subkeys );
- *p = '\0';
+ if ( !regkey_access_check( keyinfo, access_desired, &access_granted, token ) ) {
+ result = WERR_ACCESS_DENIED;
+ goto done;
+ }
+
+ keyinfo->access_granted = access_granted;
- err = reg_openhive(NULL, path,
- (strchr(p+1, '\\') != NULL) ?
- SEC_RIGHTS_ENUM_SUBKEYS : SEC_RIGHTS_CREATE_SUBKEY,
- token, &hive);
- if (!W_ERROR_IS_OK(err)) {
- SAFE_FREE(path);
- return err;
+done:
+ if ( !W_ERROR_IS_OK(result) ) {
+ regkey_close_internal( *regkey );
}
- err = reg_deletekey(hive, p+1);
- SAFE_FREE(path);
- TALLOC_FREE(hive);
- return err;
+ return result;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+WERROR regkey_close_internal( REGISTRY_KEY *key )
+{
+ TALLOC_FREE( key );
+ regdb_close();
+
+ return WERR_OK;
}
diff --git a/source/registry/reg_frontend_hilvl.c b/source/registry/reg_frontend_hilvl.c
deleted file mode 100644
index 4c0ed0cc72e..00000000000
--- a/source/registry/reg_frontend_hilvl.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Virtual Windows Registry Layer
- * Copyright (C) Gerald Carter 2002-2005
- * Copyright (C) Michael Adam 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * Implementation of registry frontend view functions.
- * Functions moved from reg_frontend.c to minimize linker deps.
- */
-
-#include "includes.h"
-
-
-static struct generic_mapping reg_generic_map =
- { REG_KEY_READ, REG_KEY_WRITE, REG_KEY_EXECUTE, REG_KEY_ALL };
-
-/********************************************************************
-********************************************************************/
-
-static SEC_DESC* construct_registry_sd( TALLOC_CTX *ctx )
-{
- SEC_ACE ace[2];
- SEC_ACCESS mask;
- size_t i = 0;
- SEC_DESC *sd;
- SEC_ACL *acl;
- size_t sd_size;
-
- /* basic access for Everyone */
-
- init_sec_access(&mask, REG_KEY_READ );
- init_sec_ace(&ace[i++], &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
-
- /* Full Access 'BUILTIN\Administrators' */
-
- init_sec_access(&mask, REG_KEY_ALL );
- init_sec_ace(&ace[i++], &global_sid_Builtin_Administrators, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
-
-
- /* create the security descriptor */
-
- if ( !(acl = make_sec_acl(ctx, NT4_ACL_REVISION, i, ace)) )
- return NULL;
-
- if ( !(sd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, acl, &sd_size)) )
- return NULL;
-
- return sd;
-}
-
-/***********************************************************************
- High level wrapper function for storing registry subkeys
- ***********************************************************************/
-
-BOOL store_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkeys )
-{
- if ( key->hook && key->hook->ops && key->hook->ops->store_subkeys )
- return key->hook->ops->store_subkeys( key->name, subkeys );
-
- return False;
-
-}
-
-/***********************************************************************
- High level wrapper function for storing registry values
- ***********************************************************************/
-
-BOOL store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val )
-{
- if ( check_dynamic_reg_values( key ) )
- return False;
-
- if ( key->hook && key->hook->ops && key->hook->ops->store_values )
- return key->hook->ops->store_values( key->name, val );
-
- return False;
-}
-
-/***********************************************************************
- High level wrapper function for enumerating registry subkeys
- Initialize the TALLOC_CTX if necessary
- ***********************************************************************/
-
-int fetch_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkey_ctr )
-{
- int result = -1;
-
- if ( key->hook && key->hook->ops && key->hook->ops->fetch_subkeys )
- result = key->hook->ops->fetch_subkeys( key->name, subkey_ctr );
-
- return result;
-}
-
-/***********************************************************************
- High level wrapper function for enumerating registry values
- ***********************************************************************/
-
-int fetch_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val )
-{
- int result = -1;
-
- if ( key->hook && key->hook->ops && key->hook->ops->fetch_values )
- result = key->hook->ops->fetch_values( key->name, val );
-
- /* if the backend lookup returned no data, try the dynamic overlay */
-
- if ( result == 0 ) {
- result = fetch_dynamic_reg_values( key, val );
-
- return ( result != -1 ) ? result : 0;
- }
-
- return result;
-}
-
-/***********************************************************************
- High level access check for passing the required access mask to the
- underlying registry backend
- ***********************************************************************/
-
-BOOL regkey_access_check( REGISTRY_KEY *key, uint32 requested, uint32 *granted,
- const struct nt_user_token *token )
-{
- SEC_DESC *sec_desc;
- NTSTATUS status;
- WERROR err;
- TALLOC_CTX *mem_ctx;
-
- /* use the default security check if the backend has not defined its
- * own */
-
- if (key->hook && key->hook->ops && key->hook->ops->reg_access_check) {
- return key->hook->ops->reg_access_check( key->name, requested,
- granted, token );
- }
-
- /*
- * The secdesc routines can't yet cope with a NULL talloc ctx sanely.
- */
-
- if (!(mem_ctx = talloc_init("regkey_access_check"))) {
- return False;
- }
-
- err = regkey_get_secdesc(mem_ctx, key, &sec_desc);
-
- if (!W_ERROR_IS_OK(err)) {
- TALLOC_FREE(mem_ctx);
- return False;
- }
-
- se_map_generic( &requested, &reg_generic_map );
-
- if (!se_access_check(sec_desc, token, requested, granted, &status)) {
- TALLOC_FREE(mem_ctx);
- return False;
- }
-
- TALLOC_FREE(mem_ctx);
- return NT_STATUS_IS_OK(status);
-}
-
-WERROR regkey_get_secdesc(TALLOC_CTX *mem_ctx, REGISTRY_KEY *key,
- struct security_descriptor **psecdesc)
-{
- struct security_descriptor *secdesc;
-
- if (key->hook && key->hook->ops && key->hook->ops->get_secdesc) {
- WERROR err;
-
- err = key->hook->ops->get_secdesc(mem_ctx, key->name,
- psecdesc);
- if (W_ERROR_IS_OK(err)) {
- return WERR_OK;
- }
- }
-
- if (!(secdesc = construct_registry_sd(mem_ctx))) {
- return WERR_NOMEM;
- }
-
- *psecdesc = secdesc;
- return WERR_OK;
-}
diff --git a/source/registry/reg_objects.c b/source/registry/reg_objects.c
index fba98b3fb15..4103033c751 100644
--- a/source/registry/reg_objects.c
+++ b/source/registry/reg_objects.c
@@ -41,41 +41,39 @@
Add a new key to the array
**********************************************************************/
-WERROR regsubkey_ctr_addkey( REGSUBKEY_CTR *ctr, const char *keyname )
+int regsubkey_ctr_addkey( REGSUBKEY_CTR *ctr, const char *keyname )
{
- char **newkeys;
-
- if ( !keyname ) {
- return WERR_OK;
- }
+ if ( !keyname )
+ return ctr->num_subkeys;
/* make sure the keyname is not already there */
- if ( regsubkey_ctr_key_exists( ctr, keyname ) ) {
- return WERR_OK;
+ if ( regsubkey_ctr_key_exists( ctr, keyname ) )
+ return ctr->num_subkeys;
+
+ /* allocate a space for the char* in the array */
+
+ if (ctr->subkeys == NULL) {
+ ctr->subkeys = TALLOC_P(ctr, char *);
+ } else {
+ ctr->subkeys = TALLOC_REALLOC_ARRAY(ctr, ctr->subkeys, char *, ctr->num_subkeys+1);
}
- if (!(newkeys = TALLOC_REALLOC_ARRAY(ctr, ctr->subkeys, char *,
- ctr->num_subkeys+1))) {
- return WERR_NOMEM;
+ if (!ctr->subkeys) {
+ ctr->num_subkeys = 0;
+ return 0;
}
- ctr->subkeys = newkeys;
-
- if (!(ctr->subkeys[ctr->num_subkeys] = talloc_strdup(ctr->subkeys,
- keyname ))) {
- /*
- * Don't shrink the new array again, this wastes a pointer
- */
- return WERR_NOMEM;
- }
+ /* allocate the string and save it in the array */
+
+ ctr->subkeys[ctr->num_subkeys] = talloc_strdup( ctr, keyname );
ctr->num_subkeys++;
-
- return WERR_OK;
+
+ return ctr->num_subkeys;
}
/***********************************************************************
- Delete a key from the array
+ Add a new key to the array
**********************************************************************/
int regsubkey_ctr_delkey( REGSUBKEY_CTR *ctr, const char *keyname )
diff --git a/source/registry/reg_perfcount.c b/source/registry/reg_perfcount.c
index 297e27ecc70..3625a417200 100644
--- a/source/registry/reg_perfcount.c
+++ b/source/registry/reg_perfcount.c
@@ -98,7 +98,8 @@ uint32 reg_perfcount_get_base_index(void)
even_num+1 perf_counter<even_num>_help
and so on.
So last_counter becomes num_counters*2, and last_help will be last_counter+1 */
- kbuf = string_tdb_data(key);
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key);
dbuf = tdb_fetch(names, kbuf);
if(dbuf.dptr == NULL)
{
@@ -165,7 +166,8 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
memset(temp, 0, sizeof(temp));
snprintf(temp, sizeof(temp), "%d", keyval);
- kbuf = string_tdb_data(temp);
+ kbuf.dptr = temp;
+ kbuf.dsize = strlen(temp);
dbuf = tdb_fetch(tdb, kbuf);
if(dbuf.dptr == NULL)
{
@@ -182,7 +184,7 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
buffer_size = 0;
return buffer_size;
}
- init_unistr2(&name_index, (const char *)kbuf.dptr, UNI_STR_TERMINATE);
+ init_unistr2(&name_index, kbuf.dptr, UNI_STR_TERMINATE);
memcpy(buf1+buffer_size, (char *)name_index.buffer, working_size);
buffer_size += working_size;
/* Now encode the actual name */
@@ -307,7 +309,8 @@ static void _reg_perfcount_make_key(TDB_DATA *key,
else
snprintf(buf, buflen, "%d", key_part1);
- *key = string_tdb_data(buf);
+ key->dptr = buf;
+ key->dsize = strlen(buf);
return;
}
@@ -358,7 +361,6 @@ static uint32 _reg_perfcount_get_numinst(int objInd, TDB_CONTEXT *names)
memset(buf, 0, PERFCOUNT_MAX_LEN);
memcpy(buf, data.dptr, data.dsize);
- SAFE_FREE(data.dptr);
return (uint32)atoi(buf);
}
@@ -1029,7 +1031,7 @@ static uint32 _reg_perfcount_perf_data_block_fixup(PERF_DATA_BLOCK *block, prs_s
uint32 reg_perfcount_get_perf_data_block(uint32 base_index,
prs_struct *ps,
PERF_DATA_BLOCK *block,
- const char *object_ids)
+ char *object_ids)
{
uint32 buffer_size = 0;
const char *fname = counters_directory( NAMES_DB );
@@ -1322,15 +1324,11 @@ static BOOL _reg_perfcount_marshall_hkpd(prs_struct *ps, PERF_DATA_BLOCK block)
/*********************************************************************
*********************************************************************/
-WERROR reg_perfcount_get_hkpd(prs_struct *ps, uint32 max_buf_size, uint32 *outbuf_len, const char *object_ids)
+WERROR reg_perfcount_get_hkpd(prs_struct *ps, uint32 max_buf_size, uint32 *outbuf_len, char *object_ids)
{
/*
* For a detailed description of the layout of this structure,
* see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/performance_data_format.asp
- *
- * By 2006-11-23 this link did not work anymore, I found something
- * promising under
- * http://msdn2.microsoft.com/en-us/library/aa373105.aspx -- vl
*/
PERF_DATA_BLOCK block;
uint32 buffer_size, base_index;
diff --git a/source/registry/reg_printing.c b/source/registry/reg_printing.c
index f33d0ab7555..10cfce604ef 100644
--- a/source/registry/reg_printing.c
+++ b/source/registry/reg_printing.c
@@ -449,11 +449,8 @@ static void fill_in_printer_values( NT_PRINTER_INFO_LEVEL_2 *info2, REGVAL_CTR *
/* stream the printer security descriptor */
- if ( info2->secdesc_buf &&
- info2->secdesc_buf->sd &&
- info2->secdesc_buf->sd_size )
- {
- if ( sec_io_desc("sec_desc", &info2->secdesc_buf->sd, &prs, 0 ) ) {
+ if ( info2->secdesc_buf && info2->secdesc_buf->len ) {
+ if ( sec_io_desc("sec_desc", &info2->secdesc_buf->sec, &prs, 0 ) ) {
offset = prs_offset( &prs );
regval_ctr_addvalue( values, "Security", REG_BINARY, prs_data_p(&prs), offset );
}
@@ -481,7 +478,7 @@ static int key_printers_fetch_values( const char *key, REGVAL_CTR *values )
/* top level key values stored in the registry has no values */
if ( !printers_key ) {
- /* normalize to the 'HKLM\SOFTWARE\...\Print\Printers' key */
+ /* normalize to the 'HKLM\SOFTWARE\...\Print\Printers' ket */
return regdb_fetch_values( KEY_WINNT_PRINTERS, values );
}
@@ -1242,7 +1239,7 @@ REGISTRY_OPS printing_ops = {
regprint_fetch_reg_values,
regprint_store_reg_keys,
regprint_store_reg_values,
- NULL, NULL, NULL
+ NULL
};
diff --git a/source/registry/reg_shares.c b/source/registry/reg_shares.c
index d2113a647df..5a3e9a131b6 100644
--- a/source/registry/reg_shares.c
+++ b/source/registry/reg_shares.c
@@ -160,7 +160,7 @@ REGISTRY_OPS shares_reg_ops = {
shares_value_info,
shares_store_subkey,
shares_store_value,
- NULL, NULL, NULL
+ NULL
};
diff --git a/source/registry/reg_smbconf.c b/source/registry/reg_smbconf.c
deleted file mode 100644
index 3427645fa69..00000000000
--- a/source/registry/reg_smbconf.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Virtual Windows Registry Layer
- * Copyright (C) Volker Lendecke 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_RPC_SRV
-
-extern REGISTRY_OPS regdb_ops; /* these are the default */
-
-static int smbconf_fetch_keys( const char *key, REGSUBKEY_CTR *subkey_ctr )
-{
- return regdb_ops.fetch_subkeys(key, subkey_ctr);
-}
-
-static BOOL smbconf_store_keys( const char *key, REGSUBKEY_CTR *subkeys )
-{
- return regdb_ops.store_subkeys(key, subkeys);
-}
-
-static int smbconf_fetch_values( const char *key, REGVAL_CTR *val )
-{
- return regdb_ops.fetch_values(key, val);
-}
-
-static BOOL smbconf_store_values( const char *key, REGVAL_CTR *val )
-{
- int i;
- int num_values = regval_ctr_numvals(val);
-
- for (i=0; i < num_values; i++) {
- REGISTRY_VALUE *theval = regval_ctr_specific_value(val, i);
- const char *valname = regval_name(theval);
-
- if (registry_smbconf_valname_forbidden(valname)) {
- DEBUG(0, ("smbconf_store_values: value '%s' forbidden "
- "in registry.\n", valname));
- return False;
- }
- }
- return regdb_ops.store_values(key, val);
-}
-
-static BOOL smbconf_reg_access_check(const char *keyname, uint32 requested,
- uint32 *granted,
- const struct nt_user_token *token)
-{
- if (!(user_has_privileges(token, &se_disk_operators))) {
- return False;
- }
-
- *granted = REG_KEY_ALL;
- return True;
-}
-
-static WERROR smbconf_get_secdesc(TALLOC_CTX *mem_ctx, const char *key,
- struct security_descriptor **psecdesc)
-{
- return regdb_ops.get_secdesc(mem_ctx, key, psecdesc);
-}
-
-static WERROR smbconf_set_secdesc(const char *key,
- struct security_descriptor *secdesc)
-{
- return regdb_ops.set_secdesc(key, secdesc);
-}
-
-
-/*
- * Table of function pointers for accessing smb.conf data
- */
-
-REGISTRY_OPS smbconf_reg_ops = {
- smbconf_fetch_keys,
- smbconf_fetch_values,
- smbconf_store_keys,
- smbconf_store_values,
- smbconf_reg_access_check,
- smbconf_get_secdesc,
- smbconf_set_secdesc
-};
diff --git a/source/rpc_client/cli_dfs.c b/source/rpc_client/cli_dfs.c
new file mode 100644
index 00000000000..f93ce29dbfa
--- /dev/null
+++ b/source/rpc_client/cli_dfs.c
@@ -0,0 +1,632 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * client auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "includes.h"
+
+NTSTATUS rpccli_dfs_GetManagerVersion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32 *exist_flag)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_GETMANAGERVERSION q;
+ NETDFS_R_DFS_GETMANAGERVERSION r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_GetManagerVersion(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_GETMANAGERVERSION,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_GetManagerVersion,
+ netdfs_io_r_dfs_GetManagerVersion,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+ *exist_flag = r.exist_flag;
+
+ /* Return result */
+ return NT_STATUS_OK;
+}
+
+NTSTATUS rpccli_dfs_Add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *path, const char *server, const char *share, const char *comment, uint32 flags)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_ADD q;
+ NETDFS_R_DFS_ADD r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_Add(&q, path, server, share, comment, flags))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_ADD,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_Add,
+ netdfs_io_r_dfs_Add,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_Remove(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *path, const char *server, const char *share)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_REMOVE q;
+ NETDFS_R_DFS_REMOVE r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_Remove(&q, path, server, share))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_REMOVE,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_Remove,
+ netdfs_io_r_dfs_Remove,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_SetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_SETINFO q;
+ NETDFS_R_DFS_SETINFO r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_SetInfo(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_SETINFO,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_SetInfo,
+ netdfs_io_r_dfs_SetInfo,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_GetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *path, const char *server, const char *share, uint32 level, NETDFS_DFS_INFO_CTR *info)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_GETINFO q;
+ NETDFS_R_DFS_GETINFO r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_GetInfo(&q, path, server, share, level))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_GETINFO,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_GetInfo,
+ netdfs_io_r_dfs_GetInfo,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+ *info = r.info;
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32 level, uint32 bufsize, NETDFS_DFS_ENUMSTRUCT *info, uint32 *total)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_ENUM q;
+ NETDFS_R_DFS_ENUM r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_Enum(&q, level, bufsize, info, total))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_ENUM,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_Enum,
+ netdfs_io_r_dfs_Enum,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+ *info = r.info;
+ *total = r.total;
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_Rename(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_RENAME q;
+ NETDFS_R_DFS_RENAME r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_Rename(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_RENAME,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_Rename,
+ netdfs_io_r_dfs_Rename,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_Move(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_MOVE q;
+ NETDFS_R_DFS_MOVE r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_Move(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_MOVE,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_Move,
+ netdfs_io_r_dfs_Move,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_ManagerGetConfigInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_MANAGERGETCONFIGINFO q;
+ NETDFS_R_DFS_MANAGERGETCONFIGINFO r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_ManagerGetConfigInfo(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_MANAGERGETCONFIGINFO,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_ManagerGetConfigInfo,
+ netdfs_io_r_dfs_ManagerGetConfigInfo,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_ManagerSendSiteInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_MANAGERSENDSITEINFO q;
+ NETDFS_R_DFS_MANAGERSENDSITEINFO r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_ManagerSendSiteInfo(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_MANAGERSENDSITEINFO,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_ManagerSendSiteInfo,
+ netdfs_io_r_dfs_ManagerSendSiteInfo,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_AddFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_ADDFTROOT q;
+ NETDFS_R_DFS_ADDFTROOT r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_AddFtRoot(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_ADDFTROOT,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_AddFtRoot,
+ netdfs_io_r_dfs_AddFtRoot,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_RemoveFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_REMOVEFTROOT q;
+ NETDFS_R_DFS_REMOVEFTROOT r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_RemoveFtRoot(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_REMOVEFTROOT,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_RemoveFtRoot,
+ netdfs_io_r_dfs_RemoveFtRoot,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_AddStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_ADDSTDROOT q;
+ NETDFS_R_DFS_ADDSTDROOT r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_AddStdRoot(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_ADDSTDROOT,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_AddStdRoot,
+ netdfs_io_r_dfs_AddStdRoot,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_RemoveStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_REMOVESTDROOT q;
+ NETDFS_R_DFS_REMOVESTDROOT r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_RemoveStdRoot(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_REMOVESTDROOT,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_RemoveStdRoot,
+ netdfs_io_r_dfs_RemoveStdRoot,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_ManagerInitialize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_MANAGERINITIALIZE q;
+ NETDFS_R_DFS_MANAGERINITIALIZE r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_ManagerInitialize(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_MANAGERINITIALIZE,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_ManagerInitialize,
+ netdfs_io_r_dfs_ManagerInitialize,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_AddStdRootForced(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_ADDSTDROOTFORCED q;
+ NETDFS_R_DFS_ADDSTDROOTFORCED r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_AddStdRootForced(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_ADDSTDROOTFORCED,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_AddStdRootForced,
+ netdfs_io_r_dfs_AddStdRootForced,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_GetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_GETDCADDRESS q;
+ NETDFS_R_DFS_GETDCADDRESS r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_GetDcAddress(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_GETDCADDRESS,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_GetDcAddress,
+ netdfs_io_r_dfs_GetDcAddress,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_SetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_SETDCADDRESS q;
+ NETDFS_R_DFS_SETDCADDRESS r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_SetDcAddress(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_SETDCADDRESS,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_SetDcAddress,
+ netdfs_io_r_dfs_SetDcAddress,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_FlushFtTable(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_FLUSHFTTABLE q;
+ NETDFS_R_DFS_FLUSHFTTABLE r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_FlushFtTable(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_FLUSHFTTABLE,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_FlushFtTable,
+ netdfs_io_r_dfs_FlushFtTable,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_Add2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_ADD2 q;
+ NETDFS_R_DFS_ADD2 r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_Add2(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_ADD2,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_Add2,
+ netdfs_io_r_dfs_Add2,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_Remove2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_REMOVE2 q;
+ NETDFS_R_DFS_REMOVE2 r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_Remove2(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_REMOVE2,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_Remove2,
+ netdfs_io_r_dfs_Remove2,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_ENUMEX q;
+ NETDFS_R_DFS_ENUMEX r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_EnumEx(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_ENUMEX,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_EnumEx,
+ netdfs_io_r_dfs_EnumEx,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
+NTSTATUS rpccli_dfs_SetInfo2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct qbuf, rbuf;
+ NETDFS_Q_DFS_SETINFO2 q;
+ NETDFS_R_DFS_SETINFO2 r;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ if (!init_netdfs_q_dfs_SetInfo2(&q))
+ return NT_STATUS_INVALID_PARAMETER;
+
+ CLI_DO_RPC(cli, mem_ctx, PI_NETDFS, DFS_SETINFO2,
+ q, r,
+ qbuf, rbuf,
+ netdfs_io_q_dfs_SetInfo2,
+ netdfs_io_r_dfs_SetInfo2,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return variables */
+
+ /* Return result */
+ return werror_to_ntstatus(r.status);
+}
+
diff --git a/source/rpc_client/cli_echo.c b/source/rpc_client/cli_echo.c
new file mode 100644
index 00000000000..9818fad79b5
--- /dev/null
+++ b/source/rpc_client/cli_echo.c
@@ -0,0 +1,143 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ RPC pipe client
+
+ Copyright (C) Tim Potter 2003
+ Copyright (C) Jeremy Allison 2005.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+NTSTATUS rpccli_echo_add_one(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ uint32 request, uint32 *response)
+{
+ prs_struct qbuf, rbuf;
+ ECHO_Q_ADD_ONE q;
+ ECHO_R_ADD_ONE r;
+ BOOL result = False;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ init_echo_q_add_one(&q, request);
+
+ CLI_DO_RPC( cli, mem_ctx, PI_ECHO, ECHO_ADD_ONE,
+ q, r,
+ qbuf, rbuf,
+ echo_io_q_add_one,
+ echo_io_r_add_one,
+ NT_STATUS_UNSUCCESSFUL);
+
+ if (response)
+ *response = r.response;
+
+ result = True;
+
+ return result ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+NTSTATUS rpccli_echo_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ uint32 size, char *in_data, char **out_data)
+{
+ prs_struct qbuf, rbuf;
+ ECHO_Q_ECHO_DATA q;
+ ECHO_R_ECHO_DATA r;
+ BOOL result = False;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ init_echo_q_echo_data(&q, size, in_data);
+
+ CLI_DO_RPC( cli, mem_ctx, PI_ECHO, ECHO_DATA,
+ q, r,
+ qbuf, rbuf,
+ echo_io_q_echo_data,
+ echo_io_r_echo_data,
+ NT_STATUS_UNSUCCESSFUL);
+
+ result = True;
+
+ if (out_data) {
+ *out_data = TALLOC(mem_ctx, size);
+ if (!*out_data) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ memcpy(*out_data, r.data, size);
+ }
+
+ return result ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+NTSTATUS rpccli_echo_sink_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ uint32 size, char *in_data)
+{
+ prs_struct qbuf, rbuf;
+ ECHO_Q_SINK_DATA q;
+ ECHO_R_SINK_DATA r;
+ BOOL result = False;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ init_echo_q_sink_data(&q, size, in_data);
+
+ CLI_DO_RPC( cli, mem_ctx, PI_ECHO, ECHO_SINK_DATA,
+ q, r,
+ qbuf, rbuf,
+ echo_io_q_sink_data,
+ echo_io_r_sink_data,
+ NT_STATUS_UNSUCCESSFUL);
+
+ result = True;
+
+ return result ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+NTSTATUS rpccli_echo_source_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ uint32 size, char **out_data)
+{
+ prs_struct qbuf, rbuf;
+ ECHO_Q_SOURCE_DATA q;
+ ECHO_R_SOURCE_DATA r;
+ BOOL result = False;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Marshall data and send request */
+
+ init_echo_q_source_data(&q, size);
+
+ CLI_DO_RPC( cli, mem_ctx, PI_ECHO, ECHO_SOURCE_DATA,
+ q, r,
+ qbuf, rbuf,
+ echo_io_q_source_data,
+ echo_io_r_source_data,
+ NT_STATUS_UNSUCCESSFUL);
+
+ result = True;
+
+ return result ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
diff --git a/source/rpc_client/cli_lsarpc.c b/source/rpc_client/cli_lsarpc.c
index 00c65d15aaa..4dfce181430 100644
--- a/source/rpc_client/cli_lsarpc.c
+++ b/source/rpc_client/cli_lsarpc.c
@@ -78,6 +78,9 @@ NTSTATUS rpccli_lsa_open_policy(struct rpc_pipe_client *cli,
if (NT_STATUS_IS_OK(result)) {
*pol = r.pol;
+#ifdef __INSURE__
+ pol->marker = MALLOC(1);
+#endif
}
return result;
@@ -122,214 +125,47 @@ NTSTATUS rpccli_lsa_open_policy2(struct rpc_pipe_client *cli,
if (NT_STATUS_IS_OK(result)) {
*pol = r.pol;
+#ifdef __INSURE__
+ pol->marker = (char *)malloc(1);
+#endif
}
return result;
}
-/* Lookup a list of sids
- *
- * internal version withOUT memory allocation of the target arrays.
- * this assumes suffciently sized arrays to store domains, names and types. */
-
-static NTSTATUS rpccli_lsa_lookup_sids_noalloc(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- POLICY_HND *pol,
- int num_sids,
- const DOM_SID *sids,
- char **domains,
- char **names,
- enum lsa_SidType *types)
+/** Close a LSA policy handle */
+
+NTSTATUS rpccli_lsa_close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *pol)
{
prs_struct qbuf, rbuf;
- LSA_Q_LOOKUP_SIDS q;
- LSA_R_LOOKUP_SIDS r;
- DOM_R_REF ref;
- NTSTATUS result = NT_STATUS_OK;
- TALLOC_CTX *tmp_ctx = NULL;
- int i;
-
- tmp_ctx = talloc_new(mem_ctx);
- if (!tmp_ctx) {
- DEBUG(0, ("rpccli_lsa_lookup_sids_noalloc: out of memory!\n"));
- result = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
+ LSA_Q_CLOSE q;
+ LSA_R_CLOSE r;
+ NTSTATUS result;
ZERO_STRUCT(q);
ZERO_STRUCT(r);
- init_q_lookup_sids(tmp_ctx, &q, pol, num_sids, sids, 1);
-
- ZERO_STRUCT(ref);
-
- r.dom_ref = &ref;
+ init_lsa_q_close(&q, pol);
- CLI_DO_RPC( cli, tmp_ctx, PI_LSARPC, LSA_LOOKUPSIDS,
+ CLI_DO_RPC( cli, mem_ctx, PI_LSARPC, LSA_CLOSE,
q, r,
qbuf, rbuf,
- lsa_io_q_lookup_sids,
- lsa_io_r_lookup_sids,
+ lsa_io_q_close,
+ lsa_io_r_close,
NT_STATUS_UNSUCCESSFUL );
- if (!NT_STATUS_IS_OK(r.status) &&
- !NT_STATUS_EQUAL(r.status, STATUS_SOME_UNMAPPED))
- {
- /* An actual error occured */
- result = r.status;
- goto done;
- }
-
/* Return output parameters */
- if (r.mapped_count == 0) {
- result = NT_STATUS_NONE_MAPPED;
- goto done;
- }
-
- for (i = 0; i < num_sids; i++) {
- fstring name, dom_name;
- uint32 dom_idx = r.names.name[i].domain_idx;
-
- /* Translate optimised name through domain index array */
-
- if (dom_idx != 0xffffffff) {
-
- rpcstr_pull_unistr2_fstring(
- dom_name, &ref.ref_dom[dom_idx].uni_dom_name);
- rpcstr_pull_unistr2_fstring(
- name, &r.names.uni_name[i]);
-
- (names)[i] = talloc_strdup(mem_ctx, name);
- (domains)[i] = talloc_strdup(mem_ctx, dom_name);
- (types)[i] = (enum lsa_SidType)r.names.name[i].sid_name_use;
-
- if (((names)[i] == NULL) || ((domains)[i] == NULL)) {
- DEBUG(0, ("cli_lsa_lookup_sids_noalloc(): out of memory\n"));
- result = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- } else {
- (names)[i] = NULL;
- (domains)[i] = NULL;
- (types)[i] = SID_NAME_UNKNOWN;
- }
- }
-
-done:
- TALLOC_FREE(tmp_ctx);
- return result;
-}
-
-/* Lookup a list of sids
- *
- * do it the right way: there is a limit (of 20480 for w2k3) entries
- * returned by this call. when the sids list contains more entries,
- * empty lists are returned. This version of lsa_lookup_sids passes
- * the list of sids in hunks of LOOKUP_SIDS_HUNK_SIZE to the lsa call. */
-
-/* This constant defines the limit of how many sids to look up
- * in one call (maximum). the limit from the server side is
- * at 20480 for win2k3, but we keep it at a save 1000 for now. */
-#define LOOKUP_SIDS_HUNK_SIZE 1000
-
-NTSTATUS rpccli_lsa_lookup_sids_all(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- POLICY_HND *pol,
- int num_sids,
- const DOM_SID *sids,
- char ***domains,
- char ***names,
- enum lsa_SidType **types)
-{
- NTSTATUS result = NT_STATUS_OK;
- int sids_left = 0;
- int sids_processed = 0;
- const DOM_SID *hunk_sids = sids;
- char **hunk_domains = NULL;
- char **hunk_names = NULL;
- enum lsa_SidType *hunk_types = NULL;
-
- if (num_sids) {
- if (!((*domains) = TALLOC_ARRAY(mem_ctx, char *, num_sids))) {
- DEBUG(0, ("rpccli_lsa_lookup_sids_all(): out of memory\n"));
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- if (!((*names) = TALLOC_ARRAY(mem_ctx, char *, num_sids))) {
- DEBUG(0, ("rpccli_lsa_lookup_sids_all(): out of memory\n"));
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- if (!((*types) = TALLOC_ARRAY(mem_ctx, enum lsa_SidType, num_sids))) {
- DEBUG(0, ("rpccli_lsa_lookup_sids_all(): out of memory\n"));
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
- } else {
- (*domains) = NULL;
- (*names) = NULL;
- (*types) = NULL;
- }
-
- sids_left = num_sids;
- hunk_domains = *domains;
- hunk_names = *names;
- hunk_types = *types;
-
- while (sids_left > 0) {
- int hunk_num_sids;
- NTSTATUS hunk_result = NT_STATUS_OK;
-
- hunk_num_sids = ((sids_left > LOOKUP_SIDS_HUNK_SIZE)
- ? LOOKUP_SIDS_HUNK_SIZE
- : sids_left);
-
- DEBUG(10, ("rpccli_lsa_lookup_sids_all: processing items "
- "%d -- %d of %d.\n",
- sids_processed,
- sids_processed + hunk_num_sids - 1,
- num_sids));
-
- hunk_result = rpccli_lsa_lookup_sids_noalloc(cli,
- mem_ctx,
- pol,
- hunk_num_sids,
- hunk_sids,
- hunk_domains,
- hunk_names,
- hunk_types);
-
- if (!NT_STATUS_IS_OK(hunk_result) &&
- !NT_STATUS_EQUAL(hunk_result, STATUS_SOME_UNMAPPED) &&
- !NT_STATUS_EQUAL(hunk_result, NT_STATUS_NONE_MAPPED))
- {
- /* An actual error occured */
- goto done;
- }
-
- /* adapt overall result */
- if (( NT_STATUS_IS_OK(result) &&
- !NT_STATUS_IS_OK(hunk_result))
- ||
- ( NT_STATUS_EQUAL(result, NT_STATUS_NONE_MAPPED) &&
- !NT_STATUS_EQUAL(hunk_result, NT_STATUS_NONE_MAPPED)))
- {
- result = STATUS_SOME_UNMAPPED;
- }
+ result = r.status;
- sids_left -= hunk_num_sids;
- sids_processed += hunk_num_sids; /* only used in DEBUG */
- hunk_sids += hunk_num_sids;
- hunk_domains += hunk_num_sids;
- hunk_names += hunk_num_sids;
- hunk_types += hunk_num_sids;
+ if (NT_STATUS_IS_OK(result)) {
+#ifdef __INSURE__
+ SAFE_FREE(pol->marker);
+#endif
+ *pol = r.pol;
}
-done:
return result;
}
@@ -339,9 +175,7 @@ NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
POLICY_HND *pol, int num_sids,
const DOM_SID *sids,
- char ***domains,
- char ***names,
- enum lsa_SidType **types)
+ char ***domains, char ***names, uint32 **types)
{
prs_struct qbuf, rbuf;
LSA_Q_LOOKUP_SIDS q;
@@ -367,7 +201,7 @@ NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli,
NT_STATUS_UNSUCCESSFUL );
if (!NT_STATUS_IS_OK(r.status) &&
- !NT_STATUS_EQUAL(r.status, STATUS_SOME_UNMAPPED)) {
+ NT_STATUS_V(r.status) != NT_STATUS_V(STATUS_SOME_UNMAPPED)) {
/* An actual error occured */
result = r.status;
@@ -395,7 +229,7 @@ NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli,
goto done;
}
- if (!((*types) = TALLOC_ARRAY(mem_ctx, enum lsa_SidType, num_sids))) {
+ if (!((*types) = TALLOC_ARRAY(mem_ctx, uint32, num_sids))) {
DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
result = NT_STATUS_NO_MEMORY;
goto done;
@@ -421,7 +255,7 @@ NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli,
(*names)[i] = talloc_strdup(mem_ctx, name);
(*domains)[i] = talloc_strdup(mem_ctx, dom_name);
- (*types)[i] = (enum lsa_SidType)r.names.name[i].sid_name_use;
+ (*types)[i] = r.names.name[i].sid_name_use;
if (((*names)[i] == NULL) || ((*domains)[i] == NULL)) {
DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
@@ -448,9 +282,8 @@ NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli,
POLICY_HND *pol, int num_names,
const char **names,
const char ***dom_names,
- int level,
DOM_SID **sids,
- enum lsa_SidType **types)
+ uint32 **types)
{
prs_struct qbuf, rbuf;
LSA_Q_LOOKUP_NAMES q;
@@ -465,7 +298,7 @@ NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli,
ZERO_STRUCT(ref);
r.dom_ref = &ref;
- init_q_lookup_names(mem_ctx, &q, pol, num_names, names, level);
+ init_q_lookup_names(mem_ctx, &q, pol, num_names, names);
CLI_DO_RPC( cli, mem_ctx, PI_LSARPC, LSA_LOOKUPNAMES,
q, r,
@@ -498,7 +331,7 @@ NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli,
goto done;
}
- if (!((*types = TALLOC_ARRAY(mem_ctx, enum lsa_SidType, num_names)))) {
+ if (!((*types = TALLOC_ARRAY(mem_ctx, uint32, num_names)))) {
DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
result = NT_STATUS_NO_MEMORY;
goto done;
@@ -541,7 +374,7 @@ NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli,
sid_append_rid(sid, dom_rid);
}
- (*types)[i] = (enum lsa_SidType)t_rids[i].type;
+ (*types)[i] = t_rids[i].type;
if (dom_names == NULL) {
continue;
@@ -1466,43 +1299,43 @@ done:
BOOL fetch_domain_sid( char *domain, char *remote_machine, DOM_SID *psid)
{
extern pstring global_myname;
- struct cli_state *cli;
+ struct cli_state cli;
NTSTATUS result;
POLICY_HND lsa_pol;
BOOL ret = False;
ZERO_STRUCT(cli);
- if((cli = cli_initialise()) == NULL) {
+ if(cli_initialise(&cli) == False) {
DEBUG(0,("fetch_domain_sid: unable to initialize client connection.\n"));
return False;
}
- if(!resolve_name( remote_machine, &cli->dest_ip, 0x20)) {
+ if(!resolve_name( remote_machine, &cli.dest_ip, 0x20)) {
DEBUG(0,("fetch_domain_sid: Can't resolve address for %s\n", remote_machine));
goto done;
}
- if (!cli_connect(cli, remote_machine, &cli->dest_ip)) {
+ if (!cli_connect(&cli, remote_machine, &cli.dest_ip)) {
DEBUG(0,("fetch_domain_sid: unable to connect to SMB server on \
-machine %s. Error was : %s.\n", remote_machine, cli_errstr(cli) ));
+machine %s. Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
goto done;
}
- if (!attempt_netbios_session_request(cli, global_myname, remote_machine, &cli->dest_ip)) {
+ if (!attempt_netbios_session_request(&cli, global_myname, remote_machine, &cli.dest_ip)) {
DEBUG(0,("fetch_domain_sid: machine %s rejected the NetBIOS session request.\n",
remote_machine));
goto done;
}
- cli->protocol = PROTOCOL_NT1;
+ cli.protocol = PROTOCOL_NT1;
- if (!cli_negprot(cli)) {
+ if (!cli_negprot(&cli)) {
DEBUG(0,("fetch_domain_sid: machine %s rejected the negotiate protocol. \
-Error was : %s.\n", remote_machine, cli_errstr(cli) ));
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
goto done;
}
- if (cli->protocol != PROTOCOL_NT1) {
+ if (cli.protocol != PROTOCOL_NT1) {
DEBUG(0,("fetch_domain_sid: machine %s didn't negotiate NT protocol.\n",
remote_machine));
goto done;
@@ -1512,39 +1345,39 @@ Error was : %s.\n", remote_machine, cli_errstr(cli) ));
* Do an anonymous session setup.
*/
- if (!cli_session_setup(cli, "", "", 0, "", 0, "")) {
+ if (!cli_session_setup(&cli, "", "", 0, "", 0, "")) {
DEBUG(0,("fetch_domain_sid: machine %s rejected the session setup. \
-Error was : %s.\n", remote_machine, cli_errstr(cli) ));
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
goto done;
}
- if (!(cli->sec_mode & NEGOTIATE_SECURITY_USER_LEVEL)) {
+ if (!(cli.sec_mode & NEGOTIATE_SECURITY_USER_LEVEL)) {
DEBUG(0,("fetch_domain_sid: machine %s isn't in user level security mode\n",
remote_machine));
goto done;
}
- if (!cli_send_tconX(cli, "IPC$", "IPC", "", 1)) {
+ if (!cli_send_tconX(&cli, "IPC$", "IPC", "", 1)) {
DEBUG(0,("fetch_domain_sid: machine %s rejected the tconX on the IPC$ share. \
-Error was : %s.\n", remote_machine, cli_errstr(cli) ));
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
goto done;
}
/* Fetch domain sid */
- if (!cli_nt_session_open(cli, PI_LSARPC)) {
+ if (!cli_nt_session_open(&cli, PI_LSARPC)) {
DEBUG(0, ("fetch_domain_sid: Error connecting to SAM pipe\n"));
goto done;
}
- result = cli_lsa_open_policy(cli, cli->mem_ctx, True, SEC_RIGHTS_QUERY_VALUE, &lsa_pol);
+ result = cli_lsa_open_policy(&cli, cli.mem_ctx, True, SEC_RIGHTS_QUERY_VALUE, &lsa_pol);
if (!NT_STATUS_IS_OK(result)) {
DEBUG(0, ("fetch_domain_sid: Error opening lsa policy handle. %s\n",
nt_errstr(result) ));
goto done;
}
- result = cli_lsa_query_info_policy(cli, cli->mem_ctx, &lsa_pol, 5, domain, psid);
+ result = cli_lsa_query_info_policy(&cli, cli.mem_ctx, &lsa_pol, 5, domain, psid);
if (!NT_STATUS_IS_OK(result)) {
DEBUG(0, ("fetch_domain_sid: Error querying lsa policy handle. %s\n",
nt_errstr(result) ));
@@ -1555,7 +1388,7 @@ Error was : %s.\n", remote_machine, cli_errstr(cli) ));
done:
- cli_shutdown(cli);
+ cli_shutdown(&cli);
return ret;
}
diff --git a/source/rpc_client/cli_netlogon.c b/source/rpc_client/cli_netlogon.c
index e6695f647eb..13a31e81d45 100644
--- a/source/rpc_client/cli_netlogon.c
+++ b/source/rpc_client/cli_netlogon.c
@@ -418,44 +418,6 @@ WERROR rpccli_netlogon_getanydcname(struct rpc_pipe_client *cli,
return result;
}
-/* GetDCName */
-
-WERROR rpccli_netlogon_getdcname(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx, const char *mydcname,
- const char *domainname, fstring newdcname)
-{
- prs_struct qbuf, rbuf;
- NET_Q_GETDCNAME q;
- NET_R_GETDCNAME r;
- WERROR result;
- fstring mydcname_slash;
-
- ZERO_STRUCT(q);
- ZERO_STRUCT(r);
-
- /* Initialise input parameters */
-
- slprintf(mydcname_slash, sizeof(fstring)-1, "\\\\%s", mydcname);
- init_net_q_getdcname(&q, mydcname_slash, domainname);
-
- /* Marshall data and send request */
-
- CLI_DO_RPC_WERR(cli, mem_ctx, PI_NETLOGON, NET_GETDCNAME,
- q, r,
- qbuf, rbuf,
- net_io_q_getdcname,
- net_io_r_getdcname,
- WERR_GENERAL_FAILURE);
-
- result = r.status;
-
- if (W_ERROR_IS_OK(result)) {
- rpcstr_pull_unistr2_fstring(newdcname, &r.uni_dcname);
- }
-
- return result;
-}
-
static WERROR pull_domain_controller_info_from_getdcname_reply(TALLOC_CTX *mem_ctx,
struct DS_DOMAIN_CONTROLLER_INFO **info_out,
NET_R_DSR_GETDCNAME *r)
@@ -501,8 +463,7 @@ static WERROR pull_domain_controller_info_from_getdcname_reply(TALLOC_CTX *mem_c
info->domain_controller_address_type = r->dc_address_type;
- info->domain_guid = (struct GUID *)talloc_memdup(
- mem_ctx, &r->domain_guid, sizeof(struct GUID));
+ info->domain_guid = talloc_memdup(mem_ctx, &r->domain_guid, sizeof(struct GUID));
if (!info->domain_guid) {
return WERR_GENERAL_FAILURE;
}
@@ -1063,98 +1024,6 @@ NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli,
return result;
}
-NTSTATUS rpccli_netlogon_sam_network_logon_ex(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- uint32 logon_parameters,
- const char *server,
- const char *username,
- const char *domain,
- const char *workstation,
- const uint8 chal[8],
- DATA_BLOB lm_response,
- DATA_BLOB nt_response,
- NET_USER_INFO_3 *info3)
-{
- prs_struct qbuf, rbuf;
- NET_Q_SAM_LOGON_EX q;
- NET_R_SAM_LOGON_EX r;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- NET_ID_INFO_CTR ctr;
- int validation_level = 3;
- const char *workstation_name_slash;
- const char *server_name_slash;
- static uint8 zeros[16];
- int i;
-
- ZERO_STRUCT(q);
- ZERO_STRUCT(r);
-
- if (server[0] != '\\' && server[1] != '\\') {
- server_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", server);
- } else {
- server_name_slash = server;
- }
-
- if (workstation[0] != '\\' && workstation[1] != '\\') {
- workstation_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", workstation);
- } else {
- workstation_name_slash = workstation;
- }
-
- if (!workstation_name_slash || !server_name_slash) {
- DEBUG(0, ("talloc_asprintf failed!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- /* Initialise input parameters */
-
- q.validation_level = validation_level;
-
- ctr.switch_value = NET_LOGON_TYPE;
-
- init_id_info2(&ctr.auth.id2, domain,
- logon_parameters, /* param_ctrl */
- 0xdead, 0xbeef, /* LUID? */
- username, workstation_name_slash, (const uchar*)chal,
- lm_response.data, lm_response.length, nt_response.data,
- nt_response.length);
-
- init_sam_info_ex(&q.sam_id, server_name_slash, global_myname(),
- NET_LOGON_TYPE, &ctr);
-
- r.user = info3;
-
- /* Marshall data and send request */
-
- CLI_DO_RPC(cli, mem_ctx, PI_NETLOGON, NET_SAMLOGON_EX,
- q, r, qbuf, rbuf,
- net_io_q_sam_logon_ex,
- net_io_r_sam_logon_ex,
- NT_STATUS_UNSUCCESSFUL);
-
- if (memcmp(zeros, info3->user_sess_key, 16) != 0) {
- SamOEMhash(info3->user_sess_key, cli->dc->sess_key, 16);
- } else {
- memset(info3->user_sess_key, '\0', 16);
- }
-
- if (memcmp(zeros, info3->lm_sess_key, 8) != 0) {
- SamOEMhash(info3->lm_sess_key, cli->dc->sess_key, 8);
- } else {
- memset(info3->lm_sess_key, '\0', 8);
- }
-
- for (i=0; i < 7; i++) {
- memset(&info3->unknown[i], '\0', 4);
- }
-
- /* Return results */
-
- result = r.status;
-
- return result;
-}
-
/***************************************************************************
LSA Server Password Set.
****************************************************************************/
diff --git a/source/rpc_client/cli_pipe.c b/source/rpc_client/cli_pipe.c
index 5f21caeccfd..61f5ee51bd0 100644
--- a/source/rpc_client/cli_pipe.c
+++ b/source/rpc_client/cli_pipe.c
@@ -915,8 +915,8 @@ static NTSTATUS create_krb5_auth_bind_req( struct rpc_pipe_client *cli,
#ifdef HAVE_KRB5
int ret;
struct kerberos_auth_struct *a = cli->auth.a_u.kerberos_auth;
- DATA_BLOB tkt = data_blob_null;
- DATA_BLOB tkt_wrapped = data_blob_null;
+ DATA_BLOB tkt = data_blob(NULL, 0);
+ DATA_BLOB tkt_wrapped = data_blob(NULL, 0);
/* We may change the pad length before marshalling. */
init_rpc_hdr_auth(pauth_out, RPC_KRB5_AUTH_TYPE, (int)auth_level, 0, 1);
@@ -953,7 +953,7 @@ static NTSTATUS create_krb5_auth_bind_req( struct rpc_pipe_client *cli,
}
DEBUG(5, ("create_krb5_auth_bind_req: Created krb5 GSS blob :\n"));
- dump_data(5, tkt_wrapped.data, tkt_wrapped.length);
+ dump_data(5, (const char *)tkt_wrapped.data, tkt_wrapped.length);
data_blob_free(&tkt_wrapped);
return NT_STATUS_OK;
@@ -972,9 +972,9 @@ static NTSTATUS create_spnego_ntlmssp_auth_rpc_bind_req( struct rpc_pipe_client
prs_struct *auth_data)
{
NTSTATUS nt_status;
- DATA_BLOB null_blob = data_blob_null;
- DATA_BLOB request = data_blob_null;
- DATA_BLOB spnego_msg = data_blob_null;
+ DATA_BLOB null_blob = data_blob(NULL, 0);
+ DATA_BLOB request = data_blob(NULL, 0);
+ DATA_BLOB spnego_msg = data_blob(NULL, 0);
/* We may change the pad length before marshalling. */
init_rpc_hdr_auth(pauth_out, RPC_SPNEGO_AUTH_TYPE, (int)auth_level, 0, 1);
@@ -1003,7 +1003,7 @@ static NTSTATUS create_spnego_ntlmssp_auth_rpc_bind_req( struct rpc_pipe_client
}
DEBUG(5, ("create_spnego_ntlmssp_auth_rpc_bind_req: NTLMSSP Negotiate:\n"));
- dump_data(5, spnego_msg.data, spnego_msg.length);
+ dump_data(5, (const char *)spnego_msg.data, spnego_msg.length);
data_blob_free(&spnego_msg);
return NT_STATUS_OK;
@@ -1019,8 +1019,8 @@ static NTSTATUS create_ntlmssp_auth_rpc_bind_req( struct rpc_pipe_client *cli,
prs_struct *auth_data)
{
NTSTATUS nt_status;
- DATA_BLOB null_blob = data_blob_null;
- DATA_BLOB request = data_blob_null;
+ DATA_BLOB null_blob = data_blob(NULL, 0);
+ DATA_BLOB request = data_blob(NULL, 0);
/* We may change the pad length before marshalling. */
init_rpc_hdr_auth(pauth_out, RPC_NTLMSSP_AUTH_TYPE, (int)auth_level, 0, 1);
@@ -1044,7 +1044,7 @@ static NTSTATUS create_ntlmssp_auth_rpc_bind_req( struct rpc_pipe_client *cli,
}
DEBUG(5, ("create_ntlmssp_auth_rpc_bind_req: NTLMSSP Negotiate:\n"));
- dump_data(5, request.data, request.length);
+ dump_data(5, (const char *)request.data, request.length);
data_blob_free(&request);
return NT_STATUS_OK;
@@ -1250,7 +1250,7 @@ static NTSTATUS add_ntlmssp_auth_footer(struct rpc_pipe_client *cli,
{
RPC_HDR_AUTH auth_info;
NTSTATUS status;
- DATA_BLOB auth_blob = data_blob_null;
+ DATA_BLOB auth_blob = data_blob(NULL, 0);
uint16 data_and_pad_len = prs_offset(outgoing_pdu) - RPC_HEADER_LEN - RPC_HDR_RESP_LEN;
if (!cli->auth.a_u.ntlmssp_state) {
@@ -1645,10 +1645,10 @@ static BOOL valid_pipe_name(const int pipe_idx, RPC_IFACE *abstract, RPC_IFACE *
}
DEBUG(5,("Bind Abstract Syntax: "));
- dump_data(5, (uint8 *)&pipe_names[pipe_idx].abstr_syntax,
+ dump_data(5, (char*)&pipe_names[pipe_idx].abstr_syntax,
sizeof(pipe_names[pipe_idx].abstr_syntax));
DEBUG(5,("Bind Transfer Syntax: "));
- dump_data(5, (uint8 *)&pipe_names[pipe_idx].trans_syntax,
+ dump_data(5, (char*)&pipe_names[pipe_idx].trans_syntax,
sizeof(pipe_names[pipe_idx].trans_syntax));
/* copy the required syntaxes out so we can do the right bind */
@@ -1775,8 +1775,8 @@ static NTSTATUS rpc_finish_auth3_bind(struct rpc_pipe_client *cli,
enum pipe_auth_type auth_type,
enum pipe_auth_level auth_level)
{
- DATA_BLOB server_response = data_blob_null;
- DATA_BLOB client_reply = data_blob_null;
+ DATA_BLOB server_response = data_blob(NULL,0);
+ DATA_BLOB client_reply = data_blob(NULL,0);
RPC_HDR_AUTH hdr_auth;
NTSTATUS nt_status;
prs_struct rpc_out;
@@ -1900,10 +1900,10 @@ static NTSTATUS rpc_finish_spnego_ntlmssp_bind(struct rpc_pipe_client *cli,
enum pipe_auth_type auth_type,
enum pipe_auth_level auth_level)
{
- DATA_BLOB server_spnego_response = data_blob_null;
- DATA_BLOB server_ntlm_response = data_blob_null;
- DATA_BLOB client_reply = data_blob_null;
- DATA_BLOB tmp_blob = data_blob_null;
+ DATA_BLOB server_spnego_response = data_blob(NULL,0);
+ DATA_BLOB server_ntlm_response = data_blob(NULL,0);
+ DATA_BLOB client_reply = data_blob(NULL,0);
+ DATA_BLOB tmp_blob = data_blob(NULL, 0);
RPC_HDR_AUTH hdr_auth;
NTSTATUS nt_status;
prs_struct rpc_out;
@@ -1953,7 +1953,7 @@ static NTSTATUS rpc_finish_spnego_ntlmssp_bind(struct rpc_pipe_client *cli,
tmp_blob = spnego_gen_auth(client_reply);
data_blob_free(&client_reply);
client_reply = tmp_blob;
- tmp_blob = data_blob_null; /* Ensure it's safe to free this just in case. */
+ tmp_blob = data_blob(NULL,0); /* Ensure it's safe to free this just in case. */
/* Now prepare the alter context pdu. */
prs_init(&rpc_out, 0, prs_get_mem_context(rbuf), MARSHALL);
@@ -2002,7 +2002,7 @@ static NTSTATUS rpc_finish_spnego_ntlmssp_bind(struct rpc_pipe_client *cli,
prs_copy_data_out((char *)server_spnego_response.data, rbuf, phdr->auth_len);
/* Check we got a valid auth response. */
- if (!spnego_parse_auth_response(server_spnego_response, NT_STATUS_OK, OID_NTLMSSP, &tmp_blob)) {
+ if (!spnego_parse_auth_response(server_spnego_response, NT_STATUS_OK, &tmp_blob)) {
data_blob_free(&server_spnego_response);
data_blob_free(&tmp_blob);
return NT_STATUS_INVALID_PARAMETER;
diff --git a/source/rpc_client/cli_reg.c b/source/rpc_client/cli_reg.c
index 83ff96b8b3f..e136df753ad 100644
--- a/source/rpc_client/cli_reg.c
+++ b/source/rpc_client/cli_reg.c
@@ -2,7 +2,11 @@
Unix SMB/CIFS implementation.
RPC Pipe client
- Copyright (C) Gerald (Jerry) Carter 2005-2006
+ Copyright (C) Andrew Tridgell 1992-2000,
+ Copyright (C) Jeremy Allison 1999 - 2005
+ Copyright (C) Simo Sorce 2001
+ Copyright (C) Jeremy Cooper 2004
+ Copyright (C) Gerald (Jerry) Carter 2005
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -22,55 +26,706 @@
#include "includes.h"
#include "rpc_client.h"
+/* Shutdown a server */
+
+/*******************************************************************
+ internal connect to a registry hive root (open a registry policy)
+*******************************************************************/
+
+static WERROR rpccli_reg_open_hive_int(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx, uint16 op_code,
+ const char *op_name,
+ uint32 access_mask, POLICY_HND *hnd)
+{
+ REG_Q_OPEN_HIVE in;
+ REG_R_OPEN_HIVE out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT(in);
+ ZERO_STRUCT(out);
+
+ init_reg_q_open_hive(&in, access_mask);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, op_code,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_open_hive,
+ reg_io_r_open_hive,
+ WERR_GENERAL_FAILURE );
+
+ if ( !W_ERROR_IS_OK( out.status ) )
+ return out.status;
+
+ memcpy( hnd, &out.pol, sizeof(POLICY_HND) );
+
+ return out.status;
+}
+
/*******************************************************************
connect to a registry hive root (open a registry policy)
*******************************************************************/
-NTSTATUS rpccli_winreg_Connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+WERROR rpccli_reg_connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
uint32 reg_type, uint32 access_mask,
POLICY_HND *reg_hnd)
-{
+{ uint16 op_code;
+ const char *op_name;
+
ZERO_STRUCTP(reg_hnd);
switch (reg_type)
{
case HKEY_CLASSES_ROOT:
- return rpccli_winreg_OpenHKCR( cli, mem_ctx, NULL,
- access_mask, reg_hnd );
-
+ op_code = REG_OPEN_HKCR;
+ op_name = "REG_OPEN_HKCR";
+ break;
case HKEY_LOCAL_MACHINE:
- return rpccli_winreg_OpenHKLM( cli, mem_ctx, NULL,
- access_mask, reg_hnd );
-
+ op_code = REG_OPEN_HKLM;
+ op_name = "REG_OPEN_HKLM";
+ break;
case HKEY_USERS:
- return rpccli_winreg_OpenHKU( cli, mem_ctx, NULL,
- access_mask, reg_hnd );
-
+ op_code = REG_OPEN_HKU;
+ op_name = "REG_OPEN_HKU";
+ break;
case HKEY_PERFORMANCE_DATA:
- return rpccli_winreg_OpenHKPD( cli, mem_ctx, NULL,
- access_mask, reg_hnd );
-
- default:
- /* fall through to end of function */
+ op_code = REG_OPEN_HKPD;
+ op_name = "REG_OPEN_HKPD";
break;
+ default:
+ return WERR_INVALID_PARAM;
}
- return NT_STATUS_INVALID_PARAMETER;
+ return rpccli_reg_open_hive_int(cli, mem_ctx, op_code, op_name,
+ access_mask, reg_hnd);
}
+
/*******************************************************************
- Fill in a REGVAL_BUFFER for the data given a REGISTRY_VALUE
- *******************************************************************/
+*******************************************************************/
+
+WERROR rpccli_reg_shutdown(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ const char *msg, uint32 timeout, BOOL do_reboot,
+ BOOL force)
+{
+ REG_Q_SHUTDOWN in;
+ REG_R_SHUTDOWN out;
+ prs_struct qbuf, rbuf;
+
+ if (msg == NULL)
+ return WERR_INVALID_PARAM;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ /* Marshall data and send request */
+
+ init_reg_q_shutdown(&in, msg, timeout, do_reboot, force);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_SHUTDOWN,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_shutdown,
+ reg_io_r_shutdown,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+WERROR rpccli_reg_abort_shutdown(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ REG_Q_ABORT_SHUTDOWN in;
+ REG_R_ABORT_SHUTDOWN out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_ABORT_SHUTDOWN,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_abort_shutdown,
+ reg_io_r_abort_shutdown,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+
+/****************************************************************************
+do a REG Unknown 0xB command. sent after a create key or create value.
+this might be some sort of "sync" or "refresh" command, sent after
+modification of the registry...
+****************************************************************************/
+
+WERROR rpccli_reg_flush_key(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd)
+{
+ REG_Q_FLUSH_KEY in;
+ REG_R_FLUSH_KEY out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_flush_key(&in, hnd);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_FLUSH_KEY,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_flush_key,
+ reg_io_r_flush_key,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Query Key
+****************************************************************************/
-uint32 reg_init_regval_buffer( REGVAL_BUFFER *buf2, REGISTRY_VALUE *val )
+WERROR rpccli_reg_query_key(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd,
+ char *key_class, uint32 *class_len,
+ uint32 *num_subkeys, uint32 *max_subkeylen,
+ uint32 *max_classlen, uint32 *num_values,
+ uint32 *max_valnamelen, uint32 *max_valbufsize,
+ uint32 *sec_desc, NTTIME *mod_time)
{
- uint32 real_size = 0;
+ REG_Q_QUERY_KEY in;
+ REG_R_QUERY_KEY out;
+ prs_struct qbuf, rbuf;
+ uint32 saved_class_len = *class_len;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_query_key( &in, hnd, key_class );
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_QUERY_KEY,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_query_key,
+ reg_io_r_query_key,
+ WERR_GENERAL_FAILURE );
+
+ if ( W_ERROR_EQUAL( out.status, WERR_MORE_DATA ) ) {
+ ZERO_STRUCT (in);
+
+ *class_len = out.key_class.string->uni_max_len;
+ if ( *class_len > saved_class_len )
+ return out.status;
+
+ /* set a string of spaces and NULL terminate */
+
+ memset( key_class, (int)' ', *class_len );
+ key_class[*class_len] = '\0';
+
+ init_reg_q_query_key( &in, hnd, key_class );
+
+ ZERO_STRUCT (out);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_QUERY_KEY,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_query_key,
+ reg_io_r_query_key,
+ WERR_GENERAL_FAILURE );
+ }
+
+ if ( !W_ERROR_IS_OK( out.status ) )
+ return out.status;
+
+ *class_len = out.key_class.string->uni_max_len;
+ unistr2_to_ascii(key_class, out.key_class.string, saved_class_len-1);
+ *num_subkeys = out.num_subkeys ;
+ *max_subkeylen = out.max_subkeylen ;
+ *num_values = out.num_values ;
+ *max_valnamelen = out.max_valnamelen;
+ *max_valbufsize = out.max_valbufsize;
+ *sec_desc = out.sec_desc ;
+ *mod_time = out.mod_time ;
+ /* Maybe: *max_classlen = out.reserved; */
+
+ return out.status;
+}
+
+/****************************************************************************
+****************************************************************************/
+
+WERROR rpccli_reg_getversion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, uint32 *version)
+{
+ REG_Q_GETVERSION in;
+ REG_R_GETVERSION out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_getversion(&in, hnd);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_GETVERSION,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_getversion,
+ reg_io_r_getversion,
+ WERR_GENERAL_FAILURE );
+
+
+ if ( !W_ERROR_IS_OK( out.status ) )
+ return out.status;
+
+ *version = out.win_version;
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Query Info
+****************************************************************************/
+
+WERROR rpccli_reg_query_value(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, const char *val_name,
+ uint32 *type, REGVAL_BUFFER *buffer)
+{
+ REG_Q_QUERY_VALUE in;
+ REG_R_QUERY_VALUE out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_query_value(&in, hnd, val_name, buffer);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_QUERY_VALUE,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_query_value,
+ reg_io_r_query_value,
+ WERR_GENERAL_FAILURE );
+
+
+ if ( !W_ERROR_IS_OK( out.status ) )
+ return out.status;
+
+ *type = *out.type;
+ *buffer = *out.value;
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Set Key Security
+****************************************************************************/
+
+WERROR rpccli_reg_set_key_sec(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, uint32 sec_info,
+ size_t secdesc_size, SEC_DESC *sec_desc)
+{
+ REG_Q_SET_KEY_SEC in;
+ REG_R_SET_KEY_SEC out;
+ prs_struct qbuf, rbuf;
+ SEC_DESC_BUF *sec_desc_buf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ /* Flatten the security descriptor */
+
+ if ( !(sec_desc_buf = make_sec_desc_buf(mem_ctx, secdesc_size, sec_desc)) )
+ return WERR_GENERAL_FAILURE;
+
+ init_reg_q_set_key_sec(&in, hnd, sec_info, sec_desc_buf);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_SET_KEY_SEC,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_set_key_sec,
+ reg_io_r_set_key_sec,
+ WERR_GENERAL_FAILURE );
+
+
+ return out.status;
+}
+
+
+/****************************************************************************
+do a REG Query Key Security
+****************************************************************************/
+
+WERROR rpccli_reg_get_key_sec(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, uint32 sec_info,
+ uint32 *sec_buf_size, SEC_DESC_BUF *sec_buf)
+{
+ REG_Q_GET_KEY_SEC in;
+ REG_R_GET_KEY_SEC out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_get_key_sec(&in, hnd, sec_info, *sec_buf_size, sec_buf);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_GET_KEY_SEC,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_get_key_sec,
+ reg_io_r_get_key_sec,
+ WERR_GENERAL_FAILURE );
+
+
+ /* this might be able to return WERR_MORE_DATA, I'm not sure */
- if ( !buf2 || !val )
- return 0;
+ if ( !W_ERROR_IS_OK( out.status ) )
+ return out.status;
+
+ sec_buf = out.data;
+ *sec_buf_size = out.data->len;
- real_size = regval_size(val);
- init_regval_buffer( buf2, (unsigned char*)regval_data_p(val), real_size );
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Delete Value
+****************************************************************************/
+
+WERROR rpccli_reg_delete_val(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, char *val_name)
+{
+ REG_Q_DELETE_VALUE in;
+ REG_R_DELETE_VALUE out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_delete_val(&in, hnd, val_name);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_DELETE_VALUE,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_delete_value,
+ reg_io_r_delete_value,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Delete Key
+****************************************************************************/
+
+WERROR rpccli_reg_delete_key(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, char *key_name)
+{
+ REG_Q_DELETE_KEY in;
+ REG_R_DELETE_KEY out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_delete_key(&in, hnd, key_name);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_DELETE_KEY,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_delete_key,
+ reg_io_r_delete_key,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Create Key
+****************************************************************************/
+
+WERROR rpccli_reg_create_key_ex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, char *key_name, char *key_class,
+ uint32 access_desired, POLICY_HND *key)
+{
+ REG_Q_CREATE_KEY_EX in;
+ REG_R_CREATE_KEY_EX out;
+ prs_struct qbuf, rbuf;
+ SEC_DESC *sec;
+ SEC_DESC_BUF *sec_buf;
+ size_t sec_len;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ if ( !(sec = make_sec_desc(mem_ctx, 1, SEC_DESC_SELF_RELATIVE,
+ NULL, NULL, NULL, NULL, &sec_len)) ) {
+ return WERR_GENERAL_FAILURE;
+ }
+
+ if ( !(sec_buf = make_sec_desc_buf(mem_ctx, sec_len, sec)) )
+ return WERR_GENERAL_FAILURE;
+
+ init_reg_q_create_key_ex(&in, hnd, key_name, key_class, access_desired, sec_buf);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_CREATE_KEY_EX,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_create_key_ex,
+ reg_io_r_create_key_ex,
+ WERR_GENERAL_FAILURE );
+
+
+ if ( !W_ERROR_IS_OK( out.status ) )
+ return out.status;
+
+ memcpy( key, &out.handle, sizeof(POLICY_HND) );
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Enum Key
+****************************************************************************/
+
+WERROR rpccli_reg_enum_key(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, int key_index, fstring key_name,
+ fstring class_name, time_t *mod_time)
+{
+ REG_Q_ENUM_KEY in;
+ REG_R_ENUM_KEY out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_enum_key(&in, hnd, key_index);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_ENUM_KEY,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_enum_key,
+ reg_io_r_enum_key,
+ WERR_GENERAL_FAILURE );
+
+ if ( !W_ERROR_IS_OK(out.status) )
+ return out.status;
+
+ if ( out.keyname.string )
+ rpcstr_pull( key_name, out.keyname.string->buffer, sizeof(fstring), -1, STR_TERMINATE );
+ else
+ fstrcpy( key_name, "(Default)" );
+
+ if ( out.classname && out.classname->string )
+ rpcstr_pull( class_name, out.classname->string->buffer, sizeof(fstring), -1, STR_TERMINATE );
+ else
+ fstrcpy( class_name, "" );
+
+ *mod_time = nt_time_to_unix(*out.time);
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Create Value
+****************************************************************************/
+
+WERROR rpccli_reg_set_val(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, char *val_name, uint32 type,
+ RPC_DATA_BLOB *data)
+{
+ REG_Q_SET_VALUE in;
+ REG_R_SET_VALUE out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_set_val(&in, hnd, val_name, type, data);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_SET_VALUE,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_set_value,
+ reg_io_r_set_value,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Enum Value
+****************************************************************************/
+
+WERROR rpccli_reg_enum_val(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, int idx,
+ fstring val_name, uint32 *type, REGVAL_BUFFER *value)
+{
+ REG_Q_ENUM_VALUE in;
+ REG_R_ENUM_VALUE out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_enum_val(&in, hnd, idx, 0x0100, 0x1000);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_ENUM_VALUE,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_enum_val,
+ reg_io_r_enum_val,
+ WERR_GENERAL_FAILURE );
+
+ if ( W_ERROR_EQUAL(out.status, WERR_MORE_DATA) ) {
+
+ ZERO_STRUCT (in);
+
+ init_reg_q_enum_val(&in, hnd, idx, 0x0100, *out.buffer_len1);
+
+ ZERO_STRUCT (out);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_ENUM_VALUE,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_enum_val,
+ reg_io_r_enum_val,
+ WERR_GENERAL_FAILURE );
+ }
+
+ if ( !W_ERROR_IS_OK(out.status) )
+ return out.status;
+
+ unistr2_to_ascii(val_name, out.name.string, sizeof(fstring)-1);
+ *type = *out.type;
+ *value = *out.value;
+
+ return out.status;
+}
+
+/****************************************************************************
+****************************************************************************/
+
+WERROR rpccli_reg_open_entry(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, char *key_name,
+ uint32 access_desired, POLICY_HND *key_hnd)
+{
+ REG_Q_OPEN_ENTRY in;
+ REG_R_OPEN_ENTRY out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_open_entry(&in, hnd, key_name, access_desired);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_OPEN_ENTRY,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_open_entry,
+ reg_io_r_open_entry,
+ WERR_GENERAL_FAILURE );
+
+ if ( !W_ERROR_IS_OK( out.status ) )
+ return out.status;
+
+ memcpy( key_hnd, &out.handle, sizeof(POLICY_HND) );
+
+ return out.status;
+}
+
+/****************************************************************************
+****************************************************************************/
+
+WERROR rpccli_reg_close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd)
+{
+ REG_Q_CLOSE in;
+ REG_R_CLOSE out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_reg_q_close(&in, hnd);
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_CLOSE,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_close,
+ reg_io_r_close,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+/****************************************************************************
+do a REG Query Info
+****************************************************************************/
+
+WERROR rpccli_reg_save_key(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ POLICY_HND *hnd, const char *filename )
+{
+ REG_Q_SAVE_KEY in;
+ REG_R_SAVE_KEY out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT (in);
+ ZERO_STRUCT (out);
+
+ init_q_reg_save_key( &in, hnd, filename );
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_WINREG, REG_SAVE_KEY,
+ in, out,
+ qbuf, rbuf,
+ reg_io_q_save_key,
+ reg_io_r_save_key,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
+
+/*
+ #################################################################
+ Utility functions
+ #################################################################
+ */
+
+/*****************************************************************
+ Splits out the start of the key (HKLM or HKU) and the rest of the key.
+*****************************************************************/
+
+BOOL reg_split_hive(const char *full_keyname, uint32 *reg_type, pstring key_name)
+{
+ pstring tmp;
+
+ if (!next_token(&full_keyname, tmp, "\\", sizeof(tmp)))
+ return False;
+
+ (*reg_type) = 0;
+
+ DEBUG(10, ("reg_split_key: hive %s\n", tmp));
+
+ if (strequal(tmp, "HKLM") || strequal(tmp, "HKEY_LOCAL_MACHINE"))
+ (*reg_type) = HKEY_LOCAL_MACHINE;
+ else if (strequal(tmp, "HKCR") || strequal(tmp, "HKEY_CLASSES_ROOT"))
+ (*reg_type) = HKEY_CLASSES_ROOT;
+ else if (strequal(tmp, "HKU") || strequal(tmp, "HKEY_USERS"))
+ (*reg_type) = HKEY_USERS;
+ else if (strequal(tmp, "HKPD")||strequal(tmp, "HKEY_PERFORMANCE_DATA"))
+ (*reg_type) = HKEY_PERFORMANCE_DATA;
+ else {
+ DEBUG(10,("reg_split_key: unrecognised hive key %s\n", tmp));
+ return False;
+ }
+
+ if (next_token(&full_keyname, tmp, "\n\r", sizeof(tmp)))
+ pstrcpy(key_name, tmp);
+ else
+ key_name[0] = 0;
+
+ DEBUG(10, ("reg_split_key: name %s\n", key_name));
- return real_size;
+ return True;
}
diff --git a/source/rpc_client/cli_samr.c b/source/rpc_client/cli_samr.c
index 462add43819..444011edc5d 100644
--- a/source/rpc_client/cli_samr.c
+++ b/source/rpc_client/cli_samr.c
@@ -52,6 +52,9 @@ NTSTATUS rpccli_samr_connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
if (NT_STATUS_IS_OK(result = r.status)) {
*connect_pol = r.connect_pol;
+#ifdef __INSURE__
+ connect_pol->marker = malloc(1);
+#endif
}
return result;
@@ -85,6 +88,9 @@ NTSTATUS rpccli_samr_connect4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
if (NT_STATUS_IS_OK(result = r.status)) {
*connect_pol = r.connect_pol;
+#ifdef __INSURE__
+ connect_pol->marker = malloc(1);
+#endif
}
return result;
@@ -119,6 +125,9 @@ NTSTATUS rpccli_samr_close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
/* Return output parameters */
if (NT_STATUS_IS_OK(result = r.status)) {
+#ifdef __INSURE__
+ SAFE_FREE(connect_pol->marker);
+#endif
*connect_pol = r.pol;
}
@@ -157,6 +166,9 @@ NTSTATUS rpccli_samr_open_domain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
if (NT_STATUS_IS_OK(result = r.status)) {
*domain_pol = r.domain_pol;
+#ifdef __INSURE__
+ domain_pol->marker = malloc(1);
+#endif
}
return result;
@@ -192,6 +204,9 @@ NTSTATUS rpccli_samr_open_user(struct rpc_pipe_client *cli,
if (NT_STATUS_IS_OK(result = r.status)) {
*user_pol = r.user_pol;
+#ifdef __INSURE__
+ user_pol->marker = malloc(1);
+#endif
}
return result;
@@ -229,6 +244,9 @@ NTSTATUS rpccli_samr_open_group(struct rpc_pipe_client *cli,
if (NT_STATUS_IS_OK(result = r.status)) {
*group_pol = r.pol;
+#ifdef __INSURE__
+ group_pol->marker = malloc(1);
+#endif
}
return result;
@@ -922,6 +940,9 @@ NTSTATUS rpccli_samr_open_alias(struct rpc_pipe_client *cli,
if (NT_STATUS_IS_OK(result = r.status)) {
*alias_pol = r.pol;
+#ifdef __INSURE__
+ alias_pol->marker = malloc(1);
+#endif
}
return result;
@@ -1197,6 +1218,11 @@ NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli,
const char *newpassword,
const char *oldpassword )
{
+ prs_struct qbuf, rbuf;
+ SAMR_Q_CHGPASSWD_USER q;
+ SAMR_R_CHGPASSWD_USER r;
+ NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
uchar new_nt_password[516];
uchar new_lm_password[516];
uchar old_nt_hash[16];
@@ -1207,8 +1233,13 @@ NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli,
uchar new_nt_hash[16];
uchar new_lanman_hash[16];
+ char *srv_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", cli->cli->desthost);
+
DEBUG(10,("rpccli_samr_chgpasswd_user\n"));
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
/* Calculate the MD4 hash (NT compatible) of the password */
E_md4hash(oldpassword, old_nt_hash);
E_md4hash(newpassword, new_nt_hash);
@@ -1235,35 +1266,50 @@ NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli,
SamOEMhash( new_nt_password, old_nt_hash, 516);
E_old_pw_hash( new_nt_hash, old_nt_hash, old_nt_hash_enc);
- return rpccli_samr_chng_pswd_auth_crap(cli, mem_ctx, username,
- data_blob_const(new_nt_password,sizeof(new_nt_password)),
- data_blob_const(old_nt_hash_enc,sizeof(old_nt_hash_enc)),
- data_blob_const(new_lm_password,sizeof(new_lm_password)),
- data_blob_const(old_lanman_hash_enc,sizeof(old_lanman_hash_enc)));
+ /* Marshall data and send request */
+
+ init_samr_q_chgpasswd_user(&q, srv_name_slash, username,
+ new_nt_password,
+ old_nt_hash_enc,
+ new_lm_password,
+ old_lanman_hash_enc);
+
+ CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CHGPASSWD_USER,
+ q, r,
+ qbuf, rbuf,
+ samr_io_q_chgpasswd_user,
+ samr_io_r_chgpasswd_user,
+ NT_STATUS_UNSUCCESSFUL);
+
+ /* Return output parameters */
+
+ if (!NT_STATUS_IS_OK(result = r.status)) {
+ goto done;
+ }
+
+ done:
+
+ return result;
}
-/* User change passwd with auth crap */
+/* User change password given blobs */
NTSTATUS rpccli_samr_chng_pswd_auth_crap(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- const char *username,
- DATA_BLOB new_nt_password,
- DATA_BLOB old_nt_hash_enc,
- DATA_BLOB new_lm_password,
- DATA_BLOB old_lm_hash_enc)
+ TALLOC_CTX *mem_ctx,
+ const char *username,
+ DATA_BLOB new_nt_password,
+ DATA_BLOB old_nt_hash_enc,
+ DATA_BLOB new_lm_password,
+ DATA_BLOB old_lm_hash_enc)
{
prs_struct qbuf, rbuf;
SAMR_Q_CHGPASSWD_USER q;
SAMR_R_CHGPASSWD_USER r;
- char *srv_name_slash;
+ NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- if (!(srv_name_slash = talloc_asprintf(mem_ctx, "\\\\%s",
- cli->cli->desthost))) {
- return NT_STATUS_NO_MEMORY;
- }
+ char *srv_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", cli->cli->desthost);
- DEBUG(5,("rpccli_samr_chng_pswd_auth_crap on server: %s\n",
- srv_name_slash));
+ DEBUG(10,("rpccli_samr_chng_pswd_auth_crap\n"));
ZERO_STRUCT(q);
ZERO_STRUCT(r);
@@ -1273,19 +1319,28 @@ NTSTATUS rpccli_samr_chng_pswd_auth_crap(struct rpc_pipe_client *cli,
init_samr_q_chgpasswd_user(&q, srv_name_slash, username,
new_nt_password.data,
old_nt_hash_enc.data,
- new_lm_password.data,
+ new_lm_password.data,
old_lm_hash_enc.data);
CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CHGPASSWD_USER,
- q, r,
- qbuf, rbuf,
- samr_io_q_chgpasswd_user,
- samr_io_r_chgpasswd_user,
- NT_STATUS_UNSUCCESSFUL);
+ q, r,
+ qbuf, rbuf,
+ samr_io_q_chgpasswd_user,
+ samr_io_r_chgpasswd_user,
+ NT_STATUS_UNSUCCESSFUL);
- return r.status;
+ /* Return output parameters */
+
+ if (!NT_STATUS_IS_OK(result = r.status)) {
+ goto done;
+ }
+
+ done:
+
+ return result;
}
+
/* change password 3 */
NTSTATUS rpccli_samr_chgpasswd3(struct rpc_pipe_client *cli,
@@ -1434,59 +1489,7 @@ NTSTATUS rpccli_samr_query_dispinfo(struct rpc_pipe_client *cli,
/* Return output parameters */
- result = r.status;
-
- if (!NT_STATUS_IS_OK(result) &&
- NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
- goto done;
- }
-
- *num_entries = r.num_entries;
- *start_idx += r.num_entries; /* No next_idx in this structure! */
-
- done:
- return result;
-}
-
-
-/* Query display info2 */
-
-NTSTATUS rpccli_samr_query_dispinfo2(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- POLICY_HND *domain_pol, uint32 *start_idx,
- uint16 switch_value, uint32 *num_entries,
- uint32 max_entries, uint32 max_size,
- SAM_DISPINFO_CTR *ctr)
-{
- prs_struct qbuf, rbuf;
- SAMR_Q_QUERY_DISPINFO q;
- SAMR_R_QUERY_DISPINFO r;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(10,("cli_samr_query_dispinfo2 for start_idx = %u\n", *start_idx));
-
- ZERO_STRUCT(q);
- ZERO_STRUCT(r);
-
- *num_entries = 0;
-
- /* Marshall data and send request */
-
- init_samr_q_query_dispinfo(&q, domain_pol, switch_value,
- *start_idx, max_entries, max_size);
-
- r.ctr = ctr;
-
- CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_DISPINFO2,
- q, r,
- qbuf, rbuf,
- samr_io_q_query_dispinfo,
- samr_io_r_query_dispinfo,
- NT_STATUS_UNSUCCESSFUL);
-
- /* Return output parameters */
-
- result = r.status;
+ result = r.status;
if (!NT_STATUS_IS_OK(result) &&
NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
@@ -1500,142 +1503,6 @@ NTSTATUS rpccli_samr_query_dispinfo2(struct rpc_pipe_client *cli,
return result;
}
-/* Query display info */
-
-NTSTATUS rpccli_samr_query_dispinfo3(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- POLICY_HND *domain_pol, uint32 *start_idx,
- uint16 switch_value, uint32 *num_entries,
- uint32 max_entries, uint32 max_size,
- SAM_DISPINFO_CTR *ctr)
-{
- prs_struct qbuf, rbuf;
- SAMR_Q_QUERY_DISPINFO q;
- SAMR_R_QUERY_DISPINFO r;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(10,("cli_samr_query_dispinfo3 for start_idx = %u\n", *start_idx));
-
- ZERO_STRUCT(q);
- ZERO_STRUCT(r);
-
- *num_entries = 0;
-
- /* Marshall data and send request */
-
- init_samr_q_query_dispinfo(&q, domain_pol, switch_value,
- *start_idx, max_entries, max_size);
-
- r.ctr = ctr;
-
- CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_DISPINFO3,
- q, r,
- qbuf, rbuf,
- samr_io_q_query_dispinfo,
- samr_io_r_query_dispinfo,
- NT_STATUS_UNSUCCESSFUL);
-
- /* Return output parameters */
-
- result = r.status;
-
- if (!NT_STATUS_IS_OK(result) &&
- NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
- goto done;
- }
-
- *num_entries = r.num_entries;
- *start_idx += r.num_entries; /* No next_idx in this structure! */
-
- done:
- return result;
-}
-
-/* Query display info index */
-
-NTSTATUS rpccli_samr_get_dispenum_index(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- POLICY_HND *domain_pol,
- uint16 switch_value,
- const char *name,
- uint32 *idx)
-{
- prs_struct qbuf, rbuf;
- SAMR_Q_GET_DISPENUM_INDEX q;
- SAMR_R_GET_DISPENUM_INDEX r;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(10,("cli_samr_get_dispenum_index for name = %s\n", name));
-
- ZERO_STRUCT(q);
- ZERO_STRUCT(r);
-
- /* Marshall data and send request */
-
- init_samr_q_get_dispenum_index(&q, domain_pol, switch_value, name);
-
- CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_GET_DISPENUM_INDEX,
- q, r,
- qbuf, rbuf,
- samr_io_q_get_dispenum_index,
- samr_io_r_get_dispenum_index,
- NT_STATUS_UNSUCCESSFUL);
-
- /* Return output parameters */
-
- *idx = 0;
-
- result = r.status;
-
- if (!NT_STATUS_IS_ERR(result)) {
- *idx = r.idx;
- }
-
- return result;
-}
-
-NTSTATUS rpccli_samr_get_dispenum_index2(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- POLICY_HND *domain_pol,
- uint16 switch_value,
- const char *name,
- uint32 *idx)
-{
- prs_struct qbuf, rbuf;
- SAMR_Q_GET_DISPENUM_INDEX q;
- SAMR_R_GET_DISPENUM_INDEX r;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(10,("cli_samr_get_dispenum_index2 for name = %s\n", name));
-
- ZERO_STRUCT(q);
- ZERO_STRUCT(r);
-
- /* Marshall data and send request */
-
- init_samr_q_get_dispenum_index(&q, domain_pol, switch_value, name);
-
- CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_GET_DISPENUM_INDEX2,
- q, r,
- qbuf, rbuf,
- samr_io_q_get_dispenum_index,
- samr_io_r_get_dispenum_index,
- NT_STATUS_UNSUCCESSFUL);
-
- /* Return output parameters */
-
- *idx = 0;
-
- result = r.status;
-
- if (!NT_STATUS_IS_ERR(result)) {
- *idx = r.idx;
- }
-
- return result;
-}
-
-
/* Lookup rids. Note that NT4 seems to crash if more than ~1000 rids are
looked up in one packet. */
diff --git a/source/rpc_client/cli_shutdown.c b/source/rpc_client/cli_shutdown.c
new file mode 100644
index 00000000000..c06586e98ab
--- /dev/null
+++ b/source/rpc_client/cli_shutdown.c
@@ -0,0 +1,119 @@
+/*
+ Unix SMB/CIFS implementation.
+ RPC Pipe client
+
+ Copyright (C) Andrew Tridgell 1992-1998,
+ Largely rewritten by Jeremy Allison (C) 2005.
+ Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/* Shutdown a server */
+
+NTSTATUS rpccli_shutdown_init(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ const char *msg, uint32 timeout, BOOL do_reboot,
+ BOOL force)
+{
+ prs_struct qbuf;
+ prs_struct rbuf;
+ SHUTDOWN_Q_INIT q;
+ SHUTDOWN_R_INIT r;
+ WERROR result = WERR_GENERAL_FAILURE;
+
+ if (msg == NULL)
+ return NT_STATUS_INVALID_PARAMETER;
+
+ ZERO_STRUCT (q);
+ ZERO_STRUCT (r);
+
+ /* Marshall data and send request */
+
+ init_shutdown_q_init(&q, msg, timeout, do_reboot, force);
+
+ CLI_DO_RPC(cli, mem_ctx, PI_SHUTDOWN, SHUTDOWN_INIT,
+ q, r,
+ qbuf, rbuf,
+ shutdown_io_q_init,
+ shutdown_io_r_init,
+ NT_STATUS_UNSUCCESSFUL);
+
+ result = r.status;
+ return werror_to_ntstatus(result);
+}
+
+/* Shutdown a server */
+
+NTSTATUS rpccli_shutdown_init_ex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ const char *msg, uint32 timeout, BOOL do_reboot,
+ BOOL force, uint32 reason)
+{
+ prs_struct qbuf;
+ prs_struct rbuf;
+ SHUTDOWN_Q_INIT_EX q;
+ SHUTDOWN_R_INIT_EX r;
+ WERROR result = WERR_GENERAL_FAILURE;
+
+ if (msg == NULL)
+ return NT_STATUS_INVALID_PARAMETER;
+
+ ZERO_STRUCT (q);
+ ZERO_STRUCT (r);
+
+ /* Marshall data and send request */
+
+ init_shutdown_q_init_ex(&q, msg, timeout, do_reboot, force, reason);
+
+ CLI_DO_RPC(cli, mem_ctx, PI_SHUTDOWN, SHUTDOWN_INIT_EX,
+ q, r,
+ qbuf, rbuf,
+ shutdown_io_q_init_ex,
+ shutdown_io_r_init_ex,
+ NT_STATUS_UNSUCCESSFUL);
+
+ result = r.status;
+ return werror_to_ntstatus(result);
+}
+
+
+/* Abort a server shutdown */
+
+NTSTATUS rpccli_shutdown_abort(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
+{
+ prs_struct rbuf;
+ prs_struct qbuf;
+ SHUTDOWN_Q_ABORT q;
+ SHUTDOWN_R_ABORT r;
+ WERROR result = WERR_GENERAL_FAILURE;
+
+ ZERO_STRUCT (q);
+ ZERO_STRUCT (r);
+
+ /* Marshall data and send request */
+
+ init_shutdown_q_abort(&q);
+
+ CLI_DO_RPC(cli, mem_ctx, PI_SHUTDOWN, SHUTDOWN_ABORT,
+ q, r,
+ qbuf, rbuf,
+ shutdown_io_q_abort,
+ shutdown_io_r_abort,
+ NT_STATUS_UNSUCCESSFUL);
+
+ result = r.status;
+ return werror_to_ntstatus(result);
+}
diff --git a/source/rpc_client/cli_srvsvc.c b/source/rpc_client/cli_srvsvc.c
new file mode 100644
index 00000000000..e471de7c3ba
--- /dev/null
+++ b/source/rpc_client/cli_srvsvc.c
@@ -0,0 +1,617 @@
+/*
+ Unix SMB/CIFS implementation.
+ NT Domain Authentication SMB / MSRPC client
+ Copyright (C) Andrew Tridgell 1994-2000
+ Copyright (C) Tim Potter 2001
+ Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2002
+ Copyright (C) Jeremy Allison 2005.
+ Copyright (C) Gerald (Jerry) Carter 2006.
+
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+WERROR rpccli_srvsvc_net_srv_get_info(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ uint32 switch_value, SRV_INFO_CTR *ctr)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_SRV_GET_INFO q;
+ SRV_R_NET_SRV_GET_INFO r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_srv_get_info(&q, server, switch_value);
+ r.ctr = ctr;
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_SRV_GET_INFO,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_srv_get_info,
+ srv_io_r_net_srv_get_info,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_share_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ uint32 info_level, SRV_SHARE_INFO_CTR *ctr,
+ int preferred_len, ENUM_HND *hnd)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_SHARE_ENUM q;
+ SRV_R_NET_SHARE_ENUM r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+ int i;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_share_enum(&q, server, info_level, preferred_len, hnd);
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_SHARE_ENUM_ALL,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_share_enum,
+ srv_io_r_net_share_enum,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+
+ if (!W_ERROR_IS_OK(result))
+ goto done;
+
+ /* Oh yuck yuck yuck - we have to copy all the info out of the
+ SRV_SHARE_INFO_CTR in the SRV_R_NET_SHARE_ENUM as when we do a
+ prs_mem_free() it will all be invalidated. The various share
+ info structures suck badly too. This really is gross. */
+
+ ZERO_STRUCTP(ctr);
+
+ if (!r.ctr.num_entries)
+ goto done;
+
+ ctr->info_level = info_level;
+ ctr->num_entries = r.ctr.num_entries;
+
+ switch(info_level) {
+ case 1:
+ ctr->share.info1 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_1, ctr->num_entries);
+ if (ctr->share.info1 == NULL) {
+ return WERR_NOMEM;
+ }
+
+ memset(ctr->share.info1, 0, sizeof(SRV_SHARE_INFO_1));
+
+ for (i = 0; i < ctr->num_entries; i++) {
+ SRV_SHARE_INFO_1 *info1 = &ctr->share.info1[i];
+ char *s;
+
+ /* Copy pointer crap */
+
+ memcpy(&info1->info_1, &r.ctr.share.info1[i].info_1,
+ sizeof(SH_INFO_1));
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_netname);
+ if (s)
+ init_unistr2(&info1->info_1_str.uni_netname, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_remark);
+ if (s)
+ init_unistr2(&info1->info_1_str.uni_remark, s, UNI_STR_TERMINATE);
+
+ }
+
+ break;
+ case 2:
+ ctr->share.info2 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_2, ctr->num_entries);
+ if (ctr->share.info2 == NULL) {
+ return WERR_NOMEM;
+ }
+
+ memset(ctr->share.info2, 0, sizeof(SRV_SHARE_INFO_2));
+
+ for (i = 0; i < ctr->num_entries; i++) {
+ SRV_SHARE_INFO_2 *info2 = &ctr->share.info2[i];
+ char *s;
+
+ /* Copy pointer crap */
+
+ memcpy(&info2->info_2, &r.ctr.share.info2[i].info_2,
+ sizeof(SH_INFO_2));
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_netname);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_netname, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_remark);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_remark, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_path);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_path, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_passwd);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_passwd, s, UNI_STR_TERMINATE);
+ }
+ break;
+ /* adding info-level 502 here */
+ case 502:
+ ctr->share.info502 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_502, ctr->num_entries);
+
+ if (ctr->share.info502 == NULL) {
+ return WERR_NOMEM;
+ }
+
+ memset(ctr->share.info502, 0, sizeof(SRV_SHARE_INFO_502));
+
+ for (i = 0; i < ctr->num_entries; i++) {
+ SRV_SHARE_INFO_502 *info502 = &ctr->share.info502[i];
+ char *s;
+
+ /* Copy pointer crap */
+ memcpy(&info502->info_502, &r.ctr.share.info502[i].info_502,
+ sizeof(SH_INFO_502));
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_netname);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_netname, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_remark);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_remark, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_path);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_path, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_passwd);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_passwd, s, UNI_STR_TERMINATE);
+
+ info502->info_502_str.sd = dup_sec_desc(mem_ctx, r.ctr.share.info502[i].info_502_str.sd);
+ }
+ break;
+ }
+
+ done:
+
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ const char *sharename,
+ uint32 info_level,
+ SRV_SHARE_INFO *info)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_SHARE_GET_INFO q;
+ SRV_R_NET_SHARE_GET_INFO r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_share_get_info(&q, server, sharename, info_level);
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_SHARE_GET_INFO,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_share_get_info,
+ srv_io_r_net_share_get_info,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+
+ if (!W_ERROR_IS_OK(result))
+ goto done;
+
+ ZERO_STRUCTP(info);
+
+ info->switch_value = info_level;
+
+ switch(info_level) {
+ case 1:
+ {
+ SRV_SHARE_INFO_1 *info1 = &info->share.info1;
+ SH_INFO_1_STR *info1_str = &info1->info_1_str;
+
+ char *s;
+
+ info->share.info1 = r.info.share.info1;
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &info1_str->uni_netname);
+ if (s)
+ init_unistr2(&info1_str->uni_netname,
+ s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info1_str->uni_remark);
+ if (s)
+ init_unistr2(&info1_str->uni_remark,
+ s, UNI_STR_TERMINATE);
+
+ break;
+ }
+ case 2:
+ {
+ SRV_SHARE_INFO_2 *info2 = &info->share.info2;
+ SH_INFO_2_STR *info2_str = &info2->info_2_str;
+
+ char *s;
+
+ info->share.info2 = r.info.share.info2;
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &info2_str->uni_netname);
+ if (s)
+ init_unistr2(&info2_str->uni_netname,
+ s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info2_str->uni_remark);
+ if (s)
+ init_unistr2(&info2_str->uni_remark,
+ s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info2_str->uni_path);
+ if (s)
+ init_unistr2(&info2_str->uni_path,
+ s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info2_str->uni_passwd);
+ if (s)
+ init_unistr2(&info2_str->uni_passwd,
+ s, UNI_STR_TERMINATE);
+
+
+ break;
+ }
+ case 502:
+ {
+ SRV_SHARE_INFO_502 *info502 = &info->share.info502;
+ SH_INFO_502_STR *info502_str = &info502->info_502_str;
+
+ char *s;
+
+ info->share.info502 = r.info.share.info502;
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &info502_str->uni_netname);
+ if (s)
+ init_unistr2(&info502_str->uni_netname,
+ s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info502_str->uni_remark);
+ if (s)
+ init_unistr2(&info502_str->uni_remark,
+ s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info502_str->uni_path);
+ if (s)
+ init_unistr2(&info502_str->uni_path,
+ s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info502_str->uni_passwd);
+ if (s)
+ init_unistr2(&info502_str->uni_passwd,
+ s, UNI_STR_TERMINATE);
+
+ info502_str->sd = dup_sec_desc(mem_ctx, info502_str->sd);
+ break;
+ }
+ default:
+ DEBUG(0,("unimplemented info-level: %d\n", info_level));
+ break;
+ }
+
+ done:
+
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ const char *sharename,
+ uint32 info_level,
+ SRV_SHARE_INFO *info)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_SHARE_SET_INFO q;
+ SRV_R_NET_SHARE_SET_INFO r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_share_set_info(&q, server, sharename, info_level, info);
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_SHARE_SET_INFO,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_share_set_info,
+ srv_io_r_net_share_set_info,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_share_del(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ const char *sharename)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_SHARE_DEL q;
+ SRV_R_NET_SHARE_DEL r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_share_del(&q, server, sharename);
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_SHARE_DEL,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_share_del,
+ srv_io_r_net_share_del,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_share_add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ const char *netname, uint32 type,
+ const char *remark, uint32 perms,
+ uint32 max_uses, uint32 num_uses,
+ const char *path, const char *passwd,
+ int level, SEC_DESC *sd)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_SHARE_ADD q;
+ SRV_R_NET_SHARE_ADD r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_share_add(&q,server, netname, type, remark,
+ perms, max_uses, num_uses, path, passwd,
+ level, sd);
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_SHARE_ADD,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_share_add,
+ srv_io_r_net_share_add,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ char *server, TIME_OF_DAY_INFO *tod)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_REMOTE_TOD q;
+ SRV_R_NET_REMOTE_TOD r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server_slash;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server_slash, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server_slash);
+
+ init_srv_q_net_remote_tod(&q, server_slash);
+ r.tod = tod;
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_REMOTE_TOD,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_remote_tod,
+ srv_io_r_net_remote_tod,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_file_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ uint32 file_level, const char *user_name,
+ SRV_FILE_INFO_CTR *ctr, int preferred_len,
+ ENUM_HND *hnd)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_FILE_ENUM q;
+ SRV_R_NET_FILE_ENUM r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+ int i;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_file_enum(&q, server, NULL, user_name,
+ file_level, ctr, preferred_len, hnd);
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_FILE_ENUM,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_file_enum,
+ srv_io_r_net_file_enum,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+
+ if (!W_ERROR_IS_OK(result))
+ goto done;
+
+ /* copy the data over to the ctr */
+
+ ZERO_STRUCTP(ctr);
+
+ ctr->level = file_level;
+
+ ctr->num_entries = ctr->num_entries2 = r.ctr.num_entries;
+
+ switch(file_level) {
+ case 3:
+ if (ctr->num_entries) {
+ if ( (ctr->file.info3 = TALLOC_ARRAY(mem_ctx, FILE_INFO_3, ctr->num_entries)) == NULL ) {
+ return WERR_NOMEM;
+ }
+
+ memset(ctr->file.info3, 0, sizeof(FILE_INFO_3) * ctr->num_entries);
+ } else {
+ ctr->file.info3 = NULL;
+ }
+
+ for (i = 0; i < r.ctr.num_entries; i++) {
+ FILE_INFO_3 *info3 = &ctr->file.info3[i];
+ char *s;
+
+ /* Copy pointer crap */
+
+ memcpy(info3, &r.ctr.file.info3[i], sizeof(FILE_INFO_3));
+
+ /* Duplicate strings */
+
+ if ( (s = unistr2_tdup(mem_ctx, r.ctr.file.info3[i].path)) != NULL ) {
+ info3->path = TALLOC_P( mem_ctx, UNISTR2 );
+ init_unistr2(info3->path, s, UNI_STR_TERMINATE);
+ }
+
+ if ( (s = unistr2_tdup(mem_ctx, r.ctr.file.info3[i].user)) != NULL ) {
+ info3->user = TALLOC_P( mem_ctx, UNISTR2 );
+ init_unistr2(info3->user, s, UNI_STR_TERMINATE);
+ }
+
+ }
+
+ break;
+ }
+
+ done:
+ return result;
+}
+
+WERROR rpccli_srvsvc_net_file_close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ uint32 file_id)
+{
+ prs_struct qbuf, rbuf;
+ SRV_Q_NET_FILE_CLOSE q;
+ SRV_R_NET_FILE_CLOSE r;
+ WERROR result = W_ERROR(ERRgeneral);
+ fstring server;
+
+ ZERO_STRUCT(q);
+ ZERO_STRUCT(r);
+
+ /* Initialise input parameters */
+
+ slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
+ strupper_m(server);
+
+ init_srv_q_net_file_close(&q, server, file_id);
+
+ /* Marshall data and send request */
+
+ CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_FILE_CLOSE,
+ q, r,
+ qbuf, rbuf,
+ srv_io_q_net_file_close,
+ srv_io_r_net_file_close,
+ WERR_GENERAL_FAILURE);
+
+ result = r.status;
+ return result;
+}
diff --git a/source/rpc_client/cli_svcctl.c b/source/rpc_client/cli_svcctl.c
index 021648ba1c5..d183670f5fb 100644
--- a/source/rpc_client/cli_svcctl.c
+++ b/source/rpc_client/cli_svcctl.c
@@ -133,6 +133,30 @@ WERROR rpccli_svcctl_open_service( struct rpc_pipe_client *cli, TALLOC_CTX *mem_
return out.status;
}
+/********************************************************************
+********************************************************************/
+
+WERROR rpccli_svcctl_close_service(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *hService )
+{
+ SVCCTL_Q_CLOSE_SERVICE in;
+ SVCCTL_R_CLOSE_SERVICE out;
+ prs_struct qbuf, rbuf;
+
+ ZERO_STRUCT(in);
+ ZERO_STRUCT(out);
+
+ memcpy( &in.handle, hService, sizeof(POLICY_HND) );
+
+ CLI_DO_RPC_WERR( cli, mem_ctx, PI_SVCCTL, SVCCTL_CLOSE_SERVICE,
+ in, out,
+ qbuf, rbuf,
+ svcctl_io_q_close_service,
+ svcctl_io_r_close_service,
+ WERR_GENERAL_FAILURE );
+
+ return out.status;
+}
+
/*******************************************************************
*******************************************************************/
diff --git a/source/rpc_parse/parse_dfs.c b/source/rpc_parse/parse_dfs.c
new file mode 100644
index 00000000000..88d6135a838
--- /dev/null
+++ b/source/rpc_parse/parse_dfs.c
@@ -0,0 +1,2705 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * parser auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_PARSE
+
+/* netdfs structures */
+BOOL init_netdfs_dfs_Info0(NETDFS_DFS_INFO0 *v)
+{
+ DEBUG(5,("init_netdfs_dfs_Info0\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info0_p(const char *desc, NETDFS_DFS_INFO0 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info0_p");
+ depth++;
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info0_d(const char *desc, NETDFS_DFS_INFO0 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info0_d");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info1(NETDFS_DFS_INFO1 *v, const char *path)
+{
+ DEBUG(5,("init_netdfs_dfs_Info1\n"));
+
+ if (path) {
+ v->ptr0_path = 1;
+ init_unistr2(&v->path, path, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_path = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info1_p(const char *desc, NETDFS_DFS_INFO1 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info1_p");
+ depth++;
+ if (!prs_uint32("ptr0_path", ps, depth, &v->ptr0_path))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info1_d(const char *desc, NETDFS_DFS_INFO1 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info1_d");
+ depth++;
+ if (v->ptr0_path) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("path", &v->path, 1, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info2(NETDFS_DFS_INFO2 *v, const char *path, const char *comment, uint32 state, uint32 num_stores)
+{
+ DEBUG(5,("init_netdfs_dfs_Info2\n"));
+
+ if (path) {
+ v->ptr0_path = 1;
+ init_unistr2(&v->path, path, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_path = 0;
+ }
+
+ if (comment) {
+ v->ptr0_comment = 1;
+ init_unistr2(&v->comment, comment, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_comment = 0;
+ }
+
+ v->state = state;
+
+ v->num_stores = num_stores;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info2_p(const char *desc, NETDFS_DFS_INFO2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info2_p");
+ depth++;
+ if (!prs_uint32("ptr0_path", ps, depth, &v->ptr0_path))
+ return False;
+
+
+ if (!prs_uint32("ptr0_comment", ps, depth, &v->ptr0_comment))
+ return False;
+
+
+ if (!prs_uint32("state", ps, depth, &v->state))
+ return False;
+
+ if (!prs_uint32("num_stores", ps, depth, &v->num_stores))
+ return False;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info2_d(const char *desc, NETDFS_DFS_INFO2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info2_d");
+ depth++;
+ if (v->ptr0_path) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("path", &v->path, 1, ps, depth))
+ return False;
+ }
+
+ if (v->ptr0_comment) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("comment", &v->comment, 1, ps, depth))
+ return False;
+ }
+
+
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_StorageInfo(NETDFS_DFS_STORAGEINFO *v, uint32 state, const char *server, const char *share)
+{
+ DEBUG(5,("init_netdfs_dfs_StorageInfo\n"));
+
+ v->state = state;
+
+ if (server) {
+ v->ptr0_server = 1;
+ init_unistr2(&v->server, server, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_server = 0;
+ }
+
+ if (share) {
+ v->ptr0_share = 1;
+ init_unistr2(&v->share, share, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_share = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_StorageInfo_p(const char *desc, NETDFS_DFS_STORAGEINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_StorageInfo_p");
+ depth++;
+ if (!prs_uint32("state", ps, depth, &v->state))
+ return False;
+
+ if (!prs_uint32("ptr0_server", ps, depth, &v->ptr0_server))
+ return False;
+
+
+ if (!prs_uint32("ptr0_share", ps, depth, &v->ptr0_share))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_StorageInfo_d(const char *desc, NETDFS_DFS_STORAGEINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_StorageInfo_d");
+ depth++;
+
+ if (v->ptr0_server) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("server", &v->server, 1, ps, depth))
+ return False;
+ }
+
+ if (v->ptr0_share) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("share", &v->share, 1, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info3(NETDFS_DFS_INFO3 *v, const char *path, const char *comment, uint32 state, uint32 num_stores, NETDFS_DFS_STORAGEINFO **stores)
+{
+ DEBUG(5,("init_netdfs_dfs_Info3\n"));
+
+ if (path) {
+ v->ptr0_path = 1;
+ init_unistr2(&v->path, path, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_path = 0;
+ }
+
+ if (comment) {
+ v->ptr0_comment = 1;
+ init_unistr2(&v->comment, comment, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_comment = 0;
+ }
+
+ v->state = state;
+
+ v->num_stores = num_stores;
+
+ if (stores) {
+ v->ptr0_stores = 1;
+ v->stores = *stores;
+ } else {
+ v->ptr0_stores = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info3_p(const char *desc, NETDFS_DFS_INFO3 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info3_p");
+ depth++;
+ if (!prs_uint32("ptr0_path", ps, depth, &v->ptr0_path))
+ return False;
+
+
+ if (!prs_uint32("ptr0_comment", ps, depth, &v->ptr0_comment))
+ return False;
+
+
+ if (!prs_uint32("state", ps, depth, &v->state))
+ return False;
+
+ if (!prs_uint32("num_stores", ps, depth, &v->num_stores))
+ return False;
+
+ if (!prs_uint32("ptr0_stores", ps, depth, &v->ptr0_stores))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info3_d(const char *desc, NETDFS_DFS_INFO3 *v, prs_struct *ps, int depth)
+{
+ uint32 i_stores_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info3_d");
+ depth++;
+ if (v->ptr0_path) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("path", &v->path, 1, ps, depth))
+ return False;
+ }
+
+ if (v->ptr0_comment) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("comment", &v->comment, 1, ps, depth))
+ return False;
+ }
+
+
+
+ if (v->ptr0_stores) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_stores", ps, depth, &v->size_stores))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->num_stores) {
+ v->stores = PRS_ALLOC_MEM(ps,NETDFS_DFS_STORAGEINFO,v->num_stores);
+ if (!v->stores) {
+ return False;
+ }
+ } else {
+ v->stores = NULL;
+ }
+ }
+ for (i_stores_1=0; i_stores_1<v->num_stores;i_stores_1++) {
+ if (!netdfs_io_dfs_StorageInfo_p("stores", &v->stores[i_stores_1], ps, depth))
+ return False;
+ }
+ for (i_stores_1=0; i_stores_1<v->num_stores;i_stores_1++) {
+ if (!netdfs_io_dfs_StorageInfo_d("stores", &v->stores[i_stores_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info4(NETDFS_DFS_INFO4 *v, const char *path, const char *comment, uint32 state, uint32 timeout, struct GUID guid, uint32 num_stores, NETDFS_DFS_STORAGEINFO **stores)
+{
+ DEBUG(5,("init_netdfs_dfs_Info4\n"));
+
+ if (path) {
+ v->ptr0_path = 1;
+ init_unistr2(&v->path, path, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_path = 0;
+ }
+
+ if (comment) {
+ v->ptr0_comment = 1;
+ init_unistr2(&v->comment, comment, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_comment = 0;
+ }
+
+ v->state = state;
+
+ v->timeout = timeout;
+
+
+
+ v->num_stores = num_stores;
+
+ if (stores) {
+ v->ptr0_stores = 1;
+ v->stores = *stores;
+ } else {
+ v->ptr0_stores = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info4_p(const char *desc, NETDFS_DFS_INFO4 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info4_p");
+ depth++;
+ if (!prs_uint32("ptr0_path", ps, depth, &v->ptr0_path))
+ return False;
+
+
+ if (!prs_uint32("ptr0_comment", ps, depth, &v->ptr0_comment))
+ return False;
+
+
+ if (!prs_uint32("state", ps, depth, &v->state))
+ return False;
+
+ if (!prs_uint32("timeout", ps, depth, &v->timeout))
+ return False;
+
+ if (!smb_io_uuid("guid", &v->guid, ps, depth))
+ return False;
+
+ if (!prs_uint32("num_stores", ps, depth, &v->num_stores))
+ return False;
+
+ if (!prs_uint32("ptr0_stores", ps, depth, &v->ptr0_stores))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info4_d(const char *desc, NETDFS_DFS_INFO4 *v, prs_struct *ps, int depth)
+{
+ uint32 i_stores_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info4_d");
+ depth++;
+ if (v->ptr0_path) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("path", &v->path, 1, ps, depth))
+ return False;
+ }
+
+ if (v->ptr0_comment) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("comment", &v->comment, 1, ps, depth))
+ return False;
+ }
+
+
+
+
+
+ if (v->ptr0_stores) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_stores", ps, depth, &v->size_stores))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->num_stores) {
+ v->stores = PRS_ALLOC_MEM(ps,NETDFS_DFS_STORAGEINFO,v->num_stores);
+ if (!v->stores) {
+ return False;
+ }
+ } else {
+ v->stores = NULL;
+ }
+ }
+ for (i_stores_1=0; i_stores_1<v->num_stores;i_stores_1++) {
+ if (!netdfs_io_dfs_StorageInfo_p("stores", &v->stores[i_stores_1], ps, depth))
+ return False;
+ }
+ for (i_stores_1=0; i_stores_1<v->num_stores;i_stores_1++) {
+ if (!netdfs_io_dfs_StorageInfo_d("stores", &v->stores[i_stores_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info100(NETDFS_DFS_INFO100 *v, const char *comment)
+{
+ DEBUG(5,("init_netdfs_dfs_Info100\n"));
+
+ if (comment) {
+ v->ptr0_comment = 1;
+ init_unistr2(&v->comment, comment, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_comment = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info100_p(const char *desc, NETDFS_DFS_INFO100 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info100_p");
+ depth++;
+ if (!prs_uint32("ptr0_comment", ps, depth, &v->ptr0_comment))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info100_d(const char *desc, NETDFS_DFS_INFO100 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info100_d");
+ depth++;
+ if (v->ptr0_comment) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("comment", &v->comment, 1, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info101(NETDFS_DFS_INFO101 *v, uint32 state)
+{
+ DEBUG(5,("init_netdfs_dfs_Info101\n"));
+
+ v->state = state;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info101_p(const char *desc, NETDFS_DFS_INFO101 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info101_p");
+ depth++;
+ if (!prs_uint32("state", ps, depth, &v->state))
+ return False;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info101_d(const char *desc, NETDFS_DFS_INFO101 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info101_d");
+ depth++;
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info102(NETDFS_DFS_INFO102 *v, uint32 timeout)
+{
+ DEBUG(5,("init_netdfs_dfs_Info102\n"));
+
+ v->timeout = timeout;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info102_p(const char *desc, NETDFS_DFS_INFO102 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info102_p");
+ depth++;
+ if (!prs_uint32("timeout", ps, depth, &v->timeout))
+ return False;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info102_d(const char *desc, NETDFS_DFS_INFO102 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info102_d");
+ depth++;
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info200(NETDFS_DFS_INFO200 *v, const char *dom_root)
+{
+ DEBUG(5,("init_netdfs_dfs_Info200\n"));
+
+ if (dom_root) {
+ v->ptr0_dom_root = 1;
+ init_unistr2(&v->dom_root, dom_root, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_dom_root = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info200_p(const char *desc, NETDFS_DFS_INFO200 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info200_p");
+ depth++;
+ if (!prs_uint32("ptr0_dom_root", ps, depth, &v->ptr0_dom_root))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info200_d(const char *desc, NETDFS_DFS_INFO200 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info200_d");
+ depth++;
+ if (v->ptr0_dom_root) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("dom_root", &v->dom_root, 1, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_Info300(NETDFS_DFS_INFO300 *v, uint32 flags, const char *dom_root)
+{
+ DEBUG(5,("init_netdfs_dfs_Info300\n"));
+
+ v->flags = flags;
+
+ if (dom_root) {
+ v->ptr0_dom_root = 1;
+ init_unistr2(&v->dom_root, dom_root, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_dom_root = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info300_p(const char *desc, NETDFS_DFS_INFO300 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info300_p");
+ depth++;
+ if (!prs_uint32("flags", ps, depth, &v->flags))
+ return False;
+
+ if (!prs_uint32("ptr0_dom_root", ps, depth, &v->ptr0_dom_root))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info300_d(const char *desc, NETDFS_DFS_INFO300 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_Info300_d");
+ depth++;
+
+ if (v->ptr0_dom_root) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("dom_root", &v->dom_root, 1, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info_p(const char *desc, NETDFS_DFS_INFO_CTR* v, prs_struct *ps, int depth)
+{
+ if (!prs_uint32("switch_value", ps, depth, &v->switch_value))
+ return False;
+
+ switch (v->switch_value) {
+ case 0:
+ depth++;
+ if (!prs_uint32("ptr0_info0", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 1:
+ depth++;
+ if (!prs_uint32("ptr0_info1", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 2:
+ depth++;
+ if (!prs_uint32("ptr0_info2", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 3:
+ depth++;
+ if (!prs_uint32("ptr0_info3", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 4:
+ depth++;
+ if (!prs_uint32("ptr0_info4", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 100:
+ depth++;
+ if (!prs_uint32("ptr0_info100", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 101:
+ depth++;
+ if (!prs_uint32("ptr0_info101", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 102:
+ depth++;
+ if (!prs_uint32("ptr0_info102", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ default:
+ return False;
+
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_Info_d(const char *desc, NETDFS_DFS_INFO_CTR* v, prs_struct *ps, int depth)
+{
+ switch (v->switch_value) {
+ case 0:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 1))
+ return False;
+
+ if (!netdfs_io_dfs_Info0_p("info0", &v->u.info0, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info0_d("info0", &v->u.info0, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 1:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_Info1_p("info1", &v->u.info1, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info1_d("info1", &v->u.info1, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 2:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_Info2_p("info2", &v->u.info2, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info2_d("info2", &v->u.info2, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 3:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_Info3_p("info3", &v->u.info3, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info3_d("info3", &v->u.info3, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 4:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_Info4_p("info4", &v->u.info4, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info4_d("info4", &v->u.info4, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 100:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_Info100_p("info100", &v->u.info100, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info100_d("info100", &v->u.info100, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 101:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_Info101_p("info101", &v->u.info101, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info101_d("info101", &v->u.info101, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 102:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_Info102_p("info102", &v->u.info102, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info102_d("info102", &v->u.info102, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ }
+
+ return True;
+}
+BOOL init_netdfs_dfs_EnumArray1(NETDFS_DFS_ENUMARRAY1 *v, uint32 count, NETDFS_DFS_INFO1 **s)
+{
+ DEBUG(5,("init_netdfs_dfs_EnumArray1\n"));
+
+ v->count = count;
+
+ if (s) {
+ v->ptr0_s = 1;
+ v->s = *s;
+ } else {
+ v->ptr0_s = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray1_p(const char *desc, NETDFS_DFS_ENUMARRAY1 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray1_p");
+ depth++;
+ if (!prs_uint32("count", ps, depth, &v->count))
+ return False;
+
+ if (!prs_uint32("ptr0_s", ps, depth, &v->ptr0_s))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray1_d(const char *desc, NETDFS_DFS_ENUMARRAY1 *v, prs_struct *ps, int depth)
+{
+ uint32 i_s_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray1_d");
+ depth++;
+
+ if (v->ptr0_s) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_s", ps, depth, &v->size_s))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->count) {
+ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO1,v->count);
+ if (!v->s) {
+ return False;
+ }
+ } else {
+ v->s = NULL;
+ }
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info1_p("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info1_d("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_EnumArray2(NETDFS_DFS_ENUMARRAY2 *v, uint32 count, NETDFS_DFS_INFO2 **s)
+{
+ DEBUG(5,("init_netdfs_dfs_EnumArray2\n"));
+
+ v->count = count;
+
+ if (s) {
+ v->ptr0_s = 1;
+ v->s = *s;
+ } else {
+ v->ptr0_s = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray2_p(const char *desc, NETDFS_DFS_ENUMARRAY2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray2_p");
+ depth++;
+ if (!prs_uint32("count", ps, depth, &v->count))
+ return False;
+
+ if (!prs_uint32("ptr0_s", ps, depth, &v->ptr0_s))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray2_d(const char *desc, NETDFS_DFS_ENUMARRAY2 *v, prs_struct *ps, int depth)
+{
+ uint32 i_s_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray2_d");
+ depth++;
+
+ if (v->ptr0_s) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_s", ps, depth, &v->size_s))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->count) {
+ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO2,v->count);
+ if (!v->s) {
+ return False;
+ }
+ } else {
+ v->s = NULL;
+ }
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info2_p("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info2_d("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_EnumArray3(NETDFS_DFS_ENUMARRAY3 *v, uint32 count, NETDFS_DFS_INFO3 **s)
+{
+ DEBUG(5,("init_netdfs_dfs_EnumArray3\n"));
+
+ v->count = count;
+
+ if (s) {
+ v->ptr0_s = 1;
+ v->s = *s;
+ } else {
+ v->ptr0_s = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray3_p(const char *desc, NETDFS_DFS_ENUMARRAY3 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray3_p");
+ depth++;
+ if (!prs_uint32("count", ps, depth, &v->count))
+ return False;
+
+ if (!prs_uint32("ptr0_s", ps, depth, &v->ptr0_s))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray3_d(const char *desc, NETDFS_DFS_ENUMARRAY3 *v, prs_struct *ps, int depth)
+{
+ uint32 i_s_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray3_d");
+ depth++;
+
+ if (v->ptr0_s) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_s", ps, depth, &v->size_s))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->count) {
+ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO3,v->count);
+ if (!v->s) {
+ return False;
+ }
+ } else {
+ v->s = NULL;
+ }
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info3_p("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info3_d("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_EnumArray4(NETDFS_DFS_ENUMARRAY4 *v, uint32 count, NETDFS_DFS_INFO4 **s)
+{
+ DEBUG(5,("init_netdfs_dfs_EnumArray4\n"));
+
+ v->count = count;
+
+ if (s) {
+ v->ptr0_s = 1;
+ v->s = *s;
+ } else {
+ v->ptr0_s = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray4_p(const char *desc, NETDFS_DFS_ENUMARRAY4 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray4_p");
+ depth++;
+ if (!prs_uint32("count", ps, depth, &v->count))
+ return False;
+
+ if (!prs_uint32("ptr0_s", ps, depth, &v->ptr0_s))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray4_d(const char *desc, NETDFS_DFS_ENUMARRAY4 *v, prs_struct *ps, int depth)
+{
+ uint32 i_s_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray4_d");
+ depth++;
+
+ if (v->ptr0_s) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_s", ps, depth, &v->size_s))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->count) {
+ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO4,v->count);
+ if (!v->s) {
+ return False;
+ }
+ } else {
+ v->s = NULL;
+ }
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info4_p("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info4_d("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_EnumArray200(NETDFS_DFS_ENUMARRAY200 *v, uint32 count, NETDFS_DFS_INFO200 **s)
+{
+ DEBUG(5,("init_netdfs_dfs_EnumArray200\n"));
+
+ v->count = count;
+
+ if (s) {
+ v->ptr0_s = 1;
+ v->s = *s;
+ } else {
+ v->ptr0_s = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray200_p(const char *desc, NETDFS_DFS_ENUMARRAY200 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray200_p");
+ depth++;
+ if (!prs_uint32("count", ps, depth, &v->count))
+ return False;
+
+ if (!prs_uint32("ptr0_s", ps, depth, &v->ptr0_s))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray200_d(const char *desc, NETDFS_DFS_ENUMARRAY200 *v, prs_struct *ps, int depth)
+{
+ uint32 i_s_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray200_d");
+ depth++;
+
+ if (v->ptr0_s) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_s", ps, depth, &v->size_s))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->count) {
+ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO200,v->count);
+ if (!v->s) {
+ return False;
+ }
+ } else {
+ v->s = NULL;
+ }
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info200_p("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info200_d("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_dfs_EnumArray300(NETDFS_DFS_ENUMARRAY300 *v, uint32 count, NETDFS_DFS_INFO300 **s)
+{
+ DEBUG(5,("init_netdfs_dfs_EnumArray300\n"));
+
+ v->count = count;
+
+ if (s) {
+ v->ptr0_s = 1;
+ v->s = *s;
+ } else {
+ v->ptr0_s = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray300_p(const char *desc, NETDFS_DFS_ENUMARRAY300 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray300_p");
+ depth++;
+ if (!prs_uint32("count", ps, depth, &v->count))
+ return False;
+
+ if (!prs_uint32("ptr0_s", ps, depth, &v->ptr0_s))
+ return False;
+
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumArray300_d(const char *desc, NETDFS_DFS_ENUMARRAY300 *v, prs_struct *ps, int depth)
+{
+ uint32 i_s_1;
+
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumArray300_d");
+ depth++;
+
+ if (v->ptr0_s) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("size_s", ps, depth, &v->size_s))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ if (v->count) {
+ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO300,v->count);
+ if (!v->s) {
+ return False;
+ }
+ } else {
+ v->s = NULL;
+ }
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info300_p("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ for (i_s_1=0; i_s_1<v->count;i_s_1++) {
+ if (!netdfs_io_dfs_Info300_d("s", &v->s[i_s_1], ps, depth))
+ return False;
+ }
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumInfo_p(const char *desc, NETDFS_DFS_ENUMINFO_CTR* v, prs_struct *ps, int depth)
+{
+ if (!prs_uint32("switch_value", ps, depth, &v->switch_value))
+ return False;
+
+ switch (v->switch_value) {
+ case 1:
+ depth++;
+ if (!prs_uint32("ptr0_info1", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 2:
+ depth++;
+ if (!prs_uint32("ptr0_info2", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 3:
+ depth++;
+ if (!prs_uint32("ptr0_info3", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 4:
+ depth++;
+ if (!prs_uint32("ptr0_info4", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 200:
+ depth++;
+ if (!prs_uint32("ptr0_info200", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ case 300:
+ depth++;
+ if (!prs_uint32("ptr0_info300", ps, depth, &v->ptr0))
+ return False;
+
+ depth--;
+ break;
+
+ default:
+ return False;
+
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumInfo_d(const char *desc, NETDFS_DFS_ENUMINFO_CTR* v, prs_struct *ps, int depth)
+{
+ switch (v->switch_value) {
+ case 1:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_EnumArray1_p("info1", &v->u.info1, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumArray1_d("info1", &v->u.info1, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 2:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_EnumArray2_p("info2", &v->u.info2, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumArray2_d("info2", &v->u.info2, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 3:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_EnumArray3_p("info3", &v->u.info3, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumArray3_d("info3", &v->u.info3, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 4:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_EnumArray4_p("info4", &v->u.info4, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumArray4_d("info4", &v->u.info4, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 200:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_EnumArray200_p("info200", &v->u.info200, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumArray200_d("info200", &v->u.info200, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ case 300:
+ depth++;
+ if (v->ptr0) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_EnumArray300_p("info300", &v->u.info300, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumArray300_d("info300", &v->u.info300, ps, depth))
+ return False;
+ }
+ depth--;
+ break;
+
+ }
+
+ return True;
+}
+BOOL init_netdfs_dfs_EnumStruct(NETDFS_DFS_ENUMSTRUCT *v, uint32 level, NETDFS_DFS_ENUMINFO_CTR e)
+{
+ DEBUG(5,("init_netdfs_dfs_EnumStruct\n"));
+
+ v->level = level;
+
+ v->e = e;
+ v->e.switch_value = v->level;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumStruct_p(const char *desc, NETDFS_DFS_ENUMSTRUCT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumStruct_p");
+ depth++;
+ if (!prs_uint32("level", ps, depth, &v->level))
+ return False;
+
+ if (!netdfs_io_dfs_EnumInfo_p("e", &v->e, ps, depth))
+ return False;
+
+ return True;
+}
+
+BOOL netdfs_io_dfs_EnumStruct_d(const char *desc, NETDFS_DFS_ENUMSTRUCT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_dfs_EnumStruct_d");
+ depth++;
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!netdfs_io_dfs_EnumInfo_d("e", &v->e, ps, depth))
+ return False;
+
+ return True;
+}
+
+/* netdfs functions */
+BOOL init_netdfs_q_dfs_GetManagerVersion(NETDFS_Q_DFS_GETMANAGERVERSION *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_GetManagerVersion\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_GetManagerVersion(const char *desc, NETDFS_Q_DFS_GETMANAGERVERSION *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_GetManagerVersion");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_GetManagerVersion(NETDFS_R_DFS_GETMANAGERVERSION *v, uint32 *exist_flag)
+{
+ DEBUG(5,("init_netdfs_r_dfs_GetManagerVersion\n"));
+
+ if (!exist_flag)
+ return False;
+
+ v->exist_flag = *exist_flag;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_GetManagerVersion(const char *desc, NETDFS_R_DFS_GETMANAGERVERSION *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_GetManagerVersion");
+ depth++;
+ if (!prs_uint32("exist_flag", ps, depth, &v->exist_flag))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_Add(NETDFS_Q_DFS_ADD *v, const char *path, const char *server, const char *share, const char *comment, uint32 flags)
+{
+ DEBUG(5,("init_netdfs_q_dfs_Add\n"));
+
+ if (!path)
+ return False;
+
+ init_unistr2(&v->path, path, UNI_FLAGS_NONE);
+
+ if (!server)
+ return False;
+
+ init_unistr2(&v->server, server, UNI_FLAGS_NONE);
+
+ if (share) {
+ v->ptr0_share = 1;
+ init_unistr2(&v->share, share, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_share = 0;
+ }
+
+ if (comment) {
+ v->ptr0_comment = 1;
+ init_unistr2(&v->comment, comment, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_comment = 0;
+ }
+
+ v->flags = flags;
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_Add(const char *desc, NETDFS_Q_DFS_ADD *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_Add");
+ depth++;
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("path", &v->path, 1, ps, depth))
+ return False;
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("server", &v->server, 1, ps, depth))
+ return False;
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_share", ps, depth, &v->ptr0_share))
+ return False;
+
+ if (v->ptr0_share) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("share", &v->share, 1, ps, depth))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_comment", ps, depth, &v->ptr0_comment))
+ return False;
+
+ if (v->ptr0_comment) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("comment", &v->comment, 1, ps, depth))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("flags", ps, depth, &v->flags))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_Add(NETDFS_R_DFS_ADD *v, const char *path, const char *server, const char *share, const char *comment, uint32 flags, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_Add\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_Add(const char *desc, NETDFS_R_DFS_ADD *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_Add");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_Remove(NETDFS_Q_DFS_REMOVE *v, const char *path, const char *server, const char *share)
+{
+ DEBUG(5,("init_netdfs_q_dfs_Remove\n"));
+
+ if (!path)
+ return False;
+
+ init_unistr2(&v->path, path, UNI_FLAGS_NONE);
+
+ if (server) {
+ v->ptr0_server = 1;
+ init_unistr2(&v->server, server, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_server = 0;
+ }
+
+ if (share) {
+ v->ptr0_share = 1;
+ init_unistr2(&v->share, share, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_share = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_Remove(const char *desc, NETDFS_Q_DFS_REMOVE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_Remove");
+ depth++;
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("path", &v->path, 1, ps, depth))
+ return False;
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_server", ps, depth, &v->ptr0_server))
+ return False;
+
+ if (v->ptr0_server) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("server", &v->server, 1, ps, depth))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_share", ps, depth, &v->ptr0_share))
+ return False;
+
+ if (v->ptr0_share) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("share", &v->share, 1, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_Remove(NETDFS_R_DFS_REMOVE *v, const char *path, const char *server, const char *share, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_Remove\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_Remove(const char *desc, NETDFS_R_DFS_REMOVE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_Remove");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_SetInfo(NETDFS_Q_DFS_SETINFO *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_SetInfo\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_SetInfo(const char *desc, NETDFS_Q_DFS_SETINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_SetInfo");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_SetInfo(NETDFS_R_DFS_SETINFO *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_SetInfo\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_SetInfo(const char *desc, NETDFS_R_DFS_SETINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_SetInfo");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_GetInfo(NETDFS_Q_DFS_GETINFO *v, const char *path, const char *server, const char *share, uint32 level)
+{
+ DEBUG(5,("init_netdfs_q_dfs_GetInfo\n"));
+
+ if (!path)
+ return False;
+
+ init_unistr2(&v->path, path, UNI_FLAGS_NONE);
+
+ if (server) {
+ v->ptr0_server = 1;
+ init_unistr2(&v->server, server, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_server = 0;
+ }
+
+ if (share) {
+ v->ptr0_share = 1;
+ init_unistr2(&v->share, share, UNI_FLAGS_NONE);
+ } else {
+ v->ptr0_share = 0;
+ }
+
+ v->level = level;
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_GetInfo(const char *desc, NETDFS_Q_DFS_GETINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_GetInfo");
+ depth++;
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("path", &v->path, 1, ps, depth))
+ return False;
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_server", ps, depth, &v->ptr0_server))
+ return False;
+
+ if (v->ptr0_server) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("server", &v->server, 1, ps, depth))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_share", ps, depth, &v->ptr0_share))
+ return False;
+
+ if (v->ptr0_share) {
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!smb_io_unistr2("share", &v->share, 1, ps, depth))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("level", ps, depth, &v->level))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_GetInfo(NETDFS_R_DFS_GETINFO *v, const char *path, const char *server, const char *share, uint32 level, NETDFS_DFS_INFO_CTR *info, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_GetInfo\n"));
+
+ if (!info)
+ return False;
+
+ v->info = *info;
+ v->info.switch_value = level;
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_GetInfo(const char *desc, NETDFS_R_DFS_GETINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_GetInfo");
+ depth++;
+ if (!netdfs_io_dfs_Info_p("info", &v->info, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_Info_d("info", &v->info, ps, depth))
+ return False;
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_Enum(NETDFS_Q_DFS_ENUM *v, uint32 level, uint32 bufsize, NETDFS_DFS_ENUMSTRUCT *info, uint32 *total)
+{
+ DEBUG(5,("init_netdfs_q_dfs_Enum\n"));
+
+ v->level = level;
+
+ v->bufsize = bufsize;
+
+ if (info) {
+ v->ptr0_info = 1;
+ v->info = *info;
+ } else {
+ v->ptr0_info = 0;
+ }
+
+ if (total) {
+ v->ptr0_total = 1;
+ v->total = *total;
+ } else {
+ v->ptr0_total = 0;
+ }
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_Enum(const char *desc, NETDFS_Q_DFS_ENUM *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_Enum");
+ depth++;
+ if (!prs_uint32("level", ps, depth, &v->level))
+ return False;
+
+ if (!prs_uint32("bufsize", ps, depth, &v->bufsize))
+ return False;
+
+ if (!prs_uint32("ptr0_info", ps, depth, &v->ptr0_info))
+ return False;
+
+ if (v->ptr0_info) {
+ if (!netdfs_io_dfs_EnumStruct_p("info", &v->info, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumStruct_d("info", &v->info, ps, depth))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_total", ps, depth, &v->ptr0_total))
+ return False;
+
+ if (v->ptr0_total) {
+ if (!prs_uint32("total", ps, depth, &v->total))
+ return False;
+ }
+
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_Enum(NETDFS_R_DFS_ENUM *v, uint32 level, uint32 bufsize, NETDFS_DFS_ENUMSTRUCT *info, uint32 *unknown, uint32 *total, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_Enum\n"));
+
+ if (info) {
+ v->ptr0_info = 1;
+ v->info = *info;
+ } else {
+ v->ptr0_info = 0;
+ }
+
+ if (total) {
+ v->ptr0_total = 1;
+ v->total = *total;
+ } else {
+ v->ptr0_total = 0;
+ }
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_Enum(const char *desc, NETDFS_R_DFS_ENUM *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_Enum");
+ depth++;
+ if (!prs_uint32("ptr0_info", ps, depth, &v->ptr0_info))
+ return False;
+
+ if (v->ptr0_info) {
+ if (!netdfs_io_dfs_EnumStruct_p("info", &v->info, ps, depth))
+ return False;
+ if (!netdfs_io_dfs_EnumStruct_d("info", &v->info, ps, depth))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_uint32("ptr0_total", ps, depth, &v->ptr0_total))
+ return False;
+
+ if (v->ptr0_total) {
+ if (!prs_uint32("total", ps, depth, &v->total))
+ return False;
+ }
+
+ if (!prs_align_custom(ps, 4))
+ return False;
+
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_Rename(NETDFS_Q_DFS_RENAME *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_Rename\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_Rename(const char *desc, NETDFS_Q_DFS_RENAME *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_Rename");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_Rename(NETDFS_R_DFS_RENAME *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_Rename\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_Rename(const char *desc, NETDFS_R_DFS_RENAME *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_Rename");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_Move(NETDFS_Q_DFS_MOVE *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_Move\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_Move(const char *desc, NETDFS_Q_DFS_MOVE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_Move");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_Move(NETDFS_R_DFS_MOVE *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_Move\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_Move(const char *desc, NETDFS_R_DFS_MOVE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_Move");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_ManagerGetConfigInfo(NETDFS_Q_DFS_MANAGERGETCONFIGINFO *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_ManagerGetConfigInfo\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_ManagerGetConfigInfo(const char *desc, NETDFS_Q_DFS_MANAGERGETCONFIGINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_ManagerGetConfigInfo");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_ManagerGetConfigInfo(NETDFS_R_DFS_MANAGERGETCONFIGINFO *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_ManagerGetConfigInfo\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_ManagerGetConfigInfo(const char *desc, NETDFS_R_DFS_MANAGERGETCONFIGINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_ManagerGetConfigInfo");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_ManagerSendSiteInfo(NETDFS_Q_DFS_MANAGERSENDSITEINFO *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_ManagerSendSiteInfo\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_ManagerSendSiteInfo(const char *desc, NETDFS_Q_DFS_MANAGERSENDSITEINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_ManagerSendSiteInfo");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_ManagerSendSiteInfo(NETDFS_R_DFS_MANAGERSENDSITEINFO *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_ManagerSendSiteInfo\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_ManagerSendSiteInfo(const char *desc, NETDFS_R_DFS_MANAGERSENDSITEINFO *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_ManagerSendSiteInfo");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_AddFtRoot(NETDFS_Q_DFS_ADDFTROOT *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_AddFtRoot\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_AddFtRoot(const char *desc, NETDFS_Q_DFS_ADDFTROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_AddFtRoot");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_AddFtRoot(NETDFS_R_DFS_ADDFTROOT *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_AddFtRoot\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_AddFtRoot(const char *desc, NETDFS_R_DFS_ADDFTROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_AddFtRoot");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_RemoveFtRoot(NETDFS_Q_DFS_REMOVEFTROOT *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_RemoveFtRoot\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_RemoveFtRoot(const char *desc, NETDFS_Q_DFS_REMOVEFTROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_RemoveFtRoot");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_RemoveFtRoot(NETDFS_R_DFS_REMOVEFTROOT *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_RemoveFtRoot\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_RemoveFtRoot(const char *desc, NETDFS_R_DFS_REMOVEFTROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_RemoveFtRoot");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_AddStdRoot(NETDFS_Q_DFS_ADDSTDROOT *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_AddStdRoot\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_AddStdRoot(const char *desc, NETDFS_Q_DFS_ADDSTDROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_AddStdRoot");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_AddStdRoot(NETDFS_R_DFS_ADDSTDROOT *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_AddStdRoot\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_AddStdRoot(const char *desc, NETDFS_R_DFS_ADDSTDROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_AddStdRoot");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_RemoveStdRoot(NETDFS_Q_DFS_REMOVESTDROOT *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_RemoveStdRoot\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_RemoveStdRoot(const char *desc, NETDFS_Q_DFS_REMOVESTDROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_RemoveStdRoot");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_RemoveStdRoot(NETDFS_R_DFS_REMOVESTDROOT *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_RemoveStdRoot\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_RemoveStdRoot(const char *desc, NETDFS_R_DFS_REMOVESTDROOT *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_RemoveStdRoot");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_ManagerInitialize(NETDFS_Q_DFS_MANAGERINITIALIZE *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_ManagerInitialize\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_ManagerInitialize(const char *desc, NETDFS_Q_DFS_MANAGERINITIALIZE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_ManagerInitialize");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_ManagerInitialize(NETDFS_R_DFS_MANAGERINITIALIZE *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_ManagerInitialize\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_ManagerInitialize(const char *desc, NETDFS_R_DFS_MANAGERINITIALIZE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_ManagerInitialize");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_AddStdRootForced(NETDFS_Q_DFS_ADDSTDROOTFORCED *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_AddStdRootForced\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_AddStdRootForced(const char *desc, NETDFS_Q_DFS_ADDSTDROOTFORCED *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_AddStdRootForced");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_AddStdRootForced(NETDFS_R_DFS_ADDSTDROOTFORCED *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_AddStdRootForced\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_AddStdRootForced(const char *desc, NETDFS_R_DFS_ADDSTDROOTFORCED *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_AddStdRootForced");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_GetDcAddress(NETDFS_Q_DFS_GETDCADDRESS *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_GetDcAddress\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_GetDcAddress(const char *desc, NETDFS_Q_DFS_GETDCADDRESS *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_GetDcAddress");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_GetDcAddress(NETDFS_R_DFS_GETDCADDRESS *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_GetDcAddress\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_GetDcAddress(const char *desc, NETDFS_R_DFS_GETDCADDRESS *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_GetDcAddress");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_SetDcAddress(NETDFS_Q_DFS_SETDCADDRESS *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_SetDcAddress\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_SetDcAddress(const char *desc, NETDFS_Q_DFS_SETDCADDRESS *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_SetDcAddress");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_SetDcAddress(NETDFS_R_DFS_SETDCADDRESS *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_SetDcAddress\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_SetDcAddress(const char *desc, NETDFS_R_DFS_SETDCADDRESS *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_SetDcAddress");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_FlushFtTable(NETDFS_Q_DFS_FLUSHFTTABLE *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_FlushFtTable\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_FlushFtTable(const char *desc, NETDFS_Q_DFS_FLUSHFTTABLE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_FlushFtTable");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_FlushFtTable(NETDFS_R_DFS_FLUSHFTTABLE *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_FlushFtTable\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_FlushFtTable(const char *desc, NETDFS_R_DFS_FLUSHFTTABLE *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_FlushFtTable");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_Add2(NETDFS_Q_DFS_ADD2 *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_Add2\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_Add2(const char *desc, NETDFS_Q_DFS_ADD2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_Add2");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_Add2(NETDFS_R_DFS_ADD2 *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_Add2\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_Add2(const char *desc, NETDFS_R_DFS_ADD2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_Add2");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_Remove2(NETDFS_Q_DFS_REMOVE2 *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_Remove2\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_Remove2(const char *desc, NETDFS_Q_DFS_REMOVE2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_Remove2");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_Remove2(NETDFS_R_DFS_REMOVE2 *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_Remove2\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_Remove2(const char *desc, NETDFS_R_DFS_REMOVE2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_Remove2");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_EnumEx(NETDFS_Q_DFS_ENUMEX *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_EnumEx\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_EnumEx(const char *desc, NETDFS_Q_DFS_ENUMEX *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_EnumEx");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_EnumEx(NETDFS_R_DFS_ENUMEX *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_EnumEx\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_EnumEx(const char *desc, NETDFS_R_DFS_ENUMEX *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_EnumEx");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
+BOOL init_netdfs_q_dfs_SetInfo2(NETDFS_Q_DFS_SETINFO2 *v)
+{
+ DEBUG(5,("init_netdfs_q_dfs_SetInfo2\n"));
+
+ return True;
+}
+
+BOOL netdfs_io_q_dfs_SetInfo2(const char *desc, NETDFS_Q_DFS_SETINFO2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_q_dfs_SetInfo2");
+ depth++;
+ return True;
+}
+
+BOOL init_netdfs_r_dfs_SetInfo2(NETDFS_R_DFS_SETINFO2 *v, WERROR status)
+{
+ DEBUG(5,("init_netdfs_r_dfs_SetInfo2\n"));
+
+ v->status = status;
+
+ return True;
+}
+
+BOOL netdfs_io_r_dfs_SetInfo2(const char *desc, NETDFS_R_DFS_SETINFO2 *v, prs_struct *ps, int depth)
+{
+ if (v == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "netdfs_io_r_dfs_SetInfo2");
+ depth++;
+ if (!prs_werror("status", ps, depth, &v->status))
+ return False;
+
+ return True;
+}
+
diff --git a/source/rpc_parse/parse_echo.c b/source/rpc_parse/parse_echo.c
new file mode 100644
index 00000000000..48dda7b1715
--- /dev/null
+++ b/source/rpc_parse/parse_echo.c
@@ -0,0 +1,164 @@
+/*
+ * Unix SMB/CIFS implementation.
+ *
+ * RPC Pipe client / server routines
+ *
+ * Copyright (C) Tim Potter 2003
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_PARSE
+
+void init_echo_q_add_one(ECHO_Q_ADD_ONE *q_d, uint32 request)
+{
+ q_d->request = request;
+}
+
+BOOL echo_io_q_add_one(const char *desc, ECHO_Q_ADD_ONE *q_d,
+ prs_struct *ps, int depth)
+{
+ if (!prs_uint32("request", ps, 0, &q_d->request))
+ return False;
+
+ return True;
+}
+
+BOOL echo_io_r_add_one(const char *desc, ECHO_R_ADD_ONE *q_d,
+ prs_struct *ps, int depth)
+{
+ if (!prs_uint32("response", ps, 0, &q_d->response))
+ return False;
+
+ return True;
+}
+
+
+void init_echo_q_echo_data(ECHO_Q_ECHO_DATA *q_d, uint32 size, char *data)
+{
+ q_d->size = size;
+ q_d->data = data;
+}
+
+BOOL echo_io_q_echo_data(const char *desc, ECHO_Q_ECHO_DATA *q_d,
+ prs_struct *ps, int depth)
+{
+ if (!prs_uint32("size", ps, depth, &q_d->size))
+ return False;
+
+ if (!prs_uint32("size", ps, depth, &q_d->size))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
+
+ if (!q_d->data)
+ return False;
+ }
+
+ if (!prs_uint8s(False, "data", ps, depth, (unsigned char *)q_d->data, q_d->size))
+ return False;
+
+ return True;
+}
+
+BOOL echo_io_r_echo_data(const char *desc, ECHO_R_ECHO_DATA *q_d,
+ prs_struct *ps, int depth)
+{
+ if (!prs_uint32("size", ps, 0, &q_d->size))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
+
+ if (!q_d->data)
+ return False;
+ }
+
+ if (!prs_uint8s(False, "data", ps, depth, (unsigned char *)q_d->data, q_d->size))
+ return False;
+
+ return True;
+}
+
+void init_echo_q_sink_data(ECHO_Q_SINK_DATA *q_d, uint32 size, char *data)
+{
+ q_d->size = size;
+ q_d->data = data;
+}
+
+BOOL echo_io_q_sink_data(const char *desc, ECHO_Q_SINK_DATA *q_d,
+ prs_struct *ps, int depth)
+{
+ if (!prs_uint32("size", ps, depth, &q_d->size))
+ return False;
+
+ if (!prs_uint32("size", ps, depth, &q_d->size))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
+
+ if (!q_d->data)
+ return False;
+ }
+
+ if (!prs_uint8s(False, "data", ps, depth, (unsigned char *)q_d->data, q_d->size))
+ return False;
+
+ return True;
+}
+
+BOOL echo_io_r_sink_data(const char *desc, ECHO_R_SINK_DATA *q_d,
+ prs_struct *ps, int depth)
+{
+ return True;
+}
+
+void init_echo_q_source_data(ECHO_Q_SOURCE_DATA *q_d, uint32 size)
+{
+ q_d->size = size;
+}
+
+BOOL echo_io_q_source_data(const char *desc, ECHO_Q_SOURCE_DATA *q_d,
+ prs_struct *ps, int depth)
+{
+ if (!prs_uint32("size", ps, depth, &q_d->size))
+ return False;
+
+ return True;
+}
+
+BOOL echo_io_r_source_data(const char *desc, ECHO_R_SOURCE_DATA *q_d,
+ prs_struct *ps, int depth)
+{
+ if (!prs_uint32("size", ps, 0, &q_d->size))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
+
+ if (!q_d->data)
+ return False;
+ }
+
+ if (!prs_uint8s(False, "data", ps, depth, (unsigned char *)q_d->data, q_d->size))
+ return False;
+
+ return True;
+}
diff --git a/source/rpc_parse/parse_eventlog.c b/source/rpc_parse/parse_eventlog.c
index 2c2ce12acb5..436f35aff6a 100644
--- a/source/rpc_parse/parse_eventlog.c
+++ b/source/rpc_parse/parse_eventlog.c
@@ -174,6 +174,45 @@ BOOL eventlog_io_r_get_oldest_entry(const char *desc, EVENTLOG_R_GET_OLDEST_ENTR
return True;
}
+BOOL eventlog_io_q_close_eventlog(const char *desc, EVENTLOG_Q_CLOSE_EVENTLOG *q_u,
+ prs_struct *ps, int depth)
+{
+ if(q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "eventlog_io_q_close_eventlog");
+ depth++;
+
+ if(!(prs_align(ps)))
+ return False;
+
+ if(!(smb_io_pol_hnd("log handle", &(q_u->handle), ps, depth)))
+ return False;
+
+ return True;
+}
+
+BOOL eventlog_io_r_close_eventlog(const char *desc, EVENTLOG_R_CLOSE_EVENTLOG *r_u,
+ prs_struct *ps, int depth)
+{
+ if(r_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "eventlog_io_r_close_eventlog");
+ depth++;
+
+ if(!(prs_align(ps)))
+ return False;
+
+ if(!(smb_io_pol_hnd("log handle", &(r_u->handle), ps, depth)))
+ return False;
+
+ if(!(prs_ntstatus("status code", ps, depth, &r_u->status)))
+ return False;
+
+ return True;
+}
+
BOOL eventlog_io_q_read_eventlog(const char *desc, EVENTLOG_Q_READ_EVENTLOG *q_u,
prs_struct *ps, int depth)
{
diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c
index afa138ca1ee..0c07e7fe221 100644
--- a/source/rpc_parse/parse_lsa.c
+++ b/source/rpc_parse/parse_lsa.c
@@ -1567,8 +1567,7 @@ makes a structure.
********************************************************************/
void init_q_lookup_names(TALLOC_CTX *mem_ctx, LSA_Q_LOOKUP_NAMES *q_l,
- POLICY_HND *hnd, int num_names, const char **names,
- int level)
+ POLICY_HND *hnd, int num_names, const char **names)
{
unsigned int i;
@@ -1579,7 +1578,7 @@ void init_q_lookup_names(TALLOC_CTX *mem_ctx, LSA_Q_LOOKUP_NAMES *q_l,
q_l->pol = *hnd;
q_l->num_entries = num_names;
q_l->num_entries2 = num_names;
- q_l->lookup_level = level;
+ q_l->lookup_level = 1;
if (num_names) {
if ((q_l->uni_name = TALLOC_ZERO_ARRAY(mem_ctx, UNISTR2, num_names)) == NULL) {
@@ -3216,7 +3215,7 @@ void init_q_enum_acct_rights(LSA_Q_ENUM_ACCT_RIGHTS *in,
NTSTATUS init_r_enum_acct_rights( LSA_R_ENUM_ACCT_RIGHTS *out, PRIVILEGE_SET *privileges )
{
uint32 i;
- const char *privname;
+ char *privname;
const char **privname_array = NULL;
int num_priv = 0;
diff --git a/source/rpc_parse/parse_misc.c b/source/rpc_parse/parse_misc.c
index 848fdae5e0e..9fa7c7d674d 100644
--- a/source/rpc_parse/parse_misc.c
+++ b/source/rpc_parse/parse_misc.c
@@ -66,7 +66,7 @@ TALLOC_CTX *main_loop_talloc_get(void)
if (!main_loop_talloc) {
main_loop_talloc = talloc_init("main loop talloc (mainly parse_misc)");
if (!main_loop_talloc)
- smb_panic("main_loop_talloc: malloc fail");
+ smb_panic("main_loop_talloc: malloc fail\n");
}
return main_loop_talloc;
@@ -124,7 +124,7 @@ BOOL smb_io_time(const char *desc, NTTIME *nttime, prs_struct *ps, int depth)
if(!prs_align(ps))
return False;
-
+
if (MARSHALLING(ps)) {
low = *nttime & 0xFFFFFFFF;
high = *nttime >> 32;
@@ -152,6 +152,53 @@ BOOL smb_io_nttime(const char *desc, prs_struct *ps, int depth, NTTIME *nttime)
}
/*******************************************************************
+ Gets an enumeration handle from an ENUM_HND structure.
+********************************************************************/
+
+uint32 get_enum_hnd(ENUM_HND *enh)
+{
+ return (enh && enh->ptr_hnd != 0) ? enh->handle : 0;
+}
+
+/*******************************************************************
+ Inits an ENUM_HND structure.
+********************************************************************/
+
+void init_enum_hnd(ENUM_HND *enh, uint32 hnd)
+{
+ DEBUG(5,("smb_io_enum_hnd\n"));
+
+ enh->ptr_hnd = (hnd != 0) ? 1 : 0;
+ enh->handle = hnd;
+}
+
+/*******************************************************************
+ Reads or writes an ENUM_HND structure.
+********************************************************************/
+
+BOOL smb_io_enum_hnd(const char *desc, ENUM_HND *hnd, prs_struct *ps, int depth)
+{
+ if (hnd == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "smb_io_enum_hnd");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_hnd", ps, depth, &hnd->ptr_hnd)) /* pointer */
+ return False;
+
+ if (hnd->ptr_hnd != 0) {
+ if(!prs_uint32("handle ", ps, depth, &hnd->handle )) /* enum handle */
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
Reads or writes a DOM_SID structure.
********************************************************************/
@@ -452,7 +499,7 @@ void init_unistr(UNISTR *str, const char *buf)
if (len) {
str->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, len);
if (str->buffer == NULL)
- smb_panic("init_unistr: malloc fail");
+ smb_panic("init_unistr: malloc fail\n");
rpcstr_push(str->buffer, buf, len*sizeof(uint16), STR_TERMINATE);
} else {
@@ -488,7 +535,7 @@ static void create_rpc_blob(RPC_DATA_BLOB *str, size_t len)
if (len) {
str->buffer = (uint8 *)TALLOC_ZERO(get_talloc_ctx(), len);
if (str->buffer == NULL)
- smb_panic("create_rpc_blob: talloc fail");
+ smb_panic("create_rpc_blob: talloc fail\n");
str->buf_len = len;
} else {
str->buffer = NULL;
@@ -595,7 +642,7 @@ void init_regval_buffer(REGVAL_BUFFER *str, const uint8 *buf, size_t len)
str->buffer = (uint16 *)TALLOC_ZERO(get_talloc_ctx(),
str->buf_max_len);
if (str->buffer == NULL)
- smb_panic("init_regval_buffer: talloc fail");
+ smb_panic("init_regval_buffer: talloc fail\n");
memcpy(str->buffer, buf, str->buf_len);
}
}
@@ -671,7 +718,7 @@ void copy_unistr2(UNISTR2 *str, const UNISTR2 *from)
if (str->uni_max_len) {
str->buffer = (uint16 *)TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, str->uni_max_len);
if ((str->buffer == NULL)) {
- smb_panic("copy_unistr2: talloc fail");
+ smb_panic("copy_unistr2: talloc fail\n");
return;
}
/* copy the string */
@@ -705,7 +752,7 @@ void init_string2(STRING2 *str, const char *buf, size_t max_len, size_t str_len)
str->buffer = (uint8 *)TALLOC_ZERO(get_talloc_ctx(),
str->str_max_len);
if (str->buffer == NULL)
- smb_panic("init_string2: malloc fail");
+ smb_panic("init_string2: malloc fail\n");
memcpy(str->buffer, buf, str_len);
}
}
@@ -781,7 +828,7 @@ void init_unistr2(UNISTR2 *str, const char *buf, enum unistr2_term_codes flags)
str->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, len);
if (str->buffer == NULL) {
- smb_panic("init_unistr2: malloc fail");
+ smb_panic("init_unistr2: malloc fail\n");
return;
}
@@ -817,7 +864,7 @@ void init_unistr4(UNISTR4 *uni4, const char *buf, enum unistr2_term_codes flags)
{
uni4->string = TALLOC_P( get_talloc_ctx(), UNISTR2 );
if (!uni4->string) {
- smb_panic("init_unistr4: talloc fail");
+ smb_panic("init_unistr4: talloc fail\n");
return;
}
init_unistr2( uni4->string, buf, flags );
@@ -830,7 +877,7 @@ void init_unistr4_w( TALLOC_CTX *ctx, UNISTR4 *uni4, const smb_ucs2_t *buf )
{
uni4->string = TALLOC_P( ctx, UNISTR2 );
if (!uni4->string) {
- smb_panic("init_unistr4_w: talloc fail");
+ smb_panic("init_unistr4_w: talloc fail\n");
return;
}
init_unistr2_w( ctx, uni4->string, buf );
@@ -860,7 +907,7 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf)
if (len + 1) {
str->buffer = TALLOC_ZERO_ARRAY(ctx, uint16, len + 1);
if (str->buffer == NULL) {
- smb_panic("init_unistr2_w: talloc fail");
+ smb_panic("init_unistr2_w: talloc fail\n");
return;
}
} else {
@@ -916,7 +963,7 @@ void init_unistr2_from_unistr(UNISTR2 *to, const UNISTR *from)
if (i) {
to->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, i);
if (to->buffer == NULL)
- smb_panic("init_unistr2_from_unistr: malloc fail");
+ smb_panic("init_unistr2_from_unistr: malloc fail\n");
memcpy(to->buffer, from->buffer, i*sizeof(uint16));
} else {
to->buffer = NULL;
@@ -945,7 +992,7 @@ void init_unistr2_from_datablob(UNISTR2 *str, DATA_BLOB *blob)
str->buffer = NULL;
}
if ((str->buffer == NULL) && (blob->length > 0)) {
- smb_panic("init_unistr2_from_datablob: malloc fail");
+ smb_panic("init_unistr2_from_datablob: malloc fail\n");
}
}
@@ -1337,8 +1384,7 @@ void init_dom_rid4(DOM_RID4 *rid4, uint16 unknown, uint16 attr, uint32 rid)
Inits a DOM_CLNT_SRV structure.
********************************************************************/
-void init_clnt_srv(DOM_CLNT_SRV *logcln, const char *logon_srv,
- const char *comp_name)
+static void init_clnt_srv(DOM_CLNT_SRV *logcln, const char *logon_srv, const char *comp_name)
{
DEBUG(5,("init_clnt_srv: %d\n", __LINE__));
@@ -1710,7 +1756,7 @@ void init_unistr3(UNISTR3 *str, const char *buf)
if (str->uni_str_len) {
str->str.buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, str->uni_str_len);
if (str->str.buffer == NULL)
- smb_panic("init_unistr3: malloc fail");
+ smb_panic("init_unistr3: malloc fail\n");
rpcstr_push((char *)str->str.buffer, buf, str->uni_str_len * sizeof(uint16), STR_TERMINATE);
} else {
diff --git a/source/rpc_parse/parse_net.c b/source/rpc_parse/parse_net.c
index 15bf2b3283d..5837ee6fd84 100644
--- a/source/rpc_parse/parse_net.c
+++ b/source/rpc_parse/parse_net.c
@@ -566,90 +566,6 @@ BOOL net_io_r_getanydcname(const char *desc, NET_R_GETANYDCNAME *r_t, prs_struct
return True;
}
-
-/*******************************************************************
- Inits an NET_R_GETDCNAME structure.
-********************************************************************/
-void init_net_q_getdcname(NET_Q_GETDCNAME *r_t, const char *logon_server,
- const char *domainname)
-{
- DEBUG(5,("init_q_getdcname\n"));
-
- init_unistr2(&r_t->uni_logon_server, logon_server, UNI_STR_TERMINATE);
- r_t->ptr_domainname = (domainname != NULL);
- init_unistr2(&r_t->uni_domainname, domainname, UNI_STR_TERMINATE);
-}
-
-/*******************************************************************
- Reads or writes an NET_Q_GETDCNAME structure.
-********************************************************************/
-
-BOOL net_io_q_getdcname(const char *desc, NET_Q_GETDCNAME *r_t, prs_struct *ps,
- int depth)
-{
- if (r_t == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "net_io_q_getdcname");
- depth++;
-
- if (!smb_io_unistr2("logon_server", &r_t->uni_logon_server,
- 1, ps, depth))
- return False;
-
- if (!prs_align(ps))
- return False;
-
- if (!prs_uint32("ptr_domainname", ps, depth, &r_t->ptr_domainname))
- return False;
-
- if (!smb_io_unistr2("domainname", &r_t->uni_domainname,
- r_t->ptr_domainname, ps, depth))
- return False;
-
- return True;
-}
-
-
-/*******************************************************************
- Inits an NET_R_GETDCNAME structure.
-********************************************************************/
-void init_net_r_getdcname(NET_R_GETDCNAME *r_t, const char *dcname)
-{
- DEBUG(5,("init_r_getdcname\n"));
-
- init_unistr2(&r_t->uni_dcname, dcname, UNI_STR_TERMINATE);
-}
-
-/*******************************************************************
- Reads or writes an NET_R_GETDCNAME structure.
-********************************************************************/
-
-BOOL net_io_r_getdcname(const char *desc, NET_R_GETDCNAME *r_t, prs_struct *ps,
- int depth)
-{
- if (r_t == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "net_io_r_getdcname");
- depth++;
-
- if (!prs_uint32("ptr_dcname", ps, depth, &r_t->ptr_dcname))
- return False;
-
- if (!smb_io_unistr2("dcname", &r_t->uni_dcname,
- r_t->ptr_dcname, ps, depth))
- return False;
-
- if (!prs_align(ps))
- return False;
-
- if (!prs_werror("status", ps, depth, &r_t->status))
- return False;
-
- return True;
-}
-
/*******************************************************************
Inits an NET_R_TRUST_DOM_LIST structure.
********************************************************************/
@@ -1154,10 +1070,10 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
unsigned char key[16];
#ifdef DEBUG_PASSWORD
DEBUG(100,("lm cypher:"));
- dump_data(100, lm_cypher, 16);
+ dump_data(100, (char *)lm_cypher, 16);
DEBUG(100,("nt cypher:"));
- dump_data(100, nt_cypher, 16);
+ dump_data(100, (char *)nt_cypher, 16);
#endif
memset(key, 0, 16);
@@ -1170,10 +1086,10 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
#ifdef DEBUG_PASSWORD
DEBUG(100,("encrypt of lm owf password:"));
- dump_data(100, lm_owf, 16);
+ dump_data(100, (char *)lm_owf, 16);
DEBUG(100,("encrypt of nt owf password:"));
- dump_data(100, nt_owf, 16);
+ dump_data(100, (char *)nt_owf, 16);
#endif
/* set up pointers to cypher blocks */
lm_cypher = lm_owf;
@@ -1376,21 +1292,6 @@ void init_sam_info(DOM_SAM_INFO *sam,
}
/*******************************************************************
- Inits a DOM_SAM_INFO structure.
-********************************************************************/
-
-void init_sam_info_ex(DOM_SAM_INFO_EX *sam,
- const char *logon_srv, const char *comp_name,
- uint16 logon_level, NET_ID_INFO_CTR *ctr)
-{
- DEBUG(5,("init_sam_info_ex: %d\n", __LINE__));
-
- init_clnt_srv(&sam->client, logon_srv, comp_name);
- sam->logon_level = logon_level;
- sam->ctr = ctr;
-}
-
-/*******************************************************************
Reads or writes a DOM_SAM_INFO structure.
********************************************************************/
@@ -2008,9 +1909,6 @@ BOOL net_io_q_sam_logon_ex(const char *desc, NET_Q_SAM_LOGON_EX *q_l, prs_struct
if(!prs_uint16("validation_level", ps, depth, &q_l->validation_level))
return False;
- if (!prs_align(ps))
- return False;
-
if(!prs_uint32("flags ", ps, depth, &q_l->flags))
return False;
diff --git a/source/rpc_parse/parse_prs.c b/source/rpc_parse/parse_prs.c
index e21f5179746..be3d9e8b886 100644
--- a/source/rpc_parse/parse_prs.c
+++ b/source/rpc_parse/parse_prs.c
@@ -1353,7 +1353,7 @@ BOOL prs_string(const char *name, prs_struct *ps, int depth, char *str, int max_
ps->data_offset += len+1;
- dump_data(5+depth, (uint8 *)q, len);
+ dump_data(5+depth, q, len);
return True;
}
@@ -1475,24 +1475,22 @@ BOOL prs_uint32_post(const char *name, prs_struct *ps, int depth, uint32 *data32
}
/* useful function to store a structure in rpc wire format */
-int tdb_prs_store(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps)
+int tdb_prs_store(TDB_CONTEXT *tdb, char *keystr, prs_struct *ps)
{
- TDB_DATA dbuf;
- dbuf.dptr = (uint8 *)ps->data_p;
+ TDB_DATA kbuf, dbuf;
+ kbuf.dptr = keystr;
+ kbuf.dsize = strlen(keystr)+1;
+ dbuf.dptr = ps->data_p;
dbuf.dsize = prs_offset(ps);
return tdb_trans_store(tdb, kbuf, dbuf, TDB_REPLACE);
}
-int tdb_prs_store_bystring(TDB_CONTEXT *tdb, char *keystr, prs_struct *ps)
-{
- TDB_DATA kbuf = string_term_tdb_data(keystr);
- return tdb_prs_store(tdb, kbuf, ps);
-}
-
/* useful function to fetch a structure into rpc wire format */
-int tdb_prs_fetch(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps, TALLOC_CTX *mem_ctx)
+int tdb_prs_fetch(TDB_CONTEXT *tdb, char *keystr, prs_struct *ps, TALLOC_CTX *mem_ctx)
{
- TDB_DATA dbuf;
+ TDB_DATA kbuf, dbuf;
+ kbuf.dptr = keystr;
+ kbuf.dsize = strlen(keystr)+1;
prs_init(ps, 0, mem_ctx, UNMARSHALL);
@@ -1500,15 +1498,9 @@ int tdb_prs_fetch(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps, TALLOC_CTX *m
if (!dbuf.dptr)
return -1;
- prs_give_memory(ps, (char *)dbuf.dptr, dbuf.dsize, True);
+ prs_give_memory(ps, dbuf.dptr, dbuf.dsize, True);
return 0;
-}
-
-int tdb_prs_fetch_bystring(TDB_CONTEXT *tdb, char *keystr, prs_struct *ps, TALLOC_CTX *mem_ctx)
-{
- TDB_DATA kbuf = string_term_tdb_data(keystr);
- return tdb_prs_fetch(tdb, kbuf, ps, mem_ctx);
}
/*******************************************************************
@@ -1524,13 +1516,13 @@ BOOL prs_hash1(prs_struct *ps, uint32 offset, int len)
#ifdef DEBUG_PASSWORD
DEBUG(100, ("prs_hash1\n"));
- dump_data(100, (uint8 *)ps->sess_key, 16);
- dump_data(100, (uint8 *)q, len);
+ dump_data(100, ps->sess_key, 16);
+ dump_data(100, q, len);
#endif
SamOEMhash((uchar *) q, (const unsigned char *)ps->sess_key, len);
#ifdef DEBUG_PASSWORD
- dump_data(100, (uint8 *)q, len);
+ dump_data(100, q, len);
#endif
return True;
@@ -1775,9 +1767,9 @@ BOOL schannel_decode(struct schannel_auth_struct *a, enum pipe_auth_level auth_l
checksum after the decode, below
*/
DEBUG(2, ("schannel_decode: FAILED: packet sequence number:\n"));
- dump_data(2, (const uint8 *)verf->seq_num, sizeof(verf->seq_num));
+ dump_data(2, (const char*)verf->seq_num, sizeof(verf->seq_num));
DEBUG(2, ("should be:\n"));
- dump_data(2, (const uint8 *)seq_num, sizeof(seq_num));
+ dump_data(2, (const char*)seq_num, sizeof(seq_num));
return False;
}
@@ -1785,9 +1777,9 @@ BOOL schannel_decode(struct schannel_auth_struct *a, enum pipe_auth_level auth_l
if (memcmp(verf->sig, schannel_sig, sizeof(verf->sig))) {
/* Validate that the other end sent the expected header */
DEBUG(2, ("schannel_decode: FAILED: packet header:\n"));
- dump_data(2, (const uint8 *)verf->sig, sizeof(verf->sig));
+ dump_data(2, (const char*)verf->sig, sizeof(verf->sig));
DEBUG(2, ("should be:\n"));
- dump_data(2, (const uint8 *)schannel_sig, sizeof(schannel_sig));
+ dump_data(2, (const char*)schannel_sig, sizeof(schannel_sig));
return False;
}
diff --git a/source/rpc_parse/parse_reg.c b/source/rpc_parse/parse_reg.c
new file mode 100644
index 00000000000..fef1332e5c7
--- /dev/null
+++ b/source/rpc_parse/parse_reg.c
@@ -0,0 +1,1789 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * RPC Pipe client / server routines
+ * Copyright (C) Andrew Tridgell 1992-1997,
+ * Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
+ * Copyright (C) Paul Ashton 1997.
+ * Copyright (C) Marc Jacobsen 1999.
+ * Copyright (C) Simo Sorce 2000.
+ * Copyright (C) Jeremy Cooper 2004
+ * Copyright (C) Gerald Carter 2002-2005.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_PARSE
+
+/*******************************************************************
+ Fill in a REGVAL_BUFFER for the data given a REGISTRY_VALUE
+ *******************************************************************/
+
+uint32 reg_init_regval_buffer( REGVAL_BUFFER *buf2, REGISTRY_VALUE *val )
+{
+ uint32 real_size = 0;
+
+ if ( !buf2 || !val )
+ return 0;
+
+ real_size = regval_size(val);
+ init_regval_buffer( buf2, (unsigned char*)regval_data_p(val), real_size );
+
+ return real_size;
+}
+
+/*******************************************************************
+ Inits a hive connect request structure
+********************************************************************/
+
+void init_reg_q_open_hive( REG_Q_OPEN_HIVE *q_o, uint32 access_desired )
+{
+
+ q_o->server = TALLOC_P( get_talloc_ctx(), uint16);
+ if (!q_o->server) {
+ smb_panic("init_reg_q_open_hive: talloc fail.\n");
+ return;
+ }
+ *q_o->server = 0x1;
+
+ q_o->access = access_desired;
+}
+
+/*******************************************************************
+Marshalls a hive connect request
+********************************************************************/
+
+BOOL reg_io_q_open_hive(const char *desc, REG_Q_OPEN_HIVE *q_u,
+ prs_struct *ps, int depth)
+{
+ prs_debug(ps, depth, desc, "reg_io_q_open_hive");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("server", ps, depth, (void**)&q_u->server, sizeof(uint16), (PRS_POINTER_CAST)prs_uint16))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if(!prs_uint32("access", ps, depth, &q_u->access))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+Unmarshalls a hive connect response
+********************************************************************/
+
+BOOL reg_io_r_open_hive(const char *desc, REG_R_OPEN_HIVE *r_u,
+ prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_open_hive");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &r_u->pol, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a structure.
+********************************************************************/
+
+void init_reg_q_flush_key(REG_Q_FLUSH_KEY *q_u, POLICY_HND *pol)
+{
+ memcpy(&q_u->pol, pol, sizeof(q_u->pol));
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_flush_key(const char *desc, REG_Q_FLUSH_KEY *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_flush_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+Unmarshalls a registry key flush response
+********************************************************************/
+
+BOOL reg_io_r_flush_key(const char *desc, REG_R_FLUSH_KEY *r_u,
+ prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_flush_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes SEC_DESC_BUF and SEC_DATA structures.
+********************************************************************/
+
+static BOOL reg_io_hdrbuf_sec(uint32 ptr, uint32 *ptr3, BUFHDR *hdr_sec,
+ SEC_DESC_BUF *data, prs_struct *ps, int depth)
+{
+ if (ptr != 0) {
+ uint32 hdr_offset;
+ uint32 old_offset;
+ if(!smb_io_hdrbuf_pre("hdr_sec", hdr_sec, ps, depth,
+ &hdr_offset))
+ return False;
+
+ old_offset = prs_offset(ps);
+
+ if (ptr3 != NULL) {
+ if(!prs_uint32("ptr3", ps, depth, ptr3))
+ return False;
+ }
+
+ if (ptr3 == NULL || *ptr3 != 0) {
+ /* JRA - this next line is probably wrong... */
+ if(!sec_io_desc_buf("data ", &data, ps, depth))
+ return False;
+ }
+
+ if(!smb_io_hdrbuf_post("hdr_sec", hdr_sec, ps, depth,
+ hdr_offset, data->max_len, data->len))
+ return False;
+ if(!prs_set_offset(ps, old_offset + data->len +
+ sizeof(uint32) * ((ptr3 != NULL) ? 5 : 3)))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a registry key create request
+********************************************************************/
+
+void init_reg_q_create_key_ex(REG_Q_CREATE_KEY_EX *q_c, POLICY_HND *hnd,
+ char *name, char *key_class, uint32 access_desired,
+ SEC_DESC_BUF *sec_buf)
+{
+ ZERO_STRUCTP(q_c);
+
+ memcpy(&q_c->handle, hnd, sizeof(q_c->handle));
+
+
+ init_unistr4( &q_c->name, name, UNI_STR_TERMINATE );
+ init_unistr4( &q_c->key_class, key_class, UNI_STR_TERMINATE );
+
+ q_c->access = access_desired;
+
+ q_c->sec_info = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!q_c->sec_info) {
+ smb_panic("init_reg_q_create_key_ex: talloc fail\n");
+ return;
+ }
+ *q_c->sec_info = DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION;
+
+ q_c->data = sec_buf;
+ q_c->ptr2 = 1;
+ init_buf_hdr(&q_c->hdr_sec, sec_buf->len, sec_buf->len);
+ q_c->ptr3 = 1;
+ q_c->disposition = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!q_c->disposition) {
+ smb_panic("init_reg_q_create_key_ex: talloc fail\n");
+ return;
+ }
+}
+
+/*******************************************************************
+Marshalls a registry key create request
+********************************************************************/
+
+BOOL reg_io_q_create_key_ex(const char *desc, REG_Q_CREATE_KEY_EX *q_u,
+ prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_create_key_ex");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->handle, ps, depth))
+ return False;
+
+ if(!prs_unistr4 ("name", ps, depth, &q_u->name))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_unistr4 ("key_class", ps, depth, &q_u->key_class))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("options", ps, depth, &q_u->options))
+ return False;
+ if(!prs_uint32("access", ps, depth, &q_u->access))
+ return False;
+
+ if(!prs_pointer("sec_info", ps, depth, (void**)&q_u->sec_info, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ if ( q_u->sec_info ) {
+ if(!prs_uint32("ptr2", ps, depth, &q_u->ptr2))
+ return False;
+ if(!reg_io_hdrbuf_sec(q_u->ptr2, &q_u->ptr3, &q_u->hdr_sec, q_u->data, ps, depth))
+ return False;
+ }
+
+ if(!prs_pointer("disposition", ps, depth, (void**)&q_u->disposition, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+Unmarshalls a registry key create response
+********************************************************************/
+
+BOOL reg_io_r_create_key_ex(const char *desc, REG_R_CREATE_KEY_EX *r_u,
+ prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_create_key_ex");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &r_u->handle, ps, depth))
+ return False;
+ if(!prs_uint32("disposition", ps, depth, &r_u->disposition))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ Inits a structure.
+********************************************************************/
+
+void init_reg_q_delete_val(REG_Q_DELETE_VALUE *q_c, POLICY_HND *hnd,
+ char *name)
+{
+ ZERO_STRUCTP(q_c);
+
+ memcpy(&q_c->handle, hnd, sizeof(q_c->handle));
+ init_unistr4(&q_c->name, name, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_delete_value(const char *desc, REG_Q_DELETE_VALUE *q_u,
+ prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_delete_value");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->handle, ps, depth))
+ return False;
+
+ if(!prs_unistr4("name", ps, depth, &q_u->name))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_delete_value(const char *desc, REG_R_DELETE_VALUE *r_u,
+ prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_delete_value");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a structure.
+********************************************************************/
+
+void init_reg_q_delete_key(REG_Q_DELETE_KEY *q_c, POLICY_HND *hnd,
+ char *name)
+{
+ ZERO_STRUCTP(q_c);
+
+ memcpy(&q_c->handle, hnd, sizeof(q_c->handle));
+
+ init_unistr4(&q_c->name, name, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_delete_key(const char *desc, REG_Q_DELETE_KEY *q_u,
+ prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_delete_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->handle, ps, depth))
+ return False;
+
+ if(!prs_unistr4("", ps, depth, &q_u->name))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_delete_key(const char *desc, REG_R_DELETE_KEY *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_delete_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a structure.
+********************************************************************/
+
+void init_reg_q_query_key(REG_Q_QUERY_KEY *q_o, POLICY_HND *hnd, const char *key_class)
+{
+ ZERO_STRUCTP(q_o);
+
+ memcpy(&q_o->pol, hnd, sizeof(q_o->pol));
+ init_unistr4(&q_o->key_class, key_class, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_query_key(const char *desc, REG_Q_QUERY_KEY *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_query_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+ if(!prs_unistr4("key_class", ps, depth, &q_u->key_class))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_query_key(const char *desc, REG_R_QUERY_KEY *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_query_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_unistr4("key_class", ps, depth, &r_u->key_class))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("num_subkeys ", ps, depth, &r_u->num_subkeys))
+ return False;
+ if(!prs_uint32("max_subkeylen ", ps, depth, &r_u->max_subkeylen))
+ return False;
+ if(!prs_uint32("reserved ", ps, depth, &r_u->reserved))
+ return False;
+ if(!prs_uint32("num_values ", ps, depth, &r_u->num_values))
+ return False;
+ if(!prs_uint32("max_valnamelen", ps, depth, &r_u->max_valnamelen))
+ return False;
+ if(!prs_uint32("max_valbufsize", ps, depth, &r_u->max_valbufsize))
+ return False;
+ if(!prs_uint32("sec_desc ", ps, depth, &r_u->sec_desc))
+ return False;
+ if(!smb_io_time("mod_time ", &r_u->mod_time, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a structure.
+********************************************************************/
+
+void init_reg_q_getversion(REG_Q_GETVERSION *q_o, POLICY_HND *hnd)
+{
+ memcpy(&q_o->pol, hnd, sizeof(q_o->pol));
+}
+
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_getversion(const char *desc, REG_Q_GETVERSION *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_getversion");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_getversion(const char *desc, REG_R_GETVERSION *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_getversion");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("win_version", ps, depth, &r_u->win_version))
+ return False;
+ if(!prs_werror("status" , ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_restore_key(const char *desc, REG_Q_RESTORE_KEY *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_restore_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+
+ if(!prs_unistr4("filename", ps, depth, &q_u->filename))
+ return False;
+
+ if(!prs_uint32("flags", ps, depth, &q_u->flags))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_restore_key(const char *desc, REG_R_RESTORE_KEY *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_restore_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status" , ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+********************************************************************/
+
+void init_q_reg_save_key( REG_Q_SAVE_KEY *q_u, POLICY_HND *handle, const char *fname )
+{
+ memcpy(&q_u->pol, handle, sizeof(q_u->pol));
+ init_unistr4( &q_u->filename, fname, UNI_STR_TERMINATE );
+ q_u->sec_attr = NULL;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_save_key(const char *desc, REG_Q_SAVE_KEY *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_save_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+
+ if(!prs_unistr4("filename", ps, depth, &q_u->filename))
+ return False;
+
+#if 0 /* reg_io_sec_attr() */
+ if(!prs_uint32("unknown", ps, depth, &q_u->unknown))
+ return False;
+#endif
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_save_key(const char *desc, REG_R_SAVE_KEY *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_save_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status" , ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits an REG_Q_CLOSE structure.
+********************************************************************/
+
+void init_reg_q_close(REG_Q_CLOSE *q_c, POLICY_HND *hnd)
+{
+ DEBUG(5,("init_reg_q_close\n"));
+
+ memcpy(&q_c->pol, hnd, sizeof(q_c->pol));
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_close(const char *desc, REG_Q_CLOSE *q_u, prs_struct *ps, int depth)
+{
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_close");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_close(const char *desc, REG_R_CLOSE *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_close");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &r_u->pol, ps, depth))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+void init_reg_q_set_key_sec(REG_Q_SET_KEY_SEC *q_u, POLICY_HND *pol,
+ uint32 sec_info, SEC_DESC_BUF *sec_desc_buf)
+{
+ memcpy(&q_u->handle, pol, sizeof(q_u->handle));
+
+ q_u->sec_info = sec_info;
+
+ q_u->ptr = 1;
+ init_buf_hdr(&q_u->hdr_sec, sec_desc_buf->len, sec_desc_buf->len);
+ q_u->data = sec_desc_buf;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_set_key_sec(const char *desc, REG_Q_SET_KEY_SEC *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_set_key_sec");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->handle, ps, depth))
+ return False;
+
+ if(!prs_uint32("sec_info", ps, depth, &q_u->sec_info))
+ return False;
+ if(!prs_uint32("ptr ", ps, depth, &q_u->ptr))
+ return False;
+
+ if(!reg_io_hdrbuf_sec(q_u->ptr, NULL, &q_u->hdr_sec, q_u->data, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_set_key_sec(const char *desc, REG_R_SET_KEY_SEC *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_set_key_sec");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &q_u->status))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+void init_reg_q_get_key_sec(REG_Q_GET_KEY_SEC *q_u, POLICY_HND *pol,
+ uint32 sec_info, uint32 sec_buf_size,
+ SEC_DESC_BUF *psdb)
+{
+ memcpy(&q_u->handle, pol, sizeof(q_u->handle));
+
+ q_u->sec_info = sec_info;
+
+ q_u->ptr = psdb != NULL ? 1 : 0;
+ q_u->data = psdb;
+
+ init_buf_hdr(&q_u->hdr_sec, sec_buf_size, 0);
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_get_key_sec(const char *desc, REG_Q_GET_KEY_SEC *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_get_key_sec");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->handle, ps, depth))
+ return False;
+
+ if(!prs_uint32("sec_info", ps, depth, &q_u->sec_info))
+ return False;
+ if(!prs_uint32("ptr ", ps, depth, &q_u->ptr))
+ return False;
+
+ if(!reg_io_hdrbuf_sec(q_u->ptr, NULL, &q_u->hdr_sec, q_u->data, ps, depth))
+ return False;
+
+ return True;
+}
+
+#if 0
+/*******************************************************************
+makes a structure.
+********************************************************************/
+ void init_reg_r_get_key_sec(REG_R_GET_KEY_SEC *r_i, POLICY_HND *pol,
+ uint32 buf_len, uint8 *buf,
+ NTSTATUS status)
+{
+ r_i->ptr = 1;
+ init_buf_hdr(&r_i->hdr_sec, buf_len, buf_len);
+ init_sec_desc_buf(r_i->data, buf_len, 1);
+
+ r_i->status = status; /* 0x0000 0000 or 0x0000 007a */
+}
+#endif
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_get_key_sec(const char *desc, REG_R_GET_KEY_SEC *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_get_key_sec");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr ", ps, depth, &q_u->ptr))
+ return False;
+
+ if (q_u->ptr != 0) {
+ if(!smb_io_hdrbuf("", &q_u->hdr_sec, ps, depth))
+ return False;
+ if(!sec_io_desc_buf("", &q_u->data, ps, depth))
+ return False;
+ if(!prs_align(ps))
+ return False;
+ }
+
+ if(!prs_werror("status", ps, depth, &q_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+BOOL init_reg_q_query_value(REG_Q_QUERY_VALUE *q_u, POLICY_HND *pol, const char *val_name,
+ REGVAL_BUFFER *value_output)
+{
+ if (q_u == NULL)
+ return False;
+
+ q_u->pol = *pol;
+
+ init_unistr4(&q_u->name, val_name, UNI_STR_TERMINATE);
+
+ q_u->ptr_reserved = 1;
+ q_u->ptr_buf = 1;
+
+ q_u->ptr_bufsize = 1;
+ q_u->bufsize = value_output->buf_max_len;
+ q_u->buf_unk = 0;
+
+ q_u->unk1 = 0;
+ q_u->ptr_buflen = 1;
+ q_u->buflen = value_output->buf_max_len;
+
+ q_u->ptr_buflen2 = 1;
+ q_u->buflen2 = 0;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_query_value(const char *desc, REG_Q_QUERY_VALUE *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_query_value");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+ if(!prs_unistr4("name", ps, depth, &q_u->name))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_reserved", ps, depth, &(q_u->ptr_reserved)))
+ return False;
+
+ if(!prs_uint32("ptr_buf", ps, depth, &(q_u->ptr_buf)))
+ return False;
+
+ if(q_u->ptr_buf) {
+ if(!prs_uint32("ptr_bufsize", ps, depth, &(q_u->ptr_bufsize)))
+ return False;
+ if(!prs_uint32("bufsize", ps, depth, &(q_u->bufsize)))
+ return False;
+ if(!prs_uint32("buf_unk", ps, depth, &(q_u->buf_unk)))
+ return False;
+ }
+
+ if(!prs_uint32("unk1", ps, depth, &(q_u->unk1)))
+ return False;
+
+ if(!prs_uint32("ptr_buflen", ps, depth, &(q_u->ptr_buflen)))
+ return False;
+
+ if (q_u->ptr_buflen) {
+ if(!prs_uint32("buflen", ps, depth, &(q_u->buflen)))
+ return False;
+ if(!prs_uint32("ptr_buflen2", ps, depth, &(q_u->ptr_buflen2)))
+ return False;
+ if(!prs_uint32("buflen2", ps, depth, &(q_u->buflen2)))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a structure.
+ New version to replace older init_reg_r_query_value()
+********************************************************************/
+
+BOOL init_reg_r_query_value(uint32 include_keyval, REG_R_QUERY_VALUE *r_u,
+ REGISTRY_VALUE *val, WERROR status)
+{
+ uint32 buf_len = 0;
+ REGVAL_BUFFER buf2;
+
+ if( !r_u || !val )
+ return False;
+
+ r_u->type = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!r_u->type) {
+ return False;
+ }
+ *r_u->type = val->type;
+
+ buf_len = reg_init_regval_buffer( &buf2, val );
+
+ r_u->buf_max_len = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!r_u->buf_max_len) {
+ return False;
+ }
+ *r_u->buf_max_len = buf_len;
+
+ r_u->buf_len = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!r_u->buf_len) {
+ return False;
+ }
+ *r_u->buf_len = buf_len;
+
+ /* if include_keyval is not set, don't send the key value, just
+ the buflen data. probably used by NT5 to allocate buffer space - SK */
+
+ if ( include_keyval ) {
+ r_u->value = TALLOC_P( get_talloc_ctx(), REGVAL_BUFFER );
+ if (!r_u->value) {
+ return False;
+ }
+ /* steal the memory */
+ *r_u->value = buf2;
+ }
+
+ r_u->status = status;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_query_value(const char *desc, REG_R_QUERY_VALUE *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_query_value");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if ( !prs_pointer("type", ps, depth, (void**)&r_u->type, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ if ( !prs_pointer("value", ps, depth, (void**)&r_u->value, sizeof(REGVAL_BUFFER), (PRS_POINTER_CAST)smb_io_regval_buffer))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if ( !prs_pointer("buf_max_len", ps, depth, (void**)&r_u->buf_max_len, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+ if ( !prs_pointer("buf_len", ps, depth, (void**)&r_u->buf_len, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+void init_reg_q_enum_val(REG_Q_ENUM_VALUE *q_u, POLICY_HND *pol,
+ uint32 val_idx,
+ uint32 max_name_len, uint32 max_buf_len)
+{
+ ZERO_STRUCTP(q_u);
+
+ memcpy(&q_u->pol, pol, sizeof(q_u->pol));
+
+ q_u->val_index = val_idx;
+
+ q_u->name.size = max_name_len*2;
+ q_u->name.string = TALLOC_ZERO_P( get_talloc_ctx(), UNISTR2 );
+ if (!q_u->name.string) {
+ smb_panic("init_reg_q_enum_val: talloc fail\n");
+ return;
+ }
+ q_u->name.string->uni_max_len = max_name_len;
+
+ q_u->type = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!q_u->type) {
+ smb_panic("init_reg_q_enum_val: talloc fail\n");
+ return;
+ }
+ *q_u->type = 0x0;
+
+ q_u->value = TALLOC_ZERO_P( get_talloc_ctx(), REGVAL_BUFFER );
+ if (!q_u->value) {
+ smb_panic("init_reg_q_enum_val: talloc fail\n");
+ return;
+ }
+
+ q_u->value->buf_max_len = max_buf_len;
+
+ q_u->buffer_len = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!q_u->buffer_len) {
+ smb_panic("init_reg_q_enum_val: talloc fail\n");
+ return;
+ }
+ *q_u->buffer_len = max_buf_len;
+
+ q_u->name_len = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!q_u->name_len) {
+ smb_panic("init_reg_q_enum_val: talloc fail\n");
+ return;
+ }
+ *q_u->name_len = 0x0;
+}
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+void init_reg_r_enum_val(REG_R_ENUM_VALUE *r_u, REGISTRY_VALUE *val )
+{
+ uint32 real_size;
+
+ ZERO_STRUCTP(r_u);
+
+ /* value name */
+
+ DEBUG(10,("init_reg_r_enum_val: Valuename => [%s]\n", val->valuename));
+
+ init_unistr4( &r_u->name, val->valuename, UNI_STR_TERMINATE);
+
+ /* type */
+
+ r_u->type = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!r_u->type) {
+ smb_panic("init_reg_r_enum_val: talloc fail\n");
+ return;
+ }
+ *r_u->type = val->type;
+
+ /* REG_SZ & REG_MULTI_SZ must be converted to UNICODE */
+
+ r_u->value = TALLOC_P( get_talloc_ctx(), REGVAL_BUFFER );
+ if (!r_u->value) {
+ smb_panic("init_reg_r_enum_val: talloc fail\n");
+ return;
+ }
+ real_size = reg_init_regval_buffer( r_u->value, val );
+
+ /* lengths */
+
+ r_u->buffer_len1 = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!r_u->buffer_len1) {
+ smb_panic("init_reg_r_enum_val: talloc fail\n");
+ return;
+ }
+ *r_u->buffer_len1 = real_size;
+ r_u->buffer_len2 = TALLOC_P( get_talloc_ctx(), uint32 );
+ if (!r_u->buffer_len2) {
+ smb_panic("init_reg_r_enum_val: talloc fail\n");
+ return;
+ }
+ *r_u->buffer_len2 = real_size;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_enum_val(const char *desc, REG_Q_ENUM_VALUE *q_u, prs_struct *ps, int depth)
+{
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_enum_val");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+
+ if(!prs_uint32("val_index", ps, depth, &q_u->val_index))
+ return False;
+
+ if(!prs_unistr4("name", ps, depth, &q_u->name ))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("type", ps, depth, (void**)&q_u->type, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ if ( !prs_pointer("value", ps, depth, (void**)&q_u->value, sizeof(REGVAL_BUFFER), (PRS_POINTER_CAST)smb_io_regval_buffer))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("buffer_len", ps, depth, (void**)&q_u->buffer_len, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+ if(!prs_pointer("name_len", ps, depth, (void**)&q_u->name_len, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_enum_val(const char *desc, REG_R_ENUM_VALUE *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_enum_val");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_unistr4("name", ps, depth, &r_u->name ))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("type", ps, depth, (void**)&r_u->type, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ if ( !prs_pointer("value", ps, depth, (void**)&r_u->value, sizeof(REGVAL_BUFFER), (PRS_POINTER_CAST)smb_io_regval_buffer))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("buffer_len1", ps, depth, (void**)&r_u->buffer_len1, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+ if(!prs_pointer("buffer_len2", ps, depth, (void**)&r_u->buffer_len2, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+void init_reg_q_set_val(REG_Q_SET_VALUE *q_u, POLICY_HND *pol,
+ char *val_name, uint32 type,
+ RPC_DATA_BLOB *val)
+{
+ ZERO_STRUCTP(q_u);
+
+ memcpy(&q_u->handle, pol, sizeof(q_u->handle));
+
+ init_unistr4(&q_u->name, val_name, UNI_STR_TERMINATE);
+
+ q_u->type = type;
+ q_u->value = *val;
+ q_u->size = val->buf_len;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_set_value(const char *desc, REG_Q_SET_VALUE *q_u, prs_struct *ps, int depth)
+{
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_set_value");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->handle, ps, depth))
+ return False;
+
+ if(!prs_unistr4("name", ps, depth, &q_u->name ))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("type", ps, depth, &q_u->type))
+ return False;
+
+ if(!smb_io_rpc_blob("value", &q_u->value, ps, depth ))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("size", ps, depth, &q_u->size))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_set_value(const char *desc, REG_R_SET_VALUE *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_set_value");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &q_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+void init_reg_q_enum_key(REG_Q_ENUM_KEY *q_u, POLICY_HND *pol, uint32 key_idx)
+{
+ memcpy(&q_u->pol, pol, sizeof(q_u->pol));
+
+ q_u->key_index = key_idx;
+ q_u->key_name_len = 0;
+ q_u->unknown_1 = 0x0414;
+
+ q_u->ptr1 = 1;
+ q_u->unknown_2 = 0x0000020A;
+ memset(q_u->pad1, 0, sizeof(q_u->pad1));
+
+ q_u->ptr2 = 1;
+ memset(q_u->pad2, 0, sizeof(q_u->pad2));
+
+ q_u->ptr3 = 1;
+ unix_to_nt_time(&q_u->time, 0); /* current time? */
+}
+
+/*******************************************************************
+makes a reply structure.
+********************************************************************/
+
+void init_reg_r_enum_key(REG_R_ENUM_KEY *r_u, char *subkey )
+{
+ if ( !r_u )
+ return;
+
+ init_unistr4( &r_u->keyname, subkey, UNI_STR_TERMINATE );
+ r_u->classname = TALLOC_ZERO_P( get_talloc_ctx(), UNISTR4 );
+ if (!r_u->classname) {
+ smb_panic("init_reg_r_enum_key: talloc fail\n");
+ return;
+ }
+ r_u->time = TALLOC_ZERO_P( get_talloc_ctx(), NTTIME );
+ if (!r_u->time) {
+ smb_panic("init_reg_r_enum_key: talloc fail\n");
+ return;
+ }
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_enum_key(const char *desc, REG_Q_ENUM_KEY *q_u, prs_struct *ps, int depth)
+{
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_enum_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+
+ if(!prs_uint32("key_index", ps, depth, &q_u->key_index))
+ return False;
+ if(!prs_uint16("key_name_len", ps, depth, &q_u->key_name_len))
+ return False;
+ if(!prs_uint16("unknown_1", ps, depth, &q_u->unknown_1))
+ return False;
+
+ if(!prs_uint32("ptr1", ps, depth, &q_u->ptr1))
+ return False;
+
+ if (q_u->ptr1 != 0) {
+ if(!prs_uint32("unknown_2", ps, depth, &q_u->unknown_2))
+ return False;
+ if(!prs_uint8s(False, "pad1", ps, depth, q_u->pad1, sizeof(q_u->pad1)))
+ return False;
+ }
+
+ if(!prs_uint32("ptr2", ps, depth, &q_u->ptr2))
+ return False;
+
+ if (q_u->ptr2 != 0) {
+ if(!prs_uint8s(False, "pad2", ps, depth, q_u->pad2, sizeof(q_u->pad2)))
+ return False;
+ }
+
+ if(!prs_uint32("ptr3", ps, depth, &q_u->ptr3))
+ return False;
+
+ if (q_u->ptr3 != 0) {
+ if(!smb_io_time("", &q_u->time, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_enum_key(const char *desc, REG_R_ENUM_KEY *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_enum_key");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+ if ( !prs_unistr4( "keyname", ps, depth, &q_u->keyname ) )
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if (!prs_pointer("class", ps, depth, (void**)&q_u->classname, sizeof(UNISTR4), (PRS_POINTER_CAST)prs_unistr4))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if (!prs_pointer("time", ps, depth, (void**)&q_u->time, sizeof(NTTIME), (PRS_POINTER_CAST)smb_io_nttime))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if(!prs_werror("status", ps, depth, &q_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+makes a structure.
+********************************************************************/
+
+void init_reg_q_open_entry(REG_Q_OPEN_ENTRY *q_u, POLICY_HND *pol,
+ char *key_name, uint32 access_desired)
+{
+ memcpy(&q_u->pol, pol, sizeof(q_u->pol));
+
+ init_unistr4(&q_u->name, key_name, UNI_STR_TERMINATE);
+
+ q_u->unknown_0 = 0x00000000;
+ q_u->access = access_desired;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_open_entry(const char *desc, REG_Q_OPEN_ENTRY *q_u, prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_open_entry");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("", &q_u->pol, ps, depth))
+ return False;
+ if(!prs_unistr4("name", ps, depth, &q_u->name))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("unknown_0 ", ps, depth, &q_u->unknown_0))
+ return False;
+ if(!prs_uint32("access", ps, depth, &q_u->access))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_r_open_entry(const char *desc, REG_R_OPEN_ENTRY *r_u, prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_open_entry");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("handle", &r_u->handle, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+Inits a structure.
+********************************************************************/
+
+void init_reg_q_shutdown(REG_Q_SHUTDOWN *q_u, const char *msg,
+ uint32 timeout, BOOL do_reboot, BOOL force)
+{
+ q_u->server = TALLOC_P( get_talloc_ctx(), uint16 );
+ if (!q_u->server) {
+ smb_panic("init_reg_q_shutdown: talloc fail\n");
+ return;
+ }
+ *q_u->server = 0x1;
+
+ q_u->message = TALLOC_ZERO_P( get_talloc_ctx(), UNISTR4 );
+ if (!q_u->message) {
+ smb_panic("init_reg_q_shutdown: talloc fail\n");
+ return;
+ }
+
+ if ( msg && *msg ) {
+ init_unistr4( q_u->message, msg, UNI_FLAGS_NONE );
+
+ /* Win2000 is apparently very sensitive to these lengths */
+ /* do a special case here */
+
+ q_u->message->string->uni_max_len++;
+ q_u->message->size += 2;
+
+ }
+
+ q_u->timeout = timeout;
+
+ q_u->reboot = do_reboot ? 1 : 0;
+ q_u->force = force ? 1 : 0;
+}
+
+/*******************************************************************
+Inits a REG_Q_SHUTDOWN_EX structure.
+********************************************************************/
+
+void init_reg_q_shutdown_ex(REG_Q_SHUTDOWN_EX * q_u_ex, const char *msg,
+ uint32 timeout, BOOL do_reboot, BOOL force, uint32 reason)
+{
+ REG_Q_SHUTDOWN q_u;
+
+ ZERO_STRUCT( q_u );
+
+ init_reg_q_shutdown( &q_u, msg, timeout, do_reboot, force );
+
+ /* steal memory */
+
+ q_u_ex->server = q_u.server;
+ q_u_ex->message = q_u.message;
+
+ q_u_ex->reboot = q_u.reboot;
+ q_u_ex->force = q_u.force;
+
+ q_u_ex->reason = reason;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_shutdown(const char *desc, REG_Q_SHUTDOWN *q_u, prs_struct *ps,
+ int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_shutdown");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("server", ps, depth, (void**)&q_u->server, sizeof(uint16), (PRS_POINTER_CAST)prs_uint16))
+ return False;
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("message", ps, depth, (void**)&q_u->message, sizeof(UNISTR4), (PRS_POINTER_CAST)prs_unistr4))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("timeout", ps, depth, &(q_u->timeout)))
+ return False;
+
+ if (!prs_uint8("force ", ps, depth, &(q_u->force)))
+ return False;
+ if (!prs_uint8("reboot ", ps, depth, &(q_u->reboot)))
+ return False;
+
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+BOOL reg_io_r_shutdown(const char *desc, REG_R_SHUTDOWN *r_u, prs_struct *ps,
+ int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_shutdown");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a REG_Q_SHUTDOWN_EX structure.
+********************************************************************/
+
+BOOL reg_io_q_shutdown_ex(const char *desc, REG_Q_SHUTDOWN_EX *q_u, prs_struct *ps,
+ int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_shutdown_ex");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("server", ps, depth, (void**)&q_u->server, sizeof(uint16), (PRS_POINTER_CAST)prs_uint16))
+ return False;
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("message", ps, depth, (void**)&q_u->message, sizeof(UNISTR4), (PRS_POINTER_CAST)prs_unistr4))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("timeout", ps, depth, &(q_u->timeout)))
+ return False;
+
+ if (!prs_uint8("force ", ps, depth, &(q_u->force)))
+ return False;
+ if (!prs_uint8("reboot ", ps, depth, &(q_u->reboot)))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+ if (!prs_uint32("reason", ps, depth, &(q_u->reason)))
+ return False;
+
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a REG_R_SHUTDOWN_EX structure.
+********************************************************************/
+BOOL reg_io_r_shutdown_ex(const char *desc, REG_R_SHUTDOWN_EX *r_u, prs_struct *ps,
+ int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_shutdown_ex");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+Inits a structure.
+********************************************************************/
+
+void init_reg_q_abort_shutdown(REG_Q_ABORT_SHUTDOWN *q_u)
+{
+ q_u->server = TALLOC_P( get_talloc_ctx(), uint16 );
+ if (!q_u->server) {
+ smb_panic("init_reg_q_abort_shutdown: talloc fail\n");
+ return;
+ }
+ *q_u->server = 0x1;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL reg_io_q_abort_shutdown(const char *desc, REG_Q_ABORT_SHUTDOWN *q_u,
+ prs_struct *ps, int depth)
+{
+ if ( !q_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_q_abort_shutdown");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("server", ps, depth, (void**)&q_u->server, sizeof(uint16), (PRS_POINTER_CAST)prs_uint16))
+ return False;
+ if (!prs_align(ps))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+BOOL reg_io_r_abort_shutdown(const char *desc, REG_R_ABORT_SHUTDOWN *r_u,
+ prs_struct *ps, int depth)
+{
+ if ( !r_u )
+ return False;
+
+ prs_debug(ps, depth, desc, "reg_io_r_abort_shutdown");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
diff --git a/source/rpc_parse/parse_rpc.c b/source/rpc_parse/parse_rpc.c
index 39156d5ef8d..2d166c773b4 100644
--- a/source/rpc_parse/parse_rpc.c
+++ b/source/rpc_parse/parse_rpc.c
@@ -191,16 +191,6 @@ interface/version dce/rpc pipe identification
}, 0x00 \
}
-#define SYNT_UNIXINFO_V0 \
-{ \
- { \
- 0x9c54e310, 0xa955, 0x4885, \
- { 0xbd, 0x31 }, \
- { 0x78, 0x78, \
- 0x71, 0x47, 0xdf, 0xa6 } \
- }, 0x00 \
-}
-
#define SYNT_NTSVCS_V1 \
{ \
{ \
@@ -211,16 +201,6 @@ interface/version dce/rpc pipe identification
}, 0x01 \
}
-#define SYNT_EPMAPPER_V3 \
-{ \
- { \
- 0xe1af8308, 0x5d1f,0x11c9, \
- { 0x91,0xa4}, \
- {0x08,0x00, \
- 0x2b,0x14,0xa0,0xfa} \
- }, 0x03 \
-}
-
/*
* IMPORTANT!! If you update this structure, make sure to
* update the index #defines in smb.h.
@@ -242,9 +222,7 @@ const struct pipe_id_info pipe_names [] =
{ PIPE_SHUTDOWN, SYNT_SHUTDOWN_V1 , PIPE_SHUTDOWN , TRANS_SYNT_V2 },
{ PIPE_SVCCTL , SYNT_SVCCTL_V2 , PIPE_NTSVCS , TRANS_SYNT_V2 },
{ PIPE_EVENTLOG, SYNT_EVENTLOG_V0 , PIPE_EVENTLOG , TRANS_SYNT_V2 },
- { PIPE_UNIXINFO, SYNT_UNIXINFO_V0 , PIPE_UNIXINFO , TRANS_SYNT_V2 },
{ PIPE_NTSVCS , SYNT_NTSVCS_V1 , PIPE_NTSVCS , TRANS_SYNT_V2 },
- { PIPE_EPMAPPER, SYNT_EPMAPPER_V3 , PIPE_EPMAPPER , TRANS_SYNT_V2 },
{ NULL , SYNT_NONE_V0 , NULL , SYNT_NONE_V0 }
};
diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c
index 970fdd8cb15..4410348abee 100644
--- a/source/rpc_parse/parse_samr.c
+++ b/source/rpc_parse/parse_samr.c
@@ -557,7 +557,7 @@ void init_unk_info2(SAM_UNK_INFO_2 * u_2,
u_2->seq_num = seq_num;
-
+
u_2->unknown_4 = 0x00000001;
u_2->server_role = server_role;
u_2->unknown_6 = 0x00000001;
@@ -2173,76 +2173,6 @@ BOOL samr_io_r_query_dispinfo(const char *desc, SAMR_R_QUERY_DISPINFO * r_u,
}
/*******************************************************************
-inits a SAMR_Q_GET_DISPENUM_INDEX structure.
-********************************************************************/
-
-void init_samr_q_get_dispenum_index(SAMR_Q_GET_DISPENUM_INDEX * q_e, POLICY_HND *pol,
- uint16 switch_level, const char *name)
-{
- DEBUG(5, ("init_samr_q_get_dispenum_index\n"));
-
- q_e->domain_pol = *pol;
-
- q_e->switch_level = switch_level;
-
- init_lsa_string(&q_e->name, name);
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-BOOL samr_io_q_get_dispenum_index(const char *desc, SAMR_Q_GET_DISPENUM_INDEX * q_e,
- prs_struct *ps, int depth)
-{
- if (q_e == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "samr_io_q_get_dispenum_index");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if(!smb_io_pol_hnd("domain_pol", &q_e->domain_pol, ps, depth))
- return False;
-
- if(!prs_uint16("switch_level", ps, depth, &q_e->switch_level))
- return False;
-
- if (!smb_io_lsa_string("name", &q_e->name, ps, depth))
- return False;
-
- return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-BOOL samr_io_r_get_dispenum_index(const char *desc, SAMR_R_GET_DISPENUM_INDEX * r_u,
- prs_struct *ps, int depth)
-{
- if (r_u == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "samr_io_r_get_dispenum_index");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint32("idx", ps, depth, &r_u->idx))
- return False;
-
- if(!prs_ntstatus("status", ps, depth, &r_u->status))
- return False;
-
- return True;
-}
-
-
-/*******************************************************************
inits a SAMR_Q_OPEN_GROUP structure.
********************************************************************/
@@ -5940,25 +5870,6 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
}
}
-
-/*************************************************************************
- init_samr_user_info25P
- fields_present = ACCT_NT_PWD_SET | ACCT_LM_PWD_SET | ACCT_FLAGS
-*************************************************************************/
-
-void init_sam_user_info25P(SAM_USER_INFO_25 * usr,
- uint32 fields_present, uint32 acb_info,
- char newpass[532])
-{
- usr->fields_present = fields_present;
- ZERO_STRUCT(usr->padding1);
- ZERO_STRUCT(usr->padding2);
-
- usr->acb_info = acb_info;
- memcpy(usr->pass, newpass, sizeof(usr->pass));
-}
-
-
/*******************************************************************
reads or writes a structure.
********************************************************************/
@@ -6353,7 +6264,7 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, struct samu *pw, DOM_SID *
if (munged_dial) {
munged_dial_blob = base64_decode_data_blob(munged_dial);
} else {
- munged_dial_blob = data_blob_null;
+ munged_dial_blob = data_blob(NULL, 0);
}
/* Create NTTIME structs */
@@ -6607,7 +6518,7 @@ void init_sam_user_info20A(SAM_USER_INFO_20 *usr, struct samu *pw)
if (munged_dial) {
blob = base64_decode_data_blob(munged_dial);
} else {
- blob = data_blob_null;
+ blob = data_blob(NULL, 0);
}
init_unistr2_from_datablob(&usr->uni_munged_dial, &blob);
@@ -6723,13 +6634,13 @@ static void init_samr_userinfo_ctr(SAM_USERINFO_CTR * ctr, DATA_BLOB *sess_key,
switch (switch_value) {
case 0x18:
SamOEMhashBlob(ctr->info.id24->pass, 516, sess_key);
- dump_data(100, sess_key->data, sess_key->length);
- dump_data(100, ctr->info.id24->pass, 516);
+ dump_data(100, (char *)sess_key->data, sess_key->length);
+ dump_data(100, (char *)ctr->info.id24->pass, 516);
break;
case 0x17:
SamOEMhashBlob(ctr->info.id23->pass, 516, sess_key);
- dump_data(100, sess_key->data, sess_key->length);
- dump_data(100, ctr->info.id23->pass, 516);
+ dump_data(100, (char *)sess_key->data, sess_key->length);
+ dump_data(100, (char *)ctr->info.id23->pass, 516);
break;
case 0x07:
break;
@@ -7032,9 +6943,9 @@ void init_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 * q_u,
case 18:
SamOEMhashBlob(ctr->info.id18->lm_pwd, 16, sess_key);
SamOEMhashBlob(ctr->info.id18->nt_pwd, 16, sess_key);
- dump_data(100, sess_key->data, sess_key->length);
- dump_data(100, ctr->info.id18->lm_pwd, 16);
- dump_data(100, ctr->info.id18->nt_pwd, 16);
+ dump_data(100, (char *)sess_key->data, sess_key->length);
+ dump_data(100, (char *)ctr->info.id18->lm_pwd, 16);
+ dump_data(100, (char *)ctr->info.id18->nt_pwd, 16);
break;
}
}
@@ -7850,7 +7761,7 @@ BOOL samr_io_r_chgpasswd_user3(const char *desc, SAMR_R_CHGPASSWD_USER3 *r_u,
if ( NT_STATUS_EQUAL( NT_STATUS_NOT_SUPPORTED, NT_STATUS(r_u->ptr_info)) ) {
r_u->status = NT_STATUS_NOT_SUPPORTED;
return True;
- }
+ }
if (r_u->ptr_info && r_u->info != NULL) {
/* SAM_UNK_INFO_1 */
diff --git a/source/rpc_parse/parse_sec.c b/source/rpc_parse/parse_sec.c
index 72accad1b6c..15c6d7f1657 100644
--- a/source/rpc_parse/parse_sec.c
+++ b/source/rpc_parse/parse_sec.c
@@ -28,24 +28,6 @@
#define DBGC_CLASS DBGC_RPC_PARSE
/*******************************************************************
- Reads or writes a SEC_ACCESS structure.
-********************************************************************/
-
-BOOL sec_io_access(const char *desc, SEC_ACCESS *t, prs_struct *ps, int depth)
-{
- if (t == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "sec_io_access");
- depth++;
-
- if(!prs_uint32("mask", ps, depth, t))
- return False;
-
- return True;
-}
-
-/*******************************************************************
Reads or writes a SEC_ACE structure.
********************************************************************/
@@ -53,7 +35,6 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth)
{
uint32 old_offset;
uint32 offset_ace_size;
- uint8 type;
if (psa == NULL)
return False;
@@ -63,24 +44,16 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth)
old_offset = prs_offset(ps);
- if (MARSHALLING(ps)) {
- type = (uint8)psa->type;
- }
-
- if(!prs_uint8("type ", ps, depth, &type))
+ if(!prs_uint8("type ", ps, depth, &psa->type))
return False;
- if (UNMARSHALLING(ps)) {
- psa->type = (enum security_ace_type)type;
- }
-
if(!prs_uint8("flags", ps, depth, &psa->flags))
return False;
if(!prs_uint16_pre("size ", ps, depth, &psa->size, &offset_ace_size))
return False;
- if(!prs_uint32("access_mask", ps, depth, &psa->access_mask))
+ if (!prs_uint32("access_mask", ps, depth, &psa->access_mask))
return False;
/* check whether object access is present */
@@ -88,15 +61,15 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth)
if (!smb_io_dom_sid("trustee ", &psa->trustee , ps, depth))
return False;
} else {
- if (!prs_uint32("obj_flags", ps, depth, &psa->object.object.flags))
+ if (!prs_uint32("obj_flags", ps, depth, &psa->obj_flags))
return False;
- if (psa->object.object.flags & SEC_ACE_OBJECT_PRESENT)
- if (!smb_io_uuid("obj_guid", &psa->object.object.type.type, ps,depth))
+ if (psa->obj_flags & SEC_ACE_OBJECT_PRESENT)
+ if (!smb_io_uuid("obj_guid", &psa->obj_guid, ps,depth))
return False;
- if (psa->object.object.flags & SEC_ACE_OBJECT_INHERITED_PRESENT)
- if (!smb_io_uuid("inh_guid", &psa->object.object.inherited_type.inherited_type, ps,depth))
+ if (psa->obj_flags & SEC_ACE_OBJECT_INHERITED_PRESENT)
+ if (!smb_io_uuid("inh_guid", &psa->inh_guid, ps,depth))
return False;
if(!smb_io_dom_sid("trustee ", &psa->trustee , ps, depth))
@@ -137,7 +110,6 @@ BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth)
uint32 old_offset;
uint32 offset_acl_size;
SEC_ACL *psa;
- uint16 revision;
/*
* Note that the size is always a multiple of 4 bytes due to the
@@ -165,17 +137,9 @@ BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth)
old_offset = prs_offset(ps);
- if (MARSHALLING(ps)) {
- revision = (uint16)psa->revision;
- }
-
- if(!prs_uint16("revision", ps, depth, &revision))
+ if(!prs_uint16("revision", ps, depth, &psa->revision))
return False;
- if (UNMARSHALLING(ps)) {
- psa->revision = (enum security_acl_revision)revision;
- }
-
if(!prs_uint16_pre("size ", ps, depth, &psa->size, &offset_acl_size))
return False;
@@ -228,8 +192,6 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
uint32 old_offset;
uint32 max_offset = 0; /* after we're done, move offset to end */
uint32 tmp_offset = 0;
- uint32 off_sacl, off_dacl, off_owner_sid, off_grp_sid;
- uint16 revision;
SEC_DESC *psd;
@@ -255,17 +217,9 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
/* start of security descriptor stored for back-calc offset purposes */
old_offset = prs_offset(ps);
- if (MARSHALLING(ps)) {
- revision = (uint16)psd->revision;
- }
-
- if(!prs_uint16("revision", ps, depth, &revision))
+ if(!prs_uint16("revision ", ps, depth, &psd->revision))
return False;
- if (UNMARSHALLING(ps)) {
- psd->revision = (enum security_acl_revision)revision;
- }
-
if(!prs_uint16("type ", ps, depth, &psd->type))
return False;
@@ -277,52 +231,52 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
*/
if (psd->sacl != NULL) {
- off_sacl = offset;
+ psd->off_sacl = offset;
offset += psd->sacl->size;
} else {
- off_sacl = 0;
+ psd->off_sacl = 0;
}
if (psd->dacl != NULL) {
- off_dacl = offset;
+ psd->off_dacl = offset;
offset += psd->dacl->size;
} else {
- off_dacl = 0;
+ psd->off_dacl = 0;
}
if (psd->owner_sid != NULL) {
- off_owner_sid = offset;
+ psd->off_owner_sid = offset;
offset += sid_size(psd->owner_sid);
} else {
- off_owner_sid = 0;
+ psd->off_owner_sid = 0;
}
if (psd->group_sid != NULL) {
- off_grp_sid = offset;
+ psd->off_grp_sid = offset;
offset += sid_size(psd->group_sid);
} else {
- off_grp_sid = 0;
+ psd->off_grp_sid = 0;
}
}
- if(!prs_uint32("off_owner_sid", ps, depth, &off_owner_sid))
+ if(!prs_uint32("off_owner_sid", ps, depth, &psd->off_owner_sid))
return False;
- if(!prs_uint32("off_grp_sid ", ps, depth, &off_grp_sid))
+ if(!prs_uint32("off_grp_sid ", ps, depth, &psd->off_grp_sid))
return False;
- if(!prs_uint32("off_sacl ", ps, depth, &off_sacl))
+ if(!prs_uint32("off_sacl ", ps, depth, &psd->off_sacl))
return False;
- if(!prs_uint32("off_dacl ", ps, depth, &off_dacl))
+ if(!prs_uint32("off_dacl ", ps, depth, &psd->off_dacl))
return False;
max_offset = MAX(max_offset, prs_offset(ps));
- if (off_owner_sid != 0) {
+ if (psd->off_owner_sid != 0) {
tmp_offset = prs_offset(ps);
- if(!prs_set_offset(ps, old_offset + off_owner_sid))
+ if(!prs_set_offset(ps, old_offset + psd->off_owner_sid))
return False;
if (UNMARSHALLING(ps)) {
@@ -340,10 +294,10 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
return False;
}
- if (psd->group_sid != 0) {
+ if (psd->off_grp_sid != 0) {
tmp_offset = prs_offset(ps);
- if(!prs_set_offset(ps, old_offset + off_grp_sid))
+ if(!prs_set_offset(ps, old_offset + psd->off_grp_sid))
return False;
if (UNMARSHALLING(ps)) {
@@ -352,7 +306,7 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
return False;
}
- if(!smb_io_dom_sid("grp_sid", psd->group_sid, ps, depth))
+ if(!smb_io_dom_sid("group_sid", psd->group_sid, ps, depth))
return False;
max_offset = MAX(max_offset, prs_offset(ps));
@@ -361,9 +315,9 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
return False;
}
- if ((psd->type & SEC_DESC_SACL_PRESENT) && off_sacl) {
+ if ((psd->type & SEC_DESC_SACL_PRESENT) && psd->off_sacl) {
tmp_offset = prs_offset(ps);
- if(!prs_set_offset(ps, old_offset + off_sacl))
+ if(!prs_set_offset(ps, old_offset + psd->off_sacl))
return False;
if(!sec_io_acl("sacl", &psd->sacl, ps, depth))
return False;
@@ -372,9 +326,9 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
return False;
}
- if ((psd->type & SEC_DESC_DACL_PRESENT) && off_dacl != 0) {
+ if ((psd->type & SEC_DESC_DACL_PRESENT) && psd->off_dacl != 0) {
tmp_offset = prs_offset(ps);
- if(!prs_set_offset(ps, old_offset + off_dacl))
+ if(!prs_set_offset(ps, old_offset + psd->off_dacl))
return False;
if(!sec_io_acl("dacl", &psd->dacl, ps, depth))
return False;
@@ -399,9 +353,7 @@ BOOL sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int
uint32 off_max_len;
uint32 old_offset;
uint32 size;
- uint32 len;
SEC_DESC_BUF *psdb;
- uint32 ptr;
if (ppsdb == NULL)
return False;
@@ -420,22 +372,20 @@ BOOL sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int
if(!prs_align(ps))
return False;
- if(!prs_uint32_pre("max_len", ps, depth, &psdb->sd_size, &off_max_len))
+ if(!prs_uint32_pre("max_len", ps, depth, &psdb->max_len, &off_max_len))
return False;
- ptr = 1;
- if(!prs_uint32 ("ptr ", ps, depth, &ptr))
+ if(!prs_uint32 ("ptr ", ps, depth, &psdb->ptr))
return False;
- len = sec_desc_size(psdb->sd);
- if(!prs_uint32_pre("len ", ps, depth, &len, &off_len))
+ if(!prs_uint32_pre("len ", ps, depth, &psdb->len, &off_len))
return False;
old_offset = prs_offset(ps);
/* reading, length is non-zero; writing, descriptor is non-NULL */
- if ((UNMARSHALLING(ps) && psdb->sd_size != 0) || (MARSHALLING(ps) && psdb->sd != NULL)) {
- if(!sec_io_desc("sec ", &psdb->sd, ps, depth))
+ if ((UNMARSHALLING(ps) && psdb->len != 0) || (MARSHALLING(ps) && psdb->sec != NULL)) {
+ if(!sec_io_desc("sec ", &psdb->sec, ps, depth))
return False;
}
@@ -443,10 +393,10 @@ BOOL sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int
return False;
size = prs_offset(ps) - old_offset;
- if(!prs_uint32_post("max_len", ps, depth, &psdb->sd_size, off_max_len, size == 0 ? psdb->sd_size : size))
+ if(!prs_uint32_post("max_len", ps, depth, &psdb->max_len, off_max_len, size == 0 ? psdb->max_len : size))
return False;
- if(!prs_uint32_post("len ", ps, depth, &len, off_len, size))
+ if(!prs_uint32_post("len ", ps, depth, &psdb->len, off_len, size))
return False;
return True;
diff --git a/source/rpc_parse/parse_shutdown.c b/source/rpc_parse/parse_shutdown.c
new file mode 100644
index 00000000000..da338077333
--- /dev/null
+++ b/source/rpc_parse/parse_shutdown.c
@@ -0,0 +1,268 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * RPC Pipe client / server routines
+ * Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003.
+ * Copyright (C) Gerald (Jerry) Carter 2002-2005.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_PARSE
+
+/*******************************************************************
+Inits a structure.
+********************************************************************/
+
+void init_shutdown_q_init(SHUTDOWN_Q_INIT *q_s, const char *msg,
+ uint32 timeout, BOOL do_reboot, BOOL force)
+{
+ q_s->server = TALLOC_P( get_talloc_ctx(), uint16 );
+ if (!q_s->server) {
+ smb_panic("init_shutdown_q_init: talloc fail.\n");
+ return;
+ }
+
+ *q_s->server = 0x1;
+
+ q_s->message = TALLOC_ZERO_P( get_talloc_ctx(), UNISTR4 );
+ if (!q_s->message) {
+ smb_panic("init_shutdown_q_init: talloc fail.\n");
+ return;
+ }
+
+ if ( msg && *msg ) {
+ init_unistr4( q_s->message, msg, UNI_FLAGS_NONE );
+
+ /* Win2000 is apparently very sensitive to these lengths */
+ /* do a special case here */
+
+ q_s->message->string->uni_max_len++;
+ q_s->message->size += 2;
+ }
+
+ q_s->timeout = timeout;
+
+ q_s->reboot = do_reboot ? 1 : 0;
+ q_s->force = force ? 1 : 0;
+}
+
+/*******************************************************************
+********************************************************************/
+
+void init_shutdown_q_init_ex(SHUTDOWN_Q_INIT_EX * q_u_ex, const char *msg,
+ uint32 timeout, BOOL do_reboot, BOOL force, uint32 reason)
+{
+ SHUTDOWN_Q_INIT q_u;
+
+ ZERO_STRUCT( q_u );
+
+ init_shutdown_q_init( &q_u, msg, timeout, do_reboot, force );
+
+ /* steal memory */
+
+ q_u_ex->server = q_u.server;
+ q_u_ex->message = q_u.message;
+
+ q_u_ex->reboot = q_u.reboot;
+ q_u_ex->force = q_u.force;
+
+ q_u_ex->reason = reason;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL shutdown_io_q_init(const char *desc, SHUTDOWN_Q_INIT *q_s, prs_struct *ps,
+ int depth)
+{
+ if (q_s == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "shutdown_io_q_init");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("server", ps, depth, (void**)&q_s->server, sizeof(uint16), (PRS_POINTER_CAST)prs_uint16))
+ return False;
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("message", ps, depth, (void**)&q_s->message, sizeof(UNISTR4), (PRS_POINTER_CAST)prs_unistr4))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("timeout", ps, depth, &(q_s->timeout)))
+ return False;
+
+ if (!prs_uint8("force ", ps, depth, &(q_s->force)))
+ return False;
+ if (!prs_uint8("reboot ", ps, depth, &(q_s->reboot)))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+BOOL shutdown_io_r_init(const char *desc, SHUTDOWN_R_INIT* r_s, prs_struct *ps,
+ int depth)
+{
+ if (r_s == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "shutdown_io_r_init");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_s->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a REG_Q_SHUTDOWN_EX structure.
+********************************************************************/
+
+BOOL shutdown_io_q_init_ex(const char *desc, SHUTDOWN_Q_INIT_EX * q_s, prs_struct *ps,
+ int depth)
+{
+ if (q_s == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "shutdown_io_q_init_ex");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("server", ps, depth, (void**)&q_s->server, sizeof(uint16), (PRS_POINTER_CAST)prs_uint16))
+ return False;
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("message", ps, depth, (void**)&q_s->message, sizeof(UNISTR4), (PRS_POINTER_CAST)prs_unistr4))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("timeout", ps, depth, &(q_s->timeout)))
+ return False;
+
+ if (!prs_uint8("force ", ps, depth, &(q_s->force)))
+ return False;
+ if (!prs_uint8("reboot ", ps, depth, &(q_s->reboot)))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+ if (!prs_uint32("reason", ps, depth, &(q_s->reason)))
+ return False;
+
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a REG_R_SHUTDOWN_EX structure.
+********************************************************************/
+BOOL shutdown_io_r_init_ex(const char *desc, SHUTDOWN_R_INIT_EX * r_s, prs_struct *ps,
+ int depth)
+{
+ if (r_s == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "shutdown_io_r_init_ex");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_s->status))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+Inits a structure.
+********************************************************************/
+void init_shutdown_q_abort(SHUTDOWN_Q_ABORT *q_s)
+{
+ q_s->server = TALLOC_P( get_talloc_ctx(), uint16 );
+ if (!q_s->server) {
+ smb_panic("init_shutdown_q_abort: talloc fail.\n");
+ return;
+ }
+
+ *q_s->server = 0x1;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+BOOL shutdown_io_q_abort(const char *desc, SHUTDOWN_Q_ABORT *q_s,
+ prs_struct *ps, int depth)
+{
+ if (q_s == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "shutdown_io_q_abort");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_pointer("server", ps, depth, (void**)&q_s->server, sizeof(uint16), (PRS_POINTER_CAST)prs_uint16))
+ return False;
+ if (!prs_align(ps))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+BOOL shutdown_io_r_abort(const char *desc, SHUTDOWN_R_ABORT *r_s,
+ prs_struct *ps, int depth)
+{
+ if (r_s == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "shutdown_io_r_abort");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_werror("status", ps, depth, &r_s->status))
+ return False;
+
+ return True;
+}
diff --git a/source/rpc_parse/parse_spoolss.c b/source/rpc_parse/parse_spoolss.c
index cd8d4174c14..38141515dc1 100644
--- a/source/rpc_parse/parse_spoolss.c
+++ b/source/rpc_parse/parse_spoolss.c
@@ -3,7 +3,7 @@
* RPC Pipe client / server routines
* Copyright (C) Andrew Tridgell 1992-2000,
* Copyright (C) Luke Kenneth Casson Leighton 1996-2000,
- * Copyright (C) Jean François Micouleau 1998-2000,
+ * Copyright (C) Jean François Micouleau 1998-2000,
* Copyright (C) Gerald Carter 2000-2002,
* Copyright (C) Tim Potter 2001-2002.
*
@@ -3842,8 +3842,10 @@ BOOL make_spoolss_q_setprinter(TALLOC_CTX *mem_ctx, SPOOL_Q_SETPRINTER *q_u,
q_u->secdesc_ctr = SMB_MALLOC_P(SEC_DESC_BUF);
if (!q_u->secdesc_ctr)
return False;
- q_u->secdesc_ctr->sd = secdesc;
- q_u->secdesc_ctr->sd_size = (secdesc) ? sizeof(SEC_DESC) + (2*sizeof(uint32)) : 0;
+ q_u->secdesc_ctr->ptr = (secdesc != NULL) ? 1: 0;
+ q_u->secdesc_ctr->max_len = (secdesc) ? sizeof(SEC_DESC) + (2*sizeof(uint32)) : 0;
+ q_u->secdesc_ctr->len = (secdesc) ? sizeof(SEC_DESC) + (2*sizeof(uint32)) : 0;
+ q_u->secdesc_ctr->sec = secdesc;
q_u->devmode_ctr.devmode_ptr = (devmode != NULL) ? 1 : 0;
q_u->devmode_ctr.size = (devmode != NULL) ? sizeof(DEVICEMODE) + (3*sizeof(uint32)) : 0;
@@ -3864,8 +3866,10 @@ BOOL make_spoolss_q_setprinter(TALLOC_CTX *mem_ctx, SPOOL_Q_SETPRINTER *q_u,
q_u->secdesc_ctr = SMB_MALLOC_P(SEC_DESC_BUF);
if (!q_u->secdesc_ctr)
return False;
- q_u->secdesc_ctr->sd_size = (secdesc) ? sizeof(SEC_DESC) + (2*sizeof(uint32)) : 0;
- q_u->secdesc_ctr->sd = secdesc;
+ q_u->secdesc_ctr->ptr = (secdesc != NULL) ? 1: 0;
+ q_u->secdesc_ctr->max_len = (secdesc) ? sizeof(SEC_DESC) + (2*sizeof(uint32)) : 0;
+ q_u->secdesc_ctr->len = (secdesc) ? sizeof(SEC_DESC) + (2*sizeof(uint32)) : 0;
+ q_u->secdesc_ctr->sec = secdesc;
break;
case 7:
diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c
new file mode 100644
index 00000000000..b562b6d6f79
--- /dev/null
+++ b/source/rpc_parse/parse_srv.c
@@ -0,0 +1,3557 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * RPC Pipe client / server routines
+ * Copyright (C) Andrew Tridgell 1992-1997,
+ * Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
+ * Copyright (C) Paul Ashton 1997,
+ * Copyright (C) Jeremy Allison 1999,
+ * Copyright (C) Nigel Williams 2001,
+ * Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2002.
+ * Copyright (C) Gerald (Jerry) Carter 2006.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_PARSE
+
+/*******************************************************************
+ Inits a SH_INFO_0_STR structure
+********************************************************************/
+
+void init_srv_share_info0_str(SH_INFO_0_STR *sh0, const char *net_name)
+{
+ DEBUG(5,("init_srv_share_info0_str\n"));
+
+ init_unistr2(&sh0->uni_netname, net_name, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info0_str(const char *desc, SH_INFO_0_STR *sh0, prs_struct *ps, int depth)
+{
+ if (sh0 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info0_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+ if(sh0->ptrs->ptr_netname)
+ if(!smb_io_unistr2("", &sh0->uni_netname, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ makes a SH_INFO_0 structure
+********************************************************************/
+
+void init_srv_share_info0(SH_INFO_0 *sh0, const char *net_name)
+{
+ DEBUG(5,("init_srv_share_info0: %s\n", net_name));
+
+ sh0->ptr_netname = (net_name != NULL) ? 1 : 0;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info0(const char *desc, SH_INFO_0 *sh0, prs_struct *ps, int depth)
+{
+ if (sh0 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info0");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_netname", ps, depth, &sh0->ptr_netname))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_1_STR structure
+********************************************************************/
+
+void init_srv_share_info1_str(SH_INFO_1_STR *sh1, const char *net_name, const char *remark)
+{
+ DEBUG(5,("init_srv_share_info1_str\n"));
+
+ init_unistr2(&sh1->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh1->uni_remark, remark, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1_str(const char *desc, SH_INFO_1_STR *sh1, prs_struct *ps, int depth)
+{
+ if (sh1 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(sh1->ptrs->ptr_netname)
+ if(!smb_io_unistr2("", &sh1->uni_netname, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(sh1->ptrs->ptr_remark)
+ if(!smb_io_unistr2("", &sh1->uni_remark, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ makes a SH_INFO_1 structure
+********************************************************************/
+
+void init_srv_share_info1(SH_INFO_1 *sh1, const char *net_name, uint32 type, const char *remark)
+{
+ DEBUG(5,("init_srv_share_info1: %s %8x %s\n", net_name, type, remark));
+
+ sh1->ptr_netname = (net_name != NULL) ? 1 : 0;
+ sh1->type = type;
+ sh1->ptr_remark = (remark != NULL) ? 1 : 0;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1(const char *desc, SH_INFO_1 *sh1, prs_struct *ps, int depth)
+{
+ if (sh1 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_netname", ps, depth, &sh1->ptr_netname))
+ return False;
+ if(!prs_uint32("type ", ps, depth, &sh1->type))
+ return False;
+ if(!prs_uint32("ptr_remark ", ps, depth, &sh1->ptr_remark))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_2_STR structure
+********************************************************************/
+
+void init_srv_share_info2_str(SH_INFO_2_STR *sh2,
+ const char *net_name, const char *remark,
+ const char *path, const char *passwd)
+{
+ DEBUG(5,("init_srv_share_info2_str\n"));
+
+ init_unistr2(&sh2->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh2->uni_remark, remark, UNI_STR_TERMINATE);
+ init_unistr2(&sh2->uni_path, path, UNI_STR_TERMINATE);
+ init_unistr2(&sh2->uni_passwd, passwd, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info2_str(const char *desc, SH_INFO_2 *sh, SH_INFO_2_STR *sh2, prs_struct *ps, int depth)
+{
+ if (sh2 == NULL)
+ return False;
+
+ if (UNMARSHALLING(ps))
+ ZERO_STRUCTP(sh2);
+
+ prs_debug(ps, depth, desc, "srv_io_share_info2_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if (sh->ptr_netname)
+ if(!smb_io_unistr2("", &sh2->uni_netname, True, ps, depth))
+ return False;
+
+ if (sh->ptr_remark)
+ if(!smb_io_unistr2("", &sh2->uni_remark, True, ps, depth))
+ return False;
+
+ if (sh->ptr_netname)
+ if(!smb_io_unistr2("", &sh2->uni_path, True, ps, depth))
+ return False;
+
+ if (sh->ptr_passwd)
+ if(!smb_io_unistr2("", &sh2->uni_passwd, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_2 structure
+********************************************************************/
+
+void init_srv_share_info2(SH_INFO_2 *sh2,
+ const char *net_name, uint32 type, const char *remark,
+ uint32 perms, uint32 max_uses, uint32 num_uses,
+ const char *path, const char *passwd)
+{
+ DEBUG(5,("init_srv_share_info2: %s %8x %s\n", net_name, type, remark));
+
+ sh2->ptr_netname = (net_name != NULL) ? 1 : 0;
+ sh2->type = type;
+ sh2->ptr_remark = (remark != NULL) ? 1 : 0;
+ sh2->perms = perms;
+ sh2->max_uses = max_uses;
+ sh2->num_uses = num_uses;
+ sh2->ptr_path = (path != NULL) ? 1 : 0;
+ sh2->ptr_passwd = (passwd != NULL) ? 1 : 0;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info2(const char *desc, SH_INFO_2 *sh2, prs_struct *ps, int depth)
+{
+ if (sh2 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info2");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_netname", ps, depth, &sh2->ptr_netname))
+ return False;
+ if(!prs_uint32("type ", ps, depth, &sh2->type))
+ return False;
+ if(!prs_uint32("ptr_remark ", ps, depth, &sh2->ptr_remark))
+ return False;
+ if(!prs_uint32("perms ", ps, depth, &sh2->perms))
+ return False;
+ if(!prs_uint32("max_uses ", ps, depth, &sh2->max_uses))
+ return False;
+ if(!prs_uint32("num_uses ", ps, depth, &sh2->num_uses))
+ return False;
+ if(!prs_uint32("ptr_path ", ps, depth, &sh2->ptr_path))
+ return False;
+ if(!prs_uint32("ptr_passwd ", ps, depth, &sh2->ptr_passwd))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_501_STR structure
+********************************************************************/
+
+void init_srv_share_info501_str(SH_INFO_501_STR *sh501,
+ const char *net_name, const char *remark)
+{
+ DEBUG(5,("init_srv_share_info501_str\n"));
+
+ init_unistr2(&sh501->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh501->uni_remark, remark, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Inits a SH_INFO_2 structure
+*******************************************************************/
+
+void init_srv_share_info501(SH_INFO_501 *sh501, const char *net_name, uint32 type, const char *remark, uint32 csc_policy)
+{
+ DEBUG(5,("init_srv_share_info501: %s %8x %s %08x\n", net_name, type,
+ remark, csc_policy));
+
+ ZERO_STRUCTP(sh501);
+
+ sh501->ptr_netname = (net_name != NULL) ? 1 : 0;
+ sh501->type = type;
+ sh501->ptr_remark = (remark != NULL) ? 1 : 0;
+ sh501->csc_policy = csc_policy;
+}
+
+/*******************************************************************
+ Reads of writes a structure.
+*******************************************************************/
+
+static BOOL srv_io_share_info501(const char *desc, SH_INFO_501 *sh501, prs_struct *ps, int depth)
+{
+ if (sh501 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info501");
+ depth++;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_netname", ps, depth, &sh501->ptr_netname))
+ return False;
+ if (!prs_uint32("type ", ps, depth, &sh501->type))
+ return False;
+ if (!prs_uint32("ptr_remark ", ps, depth, &sh501->ptr_remark))
+ return False;
+ if (!prs_uint32("csc_policy ", ps, depth, &sh501->csc_policy))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info501_str(const char *desc, SH_INFO_501_STR *sh501, prs_struct *ps, int depth)
+{
+ if (sh501 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info501_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+ if(!smb_io_unistr2("", &sh501->uni_netname, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if(!smb_io_unistr2("", &sh501->uni_remark, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_502 structure
+********************************************************************/
+
+void init_srv_share_info502(SH_INFO_502 *sh502,
+ const char *net_name, uint32 type, const char *remark,
+ uint32 perms, uint32 max_uses, uint32 num_uses,
+ const char *path, const char *passwd, SEC_DESC *psd, size_t sd_size)
+{
+ DEBUG(5,("init_srv_share_info502: %s %8x %s\n", net_name, type, remark));
+
+ ZERO_STRUCTP(sh502);
+
+ sh502->ptr_netname = (net_name != NULL) ? 1 : 0;
+ sh502->type = type;
+ sh502->ptr_remark = (remark != NULL) ? 1 : 0;
+ sh502->perms = perms;
+ sh502->max_uses = max_uses;
+ sh502->num_uses = num_uses;
+ sh502->ptr_path = (path != NULL) ? 1 : 0;
+ sh502->ptr_passwd = (passwd != NULL) ? 1 : 0;
+ sh502->reserved = 0; /* actual size within rpc */
+ sh502->sd_size = (uint32)sd_size;
+ sh502->ptr_sd = (psd != NULL) ? 1 : 0;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info502(const char *desc, SH_INFO_502 *sh502, prs_struct *ps, int depth)
+{
+ if (sh502 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info502");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_netname", ps, depth, &sh502->ptr_netname))
+ return False;
+ if(!prs_uint32("type ", ps, depth, &sh502->type))
+ return False;
+ if(!prs_uint32("ptr_remark ", ps, depth, &sh502->ptr_remark))
+ return False;
+ if(!prs_uint32("perms ", ps, depth, &sh502->perms))
+ return False;
+ if(!prs_uint32("max_uses ", ps, depth, &sh502->max_uses))
+ return False;
+ if(!prs_uint32("num_uses ", ps, depth, &sh502->num_uses))
+ return False;
+ if(!prs_uint32("ptr_path ", ps, depth, &sh502->ptr_path))
+ return False;
+ if(!prs_uint32("ptr_passwd ", ps, depth, &sh502->ptr_passwd))
+ return False;
+ if(!prs_uint32_pre("reserved ", ps, depth, &sh502->reserved, &sh502->reserved_offset))
+ return False;
+ if(!prs_uint32("ptr_sd ", ps, depth, &sh502->ptr_sd))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_502_STR structure
+********************************************************************/
+
+void init_srv_share_info502_str(SH_INFO_502_STR *sh502str,
+ const char *net_name, const char *remark,
+ const char *path, const char *passwd, SEC_DESC *psd, size_t sd_size)
+{
+ DEBUG(5,("init_srv_share_info502_str\n"));
+
+ init_unistr2(&sh502str->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh502str->uni_remark, remark, UNI_STR_TERMINATE);
+ init_unistr2(&sh502str->uni_path, path, UNI_STR_TERMINATE);
+ init_unistr2(&sh502str->uni_passwd, passwd, UNI_STR_TERMINATE);
+ sh502str->sd = psd;
+ sh502str->reserved = 0;
+ sh502str->sd_size = sd_size;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info502_str(const char *desc, SH_INFO_502_STR *sh502, prs_struct *ps, int depth)
+{
+ if (sh502 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info502_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(sh502->ptrs->ptr_netname) {
+ if(!smb_io_unistr2("", &sh502->uni_netname, True, ps, depth))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+
+ if(sh502->ptrs->ptr_remark) {
+ if(!smb_io_unistr2("", &sh502->uni_remark, True, ps, depth))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+
+ if(sh502->ptrs->ptr_path) {
+ if(!smb_io_unistr2("", &sh502->uni_path, True, ps, depth))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+
+ if(sh502->ptrs->ptr_passwd) {
+ if(!smb_io_unistr2("", &sh502->uni_passwd, True, ps, depth))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+
+ if(sh502->ptrs->ptr_sd) {
+ uint32 old_offset;
+ uint32 reserved_offset;
+
+ if(!prs_uint32_pre("reserved ", ps, depth, &sh502->reserved, &reserved_offset))
+ return False;
+
+ old_offset = prs_offset(ps);
+
+ if (!sec_io_desc(desc, &sh502->sd, ps, depth))
+ return False;
+
+ if(UNMARSHALLING(ps)) {
+
+ sh502->ptrs->sd_size = sh502->sd_size = sec_desc_size(sh502->sd);
+
+ prs_set_offset(ps, old_offset + sh502->reserved);
+ }
+
+ prs_align(ps);
+
+ if(MARSHALLING(ps)) {
+
+ sh502->ptrs->reserved = sh502->reserved = prs_offset(ps) - old_offset;
+ }
+
+ if(!prs_uint32_post("reserved ", ps, depth,
+ &sh502->reserved, reserved_offset, sh502->reserved))
+ return False;
+ if(!prs_uint32_post("reserved ", ps, depth,
+ &sh502->ptrs->reserved, sh502->ptrs->reserved_offset, sh502->ptrs->reserved))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_1004_STR structure
+********************************************************************/
+
+void init_srv_share_info1004_str(SH_INFO_1004_STR *sh1004, const char *remark)
+{
+ DEBUG(5,("init_srv_share_info1004_str\n"));
+
+ init_unistr2(&sh1004->uni_remark, remark, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1004_str(const char *desc, SH_INFO_1004_STR *sh1004, prs_struct *ps, int depth)
+{
+ if (sh1004 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1004_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+ if(sh1004->ptrs->ptr_remark)
+ if(!smb_io_unistr2("", &sh1004->uni_remark, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ makes a SH_INFO_1004 structure
+********************************************************************/
+
+void init_srv_share_info1004(SH_INFO_1004 *sh1004, const char *remark)
+{
+ DEBUG(5,("init_srv_share_info1004: %s\n", remark));
+
+ sh1004->ptr_remark = (remark != NULL) ? 1 : 0;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1004(const char *desc, SH_INFO_1004 *sh1004, prs_struct *ps, int depth)
+{
+ if (sh1004 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1004");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_remark", ps, depth, &sh1004->ptr_remark))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1005(const char* desc, SRV_SHARE_INFO_1005* sh1005, prs_struct* ps, int depth)
+{
+ if(sh1005 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1005");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("share_info_flags", ps, depth,
+ &sh1005->share_info_flags))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1006(const char* desc, SRV_SHARE_INFO_1006* sh1006, prs_struct* ps, int depth)
+{
+ if(sh1006 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1006");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("max uses ", ps, depth, &sh1006->max_uses))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SH_INFO_1007_STR structure
+********************************************************************/
+
+void init_srv_share_info1007_str(SH_INFO_1007_STR *sh1007, const char *alternate_directory_name)
+{
+ DEBUG(5,("init_srv_share_info1007_str\n"));
+
+ init_unistr2(&sh1007->uni_AlternateDirectoryName, alternate_directory_name, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1007_str(const char *desc, SH_INFO_1007_STR *sh1007, prs_struct *ps, int depth)
+{
+ if (sh1007 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1007_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+ if(sh1007->ptrs->ptr_AlternateDirectoryName)
+ if(!smb_io_unistr2("", &sh1007->uni_AlternateDirectoryName, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ makes a SH_INFO_1007 structure
+********************************************************************/
+
+void init_srv_share_info1007(SH_INFO_1007 *sh1007, uint32 flags, const char *alternate_directory_name)
+{
+ DEBUG(5,("init_srv_share_info1007: %s\n", alternate_directory_name));
+
+ sh1007->flags = flags;
+ sh1007->ptr_AlternateDirectoryName = (alternate_directory_name != NULL) ? 1 : 0;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1007(const char *desc, SH_INFO_1007 *sh1007, prs_struct *ps, int depth)
+{
+ if (sh1007 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1007");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("flags ", ps, depth, &sh1007->flags))
+ return False;
+ if(!prs_uint32("ptr_Alter..", ps, depth, &sh1007->ptr_AlternateDirectoryName))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_share_info1501(const char* desc, SRV_SHARE_INFO_1501* sh1501,
+ prs_struct* ps, int depth)
+{
+ if(sh1501 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1501");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if (!sec_io_desc_buf(desc, &sh1501->sdb, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_struct *ps, int depth)
+{
+ if (ctr == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_share_ctr");
+ depth++;
+
+ if (UNMARSHALLING(ps)) {
+ memset(ctr, '\0', sizeof(SRV_SHARE_INFO_CTR));
+ }
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("info_level", ps, depth, &ctr->info_level))
+ return False;
+
+ if(!prs_uint32("switch_value", ps, depth, &ctr->switch_value))
+ return False;
+ if(!prs_uint32("ptr_share_info", ps, depth, &ctr->ptr_share_info))
+ return False;
+
+ if (ctr->ptr_share_info == 0)
+ return True;
+
+ if(!prs_uint32("num_entries", ps, depth, &ctr->num_entries))
+ return False;
+ if(!prs_uint32("ptr_entries", ps, depth, &ctr->ptr_entries))
+ return False;
+
+ if (ctr->ptr_entries == 0) {
+ if (ctr->num_entries == 0)
+ return True;
+ else
+ return False;
+ }
+
+ if(!prs_uint32("num_entries2", ps, depth, &ctr->num_entries2))
+ return False;
+
+ if (ctr->num_entries2 != ctr->num_entries)
+ return False;
+
+ switch (ctr->switch_value) {
+
+ case 0:
+ {
+ SRV_SHARE_INFO_0 *info0 = ctr->share.info0;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info0 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_0, num_entries)))
+ return False;
+ ctr->share.info0 = info0;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info0("", &info0[i].info_0, ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ info0[i].info_0_str.ptrs = &info0[i].info_0;
+ if(!srv_io_share_info0_str("", &info0[i].info_0_str, ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 1:
+ {
+ SRV_SHARE_INFO_1 *info1 = ctr->share.info1;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info1 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_1, num_entries)))
+ return False;
+ ctr->share.info1 = info1;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info1("", &info1[i].info_1, ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ info1[i].info_1_str.ptrs = &info1[i].info_1;
+ if(!srv_io_share_info1_str("", &info1[i].info_1_str, ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 2:
+ {
+ SRV_SHARE_INFO_2 *info2 = ctr->share.info2;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info2 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_2,num_entries)))
+ return False;
+ ctr->share.info2 = info2;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info2("", &info2[i].info_2, ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info2_str("", &info2[i].info_2, &info2[i].info_2_str, ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 501:
+ {
+ SRV_SHARE_INFO_501 *info501 = ctr->share.info501;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info501 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_501, num_entries)))
+ return False;
+ ctr->share.info501 = info501;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if (!srv_io_share_info501("", &info501[i].info_501, ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if (!srv_io_share_info501_str("", &info501[i].info_501_str, ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 502:
+ {
+ SRV_SHARE_INFO_502 *info502 = ctr->share.info502;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info502 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_502,num_entries)))
+ return False;
+ ctr->share.info502 = info502;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info502("", &info502[i].info_502, ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ info502[i].info_502_str.ptrs = &info502[i].info_502;
+ if(!srv_io_share_info502_str("", &info502[i].info_502_str, ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 1004:
+ {
+ SRV_SHARE_INFO_1004 *info1004 = ctr->share.info1004;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info1004 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1004,num_entries)))
+ return False;
+ ctr->share.info1004 = info1004;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info1004("", &info1004[i].info_1004, ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ info1004[i].info_1004_str.ptrs = &info1004[i].info_1004;
+ if(!srv_io_share_info1004_str("", &info1004[i].info_1004_str, ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 1005:
+ {
+ SRV_SHARE_INFO_1005 *info1005 = ctr->share.info1005;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info1005 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1005,num_entries)))
+ return False;
+ ctr->share.info1005 = info1005;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info1005("", &info1005[i], ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 1006:
+ {
+ SRV_SHARE_INFO_1006 *info1006 = ctr->share.info1006;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info1006 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1006,num_entries)))
+ return False;
+ ctr->share.info1006 = info1006;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info1006("", &info1006[i], ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 1007:
+ {
+ SRV_SHARE_INFO_1007 *info1007 = ctr->share.info1007;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info1007 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1007,num_entries)))
+ return False;
+ ctr->share.info1007 = info1007;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info1007("", &info1007[i].info_1007, ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ info1007[i].info_1007_str.ptrs = &info1007[i].info_1007;
+ if(!srv_io_share_info1007_str("", &info1007[i].info_1007_str, ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ case 1501:
+ {
+ SRV_SHARE_INFO_1501 *info1501 = ctr->share.info1501;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info1501 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1501,num_entries)))
+ return False;
+ ctr->share.info1501 = info1501;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_share_info1501("", &info1501[i], ps, depth))
+ return False;
+ }
+
+ break;
+ }
+
+ default:
+ DEBUG(5,("%s no share info at switch_value %d\n",
+ tab_depth(depth), ctr->switch_value));
+ break;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SRV_Q_NET_SHARE_ENUM structure.
+********************************************************************/
+
+void init_srv_q_net_share_enum(SRV_Q_NET_SHARE_ENUM *q_n,
+ const char *srv_name, uint32 info_level,
+ uint32 preferred_len, ENUM_HND *hnd)
+{
+
+ DEBUG(5,("init_q_net_share_enum\n"));
+
+ init_buf_unistr2(&q_n->uni_srv_name, &q_n->ptr_srv_name, srv_name);
+
+ q_n->ctr.info_level = q_n->ctr.switch_value = info_level;
+ q_n->ctr.ptr_share_info = 1;
+ q_n->ctr.num_entries = 0;
+ q_n->ctr.ptr_entries = 0;
+ q_n->ctr.num_entries2 = 0;
+ q_n->preferred_len = preferred_len;
+
+ memcpy(&q_n->enum_hnd, hnd, sizeof(*hnd));
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_share_enum(const char *desc, SRV_Q_NET_SHARE_ENUM *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_share_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!srv_io_srv_share_ctr("share_ctr", &q_n->ctr, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("preferred_len", ps, depth, &q_n->preferred_len))
+ return False;
+
+ if(!smb_io_enum_hnd("enum_hnd", &q_n->enum_hnd, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_share_enum(const char *desc, SRV_R_NET_SHARE_ENUM *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_share_enum");
+ depth++;
+
+ if(!srv_io_srv_share_ctr("share_ctr", &r_n->ctr, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("total_entries", ps, depth, &r_n->total_entries))
+ return False;
+
+ if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ initialises a structure.
+********************************************************************/
+
+BOOL init_srv_q_net_share_get_info(SRV_Q_NET_SHARE_GET_INFO *q_n, const char *srv_name, const char *share_name, uint32 info_level)
+{
+
+ uint32 ptr_share_name;
+
+ DEBUG(5,("init_srv_q_net_share_get_info\n"));
+
+ init_buf_unistr2(&q_n->uni_srv_name, &q_n->ptr_srv_name, srv_name);
+ init_buf_unistr2(&q_n->uni_share_name, &ptr_share_name, share_name);
+
+ q_n->info_level = info_level;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_share_get_info(const char *desc, SRV_Q_NET_SHARE_GET_INFO *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_share_get_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_share_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("info_level", ps, depth, &q_n->info_level))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_share_info(const char *desc, prs_struct *ps, int depth, SRV_SHARE_INFO *r_n)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_share_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("switch_value ", ps, depth, &r_n->switch_value ))
+ return False;
+
+ if(!prs_uint32("ptr_share_ctr", ps, depth, &r_n->ptr_share_ctr))
+ return False;
+
+ if (r_n->ptr_share_ctr != 0) {
+ switch (r_n->switch_value) {
+ case 0:
+ if(!srv_io_share_info0("", &r_n->share.info0.info_0, ps, depth))
+ return False;
+
+ /* allow access to pointers in the str part. */
+ r_n->share.info0.info_0_str.ptrs = &r_n->share.info0.info_0;
+
+ if(!srv_io_share_info0_str("", &r_n->share.info0.info_0_str, ps, depth))
+ return False;
+
+ break;
+ case 1:
+ if(!srv_io_share_info1("", &r_n->share.info1.info_1, ps, depth))
+ return False;
+
+ /* allow access to pointers in the str part. */
+ r_n->share.info1.info_1_str.ptrs = &r_n->share.info1.info_1;
+
+ if(!srv_io_share_info1_str("", &r_n->share.info1.info_1_str, ps, depth))
+ return False;
+
+ break;
+ case 2:
+ if(!srv_io_share_info2("", &r_n->share.info2.info_2, ps, depth))
+ return False;
+
+ if(!srv_io_share_info2_str("", &r_n->share.info2.info_2, &r_n->share.info2.info_2_str, ps, depth))
+ return False;
+
+ break;
+ case 501:
+ if (!srv_io_share_info501("", &r_n->share.info501.info_501, ps, depth))
+ return False;
+ if (!srv_io_share_info501_str("", &r_n->share.info501.info_501_str, ps, depth))
+ return False;
+ break;
+
+ case 502:
+ if(!srv_io_share_info502("", &r_n->share.info502.info_502, ps, depth))
+ return False;
+
+ /* allow access to pointers in the str part. */
+ r_n->share.info502.info_502_str.ptrs = &r_n->share.info502.info_502;
+
+ if(!srv_io_share_info502_str("", &r_n->share.info502.info_502_str, ps, depth))
+ return False;
+ break;
+ case 1004:
+ if(!srv_io_share_info1004("", &r_n->share.info1004.info_1004, ps, depth))
+ return False;
+
+ /* allow access to pointers in the str part. */
+ r_n->share.info1004.info_1004_str.ptrs = &r_n->share.info1004.info_1004;
+
+ if(!srv_io_share_info1004_str("", &r_n->share.info1004.info_1004_str, ps, depth))
+ return False;
+ break;
+ case 1005:
+ if(!srv_io_share_info1005("", &r_n->share.info1005, ps, depth))
+ return False;
+ break;
+ case 1006:
+ if(!srv_io_share_info1006("", &r_n->share.info1006, ps, depth))
+ return False;
+ break;
+ case 1007:
+ if(!srv_io_share_info1007("", &r_n->share.info1007.info_1007, ps, depth))
+ return False;
+
+ /* allow access to pointers in the str part. */
+ r_n->share.info1007.info_1007_str.ptrs = &r_n->share.info1007.info_1007;
+
+ if(!srv_io_share_info1007_str("", &r_n->share.info1007.info_1007_str, ps, depth))
+ return False;
+ break;
+ case 1501:
+ if (!srv_io_share_info1501("", &r_n->share.info1501, ps, depth))
+ return False;
+ default:
+ DEBUG(5,("%s no share info at switch_value %d\n",
+ tab_depth(depth), r_n->switch_value));
+ break;
+ }
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_share_get_info(const char *desc, SRV_R_NET_SHARE_GET_INFO *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_share_get_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!srv_io_srv_share_info("info ", ps, depth, &r_n->info))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ intialises a structure.
+********************************************************************/
+
+BOOL init_srv_q_net_share_set_info(SRV_Q_NET_SHARE_SET_INFO *q_n,
+ const char *srv_name,
+ const char *share_name,
+ uint32 info_level,
+ const SRV_SHARE_INFO *info)
+{
+
+ uint32 ptr_share_name;
+
+ DEBUG(5,("init_srv_q_net_share_set_info\n"));
+
+ init_buf_unistr2(&q_n->uni_srv_name, &q_n->ptr_srv_name, srv_name);
+ init_buf_unistr2(&q_n->uni_share_name, &ptr_share_name, share_name);
+
+ q_n->info_level = info_level;
+
+ q_n->info = *info;
+
+ q_n->ptr_parm_error = 1;
+ q_n->parm_error = 0;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_share_set_info(const char *desc, SRV_Q_NET_SHARE_SET_INFO *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_share_set_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_share_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("info_level", ps, depth, &q_n->info_level))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!srv_io_srv_share_info("info ", ps, depth, &q_n->info))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if(!prs_uint32("ptr_parm_error", ps, depth, &q_n->ptr_parm_error))
+ return False;
+ if(q_n->ptr_parm_error!=0) {
+ if(!prs_uint32("parm_error", ps, depth, &q_n->parm_error))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_share_set_info(const char *desc, SRV_R_NET_SHARE_SET_INFO *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_share_set_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_parm_error ", ps, depth, &r_n->ptr_parm_error))
+ return False;
+
+ if(r_n->ptr_parm_error) {
+
+ if(!prs_uint32("parm_error ", ps, depth, &r_n->parm_error))
+ return False;
+ }
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_share_add(const char *desc, SRV_Q_NET_SHARE_ADD *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_share_add");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("info_level", ps, depth, &q_n->info_level))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!srv_io_srv_share_info("info ", ps, depth, &q_n->info))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_err_index", ps, depth, &q_n->ptr_err_index))
+ return False;
+ if (q_n->ptr_err_index)
+ if (!prs_uint32("err_index", ps, depth, &q_n->err_index))
+ return False;
+
+ return True;
+}
+
+void init_srv_q_net_share_add(SRV_Q_NET_SHARE_ADD *q, const char *srvname,
+ const char *netname, uint32 type, const char *remark,
+ uint32 perms, uint32 max_uses, uint32 num_uses,
+ const char *path, const char *passwd,
+ int level, SEC_DESC *sd)
+{
+ switch(level) {
+ case 502: {
+ size_t sd_size = sec_desc_size(sd);
+ q->ptr_srv_name = 1;
+ init_unistr2(&q->uni_srv_name, srvname, UNI_STR_TERMINATE);
+ q->info.switch_value = q->info_level = level;
+ q->info.ptr_share_ctr = 1;
+ init_srv_share_info502(&q->info.share.info502.info_502, netname, type,
+ remark, perms, max_uses, num_uses, path, passwd, sd, sd_size);
+ init_srv_share_info502_str(&q->info.share.info502.info_502_str, netname,
+ remark, path, passwd, sd, sd_size);
+ q->ptr_err_index = 1;
+ q->err_index = 0;
+ }
+ break;
+ case 2:
+ default:
+ q->ptr_srv_name = 1;
+ init_unistr2(&q->uni_srv_name, srvname, UNI_STR_TERMINATE);
+ q->info.switch_value = q->info_level = level;
+ q->info.ptr_share_ctr = 1;
+ init_srv_share_info2(&q->info.share.info2.info_2, netname, type,
+ remark, perms, max_uses, num_uses, path, passwd);
+ init_srv_share_info2_str(&q->info.share.info2.info_2_str, netname,
+ remark, path, passwd);
+ q->ptr_err_index = 1;
+ q->err_index = 0;
+ break;
+ }
+}
+
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_share_add(const char *desc, SRV_R_NET_SHARE_ADD *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_share_add");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_parm_error", ps, depth, &r_n->ptr_parm_error))
+ return False;
+
+ if(r_n->ptr_parm_error) {
+
+ if(!prs_uint32("parm_error", ps, depth, &r_n->parm_error))
+ return False;
+ }
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ initialises a structure.
+********************************************************************/
+
+void init_srv_q_net_share_del(SRV_Q_NET_SHARE_DEL *del, const char *srvname,
+ const char *sharename)
+{
+ del->ptr_srv_name = 1;
+ init_unistr2(&del->uni_srv_name, srvname, UNI_STR_TERMINATE);
+ init_unistr2(&del->uni_share_name, sharename, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_share_del(const char *desc, SRV_Q_NET_SHARE_DEL *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_share_del");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_share_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if(!prs_uint32("reserved", ps, depth, &q_n->reserved))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_share_del(const char *desc, SRV_R_NET_SHARE_DEL *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_share_del");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &q_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SESS_INFO_0_STR structure
+********************************************************************/
+
+void init_srv_sess_info0( SESS_INFO_0 *ss0, const char *name )
+{
+ ZERO_STRUCTP( ss0 );
+
+ if ( name ) {
+ if ( (ss0->sharename = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL ) {
+ DEBUG(0,("init_srv_sess_info0: talloc failed!\n"));
+ return;
+ }
+ init_unistr2( ss0->sharename, name, UNI_STR_TERMINATE );
+ }
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_sess_info_0(const char *desc, SRV_SESS_INFO_0 *ss0, prs_struct *ps, int depth)
+{
+ if (ss0 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_sess_info_0");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("num_entries_read", ps, depth, &ss0->num_entries_read))
+ return False;
+ if(!prs_uint32("ptr_sess_info", ps, depth, &ss0->ptr_sess_info))
+ return False;
+
+ if (ss0->ptr_sess_info != 0) {
+ uint32 i;
+ uint32 num_entries = ss0->num_entries_read;
+
+ if (num_entries > MAX_SESS_ENTRIES) {
+ num_entries = MAX_SESS_ENTRIES; /* report this! */
+ }
+
+ if(!prs_uint32("num_entries_read2", ps, depth, &ss0->num_entries_read2))
+ return False;
+
+ SMB_ASSERT_ARRAY(ss0->info_0, num_entries);
+
+ /* first the pointers */
+ for (i = 0; i < num_entries; i++) {
+ if ( !prs_io_unistr2_p("", ps, depth, &ss0->info_0[i].sharename ) )
+ return False;
+ }
+
+ /* now the strings */
+ for (i = 0; i < num_entries; i++) {
+ if ( !prs_io_unistr2("sharename", ps, depth, ss0->info_0[i].sharename ))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SESS_INFO_1 structure
+********************************************************************/
+
+void init_srv_sess_info1( SESS_INFO_1 *ss1, const char *name, const char *user,
+ uint32 num_opens, uint32 open_time, uint32 idle_time,
+ uint32 user_flags)
+{
+ DEBUG(5,("init_srv_sess_info1: %s\n", name));
+
+ ZERO_STRUCTP( ss1 );
+
+ if ( name ) {
+ if ( (ss1->sharename = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL ) {
+ DEBUG(0,("init_srv_sess_info0: talloc failed!\n"));
+ return;
+ }
+ init_unistr2( ss1->sharename, name, UNI_STR_TERMINATE );
+ }
+
+ if ( user ) {
+ if ( (ss1->username = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL ) {
+ DEBUG(0,("init_srv_sess_info0: talloc failed!\n"));
+ return;
+ }
+ init_unistr2( ss1->username, user, UNI_STR_TERMINATE );
+ }
+
+ ss1->num_opens = num_opens;
+ ss1->open_time = open_time;
+ ss1->idle_time = idle_time;
+ ss1->user_flags = user_flags;
+}
+
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_sess_info_1(const char *desc, SRV_SESS_INFO_1 *ss1, prs_struct *ps, int depth)
+{
+ if (ss1 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_sess_info_1");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("num_entries_read", ps, depth, &ss1->num_entries_read))
+ return False;
+ if(!prs_uint32("ptr_sess_info", ps, depth, &ss1->ptr_sess_info))
+ return False;
+
+ if (ss1->ptr_sess_info != 0) {
+ uint32 i;
+ uint32 num_entries = ss1->num_entries_read;
+
+ if (num_entries > MAX_SESS_ENTRIES) {
+ num_entries = MAX_SESS_ENTRIES; /* report this! */
+ }
+
+ if(!prs_uint32("num_entries_read2", ps, depth, &ss1->num_entries_read2))
+ return False;
+
+ SMB_ASSERT_ARRAY(ss1->info_1, num_entries);
+
+ /* first the pointers and flags */
+
+ for (i = 0; i < num_entries; i++) {
+
+ if ( !prs_io_unistr2_p("", ps, depth, &ss1->info_1[i].sharename ))
+ return False;
+ if ( !prs_io_unistr2_p("", ps, depth, &ss1->info_1[i].username ))
+ return False;
+
+ if(!prs_uint32("num_opens ", ps, depth, &ss1->info_1[i].num_opens))
+ return False;
+ if(!prs_uint32("open_time ", ps, depth, &ss1->info_1[i].open_time))
+ return False;
+ if(!prs_uint32("idle_time ", ps, depth, &ss1->info_1[i].idle_time))
+ return False;
+ if(!prs_uint32("user_flags", ps, depth, &ss1->info_1[i].user_flags))
+ return False;
+ }
+
+ /* now the strings */
+
+ for (i = 0; i < num_entries; i++) {
+ if ( !prs_io_unistr2("", ps, depth, ss1->info_1[i].sharename ))
+ return False;
+ if ( !prs_io_unistr2("", ps, depth, ss1->info_1[i].username ))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_sess_ctr(const char *desc, SRV_SESS_INFO_CTR **pp_ctr, prs_struct *ps, int depth)
+{
+ SRV_SESS_INFO_CTR *ctr = *pp_ctr;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_sess_ctr");
+ depth++;
+
+ if(UNMARSHALLING(ps)) {
+ ctr = *pp_ctr = PRS_ALLOC_MEM(ps, SRV_SESS_INFO_CTR, 1);
+ if (ctr == NULL)
+ return False;
+ }
+
+ if (ctr == NULL)
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("switch_value", ps, depth, &ctr->switch_value))
+ return False;
+ if(!prs_uint32("ptr_sess_ctr", ps, depth, &ctr->ptr_sess_ctr))
+ return False;
+
+ if (ctr->ptr_sess_ctr != 0) {
+ switch (ctr->switch_value) {
+ case 0:
+ if(!srv_io_srv_sess_info_0("", &ctr->sess.info0, ps, depth))
+ return False;
+ break;
+ case 1:
+ if(!srv_io_srv_sess_info_1("", &ctr->sess.info1, ps, depth))
+ return False;
+ break;
+ default:
+ DEBUG(5,("%s no session info at switch_value %d\n",
+ tab_depth(depth), ctr->switch_value));
+ break;
+ }
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_sess_enum(const char *desc, SRV_Q_NET_SESS_ENUM *q_u, prs_struct *ps, int depth)
+{
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_sess_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("servername", ps, depth, (void**)&q_u->servername, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("qualifier", ps, depth, (void**)&q_u->qualifier, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("username", ps, depth, (void**)&q_u->username, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("sess_level", ps, depth, &q_u->sess_level))
+ return False;
+
+ if (q_u->sess_level != (uint32)-1) {
+ if(!srv_io_srv_sess_ctr("sess_ctr", &q_u->ctr, ps, depth))
+ return False;
+ }
+
+ if(!prs_uint32("preferred_len", ps, depth, &q_u->preferred_len))
+ return False;
+
+ if(!smb_io_enum_hnd("enum_hnd", &q_u->enum_hnd, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_sess_enum(const char *desc, SRV_R_NET_SESS_ENUM *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_sess_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("sess_level", ps, depth, &r_n->sess_level))
+ return False;
+
+ if (r_n->sess_level != (uint32)-1) {
+ if(!srv_io_srv_sess_ctr("sess_ctr", &r_n->ctr, ps, depth))
+ return False;
+ }
+
+ if(!prs_uint32("total_entries", ps, depth, &r_n->total_entries))
+ return False;
+ if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
+ return False;
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SRV_Q_NET_SESS_DEL structure.
+********************************************************************/
+
+void init_srv_q_net_sess_del(SRV_Q_NET_SESS_DEL *q_n, const char *srv_name,
+ const char *cli_name, const char *user_name)
+{
+ DEBUG(5,("init_q_net_sess_enum\n"));
+
+ init_buf_unistr2(&q_n->uni_srv_name, &q_n->ptr_srv_name, srv_name);
+ init_buf_unistr2(&q_n->uni_cli_name, &q_n->ptr_cli_name, cli_name);
+ init_buf_unistr2(&q_n->uni_user_name, &q_n->ptr_user_name, user_name);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_sess_del(const char *desc, SRV_Q_NET_SESS_DEL *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_sess_del");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_cli_name", ps, depth, &q_n->ptr_cli_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_cli_name, q_n->ptr_cli_name, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ if(!prs_uint32("ptr_user_name", ps, depth, &q_n->ptr_user_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_user_name, q_n->ptr_user_name, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_sess_del(const char *desc, SRV_R_NET_SESS_DEL *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_sess_del");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a CONN_INFO_0 structure
+********************************************************************/
+
+void init_srv_conn_info0(CONN_INFO_0 *ss0, uint32 id)
+{
+ DEBUG(5,("init_srv_conn_info0\n"));
+
+ ss0->id = id;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_conn_info0(const char *desc, CONN_INFO_0 *ss0, prs_struct *ps, int depth)
+{
+ if (ss0 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_conn_info0");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("id", ps, depth, &ss0->id))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_conn_info_0(const char *desc, SRV_CONN_INFO_0 *ss0, prs_struct *ps, int depth)
+{
+ if (ss0 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_conn_info_0");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("num_entries_read", ps, depth, &ss0->num_entries_read))
+ return False;
+ if(!prs_uint32("ptr_conn_info", ps, depth, &ss0->ptr_conn_info))
+ return False;
+
+ if (ss0->ptr_conn_info != 0) {
+ int i;
+ int num_entries = ss0->num_entries_read;
+
+ if (num_entries > MAX_CONN_ENTRIES) {
+ num_entries = MAX_CONN_ENTRIES; /* report this! */
+ }
+
+ if(!prs_uint32("num_entries_read2", ps, depth, &ss0->num_entries_read2))
+ return False;
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_conn_info0("", &ss0->info_0[i], ps, depth))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a CONN_INFO_1_STR structure
+********************************************************************/
+
+void init_srv_conn_info1_str(CONN_INFO_1_STR *ss1, const char *usr_name, const char *net_name)
+{
+ DEBUG(5,("init_srv_conn_info1_str\n"));
+
+ init_unistr2(&ss1->uni_usr_name, usr_name, UNI_STR_TERMINATE);
+ init_unistr2(&ss1->uni_net_name, net_name, UNI_STR_TERMINATE);
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_conn_info1_str(const char *desc, CONN_INFO_1_STR *ss1, prs_struct *ps, int depth)
+{
+ if (ss1 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_conn_info1_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_unistr2("", &ss1->uni_usr_name, True, ps, depth))
+ return False;
+ if(!smb_io_unistr2("", &ss1->uni_net_name, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a CONN_INFO_1 structure
+********************************************************************/
+
+void init_srv_conn_info1(CONN_INFO_1 *ss1,
+ uint32 id, uint32 type,
+ uint32 num_opens, uint32 num_users, uint32 open_time,
+ const char *usr_name, const char *net_name)
+{
+ DEBUG(5,("init_srv_conn_info1: %s %s\n", usr_name, net_name));
+
+ ss1->id = id ;
+ ss1->type = type ;
+ ss1->num_opens = num_opens ;
+ ss1->num_users = num_users;
+ ss1->open_time = open_time;
+
+ ss1->ptr_usr_name = (usr_name != NULL) ? 1 : 0;
+ ss1->ptr_net_name = (net_name != NULL) ? 1 : 0;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_conn_info1(const char *desc, CONN_INFO_1 *ss1, prs_struct *ps, int depth)
+{
+ if (ss1 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_conn_info1");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("id ", ps, depth, &ss1->id))
+ return False;
+ if(!prs_uint32("type ", ps, depth, &ss1->type))
+ return False;
+ if(!prs_uint32("num_opens ", ps, depth, &ss1->num_opens))
+ return False;
+ if(!prs_uint32("num_users ", ps, depth, &ss1->num_users))
+ return False;
+ if(!prs_uint32("open_time ", ps, depth, &ss1->open_time))
+ return False;
+
+ if(!prs_uint32("ptr_usr_name", ps, depth, &ss1->ptr_usr_name))
+ return False;
+ if(!prs_uint32("ptr_net_name", ps, depth, &ss1->ptr_net_name))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_conn_info_1(const char *desc, SRV_CONN_INFO_1 *ss1, prs_struct *ps, int depth)
+{
+ if (ss1 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_conn_info_1");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("num_entries_read", ps, depth, &ss1->num_entries_read))
+ return False;
+ if(!prs_uint32("ptr_conn_info", ps, depth, &ss1->ptr_conn_info))
+ return False;
+
+ if (ss1->ptr_conn_info != 0) {
+ int i;
+ int num_entries = ss1->num_entries_read;
+
+ if (num_entries > MAX_CONN_ENTRIES) {
+ num_entries = MAX_CONN_ENTRIES; /* report this! */
+ }
+
+ if(!prs_uint32("num_entries_read2", ps, depth, &ss1->num_entries_read2))
+ return False;
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_conn_info1("", &ss1->info_1[i], ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_conn_info1_str("", &ss1->info_1_str[i], ps, depth))
+ return False;
+ }
+
+ if(!prs_align(ps))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_conn_ctr(const char *desc, SRV_CONN_INFO_CTR **pp_ctr, prs_struct *ps, int depth)
+{
+ SRV_CONN_INFO_CTR *ctr = *pp_ctr;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_conn_ctr");
+ depth++;
+
+ if (UNMARSHALLING(ps)) {
+ ctr = *pp_ctr = PRS_ALLOC_MEM(ps, SRV_CONN_INFO_CTR, 1);
+ if (ctr == NULL)
+ return False;
+ }
+
+ if (ctr == NULL)
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("switch_value", ps, depth, &ctr->switch_value))
+ return False;
+ if(!prs_uint32("ptr_conn_ctr", ps, depth, &ctr->ptr_conn_ctr))
+ return False;
+
+ if (ctr->ptr_conn_ctr != 0) {
+ switch (ctr->switch_value) {
+ case 0:
+ if(!srv_io_srv_conn_info_0("", &ctr->conn.info0, ps, depth))
+ return False;
+ break;
+ case 1:
+ if(!srv_io_srv_conn_info_1("", &ctr->conn.info1, ps, depth))
+ return False;
+ break;
+ default:
+ DEBUG(5,("%s no connection info at switch_value %d\n",
+ tab_depth(depth), ctr->switch_value));
+ break;
+ }
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+void init_srv_q_net_conn_enum(SRV_Q_NET_CONN_ENUM *q_n,
+ const char *srv_name, const char *qual_name,
+ uint32 conn_level, SRV_CONN_INFO_CTR *ctr,
+ uint32 preferred_len,
+ ENUM_HND *hnd)
+{
+ DEBUG(5,("init_q_net_conn_enum\n"));
+
+ q_n->ctr = ctr;
+
+ init_buf_unistr2(&q_n->uni_srv_name, &q_n->ptr_srv_name, srv_name );
+ init_buf_unistr2(&q_n->uni_qual_name, &q_n->ptr_qual_name, qual_name);
+
+ q_n->conn_level = conn_level;
+ q_n->preferred_len = preferred_len;
+
+ memcpy(&q_n->enum_hnd, hnd, sizeof(*hnd));
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_conn_enum(const char *desc, SRV_Q_NET_CONN_ENUM *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_conn_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name ", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, q_n->ptr_srv_name, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_qual_name", ps, depth, &q_n->ptr_qual_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_qual_name, q_n->ptr_qual_name, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("conn_level", ps, depth, &q_n->conn_level))
+ return False;
+
+ if (q_n->conn_level != (uint32)-1) {
+ if(!srv_io_srv_conn_ctr("conn_ctr", &q_n->ctr, ps, depth))
+ return False;
+ }
+
+ if(!prs_uint32("preferred_len", ps, depth, &q_n->preferred_len))
+ return False;
+
+ if(!smb_io_enum_hnd("enum_hnd", &q_n->enum_hnd, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_conn_enum(const char *desc, SRV_R_NET_CONN_ENUM *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_conn_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("conn_level", ps, depth, &r_n->conn_level))
+ return False;
+
+ if (r_n->conn_level != (uint32)-1) {
+ if(!srv_io_srv_conn_ctr("conn_ctr", &r_n->ctr, ps, depth))
+ return False;
+ }
+
+ if(!prs_uint32("total_entries", ps, depth, &r_n->total_entries))
+ return False;
+ if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
+ return False;
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_file_info3_str(const char *desc, FILE_INFO_3 *sh1, prs_struct *ps, int depth)
+{
+ if (sh1 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_file_info3_str");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if ( sh1->path ) {
+ if(!smb_io_unistr2("", sh1->path, True, ps, depth))
+ return False;
+ }
+
+ if ( sh1->user ) {
+ if(!smb_io_unistr2("", sh1->user, True, ps, depth))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a FILE_INFO_3 structure
+********************************************************************/
+
+void init_srv_file_info3( FILE_INFO_3 *fl3, uint32 id, uint32 perms, uint32 num_locks,
+ const char *user_name, const char *path_name )
+{
+ fl3->id = id;
+ fl3->perms = perms;
+ fl3->num_locks = num_locks;
+
+ if ( path_name ) {
+ if ( (fl3->path = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL )
+ return;
+ init_unistr2(fl3->path, path_name, UNI_STR_TERMINATE);
+ }
+
+ if ( user_name ) {
+ if ( (fl3->user = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL )
+ return;
+ init_unistr2(fl3->user, user_name, UNI_STR_TERMINATE);
+ }
+
+ return;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_file_info3(const char *desc, FILE_INFO_3 *fl3, prs_struct *ps, int depth)
+{
+ uint32 uni_p;
+
+ if (fl3 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_file_info3");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("id ", ps, depth, &fl3->id))
+ return False;
+ if(!prs_uint32("perms ", ps, depth, &fl3->perms))
+ return False;
+ if(!prs_uint32("num_locks ", ps, depth, &fl3->num_locks))
+ return False;
+
+ uni_p = fl3->path ? 1 : 0;
+ if(!prs_uint32("ptr", ps, depth, &uni_p))
+ return False;
+ if (UNMARSHALLING(ps)) {
+ if ( (fl3->path = PRS_ALLOC_MEM( ps, UNISTR2, 1)) == NULL ) {
+ return False;
+ }
+ }
+
+ uni_p = fl3->user ? 1 : 0;
+ if(!prs_uint32("ptr", ps, depth, &uni_p))
+ return False;
+ if (UNMARSHALLING(ps)) {
+ if ( (fl3->user = PRS_ALLOC_MEM( ps, UNISTR2, 1)) == NULL ) {
+ return False;
+ }
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+static BOOL srv_io_srv_file_ctr(const char *desc, SRV_FILE_INFO_CTR *ctr, prs_struct *ps, int depth)
+{
+ if (ctr == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_srv_file_ctr");
+ depth++;
+
+ if (UNMARSHALLING(ps)) {
+ ZERO_STRUCTP(ctr);
+ }
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("level", ps, depth, &ctr->level))
+ return False;
+
+ if(!prs_uint32("ptr_file_info", ps, depth, &ctr->ptr_file_info))
+ return False;
+ if(!prs_uint32("num_entries", ps, depth, &ctr->num_entries))
+ return False;
+ if(!prs_uint32("ptr_entries", ps, depth, &ctr->ptr_entries))
+ return False;
+
+ if (ctr->ptr_entries == 0)
+ return True;
+
+ if(!prs_uint32("num_entries2", ps, depth, &ctr->num_entries2))
+ return False;
+
+ switch (ctr->level) {
+ case 3: {
+ FILE_INFO_3 *info3 = ctr->file.info3;
+ int num_entries = ctr->num_entries;
+ int i;
+
+ if (UNMARSHALLING(ps) && num_entries) {
+ if (!(info3 = PRS_ALLOC_MEM(ps, FILE_INFO_3, num_entries)))
+ return False;
+ ctr->file.info3 = info3;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_file_info3("", &ctr->file.info3[i], ps, depth))
+ return False;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ if(!srv_io_file_info3_str("", &ctr->file.info3[i], ps, depth))
+ return False;
+ }
+ break;
+ }
+ default:
+ DEBUG(5,("%s no file info at switch_value %d\n", tab_depth(depth), ctr->level));
+ break;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SRV_Q_NET_FILE_ENUM structure.
+********************************************************************/
+
+void init_srv_q_net_file_enum(SRV_Q_NET_FILE_ENUM *q_n,
+ const char *srv_name, const char *qual_name,
+ const char *user_name,
+ uint32 file_level, SRV_FILE_INFO_CTR *ctr,
+ uint32 preferred_len,
+ ENUM_HND *hnd)
+{
+ uint32 ptr;
+
+ if ( srv_name ) {
+ if ( (q_n->servername = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL )
+ return;
+ init_buf_unistr2(q_n->servername, &ptr, srv_name);
+ }
+
+ if ( qual_name ) {
+ if ( (q_n->qualifier = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL )
+ return;
+ init_buf_unistr2(q_n->qualifier, &ptr, qual_name);
+ }
+
+ if ( user_name ) {
+ if ( (q_n->username = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL )
+ return;
+ init_buf_unistr2(q_n->username, &ptr, user_name);
+ }
+
+ q_n->level = q_n->ctr.level = file_level;
+
+ q_n->preferred_len = preferred_len;
+ q_n->ctr.ptr_file_info = 1;
+ q_n->ctr.num_entries = 0;
+ q_n->ctr.num_entries2 = 0;
+
+ memcpy(&q_n->enum_hnd, hnd, sizeof(*hnd));
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_file_enum(const char *desc, SRV_Q_NET_FILE_ENUM *q_u, prs_struct *ps, int depth)
+{
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_file_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("servername", ps, depth, (void**)&q_u->servername, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("qualifier", ps, depth, (void**)&q_u->qualifier, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("username", ps, depth, (void**)&q_u->username, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("level", ps, depth, &q_u->level))
+ return False;
+
+ if (q_u->level != (uint32)-1) {
+ if(!srv_io_srv_file_ctr("file_ctr", &q_u->ctr, ps, depth))
+ return False;
+ }
+
+ if(!prs_uint32("preferred_len", ps, depth, &q_u->preferred_len))
+ return False;
+
+ if(!smb_io_enum_hnd("enum_hnd", &q_u->enum_hnd, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_file_enum(const char *desc, SRV_R_NET_FILE_ENUM *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_file_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("level", ps, depth, &r_n->level))
+ return False;
+
+ if (r_n->level != 0) {
+ if(!srv_io_srv_file_ctr("file_ctr", &r_n->ctr, ps, depth))
+ return False;
+ }
+
+ if(!prs_uint32("total_entries", ps, depth, &r_n->total_entries))
+ return False;
+ if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
+ return False;
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Initialize a net file close request
+********************************************************************/
+void init_srv_q_net_file_close(SRV_Q_NET_FILE_CLOSE *q_n, const char *server,
+ uint32 file_id)
+{
+ if ( server ) {
+ if ( (q_n->servername = TALLOC_P( get_talloc_ctx(), UNISTR2 )) == NULL ) {
+ return;
+ }
+ init_unistr2(q_n->servername, server, UNI_STR_TERMINATE);
+ }
+
+ q_n->file_id = file_id;
+}
+
+/*******************************************************************
+ Inits a SRV_INFO_100 structure.
+ ********************************************************************/
+
+void init_srv_info_100(SRV_INFO_100 *sv100, uint32 platform_id, const char *name)
+{
+ DEBUG(5,("init_srv_info_100\n"));
+
+ sv100->platform_id = platform_id;
+ init_buf_unistr2(&sv100->uni_name, &sv100->ptr_name, name);
+}
+
+/*******************************************************************
+ Reads or writes a SRV_INFO_101 structure.
+ ********************************************************************/
+
+static BOOL srv_io_info_100(const char *desc, SRV_INFO_100 *sv100, prs_struct *ps, int depth)
+{
+ if (sv100 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_info_100");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("platform_id ", ps, depth, &sv100->platform_id))
+ return False;
+ if(!prs_uint32("ptr_name ", ps, depth, &sv100->ptr_name))
+ return False;
+
+ if(!smb_io_unistr2("uni_name ", &sv100->uni_name, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ Inits a SRV_INFO_101 structure.
+ ********************************************************************/
+
+void init_srv_info_101(SRV_INFO_101 *sv101, uint32 platform_id, const char *name,
+ uint32 ver_major, uint32 ver_minor,
+ uint32 srv_type, const char *comment)
+{
+ DEBUG(5,("init_srv_info_101\n"));
+
+ sv101->platform_id = platform_id;
+ init_buf_unistr2(&sv101->uni_name, &sv101->ptr_name, name);
+ sv101->ver_major = ver_major;
+ sv101->ver_minor = ver_minor;
+ sv101->srv_type = srv_type;
+ init_buf_unistr2(&sv101->uni_comment, &sv101->ptr_comment, comment);
+}
+
+/*******************************************************************
+ Reads or writes a SRV_INFO_101 structure.
+ ********************************************************************/
+
+static BOOL srv_io_info_101(const char *desc, SRV_INFO_101 *sv101, prs_struct *ps, int depth)
+{
+ if (sv101 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_info_101");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("platform_id ", ps, depth, &sv101->platform_id))
+ return False;
+ if(!prs_uint32("ptr_name ", ps, depth, &sv101->ptr_name))
+ return False;
+ if(!prs_uint32("ver_major ", ps, depth, &sv101->ver_major))
+ return False;
+ if(!prs_uint32("ver_minor ", ps, depth, &sv101->ver_minor))
+ return False;
+ if(!prs_uint32("srv_type ", ps, depth, &sv101->srv_type))
+ return False;
+ if(!prs_uint32("ptr_comment ", ps, depth, &sv101->ptr_comment))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_unistr2("uni_name ", &sv101->uni_name, True, ps, depth))
+ return False;
+ if(!smb_io_unistr2("uni_comment ", &sv101->uni_comment, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SRV_INFO_102 structure.
+ ********************************************************************/
+
+void init_srv_info_102(SRV_INFO_102 *sv102, uint32 platform_id, const char *name,
+ const char *comment, uint32 ver_major, uint32 ver_minor,
+ uint32 srv_type, uint32 users, uint32 disc, uint32 hidden,
+ uint32 announce, uint32 ann_delta, uint32 licenses,
+ const char *usr_path)
+{
+ DEBUG(5,("init_srv_info_102\n"));
+
+ sv102->platform_id = platform_id;
+ init_buf_unistr2(&sv102->uni_name, &sv102->ptr_name, name);
+ sv102->ver_major = ver_major;
+ sv102->ver_minor = ver_minor;
+ sv102->srv_type = srv_type;
+ init_buf_unistr2(&sv102->uni_comment, &sv102->ptr_comment, comment);
+
+ /* same as 101 up to here */
+
+ sv102->users = users;
+ sv102->disc = disc;
+ sv102->hidden = hidden;
+ sv102->announce = announce;
+ sv102->ann_delta = ann_delta;
+ sv102->licenses = licenses;
+ init_buf_unistr2(&sv102->uni_usr_path, &sv102->ptr_usr_path, usr_path);
+}
+
+
+/*******************************************************************
+ Reads or writes a SRV_INFO_102 structure.
+ ********************************************************************/
+
+static BOOL srv_io_info_102(const char *desc, SRV_INFO_102 *sv102, prs_struct *ps, int depth)
+{
+ if (sv102 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_info102");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("platform_id ", ps, depth, &sv102->platform_id))
+ return False;
+ if(!prs_uint32("ptr_name ", ps, depth, &sv102->ptr_name))
+ return False;
+ if(!prs_uint32("ver_major ", ps, depth, &sv102->ver_major))
+ return False;
+ if(!prs_uint32("ver_minor ", ps, depth, &sv102->ver_minor))
+ return False;
+ if(!prs_uint32("srv_type ", ps, depth, &sv102->srv_type))
+ return False;
+ if(!prs_uint32("ptr_comment ", ps, depth, &sv102->ptr_comment))
+ return False;
+
+ /* same as 101 up to here */
+
+ if(!prs_uint32("users ", ps, depth, &sv102->users))
+ return False;
+ if(!prs_uint32("disc ", ps, depth, &sv102->disc))
+ return False;
+ if(!prs_uint32("hidden ", ps, depth, &sv102->hidden))
+ return False;
+ if(!prs_uint32("announce ", ps, depth, &sv102->announce))
+ return False;
+ if(!prs_uint32("ann_delta ", ps, depth, &sv102->ann_delta))
+ return False;
+ if(!prs_uint32("licenses ", ps, depth, &sv102->licenses))
+ return False;
+ if(!prs_uint32("ptr_usr_path", ps, depth, &sv102->ptr_usr_path))
+ return False;
+
+ if(!smb_io_unistr2("uni_name ", &sv102->uni_name, True, ps, depth))
+ return False;
+ if(!prs_align(ps))
+ return False;
+ if(!smb_io_unistr2("uni_comment ", &sv102->uni_comment, True, ps, depth))
+ return False;
+ if(!prs_align(ps))
+ return False;
+ if(!smb_io_unistr2("uni_usr_path", &sv102->uni_usr_path, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a SRV_INFO_102 structure.
+ ********************************************************************/
+
+static BOOL srv_io_info_ctr(const char *desc, SRV_INFO_CTR *ctr, prs_struct *ps, int depth)
+{
+ if (ctr == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_info_ctr");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("switch_value", ps, depth, &ctr->switch_value))
+ return False;
+ if(!prs_uint32("ptr_srv_ctr ", ps, depth, &ctr->ptr_srv_ctr))
+ return False;
+
+ if (ctr->ptr_srv_ctr != 0 && ctr->switch_value != 0 && ctr != NULL) {
+ switch (ctr->switch_value) {
+ case 100:
+ if(!srv_io_info_100("sv100", &ctr->srv.sv100, ps, depth))
+ return False;
+ break;
+ case 101:
+ if(!srv_io_info_101("sv101", &ctr->srv.sv101, ps, depth))
+ return False;
+ break;
+ case 102:
+ if(!srv_io_info_102("sv102", &ctr->srv.sv102, ps, depth))
+ return False;
+ break;
+ default:
+ DEBUG(5,("%s no server info at switch_value %d\n",
+ tab_depth(depth), ctr->switch_value));
+ break;
+ }
+ if(!prs_align(ps))
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SRV_Q_NET_SRV_GET_INFO structure.
+ ********************************************************************/
+
+void init_srv_q_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *srv,
+ const char *server_name, uint32 switch_value)
+{
+ DEBUG(5,("init_srv_q_net_srv_get_info\n"));
+
+ init_buf_unistr2(&srv->uni_srv_name, &srv->ptr_srv_name, server_name);
+
+ srv->switch_value = switch_value;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_srv_get_info(const char *desc, SRV_Q_NET_SRV_GET_INFO *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_srv_get_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name ", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("switch_value ", ps, depth, &q_n->switch_value))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a SRV_R_NET_SRV_GET_INFO structure.
+ ********************************************************************/
+
+void init_srv_r_net_srv_get_info(SRV_R_NET_SRV_GET_INFO *srv,
+ uint32 switch_value, SRV_INFO_CTR *ctr, WERROR status)
+{
+ DEBUG(5,("init_srv_r_net_srv_get_info\n"));
+
+ srv->ctr = ctr;
+
+ if (W_ERROR_IS_OK(status)) {
+ srv->ctr->switch_value = switch_value;
+ srv->ctr->ptr_srv_ctr = 1;
+ } else {
+ srv->ctr->switch_value = 0;
+ srv->ctr->ptr_srv_ctr = 0;
+ }
+
+ srv->status = status;
+}
+
+/*******************************************************************
+ Inits a SRV_R_NET_SRV_SET_INFO structure.
+ ********************************************************************/
+
+void init_srv_r_net_srv_set_info(SRV_R_NET_SRV_SET_INFO *srv,
+ uint32 switch_value, WERROR status)
+{
+ DEBUG(5,("init_srv_r_net_srv_set_info\n"));
+
+ srv->switch_value = switch_value;
+ srv->status = status;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_srv_set_info(const char *desc, SRV_Q_NET_SRV_SET_INFO *q_n,
+ prs_struct *ps, int depth)
+{
+ prs_debug(ps, depth, desc, "srv_io_q_net_srv_set_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name ", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("switch_value ", ps, depth, &q_n->switch_value))
+ return False;
+
+ if (UNMARSHALLING(ps)) {
+ q_n->ctr = PRS_ALLOC_MEM(ps, SRV_INFO_CTR, 1);
+
+ if (!q_n->ctr)
+ return False;
+ }
+
+ if(!srv_io_info_ctr("ctr", q_n->ctr, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_r_net_srv_get_info(const char *desc, SRV_R_NET_SRV_GET_INFO *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_srv_get_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!srv_io_info_ctr("ctr", r_n->ctr, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_r_net_srv_set_info(const char *desc, SRV_R_NET_SRV_SET_INFO *r_n,
+ prs_struct *ps, int depth)
+{
+ prs_debug(ps, depth, desc, "srv_io_r_net_srv_set_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("switch value ", ps, depth, &r_n->switch_value))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_q_net_remote_tod(const char *desc, SRV_Q_NET_REMOTE_TOD *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_remote_tod");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name ", ps, depth, &q_n->ptr_srv_name))
+ return False;
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a TIME_OF_DAY_INFO structure.
+ ********************************************************************/
+
+static BOOL srv_io_time_of_day_info(const char *desc, TIME_OF_DAY_INFO *tod, prs_struct *ps, int depth)
+{
+ if (tod == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_time_of_day_info");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("elapsedt ", ps, depth, &tod->elapsedt))
+ return False;
+ if(!prs_uint32("msecs ", ps, depth, &tod->msecs))
+ return False;
+ if(!prs_uint32("hours ", ps, depth, &tod->hours))
+ return False;
+ if(!prs_uint32("mins ", ps, depth, &tod->mins))
+ return False;
+ if(!prs_uint32("secs ", ps, depth, &tod->secs))
+ return False;
+ if(!prs_uint32("hunds ", ps, depth, &tod->hunds))
+ return False;
+ if(!prs_uint32("timezone ", ps, depth, &tod->zone))
+ return False;
+ if(!prs_uint32("tintervals ", ps, depth, &tod->tintervals))
+ return False;
+ if(!prs_uint32("day ", ps, depth, &tod->day))
+ return False;
+ if(!prs_uint32("month ", ps, depth, &tod->month))
+ return False;
+ if(!prs_uint32("year ", ps, depth, &tod->year))
+ return False;
+ if(!prs_uint32("weekday ", ps, depth, &tod->weekday))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a TIME_OF_DAY_INFO structure.
+ ********************************************************************/
+
+void init_time_of_day_info(TIME_OF_DAY_INFO *tod, uint32 elapsedt, uint32 msecs,
+ uint32 hours, uint32 mins, uint32 secs, uint32 hunds,
+ uint32 zone, uint32 tintervals, uint32 day,
+ uint32 month, uint32 year, uint32 weekday)
+{
+ DEBUG(5,("init_time_of_day_info\n"));
+
+ tod->elapsedt = elapsedt;
+ tod->msecs = msecs;
+ tod->hours = hours;
+ tod->mins = mins;
+ tod->secs = secs;
+ tod->hunds = hunds;
+ tod->zone = zone;
+ tod->tintervals = tintervals;
+ tod->day = day;
+ tod->month = month;
+ tod->year = year;
+ tod->weekday = weekday;
+}
+
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_r_net_remote_tod(const char *desc, SRV_R_NET_REMOTE_TOD *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_remote_tod");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_tod ", ps, depth, &r_n->ptr_srv_tod))
+ return False;
+
+ if(!srv_io_time_of_day_info("tod", r_n->tod, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ initialises a structure.
+ ********************************************************************/
+
+BOOL init_srv_q_net_disk_enum(SRV_Q_NET_DISK_ENUM *q_n,
+ const char *srv_name,
+ uint32 preferred_len,
+ ENUM_HND *enum_hnd
+ )
+{
+
+
+ DEBUG(5,("init_srv_q_net_srv_disk_enum\n"));
+
+ init_buf_unistr2(&q_n->uni_srv_name, &q_n->ptr_srv_name, srv_name);
+
+ q_n->disk_enum_ctr.level = 0;
+ q_n->disk_enum_ctr.disk_info_ptr = 0;
+
+ q_n->preferred_len = preferred_len;
+ memcpy(&q_n->enum_hnd, enum_hnd, sizeof(*enum_hnd));
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_q_net_disk_enum(const char *desc, SRV_Q_NET_DISK_ENUM *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_disk_enum");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("level", ps, depth, &q_n->disk_enum_ctr.level))
+ return False;
+
+ if(!prs_uint32("entries_read", ps, depth, &q_n->disk_enum_ctr.entries_read))
+ return False;
+
+ if(!prs_uint32("buffer", ps, depth, &q_n->disk_enum_ctr.disk_info_ptr))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("preferred_len", ps, depth, &q_n->preferred_len))
+ return False;
+ if(!smb_io_enum_hnd("enum_hnd", &q_n->enum_hnd, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_r_net_disk_enum(const char *desc, SRV_R_NET_DISK_ENUM *r_n, prs_struct *ps, int depth)
+{
+
+ unsigned int i;
+ uint32 entries_read, entries_read2, entries_read3;
+
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_disk_enum");
+ depth++;
+
+ entries_read = entries_read2 = entries_read3 = r_n->disk_enum_ctr.entries_read;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("entries_read", ps, depth, &entries_read))
+ return False;
+ if(!prs_uint32("ptr_disk_info", ps, depth, &r_n->disk_enum_ctr.disk_info_ptr))
+ return False;
+
+ /*this may be max, unknown, actual?*/
+
+ if(!prs_uint32("max_elements", ps, depth, &entries_read2))
+ return False;
+ if(!prs_uint32("unknown", ps, depth, &r_n->disk_enum_ctr.unknown))
+ return False;
+ if(!prs_uint32("actual_elements", ps, depth, &entries_read3))
+ return False;
+
+ r_n->disk_enum_ctr.entries_read = entries_read3;
+
+ if(UNMARSHALLING(ps) && entries_read3) {
+
+ DISK_INFO *dinfo;
+
+ if(!(dinfo = PRS_ALLOC_MEM(ps, DISK_INFO, entries_read3)))
+ return False;
+ r_n->disk_enum_ctr.disk_info = dinfo;
+ }
+
+ for(i=0; i < entries_read3; i++) {
+
+ if(!prs_uint32("unknown", ps, depth, &r_n->disk_enum_ctr.disk_info[i].unknown))
+ return False;
+
+ if(!smb_io_unistr3("disk_name", &r_n->disk_enum_ctr.disk_info[i].disk_name, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+ }
+
+ if(!prs_uint32("total_entries", ps, depth, &r_n->total_entries))
+ return False;
+
+ if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_q_net_name_validate(const char *desc, SRV_Q_NET_NAME_VALIDATE *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_name_validate");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("servername", ps, depth, (void**)&q_n->servername, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->sharename, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("type", ps, depth, &q_n->type))
+ return False;
+
+ if(!prs_uint32("flags", ps, depth, &q_n->flags))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+ ********************************************************************/
+
+BOOL srv_io_r_net_name_validate(const char *desc, SRV_R_NET_NAME_VALIDATE *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_name_validate");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_file_query_secdesc(const char *desc, SRV_Q_NET_FILE_QUERY_SECDESC *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_file_query_secdesc");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_qual_name", ps, depth, &q_n->ptr_qual_name))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_qual_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_file_name, True, ps, depth))
+ return False;
+
+ if(!prs_uint32("unknown1", ps, depth, &q_n->unknown1))
+ return False;
+
+ if(!prs_uint32("unknown2", ps, depth, &q_n->unknown2))
+ return False;
+
+ if(!prs_uint32("unknown3", ps, depth, &q_n->unknown3))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_file_query_secdesc(const char *desc, SRV_R_NET_FILE_QUERY_SECDESC *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_file_query_secdesc");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_response", ps, depth, &r_n->ptr_response))
+ return False;
+
+ if(!prs_uint32("size_response", ps, depth, &r_n->size_response))
+ return False;
+
+ if(!prs_uint32("ptr_secdesc", ps, depth, &r_n->ptr_secdesc))
+ return False;
+
+ if(!prs_uint32("size_secdesc", ps, depth, &r_n->size_secdesc))
+ return False;
+
+ if(!sec_io_desc("sec_desc", &r_n->sec_desc, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_file_set_secdesc(const char *desc, SRV_Q_NET_FILE_SET_SECDESC *q_n, prs_struct *ps, int depth)
+{
+ if (q_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_file_set_secdesc");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("ptr_qual_name", ps, depth, &q_n->ptr_qual_name))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_qual_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_unistr2("", &q_n->uni_file_name, True, ps, depth))
+ return False;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("sec_info", ps, depth, &q_n->sec_info))
+ return False;
+
+ if(!prs_uint32("size_set", ps, depth, &q_n->size_set))
+ return False;
+
+ if(!prs_uint32("ptr_secdesc", ps, depth, &q_n->ptr_secdesc))
+ return False;
+
+ if(!prs_uint32("size_secdesc", ps, depth, &q_n->size_secdesc))
+ return False;
+
+ if(!sec_io_desc("sec_desc", &q_n->sec_desc, ps, depth))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_r_net_file_set_secdesc(const char *desc, SRV_R_NET_FILE_SET_SECDESC *r_n, prs_struct *ps, int depth)
+{
+ if (r_n == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_r_net_file_set_secdesc");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Inits a structure
+********************************************************************/
+
+void init_srv_q_net_remote_tod(SRV_Q_NET_REMOTE_TOD *q_u, const char *server)
+{
+ q_u->ptr_srv_name = 1;
+ init_unistr2(&q_u->uni_srv_name, server, UNI_STR_TERMINATE);
+}
+
+
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+
+BOOL srv_io_q_net_file_close(const char *desc, SRV_Q_NET_FILE_CLOSE *q_u, prs_struct *ps, int depth)
+{
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_q_net_file_close");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_pointer("servername", ps, depth, (void**)&q_u->servername, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
+ return False;
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("file_id", ps, depth, &q_u->file_id))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+BOOL srv_io_r_net_file_close(const char *desc, SRV_R_NET_FILE_CLOSE *r_n,
+ prs_struct *ps, int depth)
+{
+ prs_debug(ps, depth, desc, "srv_io_r_net_file_close");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_n->status))
+ return False;
+
+ return True;
+}
diff --git a/source/rpc_parse/parse_svcctl.c b/source/rpc_parse/parse_svcctl.c
index 8302218e34e..3846812f31d 100644
--- a/source/rpc_parse/parse_svcctl.c
+++ b/source/rpc_parse/parse_svcctl.c
@@ -196,6 +196,53 @@ uint32 svcctl_sizeof_service_config( SERVICE_CONFIG *config )
return size;
}
+
+
+/*******************************************************************
+********************************************************************/
+
+BOOL svcctl_io_q_close_service(const char *desc, SVCCTL_Q_CLOSE_SERVICE *q_u, prs_struct *ps, int depth)
+{
+
+ if (q_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "svcctl_io_q_close_service");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("scm_pol", &q_u->handle, ps, depth))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+********************************************************************/
+
+BOOL svcctl_io_r_close_service(const char *desc, SVCCTL_R_CLOSE_SERVICE *r_u, prs_struct *ps, int depth)
+{
+ if (r_u == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "svcctl_io_r_close_service");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!smb_io_pol_hnd("pol_handle", &r_u->handle, ps, depth))
+ return False;
+
+ if(!prs_werror("status", ps, depth, &r_u->status))
+ return False;
+
+ return True;
+}
+
/*******************************************************************
********************************************************************/
diff --git a/source/rpc_server/srv_dfs.c b/source/rpc_server/srv_dfs.c
new file mode 100644
index 00000000000..44a9c06a3ca
--- /dev/null
+++ b/source/rpc_server/srv_dfs.c
@@ -0,0 +1,602 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "includes.h"
+#include "nterr.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC
+
+/******************************************************************
+ api_dfs_GetManagerVersion
+ *****************************************************************/
+
+static BOOL api_dfs_GetManagerVersion(pipes_struct *p)
+{
+ NETDFS_Q_DFS_GETMANAGERVERSION q_u;
+ NETDFS_R_DFS_GETMANAGERVERSION r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_GetManagerVersion("", &q_u, data, 0))
+ return False;
+
+ _dfs_GetManagerVersion(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_GetManagerVersion("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_Add
+ *****************************************************************/
+
+static BOOL api_dfs_Add(pipes_struct *p)
+{
+ NETDFS_Q_DFS_ADD q_u;
+ NETDFS_R_DFS_ADD r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_Add("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_Add(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_Add("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_Remove
+ *****************************************************************/
+
+static BOOL api_dfs_Remove(pipes_struct *p)
+{
+ NETDFS_Q_DFS_REMOVE q_u;
+ NETDFS_R_DFS_REMOVE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_Remove("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_Remove(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_Remove("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_SetInfo
+ *****************************************************************/
+
+static BOOL api_dfs_SetInfo(pipes_struct *p)
+{
+ NETDFS_Q_DFS_SETINFO q_u;
+ NETDFS_R_DFS_SETINFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_SetInfo("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_SetInfo(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_SetInfo("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_GetInfo
+ *****************************************************************/
+
+static BOOL api_dfs_GetInfo(pipes_struct *p)
+{
+ NETDFS_Q_DFS_GETINFO q_u;
+ NETDFS_R_DFS_GETINFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_GetInfo("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_GetInfo(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_GetInfo("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_Enum
+ *****************************************************************/
+
+static BOOL api_dfs_Enum(pipes_struct *p)
+{
+ NETDFS_Q_DFS_ENUM q_u;
+ NETDFS_R_DFS_ENUM r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_Enum("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_Enum(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_Enum("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_Rename
+ *****************************************************************/
+
+static BOOL api_dfs_Rename(pipes_struct *p)
+{
+ NETDFS_Q_DFS_RENAME q_u;
+ NETDFS_R_DFS_RENAME r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_Rename("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_Rename(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_Rename("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_Move
+ *****************************************************************/
+
+static BOOL api_dfs_Move(pipes_struct *p)
+{
+ NETDFS_Q_DFS_MOVE q_u;
+ NETDFS_R_DFS_MOVE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_Move("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_Move(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_Move("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_ManagerGetConfigInfo
+ *****************************************************************/
+
+static BOOL api_dfs_ManagerGetConfigInfo(pipes_struct *p)
+{
+ NETDFS_Q_DFS_MANAGERGETCONFIGINFO q_u;
+ NETDFS_R_DFS_MANAGERGETCONFIGINFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_ManagerGetConfigInfo("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_ManagerGetConfigInfo(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_ManagerGetConfigInfo("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_ManagerSendSiteInfo
+ *****************************************************************/
+
+static BOOL api_dfs_ManagerSendSiteInfo(pipes_struct *p)
+{
+ NETDFS_Q_DFS_MANAGERSENDSITEINFO q_u;
+ NETDFS_R_DFS_MANAGERSENDSITEINFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_ManagerSendSiteInfo("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_ManagerSendSiteInfo(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_ManagerSendSiteInfo("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_AddFtRoot
+ *****************************************************************/
+
+static BOOL api_dfs_AddFtRoot(pipes_struct *p)
+{
+ NETDFS_Q_DFS_ADDFTROOT q_u;
+ NETDFS_R_DFS_ADDFTROOT r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_AddFtRoot("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_AddFtRoot(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_AddFtRoot("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_RemoveFtRoot
+ *****************************************************************/
+
+static BOOL api_dfs_RemoveFtRoot(pipes_struct *p)
+{
+ NETDFS_Q_DFS_REMOVEFTROOT q_u;
+ NETDFS_R_DFS_REMOVEFTROOT r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_RemoveFtRoot("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_RemoveFtRoot(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_RemoveFtRoot("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_AddStdRoot
+ *****************************************************************/
+
+static BOOL api_dfs_AddStdRoot(pipes_struct *p)
+{
+ NETDFS_Q_DFS_ADDSTDROOT q_u;
+ NETDFS_R_DFS_ADDSTDROOT r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_AddStdRoot("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_AddStdRoot(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_AddStdRoot("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_RemoveStdRoot
+ *****************************************************************/
+
+static BOOL api_dfs_RemoveStdRoot(pipes_struct *p)
+{
+ NETDFS_Q_DFS_REMOVESTDROOT q_u;
+ NETDFS_R_DFS_REMOVESTDROOT r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_RemoveStdRoot("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_RemoveStdRoot(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_RemoveStdRoot("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_ManagerInitialize
+ *****************************************************************/
+
+static BOOL api_dfs_ManagerInitialize(pipes_struct *p)
+{
+ NETDFS_Q_DFS_MANAGERINITIALIZE q_u;
+ NETDFS_R_DFS_MANAGERINITIALIZE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_ManagerInitialize("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_ManagerInitialize(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_ManagerInitialize("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_AddStdRootForced
+ *****************************************************************/
+
+static BOOL api_dfs_AddStdRootForced(pipes_struct *p)
+{
+ NETDFS_Q_DFS_ADDSTDROOTFORCED q_u;
+ NETDFS_R_DFS_ADDSTDROOTFORCED r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_AddStdRootForced("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_AddStdRootForced(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_AddStdRootForced("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_GetDcAddress
+ *****************************************************************/
+
+static BOOL api_dfs_GetDcAddress(pipes_struct *p)
+{
+ NETDFS_Q_DFS_GETDCADDRESS q_u;
+ NETDFS_R_DFS_GETDCADDRESS r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_GetDcAddress("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_GetDcAddress(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_GetDcAddress("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_SetDcAddress
+ *****************************************************************/
+
+static BOOL api_dfs_SetDcAddress(pipes_struct *p)
+{
+ NETDFS_Q_DFS_SETDCADDRESS q_u;
+ NETDFS_R_DFS_SETDCADDRESS r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_SetDcAddress("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_SetDcAddress(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_SetDcAddress("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_FlushFtTable
+ *****************************************************************/
+
+static BOOL api_dfs_FlushFtTable(pipes_struct *p)
+{
+ NETDFS_Q_DFS_FLUSHFTTABLE q_u;
+ NETDFS_R_DFS_FLUSHFTTABLE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_FlushFtTable("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_FlushFtTable(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_FlushFtTable("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_Add2
+ *****************************************************************/
+
+static BOOL api_dfs_Add2(pipes_struct *p)
+{
+ NETDFS_Q_DFS_ADD2 q_u;
+ NETDFS_R_DFS_ADD2 r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_Add2("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_Add2(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_Add2("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_Remove2
+ *****************************************************************/
+
+static BOOL api_dfs_Remove2(pipes_struct *p)
+{
+ NETDFS_Q_DFS_REMOVE2 q_u;
+ NETDFS_R_DFS_REMOVE2 r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_Remove2("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_Remove2(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_Remove2("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_EnumEx
+ *****************************************************************/
+
+static BOOL api_dfs_EnumEx(pipes_struct *p)
+{
+ NETDFS_Q_DFS_ENUMEX q_u;
+ NETDFS_R_DFS_ENUMEX r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_EnumEx("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_EnumEx(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_EnumEx("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+/******************************************************************
+ api_dfs_SetInfo2
+ *****************************************************************/
+
+static BOOL api_dfs_SetInfo2(pipes_struct *p)
+{
+ NETDFS_Q_DFS_SETINFO2 q_u;
+ NETDFS_R_DFS_SETINFO2 r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!netdfs_io_q_dfs_SetInfo2("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _dfs_SetInfo2(p, &q_u, &r_u);
+
+ if (!netdfs_io_r_dfs_SetInfo2("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/* Tables */
+static struct api_struct api_netdfs_cmds[] =
+{
+ {"DFS_GETMANAGERVERSION", DFS_GETMANAGERVERSION, api_dfs_GetManagerVersion},
+ {"DFS_ADD", DFS_ADD, api_dfs_Add},
+ {"DFS_REMOVE", DFS_REMOVE, api_dfs_Remove},
+ {"DFS_SETINFO", DFS_SETINFO, api_dfs_SetInfo},
+ {"DFS_GETINFO", DFS_GETINFO, api_dfs_GetInfo},
+ {"DFS_ENUM", DFS_ENUM, api_dfs_Enum},
+ {"DFS_RENAME", DFS_RENAME, api_dfs_Rename},
+ {"DFS_MOVE", DFS_MOVE, api_dfs_Move},
+ {"DFS_MANAGERGETCONFIGINFO", DFS_MANAGERGETCONFIGINFO, api_dfs_ManagerGetConfigInfo},
+ {"DFS_MANAGERSENDSITEINFO", DFS_MANAGERSENDSITEINFO, api_dfs_ManagerSendSiteInfo},
+ {"DFS_ADDFTROOT", DFS_ADDFTROOT, api_dfs_AddFtRoot},
+ {"DFS_REMOVEFTROOT", DFS_REMOVEFTROOT, api_dfs_RemoveFtRoot},
+ {"DFS_ADDSTDROOT", DFS_ADDSTDROOT, api_dfs_AddStdRoot},
+ {"DFS_REMOVESTDROOT", DFS_REMOVESTDROOT, api_dfs_RemoveStdRoot},
+ {"DFS_MANAGERINITIALIZE", DFS_MANAGERINITIALIZE, api_dfs_ManagerInitialize},
+ {"DFS_ADDSTDROOTFORCED", DFS_ADDSTDROOTFORCED, api_dfs_AddStdRootForced},
+ {"DFS_GETDCADDRESS", DFS_GETDCADDRESS, api_dfs_GetDcAddress},
+ {"DFS_SETDCADDRESS", DFS_SETDCADDRESS, api_dfs_SetDcAddress},
+ {"DFS_FLUSHFTTABLE", DFS_FLUSHFTTABLE, api_dfs_FlushFtTable},
+ {"DFS_ADD2", DFS_ADD2, api_dfs_Add2},
+ {"DFS_REMOVE2", DFS_REMOVE2, api_dfs_Remove2},
+ {"DFS_ENUMEX", DFS_ENUMEX, api_dfs_EnumEx},
+ {"DFS_SETINFO2", DFS_SETINFO2, api_dfs_SetInfo2},
+};
+
+void netdfs_get_pipe_fns(struct api_struct **fns, int *n_fns)
+{
+ *fns = api_netdfs_cmds;
+ *n_fns = sizeof(api_netdfs_cmds) / sizeof(struct api_struct);
+}
+
+NTSTATUS rpc_netdfs_init(void)
+{
+ return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "netdfs", "netdfs", api_netdfs_cmds, sizeof(api_netdfs_cmds) / sizeof(struct api_struct));
+}
diff --git a/source/rpc_server/srv_dfs_nt.c b/source/rpc_server/srv_dfs_nt.c
index eb159bdc647..626e90c8aaf 100644
--- a/source/rpc_server/srv_dfs_nt.c
+++ b/source/rpc_server/srv_dfs_nt.c
@@ -3,7 +3,7 @@
* RPC Pipe client / server routines for Dfs
* Copyright (C) Shirish Kalele 2000.
* Copyright (C) Jeremy Allison 2001.
- * Copyright (C) Jelmer Vernooij 2005-2006.
+ * Copyright (C) Jelmer Vernooij 2005.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,39 +30,46 @@
/* This function does not return a WERROR or NTSTATUS code but rather 1 if
dfs exists, or 0 otherwise. */
-void _dfs_GetManagerVersion(pipes_struct *p, struct dfs_GetManagerVersion *r)
+uint32 _dfs_GetManagerVersion(pipes_struct *p, NETDFS_Q_DFS_GETMANAGERVERSION *q_u, NETDFS_R_DFS_GETMANAGERVERSION *r_u)
{
- if (lp_host_msdfs()) {
- *r->out.version = DFS_MANAGER_VERSION_NT4;
- } else {
- *r->out.version = 0;
- }
+ if(lp_host_msdfs())
+ return 1;
+ else
+ return 0;
}
-WERROR _dfs_Add(pipes_struct *p, struct dfs_Add *r)
+WERROR _dfs_Add(pipes_struct *p, NETDFS_Q_DFS_ADD* q_u, NETDFS_R_DFS_ADD *r_u)
{
+ struct current_user user;
struct junction_map jn;
struct referral* old_referral_list = NULL;
BOOL self_ref = False;
int consumedcnt = 0;
BOOL exists = False;
+ pstring dfspath, servername, sharename;
pstring altpath;
- if (p->pipe_user.ut.uid != 0) {
+ get_current_user(&user,p);
+
+ if (user.ut.uid != 0) {
DEBUG(10,("_dfs_add: uid != 0. Access denied.\n"));
return WERR_ACCESS_DENIED;
}
+ unistr2_to_ascii(dfspath, &q_u->path, sizeof(dfspath)-1);
+ unistr2_to_ascii(servername, &q_u->server, sizeof(servername)-1);
+ unistr2_to_ascii(sharename, &q_u->share, sizeof(sharename)-1);
+
DEBUG(5,("init_reply_dfs_add: Request to add %s -> %s\\%s.\n",
- r->in.path, r->in.server, r->in.share));
+ dfspath, servername, sharename));
- pstrcpy(altpath, r->in.server);
+ pstrcpy(altpath, servername);
pstrcat(altpath, "\\");
- pstrcat(altpath, r->in.share);
+ pstrcat(altpath, sharename);
/* The following call can change the cwd. */
- if(NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, r->in.path, &jn, &consumedcnt, &self_ref))) {
+ if(NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, dfspath, &jn, &consumedcnt, &self_ref))) {
exists = True;
jn.referral_count += 1;
old_referral_list = jn.referral_list;
@@ -96,36 +103,50 @@ WERROR _dfs_Add(pipes_struct *p, struct dfs_Add *r)
return WERR_OK;
}
-WERROR _dfs_Remove(pipes_struct *p, struct dfs_Remove *r)
+WERROR _dfs_Remove(pipes_struct *p, NETDFS_Q_DFS_REMOVE *q_u,
+ NETDFS_R_DFS_REMOVE *r_u)
{
+ struct current_user user;
struct junction_map jn;
BOOL self_ref = False;
int consumedcnt = 0;
BOOL found = False;
+ pstring dfspath, servername, sharename;
pstring altpath;
- if (p->pipe_user.ut.uid != 0) {
+ get_current_user(&user,p);
+
+ if (user.ut.uid != 0) {
DEBUG(10,("_dfs_remove: uid != 0. Access denied.\n"));
return WERR_ACCESS_DENIED;
}
- if (r->in.servername && r->in.sharename) {
- pstrcpy(altpath, r->in.servername);
+ unistr2_to_ascii(dfspath, &q_u->path, sizeof(dfspath)-1);
+ if(q_u->ptr0_server) {
+ unistr2_to_ascii(servername, &q_u->server, sizeof(servername)-1);
+ }
+
+ if(q_u->ptr0_share) {
+ unistr2_to_ascii(sharename, &q_u->share, sizeof(sharename)-1);
+ }
+
+ if(q_u->ptr0_server && q_u->ptr0_share) {
+ pstrcpy(altpath, servername);
pstrcat(altpath, "\\");
- pstrcat(altpath, r->in.sharename);
+ pstrcat(altpath, sharename);
strlower_m(altpath);
}
DEBUG(5,("init_reply_dfs_remove: Request to remove %s -> %s\\%s.\n",
- r->in.dfs_entry_path, r->in.servername, r->in.sharename));
+ dfspath, servername, sharename));
- if(!NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, r->in.dfs_entry_path, &jn, &consumedcnt, &self_ref))) {
+ if(!NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, dfspath, &jn, &consumedcnt, &self_ref))) {
return WERR_DFS_NO_SUCH_VOL;
}
/* if no server-share pair given, remove the msdfs link completely */
- if(!r->in.servername && !r->in.sharename) {
+ if(!q_u->ptr0_server && !q_u->ptr0_share) {
if(!remove_msdfs_link(&jn)) {
vfs_ChDir(p->conn,p->conn->connectpath);
return WERR_DFS_NO_SUCH_VOL;
@@ -170,61 +191,65 @@ WERROR _dfs_Remove(pipes_struct *p, struct dfs_Remove *r)
return WERR_OK;
}
-static BOOL init_reply_dfs_info_1(TALLOC_CTX *mem_ctx, struct junction_map* j, struct dfs_Info1* dfs1)
+static BOOL init_reply_dfs_info_1(struct junction_map* j, NETDFS_DFS_INFO1* dfs1)
{
- dfs1->path = talloc_asprintf(mem_ctx,
- "\\\\%s\\%s\\%s", global_myname(),
- j->service_name, j->volume_name);
- if (dfs1->path == NULL)
- return False;
-
- DEBUG(5,("init_reply_dfs_info_1: initing entrypath: %s\n",dfs1->path));
+ pstring str;
+ dfs1->ptr0_path = 1;
+ slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(),
+ j->service_name, j->volume_name);
+ DEBUG(5,("init_reply_dfs_info_1: initing entrypath: %s\n",str));
+ init_unistr2(&dfs1->path,str,UNI_STR_TERMINATE);
return True;
}
-static BOOL init_reply_dfs_info_2(TALLOC_CTX *mem_ctx, struct junction_map* j, struct dfs_Info2* dfs2)
+static BOOL init_reply_dfs_info_2(struct junction_map* j, NETDFS_DFS_INFO2* dfs2)
{
- dfs2->path = talloc_asprintf(mem_ctx,
- "\\\\%s\\%s\\%s", global_myname(), j->service_name, j->volume_name);
- if (dfs2->path == NULL)
- return False;
- dfs2->comment = talloc_strdup(mem_ctx, j->comment);
+ pstring str;
+ dfs2->ptr0_path = 1;
+ slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(),
+ j->service_name, j->volume_name);
+ init_unistr2(&dfs2->path, str, UNI_STR_TERMINATE);
+ dfs2->ptr0_comment = 0;
+ init_unistr2(&dfs2->comment, j->comment, UNI_STR_TERMINATE);
dfs2->state = 1; /* set up state of dfs junction as OK */
dfs2->num_stores = j->referral_count;
return True;
}
-static BOOL init_reply_dfs_info_3(TALLOC_CTX *mem_ctx, struct junction_map* j, struct dfs_Info3* dfs3)
+static BOOL init_reply_dfs_info_3(TALLOC_CTX *ctx, struct junction_map* j, NETDFS_DFS_INFO3* dfs3)
{
int ii;
+ pstring str;
+ dfs3->ptr0_path = 1;
if (j->volume_name[0] == '\0')
- dfs3->path = talloc_asprintf(mem_ctx, "\\\\%s\\%s",
+ slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s",
global_myname(), j->service_name);
else
- dfs3->path = talloc_asprintf(mem_ctx, "\\\\%s\\%s\\%s", global_myname(),
+ slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(),
j->service_name, j->volume_name);
- if (dfs3->path == NULL)
- return False;
-
- dfs3->comment = talloc_strdup(mem_ctx, j->comment);
+ init_unistr2(&dfs3->path, str, UNI_STR_TERMINATE);
+ dfs3->ptr0_comment = 1;
+ init_unistr2(&dfs3->comment, j->comment, UNI_STR_TERMINATE);
dfs3->state = 1;
- dfs3->num_stores = j->referral_count;
+ dfs3->num_stores = dfs3->size_stores = j->referral_count;
/* also enumerate the stores */
if (j->referral_count) {
- dfs3->stores = TALLOC_ARRAY(mem_ctx, struct dfs_StorageInfo, j->referral_count);
+ dfs3->stores = TALLOC_ARRAY(ctx, NETDFS_DFS_STORAGEINFO, j->referral_count);
if (!dfs3->stores)
return False;
- memset(dfs3->stores, '\0', j->referral_count * sizeof(struct dfs_StorageInfo));
+ memset(dfs3->stores, '\0', j->referral_count * sizeof(NETDFS_DFS_STORAGEINFO));
+ dfs3->ptr0_stores = 1;
} else {
dfs3->stores = NULL;
+ dfs3->ptr0_stores = 0;
}
for(ii=0;ii<j->referral_count;ii++) {
char* p;
pstring path;
- struct dfs_StorageInfo* stor = &(dfs3->stores[ii]);
+ NETDFS_DFS_STORAGEINFO* stor = &(dfs3->stores[ii]);
struct referral* ref = &(j->referral_list[ii]);
pstrcpy(path, ref->alternate_path);
@@ -237,21 +262,24 @@ static BOOL init_reply_dfs_info_3(TALLOC_CTX *mem_ctx, struct junction_map* j, s
*p = '\0';
DEBUG(5,("storage %d: %s.%s\n",ii,path,p+1));
stor->state = 2; /* set all stores as ONLINE */
- stor->server = talloc_strdup(mem_ctx, path);
- stor->share = talloc_strdup(mem_ctx, p+1);
+ init_unistr2(&stor->server, path, UNI_STR_TERMINATE);
+ init_unistr2(&stor->share, p+1, UNI_STR_TERMINATE);
+ stor->ptr0_server = stor->ptr0_share = 1;
}
return True;
}
-static BOOL init_reply_dfs_info_100(TALLOC_CTX *mem_ctx, struct junction_map* j, struct dfs_Info100* dfs100)
+static BOOL init_reply_dfs_info_100(struct junction_map* j, NETDFS_DFS_INFO100* dfs100)
{
- dfs100->comment = talloc_strdup(mem_ctx, j->comment);
+ dfs100->ptr0_comment = 1;
+ init_unistr2(&dfs100->comment, j->comment, UNI_STR_TERMINATE);
return True;
}
-WERROR _dfs_Enum(pipes_struct *p, struct dfs_Enum *r)
+WERROR _dfs_Enum(pipes_struct *p, NETDFS_Q_DFS_ENUM *q_u, NETDFS_R_DFS_ENUM *r_u)
{
+ uint32 level = q_u->level;
struct junction_map jn[MAX_MSDFS_JUNCTIONS];
int num_jn = 0;
int i;
@@ -259,221 +287,220 @@ WERROR _dfs_Enum(pipes_struct *p, struct dfs_Enum *r)
num_jn = enum_msdfs_links(p->mem_ctx, jn, ARRAY_SIZE(jn));
vfs_ChDir(p->conn,p->conn->connectpath);
- DEBUG(5,("_dfs_Enum: %d junctions found in Dfs, doing level %d\n", num_jn, r->in.level));
+ DEBUG(5,("_dfs_Enum: %d junctions found in Dfs, doing level %d\n", num_jn, level));
+
+ r_u->ptr0_info = q_u->ptr0_info;
+ r_u->ptr0_total = q_u->ptr0_total;
+ r_u->total = num_jn;
- *r->out.total = num_jn;
+ r_u->info = q_u->info;
/* Create the return array */
- switch (r->in.level) {
+ switch (level) {
case 1:
+ r_u->info.e.u.info1.count = num_jn;
if (num_jn) {
- if ((r->out.info->e.info1->s = TALLOC_ARRAY(p->mem_ctx, struct dfs_Info1, num_jn)) == NULL) {
+ if ((r_u->info.e.u.info1.s = TALLOC_ARRAY(p->mem_ctx, NETDFS_DFS_INFO1, num_jn)) == NULL) {
return WERR_NOMEM;
}
- } else {
- r->out.info->e.info1->s = NULL;
+ r_u->info.e.u.info1.ptr0_s = 1;
+ r_u->info.e.u.info1.size_s = num_jn;
}
- r->out.info->e.info1->count = num_jn;
break;
case 2:
+ r_u->info.e.u.info2.count = num_jn;
if (num_jn) {
- if ((r->out.info->e.info2->s = TALLOC_ARRAY(p->mem_ctx, struct dfs_Info2, num_jn)) == NULL) {
+ if ((r_u->info.e.u.info2.s = TALLOC_ARRAY(p->mem_ctx, NETDFS_DFS_INFO2, num_jn)) == NULL) {
return WERR_NOMEM;
}
- } else {
- r->out.info->e.info2->s = NULL;
+ r_u->info.e.u.info2.ptr0_s = 1;
+ r_u->info.e.u.info2.size_s = num_jn;
}
- r->out.info->e.info2->count = num_jn;
break;
case 3:
+ r_u->info.e.u.info3.count = num_jn;
if (num_jn) {
- if ((r->out.info->e.info3->s = TALLOC_ARRAY(p->mem_ctx, struct dfs_Info3, num_jn)) == NULL) {
+ if ((r_u->info.e.u.info3.s = TALLOC_ARRAY(p->mem_ctx, NETDFS_DFS_INFO3, num_jn)) == NULL) {
return WERR_NOMEM;
}
- } else {
- r->out.info->e.info3->s = NULL;
+ r_u->info.e.u.info3.ptr0_s = 1;
+ r_u->info.e.u.info3.size_s = num_jn;
}
- r->out.info->e.info3->count = num_jn;
break;
default:
return WERR_INVALID_PARAM;
}
for (i = 0; i < num_jn; i++) {
- switch (r->in.level) {
+ switch (level) {
case 1:
- init_reply_dfs_info_1(p->mem_ctx, &jn[i], &r->out.info->e.info1->s[i]);
+ init_reply_dfs_info_1(&jn[i], &r_u->info.e.u.info1.s[i]);
break;
case 2:
- init_reply_dfs_info_2(p->mem_ctx, &jn[i], &r->out.info->e.info2->s[i]);
+ init_reply_dfs_info_2(&jn[i], &r_u->info.e.u.info2.s[i]);
break;
case 3:
- init_reply_dfs_info_3(p->mem_ctx, &jn[i], &r->out.info->e.info3->s[i]);
+ init_reply_dfs_info_3(p->mem_ctx, &jn[i], &r_u->info.e.u.info3.s[i]);
break;
default:
return WERR_INVALID_PARAM;
}
}
- return WERR_OK;
-}
+ r_u->status = WERR_OK;
-WERROR _dfs_GetInfo(pipes_struct *p, struct dfs_GetInfo *r)
+ return r_u->status;
+}
+
+WERROR _dfs_GetInfo(pipes_struct *p, NETDFS_Q_DFS_GETINFO *q_u,
+ NETDFS_R_DFS_GETINFO *r_u)
{
+ UNISTR2* uni_path = &q_u->path;
+ uint32 level = q_u->level;
int consumedcnt = sizeof(pstring);
- struct junction_map jn;
+ pstring path;
+ BOOL ret = False;
BOOL self_ref = False;
- BOOL ret;
+ struct junction_map jn;
- if(!create_junction(r->in.dfs_entry_path, &jn))
+ unistr2_to_ascii(path, uni_path, sizeof(path)-1);
+ if(!create_junction(path, &jn))
return WERR_DFS_NO_SUCH_SERVER;
/* The following call can change the cwd. */
- if(!NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, r->in.dfs_entry_path, &jn, &consumedcnt, &self_ref)) || consumedcnt < strlen(r->in.dfs_entry_path)) {
+ if(!NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, path, &jn, &consumedcnt, &self_ref)) || consumedcnt < strlen(path)) {
vfs_ChDir(p->conn,p->conn->connectpath);
return WERR_DFS_NO_SUCH_VOL;
}
vfs_ChDir(p->conn,p->conn->connectpath);
-
- switch (r->in.level) {
- case 1: ret = init_reply_dfs_info_1(p->mem_ctx, &jn, r->out.info->info1); break;
- case 2: ret = init_reply_dfs_info_2(p->mem_ctx, &jn, r->out.info->info2); break;
- case 3: ret = init_reply_dfs_info_3(p->mem_ctx, &jn, r->out.info->info3); break;
- case 100: ret = init_reply_dfs_info_100(p->mem_ctx, &jn, r->out.info->info100); break;
+ r_u->info.switch_value = level;
+ r_u->info.ptr0 = 1;
+ r_u->status = WERR_OK;
+
+ switch (level) {
+ case 1: ret = init_reply_dfs_info_1(&jn, &r_u->info.u.info1); break;
+ case 2: ret = init_reply_dfs_info_2(&jn, &r_u->info.u.info2); break;
+ case 3: ret = init_reply_dfs_info_3(p->mem_ctx, &jn, &r_u->info.u.info3); break;
+ case 100: ret = init_reply_dfs_info_100(&jn, &r_u->info.u.info100); break;
default:
- r->out.info->info1 = NULL;
- return WERR_INVALID_PARAM;
+ r_u->info.ptr0 = 1;
+ r_u->info.switch_value = 0;
+ r_u->status = WERR_OK;
+ ret = True;
+ break;
}
if (!ret)
- return WERR_INVALID_PARAM;
+ r_u->status = WERR_INVALID_PARAM;
- return WERR_OK;
+ return r_u->status;
}
-WERROR _dfs_SetInfo(pipes_struct *p, struct dfs_SetInfo *r)
+WERROR _dfs_SetInfo(pipes_struct *p, NETDFS_Q_DFS_SETINFO *q_u, NETDFS_R_DFS_SETINFO *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_Rename(pipes_struct *p, struct dfs_Rename *r)
+WERROR _dfs_Rename(pipes_struct *p, NETDFS_Q_DFS_RENAME *q_u, NETDFS_R_DFS_RENAME *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_Move(pipes_struct *p, struct dfs_Move *r)
+WERROR _dfs_Move(pipes_struct *p, NETDFS_Q_DFS_MOVE *q_u, NETDFS_R_DFS_MOVE *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_ManagerGetConfigInfo(pipes_struct *p, struct dfs_ManagerGetConfigInfo *r)
+WERROR _dfs_ManagerGetConfigInfo(pipes_struct *p, NETDFS_Q_DFS_MANAGERGETCONFIGINFO *q_u, NETDFS_R_DFS_MANAGERGETCONFIGINFO *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_ManagerSendSiteInfo(pipes_struct *p, struct dfs_ManagerSendSiteInfo *r)
+WERROR _dfs_ManagerSendSiteInfo(pipes_struct *p, NETDFS_Q_DFS_MANAGERSENDSITEINFO *q_u, NETDFS_R_DFS_MANAGERSENDSITEINFO *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_AddFtRoot(pipes_struct *p, struct dfs_AddFtRoot *r)
+WERROR _dfs_AddFtRoot(pipes_struct *p, NETDFS_Q_DFS_ADDFTROOT *q_u, NETDFS_R_DFS_ADDFTROOT *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_RemoveFtRoot(pipes_struct *p, struct dfs_RemoveFtRoot *r)
+WERROR _dfs_RemoveFtRoot(pipes_struct *p, NETDFS_Q_DFS_REMOVEFTROOT *q_u, NETDFS_R_DFS_REMOVEFTROOT *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_AddStdRoot(pipes_struct *p, struct dfs_AddStdRoot *r)
+WERROR _dfs_AddStdRoot(pipes_struct *p, NETDFS_Q_DFS_ADDSTDROOT *q_u, NETDFS_R_DFS_ADDSTDROOT *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_RemoveStdRoot(pipes_struct *p, struct dfs_RemoveStdRoot *r)
+WERROR _dfs_RemoveStdRoot(pipes_struct *p, NETDFS_Q_DFS_REMOVESTDROOT *q_u, NETDFS_R_DFS_REMOVESTDROOT *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_ManagerInitialize(pipes_struct *p, struct dfs_ManagerInitialize *r)
+WERROR _dfs_ManagerInitialize(pipes_struct *p, NETDFS_Q_DFS_MANAGERINITIALIZE *q_u, NETDFS_R_DFS_MANAGERINITIALIZE *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_AddStdRootForced(pipes_struct *p, struct dfs_AddStdRootForced *r)
+WERROR _dfs_AddStdRootForced(pipes_struct *p, NETDFS_Q_DFS_ADDSTDROOTFORCED *q_u, NETDFS_R_DFS_ADDSTDROOTFORCED *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_GetDcAddress(pipes_struct *p, struct dfs_GetDcAddress *r)
+WERROR _dfs_GetDcAddress(pipes_struct *p, NETDFS_Q_DFS_GETDCADDRESS *q_u, NETDFS_R_DFS_GETDCADDRESS *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_SetDcAddress(pipes_struct *p, struct dfs_SetDcAddress *r)
+WERROR _dfs_SetDcAddress(pipes_struct *p, NETDFS_Q_DFS_SETDCADDRESS *q_u, NETDFS_R_DFS_SETDCADDRESS *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_FlushFtTable(pipes_struct *p, struct dfs_FlushFtTable *r)
+WERROR _dfs_FlushFtTable(pipes_struct *p, NETDFS_Q_DFS_FLUSHFTTABLE *q_u, NETDFS_R_DFS_FLUSHFTTABLE *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_Add2(pipes_struct *p, struct dfs_Add2 *r)
+WERROR _dfs_Add2(pipes_struct *p, NETDFS_Q_DFS_ADD2 *q_u, NETDFS_R_DFS_ADD2 *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_Remove2(pipes_struct *p, struct dfs_Remove2 *r)
+WERROR _dfs_Remove2(pipes_struct *p, NETDFS_Q_DFS_REMOVE2 *q_u, NETDFS_R_DFS_REMOVE2 *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_EnumEx(pipes_struct *p, struct dfs_EnumEx *r)
+WERROR _dfs_EnumEx(pipes_struct *p, NETDFS_Q_DFS_ENUMEX *q_u, NETDFS_R_DFS_ENUMEX *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
-WERROR _dfs_SetInfo2(pipes_struct *p, struct dfs_SetInfo2 *r)
+WERROR _dfs_SetInfo2(pipes_struct *p, NETDFS_Q_DFS_SETINFO2 *q_u, NETDFS_R_DFS_SETINFO2 *r_u)
{
/* FIXME: Implement your code here */
- p->rng_fault_state = True;
return WERR_NOT_SUPPORTED;
}
diff --git a/source/rpc_server/srv_echo.c b/source/rpc_server/srv_echo.c
new file mode 100644
index 00000000000..c6cfde07c15
--- /dev/null
+++ b/source/rpc_server/srv_echo.c
@@ -0,0 +1,150 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * RPC Pipe client / server routines for rpcecho
+ * Copyright (C) Tim Potter 2003.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* This is the interface to the rpcecho pipe. */
+
+#include "includes.h"
+#include "nterr.h"
+
+#ifdef DEVELOPER
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_SRV
+
+static BOOL api_add_one(pipes_struct *p)
+{
+ ECHO_Q_ADD_ONE q_u;
+ ECHO_R_ADD_ONE r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!echo_io_q_add_one("", &q_u, data, 0))
+ return False;
+
+ _echo_add_one(p, &q_u, &r_u);
+
+ if(!echo_io_r_add_one("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+static BOOL api_echo_data(pipes_struct *p)
+{
+ ECHO_Q_ECHO_DATA q_u;
+ ECHO_R_ECHO_DATA r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!echo_io_q_echo_data("", &q_u, data, 0))
+ return False;
+
+ _echo_data(p, &q_u, &r_u);
+
+ if(!echo_io_r_echo_data("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+static BOOL api_source_data(pipes_struct *p)
+{
+ ECHO_Q_SOURCE_DATA q_u;
+ ECHO_R_SOURCE_DATA r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!echo_io_q_source_data("", &q_u, data, 0))
+ return False;
+
+ _source_data(p, &q_u, &r_u);
+
+ if(!echo_io_r_source_data("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+static BOOL api_sink_data(pipes_struct *p)
+{
+ ECHO_Q_SINK_DATA q_u;
+ ECHO_R_SINK_DATA r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!echo_io_q_sink_data("", &q_u, data, 0))
+ return False;
+
+ _sink_data(p, &q_u, &r_u);
+
+ if(!echo_io_r_sink_data("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+\pipe\rpcecho commands
+********************************************************************/
+
+struct api_struct api_echo_cmds[] = {
+ {"ADD_ONE", ECHO_ADD_ONE, api_add_one },
+ {"ECHO_DATA", ECHO_DATA, api_echo_data },
+ {"SOURCE_DATA", ECHO_SOURCE_DATA, api_source_data },
+ {"SINK_DATA", ECHO_SINK_DATA, api_sink_data },
+};
+
+
+void echo_get_pipe_fns( struct api_struct **fns, int *n_fns )
+{
+ *fns = api_echo_cmds;
+ *n_fns = sizeof(api_echo_cmds) / sizeof(struct api_struct);
+}
+
+NTSTATUS rpc_echo_init(void)
+{
+ return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION,
+ "rpcecho", "rpcecho", api_echo_cmds,
+ sizeof(api_echo_cmds) / sizeof(struct api_struct));
+}
+
+#else /* DEVELOPER */
+
+NTSTATUS rpc_echo_init(void)
+{
+ return NT_STATUS_OK;
+}
+#endif /* DEVELOPER */
diff --git a/source/rpc_server/srv_echo_nt.c b/source/rpc_server/srv_echo_nt.c
index 426cd2fded8..89519602bce 100644
--- a/source/rpc_server/srv_echo_nt.c
+++ b/source/rpc_server/srv_echo_nt.c
@@ -1,9 +1,7 @@
/*
* Unix SMB/CIFS implementation.
* RPC Pipe client / server routines for rpcecho
- * Copyright (C) Tim Potter 2003
- * Copyright (C) Jelmer Vernooij 2006
- * Copyright (C) Gerald (Jerry) Carter 2007
+ * Copyright (C) Tim Potter 2003.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -32,123 +30,59 @@
/* Add one to the input and return it */
-void _echo_AddOne(pipes_struct *p, struct echo_AddOne *r )
+void _echo_add_one(pipes_struct *p, ECHO_Q_ADD_ONE *q_u, ECHO_R_ADD_ONE *r_u)
{
- DEBUG(10, ("_echo_AddOne\n"));
+ DEBUG(10, ("_echo_add_one\n"));
- *r->out.out_data = r->in.in_data + 1;
+ r_u->response = q_u->request + 1;
}
/* Echo back an array of data */
-void _echo_EchoData(pipes_struct *p, struct echo_EchoData *r)
+void _echo_data(pipes_struct *p, ECHO_Q_ECHO_DATA *q_u,
+ ECHO_R_ECHO_DATA *r_u)
{
- DEBUG(10, ("_echo_EchoData\n"));
+ DEBUG(10, ("_echo_data\n"));
- if ( r->in.len == 0 ) {
- r->out.out_data = NULL;
+ if (q_u->size == 0) {
+ r_u->data = NULL;
+ r_u->size = 0;
return;
}
-
- r->out.out_data = TALLOC_ARRAY(p->mem_ctx, uint8, r->in.len);
- memcpy( r->out.out_data, r->in.in_data, r->in.len );
- return;
+ r_u->data = TALLOC(p->mem_ctx, q_u->size);
+ r_u->size = q_u->size;
+ memcpy(r_u->data, q_u->data, q_u->size);
}
/* Sink an array of data */
-void _echo_SinkData(pipes_struct *p, struct echo_SinkData *r)
+void _sink_data(pipes_struct *p, ECHO_Q_SINK_DATA *q_u,
+ ECHO_R_SINK_DATA *r_u)
{
- DEBUG(10, ("_echo_SinkData\n"));
+ DEBUG(10, ("_sink_data\n"));
/* My that was some yummy data! */
- return;
}
/* Source an array of data */
-void _echo_SourceData(pipes_struct *p, struct echo_SourceData *r)
+void _source_data(pipes_struct *p, ECHO_Q_SOURCE_DATA *q_u,
+ ECHO_R_SOURCE_DATA *r_u)
{
uint32 i;
- DEBUG(10, ("_echo_SourceData\n"));
+ DEBUG(10, ("_source_data\n"));
- if ( r->in.len == 0 ) {
- r->out.data = NULL;
+ if (q_u->size == 0) {
+ r_u->data = NULL;
+ r_u->size = 0;
return;
}
+ r_u->data = TALLOC(p->mem_ctx, q_u->size);
+ r_u->size = q_u->size;
- r->out.data = TALLOC_ARRAY(p->mem_ctx, uint8, r->in.len );
-
- for (i = 0; i < r->in.len; i++ ) {
- r->out.data[i] = i & 0xff;
- }
-
- return;
-}
-
-void _echo_TestCall(pipes_struct *p, struct echo_TestCall *r)
-{
- *r->out.s2 = talloc_strdup(p->mem_ctx, r->in.s1);
-}
-
-NTSTATUS _echo_TestCall2(pipes_struct *p, struct echo_TestCall2 *r)
-{
- switch (r->in.level) {
- case 1:
- r->out.info->info1.v = 10;
- break;
- case 2:
- r->out.info->info2.v = 20;
- break;
- case 3:
- r->out.info->info3.v = 30;
- break;
- case 4:
- r->out.info->info4.v = 40;
- break;
- case 5:
- r->out.info->info5.v1 = 50;
- r->out.info->info5.v2 = 60;
- break;
- case 6:
- r->out.info->info6.v1 = 70;
- r->out.info->info6.info1.v= 80;
- break;
- case 7:
- r->out.info->info7.v1 = 80;
- r->out.info->info7.info4.v = 90;
- break;
- default:
- return NT_STATUS_INVALID_LEVEL;
- }
-
- return NT_STATUS_OK;
-}
-
-uint32 _echo_TestSleep(pipes_struct *p, struct echo_TestSleep *r)
-{
- sleep(r->in.seconds);
- return r->in.seconds;
-}
-
-void _echo_TestEnum(pipes_struct *p, struct echo_TestEnum *r)
-{
-}
-
-void _echo_TestSurrounding(pipes_struct *p, struct echo_TestSurrounding *r)
-{
- r->out.data->x *= 2;
- r->out.data->surrounding = TALLOC_ZERO_ARRAY(p->mem_ctx, uint16_t, r->in.data->x);
-}
-
-uint16 _echo_TestDoublePointer(pipes_struct *p, struct echo_TestDoublePointer *r)
-{
- if (!*r->in.data)
- return 0;
- if (!**r->in.data)
- return 0;
- return ***r->in.data;
+ for (i = 0; i < r_u->size; i++)
+ r_u->data[i] = i & 0xff;
}
#endif /* DEVELOPER */
diff --git a/source/rpc_server/srv_epmapper_nt.c b/source/rpc_server/srv_epmapper_nt.c
deleted file mode 100644
index 77a06124db3..00000000000
--- a/source/rpc_server/srv_epmapper_nt.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * RPC Pipe client / server routines for the endpoint mapper
- * Copyright (C) Jelmer Vernooij 2007.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* This is the implementation of the dfs pipe. */
-
-#include "includes.h"
-
-uint32 _epm_MapAuth(pipes_struct *p, struct epm_MapAuth *r)
-{
- /* FIXME */
- return 0;
-}
-
-uint32 _epm_MgmtDelete(pipes_struct *p, struct epm_MgmtDelete *r)
-{
- /* FIXME */
- return 0;
-}
-
-uint32 _epm_InqObject(pipes_struct *p, struct epm_InqObject *r)
-{
- /* FIXME */
- return 0;
-}
-
-uint32 _epm_LookupHandleFree(pipes_struct *p, struct epm_LookupHandleFree *r)
-{
- /* FIXME */
- return 0;
-}
-
-uint32 _epm_Map(pipes_struct *p, struct epm_Map *r)
-{
- /* FIXME */
- return 0;
-}
-
-uint32 _epm_Lookup(pipes_struct *p, struct epm_Lookup *r)
-{
- /* FIXME */
- return 0;
-}
-
-uint32 _epm_Delete(pipes_struct *p, struct epm_Delete *r)
-{
- /* FIXME */
- return 0;
-}
-
-uint32 _epm_Insert(pipes_struct *p, struct epm_Insert *r)
-{
- /* FIXME */
- return 0;
-}
diff --git a/source/rpc_server/srv_eventlog.c b/source/rpc_server/srv_eventlog.c
index 1492e671093..ae15d43f4ba 100644
--- a/source/rpc_server/srv_eventlog.c
+++ b/source/rpc_server/srv_eventlog.c
@@ -1,8 +1,7 @@
/*
* Unix SMB/CIFS implementation.
* RPC Pipe client / server routines
- * Copyright (C) Marcin Krzysztof Porwit 2005.
- * Copyright (C) Gerald Carter 2005 - 2007
+ * Copyright (C) Marcin Krzysztof Porwit 2005.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,23 +23,6 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_SRV
-static BOOL proxy_eventlog_call(pipes_struct *p, uint8 opnum)
-{
- struct api_struct *fns;
- int n_fns;
-
- eventlog_get_pipe_fns(&fns, &n_fns);
-
- if (opnum >= n_fns)
- return False;
-
- if (fns[opnum].opnum != opnum) {
- smb_panic("EVENTLOG function table not sorted\n");
- }
-
- return fns[opnum].fn(p);
-}
-
static BOOL api_eventlog_open_eventlog(pipes_struct *p)
{
EVENTLOG_Q_OPEN_EVENTLOG q_u;
@@ -68,7 +50,27 @@ static BOOL api_eventlog_open_eventlog(pipes_struct *p)
static BOOL api_eventlog_close_eventlog(pipes_struct *p)
{
- return proxy_eventlog_call( p, DCERPC_EVENTLOG_CLOSEEVENTLOG );
+ EVENTLOG_Q_CLOSE_EVENTLOG q_u;
+ EVENTLOG_R_CLOSE_EVENTLOG r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!(eventlog_io_q_close_eventlog("", &q_u, data, 0))) {
+ DEBUG(0, ("eventlog_io_q_close_eventlog: unable to unmarshall EVENTLOG_Q_CLOSE_EVENTLOG.\n"));
+ return False;
+ }
+
+ r_u.status = _eventlog_close_eventlog(p, &q_u, &r_u);
+
+ if (!(eventlog_io_r_close_eventlog("", &r_u, rdata, 0))) {
+ DEBUG(0, ("eventlog_io_r_close_eventlog: unable to marshall EVENTLOG_R_CLOSE_EVENTLOG.\n"));
+ return False;
+ }
+
+ return True;
}
static BOOL api_eventlog_get_num_records(pipes_struct *p)
@@ -184,14 +186,14 @@ struct api_struct api_eventlog_cmds[] =
{"EVENTLOG_CLEAREVENTLOG", EVENTLOG_CLEAREVENTLOG, api_eventlog_clear_eventlog }
};
-NTSTATUS rpc_eventlog2_init(void)
+NTSTATUS rpc_eventlog_init(void)
{
return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION,
"eventlog", "eventlog", api_eventlog_cmds,
sizeof(api_eventlog_cmds)/sizeof(struct api_struct));
}
-void eventlog2_get_pipe_fns(struct api_struct **fns, int *n_fns)
+void eventlog_get_pipe_fns(struct api_struct **fns, int *n_fns)
{
*fns = api_eventlog_cmds;
*n_fns = sizeof(api_eventlog_cmds) / sizeof(struct api_struct);
diff --git a/source/rpc_server/srv_eventlog_lib.c b/source/rpc_server/srv_eventlog_lib.c
index c780cf910c9..37b759ecf2a 100644
--- a/source/rpc_server/srv_eventlog_lib.c
+++ b/source/rpc_server/srv_eventlog_lib.c
@@ -90,7 +90,7 @@ struct trav_size_struct {
static int eventlog_tdb_size_fn( TDB_CONTEXT * tdb, TDB_DATA key, TDB_DATA data,
void *state )
{
- struct trav_size_struct *tsize = (struct trav_size_struct *)state;
+ struct trav_size_struct *tsize = state;
tsize->size += data.dsize;
tsize->rec_count++;
@@ -188,7 +188,7 @@ BOOL make_way_for_eventlogs( TDB_CONTEXT * the_tdb, int32 needed,
for ( i = start_record; i < end_record; i++ ) {
/* read a record, add the amt to nbytes */
key.dsize = sizeof( int32 );
- key.dptr = ( uint8 * ) ( int32 * ) & i;
+ key.dptr = ( char * ) ( int32 * ) & i;
ret = tdb_fetch( the_tdb, key );
if ( ret.dsize == 0 ) {
DEBUG( 8,
@@ -233,7 +233,7 @@ BOOL make_way_for_eventlogs( TDB_CONTEXT * the_tdb, int32 needed,
if ( start_record != new_start ) {
for ( i = start_record; i < new_start; i++ ) {
key.dsize = sizeof( int32 );
- key.dptr = ( uint8 * ) ( int32 * ) & i;
+ key.dptr = ( char * ) ( int32 * ) & i;
tdb_delete( the_tdb, key );
}
@@ -500,7 +500,7 @@ int write_eventlog_tdb( TDB_CONTEXT * the_tdb, Eventlog_entry * ee )
next_record = tdb_fetch_int32( the_tdb, EVT_NEXT_RECORD );
n_packed =
- tdb_pack( (uint8 *)packed_ee, ee->record.length + MARGIN,
+ tdb_pack( (char *)packed_ee, ee->record.length + MARGIN,
"ddddddwwwwddddddBBdBBBd", ee->record.length,
ee->record.reserved1, next_record,
ee->record.time_generated, ee->record.time_written,
@@ -529,10 +529,10 @@ int write_eventlog_tdb( TDB_CONTEXT * the_tdb, Eventlog_entry * ee )
/* increment the record count */
kbuf.dsize = sizeof( int32 );
- kbuf.dptr = (uint8 * ) & next_record;
+ kbuf.dptr = (char * ) & next_record;
ebuf.dsize = n_packed;
- ebuf.dptr = (uint8 *)packed_ee;
+ ebuf.dptr = (char *)packed_ee;
if ( tdb_store( the_tdb, kbuf, ebuf, 0 ) ) {
/* DEBUG(1,("write_eventlog_tdb: Can't write record %d to eventlog\n",next_record)); */
diff --git a/source/rpc_server/srv_eventlog_nt.c b/source/rpc_server/srv_eventlog_nt.c
index c8be6a9b346..e3d6fff2ab0 100644
--- a/source/rpc_server/srv_eventlog_nt.c
+++ b/source/rpc_server/srv_eventlog_nt.c
@@ -299,7 +299,7 @@ static Eventlog_entry *get_eventlog_record( prs_struct * ps, TDB_CONTEXT * tdb,
key.dsize = sizeof( int32 );
srecno = recno;
- key.dptr = ( uint8 * ) &srecno;
+ key.dptr = ( char * ) &srecno;
ret = tdb_fetch( tdb, key );
@@ -409,14 +409,15 @@ static BOOL sync_eventlog_params( EVENTLOG_INFO *info )
uiRetention = 604800;
/* the general idea is to internally open the registry
- key and retrieve the values. That way we can continue
+ key and retreive the values. That way we can continue
to use the same fetch/store api that we use in
srv_reg_nt.c */
pstr_sprintf( path, "%s/%s", KEY_EVENTLOG, elogname );
- wresult = regkey_open_internal( NULL, &keyinfo, path,
- get_root_nt_token( ), REG_KEY_READ );
+ wresult =
+ regkey_open_internal( &keyinfo, path, get_root_nt_token( ),
+ REG_KEY_READ );
if ( !W_ERROR_IS_OK( wresult ) ) {
DEBUG( 4,
@@ -439,7 +440,7 @@ static BOOL sync_eventlog_params( EVENTLOG_INFO *info )
if ( ( val = regval_ctr_getvalue( values, "MaxSize" ) ) != NULL )
uiMaxSize = IVAL( regval_data_p( val ), 0 );
- TALLOC_FREE( keyinfo );
+ regkey_close_internal( keyinfo );
tdb_store_int32( ELOG_TDB_CTX(info->etdb), EVT_MAXSIZE, uiMaxSize );
tdb_store_int32( ELOG_TDB_CTX(info->etdb), EVT_RETENTION, uiRetention );
@@ -662,9 +663,11 @@ NTSTATUS _eventlog_clear_eventlog( pipes_struct * p,
/********************************************************************
********************************************************************/
-NTSTATUS _eventlog_CloseEventLog( pipes_struct * p, struct eventlog_CloseEventLog *r )
+NTSTATUS _eventlog_close_eventlog( pipes_struct * p,
+ EVENTLOG_Q_CLOSE_EVENTLOG * q_u,
+ EVENTLOG_R_CLOSE_EVENTLOG * r_u )
{
- return elog_close( p, r->in.handle );
+ return elog_close( p, &q_u->handle );
}
/********************************************************************
@@ -803,142 +806,3 @@ NTSTATUS _eventlog_get_num_records( pipes_struct * p,
return NT_STATUS_OK;
}
-
-NTSTATUS _eventlog_ClearEventLogW(pipes_struct *p, struct eventlog_ClearEventLogW *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_BackupEventLogW(pipes_struct *p, struct eventlog_BackupEventLogW *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_DeregisterEventSource(pipes_struct *p, struct eventlog_DeregisterEventSource *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_GetNumRecords(pipes_struct *p, struct eventlog_GetNumRecords *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_GetOldestRecord(pipes_struct *p, struct eventlog_GetOldestRecord *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_ChangeNotify(pipes_struct *p, struct eventlog_ChangeNotify *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_OpenEventLogW(pipes_struct *p, struct eventlog_OpenEventLogW *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_RegisterEventSourceW(pipes_struct *p, struct eventlog_RegisterEventSourceW *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_OpenBackupEventLogW(pipes_struct *p, struct eventlog_OpenBackupEventLogW *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_ReadEventLogW(pipes_struct *p, struct eventlog_ReadEventLogW *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_ReportEventW(pipes_struct *p, struct eventlog_ReportEventW *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_ClearEventLogA(pipes_struct *p, struct eventlog_ClearEventLogA *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_BackupEventLogA(pipes_struct *p, struct eventlog_BackupEventLogA *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_OpenEventLogA(pipes_struct *p, struct eventlog_OpenEventLogA *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_RegisterEventSourceA(pipes_struct *p, struct eventlog_RegisterEventSourceA *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_OpenBackupEventLogA(pipes_struct *p, struct eventlog_OpenBackupEventLogA *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_ReadEventLogA(pipes_struct *p, struct eventlog_ReadEventLogA *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_ReportEventA(pipes_struct *p, struct eventlog_ReportEventA *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_RegisterClusterSvc(pipes_struct *p, struct eventlog_RegisterClusterSvc *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_DeregisterClusterSvc(pipes_struct *p, struct eventlog_DeregisterClusterSvc *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_WriteClusterEvents(pipes_struct *p, struct eventlog_WriteClusterEvents *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_GetLogIntormation(pipes_struct *p, struct eventlog_GetLogIntormation *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _eventlog_FlushEventLog(pipes_struct *p, struct eventlog_FlushEventLog *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
diff --git a/source/rpc_server/srv_initshutdown_nt.c b/source/rpc_server/srv_initshutdown_nt.c
deleted file mode 100644
index cd84f720585..00000000000
--- a/source/rpc_server/srv_initshutdown_nt.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * RPC Pipe client / server routines
- * Copyright (C) Andrew Tridgell 1992-1997.
- * Copyright (C) Gerald Carter 2006.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* Implementation of registry functions. */
-
-#include "includes.h"
-#include "regfio.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_RPC_SRV
-
-
-/*******************************************************************
- ********************************************************************/
-WERROR _initshutdown_Init(pipes_struct *p, struct initshutdown_Init *r)
-{
- struct winreg_InitiateSystemShutdownEx s;
-
- s.in.hostname = r->in.hostname;
- s.in.message = r->in.message;
- s.in.timeout = r->in.timeout;
- s.in.force_apps = r->in.force_apps;
- s.in.reboot = r->in.reboot;
- s.in.reason = 0;
-
- /* thunk down to _winreg_InitiateSystemShutdownEx()
- (just returns a status) */
-
- return _winreg_InitiateSystemShutdownEx( p, &s );
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _initshutdown_InitEx(pipes_struct *p, struct initshutdown_InitEx *r)
-{
- struct winreg_InitiateSystemShutdownEx s;
- s.in.hostname = r->in.hostname;
- s.in.message = r->in.message;
- s.in.timeout = r->in.timeout;
- s.in.force_apps = r->in.force_apps;
- s.in.reboot = r->in.reboot;
- s.in.reason = r->in.reason;
-
- return _winreg_InitiateSystemShutdownEx( p, &s);
-}
-
-
-
-
-/*******************************************************************
- reg_abort_shutdwon
- ********************************************************************/
-
-WERROR _initshutdown_Abort(pipes_struct *p, struct initshutdown_Abort *r)
-{
- struct winreg_AbortSystemShutdown s;
- s.in.server = r->in.server;
- return _winreg_AbortSystemShutdown( p, &s );
-}
diff --git a/source/rpc_server/srv_lsa.c b/source/rpc_server/srv_lsa.c
index f41cbdcc4a6..286266f30de 100644
--- a/source/rpc_server/srv_lsa.c
+++ b/source/rpc_server/srv_lsa.c
@@ -30,23 +30,6 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_SRV
-static BOOL proxy_lsa_call(pipes_struct *p, uint8 opnum)
-{
- struct api_struct *fns;
- int n_fns;
-
- lsarpc_get_pipe_fns(&fns, &n_fns);
-
- if (opnum >= n_fns)
- return False;
-
- if (fns[opnum].opnum != opnum) {
- smb_panic("LSA function table not sorted");
- }
-
- return fns[opnum].fn(p);
-}
-
/***************************************************************************
api_lsa_open_policy2
***************************************************************************/
@@ -235,7 +218,28 @@ static BOOL api_lsa_lookup_names(pipes_struct *p)
static BOOL api_lsa_close(pipes_struct *p)
{
- return proxy_lsa_call(p, DCERPC_LSA_CLOSE);
+ LSA_Q_CLOSE q_u;
+ LSA_R_CLOSE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if (!lsa_io_q_close("", &q_u, data, 0)) {
+ DEBUG(0,("api_lsa_close: lsa_io_q_close failed.\n"));
+ return False;
+ }
+
+ r_u.status = _lsa_close(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if (!lsa_io_r_close("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_lsa_close: lsa_io_r_close failed.\n"));
+ return False;
+ }
+
+ return True;
}
/***************************************************************************
@@ -244,7 +248,28 @@ static BOOL api_lsa_close(pipes_struct *p)
static BOOL api_lsa_open_secret(pipes_struct *p)
{
- return proxy_lsa_call(p, DCERPC_LSA_OPENSECRET);
+ LSA_Q_OPEN_SECRET q_u;
+ LSA_R_OPEN_SECRET r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!lsa_io_q_open_secret("", &q_u, data, 0)) {
+ DEBUG(0,("api_lsa_open_secret: failed to unmarshall LSA_Q_OPEN_SECRET.\n"));
+ return False;
+ }
+
+ r_u.status = _lsa_open_secret(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!lsa_io_r_open_secret("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_lsa_open_secret: Failed to marshall LSA_R_OPEN_SECRET.\n"));
+ return False;
+ }
+
+ return True;
}
/***************************************************************************
@@ -746,7 +771,29 @@ static BOOL api_lsa_lookup_priv_value(pipes_struct *p)
static BOOL api_lsa_open_trust_dom(pipes_struct *p)
{
- return proxy_lsa_call(p, DCERPC_LSA_OPENTRUSTEDDOMAIN);
+ LSA_Q_OPEN_TRUSTED_DOMAIN q_u;
+ LSA_R_OPEN_TRUSTED_DOMAIN r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!lsa_io_q_open_trusted_domain("", &q_u, data, 0)) {
+ DEBUG(0,("api_lsa_open_trust_dom: failed to unmarshall LSA_Q_OPEN_TRUSTED_DOMAIN .\n"));
+ return False;
+ }
+
+ r_u.status = _lsa_open_trusted_domain(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!lsa_io_r_open_trusted_domain("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_lsa_open_trust_dom: Failed to marshall LSA_R_OPEN_TRUSTED_DOMAIN.\n"));
+ return False;
+ }
+
+ return True;
}
/***************************************************************************
@@ -754,7 +801,29 @@ static BOOL api_lsa_open_trust_dom(pipes_struct *p)
static BOOL api_lsa_create_trust_dom(pipes_struct *p)
{
- return proxy_lsa_call(p, DCERPC_LSA_CREATETRUSTEDDOMAIN);
+ LSA_Q_CREATE_TRUSTED_DOMAIN q_u;
+ LSA_R_CREATE_TRUSTED_DOMAIN r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!lsa_io_q_create_trusted_domain("", &q_u, data, 0)) {
+ DEBUG(0,("api_lsa_create_trust_dom: failed to unmarshall LSA_Q_CREATE_TRUSTED_DOMAIN .\n"));
+ return False;
+ }
+
+ r_u.status = _lsa_create_trusted_domain(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!lsa_io_r_create_trusted_domain("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_lsa_create_trust_dom: Failed to marshall LSA_R_CREATE_TRUSTED_DOMAIN.\n"));
+ return False;
+ }
+
+ return True;
}
/***************************************************************************
@@ -762,7 +831,29 @@ static BOOL api_lsa_create_trust_dom(pipes_struct *p)
static BOOL api_lsa_create_secret(pipes_struct *p)
{
- return proxy_lsa_call(p, DCERPC_LSA_CREATESECRET);
+ LSA_Q_CREATE_SECRET q_u;
+ LSA_R_CREATE_SECRET r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!lsa_io_q_create_secret("", &q_u, data, 0)) {
+ DEBUG(0,("api_lsa_create_secret: failed to unmarshall LSA_Q_CREATE_SECRET.\n"));
+ return False;
+ }
+
+ r_u.status = _lsa_create_secret(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!lsa_io_r_create_secret("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_lsa_create_secret: Failed to marshall LSA_R_CREATE_SECRET.\n"));
+ return False;
+ }
+
+ return True;
}
/***************************************************************************
@@ -770,7 +861,29 @@ static BOOL api_lsa_create_secret(pipes_struct *p)
static BOOL api_lsa_set_secret(pipes_struct *p)
{
- return proxy_lsa_call(p, DCERPC_LSA_SETSECRET);
+ LSA_Q_SET_SECRET q_u;
+ LSA_R_SET_SECRET r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!lsa_io_q_set_secret("", &q_u, data, 0)) {
+ DEBUG(0,("api_lsa_set_secret: failed to unmarshall LSA_Q_SET_SECRET.\n"));
+ return False;
+ }
+
+ r_u.status = _lsa_set_secret(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!lsa_io_r_set_secret("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_lsa_set_secret: Failed to marshall LSA_R_SET_SECRET.\n"));
+ return False;
+ }
+
+ return True;
}
/***************************************************************************
diff --git a/source/rpc_server/srv_lsa_hnd.c b/source/rpc_server/srv_lsa_hnd.c
index a95415c9ce0..88c59ee8952 100644
--- a/source/rpc_server/srv_lsa_hnd.c
+++ b/source/rpc_server/srv_lsa_hnd.c
@@ -146,7 +146,7 @@ BOOL create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void (*free_fn)(void *)
*hnd = pol->pol_hnd;
DEBUG(4,("Opened policy hnd[%d] ", (int)p->pipe_handles->count));
- dump_data(4, (uint8 *)hnd, sizeof(*hnd));
+ dump_data(4, (char *)hnd, sizeof(*hnd));
return True;
}
@@ -166,7 +166,7 @@ static struct policy *find_policy_by_hnd_internal(pipes_struct *p, POLICY_HND *h
for (i = 0, pol=p->pipe_handles->Policy;pol;pol=pol->next, i++) {
if (memcmp(&pol->pol_hnd, hnd, sizeof(*hnd)) == 0) {
DEBUG(4,("Found policy hnd[%d] ", (int)i));
- dump_data(4, (uint8 *)hnd, sizeof(*hnd));
+ dump_data(4, (char *)hnd, sizeof(*hnd));
if (data_p)
*data_p = pol->data_ptr;
return pol;
@@ -174,7 +174,7 @@ static struct policy *find_policy_by_hnd_internal(pipes_struct *p, POLICY_HND *h
}
DEBUG(4,("Policy not found: "));
- dump_data(4, (uint8 *)hnd, sizeof(*hnd));
+ dump_data(4, (char *)hnd, sizeof(*hnd));
p->bad_handle_fault_state = True;
diff --git a/source/rpc_server/srv_lsa_nt.c b/source/rpc_server/srv_lsa_nt.c
index 0d29df72bf1..7a47cedf4a5 100644
--- a/source/rpc_server/srv_lsa_nt.c
+++ b/source/rpc_server/srv_lsa_nt.c
@@ -535,7 +535,7 @@ NTSTATUS _lsa_open_policy2(pipes_struct *p, LSA_Q_OPEN_POL2 *q_u, LSA_R_OPEN_POL
lsa_get_generic_sd(p->mem_ctx, &psd, &sd_size);
if(!se_access_check(psd, p->pipe_user.nt_user_token, des_access, &acc_granted, &status)) {
- if (p->pipe_user.ut.uid != sec_initial_uid()) {
+ if (geteuid() != 0) {
return status;
}
DEBUG(4,("ACCESS should be DENIED (granted: %#010x; required: %#010x)\n",
@@ -545,7 +545,7 @@ NTSTATUS _lsa_open_policy2(pipes_struct *p, LSA_Q_OPEN_POL2 *q_u, LSA_R_OPEN_POL
/* This is needed for lsa_open_account and rpcclient .... :-) */
- if (p->pipe_user.ut.uid == sec_initial_uid())
+ if (geteuid() == 0)
acc_granted = POLICY_ALL_ACCESS;
/* associate the domain SID with the (unique) handle. */
@@ -639,7 +639,8 @@ NTSTATUS _lsa_enum_trust_dom(pipes_struct *p, LSA_Q_ENUM_TRUST_DOM *q_u,
if (!(info->access & POLICY_VIEW_LOCAL_INFORMATION))
return NT_STATUS_ACCESS_DENIED;
- nt_status = pdb_enum_trusteddoms(p->mem_ctx, &num_domains, &domains);
+ nt_status = secrets_trusted_domains(p->mem_ctx, &num_domains,
+ &domains);
if (!NT_STATUS_IS_OK(nt_status)) {
return nt_status;
@@ -863,12 +864,7 @@ static NTSTATUS _lsa_lookup_sids_internal(pipes_struct *p,
if (name->type == SID_NAME_UNKNOWN) {
name->dom_idx = -1;
- /* Unknown sids should return the string
- * representation of the SID. Windows 2003 behaves
- * rather erratic here, in many cases it returns the
- * RID as 8 bytes hex, in others it returns the full
- * SID. We (Jerry/VL) could not figure out which the
- * hard cases are, so leave it with the SID. */
+ /* unknown sids should return the string representation of the SID */
name->name = talloc_asprintf(p->mem_ctx, "%s",
sid_string_static(sids[i]));
if (name->name == NULL) {
@@ -997,33 +993,41 @@ NTSTATUS _lsa_lookup_sids2(pipes_struct *p,
/***************************************************************************
_lsa_lookup_sida3
-
- Before someone actually re-activates this, please present a sniff showing
- this call against some Windows server. I (vl) could not make it work against
- w2k3 at all.
***************************************************************************/
NTSTATUS _lsa_lookup_sids3(pipes_struct *p,
LSA_Q_LOOKUP_SIDS3 *q_u,
LSA_R_LOOKUP_SIDS3 *r_u)
{
+ int num_sids = q_u->sids.num_entries;
uint32 mapped_count = 0;
- DOM_R_REF *ref;
+ DOM_R_REF *ref = NULL;
if ((q_u->level < 1) || (q_u->level > 6)) {
return NT_STATUS_INVALID_PARAMETER;
}
- r_u->status = NT_STATUS_RPC_PROTSEQ_NOT_SUPPORTED;
-
- ref = TALLOC_ZERO_P(p->mem_ctx, DOM_R_REF);
+ /* No policy handle on this call. Restrict to crypto connections. */
+ if (p->auth.auth_type != PIPE_AUTH_TYPE_SCHANNEL) {
+ DEBUG(0,("_lsa_lookup_sids3: client %s not using schannel for netlogon\n",
+ get_remote_machine_name() ));
+ return NT_STATUS_INVALID_PARAMETER;
+ }
- if (ref == NULL) {
- /* We would segfault later on in lsa_io_r_lookup_sids3 anyway,
- * so do a planned exit here. We NEEEED pidl! */
- smb_panic("talloc failed");
+ if (num_sids > MAX_LOOKUP_SIDS) {
+ DEBUG(5,("_lsa_lookup_sids3: limit of %d exceeded, requested %d\n",
+ MAX_LOOKUP_SIDS, num_sids));
+ return NT_STATUS_NONE_MAPPED;
}
+ r_u->status = _lsa_lookup_sids_internal(p,
+ q_u->level,
+ num_sids,
+ q_u->sids.sid,
+ &ref,
+ &r_u->names,
+ &mapped_count);
+
init_reply_lookup_sids3(r_u, ref, mapped_count);
return r_u->status;
}
@@ -1313,20 +1317,20 @@ NTSTATUS _lsa_lookup_names4(pipes_struct *p, LSA_Q_LOOKUP_NAMES4 *q_u, LSA_R_LOO
_lsa_close. Also weird - needs to check if lsa handle is correct. JRA.
***************************************************************************/
-NTSTATUS _lsa_Close(pipes_struct *p, struct lsa_Close *r)
+NTSTATUS _lsa_close(pipes_struct *p, LSA_Q_CLOSE *q_u, LSA_R_CLOSE *r_u)
{
- if (!find_policy_by_hnd(p, r->in.handle, NULL)) {
+ if (!find_policy_by_hnd(p, &q_u->pol, NULL)) {
return NT_STATUS_INVALID_HANDLE;
}
- close_policy_hnd(p, r->in.handle);
+ close_policy_hnd(p, &q_u->pol);
return NT_STATUS_OK;
}
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_OpenSecret(pipes_struct *p, struct lsa_OpenSecret *r)
+NTSTATUS _lsa_open_secret(pipes_struct *p, LSA_Q_OPEN_SECRET *q_u, LSA_R_OPEN_SECRET *r_u)
{
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
@@ -1334,7 +1338,7 @@ NTSTATUS _lsa_OpenSecret(pipes_struct *p, struct lsa_OpenSecret *r)
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_OpenTrustedDomain(pipes_struct *p, struct lsa_OpenTrustedDomain *r)
+NTSTATUS _lsa_open_trusted_domain(pipes_struct *p, LSA_Q_OPEN_TRUSTED_DOMAIN *q_u, LSA_R_OPEN_TRUSTED_DOMAIN *r_u)
{
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
@@ -1342,7 +1346,7 @@ NTSTATUS _lsa_OpenTrustedDomain(pipes_struct *p, struct lsa_OpenTrustedDomain *r
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_CreateTrustedDomain(pipes_struct *p, struct lsa_CreateTrustedDomain *r)
+NTSTATUS _lsa_create_trusted_domain(pipes_struct *p, LSA_Q_CREATE_TRUSTED_DOMAIN *q_u, LSA_R_CREATE_TRUSTED_DOMAIN *r_u)
{
return NT_STATUS_ACCESS_DENIED;
}
@@ -1350,7 +1354,7 @@ NTSTATUS _lsa_CreateTrustedDomain(pipes_struct *p, struct lsa_CreateTrustedDomai
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_CreateSecret(pipes_struct *p, struct lsa_CreateSecret *r)
+NTSTATUS _lsa_create_secret(pipes_struct *p, LSA_Q_CREATE_SECRET *q_u, LSA_R_CREATE_SECRET *r_u)
{
return NT_STATUS_ACCESS_DENIED;
}
@@ -1358,7 +1362,7 @@ NTSTATUS _lsa_CreateSecret(pipes_struct *p, struct lsa_CreateSecret *r)
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_SetSecret(pipes_struct *p, struct lsa_SetSecret *r)
+NTSTATUS _lsa_set_secret(pipes_struct *p, LSA_Q_SET_SECRET *q_u, LSA_R_SET_SECRET *r_u)
{
return NT_STATUS_ACCESS_DENIED;
}
@@ -1538,26 +1542,14 @@ NTSTATUS _lsa_enum_accounts(pipes_struct *p, LSA_Q_ENUM_ACCOUNTS *q_u, LSA_R_ENU
NTSTATUS _lsa_unk_get_connuser(pipes_struct *p, LSA_Q_UNK_GET_CONNUSER *q_u, LSA_R_UNK_GET_CONNUSER *r_u)
{
- const char *username, *domname;
+ fstring username, domname;
user_struct *vuser = get_valid_user_struct(p->vuid);
if (vuser == NULL)
return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
-
- if (vuser->guest) {
- /*
- * I'm 99% sure this is not the right place to do this,
- * global_sid_Anonymous should probably be put into the token
- * instead of the guest id -- vl
- */
- if (!lookup_sid(p->mem_ctx, &global_sid_Anonymous,
- &domname, &username, NULL)) {
- return NT_STATUS_NO_MEMORY;
- }
- } else {
- username = vuser->user.smb_name;
- domname = vuser->user.domain;
- }
+
+ fstrcpy(username, vuser->user.smb_name);
+ fstrcpy(domname, vuser->user.domain);
r_u->ptr_user_name = 1;
init_unistr2(&r_u->uni2_user_name, username, UNI_STR_TERMINATE);
@@ -1593,23 +1585,17 @@ NTSTATUS _lsa_create_account(pipes_struct *p, LSA_Q_CREATEACCOUNT *q_u, LSA_R_CR
* I don't know if it's the right one. not documented.
* but guessed with rpcclient.
*/
- if (!(handle->access & POLICY_GET_PRIVATE_INFORMATION)) {
- DEBUG(10, ("_lsa_create_account: No POLICY_GET_PRIVATE_INFORMATION access right!\n"));
+ if (!(handle->access & POLICY_GET_PRIVATE_INFORMATION))
return NT_STATUS_ACCESS_DENIED;
- }
/* check to see if the pipe_user is a Domain Admin since
account_pol.tdb was already opened as root, this is all we have */
- if ( !nt_token_check_domain_rid( p->pipe_user.nt_user_token, DOMAIN_GROUP_RID_ADMINS ) ) {
- DEBUG(10, ("_lsa_create_account: The use is not a Domain Admin, deny access!\n"));
+ if ( !nt_token_check_domain_rid( p->pipe_user.nt_user_token, DOMAIN_GROUP_RID_ADMINS ) )
return NT_STATUS_ACCESS_DENIED;
- }
- if ( is_privileged_sid( &q_u->sid.sid ) ) {
- DEBUG(10, ("_lsa_create_account: Policy account already exists!\n"));
+ if ( is_privileged_sid( &q_u->sid.sid ) )
return NT_STATUS_OBJECT_NAME_COLLISION;
- }
/* associate the user/group SID with the (unique) handle. */
@@ -1624,7 +1610,6 @@ NTSTATUS _lsa_create_account(pipes_struct *p, LSA_Q_CREATEACCOUNT *q_u, LSA_R_CR
if (!create_policy_hnd(p, &r_u->pol, free_lsa_info, (void *)info))
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
- DEBUG(10, ("_lsa_create_account: call privileges code to create an account\n"));
return privilege_create_account( &info->sid );
}
@@ -1719,7 +1704,7 @@ NTSTATUS _lsa_getsystemaccount(pipes_struct *p, LSA_Q_GETSYSTEMACCOUNT *q_u, LSA
return NT_STATUS_INVALID_HANDLE;
if (!lookup_sid(p->mem_ctx, &info->sid, NULL, NULL, NULL))
- return NT_STATUS_OK;
+ return NT_STATUS_ACCESS_DENIED;
/*
0x01 -> Log on locally
@@ -1770,6 +1755,7 @@ NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u
struct lsa_info *info = NULL;
SE_PRIV mask;
PRIVILEGE_SET *set = NULL;
+ struct current_user user;
/* find the connection policy handle. */
if (!find_policy_by_hnd(p, &q_u->pol, (void **)(void *)&info))
@@ -1778,7 +1764,8 @@ NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u
/* check to see if the pipe_user is root or a Domain Admin since
account_pol.tdb was already opened as root, this is all we have */
- if ( p->pipe_user.ut.uid != sec_initial_uid()
+ get_current_user( &user, p );
+ if ( user.ut.uid != sec_initial_uid()
&& !nt_token_check_domain_rid( p->pipe_user.nt_user_token, DOMAIN_GROUP_RID_ADMINS ) )
{
return NT_STATUS_ACCESS_DENIED;
@@ -1809,6 +1796,7 @@ NTSTATUS _lsa_removeprivs(pipes_struct *p, LSA_Q_REMOVEPRIVS *q_u, LSA_R_REMOVEP
struct lsa_info *info = NULL;
SE_PRIV mask;
PRIVILEGE_SET *set = NULL;
+ struct current_user user;
/* find the connection policy handle. */
if (!find_policy_by_hnd(p, &q_u->pol, (void **)(void *)&info))
@@ -1817,7 +1805,8 @@ NTSTATUS _lsa_removeprivs(pipes_struct *p, LSA_Q_REMOVEPRIVS *q_u, LSA_R_REMOVEP
/* check to see if the pipe_user is root or a Domain Admin since
account_pol.tdb was already opened as root, this is all we have */
- if ( p->pipe_user.ut.uid != sec_initial_uid()
+ get_current_user( &user, p );
+ if ( user.ut.uid != sec_initial_uid()
&& !nt_token_check_domain_rid( p->pipe_user.nt_user_token, DOMAIN_GROUP_RID_ADMINS ) )
{
return NT_STATUS_ACCESS_DENIED;
@@ -1968,6 +1957,7 @@ NTSTATUS _lsa_add_acct_rights(pipes_struct *p, LSA_Q_ADD_ACCT_RIGHTS *q_u, LSA_R
DOM_SID sid;
fstring privname;
UNISTR4_ARRAY *uni_privnames = q_u->rights;
+ struct current_user user;
/* find the connection policy handle. */
@@ -1977,7 +1967,8 @@ NTSTATUS _lsa_add_acct_rights(pipes_struct *p, LSA_Q_ADD_ACCT_RIGHTS *q_u, LSA_R
/* check to see if the pipe_user is a Domain Admin since
account_pol.tdb was already opened as root, this is all we have */
- if ( p->pipe_user.ut.uid != sec_initial_uid()
+ get_current_user( &user, p );
+ if ( user.ut.uid != sec_initial_uid()
&& !nt_token_check_domain_rid( p->pipe_user.nt_user_token, DOMAIN_GROUP_RID_ADMINS ) )
{
return NT_STATUS_ACCESS_DENIED;
@@ -2024,6 +2015,7 @@ NTSTATUS _lsa_remove_acct_rights(pipes_struct *p, LSA_Q_REMOVE_ACCT_RIGHTS *q_u,
DOM_SID sid;
fstring privname;
UNISTR4_ARRAY *uni_privnames = q_u->rights;
+ struct current_user user;
/* find the connection policy handle. */
@@ -2033,7 +2025,8 @@ NTSTATUS _lsa_remove_acct_rights(pipes_struct *p, LSA_Q_REMOVE_ACCT_RIGHTS *q_u,
/* check to see if the pipe_user is a Domain Admin since
account_pol.tdb was already opened as root, this is all we have */
- if ( p->pipe_user.ut.uid != sec_initial_uid()
+ get_current_user( &user, p );
+ if ( user.ut.uid != sec_initial_uid()
&& !nt_token_check_domain_rid( p->pipe_user.nt_user_token, DOMAIN_GROUP_RID_ADMINS ) )
{
return NT_STATUS_ACCESS_DENIED;
@@ -2147,466 +2140,3 @@ NTSTATUS _lsa_lookup_priv_value(pipes_struct *p, LSA_Q_LOOKUP_PRIV_VALUE *q_u, L
return NT_STATUS_OK;
}
-
-
-/*
- * From here on the server routines are just dummy ones to make smbd link with
- * librpc/gen_ndr/srv_lsa.c. These routines are actually never called, we are
- * pulling the server stubs across one by one.
- */
-
-NTSTATUS _lsa_Delete(pipes_struct *p, struct lsa_Delete *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_EnumPrivs(pipes_struct *p, struct lsa_EnumPrivs *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QuerySecurity(pipes_struct *p, struct lsa_QuerySecurity *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetSecObj(pipes_struct *p, struct lsa_SetSecObj *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_ChangePassword(pipes_struct *p, struct lsa_ChangePassword *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_OpenPolicy(pipes_struct *p, struct lsa_OpenPolicy *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QueryInfoPolicy(pipes_struct *p, struct lsa_QueryInfoPolicy *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetInfoPolicy(pipes_struct *p, struct lsa_SetInfoPolicy *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_ClearAuditLog(pipes_struct *p, struct lsa_ClearAuditLog *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CreateAccount(pipes_struct *p, struct lsa_CreateAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_EnumAccounts(pipes_struct *p, struct lsa_EnumAccounts *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_EnumTrustDom(pipes_struct *p, struct lsa_EnumTrustDom *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupNames(pipes_struct *p, struct lsa_LookupNames *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupSids(pipes_struct *p, struct lsa_LookupSids *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_OpenAccount(pipes_struct *p, struct lsa_OpenAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_EnumPrivsAccount(pipes_struct *p, struct lsa_EnumPrivsAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_AddPrivilegesToAccount(pipes_struct *p, struct lsa_AddPrivilegesToAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_RemovePrivilegesFromAccount(pipes_struct *p, struct lsa_RemovePrivilegesFromAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_GetQuotasForAccount(pipes_struct *p, struct lsa_GetQuotasForAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetQuotasForAccount(pipes_struct *p, struct lsa_SetQuotasForAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_GetSystemAccessAccount(pipes_struct *p, struct lsa_GetSystemAccessAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetSystemAccessAccount(pipes_struct *p, struct lsa_SetSystemAccessAccount *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QueryTrustedDomainInfo(pipes_struct *p, struct lsa_QueryTrustedDomainInfo *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetInformationTrustedDomain(pipes_struct *p, struct lsa_SetInformationTrustedDomain *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QuerySecret(pipes_struct *p, struct lsa_QuerySecret *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupPrivValue(pipes_struct *p, struct lsa_LookupPrivValue *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupPrivName(pipes_struct *p, struct lsa_LookupPrivName *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupPrivDisplayName(pipes_struct *p, struct lsa_LookupPrivDisplayName *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_DeleteObject(pipes_struct *p, struct lsa_DeleteObject *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_EnumAccountsWithUserRight(pipes_struct *p, struct lsa_EnumAccountsWithUserRight *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_EnumAccountRights(pipes_struct *p, struct lsa_EnumAccountRights *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_AddAccountRights(pipes_struct *p, struct lsa_AddAccountRights *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_RemoveAccountRights(pipes_struct *p, struct lsa_RemoveAccountRights *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QueryTrustedDomainInfoBySid(pipes_struct *p, struct lsa_QueryTrustedDomainInfoBySid *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetTrustedDomainInfo(pipes_struct *p, struct lsa_SetTrustedDomainInfo *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_DeleteTrustedDomain(pipes_struct *p, struct lsa_DeleteTrustedDomain *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_StorePrivateData(pipes_struct *p, struct lsa_StorePrivateData *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_RetrievePrivateData(pipes_struct *p, struct lsa_RetrievePrivateData *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_OpenPolicy2(pipes_struct *p, struct lsa_OpenPolicy2 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_GetUserName(pipes_struct *p, struct lsa_GetUserName *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QueryInfoPolicy2(pipes_struct *p, struct lsa_QueryInfoPolicy2 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetInfoPolicy2(pipes_struct *p, struct lsa_SetInfoPolicy2 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QueryTrustedDomainInfoByName(pipes_struct *p, struct lsa_QueryTrustedDomainInfoByName *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetTrustedDomainInfoByName(pipes_struct *p, struct lsa_SetTrustedDomainInfoByName *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_EnumTrustedDomainsEx(pipes_struct *p, struct lsa_EnumTrustedDomainsEx *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CreateTrustedDomainEx(pipes_struct *p, struct lsa_CreateTrustedDomainEx *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CloseTrustedDomainEx(pipes_struct *p, struct lsa_CloseTrustedDomainEx *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_QueryDomainInformationPolicy(pipes_struct *p, struct lsa_QueryDomainInformationPolicy *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_SetDomainInformationPolicy(pipes_struct *p, struct lsa_SetDomainInformationPolicy *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_OpenTrustedDomainByName(pipes_struct *p, struct lsa_OpenTrustedDomainByName *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_TestCall(pipes_struct *p, struct lsa_TestCall *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupSids2(pipes_struct *p, struct lsa_LookupSids2 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupNames2(pipes_struct *p, struct lsa_LookupNames2 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CreateTrustedDomainEx2(pipes_struct *p, struct lsa_CreateTrustedDomainEx2 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRWRITE(pipes_struct *p, struct lsa_CREDRWRITE *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRREAD(pipes_struct *p, struct lsa_CREDRREAD *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRENUMERATE(pipes_struct *p, struct lsa_CREDRENUMERATE *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRWRITEDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRWRITEDOMAINCREDENTIALS *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRREADDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRREADDOMAINCREDENTIALS *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRDELETE(pipes_struct *p, struct lsa_CREDRDELETE *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRGETTARGETINFO(pipes_struct *p, struct lsa_CREDRGETTARGETINFO *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRPROFILELOADED(pipes_struct *p, struct lsa_CREDRPROFILELOADED *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupNames3(pipes_struct *p, struct lsa_LookupNames3 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRGETSESSIONTYPES(pipes_struct *p, struct lsa_CREDRGETSESSIONTYPES *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARREGISTERAUDITEVENT *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARGENAUDITEVENT(pipes_struct *p, struct lsa_LSARGENAUDITEVENT *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARUNREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARUNREGISTERAUDITEVENT *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARQUERYFORESTTRUSTINFORMATION(pipes_struct *p, struct lsa_LSARQUERYFORESTTRUSTINFORMATION *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p, struct lsa_LSARSETFORESTTRUSTINFORMATION *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_CREDRRENAME(pipes_struct *p, struct lsa_CREDRRENAME *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupSids3(pipes_struct *p, struct lsa_LookupSids3 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LookupNames4(pipes_struct *p, struct lsa_LookupNames4 *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSAROPENPOLICYSCE(pipes_struct *p, struct lsa_LSAROPENPOLICYSCE *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS _lsa_LSARADTREPORTSECURITYEVENT(pipes_struct *p, struct lsa_LSARADTREPORTSECURITYEVENT *r)
-{
- p->rng_fault_state = True;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
diff --git a/source/rpc_server/srv_netlog_nt.c b/source/rpc_server/srv_netlog_nt.c
index 2bb872874b0..b8c776964e9 100644
--- a/source/rpc_server/srv_netlog_nt.c
+++ b/source/rpc_server/srv_netlog_nt.c
@@ -75,9 +75,22 @@ Send a message to smbd to do a sam synchronisation
static void send_sync_message(void)
{
+ TDB_CONTEXT *tdb;
+
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0,
+ TDB_DEFAULT, O_RDONLY, 0);
+
+ if (!tdb) {
+ DEBUG(3, ("send_sync_message(): failed to open connections "
+ "database\n"));
+ return;
+ }
+
DEBUG(3, ("sending sam synchronisation message\n"));
- message_send_all(smbd_messaging_context(), MSG_SMB_SAM_SYNC, NULL, 0,
- NULL);
+
+ message_send_all(tdb, MSG_SMB_SAM_SYNC, NULL, 0, False, NULL);
+
+ tdb_close(tdb);
}
/*************************************************************************
@@ -283,7 +296,7 @@ static NTSTATUS get_md4pw(char *md4pw, char *mach_acct, uint16 sec_chan_type)
}
memcpy(md4pw, pass, 16);
- dump_data(5, (uint8 *)md4pw, 16);
+ dump_data(5, md4pw, 16);
TALLOC_FREE(sampass);
diff --git a/source/rpc_server/srv_ntsvcs_nt.c b/source/rpc_server/srv_ntsvcs_nt.c
index 6164217a65f..79259174fd2 100644
--- a/source/rpc_server/srv_ntsvcs_nt.c
+++ b/source/rpc_server/srv_ntsvcs_nt.c
@@ -27,9 +27,13 @@
/********************************************************************
********************************************************************/
-static char* get_device_path(TALLOC_CTX *mem_ctx, const char *device )
+static char* get_device_path( const char *device )
{
- return talloc_asprintf(mem_ctx, "ROOT\\Legacy_%s\\0000", device);
+ static pstring path;
+
+ pstr_sprintf( path, "ROOT\\Legacy_%s\\0000", device );
+
+ return path;
}
/********************************************************************
@@ -48,21 +52,16 @@ WERROR _ntsvcs_get_version( pipes_struct *p, NTSVCS_Q_GET_VERSION *q_u, NTSVCS_R
WERROR _ntsvcs_get_device_list_size( pipes_struct *p, NTSVCS_Q_GET_DEVICE_LIST_SIZE *q_u, NTSVCS_R_GET_DEVICE_LIST_SIZE *r_u )
{
fstring device;
- char *devicepath;
+ const char *devicepath;
if ( !q_u->devicename )
return WERR_ACCESS_DENIED;
rpcstr_pull(device, q_u->devicename->buffer, sizeof(device), q_u->devicename->uni_str_len*2, 0);
-
- if (!(devicepath = get_device_path(p->mem_ctx, device))) {
- return WERR_NOMEM;
- }
+ devicepath = get_device_path( device );
r_u->size = strlen(devicepath) + 2;
- TALLOC_FREE(devicepath);
-
return WERR_OK;
}
@@ -73,21 +72,17 @@ WERROR _ntsvcs_get_device_list_size( pipes_struct *p, NTSVCS_Q_GET_DEVICE_LIST_S
WERROR _ntsvcs_get_device_list( pipes_struct *p, NTSVCS_Q_GET_DEVICE_LIST *q_u, NTSVCS_R_GET_DEVICE_LIST *r_u )
{
fstring device;
- char *devicepath;
+ const char *devicepath;
if ( !q_u->devicename )
return WERR_ACCESS_DENIED;
rpcstr_pull(device, q_u->devicename->buffer, sizeof(device), q_u->devicename->uni_str_len*2, 0);
-
- if (!(devicepath = get_device_path(p->mem_ctx, device))) {
- return WERR_NOMEM;
- }
+ devicepath = get_device_path( device );
/* This has to be DOUBLE NULL terminated */
init_unistr2( &r_u->devicepath, devicepath, UNI_STR_DBLTERMINATE );
- TALLOC_FREE(devicepath);
r_u->needed = r_u->devicepath.uni_str_len;
return WERR_OK;
diff --git a/source/rpc_server/srv_pipe.c b/source/rpc_server/srv_pipe.c
index 8aab80db726..db1c3fea0e5 100644
--- a/source/rpc_server/srv_pipe.c
+++ b/source/rpc_server/srv_pipe.c
@@ -46,11 +46,6 @@ static void free_pipe_ntlmssp_auth_data(struct pipe_auth_data *auth)
auth->a_u.auth_ntlmssp_state = NULL;
}
-static DATA_BLOB generic_session_key(void)
-{
- return data_blob("SystemLibraryDTC", 16);
-}
-
/*******************************************************************
Generate the next PDU to be returned from the data in p->rdata.
Handle NTLMSSP.
@@ -615,6 +610,16 @@ static BOOL pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
ZERO_STRUCT(reply);
+ memset(p->user_name, '\0', sizeof(p->user_name));
+ memset(p->pipe_user_name, '\0', sizeof(p->pipe_user_name));
+ memset(p->domain, '\0', sizeof(p->domain));
+ memset(p->wks, '\0', sizeof(p->wks));
+
+ /* Set up for non-authenticated user. */
+ TALLOC_FREE(p->pipe_user.nt_user_token);
+ p->pipe_user.ut.ngroups = 0;
+ SAFE_FREE( p->pipe_user.ut.groups);
+
/* this has to be done as root in order to verify the password */
become_root();
status = auth_ntlmssp_update(a, *p_resp_blob, &reply);
@@ -627,12 +632,6 @@ static BOOL pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
return False;
}
- if (a->server_info->ptok == NULL) {
- DEBUG(1,("Error: Authmodule failed to provide nt_user_token\n"));
- p->pipe_user.nt_user_token = NULL;
- return False;
- }
-
/* Finally - if the pipe negotiated integrity (sign) or privacy (seal)
ensure the underlying NTLMSSP flags are also set. If not we should
refuse the bind. */
@@ -654,9 +653,13 @@ static BOOL pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
}
}
+ fstrcpy(p->user_name, a->ntlmssp_state->user);
+ fstrcpy(p->pipe_user_name, a->server_info->unix_name);
+ fstrcpy(p->domain, a->ntlmssp_state->domain);
+ fstrcpy(p->wks, a->ntlmssp_state->workstation);
+
DEBUG(5,("pipe_ntlmssp_verify_final: OK: user: %s domain: %s workstation: %s\n",
- a->ntlmssp_state->user, a->ntlmssp_state->domain,
- a->ntlmssp_state->workstation));
+ p->user_name, p->domain, p->wks));
/*
* Store the UNIX credential data (uid/gid pair) in the pipe structure.
@@ -666,40 +669,30 @@ static BOOL pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
p->pipe_user.ut.gid = a->server_info->gid;
/*
- * We're an authenticated bind over smb, so the session key needs to
- * be set to "SystemLibraryDTC". Weird, but this is what Windows
- * does. See the RPC-SAMBA3SESSIONKEY.
+ * Copy the session key from the ntlmssp state.
*/
data_blob_free(&p->session_key);
- p->session_key = generic_session_key();
+ p->session_key = data_blob(a->ntlmssp_state->session_key.data, a->ntlmssp_state->session_key.length);
if (!p->session_key.data) {
return False;
}
p->pipe_user.ut.ngroups = a->server_info->n_groups;
if (p->pipe_user.ut.ngroups) {
- if (!(p->pipe_user.ut.groups = (gid_t *)
- memdup(a->server_info->groups,
- sizeof(gid_t) * p->pipe_user.ut.ngroups))) {
- DEBUG(0,("pipe_ntlmssp_verify_final: failed to memdup group list to p->pipe_user.groups\n"));
- data_blob_free(&p->session_key);
+ if (!(p->pipe_user.ut.groups = memdup(a->server_info->groups,
+ sizeof(gid_t) * p->pipe_user.ut.ngroups))) {
+ DEBUG(0,("failed to memdup group list to p->pipe_user.groups\n"));
return False;
}
}
- if (!a->server_info->ptok) {
- DEBUG(1,("pipe_ntlmssp_verify_final: Error: Authmodule failed to provide nt_user_token\n"));
- data_blob_free(&p->session_key);
- SAFE_FREE(p->pipe_user.ut.groups);
- return False;
- }
-
- p->pipe_user.nt_user_token = dup_nt_token(NULL, a->server_info->ptok);
- if (!p->pipe_user.nt_user_token) {
- DEBUG(1,("pipe_ntlmssp_verify_final: dup_nt_token failed.\n"));
- data_blob_free(&p->session_key);
- SAFE_FREE(p->pipe_user.ut.groups);
+ if (a->server_info->ptok) {
+ p->pipe_user.nt_user_token =
+ dup_nt_token(NULL, a->server_info->ptok);
+ } else {
+ DEBUG(1,("Error: Authmodule failed to provide nt_user_token\n"));
+ p->pipe_user.nt_user_token = NULL;
return False;
}
@@ -1359,21 +1352,8 @@ static BOOL pipe_schannel_auth_bind(pipes_struct *p, prs_struct *rpc_in_p,
* JRA. Should we also copy the schannel session key into the pipe session key p->session_key
* here ? We do that for NTLMSSP, but the session key is already set up from the vuser
* struct of the person who opened the pipe. I need to test this further. JRA.
- *
- * VL. As we are mapping this to guest set the generic key
- * "SystemLibraryDTC" key here. It's a bit difficult to test against
- * W2k3, as it does not allow schannel binds against SAMR and LSA
- * anymore.
*/
- data_blob_free(&p->session_key);
- p->session_key = generic_session_key();
- if (p->session_key.data == NULL) {
- DEBUG(0, ("pipe_schannel_auth_bind: Could not alloc session"
- " key\n"));
- return False;
- }
-
init_rpc_hdr_auth(&auth_info, RPC_SCHANNEL_AUTH_TYPE, pauth_info->auth_level, RPC_HDR_AUTH_LEN, 1);
if(!smb_io_rpc_hdr_auth("", &auth_info, pout_auth, 0)) {
DEBUG(0,("pipe_schannel_auth_bind: marshalling of RPC_HDR_AUTH failed.\n"));
@@ -1402,12 +1382,6 @@ static BOOL pipe_schannel_auth_bind(pipes_struct *p, prs_struct *rpc_in_p,
p->auth.auth_data_free_func = NULL;
p->auth.auth_type = PIPE_AUTH_TYPE_SCHANNEL;
- if (!set_current_user_guest(&p->pipe_user)) {
- DEBUG(1, ("pipe_schannel_auth_bind: Could not set guest "
- "token\n"));
- return False;
- }
-
p->pipe_bound = True;
return True;
@@ -1658,18 +1632,11 @@ BOOL api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p)
case RPC_ANONYMOUS_AUTH_TYPE:
/* Unauthenticated bind request. */
- /* Get the authenticated pipe user from current_user */
- if (!copy_current_user(&p->pipe_user, &current_user)) {
- DEBUG(10, ("Could not copy current user\n"));
- goto err_exit;
- }
/* We're finished - no more packets. */
p->auth.auth_type = PIPE_AUTH_TYPE_NONE;
/* We must set the pipe auth_level here also. */
p->auth.auth_level = PIPE_AUTH_LEVEL_NONE;
p->pipe_bound = True;
- /* The session key was initialized from the SMB
- * session in make_internal_rpc_pipe_p */
break;
default:
@@ -2173,6 +2140,23 @@ BOOL api_pipe_schannel_process(pipes_struct *p, prs_struct *rpc_in, uint32 *p_ss
}
/****************************************************************************
+ Return a user struct for a pipe user.
+****************************************************************************/
+
+struct current_user *get_current_user(struct current_user *user, pipes_struct *p)
+{
+ if (p->pipe_bound &&
+ (p->auth.auth_type == PIPE_AUTH_TYPE_NTLMSSP ||
+ (p->auth.auth_type == PIPE_AUTH_TYPE_SPNEGO_NTLMSSP))) {
+ memcpy(user, &p->pipe_user, sizeof(struct current_user));
+ } else {
+ memcpy(user, &current_user, sizeof(struct current_user));
+ }
+
+ return user;
+}
+
+/****************************************************************************
Find the set of RPC functions associated with this context_id
****************************************************************************/
@@ -2226,7 +2210,9 @@ BOOL api_pipe_request(pipes_struct *p)
BOOL changed_user = False;
PIPE_RPC_FNS *pipe_fns;
- if (p->pipe_bound) {
+ if (p->pipe_bound &&
+ ((p->auth.auth_type == PIPE_AUTH_TYPE_NTLMSSP) ||
+ (p->auth.auth_type == PIPE_AUTH_TYPE_SPNEGO_NTLMSSP))) {
if(!become_authenticated_pipe_user(p)) {
prs_mem_free(&p->out_data.rdata);
return False;
@@ -2310,13 +2296,6 @@ BOOL api_rpcTNP(pipes_struct *p, const char *rpc_name,
return True;
}
- if (p->rng_fault_state) {
- DEBUG(4, ("api_rpcTNP: rng fault return\n"));
- p->rng_fault_state = False;
- setup_fault_pdu(p, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR));
- return True;
- }
-
slprintf(name, sizeof(name)-1, "out_%s", rpc_name);
offset2 = prs_offset(&p->out_data.rdata);
prs_set_offset(&p->out_data.rdata, offset1);
@@ -2330,7 +2309,7 @@ BOOL api_rpcTNP(pipes_struct *p, const char *rpc_name,
if ((DEBUGLEVEL >= 10) &&
(prs_offset(&p->in_data.data) != prs_data_size(&p->in_data.data))) {
size_t data_len = prs_data_size(&p->in_data.data) - prs_offset(&p->in_data.data);
- char *data = (char *)SMB_MALLOC(data_len);
+ char *data = SMB_MALLOC(data_len);
DEBUG(10, ("api_rpcTNP: rpc input buffer underflow (parse error?)\n"));
if (data) {
@@ -2371,7 +2350,7 @@ void get_pipe_fns( int idx, struct api_struct **fns, int *n_fns )
wkssvc_get_pipe_fns( &cmds, &n_cmds );
break;
case PI_WINREG:
- winreg_get_pipe_fns( &cmds, &n_cmds );
+ reg_get_pipe_fns( &cmds, &n_cmds );
break;
case PI_SPOOLSS:
spoolss_get_pipe_fns( &cmds, &n_cmds );
@@ -2380,25 +2359,19 @@ void get_pipe_fns( int idx, struct api_struct **fns, int *n_fns )
netdfs_get_pipe_fns( &cmds, &n_cmds );
break;
case PI_SVCCTL:
- svcctl2_get_pipe_fns( &cmds, &n_cmds );
+ svcctl_get_pipe_fns( &cmds, &n_cmds );
break;
- case PI_EVENTLOG:
- eventlog2_get_pipe_fns( &cmds, &n_cmds );
- break;
- case PI_UNIXINFO:
- unixinfo_get_pipe_fns( &cmds, &n_cmds );
+ case PI_EVENTLOG:
+ eventlog_get_pipe_fns( &cmds, &n_cmds );
break;
case PI_NTSVCS:
ntsvcs_get_pipe_fns( &cmds, &n_cmds );
break;
#ifdef DEVELOPER
- case PI_RPCECHO:
- rpcecho_get_pipe_fns( &cmds, &n_cmds );
+ case PI_ECHO:
+ echo_get_pipe_fns( &cmds, &n_cmds );
break;
#endif
- case PI_EPMAPPER:
- epmapper_get_pipe_fns( &cmds, &n_cmds );
- break;
default:
DEBUG(0,("get_pipe_fns: Unknown pipe index! [%d]\n", idx));
}
diff --git a/source/rpc_server/srv_pipe_hnd.c b/source/rpc_server/srv_pipe_hnd.c
index d65696668ee..26e06f60a17 100644
--- a/source/rpc_server/srv_pipe_hnd.c
+++ b/source/rpc_server/srv_pipe_hnd.c
@@ -351,6 +351,8 @@ static void *make_internal_rpc_pipe_p(char *pipe_name,
/* Store the session key and NT_TOKEN */
if (vuser) {
p->session_key = data_blob(vuser->session_key.data, vuser->session_key.length);
+ p->pipe_user.nt_user_token = dup_nt_token(
+ NULL, vuser->nt_user_token);
}
/*
@@ -937,7 +939,7 @@ ssize_t write_to_pipe(smb_np_struct *p, char *data, size_t n)
DEBUG(6,(" name: %s open: %s len: %d\n",
p->name, BOOLSTR(p->open), (int)n));
- dump_data(50, (uint8 *)data, n);
+ dump_data(50, data, n);
return p->namedpipe_write(p->np_state, data, n);
}
@@ -1168,7 +1170,7 @@ BOOL close_rpc_pipe_hnd(smb_np_struct *p)
DLIST_REMOVE(Pipes, p);
- /* TODO: Remove from pipe open db */
+ /* Remove from pipe open db */
if ( !delete_pipe_opendb( p ) ) {
DEBUG(3,("close_rpc_pipe_hnd: failed to delete %s "
diff --git a/source/rpc_server/srv_reg.c b/source/rpc_server/srv_reg.c
new file mode 100644
index 00000000000..17725240387
--- /dev/null
+++ b/source/rpc_server/srv_reg.c
@@ -0,0 +1,659 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * RPC Pipe client / server routines
+ * Copyright (C) Andrew Tridgell 1992-1997,
+ * Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
+ * Copyright (C) Paul Ashton 1997,
+ * Copyright (C) Marc Jacobsen 2000,
+ * Copyright (C) Jeremy Allison 2001,
+ * Copyright (C) Gerald Carter 2002,
+ * Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* This is the interface for the registry functions. */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_SRV
+
+/*******************************************************************
+ api_reg_close
+ ********************************************************************/
+
+static BOOL api_reg_close(pipes_struct *p)
+{
+ REG_Q_CLOSE q_u;
+ REG_R_CLOSE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg unknown 1 */
+ if(!reg_io_q_close("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_close(p, &q_u, &r_u);
+
+ if(!reg_io_r_close("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_open_khlm
+ ********************************************************************/
+
+static BOOL api_reg_open_hklm(pipes_struct *p)
+{
+ REG_Q_OPEN_HIVE q_u;
+ REG_R_OPEN_HIVE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg open */
+ if(!reg_io_q_open_hive("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_open_hklm(p, &q_u, &r_u);
+
+ if(!reg_io_r_open_hive("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_open_khu
+ ********************************************************************/
+
+static BOOL api_reg_open_hku(pipes_struct *p)
+{
+ REG_Q_OPEN_HIVE q_u;
+ REG_R_OPEN_HIVE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg open */
+ if(!reg_io_q_open_hive("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_open_hku(p, &q_u, &r_u);
+
+ if(!reg_io_r_open_hive("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_open_khcr
+ ********************************************************************/
+
+static BOOL api_reg_open_hkcr(pipes_struct *p)
+{
+ REG_Q_OPEN_HIVE q_u;
+ REG_R_OPEN_HIVE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg open */
+ if(!reg_io_q_open_hive("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_open_hkcr(p, &q_u, &r_u);
+
+ if(!reg_io_r_open_hive("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ api_reg_open_entry
+ ********************************************************************/
+
+static BOOL api_reg_open_entry(pipes_struct *p)
+{
+ REG_Q_OPEN_ENTRY q_u;
+ REG_R_OPEN_ENTRY r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg open entry */
+ if(!reg_io_q_open_entry("", &q_u, data, 0))
+ return False;
+
+ /* construct reply. */
+ r_u.status = _reg_open_entry(p, &q_u, &r_u);
+
+ if(!reg_io_r_open_entry("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_query_value
+ ********************************************************************/
+
+static BOOL api_reg_query_value(pipes_struct *p)
+{
+ REG_Q_QUERY_VALUE q_u;
+ REG_R_QUERY_VALUE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg unknown 0x11*/
+ if(!reg_io_q_query_value("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_query_value(p, &q_u, &r_u);
+
+ if(!reg_io_r_query_value("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_shutdown
+ ********************************************************************/
+
+static BOOL api_reg_shutdown(pipes_struct *p)
+{
+ REG_Q_SHUTDOWN q_u;
+ REG_R_SHUTDOWN r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg shutdown */
+ if(!reg_io_q_shutdown("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_shutdown(p, &q_u, &r_u);
+
+ if(!reg_io_r_shutdown("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_shutdown_ex
+ ********************************************************************/
+
+static BOOL api_reg_shutdown_ex(pipes_struct *p)
+{
+ REG_Q_SHUTDOWN_EX q_u;
+ REG_R_SHUTDOWN_EX r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg shutdown ex */
+ if(!reg_io_q_shutdown_ex("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_shutdown_ex(p, &q_u, &r_u);
+
+ if(!reg_io_r_shutdown_ex("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_abort_shutdown
+ ********************************************************************/
+
+static BOOL api_reg_abort_shutdown(pipes_struct *p)
+{
+ REG_Q_ABORT_SHUTDOWN q_u;
+ REG_R_ABORT_SHUTDOWN r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg shutdown */
+ if(!reg_io_q_abort_shutdown("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_abort_shutdown(p, &q_u, &r_u);
+
+ if(!reg_io_r_abort_shutdown("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ api_reg_query_key
+ ********************************************************************/
+
+static BOOL api_reg_query_key(pipes_struct *p)
+{
+ REG_Q_QUERY_KEY q_u;
+ REG_R_QUERY_KEY r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_query_key("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_query_key(p, &q_u, &r_u);
+
+ if(!reg_io_r_query_key("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_getversion
+ ********************************************************************/
+
+static BOOL api_reg_getversion(pipes_struct *p)
+{
+ REG_Q_GETVERSION q_u;
+ REG_R_GETVERSION r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_getversion("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_getversion(p, &q_u, &r_u);
+
+ if(!reg_io_r_getversion("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_enum_key
+ ********************************************************************/
+
+static BOOL api_reg_enum_key(pipes_struct *p)
+{
+ REG_Q_ENUM_KEY q_u;
+ REG_R_ENUM_KEY r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_enum_key("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_enum_key(p, &q_u, &r_u);
+
+ if(!reg_io_r_enum_key("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_enum_value
+ ********************************************************************/
+
+static BOOL api_reg_enum_value(pipes_struct *p)
+{
+ REG_Q_ENUM_VALUE q_u;
+ REG_R_ENUM_VALUE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_enum_val("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_enum_value(p, &q_u, &r_u);
+
+ if(!reg_io_r_enum_val("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ ******************************************************************/
+
+static BOOL api_reg_restore_key(pipes_struct *p)
+{
+ REG_Q_RESTORE_KEY q_u;
+ REG_R_RESTORE_KEY r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_restore_key("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_restore_key(p, &q_u, &r_u);
+
+ if(!reg_io_r_restore_key("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+static BOOL api_reg_save_key(pipes_struct *p)
+{
+ REG_Q_SAVE_KEY q_u;
+ REG_R_SAVE_KEY r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_save_key("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_save_key(p, &q_u, &r_u);
+
+ if(!reg_io_r_save_key("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_open_hkpd
+ ********************************************************************/
+
+static BOOL api_reg_open_hkpd(pipes_struct *p)
+{
+ REG_Q_OPEN_HIVE q_u;
+ REG_R_OPEN_HIVE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg open */
+ if(!reg_io_q_open_hive("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_open_hkpd(p, &q_u, &r_u);
+
+ if(!reg_io_r_open_hive("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_reg_open_hkpd
+ ********************************************************************/
+static BOOL api_reg_open_hkpt(pipes_struct *p)
+{
+ REG_Q_OPEN_HIVE q_u;
+ REG_R_OPEN_HIVE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the reg open */
+ if(!reg_io_q_open_hive("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_open_hkpt(p, &q_u, &r_u);
+
+ if(!reg_io_r_open_hive("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ ******************************************************************/
+
+static BOOL api_reg_create_key_ex(pipes_struct *p)
+{
+ REG_Q_CREATE_KEY_EX q_u;
+ REG_R_CREATE_KEY_EX r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_create_key_ex("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_create_key_ex(p, &q_u, &r_u);
+
+ if(!reg_io_r_create_key_ex("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ ******************************************************************/
+
+static BOOL api_reg_set_value(pipes_struct *p)
+{
+ REG_Q_SET_VALUE q_u;
+ REG_R_SET_VALUE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_set_value("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_set_value(p, &q_u, &r_u);
+
+ if(!reg_io_r_set_value("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ ******************************************************************/
+
+static BOOL api_reg_delete_key(pipes_struct *p)
+{
+ REG_Q_DELETE_KEY q_u;
+ REG_R_DELETE_KEY r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_delete_key("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_delete_key(p, &q_u, &r_u);
+
+ if(!reg_io_r_delete_key("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ ******************************************************************/
+
+static BOOL api_reg_delete_value(pipes_struct *p)
+{
+ REG_Q_DELETE_VALUE q_u;
+ REG_R_DELETE_VALUE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_delete_value("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_delete_value(p, &q_u, &r_u);
+
+ if(!reg_io_r_delete_value("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ ******************************************************************/
+
+static BOOL api_reg_get_key_sec(pipes_struct *p)
+{
+ REG_Q_GET_KEY_SEC q_u;
+ REG_R_GET_KEY_SEC r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_get_key_sec("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_get_key_sec(p, &q_u, &r_u);
+
+ if(!reg_io_r_get_key_sec("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ ******************************************************************/
+
+static BOOL api_reg_set_key_sec(pipes_struct *p)
+{
+ REG_Q_SET_KEY_SEC q_u;
+ REG_R_SET_KEY_SEC r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!reg_io_q_set_key_sec("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _reg_set_key_sec(p, &q_u, &r_u);
+
+ if(!reg_io_r_set_key_sec("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+
+/*******************************************************************
+ array of \PIPE\reg operations
+ ********************************************************************/
+
+static struct api_struct api_reg_cmds[] =
+{
+ { "REG_CLOSE" , REG_CLOSE , api_reg_close },
+ { "REG_OPEN_ENTRY" , REG_OPEN_ENTRY , api_reg_open_entry },
+ { "REG_OPEN_HKCR" , REG_OPEN_HKCR , api_reg_open_hkcr },
+ { "REG_OPEN_HKLM" , REG_OPEN_HKLM , api_reg_open_hklm },
+ { "REG_OPEN_HKPD" , REG_OPEN_HKPD , api_reg_open_hkpd },
+ { "REG_OPEN_HKPT" , REG_OPEN_HKPT , api_reg_open_hkpt },
+ { "REG_OPEN_HKU" , REG_OPEN_HKU , api_reg_open_hku },
+ { "REG_ENUM_KEY" , REG_ENUM_KEY , api_reg_enum_key },
+ { "REG_ENUM_VALUE" , REG_ENUM_VALUE , api_reg_enum_value },
+ { "REG_QUERY_KEY" , REG_QUERY_KEY , api_reg_query_key },
+ { "REG_QUERY_VALUE" , REG_QUERY_VALUE , api_reg_query_value },
+ { "REG_SHUTDOWN" , REG_SHUTDOWN , api_reg_shutdown },
+ { "REG_SHUTDOWN_EX" , REG_SHUTDOWN_EX , api_reg_shutdown_ex },
+ { "REG_ABORT_SHUTDOWN" , REG_ABORT_SHUTDOWN , api_reg_abort_shutdown },
+ { "REG_GETVERSION" , REG_GETVERSION , api_reg_getversion },
+ { "REG_SAVE_KEY" , REG_SAVE_KEY , api_reg_save_key },
+ { "REG_RESTORE_KEY" , REG_RESTORE_KEY , api_reg_restore_key },
+ { "REG_CREATE_KEY_EX" , REG_CREATE_KEY_EX , api_reg_create_key_ex },
+ { "REG_SET_VALUE" , REG_SET_VALUE , api_reg_set_value },
+ { "REG_DELETE_KEY" , REG_DELETE_KEY , api_reg_delete_key },
+ { "REG_DELETE_VALUE" , REG_DELETE_VALUE , api_reg_delete_value },
+ { "REG_GET_KEY_SEC" , REG_GET_KEY_SEC , api_reg_get_key_sec },
+ { "REG_SET_KEY_SEC" , REG_SET_KEY_SEC , api_reg_set_key_sec }
+};
+
+void reg_get_pipe_fns( struct api_struct **fns, int *n_fns )
+{
+ *fns = api_reg_cmds;
+ *n_fns = sizeof(api_reg_cmds) / sizeof(struct api_struct);
+}
+
+NTSTATUS rpc_reg_init(void)
+{
+
+ return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "winreg", "winreg", api_reg_cmds,
+ sizeof(api_reg_cmds) / sizeof(struct api_struct));
+}
diff --git a/source/rpc_server/srv_reg_nt.c b/source/rpc_server/srv_reg_nt.c
new file mode 100644
index 00000000000..3728252c993
--- /dev/null
+++ b/source/rpc_server/srv_reg_nt.c
@@ -0,0 +1,1352 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * RPC Pipe client / server routines
+ * Copyright (C) Andrew Tridgell 1992-1997.
+ * Copyright (C) Luke Kenneth Casson Leighton 1996-1997.
+ * Copyright (C) Paul Ashton 1997.
+ * Copyright (C) Jeremy Allison 2001.
+ * Copyright (C) Gerald Carter 2002-2005.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* Implementation of registry functions. */
+
+#include "includes.h"
+#include "regfio.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_SRV
+
+static struct generic_mapping reg_generic_map =
+ { REG_KEY_READ, REG_KEY_WRITE, REG_KEY_EXECUTE, REG_KEY_ALL };
+
+
+/******************************************************************
+ free() function for REGISTRY_KEY
+ *****************************************************************/
+
+static void free_regkey_info(void *ptr)
+{
+ regkey_close_internal( (REGISTRY_KEY*)ptr );
+}
+
+/******************************************************************
+ Find a registry key handle and return a REGISTRY_KEY
+ *****************************************************************/
+
+static REGISTRY_KEY *find_regkey_index_by_hnd(pipes_struct *p, POLICY_HND *hnd)
+{
+ REGISTRY_KEY *regkey = NULL;
+
+ if(!find_policy_by_hnd(p,hnd,(void **)(void *)&regkey)) {
+ DEBUG(2,("find_regkey_index_by_hnd: Registry Key not found: "));
+ return NULL;
+ }
+
+ return regkey;
+}
+
+
+/*******************************************************************
+ Function for open a new registry handle and creating a handle
+ Note that P should be valid & hnd should already have space
+
+ When we open a key, we store the full path to the key as
+ HK[LM|U]\<key>\<key>\...
+ *******************************************************************/
+
+static WERROR open_registry_key( pipes_struct *p, POLICY_HND *hnd,
+ REGISTRY_KEY **keyinfo, REGISTRY_KEY *parent,
+ const char *subkeyname, uint32 access_desired )
+{
+ pstring keypath;
+ int path_len;
+ WERROR result = WERR_OK;
+
+ /* create a full registry path and strip any trailing '\'
+ characters */
+
+ pstr_sprintf( keypath, "%s%s%s",
+ parent ? parent->name : "",
+ parent ? "\\" : "",
+ subkeyname );
+
+ path_len = strlen( keypath );
+ if ( path_len && keypath[path_len-1] == '\\' )
+ keypath[path_len-1] = '\0';
+
+ /* now do the internal open */
+
+ result = regkey_open_internal( keyinfo, keypath, p->pipe_user.nt_user_token, access_desired );
+ if ( !W_ERROR_IS_OK(result) )
+ return result;
+
+ if ( !create_policy_hnd( p, hnd, free_regkey_info, *keyinfo ) ) {
+ result = WERR_BADFILE;
+ regkey_close_internal( *keyinfo );
+ }
+
+ return result;
+}
+
+/*******************************************************************
+ Function for open a new registry handle and creating a handle
+ Note that P should be valid & hnd should already have space
+ *******************************************************************/
+
+static BOOL close_registry_key(pipes_struct *p, POLICY_HND *hnd)
+{
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd(p, hnd);
+
+ if ( !regkey ) {
+ DEBUG(2,("close_registry_key: Invalid handle (%s:%u:%u)\n", OUR_HANDLE(hnd)));
+ return False;
+ }
+
+ close_policy_hnd(p, hnd);
+
+ return True;
+}
+
+/********************************************************************
+ retrieve information about the subkeys
+ *******************************************************************/
+
+static BOOL get_subkey_information( REGISTRY_KEY *key, uint32 *maxnum, uint32 *maxlen )
+{
+ int num_subkeys, i;
+ uint32 max_len;
+ REGSUBKEY_CTR *subkeys;
+ uint32 len;
+
+ if ( !key )
+ return False;
+
+ if ( !(subkeys = TALLOC_ZERO_P( NULL, REGSUBKEY_CTR )) )
+ return False;
+
+ if ( fetch_reg_keys( key, subkeys ) == -1 )
+ return False;
+
+ /* find the longest string */
+
+ max_len = 0;
+ num_subkeys = regsubkey_ctr_numkeys( subkeys );
+
+ for ( i=0; i<num_subkeys; i++ ) {
+ len = strlen( regsubkey_ctr_specific_key(subkeys, i) );
+ max_len = MAX(max_len, len);
+ }
+
+ *maxnum = num_subkeys;
+ *maxlen = max_len*2;
+
+ TALLOC_FREE( subkeys );
+
+ return True;
+}
+
+/********************************************************************
+ retrieve information about the values.
+ *******************************************************************/
+
+static BOOL get_value_information( REGISTRY_KEY *key, uint32 *maxnum,
+ uint32 *maxlen, uint32 *maxsize )
+{
+ REGVAL_CTR *values;
+ REGISTRY_VALUE *val;
+ uint32 sizemax, lenmax;
+ int i, num_values;
+
+ if ( !key )
+ return False;
+
+ if ( !(values = TALLOC_ZERO_P( NULL, REGVAL_CTR )) )
+ return False;
+
+ if ( fetch_reg_values( key, values ) == -1 )
+ return False;
+
+ lenmax = sizemax = 0;
+ num_values = regval_ctr_numvals( values );
+
+ val = regval_ctr_specific_value( values, 0 );
+
+ for ( i=0; i<num_values && val; i++ )
+ {
+ lenmax = MAX(lenmax, val->valuename ? strlen(val->valuename)+1 : 0 );
+ sizemax = MAX(sizemax, val->size );
+
+ val = regval_ctr_specific_value( values, i );
+ }
+
+ *maxnum = num_values;
+ *maxlen = lenmax;
+ *maxsize = sizemax;
+
+ TALLOC_FREE( values );
+
+ return True;
+}
+
+
+/********************************************************************
+ reg_close
+ ********************************************************************/
+
+WERROR _reg_close(pipes_struct *p, REG_Q_CLOSE *q_u, REG_R_CLOSE *r_u)
+{
+ /* close the policy handle */
+
+ if (!close_registry_key(p, &q_u->pol))
+ return WERR_BADFID;
+
+ return WERR_OK;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_open_hklm(pipes_struct *p, REG_Q_OPEN_HIVE *q_u, REG_R_OPEN_HIVE *r_u)
+{
+ REGISTRY_KEY *keyinfo;
+
+ return open_registry_key( p, &r_u->pol, &keyinfo, NULL, KEY_HKLM, q_u->access );
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_open_hkpd(pipes_struct *p, REG_Q_OPEN_HIVE *q_u, REG_R_OPEN_HIVE *r_u)
+{
+ REGISTRY_KEY *keyinfo;
+
+ return open_registry_key( p, &r_u->pol, &keyinfo, NULL, KEY_HKPD, q_u->access );
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_open_hkpt(pipes_struct *p, REG_Q_OPEN_HIVE *q_u, REG_R_OPEN_HIVE *r_u)
+{
+ REGISTRY_KEY *keyinfo;
+
+ return open_registry_key( p, &r_u->pol, &keyinfo, NULL, KEY_HKPT, q_u->access );
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_open_hkcr(pipes_struct *p, REG_Q_OPEN_HIVE *q_u, REG_R_OPEN_HIVE *r_u)
+{
+ REGISTRY_KEY *keyinfo;
+
+ return open_registry_key( p, &r_u->pol, &keyinfo, NULL, KEY_HKCR, q_u->access );
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_open_hku(pipes_struct *p, REG_Q_OPEN_HIVE *q_u, REG_R_OPEN_HIVE *r_u)
+{
+ REGISTRY_KEY *keyinfo;
+
+ return open_registry_key( p, &r_u->pol, &keyinfo, NULL, KEY_HKU, q_u->access );
+}
+
+/*******************************************************************
+ reg_reply_open_entry
+ ********************************************************************/
+
+WERROR _reg_open_entry(pipes_struct *p, REG_Q_OPEN_ENTRY *q_u, REG_R_OPEN_ENTRY *r_u)
+{
+ fstring name;
+ REGISTRY_KEY *parent = find_regkey_index_by_hnd(p, &q_u->pol);
+ REGISTRY_KEY *newkey = NULL;
+ uint32 check_rights;
+
+ if ( !parent )
+ return WERR_BADFID;
+
+ rpcstr_pull( name, q_u->name.string->buffer, sizeof(name), q_u->name.string->uni_str_len*2, 0 );
+
+ /* check granted access first; what is the correct mask here? */
+
+ check_rights = ( SEC_RIGHTS_ENUM_SUBKEYS|
+ SEC_RIGHTS_CREATE_SUBKEY|
+ SEC_RIGHTS_QUERY_VALUE|
+ SEC_RIGHTS_SET_VALUE);
+
+ if ( !(parent->access_granted & check_rights) ) {
+ DEBUG(8,("Rights check failed, parent had %04x, check_rights %04x\n",parent->access_granted, check_rights));
+ return WERR_ACCESS_DENIED;
+ }
+
+ /*
+ * very crazy, but regedit.exe on Win2k will attempt to call
+ * REG_OPEN_ENTRY with a keyname of "". We should return a new
+ * (second) handle here on the key->name. regedt32.exe does
+ * not do this stupidity. --jerry
+ */
+
+ return open_registry_key( p, &r_u->handle, &newkey, parent, name, q_u->access );
+}
+
+/*******************************************************************
+ reg_reply_info
+ ********************************************************************/
+
+WERROR _reg_query_value(pipes_struct *p, REG_Q_QUERY_VALUE *q_u, REG_R_QUERY_VALUE *r_u)
+{
+ WERROR status = WERR_BADFILE;
+ fstring name;
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
+ REGISTRY_VALUE *val = NULL;
+ REGVAL_CTR *regvals;
+ int i;
+
+ if ( !regkey )
+ return WERR_BADFID;
+
+ DEBUG(7,("_reg_info: policy key name = [%s]\n", regkey->name));
+ DEBUG(7,("_reg_info: policy key type = [%08x]\n", regkey->type));
+
+ rpcstr_pull(name, q_u->name.string->buffer, sizeof(name), q_u->name.string->uni_str_len*2, 0);
+
+ DEBUG(5,("_reg_info: looking up value: [%s]\n", name));
+
+ if ( !(regvals = TALLOC_ZERO_P( p->mem_ctx, REGVAL_CTR )) )
+ return WERR_NOMEM;
+
+ /* Handle QueryValue calls on HKEY_PERFORMANCE_DATA */
+ if(regkey->type == REG_KEY_HKPD)
+ {
+ if(strequal(name, "Global"))
+ {
+ uint32 outbuf_len;
+ prs_struct prs_hkpd;
+ prs_init(&prs_hkpd, q_u->bufsize, p->mem_ctx, MARSHALL);
+ status = reg_perfcount_get_hkpd(&prs_hkpd, q_u->bufsize, &outbuf_len, NULL);
+ regval_ctr_addvalue(regvals, "HKPD", REG_BINARY,
+ prs_hkpd.data_p, outbuf_len);
+ val = dup_registry_value(regval_ctr_specific_value(regvals, 0));
+ prs_mem_free(&prs_hkpd);
+ }
+ else if(strequal(name, "Counter 009"))
+ {
+ uint32 base_index;
+ uint32 buffer_size;
+ char *buffer;
+
+ buffer = NULL;
+ base_index = reg_perfcount_get_base_index();
+ buffer_size = reg_perfcount_get_counter_names(base_index, &buffer);
+ regval_ctr_addvalue(regvals, "Counter 009",
+ REG_MULTI_SZ, buffer, buffer_size);
+
+ val = dup_registry_value(regval_ctr_specific_value(regvals, 0));
+
+ if(buffer_size > 0)
+ {
+ SAFE_FREE(buffer);
+ status = WERR_OK;
+ }
+ }
+ else if(strequal(name, "Explain 009"))
+ {
+ uint32 base_index;
+ uint32 buffer_size;
+ char *buffer;
+
+ buffer = NULL;
+ base_index = reg_perfcount_get_base_index();
+ buffer_size = reg_perfcount_get_counter_help(base_index, &buffer);
+ regval_ctr_addvalue(regvals, "Explain 009",
+ REG_MULTI_SZ, buffer, buffer_size);
+
+ val = dup_registry_value(regval_ctr_specific_value(regvals, 0));
+
+ if(buffer_size > 0)
+ {
+ SAFE_FREE(buffer);
+ status = WERR_OK;
+ }
+ }
+ else if(isdigit(name[0]))
+ {
+ /* we probably have a request for a specific object here */
+ uint32 outbuf_len;
+ prs_struct prs_hkpd;
+ prs_init(&prs_hkpd, q_u->bufsize, p->mem_ctx, MARSHALL);
+ status = reg_perfcount_get_hkpd(&prs_hkpd, q_u->bufsize, &outbuf_len, name);
+ regval_ctr_addvalue(regvals, "HKPD", REG_BINARY,
+ prs_hkpd.data_p, outbuf_len);
+
+ val = dup_registry_value(regval_ctr_specific_value(regvals, 0));
+ prs_mem_free(&prs_hkpd);
+ }
+ else
+ {
+ DEBUG(3,("Unsupported key name [%s] for HKPD.\n", name));
+ return WERR_BADFILE;
+ }
+ }
+ /* HKPT calls can be handled out of reg_dynamic.c with the hkpt_params handler */
+ else
+ {
+ for ( i=0; fetch_reg_values_specific(regkey, &val, i); i++ )
+ {
+ DEBUG(10,("_reg_info: Testing value [%s]\n", val->valuename));
+ if ( strequal( val->valuename, name ) ) {
+ DEBUG(10,("_reg_info: Found match for value [%s]\n", name));
+ status = WERR_OK;
+ break;
+ }
+
+ free_registry_value( val );
+ }
+ }
+
+ init_reg_r_query_value(q_u->ptr_buf, r_u, val, status);
+
+ TALLOC_FREE( regvals );
+ free_registry_value( val );
+
+ return status;
+}
+
+/*****************************************************************************
+ Implementation of REG_QUERY_KEY
+ ****************************************************************************/
+
+WERROR _reg_query_key(pipes_struct *p, REG_Q_QUERY_KEY *q_u, REG_R_QUERY_KEY *r_u)
+{
+ WERROR status = WERR_OK;
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
+
+ if ( !regkey )
+ return WERR_BADFID;
+
+ if ( !get_subkey_information( regkey, &r_u->num_subkeys, &r_u->max_subkeylen ) ) {
+ DEBUG(0,("_reg_query_key: get_subkey_information() failed!\n"));
+ return WERR_ACCESS_DENIED;
+ }
+
+ if ( !get_value_information( regkey, &r_u->num_values, &r_u->max_valnamelen, &r_u->max_valbufsize ) ) {
+ DEBUG(0,("_reg_query_key: get_value_information() failed!\n"));
+ return WERR_ACCESS_DENIED;
+ }
+
+
+ r_u->sec_desc = 0x00000078; /* size for key's sec_desc */
+
+ /* Win9x set this to 0x0 since it does not keep timestamps.
+ Doing the same here for simplicity --jerry */
+
+ ZERO_STRUCT(r_u->mod_time);
+
+ return status;
+}
+
+
+/*****************************************************************************
+ Implementation of REG_GETVERSION
+ ****************************************************************************/
+
+WERROR _reg_getversion(pipes_struct *p, REG_Q_GETVERSION *q_u, REG_R_GETVERSION *r_u)
+{
+ WERROR status = WERR_OK;
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
+
+ if ( !regkey )
+ return WERR_BADFID;
+
+ r_u->win_version = 0x00000005; /* Windows 2000 registry API version */
+
+ return status;
+}
+
+
+/*****************************************************************************
+ Implementation of REG_ENUM_KEY
+ ****************************************************************************/
+
+WERROR _reg_enum_key(pipes_struct *p, REG_Q_ENUM_KEY *q_u, REG_R_ENUM_KEY *r_u)
+{
+ WERROR status = WERR_OK;
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
+ char *subkey = NULL;
+
+
+ if ( !regkey )
+ return WERR_BADFID;
+
+ DEBUG(8,("_reg_enum_key: enumerating key [%s]\n", regkey->name));
+
+ if ( !fetch_reg_keys_specific( regkey, &subkey, q_u->key_index ) )
+ {
+ status = WERR_NO_MORE_ITEMS;
+ goto done;
+ }
+
+ DEBUG(10,("_reg_enum_key: retrieved subkey named [%s]\n", subkey));
+
+ /* subkey has the string name now */
+
+ init_reg_r_enum_key( r_u, subkey );
+
+done:
+ SAFE_FREE( subkey );
+ return status;
+}
+
+/*****************************************************************************
+ Implementation of REG_ENUM_VALUE
+ ****************************************************************************/
+
+WERROR _reg_enum_value(pipes_struct *p, REG_Q_ENUM_VALUE *q_u, REG_R_ENUM_VALUE *r_u)
+{
+ WERROR status = WERR_OK;
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
+ REGISTRY_VALUE *val;
+
+
+ if ( !regkey )
+ return WERR_BADFID;
+
+ DEBUG(8,("_reg_enum_value: enumerating values for key [%s]\n", regkey->name));
+
+ if ( !fetch_reg_values_specific( regkey, &val, q_u->val_index ) ) {
+ status = WERR_NO_MORE_ITEMS;
+ goto done;
+ }
+
+#if 0 /* JERRY TEST CODE */
+ if ( val->type == REG_MULTI_SZ ) {
+ char **str;
+ int num_strings = regval_convert_multi_sz( (uint16*)regval_data_p(val), regval_size(val), &str );
+ uint16 *buffer;
+ size_t buf_size;
+
+
+ if ( num_strings )
+ buf_size = regval_build_multi_sz( str, &buffer );
+
+ TALLOC_FREE( str );
+ TALLOC_FREE( buffer );
+ }
+#endif
+
+ DEBUG(10,("_reg_enum_value: retrieved value named [%s]\n", val->valuename));
+
+ /* subkey has the string name now */
+
+ init_reg_r_enum_val( r_u, val );
+
+done:
+ free_registry_value( val );
+
+ return status;
+}
+
+
+/*******************************************************************
+ reg_shutdwon
+ ********************************************************************/
+
+WERROR _reg_shutdown(pipes_struct *p, REG_Q_SHUTDOWN *q_u, REG_R_SHUTDOWN *r_u)
+{
+ REG_Q_SHUTDOWN_EX q_u_ex;
+ REG_R_SHUTDOWN_EX r_u_ex;
+
+ /* copy fields (including stealing memory) */
+
+ q_u_ex.server = q_u->server;
+ q_u_ex.message = q_u->message;
+ q_u_ex.timeout = q_u->timeout;
+ q_u_ex.force = q_u->force;
+ q_u_ex.reboot = q_u->reboot;
+ q_u_ex.reason = 0x0; /* don't care for now */
+
+ /* thunk down to _reg_shutdown_ex() (just returns a status) */
+
+ return _reg_shutdown_ex( p, &q_u_ex, &r_u_ex );
+}
+
+/*******************************************************************
+ reg_shutdown_ex
+ ********************************************************************/
+
+#define SHUTDOWN_R_STRING "-r"
+#define SHUTDOWN_F_STRING "-f"
+
+
+WERROR _reg_shutdown_ex(pipes_struct *p, REG_Q_SHUTDOWN_EX *q_u, REG_R_SHUTDOWN_EX *r_u)
+{
+ pstring shutdown_script;
+ pstring message;
+ pstring chkmsg;
+ fstring timeout;
+ fstring reason;
+ fstring r;
+ fstring f;
+ int ret;
+ BOOL can_shutdown;
+
+
+ pstrcpy(shutdown_script, lp_shutdown_script());
+
+ if ( !*shutdown_script )
+ return WERR_ACCESS_DENIED;
+
+ /* pull the message string and perform necessary sanity checks on it */
+
+ pstrcpy( message, "" );
+ if ( q_u->message ) {
+ UNISTR2 *msg_string = q_u->message->string;
+
+ rpcstr_pull( message, msg_string->buffer, sizeof(message), msg_string->uni_str_len*2, 0 );
+ }
+ alpha_strcpy (chkmsg, message, NULL, sizeof(message));
+
+ fstr_sprintf(timeout, "%d", q_u->timeout);
+ fstr_sprintf(r, (q_u->reboot) ? SHUTDOWN_R_STRING : "");
+ fstr_sprintf(f, (q_u->force) ? SHUTDOWN_F_STRING : "");
+ fstr_sprintf( reason, "%d", q_u->reason );
+
+ all_string_sub( shutdown_script, "%z", chkmsg, sizeof(shutdown_script) );
+ all_string_sub( shutdown_script, "%t", timeout, sizeof(shutdown_script) );
+ all_string_sub( shutdown_script, "%r", r, sizeof(shutdown_script) );
+ all_string_sub( shutdown_script, "%f", f, sizeof(shutdown_script) );
+ all_string_sub( shutdown_script, "%x", reason, sizeof(shutdown_script) );
+
+ can_shutdown = user_has_privileges( p->pipe_user.nt_user_token, &se_remote_shutdown );
+
+ /* IF someone has privs, run the shutdown script as root. OTHERWISE run it as not root
+ Take the error return from the script and provide it as the Windows return code. */
+
+ /********** BEGIN SeRemoteShutdownPrivilege BLOCK **********/
+
+ if ( can_shutdown )
+ become_root();
+
+ ret = smbrun( shutdown_script, NULL );
+
+ if ( can_shutdown )
+ unbecome_root();
+
+ /********** END SeRemoteShutdownPrivilege BLOCK **********/
+
+ DEBUG(3,("_reg_shutdown_ex: Running the command `%s' gave %d\n",
+ shutdown_script, ret));
+
+
+ return (ret == 0) ? WERR_OK : WERR_ACCESS_DENIED;
+}
+
+
+
+
+/*******************************************************************
+ reg_abort_shutdwon
+ ********************************************************************/
+
+WERROR _reg_abort_shutdown(pipes_struct *p, REG_Q_ABORT_SHUTDOWN *q_u, REG_R_ABORT_SHUTDOWN *r_u)
+{
+ pstring abort_shutdown_script;
+ int ret;
+ BOOL can_shutdown;
+
+ pstrcpy(abort_shutdown_script, lp_abort_shutdown_script());
+
+ if ( !*abort_shutdown_script )
+ return WERR_ACCESS_DENIED;
+
+ can_shutdown = user_has_privileges( p->pipe_user.nt_user_token, &se_remote_shutdown );
+
+ /********** BEGIN SeRemoteShutdownPrivilege BLOCK **********/
+
+ if ( can_shutdown )
+ become_root();
+
+ ret = smbrun( abort_shutdown_script, NULL );
+
+ if ( can_shutdown )
+ unbecome_root();
+
+ /********** END SeRemoteShutdownPrivilege BLOCK **********/
+
+ DEBUG(3,("_reg_abort_shutdown: Running the command `%s' gave %d\n",
+ abort_shutdown_script, ret));
+
+
+ return (ret == 0) ? WERR_OK : WERR_ACCESS_DENIED;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+static int validate_reg_filename( pstring fname )
+{
+ char *p;
+ int num_services = lp_numservices();
+ int snum;
+ pstring share_path;
+ pstring unix_fname;
+
+ /* convert to a unix path, stripping the C:\ along the way */
+
+ if ( !(p = valid_share_pathname( fname ) ))
+ return -1;
+
+ /* has to exist within a valid file share */
+
+ for ( snum=0; snum<num_services; snum++ ) {
+
+ if ( !lp_snum_ok(snum) || lp_print_ok(snum) )
+ continue;
+
+ pstrcpy( share_path, lp_pathname(snum) );
+
+ /* make sure we have a path (e.g. [homes] ) */
+
+ if ( strlen( share_path ) == 0 )
+ continue;
+
+ if ( strncmp( share_path, p, strlen( share_path )) == 0 )
+ break;
+ }
+
+ /* p and fname are overlapping memory so copy out and back in again */
+
+ pstrcpy( unix_fname, p );
+ pstrcpy( fname, unix_fname );
+
+ return (snum < num_services) ? snum : -1;
+}
+
+/*******************************************************************
+ Note: topkeypat is the *full* path that this *key will be
+ loaded into (including the name of the key)
+ ********************************************************************/
+
+static WERROR reg_load_tree( REGF_FILE *regfile, const char *topkeypath,
+ REGF_NK_REC *key )
+{
+ REGF_NK_REC *subkey;
+ REGISTRY_KEY registry_key;
+ REGVAL_CTR *values;
+ REGSUBKEY_CTR *subkeys;
+ int i;
+ pstring path;
+ WERROR result = WERR_OK;
+
+ /* initialize the REGISTRY_KEY structure */
+
+ if ( !(registry_key.hook = reghook_cache_find(topkeypath)) ) {
+ DEBUG(0,("reg_load_tree: Failed to assigned a REGISTRY_HOOK to [%s]\n",
+ topkeypath ));
+ return WERR_BADFILE;
+ }
+ pstrcpy( registry_key.name, topkeypath );
+
+ /* now start parsing the values and subkeys */
+
+ if ( !(subkeys = TALLOC_ZERO_P( regfile->mem_ctx, REGSUBKEY_CTR )) )
+ return WERR_NOMEM;
+
+ if ( !(values = TALLOC_ZERO_P( subkeys, REGVAL_CTR )) )
+ return WERR_NOMEM;
+
+ /* copy values into the REGVAL_CTR */
+
+ for ( i=0; i<key->num_values; i++ ) {
+ regval_ctr_addvalue( values, key->values[i].valuename, key->values[i].type,
+ (char*)key->values[i].data, (key->values[i].data_size & ~VK_DATA_IN_OFFSET) );
+ }
+
+ /* copy subkeys into the REGSUBKEY_CTR */
+
+ key->subkey_index = 0;
+ while ( (subkey = regfio_fetch_subkey( regfile, key )) ) {
+ regsubkey_ctr_addkey( subkeys, subkey->keyname );
+ }
+
+ /* write this key and values out */
+
+ if ( !store_reg_values( &registry_key, values )
+ || !store_reg_keys( &registry_key, subkeys ) )
+ {
+ DEBUG(0,("reg_load_tree: Failed to load %s!\n", topkeypath));
+ result = WERR_REG_IO_FAILURE;
+ }
+
+ TALLOC_FREE( subkeys );
+
+ if ( !W_ERROR_IS_OK(result) )
+ return result;
+
+ /* now continue to load each subkey registry tree */
+
+ key->subkey_index = 0;
+ while ( (subkey = regfio_fetch_subkey( regfile, key )) ) {
+ pstr_sprintf( path, "%s%s%s", topkeypath, "\\", subkey->keyname );
+ result = reg_load_tree( regfile, path, subkey );
+ if ( !W_ERROR_IS_OK(result) )
+ break;
+ }
+
+ return result;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+static WERROR restore_registry_key ( REGISTRY_KEY *krecord, const char *fname )
+{
+ REGF_FILE *regfile;
+ REGF_NK_REC *rootkey;
+ WERROR result;
+
+ /* open the registry file....fail if the file already exists */
+
+ if ( !(regfile = regfio_open( fname, (O_RDONLY), 0 )) ) {
+ DEBUG(0,("backup_registry_key: failed to open \"%s\" (%s)\n",
+ fname, strerror(errno) ));
+ return ( ntstatus_to_werror(map_nt_error_from_unix( errno )) );
+ }
+
+ /* get the rootkey from the regf file and then load the tree
+ via recursive calls */
+
+ if ( !(rootkey = regfio_rootkey( regfile )) ) {
+ regfio_close( regfile );
+ return WERR_REG_FILE_INVALID;
+ }
+
+ result = reg_load_tree( regfile, krecord->name, rootkey );
+
+ /* cleanup */
+
+ regfio_close( regfile );
+
+ return result;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_restore_key(pipes_struct *p, REG_Q_RESTORE_KEY *q_u, REG_R_RESTORE_KEY *r_u)
+{
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
+ pstring filename;
+ int snum;
+
+ if ( !regkey )
+ return WERR_BADFID;
+
+ rpcstr_pull(filename, q_u->filename.string->buffer, sizeof(filename), q_u->filename.string->uni_str_len*2, STR_TERMINATE);
+
+ DEBUG(8,("_reg_restore_key: verifying restore of key [%s] from \"%s\"\n", regkey->name, filename));
+
+ if ( (snum = validate_reg_filename( filename )) == -1 )
+ return WERR_OBJECT_PATH_INVALID;
+
+ /* user must posses SeRestorePrivilege for this this proceed */
+
+ if ( !user_has_privileges( p->pipe_user.nt_user_token, &se_restore ) )
+ return WERR_ACCESS_DENIED;
+
+ DEBUG(2,("_reg_restore_key: Restoring [%s] from %s in share %s\n", regkey->name, filename, lp_servicename(snum) ));
+
+ return restore_registry_key( regkey, filename );
+}
+
+/********************************************************************
+********************************************************************/
+
+static WERROR reg_write_tree( REGF_FILE *regfile, const char *keypath,
+ REGF_NK_REC *parent, SEC_DESC *sec_desc )
+{
+ REGF_NK_REC *key;
+ REGVAL_CTR *values;
+ REGSUBKEY_CTR *subkeys;
+ int i, num_subkeys;
+ pstring key_tmp;
+ char *keyname, *parentpath;
+ pstring subkeypath;
+ char *subkeyname;
+ REGISTRY_KEY registry_key;
+ WERROR result = WERR_OK;
+
+ if ( !regfile )
+ return WERR_GENERAL_FAILURE;
+
+ if ( !keypath )
+ return WERR_OBJECT_PATH_INVALID;
+
+ /* split up the registry key path */
+
+ pstrcpy( key_tmp, keypath );
+ if ( !reg_split_key( key_tmp, &parentpath, &keyname ) )
+ return WERR_OBJECT_PATH_INVALID;
+
+ if ( !keyname )
+ keyname = parentpath;
+
+ /* we need a REGISTRY_KEY object here to enumerate subkeys and values */
+
+ ZERO_STRUCT( registry_key );
+ pstrcpy( registry_key.name, keypath );
+ if ( !(registry_key.hook = reghook_cache_find( registry_key.name )) )
+ return WERR_BADFILE;
+
+
+ /* lookup the values and subkeys */
+
+ if ( !(subkeys = TALLOC_ZERO_P( regfile->mem_ctx, REGSUBKEY_CTR )) )
+ return WERR_NOMEM;
+
+ if ( !(values = TALLOC_ZERO_P( subkeys, REGVAL_CTR )) )
+ return WERR_NOMEM;
+
+ fetch_reg_keys( &registry_key, subkeys );
+ fetch_reg_values( &registry_key, values );
+
+ /* write out this key */
+
+ if ( !(key = regfio_write_key( regfile, keyname, values, subkeys, sec_desc, parent )) ) {
+ result = WERR_CAN_NOT_COMPLETE;
+ goto done;
+ }
+
+ /* write each one of the subkeys out */
+
+ num_subkeys = regsubkey_ctr_numkeys( subkeys );
+ for ( i=0; i<num_subkeys; i++ ) {
+ subkeyname = regsubkey_ctr_specific_key( subkeys, i );
+ pstr_sprintf( subkeypath, "%s\\%s", keypath, subkeyname );
+ result = reg_write_tree( regfile, subkeypath, key, sec_desc );
+ if ( !W_ERROR_IS_OK(result) )
+ goto done;
+ }
+
+ DEBUG(6,("reg_write_tree: wrote key [%s]\n", keypath ));
+
+done:
+ TALLOC_FREE( subkeys );
+
+ return result;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+static WERROR make_default_reg_sd( TALLOC_CTX *ctx, SEC_DESC **psd )
+{
+ DOM_SID adm_sid, owner_sid;
+ SEC_ACE ace[2]; /* at most 2 entries */
+ SEC_ACCESS mask;
+ SEC_ACL *psa = NULL;
+ size_t sd_size;
+
+ /* set the owner to BUILTIN\Administrator */
+
+ sid_copy(&owner_sid, &global_sid_Builtin);
+ sid_append_rid(&owner_sid, DOMAIN_USER_RID_ADMIN );
+
+
+ /* basic access for Everyone */
+
+ init_sec_access(&mask, reg_generic_map.generic_execute | reg_generic_map.generic_read );
+ init_sec_ace(&ace[0], &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
+
+ /* add Full Access 'BUILTIN\Administrators' */
+
+ init_sec_access(&mask, reg_generic_map.generic_all);
+ sid_copy(&adm_sid, &global_sid_Builtin);
+ sid_append_rid(&adm_sid, BUILTIN_ALIAS_RID_ADMINS);
+ init_sec_ace(&ace[1], &adm_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
+
+ /* create the security descriptor */
+
+ if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 2, ace)) == NULL)
+ return WERR_NOMEM;
+
+ if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, &owner_sid, NULL, NULL, psa, &sd_size)) == NULL)
+ return WERR_NOMEM;
+
+ return WERR_OK;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+static WERROR backup_registry_key ( REGISTRY_KEY *krecord, const char *fname )
+{
+ REGF_FILE *regfile;
+ WERROR result;
+ SEC_DESC *sd = NULL;
+
+ /* open the registry file....fail if the file already exists */
+
+ if ( !(regfile = regfio_open( fname, (O_RDWR|O_CREAT|O_EXCL), (S_IREAD|S_IWRITE) )) ) {
+ DEBUG(0,("backup_registry_key: failed to open \"%s\" (%s)\n",
+ fname, strerror(errno) ));
+ return ( ntstatus_to_werror(map_nt_error_from_unix( errno )) );
+ }
+
+ if ( !W_ERROR_IS_OK(result = make_default_reg_sd( regfile->mem_ctx, &sd )) ) {
+ regfio_close( regfile );
+ return result;
+ }
+
+ /* write the registry tree to the file */
+
+ result = reg_write_tree( regfile, krecord->name, NULL, sd );
+
+ /* cleanup */
+
+ regfio_close( regfile );
+
+ return result;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_save_key(pipes_struct *p, REG_Q_SAVE_KEY *q_u, REG_R_SAVE_KEY *r_u)
+{
+ REGISTRY_KEY *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
+ pstring filename;
+ int snum;
+
+ if ( !regkey )
+ return WERR_BADFID;
+
+ rpcstr_pull(filename, q_u->filename.string->buffer, sizeof(filename), q_u->filename.string->uni_str_len*2, STR_TERMINATE);
+
+ DEBUG(8,("_reg_save_key: verifying backup of key [%s] to \"%s\"\n", regkey->name, filename));
+
+ if ( (snum = validate_reg_filename( filename )) == -1 )
+ return WERR_OBJECT_PATH_INVALID;
+
+ DEBUG(2,("_reg_save_key: Saving [%s] to %s in share %s\n", regkey->name, filename, lp_servicename(snum) ));
+
+ return backup_registry_key( regkey, filename );
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_create_key_ex(pipes_struct *p, REG_Q_CREATE_KEY_EX *q_u, REG_R_CREATE_KEY_EX *r_u)
+{
+ REGISTRY_KEY *parent = find_regkey_index_by_hnd(p, &q_u->handle);
+ REGISTRY_KEY *newparentinfo, *keyinfo;
+ POLICY_HND newparent_handle;
+ REGSUBKEY_CTR *subkeys;
+ BOOL write_result;
+ pstring name;
+ WERROR result;
+
+ if ( !parent )
+ return WERR_BADFID;
+
+ rpcstr_pull( name, q_u->name.string->buffer, sizeof(name), q_u->name.string->uni_str_len*2, 0 );
+
+ /* ok. Here's what we do. */
+
+ if ( strrchr( name, '\\' ) ) {
+ pstring newkeyname;
+ char *ptr;
+
+ /* (1) check for enumerate rights on the parent handle. CLients can try
+ create things like 'SOFTWARE\Samba' on the HKLM handle.
+ (2) open the path to the child parent key if necessary */
+
+ if ( !(parent->access_granted & SEC_RIGHTS_ENUM_SUBKEYS) )
+ return WERR_ACCESS_DENIED;
+
+ pstrcpy( newkeyname, name );
+ ptr = strrchr( newkeyname, '\\' );
+ *ptr = '\0';
+
+ result = open_registry_key( p, &newparent_handle, &newparentinfo,
+ parent, newkeyname, (REG_KEY_READ|REG_KEY_WRITE) );
+
+ if ( !W_ERROR_IS_OK(result) )
+ return result;
+
+ /* copy the new key name (just the lower most keyname) */
+
+ pstrcpy( name, ptr+1 );
+ }
+ else {
+ /* use the existing open key information */
+ newparentinfo = parent;
+ memcpy( &newparent_handle, &q_u->handle, sizeof(POLICY_HND) );
+ }
+
+ /* (3) check for create subkey rights on the correct parent */
+
+ if ( !(newparentinfo->access_granted & SEC_RIGHTS_CREATE_SUBKEY) ) {
+ result = WERR_ACCESS_DENIED;
+ goto done;
+ }
+
+ if ( !(subkeys = TALLOC_ZERO_P( p->mem_ctx, REGSUBKEY_CTR )) ) {
+ result = WERR_NOMEM;
+ goto done;
+ }
+
+ /* (4) lookup the current keys and add the new one */
+
+ fetch_reg_keys( newparentinfo, subkeys );
+ regsubkey_ctr_addkey( subkeys, name );
+
+ /* now write to the registry backend */
+
+ write_result = store_reg_keys( newparentinfo, subkeys );
+
+ TALLOC_FREE( subkeys );
+
+ if ( !write_result )
+ return WERR_REG_IO_FAILURE;
+
+ /* (5) open the new key and return the handle. Note that it is probably
+ not correct to grant full access on this open handle. */
+
+ result = open_registry_key( p, &r_u->handle, &keyinfo, newparentinfo, name, REG_KEY_READ );
+ keyinfo->access_granted = REG_KEY_ALL;
+
+done:
+ /* close any intermediate key handles */
+
+ if ( newparentinfo != parent )
+ close_registry_key( p, &newparent_handle );
+
+ return result;
+}
+
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_set_value(pipes_struct *p, REG_Q_SET_VALUE *q_u, REG_R_SET_VALUE *r_u)
+{
+ REGISTRY_KEY *key = find_regkey_index_by_hnd(p, &q_u->handle);
+ REGVAL_CTR *values;
+ BOOL write_result;
+ fstring valuename;
+
+ if ( !key )
+ return WERR_BADFID;
+
+ /* access checks first */
+
+ if ( !(key->access_granted & SEC_RIGHTS_SET_VALUE) )
+ return WERR_ACCESS_DENIED;
+
+ rpcstr_pull( valuename, q_u->name.string->buffer, sizeof(valuename), q_u->name.string->uni_str_len*2, 0 );
+
+ /* verify the name */
+
+ if ( !*valuename )
+ return WERR_INVALID_PARAM;
+
+ DEBUG(8,("_reg_set_value: Setting value for [%s:%s]\n", key->name, valuename));
+
+ if ( !(values = TALLOC_ZERO_P( p->mem_ctx, REGVAL_CTR )) )
+ return WERR_NOMEM;
+
+ /* lookup the current values and add the new one */
+
+ fetch_reg_values( key, values );
+
+ regval_ctr_addvalue( values, valuename, q_u->type, (char*)q_u->value.buffer, q_u->value.buf_len );
+
+ /* now write to the registry backend */
+
+ write_result = store_reg_values( key, values );
+
+ TALLOC_FREE( values );
+
+ if ( !write_result )
+ return WERR_REG_IO_FAILURE;
+
+ return WERR_OK;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_delete_key(pipes_struct *p, REG_Q_DELETE_KEY *q_u, REG_R_DELETE_KEY *r_u)
+{
+ REGISTRY_KEY *parent = find_regkey_index_by_hnd(p, &q_u->handle);
+ REGISTRY_KEY *newparentinfo = NULL;
+ POLICY_HND newparent_handle;
+ REGSUBKEY_CTR *subkeys;
+ BOOL write_result;
+ pstring name;
+ WERROR result;
+
+ if ( !parent )
+ return WERR_BADFID;
+
+ /* MSDN says parent the handle must have been opened with DELETE access */
+
+ /* (1) check for delete rights on the parent */
+
+ if ( !(parent->access_granted & STD_RIGHT_DELETE_ACCESS) ) {
+ result = WERR_ACCESS_DENIED;
+ goto done;
+ }
+
+ rpcstr_pull( name, q_u->name.string->buffer, sizeof(name), q_u->name.string->uni_str_len*2, 0 );
+
+ /* ok. Here's what we do. */
+
+ if ( strrchr( name, '\\' ) ) {
+ pstring newkeyname;
+ char *ptr;
+
+ /* (2) open the path to the child parent key if necessary */
+ /* split the registry path and save the subkeyname */
+
+ pstrcpy( newkeyname, name );
+ ptr = strrchr( newkeyname, '\\' );
+ *ptr = '\0';
+ pstrcpy( name, ptr+1 );
+
+ result = open_registry_key( p, &newparent_handle, &newparentinfo, parent, newkeyname, (REG_KEY_READ|REG_KEY_WRITE) );
+ if ( !W_ERROR_IS_OK(result) )
+ return result;
+ }
+ else {
+ /* use the existing open key information */
+ newparentinfo = parent;
+ }
+
+ if ( !(subkeys = TALLOC_ZERO_P( p->mem_ctx, REGSUBKEY_CTR )) ) {
+ result = WERR_NOMEM;
+ goto done;
+ }
+
+ /* lookup the current keys and delete the new one */
+
+ fetch_reg_keys( newparentinfo, subkeys );
+
+ regsubkey_ctr_delkey( subkeys, name );
+
+ /* now write to the registry backend */
+
+ write_result = store_reg_keys( newparentinfo, subkeys );
+
+ TALLOC_FREE( subkeys );
+
+ result = write_result ? WERR_OK : WERR_REG_IO_FAILURE;
+
+done:
+ /* close any intermediate key handles */
+
+ if ( newparentinfo != parent )
+ close_registry_key( p, &newparent_handle );
+
+ return result;
+}
+
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_delete_value(pipes_struct *p, REG_Q_DELETE_VALUE *q_u, REG_R_DELETE_VALUE *r_u)
+{
+ REGISTRY_KEY *key = find_regkey_index_by_hnd(p, &q_u->handle);
+ REGVAL_CTR *values;
+ BOOL write_result;
+ fstring valuename;
+
+ if ( !key )
+ return WERR_BADFID;
+
+ /* access checks first */
+
+ if ( !(key->access_granted & SEC_RIGHTS_SET_VALUE) )
+ return WERR_ACCESS_DENIED;
+
+ rpcstr_pull( valuename, q_u->name.string->buffer, sizeof(valuename), q_u->name.string->uni_str_len*2, 0 );
+
+ if ( !*valuename )
+ return WERR_INVALID_PARAM;
+
+ DEBUG(8,("_reg_delete_value: Setting value for [%s:%s]\n", key->name, valuename));
+
+ if ( !(values = TALLOC_ZERO_P( p->mem_ctx, REGVAL_CTR )) )
+ return WERR_NOMEM;
+
+ /* lookup the current values and add the new one */
+
+ fetch_reg_values( key, values );
+
+ regval_ctr_delvalue( values, valuename );
+
+ /* now write to the registry backend */
+
+ write_result = store_reg_values( key, values );
+
+ TALLOC_FREE( values );
+
+ if ( !write_result )
+ return WERR_REG_IO_FAILURE;
+
+ return WERR_OK;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_get_key_sec(pipes_struct *p, REG_Q_GET_KEY_SEC *q_u, REG_R_GET_KEY_SEC *r_u)
+{
+ REGISTRY_KEY *key = find_regkey_index_by_hnd(p, &q_u->handle);
+
+ if ( !key )
+ return WERR_BADFID;
+
+ /* access checks first */
+
+ if ( !(key->access_granted & STD_RIGHT_READ_CONTROL_ACCESS) )
+ return WERR_ACCESS_DENIED;
+
+ return WERR_ACCESS_DENIED;
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+WERROR _reg_set_key_sec(pipes_struct *p, REG_Q_SET_KEY_SEC *q_u, REG_R_SET_KEY_SEC *r_u)
+{
+ REGISTRY_KEY *key = find_regkey_index_by_hnd(p, &q_u->handle);
+
+ if ( !key )
+ return WERR_BADFID;
+
+ /* access checks first */
+
+ if ( !(key->access_granted & STD_RIGHT_WRITE_DAC_ACCESS) )
+ return WERR_ACCESS_DENIED;
+
+ return WERR_ACCESS_DENIED;
+}
diff --git a/source/rpc_server/srv_samr.c b/source/rpc_server/srv_samr.c
index ff6136a6438..6ce4f882619 100644
--- a/source/rpc_server/srv_samr.c
+++ b/source/rpc_server/srv_samr.c
@@ -1531,8 +1531,8 @@ static struct api_struct api_samr_cmds [] =
{"SAMR_QUERY_DOMAIN_INFO" , SAMR_QUERY_DOMAIN_INFO, api_samr_query_domain_info},
{"SAMR_QUERY_USERGROUPS" , SAMR_QUERY_USERGROUPS , api_samr_query_usergroups },
{"SAMR_QUERY_DISPINFO" , SAMR_QUERY_DISPINFO , api_samr_query_dispinfo },
- {"SAMR_QUERY_DISPINFO2" , SAMR_QUERY_DISPINFO2 , api_samr_query_dispinfo },
{"SAMR_QUERY_DISPINFO3" , SAMR_QUERY_DISPINFO3 , api_samr_query_dispinfo },
+ {"SAMR_QUERY_DISPINFO4" , SAMR_QUERY_DISPINFO4 , api_samr_query_dispinfo },
{"SAMR_QUERY_ALIASINFO" , SAMR_QUERY_ALIASINFO , api_samr_query_aliasinfo },
{"SAMR_QUERY_GROUPINFO" , SAMR_QUERY_GROUPINFO , api_samr_query_groupinfo },
diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index e28fc591369..3343f16f35d 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -56,8 +56,8 @@ typedef struct disp_info {
uint16 enum_acb_mask;
struct pdb_search *enum_users; /* enumusers with a mask */
- struct timed_event *cache_timeout_event; /* cache idle timeout
- * handler. */
+
+ smb_event_id_t di_cache_timeout_event; /* cache idle timeout handler. */
} DISP_INFO;
/* We keep a static list of these by SID as modern clients close down
@@ -345,10 +345,9 @@ static struct samr_info *get_samr_info_by_sid(DOM_SID *psid)
Function to free the per SID data.
********************************************************************/
-static void free_samr_cache(DISP_INFO *disp_info)
+static void free_samr_cache(DISP_INFO *disp_info, const char *sid_str)
{
- DEBUG(10, ("free_samr_cache: deleting cache for SID %s\n",
- sid_string_static(&disp_info->sid)));
+ DEBUG(10,("free_samr_cache: deleting cache for SID %s\n", sid_str));
/* We need to become root here because the paged search might have to
* tell the LDAP server we're not interested in the rest anymore. */
@@ -396,8 +395,10 @@ static void free_samr_info(void *ptr)
/* Only free the dispinfo cache if no one bothered to set up
a timeout. */
- if (info->disp_info && info->disp_info->cache_timeout_event == NULL) {
- free_samr_cache(info->disp_info);
+ if (info->disp_info && info->disp_info->di_cache_timeout_event == (smb_event_id_t)0) {
+ fstring sid_str;
+ sid_to_string(sid_str, &info->disp_info->sid);
+ free_samr_cache(info->disp_info, sid_str);
}
talloc_destroy(info->mem_ctx);
@@ -407,18 +408,23 @@ static void free_samr_info(void *ptr)
Idle event handler. Throw away the disp info cache.
********************************************************************/
-static void disp_info_cache_idle_timeout_handler(struct event_context *ev_ctx,
- struct timed_event *te,
- const struct timeval *now,
- void *private_data)
+static void disp_info_cache_idle_timeout_handler(void **private_data,
+ time_t *ev_interval,
+ time_t ev_now)
{
- DISP_INFO *disp_info = (DISP_INFO *)private_data;
+ fstring sid_str;
+ DISP_INFO *disp_info = (DISP_INFO *)(*private_data);
+
+ sid_to_string(sid_str, &disp_info->sid);
- TALLOC_FREE(disp_info->cache_timeout_event);
+ free_samr_cache(disp_info, sid_str);
- DEBUG(10, ("disp_info_cache_idle_timeout_handler: caching timed "
- "out\n"));
- free_samr_cache(disp_info);
+ /* Remove the event. */
+ smb_unregister_idle_event(disp_info->di_cache_timeout_event);
+ disp_info->di_cache_timeout_event = (smb_event_id_t)0;
+
+ DEBUG(10,("disp_info_cache_idle_timeout_handler: caching timed out for SID %s at %u\n",
+ sid_str, (unsigned int)ev_now));
}
/*******************************************************************
@@ -427,20 +433,24 @@ static void disp_info_cache_idle_timeout_handler(struct event_context *ev_ctx,
static void set_disp_info_cache_timeout(DISP_INFO *disp_info, time_t secs_fromnow)
{
+ fstring sid_str;
+
+ sid_to_string(sid_str, &disp_info->sid);
+
/* Remove any pending timeout and update. */
- TALLOC_FREE(disp_info->cache_timeout_event);
+ if (disp_info->di_cache_timeout_event) {
+ smb_unregister_idle_event(disp_info->di_cache_timeout_event);
+ disp_info->di_cache_timeout_event = (smb_event_id_t)0;
+ }
- DEBUG(10,("set_disp_info_cache_timeout: caching enumeration for "
- "SID %s for %u seconds\n",
- sid_string_static(&disp_info->sid),
- (unsigned int)secs_fromnow ));
+ DEBUG(10,("set_disp_info_cache_timeout: caching enumeration for SID %s for %u seconds\n",
+ sid_str, (unsigned int)secs_fromnow ));
- disp_info->cache_timeout_event = event_add_timed(
- smbd_event_context(), NULL,
- timeval_current_ofs(secs_fromnow, 0),
- "disp_info_cache_idle_timeout_handler",
- disp_info_cache_idle_timeout_handler, (void *)disp_info);
+ disp_info->di_cache_timeout_event =
+ smb_register_idle_event(disp_info_cache_idle_timeout_handler,
+ disp_info,
+ secs_fromnow);
}
/*******************************************************************
@@ -450,13 +460,18 @@ static void set_disp_info_cache_timeout(DISP_INFO *disp_info, time_t secs_fromno
static void force_flush_samr_cache(DISP_INFO *disp_info)
{
- if ((disp_info == NULL) || (disp_info->cache_timeout_event == NULL)) {
- return;
+ if (disp_info) {
+ fstring sid_str;
+
+ sid_to_string(sid_str, &disp_info->sid);
+ if (disp_info->di_cache_timeout_event) {
+ smb_unregister_idle_event(disp_info->di_cache_timeout_event);
+ disp_info->di_cache_timeout_event = (smb_event_id_t)0;
+ DEBUG(10,("force_flush_samr_cache: clearing idle event for SID %s\n",
+ sid_str));
+ }
+ free_samr_cache(disp_info, sid_str);
}
-
- DEBUG(10,("force_flush_samr_cache: clearing idle event\n"));
- TALLOC_FREE(disp_info->cache_timeout_event);
- free_samr_cache(disp_info);
}
/*******************************************************************
@@ -708,7 +723,7 @@ NTSTATUS _samr_set_sec_obj(pipes_struct *p, SAMR_Q_SET_SEC_OBJ *q_u, SAMR_R_SET_
return NT_STATUS_INVALID_HANDLE;
}
- dacl = q_u->buf->sd->dacl;
+ dacl = q_u->buf->sec->dacl;
for (i=0; i < dacl->num_aces; i++) {
if (sid_equal(&pol_sid, &dacl->aces[i].trustee)) {
ret = pdb_set_pass_can_change(sampass,
@@ -1354,7 +1369,7 @@ NTSTATUS _samr_query_aliasinfo(pipes_struct *p, SAMR_Q_QUERY_ALIASINFO *q_u, SAM
DOM_SID sid;
struct acct_info info;
uint32 acc_granted;
- NTSTATUS status;
+ BOOL ret;
r_u->status = NT_STATUS_OK;
@@ -1368,11 +1383,11 @@ NTSTATUS _samr_query_aliasinfo(pipes_struct *p, SAMR_Q_QUERY_ALIASINFO *q_u, SAM
}
become_root();
- status = pdb_get_aliasinfo(&sid, &info);
+ ret = pdb_get_aliasinfo(&sid, &info);
unbecome_root();
- if ( !NT_STATUS_IS_OK(status))
- return status;
+ if ( !ret )
+ return NT_STATUS_NO_SUCH_ALIAS;
if ( !(r_u->ctr = TALLOC_ZERO_P( p->mem_ctx, ALIAS_INFO_CTR )) )
return NT_STATUS_NO_MEMORY;
@@ -1712,7 +1727,7 @@ NTSTATUS _samr_lookup_rids(pipes_struct *p, SAMR_Q_LOOKUP_RIDS *q_u, SAMR_R_LOOK
int num_rids = (int)q_u->num_rids1;
uint32 acc_granted;
int i;
-
+
r_u->status = NT_STATUS_OK;
DEBUG(5,("_samr_lookup_rids: %d\n", __LINE__));
@@ -3409,7 +3424,7 @@ static BOOL set_user_info_pw(uint8 *pass, struct samu *pwd)
}
ZERO_STRUCT(plaintext_buf);
-
+
/* restore last set time as this is an admin change, not a user pw change */
pdb_set_pass_last_set_time (pwd, last_set_time, last_set_state);
@@ -3455,7 +3470,7 @@ static NTSTATUS set_user_info_25(TALLOC_CTX *mem_ctx, SAM_USER_INFO_25 *id25,
* the delete explicit / add explicit, which would then fail to find
* the previous primaryGroupSid value.
*/
-
+
if ( IS_SAM_CHANGED(pwd, PDB_GROUPSID) ) {
status = pdb_set_unix_primary_group(mem_ctx, pwd);
if ( !NT_STATUS_IS_OK(status) ) {
@@ -3574,7 +3589,7 @@ NTSTATUS _samr_set_userinfo(pipes_struct *p, SAMR_Q_SET_USERINFO *q_u, SAMR_R_SE
}
SamOEMhashBlob(ctr->info.id24->pass, 516, &p->session_key);
- dump_data(100, ctr->info.id24->pass, 516);
+ dump_data(100, (char *)ctr->info.id24->pass, 516);
if (!set_user_info_pw(ctr->info.id24->pass, pwd))
r_u->status = NT_STATUS_ACCESS_DENIED;
@@ -3586,7 +3601,7 @@ NTSTATUS _samr_set_userinfo(pipes_struct *p, SAMR_Q_SET_USERINFO *q_u, SAMR_R_SE
}
encode_or_decode_arc4_passwd_buffer(ctr->info.id25->pass, &p->session_key);
- dump_data(100, ctr->info.id25->pass, 532);
+ dump_data(100, (char *)ctr->info.id25->pass, 532);
r_u->status = set_user_info_25(p->mem_ctx,
ctr->info.id25, pwd);
@@ -3603,7 +3618,7 @@ NTSTATUS _samr_set_userinfo(pipes_struct *p, SAMR_Q_SET_USERINFO *q_u, SAMR_R_SE
}
encode_or_decode_arc4_passwd_buffer(ctr->info.id26->pass, &p->session_key);
- dump_data(100, ctr->info.id26->pass, 516);
+ dump_data(100, (char *)ctr->info.id26->pass, 516);
if (!set_user_info_pw(ctr->info.id26->pass, pwd))
r_u->status = NT_STATUS_ACCESS_DENIED;
@@ -3615,7 +3630,7 @@ NTSTATUS _samr_set_userinfo(pipes_struct *p, SAMR_Q_SET_USERINFO *q_u, SAMR_R_SE
}
SamOEMhashBlob(ctr->info.id23->pass, 516, &p->session_key);
- dump_data(100, ctr->info.id23->pass, 516);
+ dump_data(100, (char *)ctr->info.id23->pass, 516);
r_u->status = set_user_info_23(p->mem_ctx,
ctr->info.id23, pwd);
@@ -3749,7 +3764,7 @@ NTSTATUS _samr_set_userinfo2(pipes_struct *p, SAMR_Q_SET_USERINFO2 *q_u, SAMR_R_
}
SamOEMhashBlob(ctr->info.id23->pass, 516, &p->session_key);
- dump_data(100, ctr->info.id23->pass, 516);
+ dump_data(100, (char *)ctr->info.id23->pass, 516);
r_u->status = set_user_info_23(p->mem_ctx,
ctr->info.id23, pwd);
@@ -3760,7 +3775,7 @@ NTSTATUS _samr_set_userinfo2(pipes_struct *p, SAMR_Q_SET_USERINFO2 *q_u, SAMR_R_
}
encode_or_decode_arc4_passwd_buffer(ctr->info.id26->pass, &p->session_key);
- dump_data(100, ctr->info.id26->pass, 516);
+ dump_data(100, (char *)ctr->info.id26->pass, 516);
if (!set_user_info_pw(ctr->info.id26->pass, pwd))
r_u->status = NT_STATUS_ACCESS_DENIED;
@@ -4310,7 +4325,7 @@ NTSTATUS _samr_delete_dom_alias(pipes_struct *p, SAMR_Q_DELETE_DOM_ALIAS *q_u, S
uint32 acc_granted;
SE_PRIV se_rights;
BOOL can_add_accounts;
- NTSTATUS status;
+ BOOL ret;
DISP_INFO *disp_info = NULL;
DEBUG(5, ("_samr_delete_dom_alias: %d\n", __LINE__));
@@ -4349,15 +4364,15 @@ NTSTATUS _samr_delete_dom_alias(pipes_struct *p, SAMR_Q_DELETE_DOM_ALIAS *q_u, S
become_root();
/* Have passdb delete the alias */
- status = pdb_delete_alias(&alias_sid);
+ ret = pdb_delete_alias(&alias_sid);
if ( can_add_accounts )
unbecome_root();
/******** END SeAddUsers BLOCK *********/
- if ( !NT_STATUS_IS_OK(status))
- return status;
+ if ( !ret )
+ return NT_STATUS_ACCESS_DENIED;
if (!close_policy_hnd(p, &q_u->alias_pol))
return NT_STATUS_OBJECT_NAME_INVALID;
@@ -4702,8 +4717,8 @@ NTSTATUS _samr_set_aliasinfo(pipes_struct *p, SAMR_Q_SET_ALIASINFO *q_u, SAMR_R_
struct acct_info info;
ALIAS_INFO_CTR *ctr;
uint32 acc_granted;
+ BOOL ret;
BOOL can_mod_accounts;
- NTSTATUS status;
DISP_INFO *disp_info = NULL;
if (!get_lsa_policy_samr_sid(p, &q_u->alias_pol, &group_sid, &acc_granted, &disp_info))
@@ -4718,16 +4733,18 @@ NTSTATUS _samr_set_aliasinfo(pipes_struct *p, SAMR_Q_SET_ALIASINFO *q_u, SAMR_R_
/* get the current group information */
become_root();
- status = pdb_get_aliasinfo( &group_sid, &info );
+ ret = pdb_get_aliasinfo( &group_sid, &info );
unbecome_root();
- if ( !NT_STATUS_IS_OK(status))
- return status;
+ if ( !ret ) {
+ return NT_STATUS_NO_SUCH_ALIAS;
+ }
switch (ctr->level) {
case 2:
{
fstring group_name, acct_name;
+ NTSTATUS status;
/* We currently do not support renaming groups in the
the BUILTIN domain. Refer to util_builtin.c to understand
@@ -4762,7 +4779,7 @@ NTSTATUS _samr_set_aliasinfo(pipes_struct *p, SAMR_Q_SET_ALIASINFO *q_u, SAMR_R_
if ( !NT_STATUS_IS_OK( status ) )
return status;
break;
- }
+ }
case 3:
if ( ctr->alias.info3.description.string ) {
unistr2_to_ascii( info.acct_desc,
@@ -4783,17 +4800,18 @@ NTSTATUS _samr_set_aliasinfo(pipes_struct *p, SAMR_Q_SET_ALIASINFO *q_u, SAMR_R_
if ( can_mod_accounts )
become_root();
- status = pdb_set_aliasinfo( &group_sid, &info );
+ ret = pdb_set_aliasinfo( &group_sid, &info );
if ( can_mod_accounts )
unbecome_root();
/******** End SeAddUsers BLOCK *********/
- if (NT_STATUS_IS_OK(status))
+ if (ret) {
force_flush_samr_cache(disp_info);
+ }
- return status;
+ return ret ? NT_STATUS_OK : NT_STATUS_ACCESS_DENIED;
}
/*********************************************************************
diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c
index 464ca36f3c0..4cf43f04e49 100644
--- a/source/rpc_server/srv_spoolss_nt.c
+++ b/source/rpc_server/srv_spoolss_nt.c
@@ -166,8 +166,7 @@ static void srv_spoolss_replycloseprinter(int snum, POLICY_HND *handle)
cli_shutdown( notify_cli_pipe->cli );
notify_cli_pipe = NULL; /* The above call shuts downn the pipe also. */
- messaging_deregister(smbd_messaging_context(),
- MSG_PRINTER_NOTIFY2, NULL);
+ message_deregister(MSG_PRINTER_NOTIFY2);
/* Tell the connections db we're no longer interested in
* printer notify messages. */
@@ -312,8 +311,7 @@ WERROR delete_printer_hook( NT_USER_TOKEN *token, const char *sharename )
if ( (ret = smbrun(command, NULL)) == 0 ) {
/* Tell everyone we updated smb.conf. */
- message_send_all(smbd_messaging_context(),
- MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
+ message_send_all(conn_tdb_ctx(), MSG_SMB_CONF_UPDATED, NULL, 0, False, NULL);
}
if ( is_print_op )
@@ -329,7 +327,7 @@ WERROR delete_printer_hook( NT_USER_TOKEN *token, const char *sharename )
/* go ahead and re-read the services immediately */
reload_services( False );
- if ( share_defined( sharename ) )
+ if ( lp_servicenumber( sharename ) < 0 )
return WERR_ACCESS_DENIED;
return WERR_OK;
@@ -375,8 +373,7 @@ static WERROR delete_printer_handle(pipes_struct *p, POLICY_HND *hnd)
Return the snum of a printer corresponding to an handle.
****************************************************************************/
-static BOOL get_printer_snum(pipes_struct *p, POLICY_HND *hnd, int *number,
- struct share_params **params)
+static BOOL get_printer_snum(pipes_struct *p, POLICY_HND *hnd, int *number)
{
Printer_entry *Printer = find_printer_index_by_hnd(p, hnd);
@@ -389,13 +386,6 @@ static BOOL get_printer_snum(pipes_struct *p, POLICY_HND *hnd, int *number,
case SPLHND_PRINTER:
DEBUG(4,("short name:%s\n", Printer->sharename));
*number = print_queue_snum(Printer->sharename);
- if ((*number != -1) && (params != NULL)) {
- *params = get_share_params(tmp_talloc_ctx(),
- Printer->sharename);
- if (*params == NULL) {
- return False;
- }
- }
return (*number != -1);
case SPLHND_SERVER:
return False;
@@ -1078,18 +1068,18 @@ static BOOL notify2_unpack_msg( SPOOLSS_NOTIFY_MSG *msg, struct timeval *tv, voi
/* Unpack message */
- offset += tdb_unpack((uint8 *)buf + offset, len - offset, "f",
+ offset += tdb_unpack((char *)buf + offset, len - offset, "f",
msg->printer);
- offset += tdb_unpack((uint8 *)buf + offset, len - offset, "ddddddd",
+ offset += tdb_unpack((char *)buf + offset, len - offset, "ddddddd",
&tv_sec, &tv_usec,
&msg->type, &msg->field, &msg->id, &msg->len, &msg->flags);
if (msg->len == 0)
- tdb_unpack((uint8 *)buf + offset, len - offset, "dd",
+ tdb_unpack((char *)buf + offset, len - offset, "dd",
&msg->notify.value[0], &msg->notify.value[1]);
else
- tdb_unpack((uint8 *)buf + offset, len - offset, "B",
+ tdb_unpack((char *)buf + offset, len - offset, "B",
&msg->len, &msg->notify.data);
DEBUG(3, ("notify2_unpack_msg: got NOTIFY2 message for printer %s, jobid %u type %d, field 0x%02x, flags 0x%04x\n",
@@ -1102,7 +1092,7 @@ static BOOL notify2_unpack_msg( SPOOLSS_NOTIFY_MSG *msg, struct timeval *tv, voi
DEBUG(3, ("notify2_unpack_msg: value1 = %d, value2 = %d\n", msg->notify.value[0],
msg->notify.value[1]));
else
- dump_data(3, (uint8 *)msg->notify.data, msg->len);
+ dump_data(3, msg->notify.data, msg->len);
return True;
}
@@ -1111,21 +1101,19 @@ static BOOL notify2_unpack_msg( SPOOLSS_NOTIFY_MSG *msg, struct timeval *tv, voi
Receive a notify2 message list
********************************************************************/
-static void receive_notify2_message_list(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void receive_notify2_message_list(int msg_type, struct process_id src,
+ void *msg, size_t len,
+ void *private_data)
{
size_t msg_count, i;
- char *buf = (char *)data->data;
+ char *buf = (char *)msg;
char *msg_ptr;
size_t msg_len;
SPOOLSS_NOTIFY_MSG notify;
SPOOLSS_NOTIFY_MSG_CTR messages;
int num_groups;
- if (data->length < 4) {
+ if (len < 4) {
DEBUG(0,("receive_notify2_message_list: bad message format (len < 4)!\n"));
return;
}
@@ -1155,7 +1143,7 @@ static void receive_notify2_message_list(struct messaging_context *msg,
for ( i=0; i<msg_count; i++ ) {
struct timeval msg_tv;
- if (msg_ptr + 4 - buf > data->length) {
+ if (msg_ptr + 4 - buf > len) {
DEBUG(0,("receive_notify2_message_list: bad message format (len > buf_size) !\n"));
return;
}
@@ -1163,7 +1151,7 @@ static void receive_notify2_message_list(struct messaging_context *msg,
msg_len = IVAL(msg_ptr,0);
msg_ptr += 4;
- if (msg_ptr + msg_len - buf > data->length) {
+ if (msg_ptr + msg_len - buf > len) {
DEBUG(0,("receive_notify2_message_list: bad message format (bad len) !\n"));
return;
}
@@ -1216,9 +1204,8 @@ static BOOL srv_spoolss_drv_upgrade_printer(char* drivername)
DEBUG(10,("srv_spoolss_drv_upgrade_printer: Sending message about driver upgrade [%s]\n",
drivername));
- messaging_send_buf(smbd_messaging_context(), procid_self(),
- MSG_PRINTER_DRVUPGRADE,
- (uint8 *)drivername, len+1);
+ message_send_pid(pid_to_procid(sys_getpid()),
+ MSG_PRINTER_DRVUPGRADE, drivername, len+1, False);
return True;
}
@@ -1228,19 +1215,15 @@ static BOOL srv_spoolss_drv_upgrade_printer(char* drivername)
over all printers, upgrading ones as necessary
**********************************************************************/
-void do_drv_upgrade_printer(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void do_drv_upgrade_printer(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
fstring drivername;
int snum;
int n_services = lp_numservices();
- size_t len;
- len = MIN(data->length,sizeof(drivername)-1);
- strncpy(drivername, (const char *)data->data, len);
+ len = MIN(len,sizeof(drivername)-1);
+ strncpy(drivername, (const char *)buf, len);
DEBUG(10,("do_drv_upgrade_printer: Got message for new driver [%s]\n", drivername ));
@@ -1319,9 +1302,8 @@ static BOOL srv_spoolss_reset_printerdata(char* drivername)
DEBUG(10,("srv_spoolss_reset_printerdata: Sending message about resetting printerdata [%s]\n",
drivername));
- messaging_send_buf(smbd_messaging_context(), procid_self(),
- MSG_PRINTERDATA_INIT_RESET,
- (uint8 *)drivername, len+1);
+ message_send_pid(pid_to_procid(sys_getpid()),
+ MSG_PRINTERDATA_INIT_RESET, drivername, len+1, False);
return True;
}
@@ -1331,19 +1313,15 @@ static BOOL srv_spoolss_reset_printerdata(char* drivername)
over all printers, resetting printer data as neessary
**********************************************************************/
-void reset_all_printerdata(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void reset_all_printerdata(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
fstring drivername;
int snum;
int n_services = lp_numservices();
- size_t len;
- len = MIN( data->length, sizeof(drivername)-1 );
- strncpy( drivername, (const char *)data->data, len );
+ len = MIN( len, sizeof(drivername)-1 );
+ strncpy( drivername, (const char *)buf, len );
DEBUG(10,("reset_all_printerdata: Got message for new driver [%s]\n", drivername ));
@@ -1542,6 +1520,7 @@ WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u,
fstring name;
int snum;
+ struct current_user user;
Printer_entry *Printer=NULL;
if ( !q_u->printername )
@@ -1565,6 +1544,8 @@ WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u,
return WERR_INVALID_PRINTER_NAME;
}
+ get_current_user(&user, p);
+
/*
* First case: the user is opening the print server:
*
@@ -1629,12 +1610,12 @@ WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u,
/* if the user is not root, doesn't have SE_PRINT_OPERATOR privilege,
and not a printer admin, then fail */
- if ((p->pipe_user.ut.uid != 0) &&
- !user_has_privileges(p->pipe_user.nt_user_token,
+ if ((user.ut.uid != 0) &&
+ !user_has_privileges(user.nt_user_token,
&se_printop ) &&
!token_contains_name_in_list(
- uidtoname(p->pipe_user.ut.uid), NULL,
- p->pipe_user.nt_user_token,
+ uidtoname(user.ut.uid), NULL,
+ user.nt_user_token,
lp_printer_admin(snum))) {
close_printer_handle(p, handle);
return WERR_ACCESS_DENIED;
@@ -1657,7 +1638,7 @@ WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u,
/* NT doesn't let us connect to a printer if the connecting user
doesn't have print permission. */
- if (!get_printer_snum(p, handle, &snum, NULL)) {
+ if (!get_printer_snum(p, handle, &snum)) {
close_printer_handle(p, handle);
return WERR_BADFID;
}
@@ -1687,9 +1668,9 @@ WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u,
return WERR_ACCESS_DENIED;
}
- if (!user_ok_token(uidtoname(p->pipe_user.ut.uid),
- p->pipe_user.nt_user_token, snum) ||
- !print_access_check(&p->pipe_user, snum,
+ if (!user_ok_token(uidtoname(user.ut.uid), user.nt_user_token,
+ snum) ||
+ !print_access_check(&user, snum,
printer_default->access_required)) {
DEBUG(3, ("access DENIED for printer open\n"));
close_printer_handle(p, handle);
@@ -1884,7 +1865,7 @@ static WERROR _spoolss_enddocprinter_internal(pipes_struct *p, POLICY_HND *handl
return WERR_BADFID;
}
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
Printer->document_started=False;
@@ -1983,17 +1964,20 @@ WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER
NT_PRINTER_DRIVER_INFO_LEVEL info;
NT_PRINTER_DRIVER_INFO_LEVEL info_win2k;
int version;
+ struct current_user user;
WERROR status;
WERROR status_win2k = WERR_ACCESS_DENIED;
SE_PRIV se_printop = SE_PRINT_OPERATOR;
+ get_current_user(&user, p);
+
/* if the user is not root, doesn't have SE_PRINT_OPERATOR privilege,
and not a printer admin, then fail */
- if ( (p->pipe_user.ut.uid != 0)
- && !user_has_privileges(p->pipe_user.nt_user_token, &se_printop )
- && !token_contains_name_in_list( uidtoname(p->pipe_user.ut.uid),
- NULL, p->pipe_user.nt_user_token, lp_printer_admin(-1)) )
+ if ( (user.ut.uid != 0)
+ && !user_has_privileges(user.nt_user_token, &se_printop )
+ && !token_contains_name_in_list( uidtoname(user.ut.uid),
+ NULL, user.nt_user_token, lp_printer_admin(-1)) )
{
return WERR_ACCESS_DENIED;
}
@@ -2040,7 +2024,7 @@ WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER
/* if we get to here, we now have 2 driver info structures to remove */
/* remove the Win2k driver first*/
- status_win2k = delete_printer_driver(info_win2k.info_3, &p->pipe_user, 3, False );
+ status_win2k = delete_printer_driver(info_win2k.info_3, &user, 3, False );
free_a_printer_driver( info_win2k, 3 );
/* this should not have failed---if it did, report to client */
@@ -2052,7 +2036,7 @@ WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER
}
}
- status = delete_printer_driver(info.info_3, &p->pipe_user, version, False);
+ status = delete_printer_driver(info.info_3, &user, version, False);
/* if at least one of the deletes succeeded return OK */
@@ -2078,17 +2062,20 @@ WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIV
int version;
uint32 flags = q_u->delete_flags;
BOOL delete_files;
+ struct current_user user;
WERROR status;
WERROR status_win2k = WERR_ACCESS_DENIED;
SE_PRIV se_printop = SE_PRINT_OPERATOR;
+ get_current_user(&user, p);
+
/* if the user is not root, doesn't have SE_PRINT_OPERATOR privilege,
and not a printer admin, then fail */
- if ( (p->pipe_user.ut.uid != 0)
- && !user_has_privileges(p->pipe_user.nt_user_token, &se_printop )
- && !token_contains_name_in_list( uidtoname(p->pipe_user.ut.uid),
- NULL, p->pipe_user.nt_user_token, lp_printer_admin(-1)) )
+ if ( (user.ut.uid != 0)
+ && !user_has_privileges(user.nt_user_token, &se_printop )
+ && !token_contains_name_in_list( uidtoname(user.ut.uid),
+ NULL, user.nt_user_token, lp_printer_admin(-1)) )
{
return WERR_ACCESS_DENIED;
}
@@ -2174,7 +2161,7 @@ WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIV
/* if we get to here, we now have 2 driver info structures to remove */
/* remove the Win2k driver first*/
- status_win2k = delete_printer_driver(info_win2k.info_3, &p->pipe_user, 3, delete_files);
+ status_win2k = delete_printer_driver(info_win2k.info_3, &user, 3, delete_files);
free_a_printer_driver( info_win2k, 3 );
/* this should not have failed---if it did, report to client */
@@ -2184,7 +2171,7 @@ WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIV
}
}
- status = delete_printer_driver(info.info_3, &p->pipe_user, version, delete_files);
+ status = delete_printer_driver(info.info_3, &user, version, delete_files);
if ( W_ERROR_IS_OK(status) || W_ERROR_IS_OK(status_win2k) )
status = WERR_OK;
@@ -2276,6 +2263,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
*type = REG_DWORD;
if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
+ SIVAL(*data, 0, 0x00);
*needed = 0x4;
return WERR_OK;
}
@@ -2476,7 +2464,7 @@ WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPO
status = getprinterdata_printer_server( p->mem_ctx, value, type, data, needed, *out_size );
else
{
- if ( !get_printer_snum(p,handle, &snum, NULL) ) {
+ if ( !get_printer_snum(p,handle, &snum) ) {
status = WERR_BADFID;
goto done;
}
@@ -2619,9 +2607,8 @@ static BOOL srv_spoolss_replyopenprinter(int snum, const char *printer,
if ( !spoolss_connect_to_client( &notify_cli_pipe, client_ip, unix_printer ))
return False;
- messaging_register(smbd_messaging_context(), NULL,
- MSG_PRINTER_NOTIFY2,
- receive_notify2_message_list);
+ message_register(MSG_PRINTER_NOTIFY2,
+ receive_notify2_message_list, NULL);
/* Tell the connections db we're now interested in printer
* notify messages. */
register_message_flags( True, FLAG_MSG_PRINT_NOTIFY );
@@ -2695,7 +2682,7 @@ WERROR _spoolss_rffpcnex(pipes_struct *p, SPOOL_Q_RFFPCNEX *q_u, SPOOL_R_RFFPCNE
if ( Printer->printer_type == SPLHND_SERVER)
snum = -1;
else if ( (Printer->printer_type == SPLHND_PRINTER) &&
- !get_printer_snum(p, handle, &snum, NULL) )
+ !get_printer_snum(p, handle, &snum) )
return WERR_BADFID;
client_ip.s_addr = inet_addr(p->conn->client_address);
@@ -3083,8 +3070,8 @@ static void spoolss_notify_security_desc(int snum,
NT_PRINTER_INFO_LEVEL *printer,
TALLOC_CTX *mem_ctx)
{
- data->notify_data.sd.size = printer->info_2->secdesc_buf->sd_size;
- data->notify_data.sd.desc = dup_sec_desc( mem_ctx, printer->info_2->secdesc_buf->sd ) ;
+ data->notify_data.sd.size = printer->info_2->secdesc_buf->len;
+ data->notify_data.sd.desc = dup_sec_desc( mem_ctx, printer->info_2->secdesc_buf->sec ) ;
}
/*******************************************************************
@@ -3835,7 +3822,7 @@ static WERROR printer_notify_info(pipes_struct *p, POLICY_HND *hnd, SPOOL_NOTIFY
if ( !option )
return WERR_BADFID;
- get_printer_snum(p, hnd, &snum, NULL);
+ get_printer_snum(p, hnd, &snum);
for (i=0; i<option->count; i++) {
option_type=&option->ctr.type[i];
@@ -3953,9 +3940,7 @@ done:
* fill a printer_info_0 struct
********************************************************************/
-static BOOL construct_printer_info_0(Printer_entry *print_hnd,
- PRINTER_INFO_0 *printer,
- const struct share_params *params)
+static BOOL construct_printer_info_0(Printer_entry *print_hnd, PRINTER_INFO_0 *printer, int snum)
{
pstring chaine;
int count;
@@ -3966,15 +3951,14 @@ static BOOL construct_printer_info_0(Printer_entry *print_hnd,
time_t setuptime;
print_status_struct status;
- if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2,
- lp_const_servicename(params->service))))
+ if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum))))
return False;
- count = print_queue_length(params->service, &status);
+ count = print_queue_length(snum, &status);
/* check if we already have a counter for this printer */
for(session_counter = counter_list; session_counter; session_counter = session_counter->next) {
- if (session_counter->snum == params->service)
+ if (session_counter->snum == snum)
break;
}
@@ -3985,7 +3969,7 @@ static BOOL construct_printer_info_0(Printer_entry *print_hnd,
return False;
}
ZERO_STRUCTP(session_counter);
- session_counter->snum=params->service;
+ session_counter->snum=snum;
session_counter->counter=0;
DLIST_ADD(counter_list, session_counter);
}
@@ -4061,25 +4045,21 @@ static BOOL construct_printer_info_0(Printer_entry *print_hnd,
* construct_printer_info_1
* fill a printer_info_1 struct
********************************************************************/
-static BOOL construct_printer_info_1(Printer_entry *print_hnd, uint32 flags,
- PRINTER_INFO_1 *printer,
- const struct share_params *params)
+static BOOL construct_printer_info_1(Printer_entry *print_hnd, uint32 flags, PRINTER_INFO_1 *printer, int snum)
{
pstring chaine;
pstring chaine2;
NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
- if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2,
- lp_const_servicename(params->service))))
+ if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum))))
return False;
printer->flags=flags;
if (*ntprinter->info_2->comment == '\0') {
- init_unistr(&printer->comment, lp_comment(params->service));
+ init_unistr(&printer->comment, lp_comment(snum));
slprintf(chaine,sizeof(chaine)-1,"%s,%s,%s", ntprinter->info_2->printername,
- ntprinter->info_2->drivername,
- lp_comment(params->service));
+ ntprinter->info_2->drivername, lp_comment(snum));
}
else {
init_unistr(&printer->comment, ntprinter->info_2->comment); /* saved comment. */
@@ -4170,7 +4150,7 @@ DEVICEMODE *construct_dev_mode(const char *servicename)
DEBUGADD(8,("getting printer characteristics\n"));
- if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, servicename)))
+ if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, servicename)))
return NULL;
if ( !printer->info_2->devmode ) {
@@ -4203,29 +4183,26 @@ done:
* fill a printer_info_2 struct
********************************************************************/
-static BOOL construct_printer_info_2(Printer_entry *print_hnd,
- PRINTER_INFO_2 *printer,
- const struct share_params *params)
+static BOOL construct_printer_info_2(Printer_entry *print_hnd, PRINTER_INFO_2 *printer, int snum)
{
int count;
NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
print_status_struct status;
- if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2,
- lp_const_servicename(params->service))))
+ if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum))))
return False;
- count = print_queue_length(params->service, &status);
+ count = print_queue_length(snum, &status);
init_unistr(&printer->servername, ntprinter->info_2->servername); /* servername*/
init_unistr(&printer->printername, ntprinter->info_2->printername); /* printername*/
- init_unistr(&printer->sharename, lp_servicename(params->service)); /* sharename */
+ init_unistr(&printer->sharename, lp_servicename(snum)); /* sharename */
init_unistr(&printer->portname, ntprinter->info_2->portname); /* port */
init_unistr(&printer->drivername, ntprinter->info_2->drivername); /* drivername */
if (*ntprinter->info_2->comment == '\0')
- init_unistr(&printer->comment, lp_comment(params->service)); /* comment */
+ init_unistr(&printer->comment, lp_comment(snum)); /* comment */
else
init_unistr(&printer->comment, ntprinter->info_2->comment); /* saved comment. */
@@ -4246,19 +4223,19 @@ static BOOL construct_printer_info_2(Printer_entry *print_hnd,
printer->averageppm = ntprinter->info_2->averageppm; /* average pages per minute */
if ( !(printer->devmode = construct_dev_mode(
- lp_const_servicename(params->service))) )
+ lp_const_servicename(snum))) )
DEBUG(8, ("Returning NULL Devicemode!\n"));
printer->secdesc = NULL;
if ( ntprinter->info_2->secdesc_buf
- && ntprinter->info_2->secdesc_buf->sd_size != 0 )
+ && ntprinter->info_2->secdesc_buf->len != 0 )
{
/* don't use talloc_steal() here unless you do a deep steal of all
the SEC_DESC members */
printer->secdesc = dup_sec_desc( get_talloc_ctx(),
- ntprinter->info_2->secdesc_buf->sd );
+ ntprinter->info_2->secdesc_buf->sec );
}
free_a_printer(&ntprinter, 2);
@@ -4271,15 +4248,12 @@ static BOOL construct_printer_info_2(Printer_entry *print_hnd,
* fill a printer_info_3 struct
********************************************************************/
-static BOOL construct_printer_info_3(Printer_entry *print_hnd,
- PRINTER_INFO_3 **pp_printer,
- const struct share_params *params)
+static BOOL construct_printer_info_3(Printer_entry *print_hnd, PRINTER_INFO_3 **pp_printer, int snum)
{
NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
PRINTER_INFO_3 *printer = NULL;
- if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2,
- lp_const_servicename(params->service))))
+ if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum))))
return False;
*pp_printer = NULL;
@@ -4293,12 +4267,12 @@ static BOOL construct_printer_info_3(Printer_entry *print_hnd,
/* These are the components of the SD we are returning. */
- if (ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->sd_size != 0) {
+ if (ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->len != 0) {
/* don't use talloc_steal() here unless you do a deep steal of all
the SEC_DESC members */
printer->secdesc = dup_sec_desc( get_talloc_ctx(),
- ntprinter->info_2->secdesc_buf->sd );
+ ntprinter->info_2->secdesc_buf->sec );
}
free_a_printer(&ntprinter, 2);
@@ -4312,14 +4286,11 @@ static BOOL construct_printer_info_3(Printer_entry *print_hnd,
* fill a printer_info_4 struct
********************************************************************/
-static BOOL construct_printer_info_4(Printer_entry *print_hnd,
- PRINTER_INFO_4 *printer,
- const struct share_params *params)
+static BOOL construct_printer_info_4(Printer_entry *print_hnd, PRINTER_INFO_4 *printer, int snum)
{
NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
- if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2,
- lp_const_servicename(params->service))))
+ if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum))))
return False;
init_unistr(&printer->printername, ntprinter->info_2->printername); /* printername*/
@@ -4335,14 +4306,11 @@ static BOOL construct_printer_info_4(Printer_entry *print_hnd,
* fill a printer_info_5 struct
********************************************************************/
-static BOOL construct_printer_info_5(Printer_entry *print_hnd,
- PRINTER_INFO_5 *printer,
- const struct share_params *params)
+static BOOL construct_printer_info_5(Printer_entry *print_hnd, PRINTER_INFO_5 *printer, int snum)
{
NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
- if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2,
- lp_const_servicename(params->service))))
+ if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum))))
return False;
init_unistr(&printer->printername, ntprinter->info_2->printername);
@@ -4360,44 +4328,16 @@ static BOOL construct_printer_info_5(Printer_entry *print_hnd,
}
/********************************************************************
- * construct_printer_info_6
- * fill a printer_info_6 struct
- ********************************************************************/
-
-static BOOL construct_printer_info_6(Printer_entry *print_hnd,
- PRINTER_INFO_6 *printer,
- const struct share_params *params)
-{
- NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
- int count;
- print_status_struct status;
-
- if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2,
- lp_const_servicename(params->service))))
- return False;
-
- count = print_queue_length(params->service, &status);
-
- printer->status = nt_printq_status(status.status);
-
- free_a_printer(&ntprinter, 2);
-
- return True;
-}
-
-/********************************************************************
* construct_printer_info_7
* fill a printer_info_7 struct
********************************************************************/
-static BOOL construct_printer_info_7(Printer_entry *print_hnd,
- PRINTER_INFO_7 *printer,
- const struct share_params *params)
+static BOOL construct_printer_info_7(Printer_entry *print_hnd, PRINTER_INFO_7 *printer, int snum)
{
char *guid_str = NULL;
struct GUID guid;
- if (is_printer_published(print_hnd, params->service, &guid)) {
+ if (is_printer_published(print_hnd, snum, &guid)) {
asprintf(&guid_str, "{%s}", smb_uuid_string_static(guid));
strupper_m(guid_str);
init_unistr(&printer->guid, guid_str);
@@ -4416,45 +4356,31 @@ static BOOL construct_printer_info_7(Printer_entry *print_hnd,
static WERROR enum_all_printers_info_1(uint32 flags, RPC_BUFFER *buffer, uint32 offered, uint32 *needed, uint32 *returned)
{
+ int snum;
int i;
- struct share_iterator *shares;
- struct share_params *printer;
+ int n_services=lp_numservices();
PRINTER_INFO_1 *printers=NULL;
+ PRINTER_INFO_1 current_prt;
WERROR result = WERR_OK;
DEBUG(4,("enum_all_printers_info_1\n"));
- if (!(shares = share_list_all(NULL))) {
- DEBUG(5, ("Could not list printers\n"));
- return WERR_ACCESS_DENIED;
- }
-
- while ((printer = next_printer(shares)) != NULL) {
- PRINTER_INFO_1 current_prt;
+ for (snum=0; snum<n_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && lp_print_ok(snum) ) {
+ DEBUG(4,("Found a printer in smb.conf: %s[%x]\n", lp_servicename(snum), snum));
- DEBUG(4,("Found a printer in smb.conf: %s\n",
- lp_servicename(printer->service)));
-
- if (!construct_printer_info_1(NULL, flags, &current_prt,
- printer)) {
- continue;
- }
+ if (construct_printer_info_1(NULL, flags, &current_prt, snum)) {
+ if((printers=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_1, *returned +1)) == NULL) {
+ DEBUG(2,("enum_all_printers_info_1: failed to enlarge printers buffer!\n"));
+ *returned=0;
+ return WERR_NOMEM;
+ }
+ DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_1\n", *returned));
- if((printers=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_1,
- *returned +1)) == NULL) {
- DEBUG(2,("enum_all_printers_info_1: failed to enlarge "
- "printers buffer!\n"));
- *returned=0;
- TALLOC_FREE(shares);
- return WERR_NOMEM;
+ memcpy(&printers[*returned], &current_prt, sizeof(PRINTER_INFO_1));
+ (*returned)++;
+ }
}
- DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_1\n",
- *returned));
-
- memcpy(&printers[*returned], &current_prt,
- sizeof(PRINTER_INFO_1));
- (*returned)++;
- TALLOC_FREE(printer);
}
/* check the required size. */
@@ -4479,7 +4405,6 @@ out:
/* clear memory */
SAFE_FREE(printers);
- TALLOC_FREE(shares);
if ( !W_ERROR_IS_OK(result) )
*returned = 0;
@@ -4617,45 +4542,33 @@ static WERROR enum_all_printers_info_1_network(fstring name, RPC_BUFFER *buffer,
static WERROR enum_all_printers_info_2(RPC_BUFFER *buffer, uint32 offered, uint32 *needed, uint32 *returned)
{
+ int snum;
int i;
- struct share_iterator *shares;
- struct share_params *printer;
+ int n_services=lp_numservices();
PRINTER_INFO_2 *printers=NULL;
+ PRINTER_INFO_2 current_prt;
WERROR result = WERR_OK;
*returned = 0;
- if (!(shares = share_list_all(NULL))) {
- DEBUG(5, ("Could not list printers\n"));
- return WERR_ACCESS_DENIED;
- }
+ for (snum=0; snum<n_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && lp_print_ok(snum) ) {
+ DEBUG(4,("Found a printer in smb.conf: %s[%x]\n", lp_servicename(snum), snum));
+
+ if (construct_printer_info_2(NULL, &current_prt, snum)) {
+ if ( !(printers=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_2, *returned +1)) ) {
+ DEBUG(2,("enum_all_printers_info_2: failed to enlarge printers buffer!\n"));
+ *returned = 0;
+ return WERR_NOMEM;
+ }
- while ((printer = next_printer(shares)) != NULL) {
- PRINTER_INFO_2 current_prt;
+ DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_2\n", *returned + 1));
- DEBUG(4,("Found a printer in smb.conf: %s\n",
- lp_servicename(printer->service)));
+ memcpy(&printers[*returned], &current_prt, sizeof(PRINTER_INFO_2));
- if (!construct_printer_info_2(NULL, &current_prt,
- printer)) {
- continue;
- }
- if ( !(printers=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_2,
- *returned +1)) ) {
- DEBUG(2,("enum_all_printers_info_2: failed to enlarge "
- "printers buffer!\n"));
- *returned = 0;
- TALLOC_FREE(shares);
- return WERR_NOMEM;
+ (*returned)++;
+ }
}
-
- DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_2\n",
- *returned + 1));
-
- memcpy(&printers[*returned], &current_prt,
- sizeof(PRINTER_INFO_2));
- (*returned)++;
- TALLOC_FREE(printer);
}
/* check the required size. */
@@ -4683,7 +4596,6 @@ out:
free_devmode(printers[i].devmode);
SAFE_FREE(printers);
- TALLOC_FREE(shares);
if ( !W_ERROR_IS_OK(result) )
*returned = 0;
@@ -4824,10 +4736,7 @@ WERROR _spoolss_enumprinters( pipes_struct *p, SPOOL_Q_ENUMPRINTERS *q_u, SPOOL_
/****************************************************************************
****************************************************************************/
-static WERROR getprinter_level_0(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
+static WERROR getprinter_level_0(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
{
PRINTER_INFO_0 *printer=NULL;
WERROR result = WERR_OK;
@@ -4835,7 +4744,7 @@ static WERROR getprinter_level_0(Printer_entry *print_hnd,
if((printer=SMB_MALLOC_P(PRINTER_INFO_0)) == NULL)
return WERR_NOMEM;
- construct_printer_info_0(print_hnd, printer, params);
+ construct_printer_info_0(print_hnd, printer, snum);
/* check the required size. */
*needed += spoolss_size_printer_info_0(printer);
@@ -4864,10 +4773,7 @@ out:
/****************************************************************************
****************************************************************************/
-static WERROR getprinter_level_1(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
+static WERROR getprinter_level_1(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
{
PRINTER_INFO_1 *printer=NULL;
WERROR result = WERR_OK;
@@ -4875,8 +4781,7 @@ static WERROR getprinter_level_1(Printer_entry *print_hnd,
if((printer=SMB_MALLOC_P(PRINTER_INFO_1)) == NULL)
return WERR_NOMEM;
- construct_printer_info_1(print_hnd, PRINTER_ENUM_ICON8, printer,
- params);
+ construct_printer_info_1(print_hnd, PRINTER_ENUM_ICON8, printer, snum);
/* check the required size. */
*needed += spoolss_size_printer_info_1(printer);
@@ -4904,10 +4809,7 @@ out:
/****************************************************************************
****************************************************************************/
-static WERROR getprinter_level_2(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
+static WERROR getprinter_level_2(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
{
PRINTER_INFO_2 *printer=NULL;
WERROR result = WERR_OK;
@@ -4915,7 +4817,7 @@ static WERROR getprinter_level_2(Printer_entry *print_hnd,
if((printer=SMB_MALLOC_P(PRINTER_INFO_2))==NULL)
return WERR_NOMEM;
- construct_printer_info_2(print_hnd, printer, params);
+ construct_printer_info_2(print_hnd, printer, snum);
/* check the required size. */
*needed += spoolss_size_printer_info_2(printer);
@@ -4944,15 +4846,12 @@ out:
/****************************************************************************
****************************************************************************/
-static WERROR getprinter_level_3(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
+static WERROR getprinter_level_3(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
{
PRINTER_INFO_3 *printer=NULL;
WERROR result = WERR_OK;
- if (!construct_printer_info_3(print_hnd, &printer, params))
+ if (!construct_printer_info_3(print_hnd, &printer, snum))
return WERR_NOMEM;
/* check the required size. */
@@ -4981,10 +4880,7 @@ out:
/****************************************************************************
****************************************************************************/
-static WERROR getprinter_level_4(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
+static WERROR getprinter_level_4(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
{
PRINTER_INFO_4 *printer=NULL;
WERROR result = WERR_OK;
@@ -4992,7 +4888,7 @@ static WERROR getprinter_level_4(Printer_entry *print_hnd,
if((printer=SMB_MALLOC_P(PRINTER_INFO_4))==NULL)
return WERR_NOMEM;
- if (!construct_printer_info_4(print_hnd, printer, params)) {
+ if (!construct_printer_info_4(print_hnd, printer, snum)) {
SAFE_FREE(printer);
return WERR_NOMEM;
}
@@ -5023,10 +4919,7 @@ out:
/****************************************************************************
****************************************************************************/
-static WERROR getprinter_level_5(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
+static WERROR getprinter_level_5(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
{
PRINTER_INFO_5 *printer=NULL;
WERROR result = WERR_OK;
@@ -5034,7 +4927,7 @@ static WERROR getprinter_level_5(Printer_entry *print_hnd,
if((printer=SMB_MALLOC_P(PRINTER_INFO_5))==NULL)
return WERR_NOMEM;
- if (!construct_printer_info_5(print_hnd, printer, params)) {
+ if (!construct_printer_info_5(print_hnd, printer, snum)) {
free_printer_info_5(printer);
return WERR_NOMEM;
}
@@ -5062,50 +4955,7 @@ out:
return result;
}
-static WERROR getprinter_level_6(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
-{
- PRINTER_INFO_6 *printer;
- WERROR result = WERR_OK;
-
- if ((printer = SMB_MALLOC_P(PRINTER_INFO_6)) == NULL) {
- return WERR_NOMEM;
- }
-
- if (!construct_printer_info_6(print_hnd, printer, params)) {
- free_printer_info_6(printer);
- return WERR_NOMEM;
- }
-
- /* check the required size. */
- *needed += spoolss_size_printer_info_6(printer);
-
- if (*needed > offered) {
- result = WERR_INSUFFICIENT_BUFFER;
- goto out;
- }
-
- if (!rpcbuf_alloc_size(buffer, *needed)) {
- result = WERR_NOMEM;
- goto out;
- }
-
- /* fill the buffer with the structures */
- smb_io_printer_info_6("", buffer, printer, 0);
-
-out:
- /* clear memory */
- free_printer_info_6(printer);
-
- return result;
-}
-
-static WERROR getprinter_level_7(Printer_entry *print_hnd,
- const struct share_params *params,
- RPC_BUFFER *buffer, uint32 offered,
- uint32 *needed)
+static WERROR getprinter_level_7(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
{
PRINTER_INFO_7 *printer=NULL;
WERROR result = WERR_OK;
@@ -5113,7 +4963,7 @@ static WERROR getprinter_level_7(Printer_entry *print_hnd,
if((printer=SMB_MALLOC_P(PRINTER_INFO_7))==NULL)
return WERR_NOMEM;
- if (!construct_printer_info_7(print_hnd, printer, params))
+ if (!construct_printer_info_7(print_hnd, printer, snum))
return WERR_NOMEM;
/* check the required size. */
@@ -5151,7 +5001,6 @@ WERROR _spoolss_getprinter(pipes_struct *p, SPOOL_Q_GETPRINTER *q_u, SPOOL_R_GET
uint32 offered = q_u->offered;
uint32 *needed = &r_u->needed;
Printer_entry *Printer=find_printer_index_by_hnd(p, handle);
- struct share_params *params;
int snum;
@@ -5166,34 +5015,24 @@ WERROR _spoolss_getprinter(pipes_struct *p, SPOOL_Q_GETPRINTER *q_u, SPOOL_R_GET
*needed=0;
- if (!get_printer_snum(p, handle, &snum, &params))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
switch (level) {
case 0:
- return getprinter_level_0(Printer, params, buffer, offered,
- needed);
+ return getprinter_level_0(Printer, snum, buffer, offered, needed);
case 1:
- return getprinter_level_1(Printer, params, buffer, offered,
- needed);
+ return getprinter_level_1(Printer, snum, buffer, offered, needed);
case 2:
- return getprinter_level_2(Printer, params, buffer, offered,
- needed);
+ return getprinter_level_2(Printer, snum, buffer, offered, needed);
case 3:
- return getprinter_level_3(Printer, params, buffer, offered,
- needed);
+ return getprinter_level_3(Printer, snum, buffer, offered, needed);
case 4:
- return getprinter_level_4(Printer, params, buffer, offered,
- needed);
+ return getprinter_level_4(Printer, snum, buffer, offered, needed);
case 5:
- return getprinter_level_5(Printer, params, buffer, offered,
- needed);
- case 6:
- return getprinter_level_6(Printer, params, buffer, offered,
- needed);
+ return getprinter_level_5(Printer, snum, buffer, offered, needed);
case 7:
- return getprinter_level_7(Printer, params, buffer, offered,
- needed);
+ return getprinter_level_7(Printer, snum, buffer, offered, needed);
}
return WERR_UNKNOWN_LEVEL;
}
@@ -5790,7 +5629,7 @@ WERROR _spoolss_getprinterdriver2(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVER2 *q_
fstrcpy(servername, get_server_name( printer ));
unistr2_to_ascii(architecture, uni_arch, sizeof(architecture)-1);
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
switch (level) {
@@ -5846,7 +5685,7 @@ WERROR _spoolss_endpageprinter(pipes_struct *p, SPOOL_Q_ENDPAGEPRINTER *q_u, SPO
return WERR_BADFID;
}
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
Printer->page_started=False;
@@ -5872,12 +5711,15 @@ WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, S
pstring jobname;
fstring datatype;
Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
+ struct current_user user;
if (!Printer) {
DEBUG(2,("_spoolss_startdocprinter: Invalid handle (%s:%u:%u)\n", OUR_HANDLE(handle)));
return WERR_BADFID;
}
+ get_current_user(&user, p);
+
/*
* a nice thing with NT is it doesn't listen to what you tell it.
* when asked to send _only_ RAW datas, it tries to send datas
@@ -5895,13 +5737,13 @@ WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, S
}
/* get the share number of the printer */
- if (!get_printer_snum(p, handle, &snum, NULL)) {
+ if (!get_printer_snum(p, handle, &snum)) {
return WERR_BADFID;
}
unistr2_to_ascii(jobname, &info_1->docname, sizeof(jobname));
- Printer->jobid = print_job_start(&p->pipe_user, snum, jobname, Printer->nt_devmode);
+ Printer->jobid = print_job_start(&user, snum, jobname, Printer->nt_devmode);
/* An error occured in print_job_start() so return an appropriate
NT error code. */
@@ -5947,7 +5789,7 @@ WERROR _spoolss_writeprinter(pipes_struct *p, SPOOL_Q_WRITEPRINTER *q_u, SPOOL_R
return WERR_BADFID;
}
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
(*buffer_written) = (uint32)print_job_write(snum, Printer->jobid, (const char *)buffer,
@@ -5974,32 +5816,35 @@ WERROR _spoolss_writeprinter(pipes_struct *p, SPOOL_Q_WRITEPRINTER *q_u, SPOOL_R
static WERROR control_printer(POLICY_HND *handle, uint32 command,
pipes_struct *p)
{
+ struct current_user user;
int snum;
WERROR errcode = WERR_BADFUNC;
Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
+ get_current_user(&user, p);
+
if (!Printer) {
DEBUG(2,("control_printer: Invalid handle (%s:%u:%u)\n", OUR_HANDLE(handle)));
return WERR_BADFID;
}
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
switch (command) {
case PRINTER_CONTROL_PAUSE:
- if (print_queue_pause(&p->pipe_user, snum, &errcode)) {
+ if (print_queue_pause(&user, snum, &errcode)) {
errcode = WERR_OK;
}
break;
case PRINTER_CONTROL_RESUME:
case PRINTER_CONTROL_UNPAUSE:
- if (print_queue_resume(&p->pipe_user, snum, &errcode)) {
+ if (print_queue_resume(&user, snum, &errcode)) {
errcode = WERR_OK;
}
break;
case PRINTER_CONTROL_PURGE:
- if (print_queue_purge(&p->pipe_user, snum, &errcode)) {
+ if (print_queue_purge(&user, snum, &errcode)) {
errcode = WERR_OK;
}
break;
@@ -6021,6 +5866,7 @@ WERROR _spoolss_abortprinter(pipes_struct *p, SPOOL_Q_ABORTPRINTER *q_u, SPOOL_R
POLICY_HND *handle = &q_u->handle;
Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
int snum;
+ struct current_user user;
WERROR errcode = WERR_OK;
if (!Printer) {
@@ -6028,10 +5874,12 @@ WERROR _spoolss_abortprinter(pipes_struct *p, SPOOL_Q_ABORTPRINTER *q_u, SPOOL_R
return WERR_BADFID;
}
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
- print_job_delete( &p->pipe_user, snum, Printer->jobid, &errcode );
+ get_current_user( &user, p );
+
+ print_job_delete( &user, snum, Printer->jobid, &errcode );
return errcode;
}
@@ -6051,7 +5899,7 @@ static WERROR update_printer_sec(POLICY_HND *handle, uint32 level,
Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
- if (!Printer || !get_printer_snum(p, handle, &snum, NULL)) {
+ if (!Printer || !get_printer_snum(p, handle, &snum)) {
DEBUG(2,("update_printer_sec: Invalid handle (%s:%u:%u)\n",
OUR_HANDLE(handle)));
@@ -6085,7 +5933,7 @@ static WERROR update_printer_sec(POLICY_HND *handle, uint32 level,
SEC_ACL *the_acl;
int i;
- the_acl = old_secdesc_ctr->sd->dacl;
+ the_acl = old_secdesc_ctr->sec->dacl;
DEBUG(10, ("old_secdesc_ctr for %s has %d aces:\n",
PRINTERNAME(snum), the_acl->num_aces));
@@ -6098,7 +5946,7 @@ static WERROR update_printer_sec(POLICY_HND *handle, uint32 level,
the_acl->aces[i].access_mask));
}
- the_acl = secdesc_ctr->sd->dacl;
+ the_acl = secdesc_ctr->sec->dacl;
if (the_acl) {
DEBUG(10, ("secdesc_ctr for %s has %d aces:\n",
@@ -6123,7 +5971,7 @@ static WERROR update_printer_sec(POLICY_HND *handle, uint32 level,
goto done;
}
- if (sec_desc_equal(new_secdesc_ctr->sd, old_secdesc_ctr->sd)) {
+ if (sec_desc_equal(new_secdesc_ctr->sec, old_secdesc_ctr->sec)) {
result = WERR_OK;
goto done;
}
@@ -6268,8 +6116,7 @@ BOOL add_printer_hook(NT_USER_TOKEN *token, NT_PRINTER_INFO_LEVEL *printer)
if ( (ret = smbrun(command, &fd)) == 0 ) {
/* Tell everyone we updated smb.conf. */
- message_send_all(smbd_messaging_context(),
- MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
+ message_send_all(conn_tdb_ctx(), MSG_SMB_CONF_UPDATED, NULL, 0, False, NULL);
}
if ( is_print_op )
@@ -6333,7 +6180,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
goto done;
}
- if (!get_printer_snum(p, handle, &snum, NULL)) {
+ if (!get_printer_snum(p, handle, &snum)) {
result = WERR_BADFID;
goto done;
}
@@ -6524,7 +6371,7 @@ static WERROR publish_or_unpublish_printer(pipes_struct *p, POLICY_HND *handle,
if (!Printer)
return WERR_BADFID;
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
nt_printer_publish(Printer, snum, info7->action);
@@ -6594,7 +6441,7 @@ WERROR _spoolss_fcpn(pipes_struct *p, SPOOL_Q_FCPN *q_u, SPOOL_R_FCPN *r_u)
if ( Printer->printer_type == SPLHND_SERVER)
snum = -1;
else if ( (Printer->printer_type == SPLHND_PRINTER) &&
- !get_printer_snum(p, handle, &snum, NULL) )
+ !get_printer_snum(p, handle, &snum) )
return WERR_BADFID;
srv_spoolss_replycloseprinter(snum, &Printer->notify.client_hnd);
@@ -6841,7 +6688,7 @@ WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJO
/* lookup the printer snum and tdb entry */
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
wret = get_a_printer(NULL, &ntprinter, 2, lp_servicename(snum));
@@ -6892,10 +6739,11 @@ WERROR _spoolss_setjob(pipes_struct *p, SPOOL_Q_SETJOB *q_u, SPOOL_R_SETJOB *r_u
uint32 jobid = q_u->jobid;
uint32 command = q_u->command;
+ struct current_user user;
int snum;
WERROR errcode = WERR_BADFUNC;
- if (!get_printer_snum(p, handle, &snum, NULL)) {
+ if (!get_printer_snum(p, handle, &snum)) {
return WERR_BADFID;
}
@@ -6903,21 +6751,23 @@ WERROR _spoolss_setjob(pipes_struct *p, SPOOL_Q_SETJOB *q_u, SPOOL_R_SETJOB *r_u
return WERR_INVALID_PRINTER_NAME;
}
+ get_current_user(&user, p);
+
switch (command) {
case JOB_CONTROL_CANCEL:
case JOB_CONTROL_DELETE:
- if (print_job_delete(&p->pipe_user, snum, jobid, &errcode)) {
+ if (print_job_delete(&user, snum, jobid, &errcode)) {
errcode = WERR_OK;
}
break;
case JOB_CONTROL_PAUSE:
- if (print_job_pause(&p->pipe_user, snum, jobid, &errcode)) {
+ if (print_job_pause(&user, snum, jobid, &errcode)) {
errcode = WERR_OK;
}
break;
case JOB_CONTROL_RESTART:
case JOB_CONTROL_RESUME:
- if (print_job_resume(&p->pipe_user, snum, jobid, &errcode)) {
+ if (print_job_resume(&user, snum, jobid, &errcode)) {
errcode = WERR_OK;
}
break;
@@ -7490,13 +7340,8 @@ WERROR enumports_hook( int *count, char ***lines )
/* if no hook then just fill in the default port */
if ( !*cmd ) {
- if (!(qlines = SMB_MALLOC_ARRAY( char*, 2 ))) {
- return WERR_NOMEM;
- }
- if (!(qlines[0] = SMB_STRDUP( SAMBA_PRINTER_PORT_NAME ))) {
- SAFE_FREE(qlines);
- return WERR_NOMEM;
- }
+ qlines = SMB_MALLOC_ARRAY( char*, 2 );
+ qlines[0] = SMB_STRDUP( SAMBA_PRINTER_PORT_NAME );
qlines[1] = NULL;
numlines = 1;
}
@@ -7848,23 +7693,26 @@ WERROR _spoolss_addprinterdriver(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVER *q_u,
SPOOL_PRINTER_DRIVER_INFO_LEVEL *info = &q_u->info;
WERROR err = WERR_OK;
NT_PRINTER_DRIVER_INFO_LEVEL driver;
+ struct current_user user;
fstring driver_name;
uint32 version;
ZERO_STRUCT(driver);
+ get_current_user(&user, p);
+
if (!convert_printer_driver_info(info, &driver, level)) {
err = WERR_NOMEM;
goto done;
}
DEBUG(5,("Cleaning driver's information\n"));
- err = clean_up_driver_struct(driver, level, &p->pipe_user);
+ err = clean_up_driver_struct(driver, level, &user);
if (!W_ERROR_IS_OK(err))
goto done;
DEBUG(5,("Moving driver to final destination\n"));
- if( !W_ERROR_IS_OK(err = move_driver_to_download_area(driver, level, &p->pipe_user, &err)) ) {
+ if( !W_ERROR_IS_OK(err = move_driver_to_download_area(driver, level, &user, &err)) ) {
goto done;
}
@@ -8126,7 +7974,7 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
return WERR_BADFID;
}
- if (!get_printer_snum(p,handle, &snum, NULL))
+ if (!get_printer_snum(p,handle, &snum))
return WERR_BADFID;
result = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
@@ -8300,7 +8148,7 @@ WERROR _spoolss_setprinterdata( pipes_struct *p, SPOOL_Q_SETPRINTERDATA *q_u, SP
return WERR_INVALID_PARAM;
}
- if (!get_printer_snum(p,handle, &snum, NULL))
+ if (!get_printer_snum(p,handle, &snum))
return WERR_BADFID;
/*
@@ -8372,7 +8220,7 @@ WERROR _spoolss_resetprinter(pipes_struct *p, SPOOL_Q_RESETPRINTER *q_u, SPOOL_R
return WERR_BADFID;
}
- if (!get_printer_snum(p,handle, &snum, NULL))
+ if (!get_printer_snum(p,handle, &snum))
return WERR_BADFID;
@@ -8402,7 +8250,7 @@ WERROR _spoolss_deleteprinterdata(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATA *q_
return WERR_BADFID;
}
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
@@ -8454,7 +8302,7 @@ WERROR _spoolss_addform( pipes_struct *p, SPOOL_Q_ADDFORM *q_u, SPOOL_R_ADDFORM
if ( Printer->printer_type == SPLHND_PRINTER )
{
- if (!get_printer_snum(p,handle, &snum, NULL))
+ if (!get_printer_snum(p,handle, &snum))
return WERR_BADFID;
status = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
@@ -8525,7 +8373,7 @@ WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DE
if ( Printer->printer_type == SPLHND_PRINTER )
{
- if (!get_printer_snum(p,handle, &snum, NULL))
+ if (!get_printer_snum(p,handle, &snum))
return WERR_BADFID;
status = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
@@ -8593,7 +8441,7 @@ WERROR _spoolss_setform(pipes_struct *p, SPOOL_Q_SETFORM *q_u, SPOOL_R_SETFORM *
if ( Printer->printer_type == SPLHND_PRINTER )
{
- if (!get_printer_snum(p,handle, &snum, NULL))
+ if (!get_printer_snum(p,handle, &snum))
return WERR_BADFID;
status = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
@@ -9079,7 +8927,7 @@ WERROR _spoolss_getjob( pipes_struct *p, SPOOL_Q_GETJOB *q_u, SPOOL_R_GETJOB *r_
*needed = 0;
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
wstatus = get_a_printer(NULL, &ntprinter, 2, lp_servicename(snum));
@@ -9162,7 +9010,7 @@ WERROR _spoolss_getprinterdataex(pipes_struct *p, SPOOL_Q_GETPRINTERDATAEX *q_u,
goto done;
}
- if ( !get_printer_snum(p,handle, &snum, NULL) )
+ if ( !get_printer_snum(p,handle, &snum) )
return WERR_BADFID;
status = get_a_printer(Printer, &printer, 2, lp_servicename(snum));
@@ -9247,7 +9095,7 @@ WERROR _spoolss_setprinterdataex(pipes_struct *p, SPOOL_Q_SETPRINTERDATAEX *q_u,
return WERR_INVALID_PARAM;
}
- if ( !get_printer_snum(p,handle, &snum, NULL) )
+ if ( !get_printer_snum(p,handle, &snum) )
return WERR_BADFID;
/*
@@ -9298,8 +9146,7 @@ WERROR _spoolss_setprinterdataex(pipes_struct *p, SPOOL_Q_SETPRINTERDATAEX *q_u,
*/
set_printer_dataex( printer, keyname, valuename,
- REG_SZ, (uint8 *)oid_string,
- strlen(oid_string)+1 );
+ REG_SZ, (void*)oid_string, strlen(oid_string)+1 );
}
status = mod_a_printer(printer, 2);
@@ -9334,7 +9181,7 @@ WERROR _spoolss_deleteprinterdataex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATAEX
return WERR_BADFID;
}
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
@@ -9386,7 +9233,7 @@ WERROR _spoolss_enumprinterkey(pipes_struct *p, SPOOL_Q_ENUMPRINTERKEY *q_u, SPO
return WERR_BADFID;
}
- if ( !get_printer_snum(p,handle, &snum, NULL) )
+ if ( !get_printer_snum(p,handle, &snum) )
return WERR_BADFID;
status = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
@@ -9456,7 +9303,7 @@ WERROR _spoolss_deleteprinterkey(pipes_struct *p, SPOOL_Q_DELETEPRINTERKEY *q_u,
if ( !q_u->keyname.buffer )
return WERR_INVALID_PARAM;
- if (!get_printer_snum(p, handle, &snum, NULL))
+ if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
@@ -9529,7 +9376,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_
/* get the printer off of disk */
- if (!get_printer_snum(p,handle, &snum, NULL))
+ if (!get_printer_snum(p,handle, &snum))
return WERR_BADFID;
ZERO_STRUCT(printer);
@@ -9589,7 +9436,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_
data_len = regval_size( val );
if ( data_len ) {
- if ( !(enum_values[i].data = (uint8 *)TALLOC_MEMDUP(p->mem_ctx, regval_data_p(val), data_len)) )
+ if ( !(enum_values[i].data = TALLOC_MEMDUP(p->mem_ctx, regval_data_p(val), data_len)) )
{
DEBUG(0,("TALLOC_MEMDUP failed to allocate memory [data_len=%d] for data!\n",
data_len ));
diff --git a/source/rpc_server/srv_srvsvc.c b/source/rpc_server/srv_srvsvc.c
new file mode 100644
index 00000000000..e4f85d0bdb4
--- /dev/null
+++ b/source/rpc_server/srv_srvsvc.c
@@ -0,0 +1,621 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * RPC Pipe client / server routines
+ * Copyright (C) Andrew Tridgell 1992-1997,
+ * Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
+ * Copyright (C) Paul Ashton 1997,
+ * Copyright (C) Jeremy Allison 2001,
+ * Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003.
+ * Copyright (C) Gera;d (Jerry) Carter 2006.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* This is the interface to the srvsvc pipe. */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_SRV
+
+/*******************************************************************
+ api_srv_net_srv_get_info
+********************************************************************/
+
+static BOOL api_srv_net_srv_get_info(pipes_struct *p)
+{
+ SRV_Q_NET_SRV_GET_INFO q_u;
+ SRV_R_NET_SRV_GET_INFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the net server get info */
+ if (!srv_io_q_net_srv_get_info("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _srv_net_srv_get_info(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if (!srv_io_r_net_srv_get_info("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_srv_net_srv_get_info
+********************************************************************/
+
+static BOOL api_srv_net_srv_set_info(pipes_struct *p)
+{
+ SRV_Q_NET_SRV_SET_INFO q_u;
+ SRV_R_NET_SRV_SET_INFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the net server set info */
+ if (!srv_io_q_net_srv_set_info("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _srv_net_srv_set_info(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if (!srv_io_r_net_srv_set_info("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_srv_net_file_enum
+********************************************************************/
+
+static BOOL api_srv_net_file_enum(pipes_struct *p)
+{
+ SRV_Q_NET_FILE_ENUM q_u;
+ SRV_R_NET_FILE_ENUM r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the net file enum */
+ if (!srv_io_q_net_file_enum("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _srv_net_file_enum(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!srv_io_r_net_file_enum("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ api_srv_net_conn_enum
+********************************************************************/
+
+static BOOL api_srv_net_conn_enum(pipes_struct *p)
+{
+ SRV_Q_NET_CONN_ENUM q_u;
+ SRV_R_NET_CONN_ENUM r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the net server get enum */
+ if (!srv_io_q_net_conn_enum("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _srv_net_conn_enum(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if (!srv_io_r_net_conn_enum("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Enumerate sessions.
+********************************************************************/
+
+static BOOL api_srv_net_sess_enum(pipes_struct *p)
+{
+ SRV_Q_NET_SESS_ENUM q_u;
+ SRV_R_NET_SESS_ENUM r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the net server get enum */
+ if (!srv_io_q_net_sess_enum("", &q_u, data, 0))
+ return False;
+
+ /* construct reply. always indicate success */
+ r_u.status = _srv_net_sess_enum(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if (!srv_io_r_net_sess_enum("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Delete session.
+********************************************************************/
+
+static BOOL api_srv_net_sess_del(pipes_struct *p)
+{
+ SRV_Q_NET_SESS_DEL q_u;
+ SRV_R_NET_SESS_DEL r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the net server get enum */
+ if (!srv_io_q_net_sess_del("", &q_u, data, 0))
+ return False;
+
+ /* construct reply. always indicate success */
+ r_u.status = _srv_net_sess_del(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if (!srv_io_r_net_sess_del("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to enumerate shares.
+********************************************************************/
+
+static BOOL api_srv_net_share_enum_all(pipes_struct *p)
+{
+ SRV_Q_NET_SHARE_ENUM q_u;
+ SRV_R_NET_SHARE_ENUM r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server get enum. */
+ if(!srv_io_q_net_share_enum("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_share_enum_all: Failed to unmarshall SRV_Q_NET_SHARE_ENUM.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_share_enum_all(p, &q_u, &r_u);
+
+ if (!srv_io_r_net_share_enum("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_share_enum_all: Failed to marshall SRV_R_NET_SHARE_ENUM.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to enumerate shares.
+********************************************************************/
+
+static BOOL api_srv_net_share_enum(pipes_struct *p)
+{
+ SRV_Q_NET_SHARE_ENUM q_u;
+ SRV_R_NET_SHARE_ENUM r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server get enum. */
+ if(!srv_io_q_net_share_enum("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_share_enum: Failed to unmarshall SRV_Q_NET_SHARE_ENUM.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_share_enum(p, &q_u, &r_u);
+
+ if (!srv_io_r_net_share_enum("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_share_enum: Failed to marshall SRV_R_NET_SHARE_ENUM.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to return share information.
+********************************************************************/
+
+static BOOL api_srv_net_share_get_info(pipes_struct *p)
+{
+ SRV_Q_NET_SHARE_GET_INFO q_u;
+ SRV_R_NET_SHARE_GET_INFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server get info. */
+ if(!srv_io_q_net_share_get_info("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_share_get_info: Failed to unmarshall SRV_Q_NET_SHARE_GET_INFO.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_share_get_info(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_share_get_info("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_share_get_info: Failed to marshall SRV_R_NET_SHARE_GET_INFO.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to set share information.
+********************************************************************/
+
+static BOOL api_srv_net_share_set_info(pipes_struct *p)
+{
+ SRV_Q_NET_SHARE_SET_INFO q_u;
+ SRV_R_NET_SHARE_SET_INFO r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server set info. */
+ if(!srv_io_q_net_share_set_info("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_share_set_info: Failed to unmarshall SRV_Q_NET_SHARE_SET_INFO.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_share_set_info(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_share_set_info("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_share_set_info: Failed to marshall SRV_R_NET_SHARE_SET_INFO.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to add share information.
+********************************************************************/
+
+static BOOL api_srv_net_share_add(pipes_struct *p)
+{
+ SRV_Q_NET_SHARE_ADD q_u;
+ SRV_R_NET_SHARE_ADD r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server add info. */
+ if(!srv_io_q_net_share_add("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_share_add: Failed to unmarshall SRV_Q_NET_SHARE_ADD.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_share_add(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_share_add("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_share_add: Failed to marshall SRV_R_NET_SHARE_ADD.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to delete share information.
+********************************************************************/
+
+static BOOL api_srv_net_share_del(pipes_struct *p)
+{
+ SRV_Q_NET_SHARE_DEL q_u;
+ SRV_R_NET_SHARE_DEL r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server del info. */
+ if(!srv_io_q_net_share_del("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_share_del: Failed to unmarshall SRV_Q_NET_SHARE_DEL.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_share_del(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_share_del("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_share_del: Failed to marshall SRV_R_NET_SHARE_DEL.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to delete share information.
+********************************************************************/
+
+static BOOL api_srv_net_share_del_sticky(pipes_struct *p)
+{
+ SRV_Q_NET_SHARE_DEL q_u;
+ SRV_R_NET_SHARE_DEL r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server del info. */
+ if(!srv_io_q_net_share_del("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_share_del_sticky: Failed to unmarshall SRV_Q_NET_SHARE_DEL.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_share_del_sticky(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_share_del("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_share_del_sticky: Failed to marshall SRV_R_NET_SHARE_DEL.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ api_srv_net_remote_tod
+********************************************************************/
+
+static BOOL api_srv_net_remote_tod(pipes_struct *p)
+{
+ SRV_Q_NET_REMOTE_TOD q_u;
+ SRV_R_NET_REMOTE_TOD r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* grab the net server get enum */
+ if(!srv_io_q_net_remote_tod("", &q_u, data, 0))
+ return False;
+
+ r_u.status = _srv_net_remote_tod(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!srv_io_r_net_remote_tod("", &r_u, rdata, 0))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ RPC to enumerate disks available on a server e.g. C:, D: ...
+*******************************************************************/
+
+static BOOL api_srv_net_disk_enum(pipes_struct *p)
+{
+ SRV_Q_NET_DISK_ENUM q_u;
+ SRV_R_NET_DISK_ENUM r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server disk enum. */
+ if(!srv_io_q_net_disk_enum("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_disk_enum: Failed to unmarshall SRV_Q_NET_DISK_ENUM.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_disk_enum(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_disk_enum("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_disk_enum: Failed to marshall SRV_R_NET_DISK_ENUM.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ NetValidateName (opnum 0x21)
+*******************************************************************/
+
+static BOOL api_srv_net_name_validate(pipes_struct *p)
+{
+ SRV_Q_NET_NAME_VALIDATE q_u;
+ SRV_R_NET_NAME_VALIDATE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net server disk enum. */
+ if(!srv_io_q_net_name_validate("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_name_validate: Failed to unmarshall SRV_Q_NET_NAME_VALIDATE.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_name_validate(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_name_validate("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_name_validate: Failed to marshall SRV_R_NET_NAME_VALIDATE.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ NetFileQuerySecdesc (opnum 0x27)
+*******************************************************************/
+
+static BOOL api_srv_net_file_query_secdesc(pipes_struct *p)
+{
+ SRV_Q_NET_FILE_QUERY_SECDESC q_u;
+ SRV_R_NET_FILE_QUERY_SECDESC r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net file get info from Win9x */
+ if(!srv_io_q_net_file_query_secdesc("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_file_query_secdesc: Failed to unmarshall SRV_Q_NET_FILE_QUERY_SECDESC.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_file_query_secdesc(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_file_query_secdesc("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_file_query_secdesc: Failed to marshall SRV_R_NET_FILE_QUERY_SECDESC.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+ NetFileSetSecdesc (opnum 0x28)
+*******************************************************************/
+
+static BOOL api_srv_net_file_set_secdesc(pipes_struct *p)
+{
+ SRV_Q_NET_FILE_SET_SECDESC q_u;
+ SRV_R_NET_FILE_SET_SECDESC r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net file set info from Win9x */
+ if(!srv_io_q_net_file_set_secdesc("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_file_set_secdesc: Failed to unmarshall SRV_Q_NET_FILE_SET_SECDESC.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_file_set_secdesc(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_file_set_secdesc("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_file_set_secdesc: Failed to marshall SRV_R_NET_FILE_SET_SECDESC.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+*******************************************************************/
+
+static BOOL api_srv_net_file_close(pipes_struct *p)
+{
+ SRV_Q_NET_FILE_CLOSE q_u;
+ SRV_R_NET_FILE_CLOSE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ /* Unmarshall the net file set info from Win9x */
+ if(!srv_io_q_net_file_close("", &q_u, data, 0)) {
+ DEBUG(0,("api_srv_net_file_close: Failed to unmarshall SRV_Q_NET_FILE_SET_SECDESC.\n"));
+ return False;
+ }
+
+ r_u.status = _srv_net_file_close(p, &q_u, &r_u);
+
+ if(!srv_io_r_net_file_close("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_srv_net_file_close: Failed to marshall SRV_R_NET_FILE_SET_SECDESC.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*******************************************************************
+\PIPE\srvsvc commands
+********************************************************************/
+
+static struct api_struct api_srv_cmds[] =
+{
+ { "SRV_NET_CONN_ENUM" , SRV_NET_CONN_ENUM , api_srv_net_conn_enum },
+ { "SRV_NET_SESS_ENUM" , SRV_NET_SESS_ENUM , api_srv_net_sess_enum },
+ { "SRV_NET_SESS_DEL" , SRV_NET_SESS_DEL , api_srv_net_sess_del },
+ { "SRV_NET_SHARE_ENUM_ALL" , SRV_NET_SHARE_ENUM_ALL , api_srv_net_share_enum_all },
+ { "SRV_NET_SHARE_ENUM" , SRV_NET_SHARE_ENUM , api_srv_net_share_enum },
+ { "SRV_NET_SHARE_ADD" , SRV_NET_SHARE_ADD , api_srv_net_share_add },
+ { "SRV_NET_SHARE_DEL" , SRV_NET_SHARE_DEL , api_srv_net_share_del },
+ { "SRV_NET_SHARE_DEL_STICKY" , SRV_NET_SHARE_DEL_STICKY , api_srv_net_share_del_sticky },
+ { "SRV_NET_SHARE_GET_INFO" , SRV_NET_SHARE_GET_INFO , api_srv_net_share_get_info },
+ { "SRV_NET_SHARE_SET_INFO" , SRV_NET_SHARE_SET_INFO , api_srv_net_share_set_info },
+ { "SRV_NET_FILE_ENUM" , SRV_NET_FILE_ENUM , api_srv_net_file_enum },
+ { "SRV_NET_SRV_GET_INFO" , SRV_NET_SRV_GET_INFO , api_srv_net_srv_get_info },
+ { "SRV_NET_SRV_SET_INFO" , SRV_NET_SRV_SET_INFO , api_srv_net_srv_set_info },
+ { "SRV_NET_REMOTE_TOD" , SRV_NET_REMOTE_TOD , api_srv_net_remote_tod },
+ { "SRV_NET_DISK_ENUM" , SRV_NET_DISK_ENUM , api_srv_net_disk_enum },
+ { "SRV_NET_NAME_VALIDATE" , SRV_NET_NAME_VALIDATE , api_srv_net_name_validate },
+ { "SRV_NET_FILE_QUERY_SECDESC", SRV_NET_FILE_QUERY_SECDESC, api_srv_net_file_query_secdesc },
+ { "SRV_NET_FILE_SET_SECDESC" , SRV_NET_FILE_SET_SECDESC , api_srv_net_file_set_secdesc },
+ { "SRV_NET_FILE_CLOSE" , SRV_NET_FILE_CLOSE , api_srv_net_file_close }
+};
+
+void srvsvc_get_pipe_fns( struct api_struct **fns, int *n_fns )
+{
+ *fns = api_srv_cmds;
+ *n_fns = sizeof(api_srv_cmds) / sizeof(struct api_struct);
+}
+
+
+NTSTATUS rpc_srv_init(void)
+{
+ return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "srvsvc", "ntsvcs", api_srv_cmds,
+ sizeof(api_srv_cmds) / sizeof(struct api_struct));
+}
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index 1d370d3847b..d03ab66b50d 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -5,7 +5,6 @@
* Copyright (C) Jeremy Allison 2001.
* Copyright (C) Nigel Williams 2001.
* Copyright (C) Gerald (Jerry) Carter 2006.
- * Copyright (C) Jelmer Vernooij 2006.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,10 +25,7 @@
#include "includes.h"
-#define MAX_SERVER_DISK_ENTRIES 15
-
extern struct generic_mapping file_generic_mapping;
-extern userdom_struct current_user_info;
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_SRV
@@ -38,12 +34,12 @@ extern userdom_struct current_user_info;
struct file_enum_count {
TALLOC_CTX *ctx;
- uint32 count;
- struct srvsvc_NetFileInfo3 *info;
+ int count;
+ FILE_INFO_3 *info;
};
struct sess_file_count {
- struct server_id pid;
+ pid_t pid;
uid_t uid;
int count;
};
@@ -52,44 +48,37 @@ struct sess_file_count {
Count the entries belonging to a service in the connection db.
****************************************************************************/
-static int pipe_enum_fn( struct db_record *rec, void *p)
+static int pipe_enum_fn( TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *p)
{
struct pipe_open_rec prec;
struct file_enum_count *fenum = (struct file_enum_count *)p;
- if (rec->value.dsize != sizeof(struct pipe_open_rec))
+ if (dbuf.dsize != sizeof(struct pipe_open_rec))
return 0;
- memcpy(&prec, rec->value.dptr, sizeof(struct pipe_open_rec));
+ memcpy(&prec, dbuf.dptr, sizeof(struct pipe_open_rec));
if ( process_exists(prec.pid) ) {
- struct srvsvc_NetFileInfo3 *f;
+ FILE_INFO_3 *f;
int i = fenum->count;
pstring fullpath;
snprintf( fullpath, sizeof(fullpath), "\\PIPE\\%s", prec.name );
- f = TALLOC_REALLOC_ARRAY( fenum->ctx, fenum->info, struct srvsvc_NetFileInfo3, i+1 );
+ f = TALLOC_REALLOC_ARRAY( fenum->ctx, fenum->info, FILE_INFO_3, i+1 );
if ( !f ) {
DEBUG(0,("conn_enum_fn: realloc failed for %d items\n", i+1));
return 1;
}
-
fenum->info = f;
- fenum->info[i].fid = (uint32)((procid_to_pid(&prec.pid)<<16) & prec.pnum);
- fenum->info[i].permissions = (FILE_READ_DATA|FILE_WRITE_DATA);
- fenum->info[i].num_locks = 0;
- if (!(fenum->info[i].user = talloc_strdup(
- fenum->ctx, uidtoname(prec.uid)))) {
- /* There's not much we can do here. */
- fenum->info[i].user = "";
- }
- if (!(fenum->info[i].path = talloc_strdup(
- fenum->ctx, fullpath))) {
- /* There's not much we can do here. */
- fenum->info[i].path = "";
- }
+
+ init_srv_file_info3( &fenum->info[i],
+ (uint32)((procid_to_pid(&prec.pid)<<16) & prec.pnum),
+ (FILE_READ_DATA|FILE_WRITE_DATA),
+ 0,
+ uidtoname( prec.uid ),
+ fullpath );
fenum->count++;
}
@@ -100,41 +89,47 @@ static int pipe_enum_fn( struct db_record *rec, void *p)
/*******************************************************************
********************************************************************/
-static WERROR net_enum_pipes( TALLOC_CTX *ctx, struct srvsvc_NetFileInfo3 **info,
- uint32 *count, uint32 *resume )
+static WERROR net_enum_pipes( TALLOC_CTX *ctx, FILE_INFO_3 **info,
+ uint32 *count, uint32 resume )
{
struct file_enum_count fenum;
+ TDB_CONTEXT *conn_tdb = conn_tdb_ctx();
+ if ( !conn_tdb ) {
+ DEBUG(0,("net_enum_pipes: Failed to retrieve the connections tdb handle!\n"));
+ return WERR_ACCESS_DENIED;
+ }
+
fenum.ctx = ctx;
- fenum.info = *info;
fenum.count = *count;
+ fenum.info = *info;
- if (connections_traverse(pipe_enum_fn, &fenum) == -1) {
- DEBUG(0,("net_enum_pipes: traverse of connections.tdb "
- "failed\n"));
+ if (tdb_traverse(conn_tdb, pipe_enum_fn, &fenum) == -1) {
+ DEBUG(0,("net_enum_pipes: traverse of connections.tdb failed with error %s.\n",
+ tdb_errorstr(conn_tdb) ));
return WERR_NOMEM;
}
*info = fenum.info;
*count = fenum.count;
- return WERR_OK;
-}
+ return WERR_OK;}
/*******************************************************************
********************************************************************/
+/* global needed to make use of the share_mode_forall() callback */
+static struct file_enum_count f_enum_cnt;
+
static void enum_file_fn( const struct share_mode_entry *e,
- const char *sharepath, const char *fname,
- void *private_data )
+ const char *sharepath, const char *fname, void *state )
{
- struct file_enum_count *fenum =
- (struct file_enum_count *)&private_data;
+ struct file_enum_count *fenum = &f_enum_cnt;
/* If the pid was not found delete the entry from connections.tdb */
if ( process_exists(e->pid) ) {
- struct srvsvc_NetFileInfo3 *f;
+ FILE_INFO_3 *f;
int i = fenum->count;
files_struct fsp;
struct byte_range_lock *brl;
@@ -142,7 +137,7 @@ static void enum_file_fn( const struct share_mode_entry *e,
pstring fullpath;
uint32 permissions;
- f = TALLOC_REALLOC_ARRAY( fenum->ctx, fenum->info, struct srvsvc_NetFileInfo3, i+1 );
+ f = TALLOC_REALLOC_ARRAY( fenum->ctx, fenum->info, FILE_INFO_3, i+1 );
if ( !f ) {
DEBUG(0,("conn_enum_fn: realloc failed for %d items\n", i+1));
return;
@@ -152,9 +147,10 @@ static void enum_file_fn( const struct share_mode_entry *e,
/* need to count the number of locks on a file */
ZERO_STRUCT( fsp );
- fsp.file_id = e->id;
+ fsp.dev = e->dev;
+ fsp.inode = e->inode;
- if ( (brl = brl_get_locks_readonly(NULL,&fsp)) != NULL ) {
+ if ( (brl = brl_get_locks(NULL,&fsp)) != NULL ) {
num_locks = brl->num_locks;
TALLOC_FREE( brl );
}
@@ -169,19 +165,13 @@ static void enum_file_fn( const struct share_mode_entry *e,
/* mask out create (what ever that is) */
permissions = e->share_access & (FILE_READ_DATA|FILE_WRITE_DATA);
- fenum->info[i].fid = e->share_file_id;
- fenum->info[i].permissions = permissions;
- fenum->info[i].num_locks = num_locks;
- if (!(fenum->info[i].user = talloc_strdup(
- fenum->ctx, uidtoname(e->uid)))) {
- /* There's not much we can do here. */
- fenum->info[i].user = "";
- }
- if (!(fenum->info[i].path = talloc_strdup(
- fenum->ctx, fullpath))) {
- /* There's not much we can do here. */
- fenum->info[i].path = "";
- }
+ /* now fill in the FILE_INFO_3 struct */
+ init_srv_file_info3( &fenum->info[i],
+ e->share_file_id,
+ permissions,
+ num_locks,
+ uidtoname(e->uid),
+ fullpath );
fenum->count++;
}
@@ -193,16 +183,14 @@ static void enum_file_fn( const struct share_mode_entry *e,
/*******************************************************************
********************************************************************/
-static WERROR net_enum_files( TALLOC_CTX *ctx, struct srvsvc_NetFileInfo3 **info,
- uint32 *count, uint32 *resume )
+static WERROR net_enum_files( TALLOC_CTX *ctx, FILE_INFO_3 **info,
+ uint32 *count, uint32 resume )
{
- struct file_enum_count f_enum_cnt;
-
f_enum_cnt.ctx = ctx;
f_enum_cnt.count = *count;
f_enum_cnt.info = *info;
- share_mode_forall( enum_file_fn, (void *)&f_enum_cnt );
+ share_mode_forall( enum_file_fn, NULL );
*info = f_enum_cnt.info;
*count = f_enum_cnt.count;
@@ -211,19 +199,19 @@ static WERROR net_enum_files( TALLOC_CTX *ctx, struct srvsvc_NetFileInfo3 **info
}
/*******************************************************************
- Utility function to get the 'type' of a share from a share definition.
+ Utility function to get the 'type' of a share from an snum.
********************************************************************/
-static uint32 get_share_type(const struct share_params *params)
+static uint32 get_share_type(int snum)
{
- char *net_name = lp_servicename(params->service);
+ char *net_name = lp_servicename(snum);
int len_net_name = strlen(net_name);
/* work out the share type */
uint32 type = STYPE_DISKTREE;
- if (lp_print_ok(params->service))
+ if (lp_print_ok(snum))
type = STYPE_PRINTQ;
- if (strequal(lp_fstype(params->service), "IPC"))
+ if (strequal(lp_fstype(snum), "IPC"))
type = STYPE_IPC;
if (net_name[len_net_name-1] == '$')
type |= STYPE_HIDDEN;
@@ -235,70 +223,65 @@ static uint32 get_share_type(const struct share_params *params)
Fill in a share info level 0 structure.
********************************************************************/
-static void init_srv_share_info_0(pipes_struct *p, struct srvsvc_NetShareInfo0 *sh0,
- const struct share_params *params)
+static void init_srv_share_info_0(pipes_struct *p, SRV_SHARE_INFO_0 *sh0, int snum)
{
- sh0->name = lp_servicename(params->service);
+ pstring net_name;
+
+ pstrcpy(net_name, lp_servicename(snum));
+
+ init_srv_share_info0(&sh0->info_0, net_name);
+ init_srv_share_info0_str(&sh0->info_0_str, net_name);
}
/*******************************************************************
Fill in a share info level 1 structure.
********************************************************************/
-static void init_srv_share_info_1(pipes_struct *p, struct srvsvc_NetShareInfo1 *sh1,
- const struct share_params *params)
+static void init_srv_share_info_1(pipes_struct *p, SRV_SHARE_INFO_1 *sh1, int snum)
{
- connection_struct *conn = p->conn;
+ pstring remark;
- sh1->comment = talloc_sub_advanced(p->mem_ctx, lp_servicename(SNUM(conn)),
- conn->user, conn->connectpath, conn->gid,
- get_current_username(),
- current_user_info.domain,
- lp_comment(params->service));
+ char *net_name = lp_servicename(snum);
+ pstrcpy(remark, lp_comment(snum));
+ standard_sub_conn(p->conn, remark,sizeof(remark));
- sh1->name = lp_servicename(params->service);
- sh1->type = get_share_type(params);
+ init_srv_share_info1(&sh1->info_1, net_name, get_share_type(snum), remark);
+ init_srv_share_info1_str(&sh1->info_1_str, net_name, remark);
}
/*******************************************************************
Fill in a share info level 2 structure.
********************************************************************/
-static void init_srv_share_info_2(pipes_struct *p, struct srvsvc_NetShareInfo2 *sh2,
- const struct share_params *params)
+static void init_srv_share_info_2(pipes_struct *p, SRV_SHARE_INFO_2 *sh2, int snum)
{
- connection_struct *conn = p->conn;
- char *remark;
- char *path;
- int max_connections = lp_max_connections(params->service);
+ pstring remark;
+ pstring path;
+ pstring passwd;
+ int max_connections = lp_max_connections(snum);
uint32 max_uses = max_connections!=0 ? max_connections : 0xffffffff;
int count = 0;
- char *net_name = lp_servicename(params->service);
+ char *net_name = lp_servicename(snum);
- remark = talloc_sub_advanced(p->mem_ctx, lp_servicename(SNUM(conn)),
- conn->user, conn->connectpath, conn->gid,
- get_current_username(),
- current_user_info.domain,
- lp_comment(params->service));
- path = talloc_asprintf(p->mem_ctx, "C:%s",
- lp_pathname(params->service));
+ pstrcpy(remark, lp_comment(snum));
+ standard_sub_conn(p->conn, remark,sizeof(remark));
+ pstrcpy(path, "C:");
+ pstrcat(path, lp_pathname(snum));
/*
- * Change / to \\ so that win2k will see it as a valid path. This was
- * added to enable use of browsing in win2k add share dialog.
+ * Change / to \\ so that win2k will see it as a valid path. This was added to
+ * enable use of browsing in win2k add share dialog.
*/
string_replace(path, '/', '\\');
+ pstrcpy(passwd, "");
+
count = count_current_connections( net_name, False );
- sh2->name = net_name;
- sh2->type = get_share_type(params);
- sh2->comment = remark;
- sh2->permissions = 0;
- sh2->max_users = max_uses;
- sh2->current_users = count;
- sh2->path = path;
- sh2->password = "";
+ init_srv_share_info2(&sh2->info_2, net_name, get_share_type(snum),
+ remark, 0, max_uses, count, path, passwd);
+
+ init_srv_share_info2_str(&sh2->info_2_str, net_name, remark, path, passwd);
}
/*******************************************************************
@@ -330,40 +313,28 @@ static void map_generic_share_sd_bits(SEC_DESC *psd)
Fill in a share info level 501 structure.
********************************************************************/
-static void init_srv_share_info_501(pipes_struct *p, struct srvsvc_NetShareInfo501 *sh501,
- const struct share_params *params)
+static void init_srv_share_info_501(pipes_struct *p, SRV_SHARE_INFO_501 *sh501, int snum)
{
- connection_struct *conn = p->conn;
- char *remark;
- const char *net_name = lp_servicename(params->service);
+ pstring remark;
- remark = talloc_sub_advanced(p->mem_ctx, lp_servicename(SNUM(conn)),
- conn->user, conn->connectpath, conn->gid,
- get_current_username(),
- current_user_info.domain,
- lp_comment(params->service));
+ const char *net_name = lp_servicename(snum);
+ pstrcpy(remark, lp_comment(snum));
+ standard_sub_conn(p->conn, remark, sizeof(remark));
-
- sh501->name = net_name;
- sh501->type = get_share_type(params);
- sh501->comment = remark;
- sh501->csc_policy = (lp_csc_policy(params->service) << 4);
+ init_srv_share_info501(&sh501->info_501, net_name, get_share_type(snum), remark, (lp_csc_policy(snum) << 4));
+ init_srv_share_info501_str(&sh501->info_501_str, net_name, remark);
}
/*******************************************************************
Fill in a share info level 502 structure.
********************************************************************/
-static void init_srv_share_info_502(pipes_struct *p, struct srvsvc_NetShareInfo502 *sh502,
- const struct share_params *params)
+static void init_srv_share_info_502(pipes_struct *p, SRV_SHARE_INFO_502 *sh502, int snum)
{
- int max_connections = lp_max_connections(params->service);
- uint32 max_uses = max_connections!=0 ? max_connections : 0xffffffff;
- connection_struct *conn = p->conn;
- int count;
- char *net_name;
- char *remark;
- char *path;
+ pstring net_name;
+ pstring remark;
+ pstring path;
+ pstring passwd;
SEC_DESC *sd;
size_t sd_size;
TALLOC_CTX *ctx = p->mem_ctx;
@@ -371,112 +342,87 @@ static void init_srv_share_info_502(pipes_struct *p, struct srvsvc_NetShareInfo5
ZERO_STRUCTP(sh502);
- net_name = lp_servicename(params->service);
- count = count_current_connections( net_name, False );
-
- remark = talloc_sub_advanced(p->mem_ctx, lp_servicename(SNUM(conn)),
- conn->user, conn->connectpath, conn->gid,
- get_current_username(),
- current_user_info.domain,
- lp_comment(params->service));
-
- path = talloc_asprintf(p->mem_ctx, "C:%s",
- lp_pathname(params->service));
+ pstrcpy(net_name, lp_servicename(snum));
+ pstrcpy(remark, lp_comment(snum));
+ standard_sub_conn(p->conn, remark,sizeof(remark));
+ pstrcpy(path, "C:");
+ pstrcat(path, lp_pathname(snum));
/*
- * Change / to \\ so that win2k will see it as a valid path. This was
- * added to enable use of browsing in win2k add share dialog.
+ * Change / to \\ so that win2k will see it as a valid path. This was added to
+ * enable use of browsing in win2k add share dialog.
*/
string_replace(path, '/', '\\');
- sd = get_share_security(ctx, lp_servicename(params->service),
- &sd_size);
-
- sh502->name = net_name;
- sh502->type = get_share_type(params);
- sh502->comment = remark;
- sh502->path = path;
- sh502->password = "";
- sh502->sd = sd;
- sh502->permissions = 0;
- sh502->max_users = max_uses;
- sh502->current_users = count;
- sh502->unknown = 1;
+ pstrcpy(passwd, "");
+
+ sd = get_share_security(ctx, lp_servicename(snum), &sd_size);
+
+ init_srv_share_info502(&sh502->info_502, net_name, get_share_type(snum), remark, 0, 0xffffffff, 1, path, passwd, sd, sd_size);
+ init_srv_share_info502_str(&sh502->info_502_str, net_name, remark, path, passwd, sd, sd_size);
}
/***************************************************************************
Fill in a share info level 1004 structure.
***************************************************************************/
-static void init_srv_share_info_1004(pipes_struct *p,
- struct srvsvc_NetShareInfo1004* sh1004,
- const struct share_params *params)
+static void init_srv_share_info_1004(pipes_struct *p, SRV_SHARE_INFO_1004* sh1004, int snum)
{
- connection_struct *conn = p->conn;
- char *remark;
+ pstring remark;
- remark = talloc_sub_advanced(p->mem_ctx, lp_servicename(SNUM(conn)),
- conn->user, conn->connectpath, conn->gid,
- get_current_username(),
- current_user_info.domain,
- lp_comment(params->service));
+ pstrcpy(remark, lp_comment(snum));
+ standard_sub_conn(p->conn, remark, sizeof(remark));
ZERO_STRUCTP(sh1004);
-
- sh1004->comment = remark;
+
+ init_srv_share_info1004(&sh1004->info_1004, remark);
+ init_srv_share_info1004_str(&sh1004->info_1004_str, remark);
}
/***************************************************************************
Fill in a share info level 1005 structure.
***************************************************************************/
-static void init_srv_share_info_1005(pipes_struct *p,
- struct srvsvc_NetShareInfo1005* sh1005,
- const struct share_params *params)
+static void init_srv_share_info_1005(pipes_struct *p, SRV_SHARE_INFO_1005* sh1005, int snum)
{
- sh1005->dfs_flags = 0;
+ sh1005->share_info_flags = 0;
- if(lp_host_msdfs() && lp_msdfs_root(params->service))
- sh1005->dfs_flags |=
+ if(lp_host_msdfs() && lp_msdfs_root(snum))
+ sh1005->share_info_flags |=
SHARE_1005_IN_DFS | SHARE_1005_DFS_ROOT;
- sh1005->dfs_flags |=
- lp_csc_policy(params->service) << SHARE_1005_CSC_POLICY_SHIFT;
+ sh1005->share_info_flags |=
+ lp_csc_policy(snum) << SHARE_1005_CSC_POLICY_SHIFT;
}
/***************************************************************************
Fill in a share info level 1006 structure.
***************************************************************************/
-static void init_srv_share_info_1006(pipes_struct *p,
- struct srvsvc_NetShareInfo1006* sh1006,
- const struct share_params *params)
+static void init_srv_share_info_1006(pipes_struct *p, SRV_SHARE_INFO_1006* sh1006, int snum)
{
- sh1006->max_users = -1;
+ sh1006->max_uses = -1;
}
/***************************************************************************
Fill in a share info level 1007 structure.
***************************************************************************/
-static void init_srv_share_info_1007(pipes_struct *p,
- struct srvsvc_NetShareInfo1007* sh1007,
- const struct share_params *params)
+static void init_srv_share_info_1007(pipes_struct *p, SRV_SHARE_INFO_1007* sh1007, int snum)
{
+ pstring alternate_directory_name = "";
uint32 flags = 0;
ZERO_STRUCTP(sh1007);
- sh1007->flags = flags;
- sh1007->alternate_directory_name = "";
+ init_srv_share_info1007(&sh1007->info_1007, flags, alternate_directory_name);
+ init_srv_share_info1007_str(&sh1007->info_1007_str, alternate_directory_name);
}
/*******************************************************************
Fill in a share info level 1501 structure.
********************************************************************/
-static void init_srv_share_info_1501(pipes_struct *p,
- struct sec_desc_buf *sh1501,
- const struct share_params *params)
+static void init_srv_share_info_1501(pipes_struct *p, SRV_SHARE_INFO_1501 *sh1501, int snum)
{
SEC_DESC *sd;
size_t sd_size;
@@ -484,326 +430,398 @@ static void init_srv_share_info_1501(pipes_struct *p,
ZERO_STRUCTP(sh1501);
- sd = get_share_security(ctx, lp_servicename(params->service),
- &sd_size);
+ sd = get_share_security(ctx, lp_servicename(snum), &sd_size);
- sh1501->sd = sd;
+ sh1501->sdb = make_sec_desc_buf(p->mem_ctx, sd_size, sd);
}
/*******************************************************************
True if it ends in '$'.
********************************************************************/
-static BOOL is_hidden_share(const struct share_params *params)
+static BOOL is_hidden_share(int snum)
{
- const char *net_name = lp_servicename(params->service);
+ const char *net_name = lp_servicename(snum);
- return (net_name[strlen(net_name) - 1] == '$');
+ return (net_name[strlen(net_name) - 1] == '$') ? True : False;
}
/*******************************************************************
Fill in a share info structure.
********************************************************************/
-static WERROR init_srv_share_info_ctr(pipes_struct *p,
- union srvsvc_NetShareCtr *ctr,
- uint32 info_level, uint32 *resume_hnd,
- uint32 *total_entries, BOOL all_shares)
+static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
+ uint32 info_level, uint32 *resume_hnd, uint32 *total_entries, BOOL all_shares)
{
+ int num_entries = 0;
+ int num_services = 0;
+ int snum;
TALLOC_CTX *ctx = p->mem_ctx;
- struct share_iterator *shares;
- struct share_params *share;
- WERROR result = WERR_NOMEM;
DEBUG(5,("init_srv_share_info_ctr\n"));
- ZERO_STRUCTP(ctr);
+ ZERO_STRUCTPN(ctr);
- if (resume_hnd) {
- *resume_hnd = 0;
- }
+ ctr->info_level = ctr->switch_value = info_level;
+ *resume_hnd = 0;
/* Ensure all the usershares are loaded. */
become_root();
- load_usershare_shares();
- load_registry_shares();
+ num_services = load_usershare_shares();
unbecome_root();
- *total_entries = 0;
-
- if (!(shares = share_list_all(ctx))) {
- DEBUG(5, ("Could not list shares\n"));
- return WERR_ACCESS_DENIED;
+ /* Count the number of entries. */
+ for (snum = 0; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) )
+ num_entries++;
}
+ *total_entries = num_entries;
+ ctr->num_entries2 = ctr->num_entries = num_entries;
+ ctr->ptr_share_info = ctr->ptr_entries = 1;
+
+ if (!num_entries)
+ return True;
+
switch (info_level) {
case 0:
- if (!(ctr->ctr0 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr0))) {
- goto done;
+ {
+ SRV_SHARE_INFO_0 *info0 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_0, num_entries);
+ int i = 0;
+
+ if (!info0) {
+ return False;
+ }
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_0(p, &info0[i++], snum);
+ }
}
+
+ ctr->share.info0 = info0;
break;
+
+ }
+
case 1:
- if (!(ctr->ctr1 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr1))) {
- goto done;
+ {
+ SRV_SHARE_INFO_1 *info1 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1, num_entries);
+ int i = 0;
+
+ if (!info1) {
+ return False;
+ }
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_1(p, &info1[i++], snum);
+ }
}
+
+ ctr->share.info1 = info1;
break;
+ }
+
case 2:
- if (!(ctr->ctr2 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr2))) {
- goto done;
+ {
+ SRV_SHARE_INFO_2 *info2 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_2, num_entries);
+ int i = 0;
+
+ if (!info2) {
+ return False;
}
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_2(p, &info2[i++], snum);
+ }
+ }
+
+ ctr->share.info2 = info2;
break;
+ }
+
case 501:
- if (!(ctr->ctr501 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr501))) {
- goto done;
+ {
+ SRV_SHARE_INFO_501 *info501 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_501, num_entries);
+ int i = 0;
+
+ if (!info501) {
+ return False;
}
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_501(p, &info501[i++], snum);
+ }
+ }
+
+ ctr->share.info501 = info501;
break;
+ }
+
case 502:
- if (!(ctr->ctr502 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr502))) {
- goto done;
+ {
+ SRV_SHARE_INFO_502 *info502 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_502, num_entries);
+ int i = 0;
+
+ if (!info502) {
+ return False;
+ }
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_502(p, &info502[i++], snum);
+ }
}
+
+ ctr->share.info502 = info502;
break;
+ }
+
+ /* here for completeness but not currently used with enum (1004 - 1501)*/
+
case 1004:
- if (!(ctr->ctr1004 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr1004))) {
- goto done;
+ {
+ SRV_SHARE_INFO_1004 *info1004 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1004, num_entries);
+ int i = 0;
+
+ if (!info1004) {
+ return False;
}
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_1004(p, &info1004[i++], snum);
+ }
+ }
+
+ ctr->share.info1004 = info1004;
break;
+ }
+
case 1005:
- if (!(ctr->ctr1005 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr1005))) {
- goto done;
+ {
+ SRV_SHARE_INFO_1005 *info1005 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1005, num_entries);
+ int i = 0;
+
+ if (!info1005) {
+ return False;
+ }
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_1005(p, &info1005[i++], snum);
+ }
}
+
+ ctr->share.info1005 = info1005;
break;
+ }
+
case 1006:
- if (!(ctr->ctr1006 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr1006))) {
- goto done;
+ {
+ SRV_SHARE_INFO_1006 *info1006 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1006, num_entries);
+ int i = 0;
+
+ if (!info1006) {
+ return False;
+ }
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_1006(p, &info1006[i++], snum);
+ }
}
+
+ ctr->share.info1006 = info1006;
break;
+ }
+
case 1007:
- if (!(ctr->ctr1007 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr1007))) {
- goto done;
+ {
+ SRV_SHARE_INFO_1007 *info1007 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1007, num_entries);
+ int i = 0;
+
+ if (!info1007) {
+ return False;
}
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_1007(p, &info1007[i++], snum);
+ }
+ }
+
+ ctr->share.info1007 = info1007;
break;
+ }
+
case 1501:
- if (!(ctr->ctr1501 = TALLOC_ZERO_P(
- p->mem_ctx, struct srvsvc_NetShareCtr1501))) {
- goto done;
+ {
+ SRV_SHARE_INFO_1501 *info1501 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1501, num_entries);
+ int i = 0;
+
+ if (!info1501) {
+ return False;
}
+
+ for (snum = *resume_hnd; snum < num_services; snum++) {
+ if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
+ init_srv_share_info_1501(p, &info1501[i++], snum);
+ }
+ }
+
+ ctr->share.info1501 = info1501;
break;
+ }
default:
- DEBUG(5,("init_srv_share_info_ctr: unsupported switch "
- "value %d\n", info_level));
- return WERR_UNKNOWN_LEVEL;
+ DEBUG(5,("init_srv_share_info_ctr: unsupported switch value %d\n", info_level));
+ return False;
}
- while ((share = next_share(shares)) != NULL) {
- if (!lp_browseable(share->service)) {
- continue;
- }
- if (!all_shares && is_hidden_share(share)) {
- continue;
- }
+ return True;
+}
+
+/*******************************************************************
+ Inits a SRV_R_NET_SHARE_ENUM structure.
+********************************************************************/
+
+static void init_srv_r_net_share_enum(pipes_struct *p, SRV_R_NET_SHARE_ENUM *r_n,
+ uint32 info_level, uint32 resume_hnd, BOOL all)
+{
+ DEBUG(5,("init_srv_r_net_share_enum: %d\n", __LINE__));
+
+ if (init_srv_share_info_ctr(p, &r_n->ctr, info_level,
+ &resume_hnd, &r_n->total_entries, all)) {
+ r_n->status = WERR_OK;
+ } else {
+ r_n->status = WERR_UNKNOWN_LEVEL;
+ }
+ init_enum_hnd(&r_n->enum_hnd, resume_hnd);
+}
+
+/*******************************************************************
+ Inits a SRV_R_NET_SHARE_GET_INFO structure.
+********************************************************************/
+
+static void init_srv_r_net_share_get_info(pipes_struct *p, SRV_R_NET_SHARE_GET_INFO *r_n,
+ char *share_name, uint32 info_level)
+{
+ WERROR status = WERR_OK;
+ int snum;
+
+ DEBUG(5,("init_srv_r_net_share_get_info: %d\n", __LINE__));
+
+ r_n->info.switch_value = info_level;
+
+ snum = find_service(share_name);
+
+ if (snum >= 0) {
switch (info_level) {
case 0:
- {
- struct srvsvc_NetShareInfo0 i;
- init_srv_share_info_0(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo0, i,
- &ctr->ctr0->array, &ctr->ctr0->count);
- if (ctr->ctr0->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr0->count;
+ init_srv_share_info_0(p, &r_n->info.share.info0, snum);
break;
- }
-
case 1:
- {
- struct srvsvc_NetShareInfo1 i;
- init_srv_share_info_1(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo1, i,
- &ctr->ctr1->array, &ctr->ctr1->count);
- if (ctr->ctr1->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr1->count;
+ init_srv_share_info_1(p, &r_n->info.share.info1, snum);
break;
- }
-
case 2:
- {
- struct srvsvc_NetShareInfo2 i;
- init_srv_share_info_2(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo2, i,
- &ctr->ctr2->array, &ctr->ctr2->count);
- if (ctr->ctr2->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr2->count;
+ init_srv_share_info_2(p, &r_n->info.share.info2, snum);
break;
- }
-
case 501:
- {
- struct srvsvc_NetShareInfo501 i;
- init_srv_share_info_501(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo501, i,
- &ctr->ctr501->array, &ctr->ctr501->count);
- if (ctr->ctr501->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr501->count;
+ init_srv_share_info_501(p, &r_n->info.share.info501, snum);
break;
- }
-
case 502:
- {
- struct srvsvc_NetShareInfo502 i;
- init_srv_share_info_502(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo502, i,
- &ctr->ctr502->array, &ctr->ctr502->count);
- if (ctr->ctr502->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr502->count;
+ init_srv_share_info_502(p, &r_n->info.share.info502, snum);
break;
- }
- /* here for completeness but not currently used with enum
- * (1004 - 1501)*/
-
+ /* here for completeness */
case 1004:
- {
- struct srvsvc_NetShareInfo1004 i;
- init_srv_share_info_1004(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo1004, i,
- &ctr->ctr1004->array, &ctr->ctr1004->count);
- if (ctr->ctr1004->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr1004->count;
+ init_srv_share_info_1004(p, &r_n->info.share.info1004, snum);
break;
- }
-
case 1005:
- {
- struct srvsvc_NetShareInfo1005 i;
- init_srv_share_info_1005(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo1005, i,
- &ctr->ctr1005->array, &ctr->ctr1005->count);
- if (ctr->ctr1005->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr1005->count;
+ init_srv_share_info_1005(p, &r_n->info.share.info1005, snum);
break;
- }
+ /* here for completeness 1006 - 1501 */
case 1006:
- {
- struct srvsvc_NetShareInfo1006 i;
- init_srv_share_info_1006(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo1006, i,
- &ctr->ctr1006->array, &ctr->ctr1006->count);
- if (ctr->ctr1006->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr1006->count;
+ init_srv_share_info_1006(p, &r_n->info.share.info1006, snum);
break;
- }
-
case 1007:
- {
- struct srvsvc_NetShareInfo1007 i;
- init_srv_share_info_1007(p, &i, share);
- ADD_TO_ARRAY(ctx, struct srvsvc_NetShareInfo1007, i,
- &ctr->ctr1007->array, &ctr->ctr1007->count);
- if (ctr->ctr1007->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr1007->count;
+ init_srv_share_info_1007(p, &r_n->info.share.info1007, snum);
break;
- }
-
case 1501:
- {
- struct sec_desc_buf i;
- init_srv_share_info_1501(p, &i, share);
- ADD_TO_ARRAY(ctx, struct sec_desc_buf, i,
- &ctr->ctr1501->array, &ctr->ctr1501->count);
- if (ctr->ctr1501->array == NULL) {
- return WERR_NOMEM;
- }
- *total_entries = ctr->ctr1501->count;
+ init_srv_share_info_1501(p, &r_n->info.share.info1501, snum);
+ break;
+ default:
+ DEBUG(5,("init_srv_net_share_get_info: unsupported switch value %d\n", info_level));
+ status = WERR_UNKNOWN_LEVEL;
break;
}
- }
-
- TALLOC_FREE(share);
+ } else {
+ status = WERR_INVALID_NAME;
}
- result = WERR_OK;
- done:
- TALLOC_FREE(shares);
- return result;
+ r_n->info.ptr_share_ctr = W_ERROR_IS_OK(status) ? 1 : 0;
+ r_n->status = status;
}
/*******************************************************************
fill in a sess info level 0 structure.
********************************************************************/
-static void init_srv_sess_info_0(pipes_struct *p, struct srvsvc_NetSessCtr0 *ss0, uint32 *snum, uint32 *stot)
+static void init_srv_sess_info_0(SRV_SESS_INFO_0 *ss0, uint32 *snum, uint32 *stot)
{
struct sessionid *session_list;
uint32 num_entries = 0;
- (*stot) = list_sessions(p->mem_ctx, &session_list);
+ (*stot) = list_sessions(&session_list);
if (ss0 == NULL) {
if (snum) {
(*snum) = 0;
}
+ SAFE_FREE(session_list);
return;
}
DEBUG(5,("init_srv_sess_0_ss0\n"));
- ss0->array = TALLOC_ARRAY(p->mem_ctx, struct srvsvc_NetSessInfo0, *stot);
-
if (snum) {
- for (; (*snum) < (*stot); (*snum)++) {
- ss0->array[num_entries].client = session_list[(*snum)].remote_machine;
+ for (; (*snum) < (*stot) && num_entries < MAX_SESS_ENTRIES; (*snum)++) {
+ init_srv_sess_info0( &ss0->info_0[num_entries], session_list[(*snum)].remote_machine);
num_entries++;
}
- ss0->count = num_entries;
+ ss0->num_entries_read = num_entries;
+ ss0->ptr_sess_info = num_entries > 0 ? 1 : 0;
+ ss0->num_entries_read2 = num_entries;
if ((*snum) >= (*stot)) {
(*snum) = 0;
}
} else {
- ss0->array = NULL;
- ss0->count = 0;
+ ss0->num_entries_read = 0;
+ ss0->ptr_sess_info = 0;
+ ss0->num_entries_read2 = 0;
}
+ SAFE_FREE(session_list);
}
/*******************************************************************
********************************************************************/
+/* global needed to make use of the share_mode_forall() callback */
+static struct sess_file_count s_file_cnt;
+
static void sess_file_fn( const struct share_mode_entry *e,
- const char *sharepath, const char *fname,
- void *private_data )
+ const char *sharepath, const char *fname, void *state )
{
- struct sess_file_count *sess = (struct sess_file_count *)private_data;
+ struct sess_file_count *sess = &s_file_cnt;
- if ( procid_equal(&e->pid, &sess->pid) && (sess->uid == e->uid) ) {
+ if ( (procid_to_pid(&e->pid) == sess->pid) && (sess->uid == e->uid) ) {
sess->count++;
}
@@ -813,15 +831,13 @@ static void sess_file_fn( const struct share_mode_entry *e,
/*******************************************************************
********************************************************************/
-static int net_count_files( uid_t uid, struct server_id pid )
+static int net_count_files( uid_t uid, pid_t pid )
{
- struct sess_file_count s_file_cnt;
-
s_file_cnt.count = 0;
s_file_cnt.uid = uid;
s_file_cnt.pid = pid;
- share_mode_forall( sess_file_fn, (void *)&s_file_cnt );
+ share_mode_forall( sess_file_fn, NULL );
return s_file_cnt.count;
}
@@ -830,15 +846,16 @@ static int net_count_files( uid_t uid, struct server_id pid )
fill in a sess info level 1 structure.
********************************************************************/
-static void init_srv_sess_info_1(pipes_struct *p, struct srvsvc_NetSessCtr1 *ss1, uint32 *snum, uint32 *stot)
+static void init_srv_sess_info_1(SRV_SESS_INFO_1 *ss1, uint32 *snum, uint32 *stot)
{
struct sessionid *session_list;
uint32 num_entries = 0;
time_t now = time(NULL);
if ( !snum ) {
- ss1->count = 0;
- ss1->array = NULL;
+ ss1->num_entries_read = 0;
+ ss1->ptr_sess_info = 0;
+ ss1->num_entries_read2 = 0;
(*stot) = 0;
@@ -846,16 +863,14 @@ static void init_srv_sess_info_1(pipes_struct *p, struct srvsvc_NetSessCtr1 *ss1
}
if (ss1 == NULL) {
- if (snum != NULL)
- (*snum) = 0;
+ (*snum) = 0;
return;
}
- (*stot) = list_sessions(p->mem_ctx, &session_list);
-
- ss1->array = TALLOC_ARRAY(p->mem_ctx, struct srvsvc_NetSessInfo1, *stot);
+ (*stot) = list_sessions(&session_list);
- for (; (*snum) < (*stot); (*snum)++) {
+
+ for (; (*snum) < (*stot) && num_entries < MAX_SESS_ENTRIES; (*snum)++) {
uint32 num_files;
uint32 connect_time;
struct passwd *pw = sys_getpwnam(session_list[*snum].username);
@@ -871,54 +886,53 @@ static void init_srv_sess_info_1(pipes_struct *p, struct srvsvc_NetSessCtr1 *ss1
num_files = net_count_files(pw->pw_uid, session_list[*snum].pid);
guest = strequal( session_list[*snum].username, lp_guestaccount() );
- if (!(ss1->array[num_entries].client = talloc_strdup(
- ss1->array, session_list[*snum].remote_machine))) {
- ss1->array[num_entries].client = "";
- }
- if (!(ss1->array[num_entries].user = talloc_strdup(
- ss1->array, session_list[*snum].username))) {
- ss1->array[num_entries].user = "";
- }
- ss1->array[num_entries].num_open = num_files;
- ss1->array[num_entries].time = connect_time;
- ss1->array[num_entries].idle_time = 0;
- ss1->array[num_entries].user_flags = guest;
-
+ init_srv_sess_info1( &ss1->info_1[num_entries],
+ session_list[*snum].remote_machine,
+ session_list[*snum].username,
+ num_files,
+ connect_time,
+ 0,
+ guest);
num_entries++;
}
- ss1->count = num_entries;
+ ss1->num_entries_read = num_entries;
+ ss1->ptr_sess_info = num_entries > 0 ? 1 : 0;
+ ss1->num_entries_read2 = num_entries;
if ((*snum) >= (*stot)) {
(*snum) = 0;
}
+
+ SAFE_FREE(session_list);
}
/*******************************************************************
makes a SRV_R_NET_SESS_ENUM structure.
********************************************************************/
-static WERROR init_srv_sess_info_ctr(pipes_struct *p, union srvsvc_NetSessCtr *ctr,
+static WERROR init_srv_sess_info_ctr(SRV_SESS_INFO_CTR *ctr,
int switch_value, uint32 *resume_hnd, uint32 *total_entries)
{
WERROR status = WERR_OK;
DEBUG(5,("init_srv_sess_info_ctr: %d\n", __LINE__));
+ ctr->switch_value = switch_value;
+
switch (switch_value) {
case 0:
- ctr->ctr0 = talloc(p->mem_ctx, struct srvsvc_NetSessCtr0);
- init_srv_sess_info_0(p, ctr->ctr0, resume_hnd, total_entries);
+ init_srv_sess_info_0(&(ctr->sess.info0), resume_hnd, total_entries);
+ ctr->ptr_sess_ctr = 1;
break;
case 1:
- ctr->ctr1 = talloc(p->mem_ctx, struct srvsvc_NetSessCtr1);
- init_srv_sess_info_1(p, ctr->ctr1, resume_hnd, total_entries);
+ init_srv_sess_info_1(&(ctr->sess.info1), resume_hnd, total_entries);
+ ctr->ptr_sess_ctr = 1;
break;
default:
DEBUG(5,("init_srv_sess_info_ctr: unsupported switch value %d\n", switch_value));
- if (resume_hnd != NULL)
- (*resume_hnd) = 0;
+ (*resume_hnd) = 0;
(*total_entries) = 0;
- ctr->ctr0 = NULL;
+ ctr->ptr_sess_ctr = 0;
status = WERR_UNKNOWN_LEVEL;
break;
}
@@ -927,42 +941,65 @@ static WERROR init_srv_sess_info_ctr(pipes_struct *p, union srvsvc_NetSessCtr *c
}
/*******************************************************************
+ makes a SRV_R_NET_SESS_ENUM structure.
+********************************************************************/
+
+static void init_srv_r_net_sess_enum(SRV_R_NET_SESS_ENUM *r_n,
+ uint32 resume_hnd, int sess_level, int switch_value)
+{
+ DEBUG(5,("init_srv_r_net_sess_enum: %d\n", __LINE__));
+
+ r_n->sess_level = sess_level;
+
+ if (sess_level == -1)
+ r_n->status = WERR_UNKNOWN_LEVEL;
+ else
+ r_n->status = init_srv_sess_info_ctr(r_n->ctr, switch_value, &resume_hnd, &r_n->total_entries);
+
+ if (!W_ERROR_IS_OK(r_n->status))
+ resume_hnd = 0;
+
+ init_enum_hnd(&r_n->enum_hnd, resume_hnd);
+}
+
+/*******************************************************************
fill in a conn info level 0 structure.
********************************************************************/
-static void init_srv_conn_info_0(pipes_struct *p, struct srvsvc_NetConnCtr0 *ss0, uint32 *snum, uint32 *stot)
+static void init_srv_conn_info_0(SRV_CONN_INFO_0 *ss0, uint32 *snum, uint32 *stot)
{
uint32 num_entries = 0;
(*stot) = 1;
if (ss0 == NULL) {
- if (snum != NULL)
- (*snum) = 0;
+ (*snum) = 0;
return;
}
DEBUG(5,("init_srv_conn_0_ss0\n"));
if (snum) {
- ss0->array = TALLOC_ARRAY(p->mem_ctx, struct srvsvc_NetConnInfo0, *stot);
- for (; (*snum) < (*stot); (*snum)++) {
+ for (; (*snum) < (*stot) && num_entries < MAX_CONN_ENTRIES; (*snum)++) {
- ss0->array[num_entries].conn_id = (*stot);
+ init_srv_conn_info0(&ss0->info_0[num_entries], (*stot));
/* move on to creating next connection */
/* move on to creating next conn */
num_entries++;
}
- ss0->count = num_entries;
+ ss0->num_entries_read = num_entries;
+ ss0->ptr_conn_info = num_entries > 0 ? 1 : 0;
+ ss0->num_entries_read2 = num_entries;
if ((*snum) >= (*stot)) {
(*snum) = 0;
}
} else {
- ss0->array = NULL;
- ss0->count = 0;
+ ss0->num_entries_read = 0;
+ ss0->ptr_conn_info = 0;
+ ss0->num_entries_read2 = 0;
(*stot) = 0;
}
@@ -972,44 +1009,55 @@ static void init_srv_conn_info_0(pipes_struct *p, struct srvsvc_NetConnCtr0 *ss0
fill in a conn info level 1 structure.
********************************************************************/
-static void init_srv_conn_info_1(pipes_struct *p, struct srvsvc_NetConnCtr1 *ss1, uint32 *snum, uint32 *stot)
+static void init_srv_conn_1_info(CONN_INFO_1 *se1, CONN_INFO_1_STR *str1,
+ uint32 id, uint32 type,
+ uint32 num_opens, uint32 num_users, uint32 open_time,
+ const char *usr_name, const char *net_name)
+{
+ init_srv_conn_info1(se1 , id, type, num_opens, num_users, open_time, usr_name, net_name);
+ init_srv_conn_info1_str(str1, usr_name, net_name);
+}
+
+/*******************************************************************
+ fill in a conn info level 1 structure.
+ ********************************************************************/
+
+static void init_srv_conn_info_1(SRV_CONN_INFO_1 *ss1, uint32 *snum, uint32 *stot)
{
uint32 num_entries = 0;
(*stot) = 1;
if (ss1 == NULL) {
- if (snum != NULL)
- (*snum) = 0;
+ (*snum) = 0;
return;
}
DEBUG(5,("init_srv_conn_1_ss1\n"));
if (snum) {
- ss1->array = TALLOC_ARRAY(p->mem_ctx, struct srvsvc_NetConnInfo1, *stot);
- for (; (*snum) < (*stot); (*snum)++) {
- ss1->array[num_entries].conn_id = (*stot);
- ss1->array[num_entries].conn_type = 0x3;
- ss1->array[num_entries].num_open = 1;
- ss1->array[num_entries].num_users = 1;
- ss1->array[num_entries].conn_time = 3;
- ss1->array[num_entries].user = "dummy_user";
- ss1->array[num_entries].share = "IPC$";
+ for (; (*snum) < (*stot) && num_entries < MAX_CONN_ENTRIES; (*snum)++) {
+ init_srv_conn_1_info(&ss1->info_1[num_entries],
+ &ss1->info_1_str[num_entries],
+ (*stot), 0x3, 1, 1, 3,"dummy_user", "IPC$");
/* move on to creating next connection */
/* move on to creating next conn */
num_entries++;
}
- ss1->count = num_entries;
+ ss1->num_entries_read = num_entries;
+ ss1->ptr_conn_info = num_entries > 0 ? 1 : 0;
+ ss1->num_entries_read2 = num_entries;
+
if ((*snum) >= (*stot)) {
(*snum) = 0;
}
} else {
- ss1->count = 0;
- ss1->array = NULL;
+ ss1->num_entries_read = 0;
+ ss1->ptr_conn_info = 0;
+ ss1->num_entries_read2 = 0;
(*stot) = 0;
}
@@ -1019,24 +1067,28 @@ static void init_srv_conn_info_1(pipes_struct *p, struct srvsvc_NetConnCtr1 *ss1
makes a SRV_R_NET_CONN_ENUM structure.
********************************************************************/
-static WERROR init_srv_conn_info_ctr(pipes_struct *p, union srvsvc_NetConnCtr *ctr,
+static WERROR init_srv_conn_info_ctr(SRV_CONN_INFO_CTR *ctr,
int switch_value, uint32 *resume_hnd, uint32 *total_entries)
{
WERROR status = WERR_OK;
DEBUG(5,("init_srv_conn_info_ctr: %d\n", __LINE__));
+ ctr->switch_value = switch_value;
+
switch (switch_value) {
case 0:
- init_srv_conn_info_0(p, ctr->ctr0, resume_hnd, total_entries);
+ init_srv_conn_info_0(&ctr->conn.info0, resume_hnd, total_entries);
+ ctr->ptr_conn_ctr = 1;
break;
case 1:
- init_srv_conn_info_1(p, ctr->ctr1, resume_hnd, total_entries);
+ init_srv_conn_info_1(&ctr->conn.info1, resume_hnd, total_entries);
+ ctr->ptr_conn_ctr = 1;
break;
default:
DEBUG(5,("init_srv_conn_info_ctr: unsupported switch value %d\n", switch_value));
- ctr->ctr0 = NULL;
- (*resume_hnd) = 0;
+ (*resume_hnd = 0);
(*total_entries) = 0;
+ ctr->ptr_conn_ctr = 0;
status = WERR_UNKNOWN_LEVEL;
break;
}
@@ -1045,41 +1097,72 @@ static WERROR init_srv_conn_info_ctr(pipes_struct *p, union srvsvc_NetConnCtr *c
}
/*******************************************************************
+ makes a SRV_R_NET_CONN_ENUM structure.
+********************************************************************/
+
+static void init_srv_r_net_conn_enum(SRV_R_NET_CONN_ENUM *r_n,
+ uint32 resume_hnd, int conn_level, int switch_value)
+{
+ DEBUG(5,("init_srv_r_net_conn_enum: %d\n", __LINE__));
+
+ r_n->conn_level = conn_level;
+ if (conn_level == -1)
+ r_n->status = WERR_UNKNOWN_LEVEL;
+ else
+ r_n->status = init_srv_conn_info_ctr(r_n->ctr, switch_value, &resume_hnd, &r_n->total_entries);
+
+ if (!W_ERROR_IS_OK(r_n->status))
+ resume_hnd = 0;
+
+ init_enum_hnd(&r_n->enum_hnd, resume_hnd);
+}
+
+/*******************************************************************
makes a SRV_R_NET_FILE_ENUM structure.
********************************************************************/
-static WERROR net_file_enum_3(pipes_struct *p, union srvsvc_NetFileCtr *ctr, uint32 *resume_hnd, uint32 *num_entries )
+static WERROR net_file_enum_3( SRV_R_NET_FILE_ENUM *r, uint32 resume_hnd )
{
TALLOC_CTX *ctx = get_talloc_ctx();
- WERROR status;
+ SRV_FILE_INFO_CTR *ctr = &r->ctr;
/* TODO -- Windows enumerates
(b) active pipes
(c) open directories and files */
- ctr->ctr3 = TALLOC_ZERO_P(p->mem_ctx, struct srvsvc_NetFileCtr3);
-
- status = net_enum_files( ctx, &ctr->ctr3->array, num_entries, resume_hnd );
- if ( !W_ERROR_IS_OK(status))
- return status;
+ r->status = net_enum_files( ctx, &ctr->file.info3, &ctr->num_entries, resume_hnd );
+ if ( !W_ERROR_IS_OK(r->status))
+ goto done;
- status = net_enum_pipes( ctx, &ctr->ctr3->array, num_entries, resume_hnd );
- if ( !W_ERROR_IS_OK(status))
- return status;
-
- ctr->ctr3->count = *num_entries;
+ r->status = net_enum_pipes( ctx, &ctr->file.info3, &ctr->num_entries, resume_hnd );
+ if ( !W_ERROR_IS_OK(r->status))
+ goto done;
- return WERR_OK;
+ r->level = ctr->level = 3;
+ r->total_entries = ctr->num_entries;
+ /* ctr->num_entries = r->total_entries - resume_hnd; */
+ ctr->num_entries2 = ctr->num_entries;
+ ctr->ptr_file_info = 1;
+
+ r->status = WERR_OK;
+
+done:
+ if ( ctr->num_entries > 0 )
+ ctr->ptr_entries = 1;
+
+ init_enum_hnd(&r->enum_hnd, 0);
+
+ return r->status;
}
/*******************************************************************
*******************************************************************/
-WERROR _srvsvc_NetFileEnum(pipes_struct *p, struct srvsvc_NetFileEnum *r)
+WERROR _srv_net_file_enum(pipes_struct *p, SRV_Q_NET_FILE_ENUM *q_u, SRV_R_NET_FILE_ENUM *r_u)
{
- switch ( *r->in.level ) {
+ switch ( q_u->level ) {
case 3:
- return net_file_enum_3(p, r->in.ctr, r->in.resume_handle, r->out.totalentries );
+ return net_file_enum_3( r_u, get_enum_hnd(&q_u->enum_hnd) );
default:
return WERR_UNKNOWN_LEVEL;
}
@@ -1091,11 +1174,15 @@ WERROR _srvsvc_NetFileEnum(pipes_struct *p, struct srvsvc_NetFileEnum *r)
net server get info
********************************************************************/
-WERROR _srvsvc_NetSrvGetInfo(pipes_struct *p, struct srvsvc_NetSrvGetInfo *r)
+WERROR _srv_net_srv_get_info(pipes_struct *p, SRV_Q_NET_SRV_GET_INFO *q_u, SRV_R_NET_SRV_GET_INFO *r_u)
{
WERROR status = WERR_OK;
+ SRV_INFO_CTR *ctr = TALLOC_P(p->mem_ctx, SRV_INFO_CTR);
+
+ if (!ctr)
+ return WERR_NOMEM;
- ZERO_STRUCTP(r->out.info);
+ ZERO_STRUCTP(ctr);
DEBUG(5,("srv_net_srv_get_info: %d\n", __LINE__));
@@ -1104,123 +1191,150 @@ WERROR _srvsvc_NetSrvGetInfo(pipes_struct *p, struct srvsvc_NetSrvGetInfo *r)
return WERR_ACCESS_DENIED;
}
- switch (r->in.level) {
+ switch (q_u->switch_value) {
/* Technically level 102 should only be available to
Administrators but there isn't anything super-secret
here, as most of it is made up. */
case 102:
- r->out.info->info102 = TALLOC_ZERO_P(p->mem_ctx, struct srvsvc_NetSrvInfo102);
-
- r->out.info->info102->platform_id = 500;
- r->out.info->info102->version_major = lp_major_announce_version();
- r->out.info->info102->version_minor = lp_minor_announce_version();
- r->out.info->info102->server_name = global_myname();
- r->out.info->info102->server_type = lp_default_server_announce();
- r->out.info->info102->userpath = "C:\\";
- r->out.info->info102->licenses = 10000;
- r->out.info->info102->anndelta = 3000;
- r->out.info->info102->disc = 0xf;
- r->out.info->info102->users = 0xffffffff;
- r->out.info->info102->hidden = 0;
- r->out.info->info102->announce = 240;
- r->out.info->info102->comment = lp_serverstring();
+ init_srv_info_102(&ctr->srv.sv102,
+ 500, global_myname(),
+ string_truncate(lp_serverstring(), MAX_SERVER_STRING_LENGTH),
+ lp_major_announce_version(), lp_minor_announce_version(),
+ lp_default_server_announce(),
+ 0xffffffff, /* users */
+ 0xf, /* disc */
+ 0, /* hidden */
+ 240, /* announce */
+ 3000, /* announce delta */
+ 100000, /* licenses */
+ "c:\\"); /* user path */
break;
case 101:
- r->out.info->info101 = TALLOC_ZERO_P(p->mem_ctx, struct srvsvc_NetSrvInfo101);
- r->out.info->info101->platform_id = 500;
- r->out.info->info101->server_name = global_myname();
- r->out.info->info101->version_major = lp_major_announce_version();
- r->out.info->info101->version_minor = lp_minor_announce_version();
- r->out.info->info101->server_type = lp_default_server_announce();
- r->out.info->info101->comment = lp_serverstring();
+ init_srv_info_101(&ctr->srv.sv101,
+ 500, global_myname(),
+ lp_major_announce_version(), lp_minor_announce_version(),
+ lp_default_server_announce(),
+ string_truncate(lp_serverstring(), MAX_SERVER_STRING_LENGTH));
break;
case 100:
- r->out.info->info100 = TALLOC_ZERO_P(p->mem_ctx, struct srvsvc_NetSrvInfo100);
- r->out.info->info100->platform_id = 500;
- r->out.info->info100->server_name = global_myname();
+ init_srv_info_100(&ctr->srv.sv100, 500, global_myname());
break;
default:
- return WERR_UNKNOWN_LEVEL;
+ status = WERR_UNKNOWN_LEVEL;
break;
}
+ /* set up the net server get info structure */
+ init_srv_r_net_srv_get_info(r_u, q_u->switch_value, ctr, status);
+
DEBUG(5,("srv_net_srv_get_info: %d\n", __LINE__));
- return status;
+ return r_u->status;
}
/*******************************************************************
net server set info
********************************************************************/
-WERROR _srvsvc_NetSrvSetInfo(pipes_struct *p, struct srvsvc_NetSrvSetInfo *r)
+WERROR _srv_net_srv_set_info(pipes_struct *p, SRV_Q_NET_SRV_SET_INFO *q_u, SRV_R_NET_SRV_SET_INFO *r_u)
{
+ WERROR status = WERR_OK;
+
+ DEBUG(5,("srv_net_srv_set_info: %d\n", __LINE__));
+
/* Set up the net server set info structure. */
- if (r->out.parm_error) {
- *r->out.parm_error = 0;
- }
- return WERR_OK;
+
+ init_srv_r_net_srv_set_info(r_u, 0x0, status);
+
+ DEBUG(5,("srv_net_srv_set_info: %d\n", __LINE__));
+
+ return r_u->status;
}
/*******************************************************************
net conn enum
********************************************************************/
-WERROR _srvsvc_NetConnEnum(pipes_struct *p, struct srvsvc_NetConnEnum *r)
+WERROR _srv_net_conn_enum(pipes_struct *p, SRV_Q_NET_CONN_ENUM *q_u, SRV_R_NET_CONN_ENUM *r_u)
{
DEBUG(5,("srv_net_conn_enum: %d\n", __LINE__));
- ZERO_STRUCTP(r->out.ctr);
+ r_u->ctr = TALLOC_P(p->mem_ctx, SRV_CONN_INFO_CTR);
+ if (!r_u->ctr)
+ return WERR_NOMEM;
+
+ ZERO_STRUCTP(r_u->ctr);
/* set up the */
- return init_srv_conn_info_ctr(p, r->out.ctr, *r->in.level, r->in.resume_handle, r->out.totalentries);
+ init_srv_r_net_conn_enum(r_u,
+ get_enum_hnd(&q_u->enum_hnd),
+ q_u->conn_level,
+ q_u->ctr->switch_value);
+
+ DEBUG(5,("srv_net_conn_enum: %d\n", __LINE__));
+
+ return r_u->status;
}
/*******************************************************************
net sess enum
********************************************************************/
-WERROR _srvsvc_NetSessEnum(pipes_struct *p, struct srvsvc_NetSessEnum *r)
+WERROR _srv_net_sess_enum(pipes_struct *p, SRV_Q_NET_SESS_ENUM *q_u, SRV_R_NET_SESS_ENUM *r_u)
{
DEBUG(5,("_srv_net_sess_enum: %d\n", __LINE__));
- ZERO_STRUCTP(r->out.ctr);
+ r_u->ctr = TALLOC_P(p->mem_ctx, SRV_SESS_INFO_CTR);
+ if (!r_u->ctr)
+ return WERR_NOMEM;
+
+ ZERO_STRUCTP(r_u->ctr);
/* set up the */
- return init_srv_sess_info_ctr(p, r->out.ctr,
- *r->in.level,
- r->in.resume_handle,
- r->out.totalentries);
+ init_srv_r_net_sess_enum(r_u,
+ get_enum_hnd(&q_u->enum_hnd),
+ q_u->sess_level,
+ q_u->ctr->switch_value);
+
+ DEBUG(5,("_srv_net_sess_enum: %d\n", __LINE__));
+
+ return r_u->status;
}
/*******************************************************************
net sess del
********************************************************************/
-WERROR _srvsvc_NetSessDel(pipes_struct *p, struct srvsvc_NetSessDel *r)
+WERROR _srv_net_sess_del(pipes_struct *p, SRV_Q_NET_SESS_DEL *q_u, SRV_R_NET_SESS_DEL *r_u)
{
struct sessionid *session_list;
+ struct current_user user;
int num_sessions, snum;
- WERROR status;
+ fstring username;
+ fstring machine;
+ BOOL not_root = False;
- char *machine = talloc_strdup(p->mem_ctx, r->in.server_unc);
+ rpcstr_pull_unistr2_fstring(username, &q_u->uni_user_name);
+ rpcstr_pull_unistr2_fstring(machine, &q_u->uni_cli_name);
/* strip leading backslashes if any */
while (machine[0] == '\\') {
memmove(machine, &machine[1], strlen(machine));
}
- num_sessions = list_sessions(p->mem_ctx, &session_list);
+ num_sessions = list_sessions(&session_list);
DEBUG(5,("_srv_net_sess_del: %d\n", __LINE__));
- status = WERR_ACCESS_DENIED;
+ r_u->status = WERR_ACCESS_DENIED;
+
+ get_current_user(&user, p);
/* fail out now if you are not root or not a domain admin */
- if ((p->pipe_user.ut.uid != sec_initial_uid()) &&
+ if ((user.ut.uid != sec_initial_uid()) &&
( ! nt_token_check_domain_rid(p->pipe_user.nt_user_token, DOMAIN_GROUP_RID_ADMINS))) {
goto done;
@@ -1228,30 +1342,36 @@ WERROR _srvsvc_NetSessDel(pipes_struct *p, struct srvsvc_NetSessDel *r)
for (snum = 0; snum < num_sessions; snum++) {
- if ((strequal(session_list[snum].username, r->in.user) || r->in.user[0] == '\0' ) &&
- strequal(session_list[snum].remote_machine, machine)) {
- NTSTATUS ntstat;
-
- ntstat = messaging_send(smbd_messaging_context(),
- session_list[snum].pid,
- MSG_SHUTDOWN, &data_blob_null);
+ if ((strequal(session_list[snum].username, username) || username[0] == '\0' ) &&
+ strequal(session_list[snum].remote_machine, machine)) {
- if (NT_STATUS_IS_OK(ntstat))
- status = WERR_OK;
+ if (user.ut.uid != sec_initial_uid()) {
+ not_root = True;
+ become_root();
+ }
+
+ if (NT_STATUS_IS_OK(message_send_pid(pid_to_procid(session_list[snum].pid), MSG_SHUTDOWN, NULL, 0, False)))
+ r_u->status = WERR_OK;
+
+ if (not_root)
+ unbecome_root();
}
}
DEBUG(5,("_srv_net_sess_del: %d\n", __LINE__));
+
done:
- return status;
+ SAFE_FREE(session_list);
+
+ return r_u->status;
}
/*******************************************************************
Net share enum all.
********************************************************************/
-WERROR _srvsvc_NetShareEnumAll(pipes_struct *p, struct srvsvc_NetShareEnumAll *r)
+WERROR _srv_net_share_enum_all(pipes_struct *p, SRV_Q_NET_SHARE_ENUM *q_u, SRV_R_NET_SHARE_ENUM *r_u)
{
DEBUG(5,("_srv_net_share_enum: %d\n", __LINE__));
@@ -1261,15 +1381,20 @@ WERROR _srvsvc_NetShareEnumAll(pipes_struct *p, struct srvsvc_NetShareEnumAll *r
}
/* Create the list of shares for the response. */
- return init_srv_share_info_ctr(p, r->out.ctr, *r->in.level,
- r->in.resume_handle, r->out.totalentries, True);
+ init_srv_r_net_share_enum(p, r_u,
+ q_u->ctr.info_level,
+ get_enum_hnd(&q_u->enum_hnd), True);
+
+ DEBUG(5,("_srv_net_share_enum: %d\n", __LINE__));
+
+ return r_u->status;
}
/*******************************************************************
Net share enum.
********************************************************************/
-WERROR _srvsvc_NetShareEnum(pipes_struct *p, struct srvsvc_NetShareEnum *r)
+WERROR _srv_net_share_enum(pipes_struct *p, SRV_Q_NET_SHARE_ENUM *q_u, SRV_R_NET_SHARE_ENUM *r_u)
{
DEBUG(5,("_srv_net_share_enum: %d\n", __LINE__));
@@ -1279,80 +1404,32 @@ WERROR _srvsvc_NetShareEnum(pipes_struct *p, struct srvsvc_NetShareEnum *r)
}
/* Create the list of shares for the response. */
- return init_srv_share_info_ctr(p, r->out.ctr, *r->in.level,
- r->in.resume_handle, r->out.totalentries, False);
+ init_srv_r_net_share_enum(p, r_u,
+ q_u->ctr.info_level,
+ get_enum_hnd(&q_u->enum_hnd), False);
+
+ DEBUG(5,("_srv_net_share_enum: %d\n", __LINE__));
+
+ return r_u->status;
}
/*******************************************************************
Net share get info.
********************************************************************/
-WERROR _srvsvc_NetShareGetInfo(pipes_struct *p, struct srvsvc_NetShareGetInfo *r)
+WERROR _srv_net_share_get_info(pipes_struct *p, SRV_Q_NET_SHARE_GET_INFO *q_u, SRV_R_NET_SHARE_GET_INFO *r_u)
{
- const struct share_params *params;
+ fstring share_name;
- params = get_share_params(p->mem_ctx, r->in.share_name);
+ DEBUG(5,("_srv_net_share_get_info: %d\n", __LINE__));
- if (params != NULL) {
- switch (r->in.level) {
- case 0:
- r->out.info->info0 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo0);
- init_srv_share_info_0(p, r->out.info->info0, params);
- break;
- case 1:
- r->out.info->info1 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1);
- init_srv_share_info_1(p, r->out.info->info1, params);
- break;
- case 2:
- r->out.info->info2 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo2);
- init_srv_share_info_2(p, r->out.info->info2, params);
- break;
- case 501:
- r->out.info->info501 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo501);
- init_srv_share_info_501(p, r->out.info->info501, params);
- break;
- case 502:
- r->out.info->info502 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo502);
- init_srv_share_info_502(p, r->out.info->info502, params);
- break;
+ /* Create the list of shares for the response. */
+ unistr2_to_ascii(share_name, &q_u->uni_share_name, sizeof(share_name));
+ init_srv_r_net_share_get_info(p, r_u, share_name, q_u->info_level);
- /* here for completeness */
- case 1004:
- r->out.info->info1004 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1004);
- init_srv_share_info_1004(p, r->out.info->info1004, params);
- break;
- case 1005:
- r->out.info->info1005 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1005);
- init_srv_share_info_1005(p, r->out.info->info1005, params);
- break;
+ DEBUG(5,("_srv_net_share_get_info: %d\n", __LINE__));
- /* here for completeness 1006 - 1501 */
- case 1006:
- r->out.info->info1006 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1006);
- init_srv_share_info_1006(p, r->out.info->info1006,
- params);
- break;
- case 1007:
- r->out.info->info1007 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1007);
- init_srv_share_info_1007(p, r->out.info->info1007,
- params);
- break;
- case 1501:
- r->out.info->info1501 = talloc(p->mem_ctx, struct sec_desc_buf);
- init_srv_share_info_1501(p, r->out.info->info1501,
- params);
- break;
- default:
- DEBUG(5,("init_srv_net_share_get_info: unsupported "
- "switch value %d\n", r->in.level));
- return WERR_UNKNOWN_LEVEL;
- break;
- }
- } else {
- return WERR_INVALID_NAME;
- }
-
- return WERR_OK;
+ return r_u->status;
}
/*******************************************************************
@@ -1379,295 +1456,40 @@ char *valid_share_pathname(char *dos_pathname)
return ptr;
}
-static void setval_helper(struct registry_key *key, const char *name,
- const char *value, WERROR *err)
-{
- struct registry_value val;
-
- if (!W_ERROR_IS_OK(*err)) {
- return;
- }
-
- ZERO_STRUCT(val);
- val.type = REG_SZ;
- val.v.sz.str = CONST_DISCARD(char *, value);
- val.v.sz.len = strlen(value)+1;
-
- *err = reg_setvalue(key, name, &val);
-}
-
-static WERROR add_share(const char *share_name, const char *path,
- const char *comment, uint32 max_connections,
- const struct nt_user_token *token,
- BOOL is_disk_op)
-{
- if (lp_add_share_cmd() && *lp_add_share_cmd()) {
- char *command;
- int ret;
-
- if (asprintf(&command, "%s \"%s\" \"%s\" \"%s\" \"%s\" %d",
- lp_add_share_cmd(), dyn_CONFIGFILE, share_name,
- path, comment, max_connections) == -1) {
- return WERR_NOMEM;
- }
-
- DEBUG(10,("add_share: Running [%s]\n", command ));
-
- /********* BEGIN SeDiskOperatorPrivilege BLOCK *********/
-
- if ( is_disk_op )
- become_root();
-
- if ( (ret = smbrun(command, NULL)) == 0 ) {
- /* Tell everyone we updated smb.conf. */
- message_send_all(smbd_messaging_context(),
- MSG_SMB_CONF_UPDATED,
- NULL, 0, NULL);
- }
-
- if ( is_disk_op )
- unbecome_root();
-
- /********* END SeDiskOperatorPrivilege BLOCK *********/
-
- DEBUG(3,("_srv_net_share_add: Running [%s] returned (%d)\n",
- command, ret ));
-
- /*
- * No fallback to registry shares, the user did define a add
- * share command, so fail here.
- */
-
- SAFE_FREE(command);
- return (ret == 0) ? WERR_OK : WERR_ACCESS_DENIED;
- }
-
- if (lp_registry_shares()) {
- char *keyname;
- struct registry_key *key;
- enum winreg_CreateAction action;
- WERROR err;
- TALLOC_CTX *mem_ctx;
-
- if (!(keyname = talloc_asprintf(NULL, "%s\\%s", KEY_SMBCONF,
- share_name))) {
- return WERR_NOMEM;
- }
-
- mem_ctx = (TALLOC_CTX *)keyname;
-
- err = reg_create_path(mem_ctx, keyname, REG_KEY_WRITE,
- is_disk_op ? get_root_nt_token():token,
- &action, &key);
-
- if (action != REG_CREATED_NEW_KEY) {
- err = WERR_ALREADY_EXISTS;
- }
-
- if (!W_ERROR_IS_OK(err)) {
- TALLOC_FREE(mem_ctx);
- return err;
- }
-
- setval_helper(key, "path", path, &err);
- if ((comment != NULL) && (comment[0] != '\0')) {
- setval_helper(key, "comment", comment, &err);
- }
- if (max_connections != 0) {
- char tmp[16];
- snprintf(tmp, sizeof(tmp), "%d", max_connections);
- setval_helper(key, "max connections", tmp, &err);
- }
-
- if (!W_ERROR_IS_OK(err)) {
- /*
- * Hmmmm. We'd need transactions on the registry to
- * get this right....
- */
- reg_delete_path(is_disk_op ? get_root_nt_token():token,
- keyname);
- }
- TALLOC_FREE(mem_ctx);
- return err;
- }
-
- return WERR_ACCESS_DENIED;
-}
-
-static WERROR delete_share(const char *sharename,
- const struct nt_user_token *token,
- BOOL is_disk_op)
-{
- if (lp_delete_share_cmd() && *lp_delete_share_cmd()) {
- char *command;
- int ret;
-
- if (asprintf(&command, "%s \"%s\" \"%s\"",
- lp_delete_share_cmd(), dyn_CONFIGFILE,
- sharename)) {
- return WERR_NOMEM;
- }
-
- DEBUG(10,("delete_share: Running [%s]\n", command ));
-
- /********* BEGIN SeDiskOperatorPrivilege BLOCK *********/
-
- if ( is_disk_op )
- become_root();
-
- if ( (ret = smbrun(command, NULL)) == 0 ) {
- /* Tell everyone we updated smb.conf. */
- message_send_all(smbd_messaging_context(),
- MSG_SMB_CONF_UPDATED,
- NULL, 0, NULL);
- }
-
- if ( is_disk_op )
- unbecome_root();
-
- /********* END SeDiskOperatorPrivilege BLOCK *********/
-
- SAFE_FREE(command);
-
- DEBUG(3,("_srv_net_share_del: Running [%s] returned (%d)\n",
- command, ret ));
- return (ret == 0) ? WERR_OK : WERR_ACCESS_DENIED;
- }
-
- if (lp_registry_shares()) {
- char *keyname;
- WERROR err;
-
- if (asprintf(&keyname, "%s\\%s", KEY_SMBCONF,
- sharename) == -1) {
- return WERR_NOMEM;
- }
-
- err = reg_delete_path(is_disk_op ? get_root_nt_token():token,
- keyname);
- SAFE_FREE(keyname);
- return err;
- }
-
- return WERR_ACCESS_DENIED;
-}
-
-static WERROR change_share(const char *share_name, const char *path,
- const char *comment, uint32 max_connections,
- const struct nt_user_token *token,
- BOOL is_disk_op)
-{
- if (lp_change_share_cmd() && *lp_change_share_cmd()) {
- char *command;
- int ret;
-
- if (asprintf(&command, "%s \"%s\" \"%s\" \"%s\" \"%s\" %d",
- lp_change_share_cmd(), dyn_CONFIGFILE, share_name,
- path, comment, max_connections) == -1) {
- return WERR_NOMEM;
- }
-
- DEBUG(10,("_srv_net_share_set_info: Running [%s]\n", command));
-
- /********* BEGIN SeDiskOperatorPrivilege BLOCK *********/
-
- if ( is_disk_op )
- become_root();
-
- if ( (ret = smbrun(command, NULL)) == 0 ) {
- /* Tell everyone we updated smb.conf. */
- message_send_all(smbd_messaging_context(),
- MSG_SMB_CONF_UPDATED,
- NULL, 0, NULL);
- }
-
- if ( is_disk_op )
- unbecome_root();
-
- /********* END SeDiskOperatorPrivilege BLOCK *********/
-
- DEBUG(3,("_srv_net_share_set_info: Running [%s] returned "
- "(%d)\n", command, ret ));
-
- SAFE_FREE(command);
-
- return (ret == 0) ? WERR_OK : WERR_ACCESS_DENIED;
- }
-
- if (lp_registry_shares()) {
- char *keyname;
- struct registry_key *key;
- WERROR err;
- TALLOC_CTX *mem_ctx;
-
- if (!(keyname = talloc_asprintf(NULL, "%s\\%s", KEY_SMBCONF,
- share_name))) {
- return WERR_NOMEM;
- }
-
- mem_ctx = (TALLOC_CTX *)keyname;
-
- err = reg_open_path(mem_ctx, keyname, REG_KEY_WRITE,
- is_disk_op ? get_root_nt_token():token,
- &key);
- if (!W_ERROR_IS_OK(err)) {
- TALLOC_FREE(mem_ctx);
- return err;
- }
-
- setval_helper(key, "path", path, &err);
-
- reg_deletevalue(key, "comment");
- if ((comment != NULL) && (comment[0] != '\0')) {
- setval_helper(key, "comment", comment, &err);
- }
-
- reg_deletevalue(key, "max connections");
- if (max_connections != 0) {
- char tmp[16];
- snprintf(tmp, sizeof(tmp), "%d", max_connections);
- setval_helper(key, "max connections", tmp, &err);
- }
-
- TALLOC_FREE(mem_ctx);
- return err;
- }
-
- return WERR_ACCESS_DENIED;
-}
-
/*******************************************************************
Net share set info. Modify share details.
********************************************************************/
-WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r)
+WERROR _srv_net_share_set_info(pipes_struct *p, SRV_Q_NET_SHARE_SET_INFO *q_u, SRV_R_NET_SHARE_SET_INFO *r_u)
{
- pstring comment;
+ struct current_user user;
+ pstring command;
+ fstring share_name;
+ fstring comment;
pstring pathname;
int type;
int snum;
+ int ret;
char *path;
SEC_DESC *psd = NULL;
SE_PRIV se_diskop = SE_DISK_OPERATOR;
BOOL is_disk_op = False;
int max_connections = 0;
- fstring tmp_share_name;
DEBUG(5,("_srv_net_share_set_info: %d\n", __LINE__));
- if (r->out.parm_error) {
- *r->out.parm_error = 0;
- }
+ unistr2_to_ascii(share_name, &q_u->uni_share_name, sizeof(share_name));
- if ( strequal(r->in.share_name,"IPC$")
- || ( lp_enable_asu_support() && strequal(r->in.share_name,"ADMIN$") )
- || strequal(r->in.share_name,"global") )
+ r_u->parm_error = 0;
+
+ if ( strequal(share_name,"IPC$")
+ || ( lp_enable_asu_support() && strequal(share_name,"ADMIN$") )
+ || strequal(share_name,"global") )
{
return WERR_ACCESS_DENIED;
}
- fstrcpy(tmp_share_name, r->in.share_name);
- snum = find_service(tmp_share_name);
+ snum = find_service(share_name);
/* Does this share exist ? */
if (snum < 0)
@@ -1677,39 +1499,47 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r
if (lp_print_ok(snum))
return WERR_ACCESS_DENIED;
- is_disk_op = user_has_privileges( p->pipe_user.nt_user_token,
- &se_diskop );
+ get_current_user(&user,p);
+
+ is_disk_op = user_has_privileges( p->pipe_user.nt_user_token, &se_diskop );
/* fail out now if you are not root and not a disk op */
- if ( p->pipe_user.ut.uid != sec_initial_uid() && !is_disk_op )
+ if ( user.ut.uid != sec_initial_uid() && !is_disk_op )
return WERR_ACCESS_DENIED;
- switch (r->in.level) {
+ switch (q_u->info_level) {
case 1:
pstrcpy(pathname, lp_pathname(snum));
- pstrcpy(comment, r->in.info.info1->comment);
- type = r->in.info.info1->type;
+ unistr2_to_ascii(comment, &q_u->info.share.info2.info_2_str.uni_remark, sizeof(comment));
+ type = q_u->info.share.info2.info_2.type;
psd = NULL;
break;
case 2:
- pstrcpy(comment, r->in.info.info2->comment);
- pstrcpy(pathname, r->in.info.info2->path);
- type = r->in.info.info2->type;
- max_connections = (r->in.info.info2->max_users == 0xffffffff) ?
- 0 : r->in.info.info2->max_users;
+ unistr2_to_ascii(comment, &q_u->info.share.info2.info_2_str.uni_remark, sizeof(comment));
+ unistr2_to_ascii(pathname, &q_u->info.share.info2.info_2_str.uni_path, sizeof(pathname));
+ type = q_u->info.share.info2.info_2.type;
+ max_connections = (q_u->info.share.info2.info_2.max_uses == 0xffffffff) ? 0 : q_u->info.share.info2.info_2.max_uses;
+ psd = NULL;
+ break;
+#if 0
+ /* not supported on set but here for completeness */
+ case 501:
+ unistr2_to_ascii(comment, &q_u->info.share.info501.info_501_str.uni_remark, sizeof(comment));
+ type = q_u->info.share.info501.info_501.type;
psd = NULL;
break;
+#endif
case 502:
- pstrcpy(comment, r->in.info.info502->comment);
- pstrcpy(pathname, r->in.info.info502->path);
- type = r->in.info.info502->type;
- psd = r->in.info.info502->sd;
+ unistr2_to_ascii(comment, &q_u->info.share.info502.info_502_str.uni_remark, sizeof(comment));
+ unistr2_to_ascii(pathname, &q_u->info.share.info502.info_502_str.uni_path, sizeof(pathname));
+ type = q_u->info.share.info502.info_502.type;
+ psd = q_u->info.share.info502.info_502_str.sd;
map_generic_share_sd_bits(psd);
break;
case 1004:
pstrcpy(pathname, lp_pathname(snum));
- pstrcpy(comment, r->in.info.info1004->comment);
+ unistr2_to_ascii(comment, &q_u->info.share.info1004.info_1004_str.uni_remark, sizeof(comment));
type = STYPE_DISKTREE;
break;
case 1005:
@@ -1717,14 +1547,12 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r
user, so we must compare it to see if it's what is set in
smb.conf, so that we can contine other ops like setting
ACLs on a share */
- if (((r->in.info.info1005->dfs_flags &
+ if (((q_u->info.share.info1005.share_info_flags &
SHARE_1005_CSC_POLICY_MASK) >>
SHARE_1005_CSC_POLICY_SHIFT) == lp_csc_policy(snum))
return WERR_OK;
else {
- DEBUG(3, ("_srv_net_share_set_info: client is trying "
- "to change csc policy from the network; "
- "must be done with smb.conf\n"));
+ DEBUG(3, ("_srv_net_share_set_info: client is trying to change csc policy from the network; must be done with smb.conf\n"));
return WERR_ACCESS_DENIED;
}
case 1006:
@@ -1732,14 +1560,13 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r
return WERR_ACCESS_DENIED;
case 1501:
pstrcpy(pathname, lp_pathname(snum));
- pstrcpy(comment, lp_comment(snum));
- psd = r->in.info.info1501->sd;
+ fstrcpy(comment, lp_comment(snum));
+ psd = q_u->info.share.info1501.sdb->sec;
map_generic_share_sd_bits(psd);
type = STYPE_DISKTREE;
break;
default:
- DEBUG(5,("_srv_net_share_set_info: unsupported switch value "
- "%d\n", r->in.level));
+ DEBUG(5,("_srv_net_share_set_info: unsupported switch value %d\n", q_u->info_level));
return WERR_UNKNOWN_LEVEL;
}
@@ -1751,29 +1578,50 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r
if (!(path = valid_share_pathname( pathname )))
return WERR_OBJECT_PATH_INVALID;
- /* Ensure share name, pathname and comment don't contain '"'
- * characters. */
- string_replace(tmp_share_name, '"', ' ');
+ /* Ensure share name, pathname and comment don't contain '"' characters. */
+ string_replace(share_name, '"', ' ');
string_replace(path, '"', ' ');
string_replace(comment, '"', ' ');
DEBUG(10,("_srv_net_share_set_info: change share command = %s\n",
- lp_change_share_cmd() ? lp_change_share_cmd() : "NULL" ));
+ lp_change_share_cmd() ? lp_change_share_cmd() : "NULL" ));
/* Only call modify function if something changed. */
- if (strcmp(path, lp_pathname(snum))
- || strcmp(comment, lp_comment(snum))
- || (lp_max_connections(snum) != max_connections) ) {
- WERROR err;
+ if (strcmp(path, lp_pathname(snum)) || strcmp(comment, lp_comment(snum))
+ || (lp_max_connections(snum) != max_connections) )
+ {
+ if (!lp_change_share_cmd() || !*lp_change_share_cmd()) {
+ DEBUG(10,("_srv_net_share_set_info: No change share command\n"));
+ return WERR_ACCESS_DENIED;
+ }
- err = change_share(tmp_share_name, path, comment,
- max_connections, p->pipe_user.nt_user_token,
- is_disk_op);
+ slprintf(command, sizeof(command)-1, "%s \"%s\" \"%s\" \"%s\" \"%s\" %d",
+ lp_change_share_cmd(), dyn_CONFIGFILE, share_name, path, comment, max_connections );
- if (!W_ERROR_IS_OK(err)) {
- return err;
+ DEBUG(10,("_srv_net_share_set_info: Running [%s]\n", command ));
+
+ /********* BEGIN SeDiskOperatorPrivilege BLOCK *********/
+
+ if ( is_disk_op )
+ become_root();
+
+ if ( (ret = smbrun(command, NULL)) == 0 ) {
+ /* Tell everyone we updated smb.conf. */
+ message_send_all(conn_tdb_ctx(), MSG_SMB_CONF_UPDATED, NULL, 0, False, NULL);
}
+
+ if ( is_disk_op )
+ unbecome_root();
+
+ /********* END SeDiskOperatorPrivilege BLOCK *********/
+
+ DEBUG(3,("_srv_net_share_set_info: Running [%s] returned (%d)\n", command, ret ));
+
+ if ( ret != 0 )
+ return WERR_ACCESS_DENIED;
+ } else {
+ DEBUG(10,("_srv_net_share_set_info: No change to share name (%s)\n", share_name ));
}
/* Replace SD if changed. */
@@ -1781,15 +1629,12 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r
SEC_DESC *old_sd;
size_t sd_size;
- old_sd = get_share_security(p->mem_ctx, lp_servicename(snum),
- &sd_size);
+ old_sd = get_share_security(p->mem_ctx, lp_servicename(snum), &sd_size);
if (old_sd && !sec_desc_equal(old_sd, psd)) {
- if (!set_share_security(r->in.share_name, psd)) {
- DEBUG(0,("_srv_net_share_set_info: Failed to "
- "change security info in share %s.\n",
- r->in.share_name ));
- }
+ if (!set_share_security(share_name, psd))
+ DEBUG(0,("_srv_net_share_set_info: Failed to change security info in share %s.\n",
+ share_name ));
}
}
@@ -1798,38 +1643,44 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p, struct srvsvc_NetShareSetInfo *r
return WERR_OK;
}
-
/*******************************************************************
Net share add. Call 'add_share_command "sharename" "pathname"
"comment" "max connections = "
********************************************************************/
-WERROR _srvsvc_NetShareAdd(pipes_struct *p, struct srvsvc_NetShareAdd *r)
+WERROR _srv_net_share_add(pipes_struct *p, SRV_Q_NET_SHARE_ADD *q_u, SRV_R_NET_SHARE_ADD *r_u)
{
- pstring share_name;
- pstring comment;
+ struct current_user user;
+ pstring command;
+ fstring share_name;
+ fstring comment;
pstring pathname;
- char *path;
int type;
+ int snum;
+ int ret;
+ char *path;
SEC_DESC *psd = NULL;
SE_PRIV se_diskop = SE_DISK_OPERATOR;
BOOL is_disk_op;
- uint32 max_connections = 0;
- WERROR err;
+ int max_connections = 0;
DEBUG(5,("_srv_net_share_add: %d\n", __LINE__));
- if (r->out.parm_error) {
- *r->out.parm_error = 0;
- }
+ r_u->parm_error = 0;
- is_disk_op = user_has_privileges( p->pipe_user.nt_user_token,
- &se_diskop );
+ get_current_user(&user,p);
- if (p->pipe_user.ut.uid != sec_initial_uid() && !is_disk_op )
+ is_disk_op = user_has_privileges( p->pipe_user.nt_user_token, &se_diskop );
+
+ if (user.ut.uid != sec_initial_uid() && !is_disk_op )
return WERR_ACCESS_DENIED;
- switch (r->in.level) {
+ if (!lp_add_share_cmd() || !*lp_add_share_cmd()) {
+ DEBUG(10,("_srv_net_share_add: No add share command\n"));
+ return WERR_ACCESS_DENIED;
+ }
+
+ switch (q_u->info_level) {
case 0:
/* No path. Not enough info in a level 0 to do anything. */
return WERR_ACCESS_DENIED;
@@ -1837,27 +1688,25 @@ WERROR _srvsvc_NetShareAdd(pipes_struct *p, struct srvsvc_NetShareAdd *r)
/* Not enough info in a level 1 to do anything. */
return WERR_ACCESS_DENIED;
case 2:
- pstrcpy(share_name, r->in.info.info2->name);
- pstrcpy(comment, r->in.info.info2->comment);
- pstrcpy(pathname, r->in.info.info2->path);
- max_connections = (r->in.info.info2->max_users == 0xffffffff) ?
- 0 : r->in.info.info2->max_users;
- type = r->in.info.info2->type;
+ unistr2_to_ascii(share_name, &q_u->info.share.info2.info_2_str.uni_netname, sizeof(share_name));
+ unistr2_to_ascii(comment, &q_u->info.share.info2.info_2_str.uni_remark, sizeof(share_name));
+ unistr2_to_ascii(pathname, &q_u->info.share.info2.info_2_str.uni_path, sizeof(share_name));
+ max_connections = (q_u->info.share.info2.info_2.max_uses == 0xffffffff) ? 0 : q_u->info.share.info2.info_2.max_uses;
+ type = q_u->info.share.info2.info_2.type;
break;
case 501:
/* No path. Not enough info in a level 501 to do anything. */
return WERR_ACCESS_DENIED;
case 502:
- pstrcpy(share_name, r->in.info.info502->name);
- pstrcpy(comment, r->in.info.info502->comment);
- pstrcpy(pathname, r->in.info.info502->path);
- type = r->in.info.info502->type;
- psd = r->in.info.info502->sd;
+ unistr2_to_ascii(share_name, &q_u->info.share.info502.info_502_str.uni_netname, sizeof(share_name));
+ unistr2_to_ascii(comment, &q_u->info.share.info502.info_502_str.uni_remark, sizeof(share_name));
+ unistr2_to_ascii(pathname, &q_u->info.share.info502.info_502_str.uni_path, sizeof(share_name));
+ type = q_u->info.share.info502.info_502.type;
+ psd = q_u->info.share.info502.info_502_str.sd;
map_generic_share_sd_bits(psd);
break;
- /* none of the following contain share names. NetShareAdd
- * does not have a separate parameter for the share name */
+ /* none of the following contain share names. NetShareAdd does not have a separate parameter for the share name */
case 1004:
case 1005:
@@ -1868,30 +1717,28 @@ WERROR _srvsvc_NetShareAdd(pipes_struct *p, struct srvsvc_NetShareAdd *r)
/* DFS only level. */
return WERR_ACCESS_DENIED;
default:
- DEBUG(5,("_srv_net_share_add: unsupported switch value %d\n",
- r->in.level));
+ DEBUG(5,("_srv_net_share_add: unsupported switch value %d\n", q_u->info_level));
return WERR_UNKNOWN_LEVEL;
}
/* check for invalid share names */
- if ( !validate_net_name( share_name, INVALID_SHARENAME_CHARS,
- sizeof(share_name) ) ) {
- DEBUG(5,("_srv_net_name_validate: Bad sharename \"%s\"\n",
- share_name));
+ if ( !validate_net_name( share_name, INVALID_SHARENAME_CHARS, sizeof(share_name) ) ) {
+ DEBUG(5,("_srv_net_name_validate: Bad sharename \"%s\"\n", share_name));
return WERR_INVALID_NAME;
}
if ( strequal(share_name,"IPC$") || strequal(share_name,"global")
- || ( lp_enable_asu_support() && strequal(share_name,"ADMIN$") ) )
+ || ( lp_enable_asu_support() && strequal(share_name,"ADMIN$") ) )
{
return WERR_ACCESS_DENIED;
}
- if (get_share_params(p->mem_ctx, share_name) != NULL) {
- /* Share already exists. */
+ snum = find_service(share_name);
+
+ /* Share already exists. */
+ if (snum >= 0)
return WERR_ALREADY_EXISTS;
- }
/* We can only add disk shares. */
if (type != STYPE_DISKTREE)
@@ -1901,24 +1748,44 @@ WERROR _srvsvc_NetShareAdd(pipes_struct *p, struct srvsvc_NetShareAdd *r)
if (!(path = valid_share_pathname( pathname )))
return WERR_OBJECT_PATH_INVALID;
- /* Ensure share name, pathname and comment don't contain '"'
- * characters. */
-
+ /* Ensure share name, pathname and comment don't contain '"' characters. */
string_replace(share_name, '"', ' ');
string_replace(path, '"', ' ');
string_replace(comment, '"', ' ');
- err = add_share(share_name, path, comment, max_connections,
- p->pipe_user.nt_user_token, is_disk_op);
+ slprintf(command, sizeof(command)-1, "%s \"%s\" \"%s\" \"%s\" \"%s\" %d",
+ lp_add_share_cmd(),
+ dyn_CONFIGFILE,
+ share_name,
+ path,
+ comment,
+ max_connections);
+
+ DEBUG(10,("_srv_net_share_add: Running [%s]\n", command ));
+
+ /********* BEGIN SeDiskOperatorPrivilege BLOCK *********/
+
+ if ( is_disk_op )
+ become_root();
- if (!W_ERROR_IS_OK(err)) {
- return err;
+ if ( (ret = smbrun(command, NULL)) == 0 ) {
+ /* Tell everyone we updated smb.conf. */
+ message_send_all(conn_tdb_ctx(), MSG_SMB_CONF_UPDATED, NULL, 0, False, NULL);
}
+ if ( is_disk_op )
+ unbecome_root();
+
+ /********* END SeDiskOperatorPrivilege BLOCK *********/
+
+ DEBUG(3,("_srv_net_share_add: Running [%s] returned (%d)\n", command, ret ));
+
+ if ( ret != 0 )
+ return WERR_ACCESS_DENIED;
+
if (psd) {
if (!set_share_security(share_name, psd)) {
- DEBUG(0,("_srv_net_share_add: Failed to add security "
- "info to share %s.\n", share_name ));
+ DEBUG(0,("_srv_net_share_add: Failed to add security info to share %s.\n", share_name ));
}
}
@@ -1938,43 +1805,75 @@ WERROR _srvsvc_NetShareAdd(pipes_struct *p, struct srvsvc_NetShareAdd *r)
a parameter.
********************************************************************/
-WERROR _srvsvc_NetShareDel(pipes_struct *p, struct srvsvc_NetShareDel *r)
+WERROR _srv_net_share_del(pipes_struct *p, SRV_Q_NET_SHARE_DEL *q_u, SRV_R_NET_SHARE_DEL *r_u)
{
- struct share_params *params;
+ struct current_user user;
+ pstring command;
+ fstring share_name;
+ int ret;
+ int snum;
SE_PRIV se_diskop = SE_DISK_OPERATOR;
BOOL is_disk_op;
- WERROR err;
+ struct share_params *params;
DEBUG(5,("_srv_net_share_del: %d\n", __LINE__));
- if ( strequal(r->in.share_name, "IPC$")
- || ( lp_enable_asu_support() && strequal(r->in.share_name,"ADMIN$") )
- || strequal(r->in.share_name, "global") )
+ unistr2_to_ascii(share_name, &q_u->uni_share_name, sizeof(share_name));
+
+ if ( strequal(share_name,"IPC$")
+ || ( lp_enable_asu_support() && strequal(share_name,"ADMIN$") )
+ || strequal(share_name,"global") )
{
return WERR_ACCESS_DENIED;
}
- if (!(params = get_share_params(p->mem_ctx, r->in.share_name))) {
- return WERR_NO_SUCH_SHARE;
- }
+ if (!(params = get_share_params(p->mem_ctx, share_name))) {
+ return WERR_NO_SUCH_SHARE;
+ }
+
+ snum = find_service(share_name);
/* No change to printer shares. */
- if (lp_print_ok(params->service))
+ if (lp_print_ok(snum))
return WERR_ACCESS_DENIED;
- is_disk_op = user_has_privileges( p->pipe_user.nt_user_token,
- &se_diskop );
+ get_current_user(&user,p);
+
+ is_disk_op = user_has_privileges( p->pipe_user.nt_user_token, &se_diskop );
- if (p->pipe_user.ut.uid != sec_initial_uid() && !is_disk_op )
+ if (user.ut.uid != sec_initial_uid() && !is_disk_op )
return WERR_ACCESS_DENIED;
- err = delete_share(lp_servicename(params->service),
- p->pipe_user.nt_user_token, is_disk_op);
+ if (!lp_delete_share_cmd() || !*lp_delete_share_cmd()) {
+ DEBUG(10,("_srv_net_share_del: No delete share command\n"));
+ return WERR_ACCESS_DENIED;
+ }
+
+ slprintf(command, sizeof(command)-1, "%s \"%s\" \"%s\"",
+ lp_delete_share_cmd(), dyn_CONFIGFILE, lp_servicename(snum));
+
+ DEBUG(10,("_srv_net_share_del: Running [%s]\n", command ));
+
+ /********* BEGIN SeDiskOperatorPrivilege BLOCK *********/
+
+ if ( is_disk_op )
+ become_root();
- if (!W_ERROR_IS_OK(err)) {
- return err;
+ if ( (ret = smbrun(command, NULL)) == 0 ) {
+ /* Tell everyone we updated smb.conf. */
+ message_send_all(conn_tdb_ctx(), MSG_SMB_CONF_UPDATED, NULL, 0, False, NULL);
}
+ if ( is_disk_op )
+ unbecome_root();
+
+ /********* END SeDiskOperatorPrivilege BLOCK *********/
+
+ DEBUG(3,("_srv_net_share_del: Running [%s] returned (%d)\n", command, ret ));
+
+ if ( ret != 0 )
+ return WERR_ACCESS_DENIED;
+
/* Delete the SD in the database. */
delete_share_security(params);
@@ -1983,28 +1882,22 @@ WERROR _srvsvc_NetShareDel(pipes_struct *p, struct srvsvc_NetShareDel *r)
return WERR_OK;
}
-WERROR _srvsvc_NetShareDelSticky(pipes_struct *p, struct srvsvc_NetShareDelSticky *r)
+WERROR _srv_net_share_del_sticky(pipes_struct *p, SRV_Q_NET_SHARE_DEL *q_u, SRV_R_NET_SHARE_DEL *r_u)
{
- struct srvsvc_NetShareDel s;
-
DEBUG(5,("_srv_net_share_del_stick: %d\n", __LINE__));
- s.in.server_unc = r->in.server_unc;
- s.in.share_name = r->in.share_name;
- s.in.reserved = r->in.reserved;
-
- return _srvsvc_NetShareDel(p, &s);
+ return _srv_net_share_del(p, q_u, r_u);
}
/*******************************************************************
time of day
********************************************************************/
-WERROR _srvsvc_NetRemoteTOD(pipes_struct *p, struct srvsvc_NetRemoteTOD *r)
+WERROR _srv_net_remote_tod(pipes_struct *p, SRV_Q_NET_REMOTE_TOD *q_u, SRV_R_NET_REMOTE_TOD *r_u)
{
+ TIME_OF_DAY_INFO *tod;
struct tm *t;
time_t unixdate = time(NULL);
- WERROR status = WERR_OK;
/* We do this call first as if we do it *after* the gmtime call
it overwrites the pointed-to values. JRA */
@@ -2013,87 +1906,104 @@ WERROR _srvsvc_NetRemoteTOD(pipes_struct *p, struct srvsvc_NetRemoteTOD *r)
DEBUG(5,("_srv_net_remote_tod: %d\n", __LINE__));
+ if ( !(tod = TALLOC_ZERO_P(p->mem_ctx, TIME_OF_DAY_INFO)) )
+ return WERR_NOMEM;
+
+ r_u->tod = tod;
+ r_u->ptr_srv_tod = 0x1;
+ r_u->status = WERR_OK;
+
+ DEBUG(5,("_srv_net_remote_tod: %d\n", __LINE__));
+
t = gmtime(&unixdate);
/* set up the */
- r->out.info->elapsed = unixdate;
- r->out.info->msecs = 0;
- r->out.info->hours = t->tm_hour;
- r->out.info->mins = t->tm_min;
- r->out.info->secs = t->tm_sec;
- r->out.info->hunds = 0;
- r->out.info->timezone = zone;
- r->out.info->tinterval = 10000;
- r->out.info->day = t->tm_mday;
- r->out.info->month = t->tm_mon + 1;
- r->out.info->year = 1900+t->tm_year;
- r->out.info->weekday = t->tm_wday;
+ init_time_of_day_info(tod,
+ unixdate,
+ 0,
+ t->tm_hour,
+ t->tm_min,
+ t->tm_sec,
+ 0,
+ zone,
+ 10000,
+ t->tm_mday,
+ t->tm_mon + 1,
+ 1900+t->tm_year,
+ t->tm_wday);
DEBUG(5,("_srv_net_remote_tod: %d\n", __LINE__));
- return status;
+ return r_u->status;
}
/***********************************************************************************
Win9x NT tools get security descriptor.
***********************************************************************************/
-WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p, struct srvsvc_NetGetFileSecurity *r)
+WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC *q_u,
+ SRV_R_NET_FILE_QUERY_SECDESC *r_u)
{
SEC_DESC *psd = NULL;
size_t sd_size;
DATA_BLOB null_pw;
+ pstring filename;
+ pstring qualname;
files_struct *fsp = NULL;
SMB_STRUCT_STAT st;
NTSTATUS nt_status;
+ struct current_user user;
connection_struct *conn = NULL;
BOOL became_user = False;
- WERROR status = WERR_OK;
- pstring tmp_file;
ZERO_STRUCT(st);
+ r_u->status = WERR_OK;
+
+ unistr2_to_ascii(qualname, &q_u->uni_qual_name, sizeof(qualname));
/* Null password is ok - we are already an authenticated user... */
- null_pw = data_blob_null;
+ null_pw = data_blob(NULL, 0);
+
+ get_current_user(&user, p);
become_root();
- conn = make_connection(r->in.share, null_pw, "A:", p->pipe_user.vuid, &nt_status);
+ conn = make_connection(qualname, null_pw, "A:", user.vuid, &nt_status);
unbecome_root();
if (conn == NULL) {
- DEBUG(3,("_srv_net_file_query_secdesc: Unable to connect to %s\n", r->in.share));
- status = ntstatus_to_werror(nt_status);
+ DEBUG(3,("_srv_net_file_query_secdesc: Unable to connect to %s\n", qualname));
+ r_u->status = ntstatus_to_werror(nt_status);
goto error_exit;
}
if (!become_user(conn, conn->vuid)) {
DEBUG(0,("_srv_net_file_query_secdesc: Can't become connected user!\n"));
- status = WERR_ACCESS_DENIED;
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
became_user = True;
- pstrcpy(tmp_file, r->in.file);
- nt_status = unix_convert(conn, tmp_file, False, NULL, &st);
+ unistr2_to_ascii(filename, &q_u->uni_file_name, sizeof(filename));
+ nt_status = unix_convert(conn, filename, False, NULL, &st);
if (!NT_STATUS_IS_OK(nt_status)) {
- DEBUG(3,("_srv_net_file_query_secdesc: bad pathname %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ DEBUG(3,("_srv_net_file_query_secdesc: bad pathname %s\n", filename));
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
- nt_status = check_name(conn, r->in.file);
+ nt_status = check_name(conn, filename);
if (!NT_STATUS_IS_OK(nt_status)) {
- DEBUG(3,("_srv_net_file_query_secdesc: can't access %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ DEBUG(3,("_srv_net_file_query_secdesc: can't access %s\n", filename));
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
- nt_status = open_file_stat(conn, NULL, r->in.file, &st, &fsp);
- if (!NT_STATUS_IS_OK(nt_status)) {
+ nt_status = open_file_stat(conn, filename, &st, &fsp);
+ if ( !NT_STATUS_IS_OK(nt_status)) {
/* Perhaps it is a directory */
- if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_IS_A_DIRECTORY))
- nt_status = open_directory(conn, NULL, r->in.file, &st,
+ if (errno == EISDIR)
+ nt_status = open_directory(conn, filename, &st,
READ_CONTROL_ACCESS,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -2102,8 +2012,8 @@ WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p, struct srvsvc_NetGetFileSecur
NULL, &fsp);
if (!NT_STATUS_IS_OK(nt_status)) {
- DEBUG(3,("_srv_net_file_query_secdesc: Unable to open file %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ DEBUG(3,("_srv_net_file_query_secdesc: Unable to open file %s\n", filename));
+ r_u->status = ntstatus_to_werror(nt_status);
goto error_exit;
}
}
@@ -2111,20 +2021,23 @@ WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p, struct srvsvc_NetGetFileSecur
sd_size = SMB_VFS_GET_NT_ACL(fsp, fsp->fsp_name, (OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION), &psd);
if (sd_size == 0) {
- DEBUG(3,("_srv_net_file_query_secdesc: Unable to get NT ACL for file %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ DEBUG(3,("_srv_net_file_query_secdesc: Unable to get NT ACL for file %s\n", filename));
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
- r->out.sd_buf->sd_size= sd_size;
- r->out.sd_buf->sd = psd;
+ r_u->ptr_response = 1;
+ r_u->size_response = sd_size;
+ r_u->ptr_secdesc = 1;
+ r_u->size_secdesc = sd_size;
+ r_u->sec_desc = psd;
psd->dacl->revision = (uint16) NT4_ACL_REVISION;
close_file(fsp, NORMAL_CLOSE);
unbecome_user();
- close_cnum(conn, p->pipe_user.vuid);
- return status;
+ close_cnum(conn, user.vuid);
+ return r_u->status;
error_exit:
@@ -2136,70 +2049,79 @@ error_exit:
unbecome_user();
if (conn)
- close_cnum(conn, p->pipe_user.vuid);
+ close_cnum(conn, user.vuid);
- return status;
+ return r_u->status;
}
/***********************************************************************************
Win9x NT tools set security descriptor.
***********************************************************************************/
-WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p, struct srvsvc_NetSetFileSecurity *r)
+WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_u,
+ SRV_R_NET_FILE_SET_SECDESC *r_u)
{
+ BOOL ret;
+ pstring filename;
+ pstring qualname;
DATA_BLOB null_pw;
files_struct *fsp = NULL;
SMB_STRUCT_STAT st;
NTSTATUS nt_status;
+ struct current_user user;
connection_struct *conn = NULL;
BOOL became_user = False;
- WERROR status = WERR_OK;
- pstring tmp_file;
ZERO_STRUCT(st);
+ r_u->status = WERR_OK;
+
+ unistr2_to_ascii(qualname, &q_u->uni_qual_name, sizeof(qualname));
+
/* Null password is ok - we are already an authenticated user... */
- null_pw = data_blob_null;
+ null_pw = data_blob(NULL, 0);
+
+ get_current_user(&user, p);
become_root();
- conn = make_connection(r->in.share, null_pw, "A:", p->pipe_user.vuid, &nt_status);
+ conn = make_connection(qualname, null_pw, "A:", user.vuid, &nt_status);
unbecome_root();
if (conn == NULL) {
- DEBUG(3,("_srv_net_file_set_secdesc: Unable to connect to %s\n", r->in.share));
- status = ntstatus_to_werror(nt_status);
+ DEBUG(3,("_srv_net_file_set_secdesc: Unable to connect to %s\n", qualname));
+ r_u->status = ntstatus_to_werror(nt_status);
goto error_exit;
}
if (!become_user(conn, conn->vuid)) {
DEBUG(0,("_srv_net_file_set_secdesc: Can't become connected user!\n"));
- status = WERR_ACCESS_DENIED;
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
became_user = True;
- pstrcpy(tmp_file, r->in.file);
- nt_status = unix_convert(conn, tmp_file, False, NULL, &st);
+ unistr2_to_ascii(filename, &q_u->uni_file_name, sizeof(filename));
+ nt_status = unix_convert(conn, filename, False, NULL, &st);
if (!NT_STATUS_IS_OK(nt_status)) {
- DEBUG(3,("_srv_net_file_set_secdesc: bad pathname %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ DEBUG(3,("_srv_net_file_set_secdesc: bad pathname %s\n", filename));
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
- nt_status = check_name(conn, r->in.file);
+ nt_status = check_name(conn, filename);
if (!NT_STATUS_IS_OK(nt_status)) {
- DEBUG(3,("_srv_net_file_set_secdesc: can't access %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ DEBUG(3,("_srv_net_file_set_secdesc: can't access %s\n", filename));
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
- nt_status = open_file_stat(conn, NULL, r->in.file, &st, &fsp);
+ nt_status = open_file_stat(conn, filename, &st, &fsp);
- if (!NT_STATUS_IS_OK(nt_status)) {
+ if ( !NT_STATUS_IS_OK(nt_status) ) {
/* Perhaps it is a directory */
- if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_IS_A_DIRECTORY))
- nt_status = open_directory(conn, NULL, r->in.file, &st,
+ if (errno == EISDIR)
+ nt_status = open_directory(conn, filename, &st,
FILE_READ_ATTRIBUTES,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -2207,25 +2129,25 @@ WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p, struct srvsvc_NetSetFileSecur
FILE_ATTRIBUTE_DIRECTORY,
NULL, &fsp);
- if (!NT_STATUS_IS_OK(nt_status)) {
- DEBUG(3,("_srv_net_file_set_secdesc: Unable to open file %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ if ( !NT_STATUS_IS_OK(nt_status) ) {
+ DEBUG(3,("_srv_net_file_set_secdesc: Unable to open file %s\n", filename));
+ r_u->status = ntstatus_to_werror(nt_status);
goto error_exit;
}
}
- nt_status = SMB_VFS_SET_NT_ACL(fsp, fsp->fsp_name, r->in.securityinformation, r->in.sd_buf.sd);
+ ret = SMB_VFS_SET_NT_ACL(fsp, fsp->fsp_name, q_u->sec_info, q_u->sec_desc);
- if (!NT_STATUS_IS_OK(nt_status)) {
- DEBUG(3,("_srv_net_file_set_secdesc: Unable to set NT ACL on file %s\n", r->in.file));
- status = WERR_ACCESS_DENIED;
+ if (ret == False) {
+ DEBUG(3,("_srv_net_file_set_secdesc: Unable to set NT ACL on file %s\n", filename));
+ r_u->status = WERR_ACCESS_DENIED;
goto error_exit;
}
close_file(fsp, NORMAL_CLOSE);
unbecome_user();
- close_cnum(conn, p->pipe_user.vuid);
- return status;
+ close_cnum(conn, user.vuid);
+ return r_u->status;
error_exit:
@@ -2238,10 +2160,10 @@ error_exit:
}
if (conn) {
- close_cnum(conn, p->pipe_user.vuid);
+ close_cnum(conn, user.vuid);
}
- return status;
+ return r_u->status;
}
/***********************************************************************************
@@ -2290,68 +2212,59 @@ static const char *next_server_disk_enum(uint32 *resume)
return disk;
}
-WERROR _srvsvc_NetDiskEnum(pipes_struct *p, struct srvsvc_NetDiskEnum *r)
+WERROR _srv_net_disk_enum(pipes_struct *p, SRV_Q_NET_DISK_ENUM *q_u, SRV_R_NET_DISK_ENUM *r_u)
{
uint32 i;
const char *disk_name;
+ TALLOC_CTX *ctx = p->mem_ctx;
+ uint32 resume=get_enum_hnd(&q_u->enum_hnd);
- WERROR status = WERR_OK;
+ r_u->status=WERR_OK;
+
+ r_u->total_entries = init_server_disk_enum(&resume);
- *r->out.totalentries = init_server_disk_enum(r->in.resume_handle);
- r->out.info->count = 0;
+ r_u->disk_enum_ctr.unknown = 0;
- if(!(r->out.info->disks = TALLOC_ARRAY(p->mem_ctx, struct srvsvc_NetDiskInfo0, MAX_SERVER_DISK_ENTRIES))) {
+ if(!(r_u->disk_enum_ctr.disk_info = TALLOC_ARRAY(ctx, DISK_INFO, MAX_SERVER_DISK_ENTRIES))) {
return WERR_NOMEM;
}
- /*allow one struct srvsvc_NetDiskInfo0 for null terminator*/
+ r_u->disk_enum_ctr.disk_info_ptr = r_u->disk_enum_ctr.disk_info ? 1 : 0;
- for(i = 0; i < MAX_SERVER_DISK_ENTRIES -1 && (disk_name = next_server_disk_enum(r->in.resume_handle)); i++) {
+ /*allow one DISK_INFO for null terminator*/
- r->out.info->count++;
- (*r->out.totalentries)++;
+ for(i = 0; i < MAX_SERVER_DISK_ENTRIES -1 && (disk_name = next_server_disk_enum(&resume)); i++) {
+
+ r_u->disk_enum_ctr.entries_read++;
/*copy disk name into a unicode string*/
- r->out.info->disks[i].disk = disk_name;
+ init_unistr3(&r_u->disk_enum_ctr.disk_info[i].disk_name, disk_name);
}
/* add a terminating null string. Is this there if there is more data to come? */
- r->out.info->count++;
- (*r->out.totalentries)++;
+ r_u->disk_enum_ctr.entries_read++;
- r->out.info->disks[i].disk = "";
+ init_unistr3(&r_u->disk_enum_ctr.disk_info[i].disk_name, "");
- return status;
+ init_enum_hnd(&r_u->enum_hnd, resume);
+
+ return r_u->status;
}
/********************************************************************
********************************************************************/
-WERROR _srvsvc_NetNameValidate(pipes_struct *p, struct srvsvc_NetNameValidate *r)
+WERROR _srv_net_name_validate(pipes_struct *p, SRV_Q_NET_NAME_VALIDATE *q_u, SRV_R_NET_NAME_VALIDATE *r_u)
{
- int len;
-
- if ((r->in.flags != 0x0) && (r->in.flags != 0x80000000)) {
- return WERR_INVALID_PARAM;
- }
+ fstring sharename;
- switch ( r->in.name_type ) {
+ switch ( q_u->type ) {
case 0x9:
- len = strlen_m(r->in.name);
-
- if ((r->in.flags == 0x0) && (len > 81)) {
- DEBUG(5,("_srv_net_name_validate: share name too long (%s > 81 chars)\n", r->in.name));
- return WERR_INVALID_NAME;
- }
- if ((r->in.flags == 0x80000000) && (len > 13)) {
- DEBUG(5,("_srv_net_name_validate: share name too long (%s > 13 chars)\n", r->in.name));
- return WERR_INVALID_NAME;
- }
-
- if ( ! validate_net_name( r->in.name, INVALID_SHARENAME_CHARS, sizeof(r->in.name) ) ) {
- DEBUG(5,("_srv_net_name_validate: Bad sharename \"%s\"\n", r->in.name));
+ rpcstr_pull(sharename, q_u->sharename.buffer, sizeof(sharename), q_u->sharename.uni_str_len*2, 0);
+ if ( !validate_net_name( sharename, INVALID_SHARENAME_CHARS, sizeof(sharename) ) ) {
+ DEBUG(5,("_srv_net_name_validate: Bad sharename \"%s\"\n", sharename));
return WERR_INVALID_NAME;
}
break;
@@ -2367,217 +2280,8 @@ WERROR _srvsvc_NetNameValidate(pipes_struct *p, struct srvsvc_NetNameValidate *r
/********************************************************************
********************************************************************/
-WERROR _srvsvc_NetFileClose(pipes_struct *p, struct srvsvc_NetFileClose *r)
+WERROR _srv_net_file_close(pipes_struct *p, SRV_Q_NET_FILE_CLOSE *q_u, SRV_R_NET_FILE_CLOSE *r_u)
{
return WERR_ACCESS_DENIED;
}
-WERROR _srvsvc_NetCharDevEnum(pipes_struct *p, struct srvsvc_NetCharDevEnum *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetCharDevGetInfo(pipes_struct *p, struct srvsvc_NetCharDevGetInfo *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetCharDevControl(pipes_struct *p, struct srvsvc_NetCharDevControl *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetCharDevQEnum(pipes_struct *p, struct srvsvc_NetCharDevQEnum *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetCharDevQGetInfo(pipes_struct *p, struct srvsvc_NetCharDevQGetInfo *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetCharDevQSetInfo(pipes_struct *p, struct srvsvc_NetCharDevQSetInfo *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetCharDevQPurge(pipes_struct *p, struct srvsvc_NetCharDevQPurge *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetCharDevQPurgeSelf(pipes_struct *p, struct srvsvc_NetCharDevQPurgeSelf *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetFileGetInfo(pipes_struct *p, struct srvsvc_NetFileGetInfo *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetShareCheck(pipes_struct *p, struct srvsvc_NetShareCheck *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetServerStatisticsGet(pipes_struct *p, struct srvsvc_NetServerStatisticsGet *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetTransportAdd(pipes_struct *p, struct srvsvc_NetTransportAdd *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetTransportEnum(pipes_struct *p, struct srvsvc_NetTransportEnum *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetTransportDel(pipes_struct *p, struct srvsvc_NetTransportDel *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetSetServiceBits(pipes_struct *p, struct srvsvc_NetSetServiceBits *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetPathType(pipes_struct *p, struct srvsvc_NetPathType *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetPathCanonicalize(pipes_struct *p, struct srvsvc_NetPathCanonicalize *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetPathCompare(pipes_struct *p, struct srvsvc_NetPathCompare *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRPRNAMECANONICALIZE(pipes_struct *p, struct srvsvc_NETRPRNAMECANONICALIZE *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetPRNameCompare(pipes_struct *p, struct srvsvc_NetPRNameCompare *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetShareDelStart(pipes_struct *p, struct srvsvc_NetShareDelStart *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetShareDelCommit(pipes_struct *p, struct srvsvc_NetShareDelCommit *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetServerTransportAddEx(pipes_struct *p, struct srvsvc_NetServerTransportAddEx *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NetServerSetServiceBitsEx(pipes_struct *p, struct srvsvc_NetServerSetServiceBitsEx *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSGETVERSION(pipes_struct *p, struct srvsvc_NETRDFSGETVERSION *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSCREATELOCALPARTITION(pipes_struct *p, struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSDELETELOCALPARTITION(pipes_struct *p, struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSSETLOCALVOLUMESTATE(pipes_struct *p, struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *R)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSSETSERVERINFO(pipes_struct *p, struct srvsvc_NETRDFSSETSERVERINFO *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSCREATEEXITPOINT(pipes_struct *p, struct srvsvc_NETRDFSCREATEEXITPOINT *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSDELETEEXITPOINT(pipes_struct *p, struct srvsvc_NETRDFSDELETEEXITPOINT *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRSERVERTRANSPORTDELEX(pipes_struct *p, struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSMANAGERREPORTSITEINFO(pipes_struct *p, struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSMODIFYPREFIX(pipes_struct *p, struct srvsvc_NETRDFSMODIFYPREFIX *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _srvsvc_NETRDFSFIXLOCALVOLUME(pipes_struct *p, struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
diff --git a/source/rpc_server/srv_svcctl.c b/source/rpc_server/srv_svcctl.c
index e36df7ac93b..74ae3aaa16f 100644
--- a/source/rpc_server/srv_svcctl.c
+++ b/source/rpc_server/srv_svcctl.c
@@ -1,7 +1,7 @@
/*
* Unix SMB/CIFS implementation.
* RPC Pipe client / server routines
- * Copyright (C) Gerald Carter 2005 - 2007
+ * Copyright (C) Gerald Carter 2005.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -23,30 +23,28 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_SRV
-static BOOL proxy_svcctl_call(pipes_struct *p, uint8 opnum)
+/*******************************************************************
+ ********************************************************************/
+
+static BOOL api_svcctl_close_service(pipes_struct *p)
{
- struct api_struct *fns;
- int n_fns;
+ SVCCTL_Q_CLOSE_SERVICE q_u;
+ SVCCTL_R_CLOSE_SERVICE r_u;
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
- svcctl_get_pipe_fns(&fns, &n_fns);
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
- if (opnum >= n_fns)
+ if(!svcctl_io_q_close_service("", &q_u, data, 0))
return False;
- if (fns[opnum].opnum != opnum) {
- smb_panic("SVCCTL function table not sorted\n");
- }
+ r_u.status = _svcctl_close_service(p, &q_u, &r_u);
- return fns[opnum].fn(p);
-}
-
-
-/*******************************************************************
- ********************************************************************/
+ if(!svcctl_io_r_close_service("", &r_u, rdata, 0))
+ return False;
-static BOOL api_svcctl_close_service(pipes_struct *p)
-{
- return proxy_svcctl_call( p, DCERPC_SVCCTL_CLOSESERVICEHANDLE );
+ return True;
}
/*******************************************************************
@@ -434,15 +432,14 @@ static struct api_struct api_svcctl_cmds[] =
};
-void svcctl2_get_pipe_fns( struct api_struct **fns, int *n_fns )
+void svcctl_get_pipe_fns( struct api_struct **fns, int *n_fns )
{
- *fns = api_svcctl_cmds;
+ *fns = api_svcctl_cmds;
*n_fns = sizeof(api_svcctl_cmds) / sizeof(struct api_struct);
}
-NTSTATUS rpc_svcctl2_init(void)
+NTSTATUS rpc_svcctl_init(void)
{
- return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION,
- "svcctl", "ntsvcs", api_svcctl_cmds,
- sizeof(api_svcctl_cmds) / sizeof(struct api_struct));
+ return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "svcctl", "ntsvcs", api_svcctl_cmds,
+ sizeof(api_svcctl_cmds) / sizeof(struct api_struct));
}
diff --git a/source/rpc_server/srv_svcctl_nt.c b/source/rpc_server/srv_svcctl_nt.c
index 433abf06a84..e202ec68b3f 100644
--- a/source/rpc_server/srv_svcctl_nt.c
+++ b/source/rpc_server/srv_svcctl_nt.c
@@ -318,12 +318,9 @@ WERROR _svcctl_open_service(pipes_struct *p, SVCCTL_Q_OPEN_SERVICE *q_u, SVCCTL_
/********************************************************************
********************************************************************/
-WERROR _svcctl_CloseServiceHandle(pipes_struct *p, struct svcctl_CloseServiceHandle *r)
+WERROR _svcctl_close_service(pipes_struct *p, SVCCTL_Q_CLOSE_SERVICE *q_u, SVCCTL_R_CLOSE_SERVICE *r_u)
{
- if ( !close_policy_hnd( p, r->in.handle ) )
- return WERR_BADFID;
-
- return WERR_OK;
+ return close_policy_hnd( p, &q_u->handle ) ? WERR_OK : WERR_BADFID;
}
/********************************************************************
@@ -627,7 +624,7 @@ static WERROR fill_svc_config( TALLOC_CTX *ctx, const char *name, SERVICE_CONFIG
the client from showing the "Start" button (if of course the services
are not running */
- if ( strequal( name, "NETLOGON" ) && ( !share_defined(name) ) )
+ if ( strequal( name, "NETLOGON" ) && ( lp_servicenumber(name) == -1 ) )
config->start_type = SVCCTL_DISABLED;
else if ( strequal( name, "WINS" ) && ( !lp_wins_support() ))
config->start_type = SVCCTL_DISABLED;
@@ -874,261 +871,3 @@ WERROR _svcctl_set_service_sec( pipes_struct *p, SVCCTL_Q_SET_SERVICE_SEC *q_u,
}
-WERROR _svcctl_ControlService(pipes_struct *p, struct svcctl_ControlService *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_DeleteService(pipes_struct *p, struct svcctl_DeleteService *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_LockServiceDatabase(pipes_struct *p, struct svcctl_LockServiceDatabase *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceObjectSecurity(pipes_struct *p, struct svcctl_QueryServiceObjectSecurity *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_SetServiceObjectSecurity(pipes_struct *p, struct svcctl_SetServiceObjectSecurity *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceStatus(pipes_struct *p, struct svcctl_QueryServiceStatus *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_SetServiceStatus(pipes_struct *p, struct svcctl_SetServiceStatus *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_UnlockServiceDatabase(pipes_struct *p, struct svcctl_UnlockServiceDatabase *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_NotifyBootConfigStatus(pipes_struct *p, struct svcctl_NotifyBootConfigStatus *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_SCSetServiceBitsW(pipes_struct *p, struct svcctl_SCSetServiceBitsW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_ChangeServiceConfigW(pipes_struct *p, struct svcctl_ChangeServiceConfigW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_CreateServiceW(pipes_struct *p, struct svcctl_CreateServiceW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_EnumDependentServicesW(pipes_struct *p, struct svcctl_EnumDependentServicesW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_EnumServicesStatusW(pipes_struct *p, struct svcctl_EnumServicesStatusW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_OpenSCManagerW(pipes_struct *p, struct svcctl_OpenSCManagerW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_OpenServiceW(pipes_struct *p, struct svcctl_OpenServiceW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceConfigW(pipes_struct *p, struct svcctl_QueryServiceConfigW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceLockStatusW(pipes_struct *p, struct svcctl_QueryServiceLockStatusW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_StartServiceW(pipes_struct *p, struct svcctl_StartServiceW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_GetServiceDisplayNameW(pipes_struct *p, struct svcctl_GetServiceDisplayNameW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_GetServiceKeyNameW(pipes_struct *p, struct svcctl_GetServiceKeyNameW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_SCSetServiceBitsA(pipes_struct *p, struct svcctl_SCSetServiceBitsA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_ChangeServiceConfigA(pipes_struct *p, struct svcctl_ChangeServiceConfigA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_CreateServiceA(pipes_struct *p, struct svcctl_CreateServiceA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_EnumDependentServicesA(pipes_struct *p, struct svcctl_EnumDependentServicesA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_EnumServicesStatusA(pipes_struct *p, struct svcctl_EnumServicesStatusA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_OpenSCManagerA(pipes_struct *p, struct svcctl_OpenSCManagerA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_OpenServiceA(pipes_struct *p, struct svcctl_OpenServiceA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceConfigA(pipes_struct *p, struct svcctl_QueryServiceConfigA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceLockStatusA(pipes_struct *p, struct svcctl_QueryServiceLockStatusA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_StartServiceA(pipes_struct *p, struct svcctl_StartServiceA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_GetServiceDisplayNameA(pipes_struct *p, struct svcctl_GetServiceDisplayNameA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_GetServiceKeyNameA(pipes_struct *p, struct svcctl_GetServiceKeyNameA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_GetCurrentGroupeStateW(pipes_struct *p, struct svcctl_GetCurrentGroupeStateW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_EnumServiceGroupW(pipes_struct *p, struct svcctl_EnumServiceGroupW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_ChangeServiceConfig2A(pipes_struct *p, struct svcctl_ChangeServiceConfig2A *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_ChangeServiceConfig2W(pipes_struct *p, struct svcctl_ChangeServiceConfig2W *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceConfig2A(pipes_struct *p, struct svcctl_QueryServiceConfig2A *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceConfig2W(pipes_struct *p, struct svcctl_QueryServiceConfig2W *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_QueryServiceStatusEx(pipes_struct *p, struct svcctl_QueryServiceStatusEx *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _EnumServicesStatusExA(pipes_struct *p, struct EnumServicesStatusExA *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _EnumServicesStatusExW(pipes_struct *p, struct EnumServicesStatusExW *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-WERROR _svcctl_SCSendTSMessage(pipes_struct *p, struct svcctl_SCSendTSMessage *r)
-{
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
diff --git a/source/rpc_server/srv_unixinfo_nt.c b/source/rpc_server/srv_unixinfo_nt.c
deleted file mode 100644
index 565d96e1fce..00000000000
--- a/source/rpc_server/srv_unixinfo_nt.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * RPC Pipe client / server routines for unixinfo-pipe
- * Copyright (C) Volker Lendecke 2005
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* This is the interface to the rpcunixinfo pipe. */
-
-#include "includes.h"
-#include "nterr.h"
-
-
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_RPC_SRV
-
-/* Map a sid to a uid */
-
-NTSTATUS _unixinfo_SidToUid(pipes_struct *p, struct unixinfo_SidToUid *r)
-{
- uid_t real_uid;
- NTSTATUS status;
- *r->out.uid = 0;
-
- status = sid_to_uid(&r->in.sid, &real_uid) ? NT_STATUS_OK : NT_STATUS_NONE_MAPPED;
- if (NT_STATUS_IS_OK(status))
- *r->out.uid = real_uid;
-
- return status;
-}
-
-/* Map a uid to a sid */
-
-NTSTATUS _unixinfo_UidToSid(pipes_struct *p, struct unixinfo_UidToSid *r)
-{
- NTSTATUS status = NT_STATUS_NO_SUCH_USER;
-
- uid_to_sid(r->out.sid, (uid_t)r->in.uid);
- status = NT_STATUS_OK;
-
- return status;
-}
-
-/* Map a sid to a gid */
-
-NTSTATUS _unixinfo_SidToGid(pipes_struct *p, struct unixinfo_SidToGid *r)
-{
- gid_t real_gid;
- NTSTATUS status;
-
- *r->out.gid = 0;
-
- status = sid_to_gid(&r->in.sid, &real_gid) ? NT_STATUS_OK : NT_STATUS_NONE_MAPPED;
- if (NT_STATUS_IS_OK(status))
- *r->out.gid = real_gid;
-
- return status;
-}
-
-/* Map a gid to a sid */
-
-NTSTATUS _unixinfo_GidToSid(pipes_struct *p, struct unixinfo_GidToSid *r)
-{
- NTSTATUS status = NT_STATUS_NO_SUCH_GROUP;
-
- gid_to_sid(r->out.sid, (gid_t)r->in.gid);
- status = NT_STATUS_OK;
-
- return status;
-}
-
-/* Get unix struct passwd information */
-
-NTSTATUS _unixinfo_GetPWUid(pipes_struct *p, struct unixinfo_GetPWUid *r)
-{
- int i;
- NTSTATUS status;
-
- if (*r->in.count > 1023)
- return NT_STATUS_INVALID_PARAMETER;
-
- status = NT_STATUS_OK;
-
- for (i=0; i<*r->in.count; i++) {
- struct passwd *pw;
- char *homedir, *shell;
- ssize_t len1, len2;
-
- r->out.infos[i].status = NT_STATUS_NO_SUCH_USER;
- r->out.infos[i].homedir = "";
- r->out.infos[i].shell = "";
-
- pw = getpwuid(r->in.uids[i]);
-
- if (pw == NULL) {
- DEBUG(10, ("Did not find uid %lld\n",
- (long long int)r->in.uids[i]));
- continue;
- }
-
- len1 = push_utf8_talloc(p->mem_ctx, &homedir, pw->pw_dir);
- len2 = push_utf8_talloc(p->mem_ctx, &shell, pw->pw_shell);
-
- if ((len1 < 0) || (len2 < 0) || (homedir == NULL) ||
- (shell == NULL)) {
- DEBUG(3, ("push_utf8_talloc failed\n"));
- r->out.infos[i].status = NT_STATUS_NO_MEMORY;
- continue;
- }
-
- r->out.infos[i].status = NT_STATUS_OK;
- r->out.infos[i].homedir = homedir;
- r->out.infos[i].shell = shell;
- }
-
- return status;
-}
diff --git a/source/rpc_server/srv_winreg_nt.c b/source/rpc_server/srv_winreg_nt.c
deleted file mode 100644
index 1fa61c27ca1..00000000000
--- a/source/rpc_server/srv_winreg_nt.c
+++ /dev/null
@@ -1,1209 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * RPC Pipe client / server routines
- *
- * Copyright (C) Gerald Carter 2002-2006.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* Implementation of registry functions. */
-
-#include "includes.h"
-#include "regfio.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_RPC_SRV
-
-static struct generic_mapping reg_generic_map =
- { REG_KEY_READ, REG_KEY_WRITE, REG_KEY_EXECUTE, REG_KEY_ALL };
-
-/******************************************************************
- free() function for struct registry_key
- *****************************************************************/
-
-static void free_regkey(void *ptr)
-{
- struct registry_key *key = (struct registry_key *)ptr;
- TALLOC_FREE(key);
-}
-
-/******************************************************************
- Find a registry key handle and return a REGISTRY_KEY
- *****************************************************************/
-
-static struct registry_key *find_regkey_by_hnd(pipes_struct *p,
- POLICY_HND *hnd)
-{
- struct registry_key *regkey = NULL;
-
- if(!find_policy_by_hnd(p,hnd,(void **)(void *)&regkey)) {
- DEBUG(2,("find_regkey_index_by_hnd: Registry Key not found: "));
- return NULL;
- }
-
- return regkey;
-}
-
-/*******************************************************************
- Function for open a new registry handle and creating a handle
- Note that P should be valid & hnd should already have space
-
- When we open a key, we store the full path to the key as
- HK[LM|U]\<key>\<key>\...
- *******************************************************************/
-
-static WERROR open_registry_key( pipes_struct *p, POLICY_HND *hnd,
- struct registry_key *parent,
- const char *subkeyname,
- uint32 access_desired )
-{
- WERROR result = WERR_OK;
- struct registry_key *key;
-
- if (parent == NULL) {
- result = reg_openhive(NULL, subkeyname, access_desired,
- p->pipe_user.nt_user_token, &key);
- }
- else {
- result = reg_openkey(NULL, parent, subkeyname, access_desired,
- &key);
- }
-
- if ( !W_ERROR_IS_OK(result) ) {
- return result;
- }
-
- if ( !create_policy_hnd( p, hnd, free_regkey, key ) ) {
- return WERR_BADFILE;
- }
-
- return WERR_OK;
-}
-
-/*******************************************************************
- Function for open a new registry handle and creating a handle
- Note that P should be valid & hnd should already have space
- *******************************************************************/
-
-static BOOL close_registry_key(pipes_struct *p, POLICY_HND *hnd)
-{
- struct registry_key *regkey = find_regkey_by_hnd(p, hnd);
-
- if ( !regkey ) {
- DEBUG(2,("close_registry_key: Invalid handle (%s:%u:%u)\n",
- OUR_HANDLE(hnd)));
- return False;
- }
-
- close_policy_hnd(p, hnd);
-
- return True;
-}
-
-/********************************************************************
- reg_close
- ********************************************************************/
-
-WERROR _winreg_CloseKey(pipes_struct *p, struct winreg_CloseKey *r)
-{
- /* close the policy handle */
-
- if (!close_registry_key(p, r->in.handle))
- return WERR_BADFID;
-
- ZERO_STRUCTP(r->out.handle);
-
- return WERR_OK;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKLM(pipes_struct *p, struct winreg_OpenHKLM *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKLM, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKPD(pipes_struct *p, struct winreg_OpenHKPD *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKPD, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKPT(pipes_struct *p, struct winreg_OpenHKPT *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKPT, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKCR(pipes_struct *p, struct winreg_OpenHKCR *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKCR, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKU(pipes_struct *p, struct winreg_OpenHKU *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKU, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKCU(pipes_struct *p, struct winreg_OpenHKCU *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKCU, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKCC(pipes_struct *p, struct winreg_OpenHKCC *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKCC, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKDD(pipes_struct *p, struct winreg_OpenHKDD *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKDD, r->in.access_mask);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_OpenHKPN(pipes_struct *p, struct winreg_OpenHKPN *r)
-{
- return open_registry_key(p, r->out.handle, NULL, KEY_HKPN, r->in.access_mask);
-}
-
-/*******************************************************************
- reg_reply_open_entry
- ********************************************************************/
-
-WERROR _winreg_OpenKey(pipes_struct *p, struct winreg_OpenKey *r)
-{
- struct registry_key *parent = find_regkey_by_hnd(p, r->in.parent_handle );
-
- if ( !parent )
- return WERR_BADFID;
-
- return open_registry_key(p, r->out.handle, parent, r->in.keyname.name, r->in.access_mask);
-}
-
-/*******************************************************************
- reg_reply_info
- ********************************************************************/
-
-WERROR _winreg_QueryValue(pipes_struct *p, struct winreg_QueryValue *r)
-{
- WERROR status = WERR_BADFILE;
- struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
- prs_struct prs_hkpd;
-
- uint8_t *outbuf;
- uint32_t outbuf_size;
-
- DATA_BLOB val_blob;
- BOOL free_buf = False;
- BOOL free_prs = False;
-
- if ( !regkey )
- return WERR_BADFID;
-
- *r->out.value_length = *r->out.type = 0;
-
- DEBUG(7,("_reg_info: policy key name = [%s]\n", regkey->key->name));
- DEBUG(7,("_reg_info: policy key type = [%08x]\n", regkey->key->type));
-
- /* Handle QueryValue calls on HKEY_PERFORMANCE_DATA */
- if(regkey->key->type == REG_KEY_HKPD)
- {
- if(strequal(r->in.value_name.name, "Global")) {
- prs_init(&prs_hkpd, *r->in.data_size, p->mem_ctx, MARSHALL);
- status = reg_perfcount_get_hkpd(
- &prs_hkpd, *r->in.data_size, &outbuf_size, NULL);
- outbuf = (uint8_t *)prs_hkpd.data_p;
- free_prs = True;
- }
- else if(strequal(r->in.value_name.name, "Counter 009")) {
- outbuf_size = reg_perfcount_get_counter_names(
- reg_perfcount_get_base_index(),
- (char **)(void *)&outbuf);
- free_buf = True;
- }
- else if(strequal(r->in.value_name.name, "Explain 009")) {
- outbuf_size = reg_perfcount_get_counter_help(
- reg_perfcount_get_base_index(),
- (char **)(void *)&outbuf);
- free_buf = True;
- }
- else if(isdigit(r->in.value_name.name[0])) {
- /* we probably have a request for a specific object
- * here */
- prs_init(&prs_hkpd, *r->in.data_size, p->mem_ctx, MARSHALL);
- status = reg_perfcount_get_hkpd(
- &prs_hkpd, *r->in.data_size, &outbuf_size,
- r->in.value_name.name);
- outbuf = (uint8_t *)prs_hkpd.data_p;
- free_prs = True;
- }
- else {
- DEBUG(3,("Unsupported key name [%s] for HKPD.\n",
- r->in.value_name.name));
- return WERR_BADFILE;
- }
-
- *r->out.type = REG_BINARY;
- }
- else {
- struct registry_value *val;
-
- status = reg_queryvalue(p->mem_ctx, regkey, r->in.value_name.name,
- &val);
- if (!W_ERROR_IS_OK(status)) {
- if (r->out.data_size) {
- *r->out.data_size = 0;
- }
- if (r->out.value_length) {
- *r->out.value_length = 0;
- }
- return status;
- }
-
- status = registry_push_value(p->mem_ctx, val, &val_blob);
- if (!W_ERROR_IS_OK(status)) {
- return status;
- }
-
- outbuf = val_blob.data;
- outbuf_size = val_blob.length;
- *r->out.type = val->type;
- }
-
- *r->out.value_length = outbuf_size;
-
- if ( *r->in.data_size == 0 || !r->out.data ) {
- status = WERR_OK;
- } else if ( *r->out.value_length > *r->in.data_size ) {
- status = WERR_MORE_DATA;
- } else {
- memcpy( r->out.data, outbuf, *r->out.value_length );
- status = WERR_OK;
- }
-
- *r->out.data_size = *r->out.value_length;
-
- if (free_prs) prs_mem_free(&prs_hkpd);
- if (free_buf) SAFE_FREE(outbuf);
-
- return status;
-}
-
-/*****************************************************************************
- Implementation of REG_QUERY_KEY
- ****************************************************************************/
-
-WERROR _winreg_QueryInfoKey(pipes_struct *p, struct winreg_QueryInfoKey *r)
-{
- WERROR status = WERR_OK;
- struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
-
- if ( !regkey )
- return WERR_BADFID;
-
- r->out.classname->name = NULL;
-
- status = reg_queryinfokey(regkey, r->out.num_subkeys, r->out.max_subkeylen,
- r->out.max_classlen, r->out.num_values, r->out.max_valnamelen,
- r->out.max_valbufsize, r->out.secdescsize,
- r->out.last_changed_time);
- if (!W_ERROR_IS_OK(status)) {
- return status;
- }
-
- /*
- * These calculations account for the registry buffers being
- * UTF-16. They are inexact at best, but so far they worked.
- */
-
- *r->out.max_subkeylen *= 2;
-
- *r->out.max_valnamelen += 1;
- *r->out.max_valnamelen *= 2;
-
- return WERR_OK;
-}
-
-
-/*****************************************************************************
- Implementation of REG_GETVERSION
- ****************************************************************************/
-
-WERROR _winreg_GetVersion(pipes_struct *p, struct winreg_GetVersion *r)
-{
- struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
-
- if ( !regkey )
- return WERR_BADFID;
-
- *r->out.version = 0x00000005; /* Windows 2000 registry API version */
-
- return WERR_OK;
-}
-
-
-/*****************************************************************************
- Implementation of REG_ENUM_KEY
- ****************************************************************************/
-
-WERROR _winreg_EnumKey(pipes_struct *p, struct winreg_EnumKey *r)
-{
- WERROR err;
- struct registry_key *key = find_regkey_by_hnd( p, r->in.handle );
-
- if ( !key )
- return WERR_BADFID;
-
- if ( !r->in.name || !r->in.keyclass )
- return WERR_INVALID_PARAM;
-
- DEBUG(8,("_reg_enum_key: enumerating key [%s]\n", key->key->name));
-
- err = reg_enumkey(p->mem_ctx, key, r->in.enum_index, (char **)&r->out.name->name,
- r->out.last_changed_time);
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
- r->out.keyclass->name = "";
- return WERR_OK;
-}
-
-/*****************************************************************************
- Implementation of REG_ENUM_VALUE
- ****************************************************************************/
-
-WERROR _winreg_EnumValue(pipes_struct *p, struct winreg_EnumValue *r)
-{
- WERROR err;
- struct registry_key *key = find_regkey_by_hnd( p, r->in.handle );
- char *valname;
- struct registry_value *val;
- DATA_BLOB value_blob;
-
- if ( !key )
- return WERR_BADFID;
-
- if ( !r->in.name )
- return WERR_INVALID_PARAM;
-
- DEBUG(8,("_winreg_EnumValue: enumerating values for key [%s]\n",
- key->key->name));
-
- err = reg_enumvalue(p->mem_ctx, key, r->in.enum_index, &valname, &val);
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- err = registry_push_value(p->mem_ctx, val, &value_blob);
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- if (r->out.name != NULL) {
- r->out.name->name = valname;
- }
-
- if (r->out.type != NULL) {
- *r->out.type = val->type;
- }
-
- if (r->out.value != NULL) {
- if ((r->out.size == NULL) || (r->out.length == NULL)) {
- return WERR_INVALID_PARAM;
- }
-
- if (value_blob.length > *r->out.size) {
- return WERR_MORE_DATA;
- }
-
- memcpy( r->out.value, value_blob.data, value_blob.length );
- }
-
- if (r->out.length != NULL) {
- *r->out.length = value_blob.length;
- }
- if (r->out.size != NULL) {
- *r->out.size = value_blob.length;
- }
-
- return WERR_OK;
-}
-
-/*******************************************************************
- reg_shutdwon
- ********************************************************************/
-
-WERROR _winreg_InitiateSystemShutdown(pipes_struct *p, struct winreg_InitiateSystemShutdown *r)
-{
- struct winreg_InitiateSystemShutdownEx s;
-
- s.in.hostname = r->in.hostname;
- s.in.message = r->in.message;
- s.in.timeout = r->in.timeout;
- s.in.force_apps = r->in.force_apps;
- s.in.reboot = r->in.reboot;
- s.in.reason = 0;
-
- /* thunk down to _winreg_InitiateSystemShutdownEx()
- (just returns a status) */
-
- return _winreg_InitiateSystemShutdownEx( p, &s );
-}
-
-/*******************************************************************
- reg_shutdown_ex
- ********************************************************************/
-
-#define SHUTDOWN_R_STRING "-r"
-#define SHUTDOWN_F_STRING "-f"
-
-
-WERROR _winreg_InitiateSystemShutdownEx(pipes_struct *p, struct winreg_InitiateSystemShutdownEx *r)
-{
- pstring shutdown_script;
- char *msg = NULL;
- pstring chkmsg;
- fstring str_timeout;
- fstring str_reason;
- fstring reboot;
- fstring f;
- int ret;
- BOOL can_shutdown;
-
-
- pstrcpy(shutdown_script, lp_shutdown_script());
-
- if ( !*shutdown_script )
- return WERR_ACCESS_DENIED;
-
- /* pull the message string and perform necessary sanity checks on it */
-
- chkmsg[0] = '\0';
-
- if ( r->in.message && r->in.message->name && r->in.message->name->name ) {
- if ( (msg = talloc_strdup(p->mem_ctx, r->in.message->name->name )) == NULL ) {
- return WERR_NOMEM;
- }
- alpha_strcpy (chkmsg, msg, NULL, sizeof(chkmsg));
- }
-
- fstr_sprintf(str_timeout, "%d", r->in.timeout);
- fstr_sprintf(reboot, r->in.reboot ? SHUTDOWN_R_STRING : "");
- fstr_sprintf(f, r->in.force_apps ? SHUTDOWN_F_STRING : "");
- fstr_sprintf(str_reason, "%d", r->in.reason );
-
- all_string_sub( shutdown_script, "%z", chkmsg, sizeof(shutdown_script) );
- all_string_sub( shutdown_script, "%t", str_timeout, sizeof(shutdown_script) );
- all_string_sub( shutdown_script, "%r", reboot, sizeof(shutdown_script) );
- all_string_sub( shutdown_script, "%f", f, sizeof(shutdown_script) );
- all_string_sub( shutdown_script, "%x", str_reason, sizeof(shutdown_script) );
-
- can_shutdown = user_has_privileges( p->pipe_user.nt_user_token, &se_remote_shutdown );
-
- /* IF someone has privs, run the shutdown script as root. OTHERWISE run it as not root
- Take the error return from the script and provide it as the Windows return code. */
-
- /********** BEGIN SeRemoteShutdownPrivilege BLOCK **********/
-
- if ( can_shutdown )
- become_root();
-
- ret = smbrun( shutdown_script, NULL );
-
- if ( can_shutdown )
- unbecome_root();
-
- /********** END SeRemoteShutdownPrivilege BLOCK **********/
-
- DEBUG(3,("_reg_shutdown_ex: Running the command `%s' gave %d\n",
- shutdown_script, ret));
-
-
- return (ret == 0) ? WERR_OK : WERR_ACCESS_DENIED;
-}
-
-
-
-
-/*******************************************************************
- reg_abort_shutdwon
- ********************************************************************/
-
-WERROR _winreg_AbortSystemShutdown(pipes_struct *p, struct winreg_AbortSystemShutdown *r)
-{
- pstring abort_shutdown_script;
- int ret;
- BOOL can_shutdown;
-
- pstrcpy(abort_shutdown_script, lp_abort_shutdown_script());
-
- if ( !*abort_shutdown_script )
- return WERR_ACCESS_DENIED;
-
- can_shutdown = user_has_privileges( p->pipe_user.nt_user_token, &se_remote_shutdown );
-
- /********** BEGIN SeRemoteShutdownPrivilege BLOCK **********/
-
- if ( can_shutdown )
- become_root();
-
- ret = smbrun( abort_shutdown_script, NULL );
-
- if ( can_shutdown )
- unbecome_root();
-
- /********** END SeRemoteShutdownPrivilege BLOCK **********/
-
- DEBUG(3,("_reg_abort_shutdown: Running the command `%s' gave %d\n",
- abort_shutdown_script, ret));
-
-
- return (ret == 0) ? WERR_OK : WERR_ACCESS_DENIED;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-static int validate_reg_filename( pstring fname )
-{
- char *p;
- int num_services = lp_numservices();
- int snum;
- pstring share_path;
- pstring unix_fname;
-
- /* convert to a unix path, stripping the C:\ along the way */
-
- if ( !(p = valid_share_pathname( fname ) ))
- return -1;
-
- /* has to exist within a valid file share */
-
- for ( snum=0; snum<num_services; snum++ ) {
-
- if ( !lp_snum_ok(snum) || lp_print_ok(snum) )
- continue;
-
- pstrcpy( share_path, lp_pathname(snum) );
-
- /* make sure we have a path (e.g. [homes] ) */
-
- if ( strlen( share_path ) == 0 )
- continue;
-
- if ( strncmp( share_path, p, strlen( share_path )) == 0 )
- break;
- }
-
- /* p and fname are overlapping memory so copy out and back in again */
-
- pstrcpy( unix_fname, p );
- pstrcpy( fname, unix_fname );
-
- return (snum < num_services) ? snum : -1;
-}
-
-/*******************************************************************
- Note: topkeypat is the *full* path that this *key will be
- loaded into (including the name of the key)
- ********************************************************************/
-
-static WERROR reg_load_tree( REGF_FILE *regfile, const char *topkeypath,
- REGF_NK_REC *key )
-{
- REGF_NK_REC *subkey;
- REGISTRY_KEY registry_key;
- REGVAL_CTR *values;
- REGSUBKEY_CTR *subkeys;
- int i;
- pstring path;
- WERROR result = WERR_OK;
-
- /* initialize the REGISTRY_KEY structure */
-
- if ( !(registry_key.hook = reghook_cache_find(topkeypath)) ) {
- DEBUG(0,("reg_load_tree: Failed to assigned a REGISTRY_HOOK to [%s]\n",
- topkeypath ));
- return WERR_BADFILE;
- }
-
- registry_key.name = talloc_strdup( regfile->mem_ctx, topkeypath );
- if ( !registry_key.name ) {
- DEBUG(0,("reg_load_tree: Talloc failed for reg_key.name!\n"));
- return WERR_NOMEM;
- }
-
- /* now start parsing the values and subkeys */
-
- if ( !(subkeys = TALLOC_ZERO_P( regfile->mem_ctx, REGSUBKEY_CTR )) )
- return WERR_NOMEM;
-
- if ( !(values = TALLOC_ZERO_P( subkeys, REGVAL_CTR )) )
- return WERR_NOMEM;
-
- /* copy values into the REGVAL_CTR */
-
- for ( i=0; i<key->num_values; i++ ) {
- regval_ctr_addvalue( values, key->values[i].valuename, key->values[i].type,
- (char*)key->values[i].data, (key->values[i].data_size & ~VK_DATA_IN_OFFSET) );
- }
-
- /* copy subkeys into the REGSUBKEY_CTR */
-
- key->subkey_index = 0;
- while ( (subkey = regfio_fetch_subkey( regfile, key )) ) {
- regsubkey_ctr_addkey( subkeys, subkey->keyname );
- }
-
- /* write this key and values out */
-
- if ( !store_reg_values( &registry_key, values )
- || !store_reg_keys( &registry_key, subkeys ) )
- {
- DEBUG(0,("reg_load_tree: Failed to load %s!\n", topkeypath));
- result = WERR_REG_IO_FAILURE;
- }
-
- TALLOC_FREE( subkeys );
-
- if ( !W_ERROR_IS_OK(result) )
- return result;
-
- /* now continue to load each subkey registry tree */
-
- key->subkey_index = 0;
- while ( (subkey = regfio_fetch_subkey( regfile, key )) ) {
- pstr_sprintf( path, "%s%s%s", topkeypath, "\\", subkey->keyname );
- result = reg_load_tree( regfile, path, subkey );
- if ( !W_ERROR_IS_OK(result) )
- break;
- }
-
- return result;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-static WERROR restore_registry_key ( REGISTRY_KEY *krecord, const char *fname )
-{
- REGF_FILE *regfile;
- REGF_NK_REC *rootkey;
- WERROR result;
-
- /* open the registry file....fail if the file already exists */
-
- if ( !(regfile = regfio_open( fname, (O_RDONLY), 0 )) ) {
- DEBUG(0,("restore_registry_key: failed to open \"%s\" (%s)\n",
- fname, strerror(errno) ));
- return ( ntstatus_to_werror(map_nt_error_from_unix( errno )) );
- }
-
- /* get the rootkey from the regf file and then load the tree
- via recursive calls */
-
- if ( !(rootkey = regfio_rootkey( regfile )) ) {
- regfio_close( regfile );
- return WERR_REG_FILE_INVALID;
- }
-
- result = reg_load_tree( regfile, krecord->name, rootkey );
-
- /* cleanup */
-
- regfio_close( regfile );
-
- return result;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_RestoreKey(pipes_struct *p, struct winreg_RestoreKey *r)
-{
- struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
- pstring fname;
- int snum;
-
- if ( !regkey )
- return WERR_BADFID;
-
- if ( !r->in.filename || !r->in.filename->name )
- return WERR_INVALID_PARAM;
-
- pstrcpy( fname, r->in.filename->name );
-
- DEBUG(8,("_winreg_RestoreKey: verifying restore of key [%s] from "
- "\"%s\"\n", regkey->key->name, fname));
-
- if ( (snum = validate_reg_filename( fname )) == -1 )
- return WERR_OBJECT_PATH_INVALID;
-
- /* user must posses SeRestorePrivilege for this this proceed */
-
- if ( !user_has_privileges( p->pipe_user.nt_user_token, &se_restore ) )
- return WERR_ACCESS_DENIED;
-
- DEBUG(2,("_winreg_RestoreKey: Restoring [%s] from %s in share %s\n",
- regkey->key->name, fname, lp_servicename(snum) ));
-
- return restore_registry_key( regkey->key, fname );
-}
-
-/********************************************************************
-********************************************************************/
-
-static WERROR reg_write_tree( REGF_FILE *regfile, const char *keypath,
- REGF_NK_REC *parent, SEC_DESC *sec_desc )
-{
- REGF_NK_REC *key;
- REGVAL_CTR *values;
- REGSUBKEY_CTR *subkeys;
- int i, num_subkeys;
- pstring key_tmp;
- char *keyname, *parentpath;
- pstring subkeypath;
- char *subkeyname;
- REGISTRY_KEY registry_key;
- WERROR result = WERR_OK;
-
- if ( !regfile )
- return WERR_GENERAL_FAILURE;
-
- if ( !keypath )
- return WERR_OBJECT_PATH_INVALID;
-
- /* split up the registry key path */
-
- pstrcpy( key_tmp, keypath );
- if ( !reg_split_key( key_tmp, &parentpath, &keyname ) )
- return WERR_OBJECT_PATH_INVALID;
-
- if ( !keyname )
- keyname = parentpath;
-
- /* we need a REGISTRY_KEY object here to enumerate subkeys and values */
-
- ZERO_STRUCT( registry_key );
-
- if ( (registry_key.name = talloc_strdup(regfile->mem_ctx, keypath)) == NULL )
- return WERR_NOMEM;
-
- if ( (registry_key.hook = reghook_cache_find( registry_key.name )) == NULL )
- return WERR_BADFILE;
-
- /* lookup the values and subkeys */
-
- if ( !(subkeys = TALLOC_ZERO_P( regfile->mem_ctx, REGSUBKEY_CTR )) )
- return WERR_NOMEM;
-
- if ( !(values = TALLOC_ZERO_P( subkeys, REGVAL_CTR )) )
- return WERR_NOMEM;
-
- fetch_reg_keys( &registry_key, subkeys );
- fetch_reg_values( &registry_key, values );
-
- /* write out this key */
-
- if ( !(key = regfio_write_key( regfile, keyname, values, subkeys, sec_desc, parent )) ) {
- result = WERR_CAN_NOT_COMPLETE;
- goto done;
- }
-
- /* write each one of the subkeys out */
-
- num_subkeys = regsubkey_ctr_numkeys( subkeys );
- for ( i=0; i<num_subkeys; i++ ) {
- subkeyname = regsubkey_ctr_specific_key( subkeys, i );
- pstr_sprintf( subkeypath, "%s\\%s", keypath, subkeyname );
- result = reg_write_tree( regfile, subkeypath, key, sec_desc );
- if ( !W_ERROR_IS_OK(result) )
- goto done;
- }
-
- DEBUG(6,("reg_write_tree: wrote key [%s]\n", keypath ));
-
-done:
- TALLOC_FREE( subkeys );
- TALLOC_FREE( registry_key.name );
-
- return result;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-static WERROR make_default_reg_sd( TALLOC_CTX *ctx, SEC_DESC **psd )
-{
- DOM_SID adm_sid, owner_sid;
- SEC_ACE ace[2]; /* at most 2 entries */
- SEC_ACCESS mask;
- SEC_ACL *psa = NULL;
- size_t sd_size;
-
- /* set the owner to BUILTIN\Administrator */
-
- sid_copy(&owner_sid, &global_sid_Builtin);
- sid_append_rid(&owner_sid, DOMAIN_USER_RID_ADMIN );
-
-
- /* basic access for Everyone */
-
- init_sec_access(&mask, reg_generic_map.generic_execute | reg_generic_map.generic_read );
- init_sec_ace(&ace[0], &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
-
- /* add Full Access 'BUILTIN\Administrators' */
-
- init_sec_access(&mask, reg_generic_map.generic_all);
- sid_copy(&adm_sid, &global_sid_Builtin);
- sid_append_rid(&adm_sid, BUILTIN_ALIAS_RID_ADMINS);
- init_sec_ace(&ace[1], &adm_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
-
- /* create the security descriptor */
-
- if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 2, ace)) == NULL)
- return WERR_NOMEM;
-
- if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, &owner_sid, NULL, NULL, psa, &sd_size)) == NULL)
- return WERR_NOMEM;
-
- return WERR_OK;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-static WERROR backup_registry_key ( REGISTRY_KEY *krecord, const char *fname )
-{
- REGF_FILE *regfile;
- WERROR result;
- SEC_DESC *sd = NULL;
-
- /* open the registry file....fail if the file already exists */
-
- if ( !(regfile = regfio_open( fname, (O_RDWR|O_CREAT|O_EXCL), (S_IREAD|S_IWRITE) )) ) {
- DEBUG(0,("backup_registry_key: failed to open \"%s\" (%s)\n",
- fname, strerror(errno) ));
- return ( ntstatus_to_werror(map_nt_error_from_unix( errno )) );
- }
-
- if ( !W_ERROR_IS_OK(result = make_default_reg_sd( regfile->mem_ctx, &sd )) ) {
- regfio_close( regfile );
- return result;
- }
-
- /* write the registry tree to the file */
-
- result = reg_write_tree( regfile, krecord->name, NULL, sd );
-
- /* cleanup */
-
- regfio_close( regfile );
-
- return result;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_SaveKey(pipes_struct *p, struct winreg_SaveKey *r)
-{
- struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
- pstring fname;
- int snum;
-
- if ( !regkey )
- return WERR_BADFID;
-
- if ( !r->in.filename || !r->in.filename->name )
- return WERR_INVALID_PARAM;
-
- pstrcpy( fname, r->in.filename->name );
-
- DEBUG(8,("_winreg_SaveKey: verifying backup of key [%s] to \"%s\"\n",
- regkey->key->name, fname));
-
- if ( (snum = validate_reg_filename( fname )) == -1 )
- return WERR_OBJECT_PATH_INVALID;
-
- DEBUG(2,("_winreg_SaveKey: Saving [%s] to %s in share %s\n",
- regkey->key->name, fname, lp_servicename(snum) ));
-
- return backup_registry_key( regkey->key, fname );
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_SaveKeyEx(pipes_struct *p, struct winreg_SaveKeyEx *r)
-{
- /* fill in your code here if you think this call should
- do anything */
-
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_CreateKey( pipes_struct *p, struct winreg_CreateKey *r)
-{
- struct registry_key *parent = find_regkey_by_hnd(p, r->in.handle);
- struct registry_key *new_key;
- WERROR result;
-
- if ( !parent )
- return WERR_BADFID;
-
- result = reg_createkey(NULL, parent, r->in.name.name, r->in.access_mask,
- &new_key, r->out.action_taken);
- if (!W_ERROR_IS_OK(result)) {
- return result;
- }
-
- if (!create_policy_hnd(p, r->out.new_handle, free_regkey, new_key)) {
- TALLOC_FREE(new_key);
- return WERR_BADFILE;
- }
-
- return WERR_OK;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_SetValue(pipes_struct *p, struct winreg_SetValue *r)
-{
- struct registry_key *key = find_regkey_by_hnd(p, r->in.handle);
- struct registry_value *val;
- WERROR status;
-
- if ( !key )
- return WERR_BADFID;
-
- DEBUG(8,("_reg_set_value: Setting value for [%s:%s]\n",
- key->key->name, r->in.name.name));
-
- status = registry_pull_value(p->mem_ctx, &val, r->in.type, r->in.data,
- r->in.size, r->in.size);
- if (!W_ERROR_IS_OK(status)) {
- return status;
- }
-
- return reg_setvalue(key, r->in.name.name, val);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_DeleteKey(pipes_struct *p, struct winreg_DeleteKey *r)
-{
- struct registry_key *parent = find_regkey_by_hnd(p, r->in.handle);
-
- if ( !parent )
- return WERR_BADFID;
-
- return reg_deletekey(parent, r->in.key.name);
-}
-
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_DeleteValue(pipes_struct *p, struct winreg_DeleteValue *r)
-{
- struct registry_key *key = find_regkey_by_hnd(p, r->in.handle);
-
- if ( !key )
- return WERR_BADFID;
-
- return reg_deletevalue(key, r->in.value.name);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_GetKeySecurity(pipes_struct *p, struct winreg_GetKeySecurity *r)
-{
- struct registry_key *key = find_regkey_by_hnd(p, r->in.handle);
- WERROR err;
- struct security_descriptor *secdesc;
- uint8 *data;
- size_t len;
-
- if ( !key )
- return WERR_BADFID;
-
- /* access checks first */
-
- if ( !(key->key->access_granted & STD_RIGHT_READ_CONTROL_ACCESS) )
- return WERR_ACCESS_DENIED;
-
- err = regkey_get_secdesc(p->mem_ctx, key->key, &secdesc);
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- err = ntstatus_to_werror(marshall_sec_desc(p->mem_ctx, secdesc,
- &data, &len));
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- if (len > r->out.sd->size) {
- r->out.sd->size = len;
- return WERR_INSUFFICIENT_BUFFER;
- }
-
- r->out.sd->size = len;
- r->out.sd->len = len;
- r->out.sd->data = data;
-
- return WERR_OK;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_SetKeySecurity(pipes_struct *p, struct winreg_SetKeySecurity *r)
-{
- struct registry_key *key = find_regkey_by_hnd(p, r->in.handle);
- struct security_descriptor *secdesc;
- WERROR err;
-
- if ( !key )
- return WERR_BADFID;
-
- /* access checks first */
-
- if ( !(key->key->access_granted & STD_RIGHT_WRITE_DAC_ACCESS) )
- return WERR_ACCESS_DENIED;
-
- err = ntstatus_to_werror(unmarshall_sec_desc(p->mem_ctx, r->in.sd->data,
- r->in.sd->len, &secdesc));
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- return regkey_set_secdesc(key->key, secdesc);
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_FlushKey(pipes_struct *p, struct winreg_FlushKey *r)
-{
- /* I'm just replying OK because there's not a lot
- here I see to do i --jerry */
-
- return WERR_OK;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_UnLoadKey(pipes_struct *p, struct winreg_UnLoadKey *r)
-{
- /* fill in your code here if you think this call should
- do anything */
-
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_ReplaceKey(pipes_struct *p, struct winreg_ReplaceKey *r)
-{
- /* fill in your code here if you think this call should
- do anything */
-
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_LoadKey(pipes_struct *p, struct winreg_LoadKey *r)
-{
- /* fill in your code here if you think this call should
- do anything */
-
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_NotifyChangeKeyValue(pipes_struct *p, struct winreg_NotifyChangeKeyValue *r)
-{
- /* fill in your code here if you think this call should
- do anything */
-
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_QueryMultipleValues(pipes_struct *p, struct winreg_QueryMultipleValues *r)
-{
- /* fill in your code here if you think this call should
- do anything */
-
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
-/*******************************************************************
- ********************************************************************/
-
-WERROR _winreg_QueryMultipleValues2(pipes_struct *p, struct winreg_QueryMultipleValues2 *r)
-{
- /* fill in your code here if you think this call should
- do anything */
-
- p->rng_fault_state = True;
- return WERR_NOT_SUPPORTED;
-}
-
diff --git a/source/rpcclient/cmd_dfs.c b/source/rpcclient/cmd_dfs.c
index 8564e93bd3b..75543df267e 100644
--- a/source/rpcclient/cmd_dfs.c
+++ b/source/rpcclient/cmd_dfs.c
@@ -25,10 +25,10 @@
/* Check DFS is supported by the remote server */
-static NTSTATUS cmd_dfs_version(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
+static NTSTATUS cmd_dfs_exist(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ int argc, const char **argv)
{
- enum dfs_ManagerVersion version;
+ uint32 dfs_exists;
NTSTATUS result;
if (argc != 1) {
@@ -36,19 +36,12 @@ static NTSTATUS cmd_dfs_version(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
return NT_STATUS_OK;
}
- result = rpccli_dfs_GetManagerVersion(cli, mem_ctx, &version);
+ result = rpccli_dfs_GetManagerVersion(cli, mem_ctx, &dfs_exists);
- if (!NT_STATUS_IS_OK(result)) {
- return result;
- }
-
- if (version > 0) {
- printf("dfs is present (%d)\n", version);
- } else {
- printf("dfs is not present\n");
- }
+ if (NT_STATUS_IS_OK(result))
+ printf("dfs is %spresent\n", dfs_exists ? "" : "not ");
- return NT_STATUS_OK;
+ return result;
}
static NTSTATUS cmd_dfs_add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
@@ -98,17 +91,25 @@ static NTSTATUS cmd_dfs_remove(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
/* Display a DFS_INFO_1 structure */
-static void display_dfs_info_1(struct dfs_Info1 *info1)
+static void display_dfs_info_1(NETDFS_DFS_INFO1 *info1)
{
- printf("path: %s\n", info1->path);
+ fstring temp;
+
+ unistr2_to_ascii(temp, &info1->path, sizeof(temp) - 1);
+ printf("path: %s\n", temp);
}
/* Display a DFS_INFO_2 structure */
-static void display_dfs_info_2(struct dfs_Info2 *info2)
+static void display_dfs_info_2(NETDFS_DFS_INFO2 *info2)
{
- printf("path: %s\n", info2->path);
- printf("\tcomment: %s\n", info2->comment);
+ fstring temp;
+
+ unistr2_to_ascii(temp, &info2->path, sizeof(temp) - 1);
+ printf("path: %s\n", temp);
+
+ unistr2_to_ascii(temp, &info2->comment, sizeof(temp) - 1);
+ printf("\tcomment: %s\n", temp);
printf("\tstate: %d\n", info2->state);
printf("\tnum_stores: %d\n", info2->num_stores);
@@ -116,57 +117,62 @@ static void display_dfs_info_2(struct dfs_Info2 *info2)
/* Display a DFS_INFO_3 structure */
-static void display_dfs_info_3(struct dfs_Info3 *info3)
+static void display_dfs_info_3(NETDFS_DFS_INFO3 *info3)
{
+ fstring temp;
int i;
- printf("path: %s\n", info3->path);
+ unistr2_to_ascii(temp, &info3->path, sizeof(temp) - 1);
+ printf("path: %s\n", temp);
- printf("\tcomment: %s\n", info3->comment);
+ unistr2_to_ascii(temp, &info3->comment, sizeof(temp) - 1);
+ printf("\tcomment: %s\n", temp);
printf("\tstate: %d\n", info3->state);
printf("\tnum_stores: %d\n", info3->num_stores);
for (i = 0; i < info3->num_stores; i++) {
- struct dfs_StorageInfo *dsi = &info3->stores[i];
+ NETDFS_DFS_STORAGEINFO *dsi = &info3->stores[i];
- printf("\t\tstorage[%d] server: %s\n", i, dsi->server);
+ unistr2_to_ascii(temp, &dsi->server, sizeof(temp) - 1);
+ printf("\t\tstorage[%d] server: %s\n", i, temp);
- printf("\t\tstorage[%d] share: %s\n", i, dsi->share);
+ unistr2_to_ascii(temp, &dsi->share, sizeof(temp) - 1);
+ printf("\t\tstorage[%d] share: %s\n", i, temp);
}
}
/* Display a DFS_INFO_CTR structure */
-static void display_dfs_info(uint32 level, union dfs_Info *ctr)
+static void display_dfs_info(NETDFS_DFS_INFO_CTR *ctr)
{
- switch (level) {
+ switch (ctr->switch_value) {
case 0x01:
- display_dfs_info_1(ctr->info1);
+ display_dfs_info_1(&ctr->u.info1);
break;
case 0x02:
- display_dfs_info_2(ctr->info2);
+ display_dfs_info_2(&ctr->u.info2);
break;
case 0x03:
- display_dfs_info_3(ctr->info3);
+ display_dfs_info_3(&ctr->u.info3);
break;
default:
printf("unsupported info level %d\n",
- level);
+ ctr->switch_value);
break;
}
}
-static void display_dfs_enumstruct(struct dfs_EnumStruct *ctr)
+static void display_dfs_enumstruct(NETDFS_DFS_ENUMSTRUCT *ctr)
{
int i;
/* count is always the first element, so we can just use info1 here */
- for (i = 0; i < ctr->e.info1->count; i++) {
+ for (i = 0; i < ctr->e.u.info1.count; i++) {
switch (ctr->level) {
- case 1: display_dfs_info_1(&ctr->e.info1->s[i]); break;
- case 2: display_dfs_info_2(&ctr->e.info2->s[i]); break;
- case 3: display_dfs_info_3(&ctr->e.info3->s[i]); break;
+ case 1: display_dfs_info_1(&ctr->e.u.info1.s[i]); break;
+ case 2: display_dfs_info_2(&ctr->e.u.info2.s[i]); break;
+ case 3: display_dfs_info_3(&ctr->e.u.info3.s[i]); break;
default:
printf("unsupported info level %d\n",
ctr->level);
@@ -180,15 +186,10 @@ static void display_dfs_enumstruct(struct dfs_EnumStruct *ctr)
static NTSTATUS cmd_dfs_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
- struct dfs_EnumStruct str;
- struct dfs_EnumArray1 info1;
- struct dfs_EnumArray2 info2;
- struct dfs_EnumArray3 info3;
- struct dfs_EnumArray4 info4;
- struct dfs_EnumArray200 info200;
- struct dfs_EnumArray300 info300;
-
+ NETDFS_DFS_ENUMSTRUCT str;
+ NETDFS_DFS_ENUMINFO_CTR ctr;
NTSTATUS result;
+ uint32 info_level = 1;
uint32 total = 0;
if (argc > 2) {
@@ -196,69 +197,14 @@ static NTSTATUS cmd_dfs_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
return NT_STATUS_OK;
}
- str.level = 1;
if (argc == 2)
- str.level = atoi(argv[1]);
-
- switch (str.level) {
- case 1: str.e.info1 = &info1; ZERO_STRUCT(info1); break;
- case 2: str.e.info2 = &info2; ZERO_STRUCT(info2); break;
- case 3: str.e.info3 = &info3; ZERO_STRUCT(info3); break;
- case 4: str.e.info4 = &info4; ZERO_STRUCT(info4); break;
- case 200: str.e.info200 = &info200; ZERO_STRUCT(info200); break;
- case 300: str.e.info300 = &info300; ZERO_STRUCT(info300); break;
- default:
- printf("Unknown info level %d\n", str.level);
- break;
- }
-
- result = rpccli_dfs_Enum(cli, mem_ctx, str.level, 0xFFFFFFFF, &str,
- &total);
-
- if (NT_STATUS_IS_OK(result))
- display_dfs_enumstruct(&str);
+ info_level = atoi(argv[1]);
- return result;
-}
-
-/* Enumerate dfs shares */
+ ZERO_STRUCT(ctr);
+ init_netdfs_dfs_EnumStruct(&str, info_level, ctr);
+ str.e.ptr0 = 1;
-static NTSTATUS cmd_dfs_enumex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- struct dfs_EnumStruct str;
- struct dfs_EnumArray1 info1;
- struct dfs_EnumArray2 info2;
- struct dfs_EnumArray3 info3;
- struct dfs_EnumArray4 info4;
- struct dfs_EnumArray200 info200;
- struct dfs_EnumArray300 info300;
-
- NTSTATUS result;
- uint32 total = 0;
-
- if (argc < 2 || argc > 3) {
- printf("Usage: %s dfs_name [info_level]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (argc == 3)
- str.level = atoi(argv[2]);
-
- switch (str.level) {
- case 1: str.e.info1 = &info1; ZERO_STRUCT(info1); break;
- case 2: str.e.info2 = &info2; ZERO_STRUCT(info2); break;
- case 3: str.e.info3 = &info3; ZERO_STRUCT(info3); break;
- case 4: str.e.info4 = &info4; ZERO_STRUCT(info4); break;
- case 200: str.e.info200 = &info200; ZERO_STRUCT(info200); break;
- case 300: str.e.info300 = &info300; ZERO_STRUCT(info300); break;
- default:
- printf("Unknown info level %d\n", str.level);
- break;
- }
-
- result = rpccli_dfs_EnumEx(cli, mem_ctx, argv[1], str.level,
- 0xFFFFFFFF, &str, &total);
+ result = rpccli_dfs_Enum(cli, mem_ctx, info_level, 0xFFFFFFFF, &str, &total);
if (NT_STATUS_IS_OK(result))
display_dfs_enumstruct(&str);
@@ -266,14 +212,13 @@ static NTSTATUS cmd_dfs_enumex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
return result;
}
-
static NTSTATUS cmd_dfs_getinfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
NTSTATUS result;
const char *path, *servername, *sharename;
uint32 info_level = 1;
- union dfs_Info ctr;
+ NETDFS_DFS_INFO_CTR ctr;
if (argc < 4 || argc > 5) {
printf("Usage: %s path servername sharename "
@@ -292,7 +237,7 @@ static NTSTATUS cmd_dfs_getinfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
sharename, info_level, &ctr);
if (NT_STATUS_IS_OK(result))
- display_dfs_info(info_level, &ctr);
+ display_dfs_info(&ctr);
return result;
}
@@ -303,12 +248,11 @@ struct cmd_set dfs_commands[] = {
{ "DFS" },
- { "dfsversion", RPC_RTYPE_NTSTATUS, cmd_dfs_version, NULL, PI_NETDFS, NULL, "Query DFS support", "" },
+ { "dfsexist", RPC_RTYPE_NTSTATUS, cmd_dfs_exist, NULL, PI_NETDFS, NULL, "Query DFS support", "" },
{ "dfsadd", RPC_RTYPE_NTSTATUS, cmd_dfs_add, NULL, PI_NETDFS, NULL, "Add a DFS share", "" },
{ "dfsremove", RPC_RTYPE_NTSTATUS, cmd_dfs_remove, NULL, PI_NETDFS, NULL, "Remove a DFS share", "" },
{ "dfsgetinfo",RPC_RTYPE_NTSTATUS, cmd_dfs_getinfo, NULL, PI_NETDFS, NULL, "Query DFS share info", "" },
{ "dfsenum", RPC_RTYPE_NTSTATUS, cmd_dfs_enum, NULL, PI_NETDFS, NULL, "Enumerate dfs shares", "" },
- { "dfsenumex", RPC_RTYPE_NTSTATUS, cmd_dfs_enumex, NULL, PI_NETDFS, NULL, "Enumerate dfs shares", "" },
{ NULL }
};
diff --git a/source/rpcclient/cmd_echo.c b/source/rpcclient/cmd_echo.c
index f3fbd3737a8..6d608ebaf10 100644
--- a/source/rpcclient/cmd_echo.c
+++ b/source/rpcclient/cmd_echo.c
@@ -36,7 +36,7 @@ static NTSTATUS cmd_echo_add_one(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
if (argc == 2)
request = atoi(argv[1]);
- result = rpccli_echo_AddOne(cli, mem_ctx, request, &response);
+ result = rpccli_echo_add_one(cli, mem_ctx, request, &response);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -52,7 +52,7 @@ static NTSTATUS cmd_echo_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
{
uint32 size, i;
NTSTATUS result;
- uint8_t *in_data = NULL, *out_data = NULL;
+ char *in_data = NULL, *out_data = NULL;
if (argc != 2) {
printf("Usage: %s num\n", argv[0]);
@@ -60,23 +60,12 @@ static NTSTATUS cmd_echo_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
}
size = atoi(argv[1]);
- if ( (in_data = (uint8_t*)SMB_MALLOC(size)) == NULL ) {
- printf("Failure to allocate buff of %d bytes\n",
- size);
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
- if ( (out_data = (uint8_t*)SMB_MALLOC(size)) == NULL ) {
- printf("Failure to allocate buff of %d bytes\n",
- size);
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
+ in_data = SMB_MALLOC(size);
for (i = 0; i < size; i++)
in_data[i] = i & 0xff;
- result = rpccli_echo_EchoData(cli, mem_ctx, size, in_data, out_data);
+ result = rpccli_echo_data(cli, mem_ctx, size, in_data, &out_data);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -91,7 +80,6 @@ static NTSTATUS cmd_echo_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
done:
SAFE_FREE(in_data);
- SAFE_FREE(out_data);
return result;
}
@@ -102,7 +90,7 @@ static NTSTATUS cmd_echo_source_data(struct rpc_pipe_client *cli,
{
uint32 size, i;
NTSTATUS result;
- uint8_t *out_data = NULL;
+ char *out_data = NULL;
if (argc != 2) {
printf("Usage: %s num\n", argv[0]);
@@ -110,15 +98,8 @@ static NTSTATUS cmd_echo_source_data(struct rpc_pipe_client *cli,
}
size = atoi(argv[1]);
- if ( (out_data = (uint8_t*)SMB_MALLOC(size)) == NULL ) {
- printf("Failure to allocate buff of %d bytes\n",
- size);
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- result = rpccli_echo_SourceData(cli, mem_ctx, size, out_data);
+ result = rpccli_echo_source_data(cli, mem_ctx, size, &out_data);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -140,7 +121,7 @@ static NTSTATUS cmd_echo_sink_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
{
uint32 size, i;
NTSTATUS result;
- uint8_t *in_data = NULL;
+ char *in_data = NULL;
if (argc != 2) {
printf("Usage: %s num\n", argv[0]);
@@ -148,17 +129,12 @@ static NTSTATUS cmd_echo_sink_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
}
size = atoi(argv[1]);
- if ( (in_data = (uint8_t*)SMB_MALLOC(size)) == NULL ) {
- printf("Failure to allocate buff of %d bytes\n",
- size);
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
+ in_data = SMB_MALLOC(size);
for (i = 0; i < size; i++)
in_data[i] = i & 0xff;
- result = rpccli_echo_SinkData(cli, mem_ctx, size, in_data);
+ result = rpccli_echo_sink_data(cli, mem_ctx, size, in_data);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -175,9 +151,9 @@ struct cmd_set echo_commands[] = {
{ "ECHO" },
- { "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one, NULL, PI_RPCECHO, NULL, "Add one to a number", "" },
- { "echodata", RPC_RTYPE_NTSTATUS, cmd_echo_data, NULL, PI_RPCECHO, NULL, "Echo data", "" },
- { "sinkdata", RPC_RTYPE_NTSTATUS, cmd_echo_sink_data, NULL, PI_RPCECHO, NULL, "Sink data", "" },
- { "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, PI_RPCECHO, NULL, "Source data", "" },
+ { "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one, NULL, PI_ECHO, NULL, "Add one to a number", "" },
+ { "echodata", RPC_RTYPE_NTSTATUS, cmd_echo_data, NULL, PI_ECHO, NULL, "Echo data", "" },
+ { "sinkdata", RPC_RTYPE_NTSTATUS, cmd_echo_sink_data, NULL, PI_ECHO, NULL, "Sink data", "" },
+ { "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, PI_ECHO, NULL, "Source data", "" },
{ NULL }
};
diff --git a/source/rpcclient/cmd_lsarpc.c b/source/rpcclient/cmd_lsarpc.c
index ebde4b873f8..a130def4f57 100644
--- a/source/rpcclient/cmd_lsarpc.c
+++ b/source/rpcclient/cmd_lsarpc.c
@@ -47,11 +47,11 @@ static NTSTATUS name_to_sid(struct rpc_pipe_client *cli,
if (!NT_STATUS_IS_OK(result))
goto done;
- result = rpccli_lsa_lookup_names(cli, mem_ctx, &pol, 1, &name, NULL, 1, &sids, &sid_types);
+ result = rpccli_lsa_lookup_names(cli, mem_ctx, &pol, 1, &name, NULL, &sids, &sid_types);
if (!NT_STATUS_IS_OK(result))
goto done;
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
*sid = sids[0];
@@ -208,7 +208,7 @@ static NTSTATUS cmd_lsa_query_info_policy(struct rpc_pipe_client *cli,
display_lsa_query_info(&dom, mem_ctx);
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
@@ -239,7 +239,7 @@ static NTSTATUS cmd_lsa_lookup_names(struct rpc_pipe_client *cli,
goto done;
result = rpccli_lsa_lookup_names(cli, mem_ctx, &pol, argc - 1,
- (const char**)(argv + 1), NULL, 1, &sids, &types);
+ (const char**)(argv + 1), NULL, &sids, &types);
if (!NT_STATUS_IS_OK(result) && NT_STATUS_V(result) !=
NT_STATUS_V(STATUS_SOME_UNMAPPED))
@@ -256,63 +256,12 @@ static NTSTATUS cmd_lsa_lookup_names(struct rpc_pipe_client *cli,
sid_type_lookup(types[i]), types[i]);
}
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
}
-/* Resolve a list of names to a list of sids */
-
-static NTSTATUS cmd_lsa_lookup_names_level(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx, int argc,
- const char **argv)
-{
- POLICY_HND pol;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- DOM_SID *sids;
- enum lsa_SidType *types;
- int i, level;
-
- if (argc < 3) {
- printf("Usage: %s [level] [name1 [name2 [...]]]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- result = rpccli_lsa_open_policy(cli, mem_ctx, True,
- SEC_RIGHTS_MAXIMUM_ALLOWED,
- &pol);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- level = atoi(argv[1]);
-
- result = rpccli_lsa_lookup_names(cli, mem_ctx, &pol, argc - 2,
- (const char**)(argv + 2), NULL, level, &sids, &types);
-
- if (!NT_STATUS_IS_OK(result) && NT_STATUS_V(result) !=
- NT_STATUS_V(STATUS_SOME_UNMAPPED))
- goto done;
-
- result = NT_STATUS_OK;
-
- /* Print results */
-
- for (i = 0; i < (argc - 2); i++) {
- fstring sid_str;
- sid_to_string(sid_str, &sids[i]);
- printf("%s %s (%s: %d)\n", argv[i + 2], sid_str,
- sid_type_lookup(types[i]), types[i]);
- }
-
- rpccli_lsa_Close(cli, mem_ctx, &pol);
-
- done:
- return result;
-}
-
-
/* Resolve a list of SIDs to a list of names */
static NTSTATUS cmd_lsa_lookup_sids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
@@ -375,7 +324,7 @@ static NTSTATUS cmd_lsa_lookup_sids(struct rpc_pipe_client *cli, TALLOC_CTX *mem
names[i] ? names[i] : "*unknown*", types[i]);
}
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
@@ -438,7 +387,7 @@ static NTSTATUS cmd_lsa_enum_trust_dom(struct rpc_pipe_client *cli,
}
}
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
}
@@ -492,7 +441,7 @@ static NTSTATUS cmd_lsa_enum_privilege(struct rpc_pipe_client *cli,
privs_high[i], privs_low[i], privs_high[i], privs_low[i]);
}
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
}
@@ -531,7 +480,7 @@ static NTSTATUS cmd_lsa_get_dispname(struct rpc_pipe_client *cli,
/* Print results */
printf("%s -> %s (language: 0x%x)\n", argv[1], description, lang_id_desc);
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
}
@@ -585,7 +534,7 @@ static NTSTATUS cmd_lsa_enum_sids(struct rpc_pipe_client *cli,
printf("%s\n", sid_str);
}
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
}
@@ -627,7 +576,7 @@ static NTSTATUS cmd_lsa_create_account(struct rpc_pipe_client *cli,
printf("Account for SID %s successfully created\n\n", argv[1]);
result = NT_STATUS_OK;
- rpccli_lsa_Close(cli, mem_ctx, &dom_pol);
+ rpccli_lsa_close(cli, mem_ctx, &dom_pol);
done:
return result;
}
@@ -683,7 +632,7 @@ static NTSTATUS cmd_lsa_enum_privsaccounts(struct rpc_pipe_client *cli,
printf("%u\t%u\t%u\n", set[i].luid.high, set[i].luid.low, set[i].attr);
}
- rpccli_lsa_Close(cli, mem_ctx, &dom_pol);
+ rpccli_lsa_close(cli, mem_ctx, &dom_pol);
done:
return result;
}
@@ -731,7 +680,7 @@ static NTSTATUS cmd_lsa_enum_acct_rights(struct rpc_pipe_client *cli,
printf("\t%s\n", rights[i]);
}
- rpccli_lsa_Close(cli, mem_ctx, &dom_pol);
+ rpccli_lsa_close(cli, mem_ctx, &dom_pol);
done:
return result;
}
@@ -770,7 +719,7 @@ static NTSTATUS cmd_lsa_add_acct_rights(struct rpc_pipe_client *cli,
if (!NT_STATUS_IS_OK(result))
goto done;
- rpccli_lsa_Close(cli, mem_ctx, &dom_pol);
+ rpccli_lsa_close(cli, mem_ctx, &dom_pol);
done:
return result;
}
@@ -809,7 +758,7 @@ static NTSTATUS cmd_lsa_remove_acct_rights(struct rpc_pipe_client *cli,
if (!NT_STATUS_IS_OK(result))
goto done;
- rpccli_lsa_Close(cli, mem_ctx, &dom_pol);
+ rpccli_lsa_close(cli, mem_ctx, &dom_pol);
done:
return result;
@@ -847,7 +796,7 @@ static NTSTATUS cmd_lsa_lookup_priv_value(struct rpc_pipe_client *cli,
printf("%u:%u (0x%x:0x%x)\n", luid.high, luid.low, luid.high, luid.low);
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
}
@@ -885,9 +834,9 @@ static NTSTATUS cmd_lsa_query_secobj(struct rpc_pipe_client *cli,
/* Print results */
- display_sec_desc(sdb->sd);
+ display_sec_desc(sdb->sec);
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
done:
return result;
}
@@ -995,7 +944,7 @@ static NTSTATUS cmd_lsa_query_trustdominfobysid(struct rpc_pipe_client *cli,
done:
if (&pol)
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
return result;
}
@@ -1033,7 +982,7 @@ static NTSTATUS cmd_lsa_query_trustdominfobyname(struct rpc_pipe_client *cli,
done:
if (&pol)
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
return result;
}
@@ -1082,7 +1031,7 @@ static NTSTATUS cmd_lsa_query_trustdominfo(struct rpc_pipe_client *cli,
done:
if (&pol)
- rpccli_lsa_Close(cli, mem_ctx, &pol);
+ rpccli_lsa_close(cli, mem_ctx, &pol);
return result;
}
@@ -1098,7 +1047,6 @@ struct cmd_set lsarpc_commands[] = {
{ "lsaquery", RPC_RTYPE_NTSTATUS, cmd_lsa_query_info_policy, NULL, PI_LSARPC, NULL, "Query info policy", "" },
{ "lookupsids", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_sids, NULL, PI_LSARPC, NULL, "Convert SIDs to names", "" },
{ "lookupnames", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names, NULL, PI_LSARPC, NULL, "Convert names to SIDs", "" },
- { "lookupnames_level", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names_level, NULL, PI_LSARPC, NULL, "Convert names to SIDs", "" },
{ "enumtrust", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_trust_dom, NULL, PI_LSARPC, NULL, "Enumerate trusted domains", "Usage: [preferred max number] [enum context (0)]" },
{ "enumprivs", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privilege, NULL, PI_LSARPC, NULL, "Enumerate privileges", "" },
{ "getdispname", RPC_RTYPE_NTSTATUS, cmd_lsa_get_dispname, NULL, PI_LSARPC, NULL, "Get the privilege name", "" },
diff --git a/source/rpcclient/cmd_netlogon.c b/source/rpcclient/cmd_netlogon.c
index 93b900e25ee..c6ace9ae541 100644
--- a/source/rpcclient/cmd_netlogon.c
+++ b/source/rpcclient/cmd_netlogon.c
@@ -51,51 +51,14 @@ static WERROR cmd_netlogon_getanydcname(struct rpc_pipe_client *cli,
{
fstring dcname;
WERROR result = WERR_GENERAL_FAILURE;
- int old_timeout;
if (argc != 2) {
fprintf(stderr, "Usage: %s domainname\n", argv[0]);
return WERR_OK;
}
- /* Make sure to wait for our DC's reply */
- old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
-
result = rpccli_netlogon_getanydcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
- cli_set_timeout(cli->cli, old_timeout);
-
- if (!W_ERROR_IS_OK(result))
- goto done;
-
- /* Display results */
-
- printf("%s\n", dcname);
-
- done:
- return result;
-}
-
-static WERROR cmd_netlogon_getdcname(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx, int argc,
- const char **argv)
-{
- fstring dcname;
- WERROR result = WERR_GENERAL_FAILURE;
- int old_timeout;
-
- if (argc != 2) {
- fprintf(stderr, "Usage: %s domainname\n", argv[0]);
- return WERR_OK;
- }
-
- /* Make sure to wait for our DC's reply */
- old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
-
- result = rpccli_netlogon_getdcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
-
- cli_set_timeout(cli->cli, old_timeout);
-
if (!W_ERROR_IS_OK(result))
goto done;
@@ -254,7 +217,7 @@ static WERROR cmd_netlogon_dsr_getdcnameex2(struct rpc_pipe_client *cli,
WERROR result;
uint32 flags = DS_RETURN_DNS_NAME;
const char *server_name = cli->cli->desthost;
- const char *domain_name = NULL;
+ const char *domain_name;
const char *client_account = NULL;
uint32 mask = 0;
const char *site_name = NULL;
@@ -580,7 +543,6 @@ struct cmd_set netlogon_commands[] = {
{ "logonctrl2", RPC_RTYPE_NTSTATUS, cmd_netlogon_logon_ctrl2, NULL, PI_NETLOGON, NULL, "Logon Control 2", "" },
{ "getanydcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getanydcname, PI_NETLOGON, NULL, "Get trusted DC name", "" },
- { "getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcname, PI_NETLOGON, NULL, "Get trusted PDC name", "" },
{ "dsr_getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcname, PI_NETLOGON, NULL, "Get trusted DC name", "" },
{ "dsr_getdcnameex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex, PI_NETLOGON, NULL, "Get trusted DC name", "" },
{ "dsr_getdcnameex2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex2, PI_NETLOGON, NULL, "Get trusted DC name", "" },
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 3785fdd5f4b..dd55e65fb97 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -1208,14 +1208,13 @@ static NTSTATUS cmd_samr_delete_alias(struct rpc_pipe_client *cli,
/* Query display info */
-static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv,
- int opcode)
+static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ int argc, const char **argv)
{
POLICY_HND connect_pol, domain_pol;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- uint32 start_idx=0, max_entries=250, max_size = (uint32) -1, num_entries, i;
+ uint32 start_idx=0, max_entries=250, max_size = 0xffff, num_entries, i;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
uint32 info_level = 1;
SAM_DISPINFO_CTR ctr;
@@ -1251,7 +1250,6 @@ static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
if (argc >= 6)
sscanf(argv[5], "%x", &access_mask);
-
/* Get sam policy handle */
result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
@@ -1303,31 +1301,11 @@ static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
if (!got_params)
get_query_dispinfo_params(
loop_count, &max_entries, &max_size);
-
- switch (opcode) {
- case SAMR_QUERY_DISPINFO:
- result = rpccli_samr_query_dispinfo(cli, mem_ctx, &domain_pol,
- &start_idx, info_level,
- &num_entries, max_entries,
- max_size, &ctr);
- break;
- case SAMR_QUERY_DISPINFO2:
- result = rpccli_samr_query_dispinfo2(cli, mem_ctx, &domain_pol,
- &start_idx, info_level,
- &num_entries, max_entries,
- max_size, &ctr);
- break;
- case SAMR_QUERY_DISPINFO3:
- result = rpccli_samr_query_dispinfo3(cli, mem_ctx, &domain_pol,
- &start_idx, info_level,
- &num_entries, max_entries,
- max_size, &ctr);
- break;
- default:
- printf("unknown opcode: %d\n", opcode);
- return NT_STATUS_INVALID_PARAMETER;
- break;
- }
+
+ result = rpccli_samr_query_dispinfo(cli, mem_ctx, &domain_pol,
+ &start_idx, info_level,
+ &num_entries, max_entries,
+ max_size, &ctr);
loop_count++;
@@ -1364,114 +1342,6 @@ static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
return result;
}
-static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_query_dispinfo_int(cli, mem_ctx, argc, argv, SAMR_QUERY_DISPINFO);
-}
-
-static NTSTATUS cmd_samr_query_dispinfo2(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_query_dispinfo_int(cli, mem_ctx, argc, argv, SAMR_QUERY_DISPINFO2);
-}
-
-static NTSTATUS cmd_samr_query_dispinfo3(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_query_dispinfo_int(cli, mem_ctx, argc, argv, SAMR_QUERY_DISPINFO3);
-}
-
-/* Query display info index */
-
-static NTSTATUS cmd_samr_get_dispenum_index_int(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv,
- int opcode)
-{
- POLICY_HND connect_pol, domain_pol;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
- uint16 info_level = 1;
- uint32 idx;
-
- if (argc < 2 || argc > 3) {
- printf("Usage: %s name [info level]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (argc >= 3) {
- sscanf(argv[2], "%hd", &info_level);
- }
-
- /* Get sam policy handle */
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
-
- if (!NT_STATUS_IS_OK(result)) {
- goto done;
- }
-
- /* Get domain policy handle */
-
- result = rpccli_samr_open_domain(cli, mem_ctx, &connect_pol,
- access_mask,
- &domain_sid, &domain_pol);
-
- if (!NT_STATUS_IS_OK(result)) {
- goto done;
- }
-
- /* Query display info index */
-
- switch (opcode) {
- case SAMR_GET_DISPENUM_INDEX:
- result = rpccli_samr_get_dispenum_index(cli, mem_ctx, &domain_pol,
- info_level, argv[1], &idx);
- break;
- case SAMR_GET_DISPENUM_INDEX2:
- result = rpccli_samr_get_dispenum_index2(cli, mem_ctx, &domain_pol,
- info_level, argv[1], &idx);
- break;
- default:
- printf("unknown opcode\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (NT_STATUS_IS_ERR(result)) {
- goto done;
- };
-
- printf("idx is: %d (0x%08x)\n", idx, idx);
-
- rpccli_samr_close(cli, mem_ctx, &domain_pol);
- rpccli_samr_close(cli, mem_ctx, &connect_pol);
- done:
- return result;
-}
-
-/* Query display info index */
-
-static NTSTATUS cmd_samr_get_dispenum_index(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_get_dispenum_index_int(cli, mem_ctx, argc, argv, SAMR_GET_DISPENUM_INDEX);
-}
-
-/* Query display info index2 */
-
-static NTSTATUS cmd_samr_get_dispenum_index2(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_get_dispenum_index_int(cli, mem_ctx, argc, argv, SAMR_GET_DISPENUM_INDEX2);
-}
-
/* Query domain info */
static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
@@ -1906,78 +1776,6 @@ static NTSTATUS cmd_samr_lookup_rids(struct rpc_pipe_client *cli,
return result;
}
-/* Delete domain group */
-
-static NTSTATUS cmd_samr_delete_dom_group(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- POLICY_HND connect_pol, domain_pol, group_pol;
- uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
-
- if ((argc < 2) || (argc > 3)) {
- printf("Usage: %s groupname\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (argc > 2)
- sscanf(argv[2], "%x", &access_mask);
-
- /* Get sam policy and domain handles */
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- result = rpccli_samr_open_domain(cli, mem_ctx, &connect_pol,
- MAXIMUM_ALLOWED_ACCESS,
- &domain_sid, &domain_pol);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- /* Get handle on group */
-
- {
- uint32 *group_rids, num_rids, *name_types;
- uint32 flags = 0x000003e8; /* Unknown */
-
- result = rpccli_samr_lookup_names(cli, mem_ctx, &domain_pol,
- flags, 1, (const char **)&argv[1],
- &num_rids, &group_rids,
- &name_types);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- result = rpccli_samr_open_group(cli, mem_ctx, &domain_pol,
- access_mask,
- group_rids[0], &group_pol);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
- }
-
- /* Delete user */
-
- result = rpccli_samr_delete_dom_group(cli, mem_ctx, &group_pol);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- /* Display results */
-
- rpccli_samr_close(cli, mem_ctx, &group_pol);
- rpccli_samr_close(cli, mem_ctx, &domain_pol);
- rpccli_samr_close(cli, mem_ctx, &connect_pol);
-
- done:
- return result;
-}
-
/* Delete domain user */
static NTSTATUS cmd_samr_delete_dom_user(struct rpc_pipe_client *cli,
@@ -2128,7 +1926,7 @@ static NTSTATUS cmd_samr_query_sec_obj(struct rpc_pipe_client *cli,
if (!NT_STATUS_IS_OK(result))
goto done;
- display_sec_desc(sec_desc_buf->sd);
+ display_sec_desc(sec_desc_buf->sec);
rpccli_samr_close(cli, mem_ctx, &user_pol);
rpccli_samr_close(cli, mem_ctx, &domain_pol);
@@ -2409,10 +2207,6 @@ struct cmd_set samr_commands[] = {
{ "queryaliasmem", RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasmem, NULL, PI_SAMR, NULL, "Query alias membership", "" },
{ "deletealias", RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias, NULL, PI_SAMR, NULL, "Delete an alias", "" },
{ "querydispinfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo, NULL, PI_SAMR, NULL, "Query display info", "" },
- { "querydispinfo2", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, NULL, PI_SAMR, NULL, "Query display info 2", "" },
- { "querydispinfo3", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, NULL, PI_SAMR, NULL, "Query display info 3", "" },
- { "getdispenumindex", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispenum_index, NULL, PI_SAMR, NULL, "Query display info index", "" },
- { "getdispenumindex2", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispenum_index2, NULL, PI_SAMR, NULL, "Query display info index", "" },
{ "querydominfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, NULL, PI_SAMR, NULL, "Query domain info", "" },
{ "enumdomusers", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users, NULL, PI_SAMR, NULL, "Enumerate domain users", "" },
{ "enumdomgroups", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups, NULL, PI_SAMR, NULL, "Enumerate domain groups", "" },
@@ -2423,7 +2217,6 @@ struct cmd_set samr_commands[] = {
{ "createdomalias", RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_alias, NULL, PI_SAMR, NULL, "Create domain alias", "" },
{ "samlookupnames", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_names, NULL, PI_SAMR, NULL, "Look up names", "" },
{ "samlookuprids", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_rids, NULL, PI_SAMR, NULL, "Look up names", "" },
- { "deletedomgroup", RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_group, NULL, PI_SAMR, NULL, "Delete domain group", "" },
{ "deletedomuser", RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_user, NULL, PI_SAMR, NULL, "Delete domain user", "" },
{ "samquerysecobj", RPC_RTYPE_NTSTATUS, cmd_samr_query_sec_obj, NULL, PI_SAMR, NULL, "Query SAMR security object", "" },
{ "getdompwinfo", RPC_RTYPE_NTSTATUS, cmd_samr_get_dom_pwinfo, NULL, PI_SAMR, NULL, "Retrieve domain password info", "" },
diff --git a/source/rpcclient/cmd_shutdown.c b/source/rpcclient/cmd_shutdown.c
index 8219efffee9..b0b92949c2a 100644
--- a/source/rpcclient/cmd_shutdown.c
+++ b/source/rpcclient/cmd_shutdown.c
@@ -108,10 +108,10 @@ struct cmd_set shutdown_commands[] = {
{ "SHUTDOWN" },
#if 0
- { "shutdowninit", RPC_RTYPE_NTSTATUS, cmd_shutdown_init, NULL, PI_INITSHUTDOWN, "Remote Shutdown (over shutdown pipe)",
+ { "shutdowninit", RPC_RTYPE_NTSTATUS, cmd_shutdown_init, NULL, PI_SHUTDOWN, "Remote Shutdown (over shutdown pipe)",
"syntax: shutdown [-m message] [-t timeout] [-r] [-h] [-f] (-r == reboot, -h == halt, -f == force)" },
- { "shutdownabort", RPC_RTYPE_NTSTATUS, cmd_shutdown_abort, NULL, PI_INITSHUTDOWN, "Abort Shutdown (over shutdown pipe)",
+ { "shutdownabort", RPC_RTYPE_NTSTATUS, cmd_shutdown_abort, NULL, PI_SHUTDOWN, "Abort Shutdown (over shutdown pipe)",
"syntax: shutdownabort" },
#endif
{ NULL }
diff --git a/source/rpcclient/cmd_spoolss.c b/source/rpcclient/cmd_spoolss.c
index a16c7ea5207..41e27c16822 100644
--- a/source/rpcclient/cmd_spoolss.c
+++ b/source/rpcclient/cmd_spoolss.c
@@ -707,22 +707,17 @@ static void display_reg_value(REGISTRY_VALUE value)
break;
}
case REG_MULTI_SZ: {
- uint32 i, num_values;
- char **values;
-
- if (!W_ERROR_IS_OK(reg_pull_multi_sz(NULL, value.data_p,
- value.size, &num_values,
- &values))) {
- d_printf("reg_pull_multi_sz failed\n");
- break;
+ uint16 *curstr = (uint16 *) value.data_p;
+ uint8 *start = value.data_p;
+ printf("%s: REG_MULTI_SZ:\n", value.valuename);
+ while (((uint8 *) curstr < start + value.size)) {
+ rpcstr_pull(text, curstr, sizeof(text), -1,
+ STR_TERMINATE);
+ printf(" %s\n", *text != 0 ? text : "NULL");
+ curstr += strlen(text) + 1;
}
-
- for (i=0; i<num_values; i++) {
- d_printf("%s\n", values[i]);
- }
- TALLOC_FREE(values);
- break;
}
+ break;
default:
printf("%s: unknown type %d\n", value.valuename, value.type);
}
diff --git a/source/rpcclient/cmd_srvsvc.c b/source/rpcclient/cmd_srvsvc.c
index 87b0fb35316..53ee7300da3 100644
--- a/source/rpcclient/cmd_srvsvc.c
+++ b/source/rpcclient/cmd_srvsvc.c
@@ -131,61 +131,74 @@ static char *get_server_type_str(uint32 type)
return typestr;
}
-static void display_server(const char *sname, uint32 type, const char *comment)
+static void display_server(char *sname, uint32 type, const char *comment)
{
printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type),
comment);
}
-static void display_srv_info_101(struct srvsvc_NetSrvInfo101 *sv101)
+static void display_srv_info_101(SRV_INFO_101 *sv101)
{
- display_server(sv101->server_name, sv101->server_type, sv101->comment);
+ fstring name;
+ fstring comment;
+
+ unistr2_to_ascii(name, &sv101->uni_name, sizeof(name) - 1);
+ unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment) - 1);
+
+ display_server(name, sv101->srv_type, comment);
printf("\tplatform_id :\t%d\n", sv101->platform_id);
- printf("\tos version :\t%d.%d\n", sv101->version_major,
- sv101->version_minor);
+ printf("\tos version :\t%d.%d\n", sv101->ver_major,
+ sv101->ver_minor);
- printf("\tserver type :\t0x%x\n", sv101->server_type);
+ printf("\tserver type :\t0x%x\n", sv101->srv_type);
}
-static void display_srv_info_102(struct srvsvc_NetSrvInfo102 *sv102)
+static void display_srv_info_102(SRV_INFO_102 *sv102)
{
- display_server(sv102->server_name, sv102->server_type,
- sv102->comment);
+ fstring name;
+ fstring comment;
+ fstring usr_path;
+
+ unistr2_to_ascii(name, &sv102->uni_name, sizeof(name) - 1);
+ unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment) - 1);
+ unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1);
+
+ display_server(name, sv102->srv_type, comment);
printf("\tplatform_id :\t%d\n", sv102->platform_id);
- printf("\tos version :\t%d.%d\n", sv102->version_major,
- sv102->version_minor);
+ printf("\tos version :\t%d.%d\n", sv102->ver_major,
+ sv102->ver_minor);
printf("\tusers :\t%x\n", sv102->users);
printf("\tdisc, hidden :\t%x, %x\n", sv102->disc, sv102->hidden);
printf("\tannounce, delta :\t%d, %d\n", sv102->announce,
- sv102->anndelta);
+ sv102->ann_delta);
printf("\tlicenses :\t%d\n", sv102->licenses);
- printf("\tuser path :\t%s\n", sv102->userpath);
+ printf("\tuser path :\t%s\n", usr_path);
}
/* Server query info */
-static NTSTATUS cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
+static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
uint32 info_level = 101;
- union srvsvc_NetSrvInfo ctr;
- NTSTATUS result;
+ SRV_INFO_CTR ctr;
+ WERROR result;
if (argc > 2) {
printf("Usage: %s [infolevel]\n", argv[0]);
- return NT_STATUS_OK;
+ return WERR_OK;
}
if (argc == 2)
info_level = atoi(argv[1]);
- result = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, NULL, info_level,
+ result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level,
&ctr);
- if (!NT_STATUS_IS_OK(result)) {
+ if (!W_ERROR_IS_OK(result)) {
goto done;
}
@@ -193,10 +206,10 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
switch (info_level) {
case 101:
- display_srv_info_101(ctr.info101);
+ display_srv_info_101(&ctr.srv.sv101);
break;
case 102:
- display_srv_info_102(ctr.info102);
+ display_srv_info_102(&ctr.srv.sv102);
break;
default:
printf("unsupported info level %d\n", info_level);
@@ -207,106 +220,96 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
return result;
}
-static void display_share_info_1(struct srvsvc_NetShareInfo1 *info1)
+static void display_share_info_1(SRV_SHARE_INFO_1 *info1)
{
- printf("netname: %s\n", info1->name);
- printf("\tremark:\t%s\n", info1->comment);
+ fstring netname = "", remark = "";
+
+ rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname);
+ rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark);
+
+ printf("netname: %s\n", netname);
+ printf("\tremark:\t%s\n", remark);
}
-static void display_share_info_2(struct srvsvc_NetShareInfo2 *info2)
+static void display_share_info_2(SRV_SHARE_INFO_2 *info2)
{
- printf("netname: %s\n", info2->name);
- printf("\tremark:\t%s\n", info2->comment);
- printf("\tpath:\t%s\n", info2->path);
- printf("\tpassword:\t%s\n", info2->password);
+ fstring netname = "", remark = "", path = "", passwd = "";
+
+ rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname);
+ rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark);
+ rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path);
+ rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd);
+
+ printf("netname: %s\n", netname);
+ printf("\tremark:\t%s\n", remark);
+ printf("\tpath:\t%s\n", path);
+ printf("\tpassword:\t%s\n", passwd);
}
-static void display_share_info_502(struct srvsvc_NetShareInfo502 *info502)
+static void display_share_info_502(SRV_SHARE_INFO_502 *info502)
{
- printf("netname: %s\n", info502->name);
- printf("\tremark:\t%s\n", info502->comment);
- printf("\tpath:\t%s\n", info502->path);
- printf("\tpassword:\t%s\n", info502->password);
-
- printf("\ttype:\t0x%x\n", info502->type);
- printf("\tperms:\t%d\n", info502->permissions);
- printf("\tmax_uses:\t%d\n", info502->max_users);
- printf("\tnum_uses:\t%d\n", info502->current_users);
+ fstring netname = "", remark = "", path = "", passwd = "";
+
+ rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname);
+ rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark);
+ rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path);
+ rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd);
+
+ printf("netname: %s\n", netname);
+ printf("\tremark:\t%s\n", remark);
+ printf("\tpath:\t%s\n", path);
+ printf("\tpassword:\t%s\n", passwd);
+
+ printf("\ttype:\t0x%x\n", info502->info_502.type);
+ printf("\tperms:\t%d\n", info502->info_502.perms);
+ printf("\tmax_uses:\t%d\n", info502->info_502.max_uses);
+ printf("\tnum_uses:\t%d\n", info502->info_502.num_uses);
- if (info502->sd)
- display_sec_desc(info502->sd);
+ if (info502->info_502_str.sd)
+ display_sec_desc(info502->info_502_str.sd);
}
-static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli,
+static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
uint32 info_level = 2;
- struct srvsvc_NetShareCtr1 ctr1;
- struct srvsvc_NetShareCtr2 ctr2;
- struct srvsvc_NetShareCtr502 ctr502;
- union srvsvc_NetShareCtr ctr;
- NTSTATUS result;
- uint32 hnd;
+ SRV_SHARE_INFO_CTR ctr;
+ WERROR result;
+ ENUM_HND hnd;
uint32 preferred_len = 0xffffffff, i;
- uint32 numentries;
-
- ZERO_STRUCT(ctr);
if (argc > 2) {
printf("Usage: %s [infolevel]\n", argv[0]);
- return NT_STATUS_OK;
+ return WERR_OK;
}
if (argc == 2)
info_level = atoi(argv[1]);
- hnd = 0;
-
- switch (info_level) {
- case 1: {
- ZERO_STRUCT(ctr1);
- ctr.ctr1 = &ctr1;
- }
- break;
-
- case 2: {
- ZERO_STRUCT(ctr2);
- ctr.ctr2 = &ctr2;
- }
- break;
- case 502: {
- ZERO_STRUCT(ctr502);
- ctr.ctr502 = &ctr502;
- }
- break;
-
- default:
- break;
- }
+ init_enum_hnd(&hnd, 0);
- result = rpccli_srvsvc_NetShareEnum(
- cli, mem_ctx, cli->cli->desthost, &info_level, &ctr, preferred_len, &numentries,
- &hnd);
+ result = rpccli_srvsvc_net_share_enum(
+ cli, mem_ctx, info_level, &ctr, preferred_len, &hnd);
- if (!NT_STATUS_IS_OK(result) || !numentries)
+ if (!W_ERROR_IS_OK(result) || !ctr.num_entries)
goto done;
/* Display results */
switch (info_level) {
case 1:
- for (i = 0; i < numentries; i++)
- display_share_info_1(&ctr.ctr1->array[i]);
+ for (i = 0; i < ctr.num_entries; i++)
+ display_share_info_1(&ctr.share.info1[i]);
break;
case 2:
- for (i = 0; i < numentries; i++)
- display_share_info_2(&ctr.ctr2->array[i]);
+ for (i = 0; i < ctr.num_entries; i++)
+ display_share_info_2(&ctr.share.info2[i]);
break;
case 502:
- for (i = 0; i < numentries; i++)
- display_share_info_502(&ctr.ctr502->array[i]);
+ for (i = 0; i < ctr.num_entries; i++)
+ display_share_info_502(&ctr.share.info502[i]);
break;
default:
printf("unsupported info level %d\n", info_level);
@@ -317,38 +320,38 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli,
return result;
}
-static NTSTATUS cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
+static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
uint32 info_level = 502;
- union srvsvc_NetShareInfo info;
- NTSTATUS result;
+ SRV_SHARE_INFO info;
+ WERROR result;
if (argc > 3) {
printf("Usage: %s [sharename] [infolevel]\n", argv[0]);
- return NT_STATUS_OK;
+ return WERR_OK;
}
if (argc == 3)
info_level = atoi(argv[2]);
- result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info);
+ result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info);
- if (!NT_STATUS_IS_OK(result))
+ if (!W_ERROR_IS_OK(result))
goto done;
/* Display results */
switch (info_level) {
case 1:
- display_share_info_1(info.info1);
+ display_share_info_1(&info.share.info1);
break;
case 2:
- display_share_info_2(info.info2);
+ display_share_info_2(&info.share.info2);
break;
case 502:
- display_share_info_502(info.info502);
+ display_share_info_502(&info.share.info502);
break;
default:
printf("unsupported info level %d\n", info_level);
@@ -359,93 +362,95 @@ static NTSTATUS cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
return result;
}
-static NTSTATUS cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
+static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
uint32 info_level = 502;
- union srvsvc_NetShareInfo info_get;
- NTSTATUS result;
- uint32 parm_error = 0;
+ SRV_SHARE_INFO info_get;
+ WERROR result;
if (argc > 3) {
printf("Usage: %s [sharename] [comment]\n", argv[0]);
- return NT_STATUS_OK;
+ return WERR_OK;
}
/* retrieve share info */
- result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get);
- if (!NT_STATUS_IS_OK(result))
+ result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
+ if (!W_ERROR_IS_OK(result))
goto done;
+ info_get.switch_value = info_level;
+ info_get.ptr_share_ctr = 1;
+ init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE);
+
/* set share info */
- result = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, NULL, argv[1], info_level, info_get, &parm_error);
+ result = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get);
- if (!NT_STATUS_IS_OK(result))
+ if (!W_ERROR_IS_OK(result))
goto done;
/* re-retrieve share info and display */
- result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get);
- if (!NT_STATUS_IS_OK(result))
+ result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
+ if (!W_ERROR_IS_OK(result))
goto done;
- display_share_info_502(info_get.info502);
+ display_share_info_502(&info_get.share.info502);
done:
return result;
}
-static NTSTATUS cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli,
+static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
+ TIME_OF_DAY_INFO tod;
fstring srv_name_slash;
- NTSTATUS result;
- struct srvsvc_NetRemoteTODInfo tod;
+ WERROR result;
if (argc > 1) {
printf("Usage: %s\n", argv[0]);
- return NT_STATUS_OK;
+ return WERR_OK;
}
fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost);
- result = rpccli_srvsvc_NetRemoteTOD(
+ result = rpccli_srvsvc_net_remote_tod(
cli, mem_ctx, srv_name_slash, &tod);
- if (!NT_STATUS_IS_OK(result))
+ if (!W_ERROR_IS_OK(result))
goto done;
done:
return result;
}
-static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli,
+static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
uint32 info_level = 3;
- union srvsvc_NetFileCtr ctr;
- NTSTATUS result;
- uint32 hnd;
+ SRV_FILE_INFO_CTR ctr;
+ WERROR result;
+ ENUM_HND hnd;
uint32 preferred_len = 0xffff;
- uint32 numentries;
if (argc > 2) {
printf("Usage: %s [infolevel]\n", argv[0]);
- return NT_STATUS_OK;
+ return WERR_OK;
}
if (argc == 2)
info_level = atoi(argv[1]);
- hnd = 0;
+ init_enum_hnd(&hnd, 0);
ZERO_STRUCT(ctr);
- result = rpccli_srvsvc_NetFileEnum(
- cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd);
+ result = rpccli_srvsvc_net_file_enum(
+ cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd);
- if (!NT_STATUS_IS_OK(result))
+ if (!W_ERROR_IS_OK(result))
goto done;
done:
@@ -458,12 +463,12 @@ struct cmd_set srvsvc_commands[] = {
{ "SRVSVC" },
- { "srvinfo", RPC_RTYPE_NTSTATUS, cmd_srvsvc_srv_query_info, NULL, PI_SRVSVC, NULL, "Server query info", "" },
- { "netshareenum",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_enum, NULL, PI_SRVSVC, NULL, "Enumerate shares", "" },
- { "netsharegetinfo",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_get_info, NULL, PI_SRVSVC, NULL, "Get Share Info", "" },
- { "netsharesetinfo",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_set_info, NULL, PI_SRVSVC, NULL, "Set Share Info", "" },
- { "netfileenum", RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_file_enum, NULL, PI_SRVSVC, NULL, "Enumerate open files", "" },
- { "netremotetod",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_remote_tod, NULL, PI_SRVSVC, NULL, "Fetch remote time of day", "" },
+ { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" },
+ { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" },
+ { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" },
+ { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" },
+ { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" },
+ { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" },
{ NULL }
};
diff --git a/source/rpcclient/cmd_test.c b/source/rpcclient/cmd_test.c
index 28c13965d89..94545dc74e6 100644
--- a/source/rpcclient/cmd_test.c
+++ b/source/rpcclient/cmd_test.c
@@ -43,7 +43,7 @@ static NTSTATUS cmd_testme(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
if (!NT_STATUS_IS_OK(status))
goto done;
- status = rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
+ status = rpccli_lsa_close(lsa_pipe, mem_ctx, &pol);
if (!NT_STATUS_IS_OK(status))
goto done;
diff --git a/source/rpcclient/cmd_unixinfo.c b/source/rpcclient/cmd_unixinfo.c
deleted file mode 100644
index 1725ce8bfe7..00000000000
--- a/source/rpcclient/cmd_unixinfo.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- RPC pipe client
-
- Copyright (C) Volker Lendecke 2005
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "rpcclient.h"
-
-static NTSTATUS cmd_unixinfo_uid2sid(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- uid_t uid;
- DOM_SID sid;
- NTSTATUS result;
-
- if (argc != 2) {
- printf("Usage: %s uid\n", argv[0]);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- uid = atoi(argv[1]);
- result = rpccli_unixinfo_UidToSid(cli, mem_ctx, uid, &sid);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- printf("%s\n", sid_string_static(&sid));
-
-done:
- return result;
-}
-
-static NTSTATUS cmd_unixinfo_sid2uid(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- uint64_t uid;
- DOM_SID sid;
- NTSTATUS result;
-
- if (argc != 2) {
- printf("Usage: %s sid\n", argv[0]);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])) {
- result = NT_STATUS_INVALID_SID;
- goto done;
- }
-
- result = rpccli_unixinfo_SidToUid(cli, mem_ctx, sid, &uid);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- printf("%llu\n", (unsigned long long)uid);
-
-done:
- return result;
-}
-
-static NTSTATUS cmd_unixinfo_gid2sid(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- gid_t gid;
- DOM_SID sid;
- NTSTATUS result;
-
- if (argc != 2) {
- printf("Usage: %s gid\n", argv[0]);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- gid = atoi(argv[1]);
-
- result = rpccli_unixinfo_GidToSid(cli, mem_ctx, gid, &sid);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- printf("%s\n", sid_string_static(&sid));
-
-done:
- return result;
-}
-
-static NTSTATUS cmd_unixinfo_sid2gid(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- uint64_t gid;
- DOM_SID sid;
- NTSTATUS result;
-
- if (argc != 2) {
- printf("Usage: %s sid\n", argv[0]);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])) {
- result = NT_STATUS_INVALID_SID;
- goto done;
- }
-
- result = rpccli_unixinfo_SidToGid(cli, mem_ctx, sid, &gid);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- printf("%llu\n", (unsigned long long)gid);
-
-done:
- return result;
-}
-
-static NTSTATUS cmd_unixinfo_getpwuid(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- uint64_t *uids;
- unsigned int i, num_uids;
- struct unixinfo_GetPWUidInfo *info;
- NTSTATUS result;
-
- if (argc < 2) {
- printf("Usage: %s uid [uid2 uid3 ...]\n", argv[0]);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- num_uids = argc-1;
- uids = TALLOC_ARRAY(mem_ctx, uint64_t, num_uids);
-
- if (uids == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
- for (i=0; i<num_uids; i++) {
- uids[i] = atoi(argv[i+1]);
- }
-
- info = TALLOC_ARRAY(mem_ctx, struct unixinfo_GetPWUidInfo, num_uids);
- if (info == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
-
- result = rpccli_unixinfo_GetPWUid(cli, mem_ctx, &num_uids, uids,
- info);
-
- if (!NT_STATUS_IS_OK(result)) {
- return result;
- }
-
- for (i=0; i<num_uids; i++) {
- if (NT_STATUS_IS_OK(info[i].status)) {
- printf("%llu:%s:%s\n", (unsigned long long)uids[i],
- info[i].homedir, info[i].shell);
- } else {
- printf("%llu:%s\n", (unsigned long long)uids[i],
- nt_errstr(info[i].status));
- }
- }
-
- return NT_STATUS_OK;
-}
-
-/* List of commands exported by this module */
-
-struct cmd_set unixinfo_commands[] = {
-
- { "UNIXINFO" },
-
- { "uid2sid", RPC_RTYPE_NTSTATUS, cmd_unixinfo_uid2sid, NULL,
- PI_UNIXINFO, NULL, "Convert a uid to a sid", "" },
- { "sid2uid", RPC_RTYPE_NTSTATUS, cmd_unixinfo_sid2uid, NULL,
- PI_UNIXINFO, NULL, "Convert a sid to a uid", "" },
- { "gid2sid", RPC_RTYPE_NTSTATUS, cmd_unixinfo_gid2sid, NULL,
- PI_UNIXINFO, NULL, "Convert a gid to a sid", "" },
- { "sid2gid", RPC_RTYPE_NTSTATUS, cmd_unixinfo_sid2gid, NULL,
- PI_UNIXINFO, NULL, "Convert a sid to a gid", "" },
- { "getpwuid", RPC_RTYPE_NTSTATUS, cmd_unixinfo_getpwuid, NULL,
- PI_UNIXINFO, NULL, "Get passwd info", "" },
- { NULL }
-};
diff --git a/source/rpcclient/rpcclient.c b/source/rpcclient/rpcclient.c
index 87dac8f0370..f671e892a0f 100644
--- a/source/rpcclient/rpcclient.c
+++ b/source/rpcclient/rpcclient.c
@@ -27,7 +27,6 @@ DOM_SID domain_sid;
static enum pipe_auth_type pipe_default_auth_type = PIPE_AUTH_TYPE_NONE;
static enum pipe_auth_level pipe_default_auth_level = PIPE_AUTH_LEVEL_NONE;
-static unsigned int timeout = 0;
/* List to hold groups of commands.
*
@@ -169,7 +168,7 @@ static void fetch_machine_sid(struct cli_state *cli)
got_domain_sid = True;
sid_copy( &domain_sid, dom_sid );
- rpccli_lsa_Close(lsapipe, mem_ctx, &pol);
+ rpccli_lsa_close(lsapipe, mem_ctx, &pol);
cli_rpc_pipe_close(lsapipe);
talloc_destroy(mem_ctx);
@@ -399,39 +398,6 @@ static NTSTATUS cmd_seal(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
return cmd_set_ss_level();
}
-static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- struct cmd_list *tmp;
-
- if (argc > 2) {
- printf("Usage: %s timeout\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (argc == 2) {
- timeout = atoi(argv[1]);
-
- for (tmp = cmd_list; tmp; tmp = tmp->next) {
-
- struct cmd_set *tmp_set;
-
- for (tmp_set = tmp->cmd_set; tmp_set->name; tmp_set++) {
- if (tmp_set->rpc_pipe == NULL) {
- continue;
- }
-
- cli_set_timeout(tmp_set->rpc_pipe->cli, timeout);
- }
- }
- }
-
- printf("timeout is %d\n", timeout);
-
- return NT_STATUS_OK;
-}
-
-
static NTSTATUS cmd_none(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
@@ -471,7 +437,6 @@ static struct cmd_set rpcclient_commands[] = {
{ "help", RPC_RTYPE_NTSTATUS, cmd_help, NULL, -1, NULL, "Get help on commands", "[command]" },
{ "?", RPC_RTYPE_NTSTATUS, cmd_help, NULL, -1, NULL, "Get help on commands", "[command]" },
{ "debuglevel", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL, -1, NULL, "Set debug level", "level" },
- { "debug", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL, -1, NULL, "Set debug level", "level" },
{ "list", RPC_RTYPE_NTSTATUS, cmd_listcommands, NULL, -1, NULL, "List available commands on <pipe>", "pipe" },
{ "exit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL, -1, NULL, "Exit program", "" },
{ "quit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL, -1, NULL, "Exit program", "" },
@@ -479,7 +444,6 @@ static struct cmd_set rpcclient_commands[] = {
{ "seal", RPC_RTYPE_NTSTATUS, cmd_seal, NULL, -1, NULL, "Force RPC pipe connections to be sealed", "" },
{ "schannel", RPC_RTYPE_NTSTATUS, cmd_schannel, NULL, -1, NULL, "Force RPC pipe connections to be sealed with 'schannel'. Assumes valid machine account to this domain controller.", "" },
{ "schannelsign", RPC_RTYPE_NTSTATUS, cmd_schannel_sign, NULL, -1, NULL, "Force RPC pipe connections to be signed (not sealed) with 'schannel'. Assumes valid machine account to this domain controller.", "" },
- { "timeout", RPC_RTYPE_NTSTATUS, cmd_timeout, NULL, -1, NULL, "Set timeout (in milliseonds) for RPC operations", "" },
{ "none", RPC_RTYPE_NTSTATUS, cmd_none, NULL, -1, NULL, "Force RPC pipe connections to have no special properties", "" },
{ NULL }
@@ -493,7 +457,6 @@ static struct cmd_set separator_command[] = {
/* Various pipe commands */
-extern struct cmd_set unixinfo_commands[];
extern struct cmd_set lsarpc_commands[];
extern struct cmd_set samr_commands[];
extern struct cmd_set spoolss_commands[];
@@ -507,7 +470,6 @@ extern struct cmd_set test_commands[];
static struct cmd_set *rpcclient_command_list[] = {
rpcclient_commands,
- unixinfo_commands,
lsarpc_commands,
ds_commands,
samr_commands,
@@ -848,8 +810,6 @@ out_free:
/* Load command lists */
- timeout = cli_set_timeout(cli, 10000);
-
cmd_set = rpcclient_command_list;
while(*cmd_set) {
diff --git a/source/samba3-knownfail b/source/samba3-knownfail
deleted file mode 100644
index 94ed1888883..00000000000
--- a/source/samba3-knownfail
+++ /dev/null
@@ -1,4 +0,0 @@
-BASE-DELETE-deltest16
-BASE-DELETE-deltest18
-BASE-DELETE-deltest19
-BASE-DELETE-deltest20
diff --git a/source/script/build_idl.sh b/source/script/build_idl.sh
deleted file mode 100644
index 77f37d8e75e..00000000000
--- a/source/script/build_idl.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-
-PIDL_ARGS="--outputdir librpc/gen_ndr --header --ndr-parser --samba3-ndr-server --samba3-ndr-client --"
-PIDL_EXTRA_ARGS="$*"
-
-oldpwd=`pwd`
-cd ${srcdir}
-
-[ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1
-
-if [ -z "$PIDL" ] ; then
- PIDL=pidl
-fi
-
-PIDL="$PIDL ${PIDL_ARGS} ${PIDL_EXTRA_ARGS}"
-
-##
-## Find newer files rather than rebuild all of them
-##
-
-list=""
-for f in ${IDL_FILES}; do
- basename=`basename $f .idl`
- ndr="librpc/gen_ndr/ndr_$basename.c"
-
- if [ -f $ndr ] && false; then
- if [ "x`find librpc/idl/$f -newer $ndr -print`" = "xlibrpc/idl/$f" ]; then
- list="$list librpc/idl/$f"
- fi
- else
- list="$list librpc/idl/$f"
- fi
-done
-
-##
-## generate the ndr stubs
-##
-
-if [ "x$list" != x ]; then
- # echo "${PIDL} ${list}"
- $PIDL $list || exit 1
-fi
-
-##
-## Do miscellaneous cleanup
-##
-
-for f in librpc/gen_ndr/ndr_*.c; do
- cat $f | sed -e 's/^static //g' > $f.new
- /bin/mv -f $f.new $f
-done
-
-touch librpc/gen_ndr/ndr_dcerpc.h
-
-echo Generating librpc/gen_ndr/tables.c
-./librpc/tables.pl --output=librpc/gen_ndr/tables.c librpc/gen_ndr/*.h > librpc/gen_ndr/tables.c
-
-cd ${oldpwd}
-
-exit 0
-
diff --git a/source/script/count_80_col.pl b/source/script/count_80_col.pl
deleted file mode 100755
index e1c8ff46a2d..00000000000
--- a/source/script/count_80_col.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/perl -w
-
-open( INFILE, "$ARGV[0]" ) || die $@;
-
-$count = 0;
-while ( <INFILE> ) {
- $count++ if (length($_) > 80);
-}
-
-close( INFILE );
-print "$ARGV[0]: $count lines > 80 characters\n" if ($count > 0);
-
-exit( 0 );
-
-
diff --git a/source/script/format_indent.sh b/source/script/format_indent.sh
deleted file mode 100755
index 2af1ab41fae..00000000000
--- a/source/script/format_indent.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# -npro Do no read the '.indent.pro' files.
-# -kr Use K&R formatting rules
-# -i8 Set indentation level to 8 spaces.
-# -ts8 Set tab size to 8 spaces
-# -sob Swallow optional blank lines.
-# -l80 Set the maximum line length at 80 characters.
-# -ss On one-line for and while statments, force a blank before the semicolon
-# -ncs Do not put a space after cast operators.
-
-indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs "$@"
diff --git a/source/script/installmodules.sh b/source/script/installmodules.sh
index f70db003ede..f6e52880fe8 100755
--- a/source/script/installmodules.sh
+++ b/source/script/installmodules.sh
@@ -19,19 +19,11 @@ fi
fi
done
-# We expect the last component of LIBDIR to be the module type, eg. idmap,
-# pdb. By stripping this from the installation name, you can have multiple
-# modules of the same name but different types by creating eg. idmap_foo
-# and pdb_foo. This makes the most sense for idmap and pdb module, where
-# they need to be consistent.
-mtype=`basename $LIBDIR`
-
for p in $*; do
p2=`basename $p`
- name=`echo $p2 | sed -es/${mtype}_//`
- echo Installing $p as $DESTDIR/$LIBDIR/$name
- cp -f $p $DESTDIR/$LIBDIR/$name
- chmod $INSTALLPERMS $DESTDIR/$LIBDIR/$name
+ echo Installing $p as $DESTDIR/$LIBDIR/$p2
+ cp -f $p $DESTDIR/$LIBDIR/
+ chmod $INSTALLPERMS $DESTDIR/$LIBDIR/$p2
done
exit 0
diff --git a/source/script/mkversion.sh b/source/script/mkversion.sh
index 8155c452124..aee7d0a1188 100755
--- a/source/script/mkversion.sh
+++ b/source/script/mkversion.sh
@@ -16,19 +16,12 @@ SOURCE_DIR=$3
SAMBA_VERSION_MAJOR=`sed -n 's/^SAMBA_VERSION_MAJOR=//p' $SOURCE_DIR$VERSION_FILE`
SAMBA_VERSION_MINOR=`sed -n 's/^SAMBA_VERSION_MINOR=//p' $SOURCE_DIR$VERSION_FILE`
SAMBA_VERSION_RELEASE=`sed -n 's/^SAMBA_VERSION_RELEASE=//p' $SOURCE_DIR$VERSION_FILE`
-
SAMBA_VERSION_REVISION=`sed -n 's/^SAMBA_VERSION_REVISION=//p' $SOURCE_DIR$VERSION_FILE`
-
-SAMBA_VERSION_TP_RELEASE=`sed -n 's/^SAMBA_VERSION_TP_RELEASE=//p' $SOURCE_DIR$VERSION_FILE`
SAMBA_VERSION_PRE_RELEASE=`sed -n 's/^SAMBA_VERSION_PRE_RELEASE=//p' $SOURCE_DIR$VERSION_FILE`
SAMBA_VERSION_RC_RELEASE=`sed -n 's/^SAMBA_VERSION_RC_RELEASE=//p' $SOURCE_DIR$VERSION_FILE`
-
SAMBA_VERSION_IS_SVN_SNAPSHOT=`sed -n 's/^SAMBA_VERSION_IS_SVN_SNAPSHOT=//p' $SOURCE_DIR$VERSION_FILE`
-
-SAMBA_VERSION_RELEASE_NICKNAME=`sed -n 's/^SAMBA_VERSION_RELEASE_NICKNAME=//p' $SOURCE_DIR$VERSION_FILE`
-
SAMBA_VERSION_VENDOR_SUFFIX=`sed -n 's/^SAMBA_VERSION_VENDOR_SUFFIX=//p' $SOURCE_DIR$VERSION_FILE`
-SAMBA_VERSION_VENDOR_PATCH=`sed -n 's/^SAMBA_VERSION_VENDOR_PATCH=//p' $SOURCE_DIR$VERSION_FILE`
+SAMBA_VENDOR_PATCH=`sed -n 's/^SAMBA_VENDOR_PATCH=//p' $SOURCE_DIR$VERSION_FILE`
echo "/* Autogenerated by script/mkversion.sh */" > $OUTPUT_FILE
@@ -44,15 +37,12 @@ SAMBA_VERSION_STRING="${SAMBA_VERSION_MAJOR}.${SAMBA_VERSION_MINOR}.${SAMBA_VERS
##
-## maybe add "3.0.22a" or "4.0.0tp11" or "3.0.22pre1" or "3.0.22rc1"
+## maybe add "3.0.22a" or "3.0.22pre1" or "3.0.22rc1"
## We do not do pre or rc version on patch/letter releases
##
if test -n "${SAMBA_VERSION_REVISION}";then
SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}${SAMBA_VERSION_REVISION}"
echo "#define SAMBA_VERSION_REVISION \"${SAMBA_VERSION_REVISION}\"" >> $OUTPUT_FILE
-elif test -n "${SAMBA_VERSION_TP_RELEASE}";then
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}tp${SAMBA_VERSION_TP_RELEASE}"
- echo "#define SAMBA_VERSION_TP_RELEASE ${SAMBA_VERSION_TP_RELEASE}" >> $OUTPUT_FILE
elif test -n "${SAMBA_VERSION_PRE_RELEASE}";then
## maybe add "3.0.22pre2"
SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}pre${SAMBA_VERSION_PRE_RELEASE}"
@@ -63,123 +53,61 @@ elif test -n "${SAMBA_VERSION_RC_RELEASE}";then
fi
##
+## Add the vendor string if present
+##
+if test -n "${SAMBA_VERSION_VENDOR_SUFFIX}";then
+ echo "#define SAMBA_VERSION_VENDOR_SUFFIX ${SAMBA_VERSION_VENDOR_SUFFIX}" >> $OUTPUT_FILE
+ if test -n "${SAMBA_VENDOR_PATCH}";then
+ echo "#define SAMBA_VENDOR_PATCH ${SAMBA_VENDOR_PATCH}" >> $OUTPUT_FILE
+ fi
+fi
+
+
+
+##
## SVN revision number?
##
if test x"${SAMBA_VERSION_IS_SVN_SNAPSHOT}" = x"yes";then
_SAVE_LANG=${LANG}
LANG=""
- HAVEVER="no"
-
- if test x"${HAVEVER}" != x"yes";then
- HAVESVN=no
- SVN_INFO=`svn info ${SOURCE_DIR} 2>/dev/null`
- TMP_REVISION=`echo -e "${SVN_INFO}" | grep 'Last Changed Rev.*:' |sed -e 's/Last Changed Rev.*: \([0-9]*\).*/\1/'`
- if test -n "$TMP_REVISION"; then
- HAVESVN=yes
- HAVEVER=yes
- fi
- fi
-
- if test x"${HAVEVER}" != x"yes";then
+ HAVESVN=no
+ svn info ${SOURCE_DIR} >/dev/null 2>&1 && HAVESVN=yes
+ TMP_REVISION=`(svn info ${SOURCE_DIR} 2>/dev/null || svk info ${SOURCE_DIR} 2>/dev/null) |grep 'Last Changed Rev.*:' |sed -e 's/Last Changed Rev.*: \([0-9]*\).*/\1/'`
+ if test x"${HAVESVN}" = x"no";then
HAVESVK=no
- SVK_INFO=`svk info ${SOURCE_DIR} 2>/dev/null`
- TMP_REVISION=`echo -e "${SVK_INFO}" | grep 'Last Changed Rev.*:' |sed -e 's/Last Changed Rev.*: \([0-9]*\).*/\1/'`
- if test -n "$TMP_REVISION"; then
- HAVESVK=yes
- HAVEVER=yes
- fi
- TMP_MIRRORED_REVISION=`echo -e "${SVK_INFO}" | grep 'Mirrored From:.*samba\.org.*' |sed -e 's/Mirrored From: .* Rev\..* \([0-9]*\).*/\1/'`
- fi
-
- if test x"${HAVEVER}" != x"yes" -a -d "${SOURCE_DIR}../.bzr";then
- HAVEBZR=no
- BZR_INFO=`bzr version-info --check-clean ${SOURCE_DIR} 2>/dev/null`
- TMP_REVISION=`echo -e "${BZR_INFO}" | grep 'revno:' |sed -e 's/revno: \([0-9]*\).*/\1/'`
- if test -n "$TMP_REVISION"; then
- HAVEBZR=yes
- HAVEVER=yes
- fi
- TMP_MIRRORED_REVISION=`echo -e "${BZR_INFO}" | grep 'revision-id: svn-v1:.*@0c0555d6-39d7-0310-84fc-f1cc0bd64818' |sed -e 's/revision-id: svn-v1:\([0-9]*\)@0c0555d6-39d7-0310-84fc-f1cc0bd64818.*/\1/'`
- TMP_BRANCH_NICK=`echo -e "${BZR_INFO}" | grep 'branch-nick:' |sed -e 's/branch-nick: \(.*\)$/\1/'`
- TMP_CLEAN_TREE=`echo -e "${BZR_INFO}" | grep 'clean:' |sed -e 's/clean: \([a-zA-Z]*\).*/\1/'`
- fi
-
- if test x"${HAVEVER}" != x"yes" -a -d "${SOURCE_DIR}../.git";then
- HAVEGIT=no
- GIT_INFO=`git show --abbrev-commit HEAD 2>/dev/null`
- TMP_REVISION=`echo -e "${GIT_INFO}" | grep 'commit ' | sed 1q |sed -e 's/commit \([0-9a-f]*\).*/\1/'`
- if test -n "$TMP_REVISION";then
- HAVEGIT=yes
- HAVEVER=yes
- fi
- TMP_MIRRORED_REVISION=`echo -e "${GIT_INFO}" | grep 'git-svn-id' |sed -e 's#^[ ^t]*git-svn-id: svn+ssh://svn.samba.org/data/svn/samba/branches/\(SAMBA_[34]_[0-9]\(_[0-9]\+\)\?@[0-9]*\).*#\1#'`
- fi
-
-
- if test x"${HAVESVN}" = x"yes";then
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-SVN-build-${TMP_REVISION}"
- echo "#define SAMBA_VERSION_SVN_REVISION ${TMP_REVISION}" >> $OUTPUT_FILE
- elif test x"${HAVESVK}" = x"yes";then
+ svk info ${SOURCE_DIR} >/dev/null 2>&1 && HAVESVK=yes
+ TMP_MIRRORED_REVISION=`(svk info ${SOURCE_DIR} 2>/dev/null) |grep 'Mirrored From:.*samba\.org.*' |sed -e 's/Mirrored From: .* Rev\..* \([0-9]*\).*/\1/'`
if test -n "$TMP_MIRRORED_REVISION"; then
TMP_SVK_REVISION_STR="${TMP_REVISION}-${USER}@${HOSTNAME}-[SVN-${TMP_MIRRORED_REVISION}]"
else
TMP_SVK_REVISION_STR="${TMP_REVISION}-${USER}@${HOSTNAME}"
fi
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-SVK-build-${TMP_SVK_REVISION_STR}"
- elif test x"${HAVEBZR}" = x"yes";then
- TMP_BZR_REVISION_STR="${TMP_REVISION}"
-
- if test -n "$TMP_BRANCH_NICK"; then
- TMP_BZR_REVISION_STR="${TMP_BZR_REVISION_STR}${TMP_MOD_STR}@${TMP_BRANCH_NICK}"
- fi
-
- if test -n "$TMP_MIRRORED_REVISION"; then
- TMP_BZR_REVISION_STR="${TMP_BZR_REVISION_STR}-[SVN-${TMP_MIRRORED_REVISION}]"
- fi
-
- if test x"$TMP_CLEAN_TREE" != x"True"; then
- TMP_BZR_REVISION_STR="${TMP_BZR_REVISION_STR}-[modified]"
- fi
-
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-BZR-${TMP_BZR_REVISION_STR}"
- elif test x"${HAVEGIT}" = x"yes";then
- TMP_GIT_REVISION_STR="${TMP_REVISION}"
-
- if test -n "$TMP_MIRRORED_REVISION"; then
- TMP_GIT_REVISION_STR="${TMP_GIT_REVISION_STR}-[SVN-${TMP_MIRRORED_REVISION}]"
- fi
+ fi
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-GIT-${TMP_GIT_REVISION_STR}"
+ if test x"${HAVESVN}" = x"yes";then
+ SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-SVN-build-${TMP_REVISION}"
+ echo "#define SAMBA_VERSION_SVN_REVISION ${TMP_REVISION}" >> $OUTPUT_FILE
+ elif test x"${HAVESVK}" = x"yes";then
+ SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-SVK-build-${TMP_SVK_REVISION_STR}"
else
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-SVN-build-UNKNOWN"
+ SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-SVN-build-UNKNOWN"
fi
LANG=${_SAVE_LANG}
fi
echo "#define SAMBA_VERSION_OFFICIAL_STRING \"${SAMBA_VERSION_STRING}\"" >> $OUTPUT_FILE
-##
-## Add the vendor string if present
-##
-if test -n "${SAMBA_VERSION_VENDOR_SUFFIX}";then
- echo "#define SAMBA_VERSION_VENDOR_SUFFIX ${SAMBA_VERSION_VENDOR_SUFFIX}" >> $OUTPUT_FILE
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-${SAMBA_VERSION_VENDOR_SUFFIX}"
- if test -n "${SAMBA_VERSION_VENDOR_PATCH}";then
- echo "#define SAMBA_VERSION_VENDOR_PATCH ${SAMBA_VERSION_VENDOR_PATCH}" >> $OUTPUT_FILE
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-${SAMBA_VERSION_VENDOR_PATCH}"
- fi
-fi
-
-##
-## Add a release nickname
-##
-if test -n "${SAMBA_VERSION_RELEASE_NICKNAME}";then
- echo "#define SAMBA_VERSION_RELEASE_NICKNAME ${SAMBA_VERSION_RELEASE_NICKNAME}" >> $OUTPUT_FILE
- SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING} (${SAMBA_VERSION_RELEASE_NICKNAME})"
-fi
-
echo "#define SAMBA_VERSION_STRING samba_version_string()" >> $OUTPUT_FILE
-echo "$0: '$OUTPUT_FILE' created for Samba(\"${SAMBA_VERSION_STRING}\")"
+echo "$0: 'include/version.h' created for Samba(\"${SAMBA_VERSION_STRING}\")"
+
+if test -n "${SAMBA_VERSION_VENDOR_SUFFIX}";then
+ echo -n "$0: with VENDOR_SUFFIX = \""
+ echo -n ${SAMBA_VERSION_VENDOR_SUFFIX} | sed 's/"//g'
+ if test -n "${SAMBA_VENDOR_PATCH}"; then
+ echo -n "-${SAMBA_VENDOR_PATCH}"
+ fi
+ echo "\""
+fi
exit 0
diff --git a/source/script/strip_trail_ws.pl b/source/script/strip_trail_ws.pl
deleted file mode 100755
index c2c39e21e3c..00000000000
--- a/source/script/strip_trail_ws.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/perl -w
-
-open( INFILE, "$ARGV[0]" ) || die $@;
-open( OUTFILE, ">$ARGV[0].new" ) || die $@;
-
-while ( <INFILE> ) {
- $_ =~ s/[ \t\r]*$//;
- print OUTFILE "$_";
-}
-
-close( INFILE );
-close( OUTFILE );
-
-rename( "$ARGV[0].new", "$ARGV[0]" ) || die @_;
-
-exit( 0 );
-
-
diff --git a/source/script/tests/gdb_backtrace b/source/script/tests/gdb_backtrace
index 826381e9008..826381e9008 100755..100644
--- a/source/script/tests/gdb_backtrace
+++ b/source/script/tests/gdb_backtrace
diff --git a/source/script/tests/selftest.sh b/source/script/tests/selftest.sh
index d5cd2fbedac..9a1f70c440a 100755
--- a/source/script/tests/selftest.sh
+++ b/source/script/tests/selftest.sh
@@ -95,6 +95,8 @@ cat >$COMMONCONFFILE<<EOF
log file = $LOGDIR/log.%m
log level = 0
+ passdb backend = tdbsam
+
name resolve order = bcast
EOF
@@ -106,8 +108,6 @@ cat >$CONFFILE<<EOF
interfaces = $TORTURE_INTERFACES
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
-
- passdb backend = tdbsam
EOF
cat >$SAMBA4CONFFILE<<EOF
@@ -126,14 +126,11 @@ cat >$SERVERCONFFILE<<EOF
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
- passdb backend = tdbsam
-
; Necessary to add the build farm hacks
add user script = /bin/false
add machine script = /bin/false
kernel oplocks = no
- kernel change notify = no
syslog = no
printing = bsd
@@ -215,7 +212,7 @@ START=`date`
(
# give time for nbt server to register its names
echo "delaying for nbt name registration"
- sleep 10
+ sleep 4
# This will return quickly when things are up, but be slow if we need to wait for (eg) SSL init
bin/nmblookup $CONFIGURATION -U $SERVER_IP __SAMBA__
bin/nmblookup $CONFIGURATION __SAMBA__
diff --git a/source/script/tests/test_local_s3.sh b/source/script/tests/test_local_s3.sh
index 6117106c8a3..019a51559be 100755
--- a/source/script/tests/test_local_s3.sh
+++ b/source/script/tests/test_local_s3.sh
@@ -20,7 +20,4 @@ testit "talloctort" $VALGRIND $BINDIR/talloctort || \
testit "replacetort" $VALGRIND $BINDIR/replacetort || \
failed=`expr $failed + 1`
-testit "tdbtorture" $VALGRIND $BINDIR/tdbtorture || \
- failed=`expr $failed +1`
-
testok $0 $failed
diff --git a/source/script/tests/test_posix_s3.sh b/source/script/tests/test_posix_s3.sh
index 3c9d8f0dc48..94b399388c5 100755
--- a/source/script/tests/test_posix_s3.sh
+++ b/source/script/tests/test_posix_s3.sh
@@ -31,7 +31,7 @@ raw="RAW-ACLS RAW-CHKPATH RAW-CLOSE RAW-COMPOSITE RAW-CONTEXT RAW-EAS"
raw="$raw RAW-IOCTL RAW-LOCK RAW-MKDIR RAW-MUX RAW-NOTIFY RAW-OPEN RAW-OPLOCK"
raw="$raw RAW-QFILEINFO RAW-QFSINFO RAW-READ RAW-RENAME RAW-SEARCH RAW-SEEK"
raw="$raw RAW-SFILEINFO RAW-SFILEINFO-BUG RAW-STREAMS RAW-UNLINK RAW-WRITE"
-raw="$raw RAW-SAMBA3HIDE RAW-SAMBA3BADPATH RAW-SFILEINFO-RENAME"
+raw="$raw RAW-SAMBA3HIDE RAW-SAMBA3BADPATH"
rpc="RPC-AUTHCONTEXT RPC-BINDSAMBA3 RPC-SAMBA3-SRVSVC RPC-SAMBA3-SHARESEC"
rpc="$rpc RPC-UNIXINFO RPC-SAMBA3-SPOOLSS RPC-SAMBA3-WKSSVC"
@@ -49,8 +49,8 @@ tests="$base $raw $rpc $unix"
skipped="BASE-CHARSET BASE-DEFER_OPEN BASE-DELAYWRITE BASE-OPENATTR BASE-TCONDEV"
skipped="$skipped RAW-ACLS RAW-COMPOSITE RAW-CONTEXT RAW-EAS"
-skipped="$skipped RAW-IOCTL RAW-MUX"
-skipped="$skipped RAW-QFILEINFO RAW-QFSINFO RAW-SEARCH"
+skipped="$skipped RAW-IOCTL RAW-MKDIR RAW-MUX RAW-NOTIFY RAW-OPEN"
+skipped="$skipped RAW-QFILEINFO RAW-QFSINFO RAW-RENAME RAW-SEARCH"
skipped="$skipped RAW-SFILEINFO RAW-STREAMS RAW-WRITE"
echo "WARNING: Skipping tests $skipped"
diff --git a/source/services/services_db.c b/source/services/services_db.c
index c9e172da2a6..c8ba273e30f 100644
--- a/source/services/services_db.c
+++ b/source/services/services_db.c
@@ -322,8 +322,8 @@ static void add_new_svc_name( REGISTRY_KEY *key_parent, REGSUBKEY_CTR *subkeys,
/* open the new service key */
pstr_sprintf( path, "%s\\%s", KEY_SERVICES, name );
- wresult = regkey_open_internal( NULL, &key_service, path,
- get_root_nt_token(), REG_KEY_ALL );
+ wresult = regkey_open_internal( &key_service, path, get_root_nt_token(),
+ REG_KEY_ALL );
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("add_new_svc_name: key lookup failed! [%s] (%s)\n",
path, dos_errstr(wresult)));
@@ -334,7 +334,7 @@ static void add_new_svc_name( REGISTRY_KEY *key_parent, REGSUBKEY_CTR *subkeys,
if ( !(svc_subkeys = TALLOC_ZERO_P( key_service, REGSUBKEY_CTR )) ) {
DEBUG(0,("add_new_svc_name: talloc() failed!\n"));
- TALLOC_FREE( key_service );
+ regkey_close_internal( key_service );
return;
}
@@ -346,7 +346,7 @@ static void add_new_svc_name( REGISTRY_KEY *key_parent, REGSUBKEY_CTR *subkeys,
if ( !(values = TALLOC_ZERO_P( key_service, REGVAL_CTR )) ) {
DEBUG(0,("add_new_svc_name: talloc() failed!\n"));
- TALLOC_FREE( key_service );
+ regkey_close_internal( key_service );
return;
}
@@ -355,29 +355,29 @@ static void add_new_svc_name( REGISTRY_KEY *key_parent, REGSUBKEY_CTR *subkeys,
/* cleanup the service key*/
- TALLOC_FREE( key_service );
+ regkey_close_internal( key_service );
/* now add the security descriptor */
pstr_sprintf( path, "%s\\%s\\%s", KEY_SERVICES, name, "Security" );
- wresult = regkey_open_internal( NULL, &key_secdesc, path,
- get_root_nt_token(), REG_KEY_ALL );
+ wresult = regkey_open_internal( &key_secdesc, path, get_root_nt_token(),
+ REG_KEY_ALL );
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("add_new_svc_name: key lookup failed! [%s] (%s)\n",
path, dos_errstr(wresult)));
- TALLOC_FREE( key_secdesc );
+ regkey_close_internal( key_secdesc );
return;
}
if ( !(values = TALLOC_ZERO_P( key_secdesc, REGVAL_CTR )) ) {
DEBUG(0,("add_new_svc_name: talloc() failed!\n"));
- TALLOC_FREE( key_secdesc );
+ regkey_close_internal( key_secdesc );
return;
}
if ( !(sd = construct_service_sd(key_secdesc)) ) {
DEBUG(0,("add_new_svc_name: Failed to create default sec_desc!\n"));
- TALLOC_FREE( key_secdesc );
+ regkey_close_internal( key_secdesc );
return;
}
@@ -394,7 +394,7 @@ static void add_new_svc_name( REGISTRY_KEY *key_parent, REGSUBKEY_CTR *subkeys,
/* finally cleanup the Security key */
prs_mem_free( &ps );
- TALLOC_FREE( key_secdesc );
+ regkey_close_internal( key_secdesc );
return;
}
@@ -412,11 +412,11 @@ void svcctl_init_keys( void )
/* bad mojo here if the lookup failed. Should not happen */
- wresult = regkey_open_internal( NULL, &key, KEY_SERVICES,
- get_root_nt_token(), REG_KEY_ALL );
+ wresult = regkey_open_internal( &key, KEY_SERVICES, get_root_nt_token(),
+ REG_KEY_ALL );
if ( !W_ERROR_IS_OK(wresult) ) {
- DEBUG(0,("init_services_keys: key lookup failed! (%s)\n",
+ DEBUG(0,("svcctl_init_keys: key lookup failed! (%s)\n",
dos_errstr(wresult)));
return;
}
@@ -424,8 +424,8 @@ void svcctl_init_keys( void )
/* lookup the available subkeys */
if ( !(subkeys = TALLOC_ZERO_P( key, REGSUBKEY_CTR )) ) {
- DEBUG(0,("init_services_keys: talloc() failed!\n"));
- TALLOC_FREE( key );
+ DEBUG(0,("svcctl_init_keys: talloc() failed!\n"));
+ regkey_close_internal( key );
return;
}
@@ -447,7 +447,7 @@ void svcctl_init_keys( void )
add_new_svc_name( key, subkeys, service_list[i] );
}
- TALLOC_FREE( key );
+ regkey_close_internal( key );
/* initialize the control hooks */
@@ -476,8 +476,7 @@ SEC_DESC* svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *
/* now add the security descriptor */
pstr_sprintf( path, "%s\\%s\\%s", KEY_SERVICES, name, "Security" );
- wresult = regkey_open_internal( NULL, &key, path, token,
- REG_KEY_ALL );
+ wresult = regkey_open_internal( &key, path, token, REG_KEY_ALL );
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("svcctl_get_secdesc: key lookup failed! [%s] (%s)\n",
path, dos_errstr(wresult)));
@@ -486,7 +485,7 @@ SEC_DESC* svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *
if ( !(values = TALLOC_ZERO_P( key, REGVAL_CTR )) ) {
DEBUG(0,("add_new_svc_name: talloc() failed!\n"));
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return NULL;
}
@@ -495,7 +494,7 @@ SEC_DESC* svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *
if ( !(val = regval_ctr_getvalue( values, "Security" )) ) {
DEBUG(6,("svcctl_get_secdesc: constructing default secdesc for service [%s]\n",
name));
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return construct_service_sd( ctx );
}
@@ -506,7 +505,7 @@ SEC_DESC* svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *
prs_give_memory( &ps, (char *)regval_data_p(val), regval_size(val), False );
if ( !sec_io_desc("sec_desc", &sd, &ps, 0 ) ) {
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return construct_service_sd( ctx );
}
@@ -515,7 +514,7 @@ SEC_DESC* svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *
/* finally cleanup the Security key */
prs_mem_free( &ps );
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return ret_sd;
}
@@ -536,8 +535,7 @@ BOOL svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc,
/* now add the security descriptor */
pstr_sprintf( path, "%s\\%s\\%s", KEY_SERVICES, name, "Security" );
- wresult = regkey_open_internal( NULL, &key, path, token,
- REG_KEY_ALL );
+ wresult = regkey_open_internal( &key, path, token, REG_KEY_ALL );
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("svcctl_get_secdesc: key lookup failed! [%s] (%s)\n",
path, dos_errstr(wresult)));
@@ -546,7 +544,7 @@ BOOL svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc,
if ( !(values = TALLOC_ZERO_P( key, REGVAL_CTR )) ) {
DEBUG(0,("add_new_svc_name: talloc() failed!\n"));
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return False;
}
@@ -563,7 +561,7 @@ BOOL svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc,
/* cleanup */
prs_mem_free( &ps );
- TALLOC_FREE( key);
+ regkey_close_internal( key);
return ret;
}
@@ -583,8 +581,7 @@ char* svcctl_lookup_dispname( const char *name, NT_USER_TOKEN *token )
/* now add the security descriptor */
pstr_sprintf( path, "%s\\%s", KEY_SERVICES, name );
- wresult = regkey_open_internal( NULL, &key, path, token,
- REG_KEY_READ );
+ wresult = regkey_open_internal( &key, path, token, REG_KEY_READ );
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("svcctl_lookup_dispname: key lookup failed! [%s] (%s)\n",
path, dos_errstr(wresult)));
@@ -593,7 +590,7 @@ char* svcctl_lookup_dispname( const char *name, NT_USER_TOKEN *token )
if ( !(values = TALLOC_ZERO_P( key, REGVAL_CTR )) ) {
DEBUG(0,("svcctl_lookup_dispname: talloc() failed!\n"));
- TALLOC_FREE( key );
+ regkey_close_internal( key );
goto fail;
}
@@ -604,13 +601,13 @@ char* svcctl_lookup_dispname( const char *name, NT_USER_TOKEN *token )
rpcstr_pull( display_name, regval_data_p(val), sizeof(display_name), regval_size(val), 0 );
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return display_name;
fail:
/* default to returning the service name */
- TALLOC_FREE( key );
+ regkey_close_internal( key );
fstrcpy( display_name, name );
return display_name;
}
@@ -630,8 +627,7 @@ char* svcctl_lookup_description( const char *name, NT_USER_TOKEN *token )
/* now add the security descriptor */
pstr_sprintf( path, "%s\\%s", KEY_SERVICES, name );
- wresult = regkey_open_internal( NULL, &key, path, token,
- REG_KEY_READ );
+ wresult = regkey_open_internal( &key, path, token, REG_KEY_READ );
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("svcctl_lookup_dispname: key lookup failed! [%s] (%s)\n",
path, dos_errstr(wresult)));
@@ -640,7 +636,7 @@ char* svcctl_lookup_description( const char *name, NT_USER_TOKEN *token )
if ( !(values = TALLOC_ZERO_P( key, REGVAL_CTR )) ) {
DEBUG(0,("svcctl_lookup_dispname: talloc() failed!\n"));
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return NULL;
}
@@ -651,7 +647,7 @@ char* svcctl_lookup_description( const char *name, NT_USER_TOKEN *token )
else
rpcstr_pull( description, regval_data_p(val), sizeof(description), regval_size(val), 0 );
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return description;
}
@@ -670,8 +666,7 @@ REGVAL_CTR* svcctl_fetch_regvalues( const char *name, NT_USER_TOKEN *token )
/* now add the security descriptor */
pstr_sprintf( path, "%s\\%s", KEY_SERVICES, name );
- wresult = regkey_open_internal( NULL, &key, path, token,
- REG_KEY_READ );
+ wresult = regkey_open_internal( &key, path, token, REG_KEY_READ );
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("svcctl_fetch_regvalues: key lookup failed! [%s] (%s)\n",
path, dos_errstr(wresult)));
@@ -680,13 +675,13 @@ REGVAL_CTR* svcctl_fetch_regvalues( const char *name, NT_USER_TOKEN *token )
if ( !(values = TALLOC_ZERO_P( NULL, REGVAL_CTR )) ) {
DEBUG(0,("svcctl_fetch_regvalues: talloc() failed!\n"));
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return NULL;
}
fetch_reg_values( key, values );
- TALLOC_FREE( key );
+ regkey_close_internal( key );
return values;
}
diff --git a/source/services/svc_netlogon.c b/source/services/svc_netlogon.c
index 09e841cf7e0..1bbef325ac3 100644
--- a/source/services/svc_netlogon.c
+++ b/source/services/svc_netlogon.c
@@ -32,7 +32,7 @@ static WERROR netlogon_status( const char *service, SERVICE_STATUS *service_stat
service_status->type = 0x20;
service_status->controls_accepted = SVCCTL_ACCEPT_NONE;
- if ( share_defined("NETLOGON") ) {
+ if ( lp_servicenumber("NETLOGON") != -1 ) {
service_status->state = SVCCTL_RUNNING;
service_status->win32_exit_code = WERR_SERVICE_NEVER_STARTED;
}
@@ -57,7 +57,7 @@ static WERROR netlogon_stop( const char *service, SERVICE_STATUS *service_status
static WERROR netlogon_start( const char *service )
{
- if ( !share_defined("NETLOGON") )
+ if ( lp_servicenumber("NETLOGON") == -1 )
return WERR_SERVICE_DISABLED;
return WERR_ACCESS_DENIED;
diff --git a/source/smbd/aio.c b/source/smbd/aio.c
index f747cf5c065..2559dc95057 100644
--- a/source/smbd/aio.c
+++ b/source/smbd/aio.c
@@ -49,10 +49,8 @@ static struct aio_extra *aio_list_head;
of the aio_read call.
*****************************************************************************/
-static struct aio_extra *create_aio_ex_read(files_struct *fsp,
- size_t buflen,
- uint16 mid,
- const char *inbuf)
+static struct aio_extra *create_aio_ex_read(files_struct *fsp, size_t buflen,
+ uint16 mid)
{
struct aio_extra *aio_ex = SMB_MALLOC_P(struct aio_extra);
@@ -68,14 +66,6 @@ static struct aio_extra *create_aio_ex_read(files_struct *fsp,
SAFE_FREE(aio_ex);
return NULL;
}
- /* Save the first 8 bytes of inbuf for possible enc data. */
- aio_ex->inbuf = SMB_MALLOC_ARRAY(char, 8);
- if (!aio_ex->inbuf) {
- SAFE_FREE(aio_ex->outbuf);
- SAFE_FREE(aio_ex);
- return NULL;
- }
- memcpy(aio_ex->inbuf, inbuf, 8);
DLIST_ADD(aio_list_head, aio_ex);
aio_ex->fsp = fsp;
aio_ex->read_req = True;
@@ -242,7 +232,7 @@ BOOL schedule_aio_read_and_X(connection_struct *conn,
bufsize = PTR_DIFF(smb_buf(outbuf),outbuf) + smb_maxcnt;
if ((aio_ex = create_aio_ex_read(fsp, bufsize,
- SVAL(inbuf,smb_mid), inbuf)) == NULL) {
+ SVAL(inbuf,smb_mid))) == NULL) {
DEBUG(10,("schedule_aio_read_and_X: malloc fail.\n"));
return False;
}
@@ -294,6 +284,7 @@ BOOL schedule_aio_write_and_X(connection_struct *conn,
struct aio_extra *aio_ex;
SMB_STRUCT_AIOCB *a;
size_t inbufsize, outbufsize;
+ BOOL write_through = BITSETW(inbuf+smb_vwv7,0);
size_t min_aio_write_size = lp_aio_write_size(SNUM(conn));
if (!min_aio_write_size || (numtowrite < min_aio_write_size)) {
@@ -359,7 +350,22 @@ BOOL schedule_aio_write_and_X(connection_struct *conn,
return False;
}
- srv_defer_sign_response(aio_ex->mid);
+ if (!write_through && !lp_syncalways(SNUM(fsp->conn))
+ && fsp->aio_write_behind) {
+ /* Lie to the client and immediately claim we finished the
+ * write. */
+ SSVAL(aio_ex->outbuf,smb_vwv2,numtowrite);
+ SSVAL(aio_ex->outbuf,smb_vwv4,(numtowrite>>16)&1);
+ show_msg(aio_ex->outbuf);
+ if (!send_smb(smbd_server_fd(),aio_ex->outbuf)) {
+ exit_server_cleanly("handle_aio_write: send_smb "
+ "failed.");
+ }
+ DEBUG(10,("schedule_aio_write_and_X: scheduled aio_write "
+ "behind for file %s\n", fsp->fsp_name ));
+ } else {
+ srv_defer_sign_response(aio_ex->mid);
+ }
outstanding_aio_calls++;
DEBUG(10,("schedule_aio_write_and_X: scheduled aio_write for file "
@@ -382,7 +388,6 @@ static int handle_aio_read_complete(struct aio_extra *aio_ex)
int ret = 0;
int outsize;
char *outbuf = aio_ex->outbuf;
- char *inbuf = aio_ex->inbuf;
char *data = smb_buf(outbuf);
ssize_t nread = SMB_VFS_AIO_RETURN(aio_ex->fsp,&aio_ex->acb);
@@ -406,7 +411,7 @@ static int handle_aio_read_complete(struct aio_extra *aio_ex)
outsize = (UNIXERROR(ERRDOS,ERRnoaccess));
ret = errno;
} else {
- outsize = set_message(inbuf,outbuf,12,nread,False);
+ outsize = set_message(outbuf,12,nread,False);
SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be * -1. */
SSVAL(outbuf,smb_vwv5,nread);
SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
@@ -419,7 +424,7 @@ static int handle_aio_read_complete(struct aio_extra *aio_ex)
aio_ex->acb.aio_nbytes, (int)nread ) );
}
- smb_setlen(inbuf,outbuf,outsize - 4);
+ smb_setlen(outbuf,outsize - 4);
show_msg(outbuf);
if (!send_smb(smbd_server_fd(),outbuf)) {
exit_server_cleanly("handle_aio_read_complete: send_smb "
@@ -444,10 +449,34 @@ static int handle_aio_write_complete(struct aio_extra *aio_ex)
int ret = 0;
files_struct *fsp = aio_ex->fsp;
char *outbuf = aio_ex->outbuf;
- char *inbuf = aio_ex->inbuf;
ssize_t numtowrite = aio_ex->acb.aio_nbytes;
ssize_t nwritten = SMB_VFS_AIO_RETURN(fsp,&aio_ex->acb);
+ if (fsp->aio_write_behind) {
+ if (nwritten != numtowrite) {
+ if (nwritten == -1) {
+ DEBUG(5,("handle_aio_write_complete: "
+ "aio_write_behind failed ! File %s "
+ "is corrupt ! Error %s\n",
+ fsp->fsp_name, strerror(errno) ));
+ ret = errno;
+ } else {
+ DEBUG(0,("handle_aio_write_complete: "
+ "aio_write_behind failed ! File %s "
+ "is corrupt ! Wanted %u bytes but "
+ "only wrote %d\n", fsp->fsp_name,
+ (unsigned int)numtowrite,
+ (int)nwritten ));
+ ret = EIO;
+ }
+ } else {
+ DEBUG(10,("handle_aio_write_complete: "
+ "aio_write_behind completed for file %s\n",
+ fsp->fsp_name ));
+ }
+ return 0;
+ }
+
/* We don't need outsize or set_message here as we've already set the
fixed size length when we set up the aio call. */
@@ -590,6 +619,115 @@ int process_aio_queue(void)
}
/****************************************************************************
+ We're doing write behind and the client closed the file. Wait up to 30
+ seconds (my arbitrary choice) for the aio to complete. Return 0 if all writes
+ completed, errno to return if not.
+*****************************************************************************/
+
+#define SMB_TIME_FOR_AIO_COMPLETE_WAIT 29
+
+int wait_for_aio_completion(files_struct *fsp)
+{
+ struct aio_extra *aio_ex;
+ const SMB_STRUCT_AIOCB **aiocb_list;
+ int aio_completion_count = 0;
+ time_t start_time = time(NULL);
+ int seconds_left;
+
+ for (seconds_left = SMB_TIME_FOR_AIO_COMPLETE_WAIT;
+ seconds_left >= 0;) {
+ int err = 0;
+ int i;
+ struct timespec ts;
+
+ aio_completion_count = 0;
+ for( aio_ex = aio_list_head; aio_ex; aio_ex = aio_ex->next) {
+ if (aio_ex->fsp == fsp) {
+ aio_completion_count++;
+ }
+ }
+
+ if (!aio_completion_count) {
+ return 0;
+ }
+
+ DEBUG(3,("wait_for_aio_completion: waiting for %d aio events "
+ "to complete.\n", aio_completion_count ));
+
+ aiocb_list = SMB_MALLOC_ARRAY(const SMB_STRUCT_AIOCB *,
+ aio_completion_count);
+ if (!aiocb_list) {
+ return ENOMEM;
+ }
+
+ for( i = 0, aio_ex = aio_list_head;
+ aio_ex;
+ aio_ex = aio_ex->next) {
+ if (aio_ex->fsp == fsp) {
+ aiocb_list[i++] = &aio_ex->acb;
+ }
+ }
+
+ /* Now wait up to seconds_left for completion. */
+ ts.tv_sec = seconds_left;
+ ts.tv_nsec = 0;
+
+ DEBUG(10,("wait_for_aio_completion: %d events, doing a wait "
+ "of %d seconds.\n",
+ aio_completion_count, seconds_left ));
+
+ err = SMB_VFS_AIO_SUSPEND(fsp, aiocb_list,
+ aio_completion_count, &ts);
+
+ DEBUG(10,("wait_for_aio_completion: returned err = %d, "
+ "errno = %s\n", err, strerror(errno) ));
+
+ if (err == -1 && errno == EAGAIN) {
+ DEBUG(0,("wait_for_aio_completion: aio_suspend timed "
+ "out waiting for %d events after a wait of "
+ "%d seconds\n", aio_completion_count,
+ seconds_left));
+ /* Timeout. */
+ cancel_aio_by_fsp(fsp);
+ SAFE_FREE(aiocb_list);
+ return EIO;
+ }
+
+ /* One or more events might have completed - process them if
+ * so. */
+ for( i = 0; i < aio_completion_count; i++) {
+ uint16 mid = aiocb_list[i]->aio_sigevent.sigev_value.sival_int;
+
+ aio_ex = find_aio_ex(mid);
+
+ if (!aio_ex) {
+ DEBUG(0, ("wait_for_aio_completion: mid %u "
+ "doesn't match an aio record\n",
+ (unsigned int)mid ));
+ continue;
+ }
+
+ if (!handle_aio_completed(aio_ex, &err)) {
+ continue;
+ }
+ delete_aio_ex(aio_ex);
+ }
+
+ SAFE_FREE(aiocb_list);
+ seconds_left = SMB_TIME_FOR_AIO_COMPLETE_WAIT
+ - (time(NULL) - start_time);
+ }
+
+ /* We timed out - we don't know why. Return ret if already an error,
+ * else EIO. */
+ DEBUG(10,("wait_for_aio_completion: aio_suspend timed out waiting "
+ "for %d events\n",
+ aio_completion_count));
+
+ return EIO;
+}
+
+/****************************************************************************
Cancel any outstanding aio requests. The client doesn't care about the reply.
*****************************************************************************/
@@ -647,4 +785,8 @@ void cancel_aio_by_fsp(files_struct *fsp)
{
}
+BOOL wait_for_aio_completion(files_struct *fsp)
+{
+ return True;
+}
#endif
diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c
index 924b99b113f..b9e7c144705 100644
--- a/source/smbd/blocking.c
+++ b/source/smbd/blocking.c
@@ -52,9 +52,6 @@ static blocking_lock_record *blocking_lock_queue;
/* dlink list we move cancelled lock records onto. */
static blocking_lock_record *blocking_lock_cancelled_queue;
-/* The event that makes us process our blocking lock queue */
-static struct timed_event *brl_timeout;
-
/****************************************************************************
Destructor for the above structure.
****************************************************************************/
@@ -74,78 +71,9 @@ static BOOL in_chained_smb(void)
return (chain_size != 0);
}
-static void received_unlock_msg(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data);
-static void process_blocking_lock_queue(void);
-
-static void brl_timeout_fn(struct event_context *event_ctx,
- struct timed_event *te,
- const struct timeval *now,
- void *private_data)
-{
- SMB_ASSERT(brl_timeout == te);
- TALLOC_FREE(brl_timeout);
-
- change_to_root_user(); /* TODO: Possibly run all timed events as
- * root */
-
- process_blocking_lock_queue();
-}
-
-/****************************************************************************
- After a change to blocking_lock_queue, recalculate the timed_event for the
- next processing.
-****************************************************************************/
-
-static BOOL recalc_brl_timeout(void)
-{
- blocking_lock_record *brl;
- struct timeval next_timeout;
-
- TALLOC_FREE(brl_timeout);
-
- next_timeout = timeval_zero();
-
- for (brl = blocking_lock_queue; brl; brl = brl->next) {
- if (timeval_is_zero(&brl->expire_time)) {
- /*
- * If we're blocked on pid 0xFFFFFFFF this is
- * a POSIX lock, so calculate a timeout of
- * 10 seconds into the future.
- */
- if (brl->blocking_pid == 0xFFFFFFFF) {
- struct timeval psx_to = timeval_current_ofs(10, 0);
- next_timeout = timeval_min(&next_timeout, &psx_to);
- }
-
- continue;
- }
-
- if (timeval_is_zero(&next_timeout)) {
- next_timeout = brl->expire_time;
- }
- else {
- next_timeout = timeval_min(&next_timeout,
- &brl->expire_time);
- }
- }
-
- if (timeval_is_zero(&next_timeout)) {
- return True;
- }
-
- if (!(brl_timeout = event_add_timed(smbd_event_context(), NULL,
- next_timeout, "brl_timeout",
- brl_timeout_fn, NULL))) {
- return False;
- }
-
- return True;
-}
-
+static void received_unlock_msg(int msg_type, struct process_id src,
+ void *buf, size_t len,
+ void *private_data);
/****************************************************************************
Function to push a blocking lock request onto the lock queue.
@@ -211,7 +139,7 @@ BOOL push_blocking_lock_request( struct byte_range_lock *br_lck,
blr->length = length;
/* Add a pending lock record for this. */
- status = brl_lock(smbd_messaging_context(), br_lck,
+ status = brl_lock(br_lck,
lock_pid,
procid_self(),
offset,
@@ -229,12 +157,11 @@ BOOL push_blocking_lock_request( struct byte_range_lock *br_lck,
}
DLIST_ADD_END(blocking_lock_queue, blr, blocking_lock_record *);
- recalc_brl_timeout();
/* Ensure we'll receive messages when this is unlocked. */
if (!set_lock_msg) {
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_UNLOCK, received_unlock_msg);
+ message_register(MSG_SMB_UNLOCK, received_unlock_msg,
+ NULL);
set_lock_msg = True;
}
@@ -254,15 +181,13 @@ BOOL push_blocking_lock_request( struct byte_range_lock *br_lck,
Return a smd with a given size.
*****************************************************************************/
-static void send_blocking_reply(char *outbuf, int outsize, const char *inbuf)
+static void send_blocking_reply(char *outbuf, int outsize)
{
- if(outsize > 4) {
- smb_setlen(inbuf, outbuf,outsize - 4);
- }
+ if(outsize > 4)
+ smb_setlen(outbuf,outsize - 4);
- if (!send_smb(smbd_server_fd(),outbuf)) {
+ if (!send_smb(smbd_server_fd(),outbuf))
exit_server_cleanly("send_blocking_reply: send_smb failed.");
- }
}
/****************************************************************************
@@ -277,7 +202,7 @@ static void reply_lockingX_success(blocking_lock_record *blr)
int outsize = 0;
construct_reply_common(inbuf, outbuf);
- set_message(inbuf,outbuf,2,0,True);
+ set_message(outbuf,2,0,True);
/*
* As this message is a lockingX call we must handle
@@ -291,7 +216,7 @@ static void reply_lockingX_success(blocking_lock_record *blr)
outsize += chain_size;
- send_blocking_reply(outbuf,outsize,inbuf);
+ send_blocking_reply(outbuf,outsize);
}
/****************************************************************************
@@ -372,8 +297,7 @@ static void reply_lockingX_error(blocking_lock_record *blr, NTSTATUS status)
* request would never have been queued. JRA.
*/
- do_unlock(smbd_messaging_context(),
- fsp,
+ do_unlock(fsp,
lock_pid,
count,
offset,
@@ -453,8 +377,7 @@ static BOOL process_lockingX(blocking_lock_record *blr)
* request would never have been queued. JRA.
*/
errno = 0;
- br_lck = do_lock(smbd_messaging_context(),
- fsp,
+ br_lck = do_lock(fsp,
lock_pid,
count,
offset,
@@ -516,8 +439,7 @@ static BOOL process_trans2(blocking_lock_record *blr)
char *outbuf;
char params[2];
NTSTATUS status;
- struct byte_range_lock *br_lck = do_lock(smbd_messaging_context(),
- blr->fsp,
+ struct byte_range_lock *br_lck = do_lock(blr->fsp,
blr->lock_pid,
blr->count,
blr->offset,
@@ -547,7 +469,7 @@ static BOOL process_trans2(blocking_lock_record *blr)
SCVAL(outbuf,smb_com,SMBtrans2);
SSVAL(params,0,0);
/* Fake up max_data_bytes here - we know it fits. */
- send_trans2_replies(inbuf, outbuf, max_send, params, 2, NULL, 0, 0xffff);
+ send_trans2_replies(outbuf, max_send, params, 2, NULL, 0, 0xffff);
return True;
}
@@ -667,25 +589,75 @@ BOOL blocking_lock_was_deferred(int mid)
Set a flag as an unlock request affects one of our pending locks.
*****************************************************************************/
-static void received_unlock_msg(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void received_unlock_msg(int msg_type, struct process_id src,
+ void *buf, size_t len,
+ void *private_data)
{
DEBUG(10,("received_unlock_msg\n"));
process_blocking_lock_queue();
}
/****************************************************************************
+ Return the number of milliseconds to the next blocking locks timeout, or default_timeout
+*****************************************************************************/
+
+unsigned int blocking_locks_timeout_ms(unsigned int default_timeout_ms)
+{
+ unsigned int timeout_ms = default_timeout_ms;
+ struct timeval tv_curr;
+ SMB_BIG_INT min_tv_dif_us = default_timeout_ms * 1000;
+ blocking_lock_record *blr = blocking_lock_queue;
+
+ /* note that we avoid the GetTimeOfDay() syscall if there are no blocking locks */
+ if (!blr) {
+ return timeout_ms;
+ }
+
+ tv_curr = timeval_current();
+
+ for (; blr; blr = blr->next) {
+ SMB_BIG_INT tv_dif_us;
+
+ if (timeval_is_zero(&blr->expire_time)) {
+ /*
+ * If we're blocked on pid 0xFFFFFFFF this is
+ * a POSIX lock, so calculate a timeout of
+ * 10 seconds.
+ */
+ if (blr->blocking_pid == 0xFFFFFFFF) {
+ tv_dif_us = 10 * 1000 * 1000;
+ min_tv_dif_us = MIN(min_tv_dif_us, tv_dif_us);
+ }
+ continue; /* Never timeout. */
+ }
+
+ tv_dif_us = usec_time_diff(&blr->expire_time, &tv_curr);
+ min_tv_dif_us = MIN(min_tv_dif_us, tv_dif_us);
+ }
+
+ if (min_tv_dif_us < 0) {
+ min_tv_dif_us = 0;
+ }
+
+ timeout_ms = (unsigned int)(min_tv_dif_us / (SMB_BIG_INT)1000);
+
+ if (timeout_ms < 1) {
+ timeout_ms = 1;
+ }
+
+ DEBUG(10,("blocking_locks_timeout_ms: returning %u\n", timeout_ms));
+
+ return timeout_ms;
+}
+
+/****************************************************************************
Process the blocking lock queue. Note that this is only called as root.
*****************************************************************************/
-static void process_blocking_lock_queue(void)
+void process_blocking_lock_queue(void)
{
struct timeval tv_curr = timeval_current();
blocking_lock_record *blr, *next = NULL;
- BOOL recalc_timeout = False;
/*
* Go through the queue and see if we can get any of the locks.
@@ -713,18 +685,14 @@ static void process_blocking_lock_queue(void)
DEBUG(5,("process_blocking_lock_queue: examining pending lock fnum = %d for file %s\n",
fsp->fnum, fsp->fsp_name ));
- if (!timeval_is_zero(&blr->expire_time) && timeval_compare(&blr->expire_time, &tv_curr) <= 0) {
+ if(!change_to_user(conn,vuid)) {
struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
/*
- * Lock expired - throw away all previously
- * obtained locks and return lock error.
+ * Remove the entry and return an error to the client.
*/
if (br_lck) {
- DEBUG(5,("process_blocking_lock_queue: pending lock fnum = %d for file %s timed out.\n",
- fsp->fnum, fsp->fsp_name ));
-
brl_lock_cancel(br_lck,
blr->lock_pid,
procid_self(),
@@ -734,14 +702,15 @@ static void process_blocking_lock_queue(void)
TALLOC_FREE(br_lck);
}
- blocking_lock_reply_error(blr,NT_STATUS_FILE_LOCK_CONFLICT);
+ DEBUG(0,("process_blocking_lock_queue: Unable to become user vuid=%d.\n",
+ vuid ));
+ blocking_lock_reply_error(blr,NT_STATUS_ACCESS_DENIED);
DLIST_REMOVE(blocking_lock_queue, blr);
free_blocking_lock_record(blr);
- recalc_timeout = True;
continue;
}
- if(!change_to_user(conn,vuid)) {
+ if(!set_current_service(conn,SVAL(blr->inbuf,smb_flg),True)) {
struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
/*
@@ -758,21 +727,22 @@ static void process_blocking_lock_queue(void)
TALLOC_FREE(br_lck);
}
- DEBUG(0,("process_blocking_lock_queue: Unable to become user vuid=%d.\n",
- vuid ));
+ DEBUG(0,("process_blocking_lock_queue: Unable to become service Error was %s.\n", strerror(errno) ));
blocking_lock_reply_error(blr,NT_STATUS_ACCESS_DENIED);
DLIST_REMOVE(blocking_lock_queue, blr);
free_blocking_lock_record(blr);
- recalc_timeout = True;
+ change_to_root_user();
continue;
}
- if(!set_current_service(conn,SVAL(blr->inbuf,smb_flg),True)) {
- struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
+ /*
+ * Go through the remaining locks and try and obtain them.
+ * The call returns True if all locks were obtained successfully
+ * and False if we still need to wait.
+ */
- /*
- * Remove the entry and return an error to the client.
- */
+ if(blocking_lock_record_process(blr)) {
+ struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
if (br_lck) {
brl_lock_cancel(br_lck,
@@ -784,25 +754,31 @@ static void process_blocking_lock_queue(void)
TALLOC_FREE(br_lck);
}
- DEBUG(0,("process_blocking_lock_queue: Unable to become service Error was %s.\n", strerror(errno) ));
- blocking_lock_reply_error(blr,NT_STATUS_ACCESS_DENIED);
DLIST_REMOVE(blocking_lock_queue, blr);
free_blocking_lock_record(blr);
- recalc_timeout = True;
change_to_root_user();
continue;
}
+ change_to_root_user();
+
/*
- * Go through the remaining locks and try and obtain them.
- * The call returns True if all locks were obtained successfully
- * and False if we still need to wait.
+ * We couldn't get the locks for this record on the list.
+ * If the time has expired, return a lock error.
*/
- if(blocking_lock_record_process(blr)) {
+ if (!timeval_is_zero(&blr->expire_time) && timeval_compare(&blr->expire_time, &tv_curr) <= 0) {
struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
+ /*
+ * Lock expired - throw away all previously
+ * obtained locks and return lock error.
+ */
+
if (br_lck) {
+ DEBUG(5,("process_blocking_lock_queue: pending lock fnum = %d for file %s timed out.\n",
+ fsp->fnum, fsp->fsp_name ));
+
brl_lock_cancel(br_lck,
blr->lock_pid,
procid_self(),
@@ -812,15 +788,12 @@ static void process_blocking_lock_queue(void)
TALLOC_FREE(br_lck);
}
+ blocking_lock_reply_error(blr,NT_STATUS_FILE_LOCK_CONFLICT);
DLIST_REMOVE(blocking_lock_queue, blr);
free_blocking_lock_record(blr);
- recalc_timeout = True;
+ continue;
}
- change_to_root_user();
- }
- if (recalc_timeout) {
- recalc_brl_timeout();
}
}
@@ -830,24 +803,23 @@ static void process_blocking_lock_queue(void)
#define MSG_BLOCKING_LOCK_CANCEL_SIZE (sizeof(blocking_lock_record *) + sizeof(NTSTATUS))
-static void process_blocking_lock_cancel_message(struct messaging_context *ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void process_blocking_lock_cancel_message(int msg_type,
+ struct process_id src,
+ void *buf, size_t len,
+ void *private_data)
{
NTSTATUS err;
- const char *msg = (const char *)data->data;
+ const char *msg = (const char *)buf;
blocking_lock_record *blr;
- if (data->data == NULL) {
- smb_panic("process_blocking_lock_cancel_message: null msg");
+ if (buf == NULL) {
+ smb_panic("process_blocking_lock_cancel_message: null msg\n");
}
- if (data->length != MSG_BLOCKING_LOCK_CANCEL_SIZE) {
+ if (len != MSG_BLOCKING_LOCK_CANCEL_SIZE) {
DEBUG(0, ("process_blocking_lock_cancel_message: "
- "Got invalid msg len %d\n", (int)data->length));
- smb_panic("process_blocking_lock_cancel_message: bad msg");
+ "Got invalid msg len %d\n", (int)len));
+ smb_panic("process_blocking_lock_cancel_message: bad msg\n");
}
memcpy(&blr, msg, sizeof(blr));
@@ -879,9 +851,9 @@ BOOL blocking_lock_cancel(files_struct *fsp,
if (!initialized) {
/* Register our message. */
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_BLOCKING_LOCK_CANCEL,
- process_blocking_lock_cancel_message);
+ message_register(MSG_SMB_BLOCKING_LOCK_CANCEL,
+ process_blocking_lock_cancel_message,
+ NULL);
initialized = True;
}
@@ -915,9 +887,9 @@ BOOL blocking_lock_cancel(files_struct *fsp,
memcpy(msg, &blr, sizeof(blr));
memcpy(&msg[sizeof(blr)], &err, sizeof(NTSTATUS));
- messaging_send_buf(smbd_messaging_context(), procid_self(),
- MSG_SMB_BLOCKING_LOCK_CANCEL,
- (uint8 *)&msg, sizeof(msg));
+ message_send_pid(pid_to_procid(sys_getpid()),
+ MSG_SMB_BLOCKING_LOCK_CANCEL,
+ &msg, sizeof(msg), True);
return True;
}
diff --git a/source/smbd/chgpasswd.c b/source/smbd/chgpasswd.c
index 1227163c224..7c6886b81c9 100644
--- a/source/smbd/chgpasswd.c
+++ b/source/smbd/chgpasswd.c
@@ -983,8 +983,8 @@ static BOOL check_passwd_history(struct samu *sampass, const char *plaintext)
return True;
}
- dump_data(100, new_nt_p16, NT_HASH_LEN);
- dump_data(100, pwhistory, PW_HISTORY_ENTRY_LEN*pwHisLen);
+ dump_data(100, (const char *)new_nt_p16, NT_HASH_LEN);
+ dump_data(100, (const char *)pwhistory, PW_HISTORY_ENTRY_LEN*pwHisLen);
memset(zero_md5_nt_pw, '\0', SALTED_MD5_HASH_LEN);
for (i=0; i<pwHisLen; i++) {
@@ -1019,7 +1019,6 @@ static BOOL check_passwd_history(struct samu *sampass, const char *plaintext)
NTSTATUS change_oem_password(struct samu *hnd, char *old_passwd, char *new_passwd, BOOL as_root, uint32 *samr_reject_reason)
{
uint32 min_len;
- uint32 refuse;
struct passwd *pass = NULL;
const char *username = pdb_get_username(hnd);
time_t can_change_time = pdb_get_pass_can_change_time(hnd);
@@ -1037,21 +1036,6 @@ NTSTATUS change_oem_password(struct samu *hnd, char *old_passwd, char *new_passw
return NT_STATUS_ACCOUNT_RESTRICTION;
}
- /* check to see if it is a Machine account and if the policy
- * denies machines to change the password. *
- * Should we deny also SRVTRUST and/or DOMSTRUST ? .SSS. */
- if (pdb_get_acct_ctrl(hnd) & ACB_WSTRUST) {
- if (pdb_get_account_policy(AP_REFUSE_MACHINE_PW_CHANGE, &refuse) && refuse) {
- DEBUG(1, ("Machine %s cannot change password now, "
- "denied by Refuse Machine Password Change policy\n",
- username));
- if (samr_reject_reason) {
- *samr_reject_reason = REJECT_REASON_OTHER;
- }
- return NT_STATUS_ACCOUNT_RESTRICTION;
- }
- }
-
/* removed calculation here, becuase passdb now calculates
based on policy. jmcd */
if ((can_change_time != 0) && (time(NULL) < can_change_time)) {
diff --git a/source/smbd/close.c b/source/smbd/close.c
index c4aa2e2e28c..a094d8a4da0 100644
--- a/source/smbd/close.c
+++ b/source/smbd/close.c
@@ -135,10 +135,8 @@ static void notify_deferred_opens(struct share_mode_lock *lck)
share_mode_entry_to_message(msg, e);
- messaging_send_buf(smbd_messaging_context(),
- e->pid, MSG_SMB_OPEN_RETRY,
- (uint8 *)msg,
- MSG_SMB_SHARE_MODE_ENTRY_SIZE);
+ message_send_pid(e->pid, MSG_SMB_OPEN_RETRY,
+ msg, MSG_SMB_SHARE_MODE_ENTRY_SIZE, True);
}
}
}
@@ -155,7 +153,7 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
struct share_mode_lock *lck;
SMB_STRUCT_STAT sbuf;
NTSTATUS status = NT_STATUS_OK;
- struct file_id id;
+ int ret;
/*
* Lock the share entries, and determine if we should delete
@@ -163,7 +161,7 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
* This prevents race conditions with the file being created. JRA.
*/
- lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
if (lck == NULL) {
DEBUG(0, ("close_remove_share_mode: Could not get share mode "
@@ -248,8 +246,14 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
/* We can only delete the file if the name we have is still valid and
hasn't been renamed. */
-
- if(SMB_VFS_STAT(conn,fsp->fsp_name,&sbuf) != 0) {
+
+ if (fsp->posix_open) {
+ ret = SMB_VFS_LSTAT(conn,fsp->fsp_name,&sbuf);
+ } else {
+ ret = SMB_VFS_STAT(conn,fsp->fsp_name,&sbuf);
+ }
+
+ if (ret != 0) {
DEBUG(5,("close_remove_share_mode: file %s. Delete on close "
"was set and stat failed with error %s\n",
fsp->fsp_name, strerror(errno) ));
@@ -259,17 +263,15 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
goto done;
}
- id = file_id_sbuf(&sbuf);
-
- if (!file_id_equal(&fsp->file_id, &id)) {
+ if(sbuf.st_dev != fsp->dev || sbuf.st_ino != fsp->inode) {
DEBUG(5,("close_remove_share_mode: file %s. Delete on close "
"was set and dev and/or inode does not match\n",
fsp->fsp_name ));
- DEBUG(5,("close_remove_share_mode: file %s. stored file_id %s, "
- "stat file_id %s\n",
+ DEBUG(5,("close_remove_share_mode: file %s. stored dev = %x, "
+ "inode = %.0f stat dev = %x, inode = %.0f\n",
fsp->fsp_name,
- file_id_static_string(&fsp->file_id),
- file_id_static_string2(&id)));
+ (unsigned int)fsp->dev, (double)fsp->inode,
+ (unsigned int)sbuf.st_dev, (double)sbuf.st_ino ));
/*
* Don't save the errno here, we ignore this error
*/
@@ -327,16 +329,28 @@ static NTSTATUS close_normal_file(files_struct *fsp, enum file_close_type close_
NTSTATUS status = NT_STATUS_OK;
NTSTATUS saved_status1 = NT_STATUS_OK;
NTSTATUS saved_status2 = NT_STATUS_OK;
+ NTSTATUS saved_status3 = NT_STATUS_OK;
connection_struct *conn = fsp->conn;
- cancel_aio_by_fsp(fsp);
+ if (fsp->aio_write_behind) {
+ /*
+ * If we're finishing write behind on a close we can get a write
+ * error here, we must remember this.
+ */
+ int ret = wait_for_aio_completion(fsp);
+ if (ret) {
+ saved_status1 = map_nt_error_from_unix(ret);
+ }
+ } else {
+ cancel_aio_by_fsp(fsp);
+ }
/*
* If we're flushing on a close we can get a write
* error here, we must remember this.
*/
- saved_status1 = close_filestruct(fsp);
+ saved_status2 = close_filestruct(fsp);
if (fsp->print_file) {
print_fsp_end(fsp, close_type);
@@ -350,14 +364,14 @@ static NTSTATUS close_normal_file(files_struct *fsp, enum file_close_type close_
if (fsp->fh->ref_count == 1) {
/* Should we return on error here... ? */
- saved_status2 = close_remove_share_mode(fsp, close_type);
+ saved_status3 = close_remove_share_mode(fsp, close_type);
}
if(fsp->oplock_type) {
release_file_oplock(fsp);
}
- locking_close_file(smbd_messaging_context(), fsp);
+ locking_close_file(fsp);
status = fd_close(conn, fsp);
@@ -381,6 +395,8 @@ static NTSTATUS close_normal_file(files_struct *fsp, enum file_close_type close_
status = saved_status1;
} else if (!NT_STATUS_IS_OK(saved_status2)) {
status = saved_status2;
+ } else if (!NT_STATUS_IS_OK(saved_status3)) {
+ status = saved_status3;
}
}
@@ -408,7 +424,7 @@ static NTSTATUS close_directory(files_struct *fsp, enum file_close_type close_ty
* reference to a directory also.
*/
- lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
if (lck == NULL) {
DEBUG(0, ("close_directory: Could not get share mode lock for %s\n", fsp->fsp_name));
diff --git a/source/smbd/conn.c b/source/smbd/conn.c
index da55c0a6459..282a82ce049 100644
--- a/source/smbd/conn.c
+++ b/source/smbd/conn.c
@@ -187,18 +187,14 @@ void conn_close_all(void)
Idle inactive connections.
****************************************************************************/
-BOOL conn_idle_all(time_t t)
+BOOL conn_idle_all(time_t t, int deadtime)
{
- int deadtime = lp_deadtime()*60;
pipes_struct *plist = NULL;
- connection_struct *conn;
-
- if (deadtime <= 0)
- deadtime = DEFAULT_SMBD_TIMEOUT;
-
- for (conn=Connections;conn;conn=conn->next) {
+ BOOL allidle = True;
+ connection_struct *conn, *next;
- time_t age = t - conn->lastused;
+ for (conn=Connections;conn;conn=next) {
+ next=conn->next;
/* Update if connection wasn't idle. */
if (conn->lastused != conn->lastused_count) {
@@ -207,12 +203,12 @@ BOOL conn_idle_all(time_t t)
}
/* close dirptrs on connections that are idle */
- if (age > DPTR_IDLE_TIMEOUT) {
+ if ((t-conn->lastused) > DPTR_IDLE_TIMEOUT) {
dptr_idlecnum(conn);
}
- if (conn->num_files_open > 0 || age < deadtime) {
- return False;
+ if (conn->num_files_open > 0 || (t-conn->lastused)<deadtime) {
+ allidle = False;
}
}
@@ -221,14 +217,11 @@ BOOL conn_idle_all(time_t t)
* idle with a handle open.
*/
- for (plist = get_first_internal_pipe(); plist;
- plist = get_next_internal_pipe(plist)) {
- if (plist->pipe_handles && plist->pipe_handles->count) {
- return False;
- }
- }
+ for (plist = get_first_internal_pipe(); plist; plist = get_next_internal_pipe(plist))
+ if (plist->pipe_handles && plist->pipe_handles->count)
+ allidle = False;
- return True;
+ return allidle;
}
/****************************************************************************
@@ -286,6 +279,7 @@ void conn_free_internal(connection_struct *conn)
free_namearray(conn->veto_list);
free_namearray(conn->hide_list);
free_namearray(conn->veto_oplock_list);
+ free_namearray(conn->aio_write_behind_list);
string_free(&conn->user);
string_free(&conn->dirpath);
@@ -306,8 +300,6 @@ void conn_free(connection_struct *conn)
DLIST_REMOVE(Connections, conn);
bitmap_clear(bmap, conn->cnum);
-
- SMB_ASSERT(num_open > 0);
num_open--;
conn_free_internal(conn);
@@ -319,16 +311,13 @@ the message contains just a share name and all instances of that
share are unmounted
the special sharename '*' forces unmount of all shares
****************************************************************************/
-void msg_force_tdis(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void msg_force_tdis(int msg_type, struct process_id pid, void *buf, size_t len,
+ void *private_data)
{
connection_struct *conn, *next;
fstring sharename;
- fstrcpy(sharename, (const char *)data->data);
+ fstrcpy(sharename, (const char *)buf);
if (strcmp(sharename, "*") == 0) {
DEBUG(1,("Forcing close of all shares\n"));
diff --git a/source/smbd/connection.c b/source/smbd/connection.c
index 211f0e6acba..325d4a58c64 100644
--- a/source/smbd/connection.c
+++ b/source/smbd/connection.c
@@ -20,31 +20,64 @@
#include "includes.h"
+static TDB_CONTEXT *tdb;
+
+/****************************************************************************
+ Return the connection tdb context (used for message send all).
+****************************************************************************/
+
+TDB_CONTEXT *conn_tdb_ctx(void)
+{
+ if (!tdb)
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
+ O_RDWR | O_CREAT, 0644);
+
+ return tdb;
+}
+
+static void make_conn_key(connection_struct *conn, const char *name, TDB_DATA *pkbuf, struct connections_key *pkey)
+{
+ ZERO_STRUCTP(pkey);
+ pkey->pid = procid_self();
+ pkey->cnum = conn?conn->cnum:-1;
+ fstrcpy(pkey->name, name);
+#ifdef DEVELOPER
+ /* valgrind fixer... */
+ {
+ size_t sl = strlen(pkey->name);
+ if (sizeof(fstring)-sl)
+ memset(&pkey->name[sl], '\0', sizeof(fstring)-sl);
+ }
+#endif
+
+ pkbuf->dptr = (char *)pkey;
+ pkbuf->dsize = sizeof(*pkey);
+}
+
/****************************************************************************
Delete a connection record.
****************************************************************************/
BOOL yield_connection(connection_struct *conn, const char *name)
{
- struct db_record *rec;
- NTSTATUS status;
+ struct connections_key key;
+ TDB_DATA kbuf;
+
+ if (!tdb)
+ return False;
DEBUG(3,("Yielding connection to %s\n",name));
- if (!(rec = connections_fetch_entry(NULL, conn, name))) {
- DEBUG(0, ("connections_fetch_entry failed\n"));
- return False;
- }
+ make_conn_key(conn, name, &kbuf, &key);
- status = rec->delete_rec(rec);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG( NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND) ? 3 : 0,
- ("deleting connection record returned %s\n",
- nt_errstr(status)));
+ if (tdb_delete(tdb, kbuf) != 0) {
+ int dbg_lvl = (!conn && (tdb_error(tdb) == TDB_ERR_NOEXIST)) ? 3 : 0;
+ DEBUG(dbg_lvl,("yield_connection: tdb_delete for name %s failed with error %s.\n",
+ name, tdb_errorstr(tdb) ));
+ return (False);
}
- TALLOC_FREE(rec);
- return NT_STATUS_IS_OK(status);
+ return(True);
}
struct count_stat {
@@ -58,45 +91,31 @@ struct count_stat {
Count the entries belonging to a service in the connection db.
****************************************************************************/
-static int count_fn(struct db_record *rec,
- const struct connections_key *ckey,
- const struct connections_data *crec,
- void *udp)
+static int count_fn( TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *udp)
{
+ struct connections_data crec;
struct count_stat *cs = (struct count_stat *)udp;
- if (crec->cnum == -1) {
+ if (dbuf.dsize != sizeof(crec))
+ return 0;
+
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum == -1)
return 0;
- }
/* If the pid was not found delete the entry from connections.tdb */
- if (cs->Clear && !process_exists(crec->pid) && (errno == ESRCH)) {
- NTSTATUS status;
+ if (cs->Clear && !process_exists(crec.pid) && (errno == ESRCH)) {
DEBUG(2,("pid %s doesn't exist - deleting connections %d [%s]\n",
- procid_str_static(&crec->pid), crec->cnum,
- crec->servicename));
-
- status = rec->delete_rec(rec);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0,("count_fn: tdb_delete failed with error %s\n",
- nt_errstr(status)));
- }
+ procid_str_static(&crec.pid), crec.cnum, crec.servicename));
+ if (tdb_delete(the_tdb, kbuf) != 0)
+ DEBUG(0,("count_fn: tdb_delete failed with error %s\n", tdb_errorstr(tdb) ));
return 0;
}
-
- if (cs->name) {
- /* We are counting all the connections to a given share. */
- if (strequal(crec->servicename, cs->name)) {
- cs->curr_connections++;
- }
- } else {
- /* We are counting all the connections. Static registrations
- * like the lpq backgroud process and the smbd daemon process
- * have a cnum of -1, so won't be counted here.
- */
+
+ if (strequal(crec.servicename, cs->name))
cs->curr_connections++;
- }
return 0;
}
@@ -119,50 +138,51 @@ int count_current_connections( const char *sharename, BOOL clear )
* as it leads to deadlock.
*/
- if (connections_forall(count_fn, &cs) == -1) {
- DEBUG(0,("count_current_connections: traverse of "
- "connections.tdb failed\n"));
- DEBUGADD(0, ("count_current_connections: connection count of %d might not be accurate",
- cs.curr_connections));
+ if (tdb_traverse(tdb, count_fn, &cs) == -1) {
+ DEBUG(0,("claim_connection: traverse of connections.tdb failed with error %s.\n",
+ tdb_errorstr(tdb) ));
+ return False;
}
-
- /* If the traverse failed part-way through, we at least return
- * as many connections as we had already counted. If it failed
- * right at the start, we will return 0, which is about all we
- * can do anywway.
- */
-
+
return cs.curr_connections;
}
/****************************************************************************
- Count the number of connections open across all shares.
-****************************************************************************/
-
-int count_all_current_connections(void)
-{
- return count_current_connections(NULL, True /* clear stale entries */);
-}
-
-/****************************************************************************
Claim an entry in the connections database.
****************************************************************************/
-BOOL claim_connection(connection_struct *conn, const char *name,
- uint32 msg_flags)
+BOOL claim_connection(connection_struct *conn, const char *name,int max_connections,BOOL Clear, uint32 msg_flags)
{
- struct db_record *rec;
+ struct connections_key key;
struct connections_data crec;
- TDB_DATA dbuf;
- NTSTATUS status;
+ TDB_DATA kbuf, dbuf;
+
+ if (!tdb) {
+ if ( (tdb =conn_tdb_ctx()) == NULL ) {
+ return False;
+ }
+ }
+
+ /*
+ * Enforce the max connections parameter.
+ */
- DEBUG(5,("claiming [%s]\n", name));
+ if (max_connections > 0) {
+ int curr_connections;
+
+ curr_connections = count_current_connections( lp_servicename(SNUM(conn)), True );
- if (!(rec = connections_fetch_entry(NULL, conn, name))) {
- DEBUG(0, ("connections_fetch_entry failed\n"));
- return False;
+ if (curr_connections >= max_connections) {
+ DEBUG(1,("claim_connection: Max connections (%d) exceeded for %s\n",
+ max_connections, name ));
+ return False;
+ }
}
+ DEBUG(5,("claiming %s %d\n",name,max_connections));
+
+ make_conn_key(conn, name, &kbuf, &key);
+
/* fill in the crec */
ZERO_STRUCT(crec);
crec.magic = 0x280267;
@@ -171,26 +191,21 @@ BOOL claim_connection(connection_struct *conn, const char *name,
if (conn) {
crec.uid = conn->uid;
crec.gid = conn->gid;
- strlcpy(crec.servicename, lp_servicename(SNUM(conn)),
- sizeof(crec.servicename));
+ safe_strcpy(crec.servicename,
+ lp_servicename(SNUM(conn)),sizeof(crec.servicename)-1);
}
crec.start = time(NULL);
crec.bcast_msg_flags = msg_flags;
- strlcpy(crec.machine,get_remote_machine_name(),sizeof(crec.machine));
- strlcpy(crec.addr,conn?conn->client_address:client_addr(),
- sizeof(crec.addr));
+ safe_strcpy(crec.machine,get_remote_machine_name(),sizeof(crec.machine)-1);
+ safe_strcpy(crec.addr,conn?conn->client_address:client_addr(),sizeof(crec.addr)-1);
- dbuf.dptr = (uint8 *)&crec;
+ dbuf.dptr = (char *)&crec;
dbuf.dsize = sizeof(crec);
- status = rec->store(rec, dbuf, TDB_REPLACE);
-
- TALLOC_FREE(rec);
-
- if (!NT_STATUS_IS_OK(status)) {
+ if (tdb_store(tdb, kbuf, dbuf, TDB_REPLACE) != 0) {
DEBUG(0,("claim_connection: tdb_store failed with error %s.\n",
- nt_errstr(status)));
+ tdb_errorstr(tdb) ));
return False;
}
@@ -199,44 +214,43 @@ BOOL claim_connection(connection_struct *conn, const char *name,
BOOL register_message_flags(BOOL doreg, uint32 msg_flags)
{
- struct db_record *rec;
+ struct connections_key key;
struct connections_data *pcrec;
- NTSTATUS status;
+ TDB_DATA kbuf, dbuf;
+
+ if (!tdb)
+ return False;
DEBUG(10,("register_message_flags: %s flags 0x%x\n",
doreg ? "adding" : "removing",
(unsigned int)msg_flags ));
- if (!(rec = connections_fetch_entry(NULL, NULL, NULL))) {
- DEBUG(0, ("connections_fetch_entry failed\n"));
- return False;
- }
+ make_conn_key(NULL, "", &kbuf, &key);
- if (rec->value.dsize != sizeof(struct connections_data)) {
- DEBUG(0,("register_message_flags: Got wrong record size\n"));
- TALLOC_FREE(rec);
+ dbuf = tdb_fetch(tdb, kbuf);
+ if (!dbuf.dptr) {
+ DEBUG(0,("register_message_flags: tdb_fetch failed: %s\n",
+ tdb_errorstr(tdb)));
return False;
}
- pcrec = (struct connections_data *)rec->value.dptr;
+ pcrec = (struct connections_data *)dbuf.dptr;
if (doreg)
pcrec->bcast_msg_flags |= msg_flags;
else
pcrec->bcast_msg_flags &= ~msg_flags;
- status = rec->store(rec, rec->value, TDB_REPLACE);
-
- TALLOC_FREE(rec);
-
- if (!NT_STATUS_IS_OK(status)) {
+ if (tdb_store(tdb, kbuf, dbuf, TDB_REPLACE) != 0) {
DEBUG(0,("register_message_flags: tdb_store failed: %s.\n",
- nt_errstr(status)));
+ tdb_errorstr(tdb) ));
+ SAFE_FREE(dbuf.dptr);
return False;
}
DEBUG(10,("register_message_flags: new flags 0x%x\n",
(unsigned int)pcrec->bcast_msg_flags ));
+ SAFE_FREE(dbuf.dptr);
return True;
}
@@ -258,10 +272,11 @@ static TDB_DATA* make_pipe_rec_key( struct pipe_open_rec *prec )
snprintf( key_string, sizeof(key_string), "%s/%d/%d",
prec->name, procid_to_pid(&prec->pid), prec->pnum );
- *kbuf = string_term_tdb_data(talloc_strdup(prec, key_string));
- if (kbuf->dptr == NULL )
+ if ( (kbuf->dptr = talloc_strdup(prec, key_string)) == NULL )
return NULL;
-
+
+ kbuf->dsize = strlen(key_string)+1;
+
return kbuf;
}
@@ -283,10 +298,10 @@ static void fill_pipe_open_rec( struct pipe_open_rec *prec, smb_np_struct *p )
BOOL store_pipe_opendb( smb_np_struct *p )
{
- struct db_record *dbrec;
struct pipe_open_rec *prec;
TDB_DATA *key;
TDB_DATA data;
+ TDB_CONTEXT *pipe_tdb;
BOOL ret = False;
if ( (prec = TALLOC_P( NULL, struct pipe_open_rec)) == NULL ) {
@@ -299,15 +314,14 @@ BOOL store_pipe_opendb( smb_np_struct *p )
goto done;
}
- data.dptr = (uint8 *)prec;
+ data.dptr = (char*)prec;
data.dsize = sizeof(struct pipe_open_rec);
-
- if (!(dbrec = connections_fetch_record(prec, *key))) {
- DEBUG(0, ("connections_fetch_record failed\n"));
+
+ if ( (pipe_tdb = conn_tdb_ctx() ) == NULL ) {
goto done;
}
-
- ret = NT_STATUS_IS_OK(dbrec->store(dbrec, data, TDB_REPLACE));
+
+ ret = (tdb_store( pipe_tdb, *key, data, TDB_REPLACE ) != -1);
done:
TALLOC_FREE( prec );
@@ -319,9 +333,9 @@ done:
BOOL delete_pipe_opendb( smb_np_struct *p )
{
- struct db_record *dbrec;
struct pipe_open_rec *prec;
TDB_DATA *key;
+ TDB_CONTEXT *pipe_tdb;
BOOL ret = False;
if ( (prec = TALLOC_P( NULL, struct pipe_open_rec)) == NULL ) {
@@ -334,12 +348,11 @@ BOOL delete_pipe_opendb( smb_np_struct *p )
goto done;
}
- if (!(dbrec = connections_fetch_record(prec, *key))) {
- DEBUG(0, ("connections_fetch_record failed\n"));
+ if ( (pipe_tdb = conn_tdb_ctx() ) == NULL ) {
goto done;
}
- ret = NT_STATUS_IS_OK(dbrec->delete_rec(dbrec));
+ ret = (tdb_delete( pipe_tdb, *key ) != -1 );
done:
TALLOC_FREE( prec );
diff --git a/source/smbd/dir.c b/source/smbd/dir.c
index e7baf2b759c..57ed1df6ac3 100644
--- a/source/smbd/dir.c
+++ b/source/smbd/dir.c
@@ -33,8 +33,6 @@ extern struct current_user current_user;
/* Make directory handle internals available. */
-#define NAME_CACHE_SIZE 100
-
struct name_cache_entry {
char *name;
long offset;
@@ -45,6 +43,7 @@ struct smb_Dir {
SMB_STRUCT_DIR *dir;
long offset;
char *dir_path;
+ size_t name_cache_size;
struct name_cache_entry *name_cache;
unsigned int name_cache_index;
unsigned int file_number;
@@ -879,7 +878,7 @@ static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_S
/* Pseudo-open the file (note - no fd's created). */
if(S_ISDIR(pst->st_mode)) {
- status = open_directory(conn, NULL, name, pst,
+ status = open_directory(conn, name, pst,
READ_CONTROL_ACCESS,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -887,7 +886,7 @@ static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_S
FILE_ATTRIBUTE_DIRECTORY,
NULL, &fsp);
} else {
- status = open_file_stat(conn, NULL, name, pst, &fsp);
+ status = open_file_stat(conn, name, pst, &fsp);
}
if (!NT_STATUS_IS_OK(status)) {
@@ -943,7 +942,7 @@ static BOOL user_can_write_file(connection_struct *conn, char *name, SMB_STRUCT_
if(S_ISDIR(pst->st_mode)) {
return True;
} else {
- status = open_file_ntcreate(conn, NULL, name, pst,
+ status = open_file_ntcreate(conn, name, pst,
FILE_WRITE_ATTRIBUTES,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -1062,12 +1061,14 @@ BOOL is_visible_file(connection_struct *conn, const char *dir_path, const char *
struct smb_Dir *OpenDir(connection_struct *conn, const char *name, const char *mask, uint32 attr)
{
struct smb_Dir *dirp = SMB_MALLOC_P(struct smb_Dir);
+
if (!dirp) {
return NULL;
}
ZERO_STRUCTP(dirp);
dirp->conn = conn;
+ dirp->name_cache_size = lp_directory_name_cache_size(SNUM(conn));
dirp->dir_path = SMB_STRDUP(name);
if (!dirp->dir_path) {
@@ -1079,9 +1080,14 @@ struct smb_Dir *OpenDir(connection_struct *conn, const char *name, const char *m
goto fail;
}
- dirp->name_cache = SMB_CALLOC_ARRAY(struct name_cache_entry, NAME_CACHE_SIZE);
- if (!dirp->name_cache) {
- goto fail;
+ if (dirp->name_cache_size) {
+ dirp->name_cache = SMB_CALLOC_ARRAY(struct name_cache_entry,
+ dirp->name_cache_size);
+ if (!dirp->name_cache) {
+ goto fail;
+ }
+ } else {
+ dirp->name_cache = NULL;
}
dirhandles_open++;
@@ -1114,7 +1120,7 @@ int CloseDir(struct smb_Dir *dirp)
}
SAFE_FREE(dirp->dir_path);
if (dirp->name_cache) {
- for (i = 0; i < NAME_CACHE_SIZE; i++) {
+ for (i = 0; i < dirp->name_cache_size; i++) {
SAFE_FREE(dirp->name_cache[i].name);
}
}
@@ -1230,7 +1236,12 @@ void DirCacheAdd(struct smb_Dir *dirp, const char *name, long offset)
{
struct name_cache_entry *e;
- dirp->name_cache_index = (dirp->name_cache_index+1) % NAME_CACHE_SIZE;
+ if (!dirp->name_cache_size || !dirp->name_cache) {
+ return;
+ }
+
+ dirp->name_cache_index = (dirp->name_cache_index+1) %
+ dirp->name_cache_size;
e = &dirp->name_cache[dirp->name_cache_index];
SAFE_FREE(e->name);
e->name = SMB_STRDUP(name);
@@ -1249,20 +1260,22 @@ BOOL SearchDir(struct smb_Dir *dirp, const char *name, long *poffset)
connection_struct *conn = dirp->conn;
/* Search back in the name cache. */
- for (i = dirp->name_cache_index; i >= 0; i--) {
- struct name_cache_entry *e = &dirp->name_cache[i];
- if (e->name && (conn->case_sensitive ? (strcmp(e->name, name) == 0) : strequal(e->name, name))) {
- *poffset = e->offset;
- SeekDir(dirp, e->offset);
- return True;
+ if (dirp->name_cache_size && dirp->name_cache) {
+ for (i = dirp->name_cache_index; i >= 0; i--) {
+ struct name_cache_entry *e = &dirp->name_cache[i];
+ if (e->name && (conn->case_sensitive ? (strcmp(e->name, name) == 0) : strequal(e->name, name))) {
+ *poffset = e->offset;
+ SeekDir(dirp, e->offset);
+ return True;
+ }
}
- }
- for (i = NAME_CACHE_SIZE-1; i > dirp->name_cache_index; i--) {
- struct name_cache_entry *e = &dirp->name_cache[i];
- if (e->name && (conn->case_sensitive ? (strcmp(e->name, name) == 0) : strequal(e->name, name))) {
- *poffset = e->offset;
- SeekDir(dirp, e->offset);
- return True;
+ for (i = dirp->name_cache_size - 1; i > dirp->name_cache_index; i--) {
+ struct name_cache_entry *e = &dirp->name_cache[i];
+ if (e->name && (conn->case_sensitive ? (strcmp(e->name, name) == 0) : strequal(e->name, name))) {
+ *poffset = e->offset;
+ SeekDir(dirp, e->offset);
+ return True;
+ }
}
}
diff --git a/source/smbd/dmapi.c b/source/smbd/dmapi.c
index c433a7329eb..b8c23c2dce6 100644
--- a/source/smbd/dmapi.c
+++ b/source/smbd/dmapi.c
@@ -152,9 +152,7 @@ retry:
/* No session already defined. */
if (dmapi_session == DM_NO_SESSION) {
- err = dm_create_session(DM_NO_SESSION,
- CONST_DISCARD(char *,
- DMAPI_SESSION_NAME),
+ err = dm_create_session(DM_NO_SESSION, DMAPI_SESSION_NAME,
&dmapi_session);
if (err < 0) {
DEBUGADD(DMAPI_TRACE,
diff --git a/source/smbd/error.c b/source/smbd/error.c
index dc35c0fa648..fa344e372e5 100644
--- a/source/smbd/error.c
+++ b/source/smbd/error.c
@@ -29,7 +29,7 @@ extern uint32 global_client_caps;
Create an error packet from a cached error.
****************************************************************************/
-int cached_error_packet(const char *inbuf,char *outbuf,files_struct *fsp,int line,const char *file)
+int cached_error_packet(char *outbuf,files_struct *fsp,int line,const char *file)
{
write_bmpx_struct *wbmpx = fsp->wbmpx_ptr;
int32 eclass = wbmpx->wr_errclass;
@@ -38,14 +38,14 @@ int cached_error_packet(const char *inbuf,char *outbuf,files_struct *fsp,int lin
/* We can now delete the auxiliary struct */
SAFE_FREE(fsp->wbmpx_ptr);
- return error_packet(inbuf,outbuf,eclass,err,ntstatus,line,file);
+ return error_packet(outbuf,eclass,err,ntstatus,line,file);
}
/****************************************************************************
Create an error packet from errno.
****************************************************************************/
-int unix_error_packet(const char *inbuf,char *outbuf,int def_class,uint32 def_code, NTSTATUS def_status, int line, const char *file)
+int unix_error_packet(char *outbuf,int def_class,uint32 def_code, NTSTATUS def_status, int line, const char *file)
{
int eclass=def_class;
int ecode=def_code;
@@ -66,7 +66,7 @@ int unix_error_packet(const char *inbuf,char *outbuf,int def_class,uint32 def_co
}
}
- return error_packet(inbuf,outbuf,eclass,ecode,ntstatus,line,file);
+ return error_packet(outbuf,eclass,ecode,ntstatus,line,file);
}
BOOL use_nt_status(void)
@@ -126,9 +126,28 @@ void error_packet_set(char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatu
}
}
-int error_packet(const char *inbuf, char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatus, int line, const char *file)
+int error_packet(char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatus, int line, const char *file)
{
- int outsize = set_message(inbuf,outbuf,0,0,True);
+ int outsize = set_message(outbuf,0,0,True);
error_packet_set(outbuf, eclass, ecode, ntstatus, line, file);
return outsize;
}
+
+/*******************************************************************************
+ Special error map processing needed for returning DOS errors on open calls.
+*******************************************************************************/
+
+int error_open(char *outbuf, NTSTATUS status, int line, const char *file)
+{
+ if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_COLLISION)) {
+ /*
+ * We hit an existing file, and if we're returning DOS
+ * error codes OBJECT_NAME_COLLISION would map to
+ * ERRDOS/183, we need to return ERRDOS/80, see bug
+ * 4852.
+ */
+ return error_packet(outbuf, ERRDOS, ERRfilexists,
+ NT_STATUS_OBJECT_NAME_COLLISION, line, file);
+ }
+ return error_packet(outbuf,0,0,status,line,file);
+}
diff --git a/source/smbd/fileio.c b/source/smbd/fileio.c
index 946d57da7e5..a5f8242d06e 100644
--- a/source/smbd/fileio.c
+++ b/source/smbd/fileio.c
@@ -509,15 +509,20 @@ nonop=%u allocated=%u active=%u direct=%u perfect=%u readhits=%u\n",
write_path = 3;
- } else if ( (pos >= wcp->file_size) &&
+ } else if ( (pos >= wcp->file_size) &&
(n == 1) &&
- (pos < wcp->offset + 2*wcp->alloc_size) &&
- (wcp->file_size == wcp->offset + wcp->data_size)) {
+ (wcp->file_size == wcp->offset + wcp->data_size) &&
+ (pos < wcp->file_size + wcp->alloc_size)) {
/*
- +---------------+
- | Cached data |
- +---------------+
+
+ End of file ---->|
+
+ +---------------+---------------+
+ | Cached data | Cache buffer |
+ +---------------+---------------+
+
+ |<------- allocated size ---------------->|
+--------+
| 1 Byte |
@@ -525,13 +530,18 @@ nonop=%u allocated=%u active=%u direct=%u perfect=%u readhits=%u\n",
MS-Office seems to do this a lot to determine if there's enough
space on the filesystem to write a new file.
- */
- SMB_BIG_UINT new_start = wcp->offset + wcp->data_size;
+ Change to :
+
+ End of file ---->|
+ +-----------------------+--------+
+ | Zeroed Cached data | 1 Byte |
+ +-----------------------+--------+
+ */
flush_write_cache(fsp, WRITE_FLUSH);
- wcp->offset = new_start;
- wcp->data_size = pos - new_start + 1;
+ wcp->offset = wcp->file_size;
+ wcp->data_size = pos - wcp->file_size + 1;
memset(wcp->data, '\0', wcp->data_size);
memcpy(wcp->data + wcp->data_size-1, data, 1);
@@ -780,11 +790,9 @@ void set_filelen_write_cache(files_struct *fsp, SMB_OFF_T file_size)
if(fsp->wcp) {
/* The cache *must* have been flushed before we do this. */
if (fsp->wcp->data_size != 0) {
- char *msg;
- asprintf(&msg, "set_filelen_write_cache: size change "
- "on file %s with write cache size = %lu\n",
- fsp->fsp_name,
- (unsigned long)fsp->wcp->data_size);
+ pstring msg;
+ slprintf(msg, sizeof(msg)-1, "set_filelen_write_cache: size change \
+on file %s with write cache size = %lu\n", fsp->fsp_name, (unsigned long)fsp->wcp->data_size );
smb_panic(msg);
}
fsp->wcp->file_size = file_size;
diff --git a/source/smbd/filename.c b/source/smbd/filename.c
index de15d923b89..570297bf69f 100644
--- a/source/smbd/filename.c
+++ b/source/smbd/filename.c
@@ -392,20 +392,25 @@ NTSTATUS unix_convert(connection_struct *conn,
* these two errors.
*/
- /* ENOENT and ENOTDIR both map to NT_STATUS_OBJECT_PATH_NOT_FOUND
- in the filename walk. */
+ /* ENOENT, ENOTDIR and ELOOP all map to
+ * NT_STATUS_OBJECT_PATH_NOT_FOUND
+ * in the filename walk. */
- if (errno == ENOENT || errno == ENOTDIR) {
+ if (errno == ENOENT ||
+ errno == ENOTDIR ||
+ errno == ELOOP) {
return NT_STATUS_OBJECT_PATH_NOT_FOUND;
}
return map_nt_error_from_unix(errno);
}
-
+
/* ENOENT is the only valid error here. */
if (errno != ENOENT) {
- /* ENOENT and ENOTDIR both map to NT_STATUS_OBJECT_PATH_NOT_FOUND
- in the filename walk. */
- if (errno == ENOTDIR) {
+ /* ENOTDIR and ELOOP both map to
+ * NT_STATUS_OBJECT_PATH_NOT_FOUND
+ * in the filename walk. */
+ if (errno == ENOTDIR ||
+ errno == ELOOP) {
return NT_STATUS_OBJECT_PATH_NOT_FOUND;
}
return map_nt_error_from_unix(errno);
@@ -463,7 +468,7 @@ NTSTATUS unix_convert(connection_struct *conn,
} /* end else */
#ifdef DEVELOPER
- if (VALID_STAT(st) && get_delete_on_close_flag(file_id_sbuf(&st))) {
+ if (VALID_STAT(st) && get_delete_on_close_flag(st.st_dev, st.st_ino)) {
return NT_STATUS_DELETE_PENDING;
}
#endif
@@ -512,7 +517,7 @@ NTSTATUS unix_convert(connection_struct *conn,
}
/****************************************************************************
- Check a filename - possibly calling check_reduced_name.
+ Check a filename - possibly caling reducename.
This is called by every routine before it allows an operation on a filename.
It does any final confirmation necessary to ensure that the filename is
a valid one for the user to access.
@@ -529,7 +534,7 @@ NTSTATUS check_name(connection_struct *conn, const pstring name)
}
if (!lp_widelinks(SNUM(conn)) || !lp_symlinks(SNUM(conn))) {
- NTSTATUS status = check_reduced_name(conn,name);
+ NTSTATUS status = reduce_name(conn,name);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(5,("check_name: name %s failed with %s\n",name, nt_errstr(status)));
return status;
diff --git a/source/smbd/files.c b/source/smbd/files.c
index 9994b50d15a..9f3f72a4000 100644
--- a/source/smbd/files.c
+++ b/source/smbd/files.c
@@ -38,7 +38,8 @@ static int files_used;
/* A singleton cache to speed up searching by dev/inode. */
static struct fsp_singleton_cache {
files_struct *fsp;
- struct file_id id;
+ SMB_DEV_T dev;
+ SMB_INO_T inode;
} fsp_fi_cache;
/****************************************************************************
@@ -103,7 +104,7 @@ NTSTATUS file_new(connection_struct *conn, files_struct **result)
fsp->fh->fd = -1;
fsp->conn = conn;
- fsp->fh->gen_id = get_gen_count();
+ fsp->fh->file_id = get_gen_count();
GetTimeOfDay(&fsp->open_time);
first_file = (i+1) % real_max_open_files;
@@ -232,9 +233,9 @@ void file_dump_open_table(void)
files_struct *fsp;
for (fsp=Files;fsp;fsp=fsp->next,count++) {
- DEBUG(10,("Files[%d], fnum = %d, name %s, fd = %d, gen = %lu, fileid=%s\n",
- count, fsp->fnum, fsp->fsp_name, fsp->fh->fd, (unsigned long)fsp->fh->gen_id,
- file_id_static_string(&fsp->file_id)));
+ DEBUG(10,("Files[%d], fnum = %d, name %s, fd = %d, fileid = %lu, dev = %x, inode = %.0f\n",
+ count, fsp->fnum, fsp->fsp_name, fsp->fh->fd, (unsigned long)fsp->fh->file_id,
+ (unsigned int)fsp->dev, (double)fsp->inode ));
}
}
@@ -263,15 +264,16 @@ files_struct *file_find_fd(int fd)
Find a fsp given a device, inode and file_id.
****************************************************************************/
-files_struct *file_find_dif(struct file_id id, unsigned long gen_id)
+files_struct *file_find_dif(SMB_DEV_T dev, SMB_INO_T inode, unsigned long file_id)
{
int count=0;
files_struct *fsp;
for (fsp=Files;fsp;fsp=fsp->next,count++) {
/* We can have a fsp->fh->fd == -1 here as it could be a stat open. */
- if (file_id_equal(&fsp->file_id, &id) &&
- fsp->fh->gen_id == gen_id ) {
+ if (fsp->dev == dev &&
+ fsp->inode == inode &&
+ fsp->fh->file_id == file_id ) {
if (count > 10) {
DLIST_PROMOTE(Files, fsp);
}
@@ -279,12 +281,11 @@ files_struct *file_find_dif(struct file_id id, unsigned long gen_id)
if ((fsp->fh->fd == -1) &&
(fsp->oplock_type != NO_OPLOCK) &&
(fsp->oplock_type != FAKE_LEVEL_II_OPLOCK)) {
- DEBUG(0,("file_find_dif: file %s file_id = %s, gen = %u \
-oplock_type = %u is a stat open with oplock type !\n", fsp->fsp_name,
- file_id_static_string(&fsp->file_id),
- (unsigned int)fsp->fh->gen_id,
- (unsigned int)fsp->oplock_type ));
- smb_panic("file_find_dif");
+ DEBUG(0,("file_find_dif: file %s dev = %x, inode = %.0f, file_id = %u \
+oplock_type = %u is a stat open with oplock type !\n", fsp->fsp_name, (unsigned int)fsp->dev,
+ (double)fsp->inode, (unsigned int)fsp->fh->file_id,
+ (unsigned int)fsp->oplock_type ));
+ smb_panic("file_find_dif\n");
}
return fsp;
}
@@ -315,20 +316,22 @@ files_struct *file_find_fsp(files_struct *orig_fsp)
calls.
****************************************************************************/
-files_struct *file_find_di_first(struct file_id id)
+files_struct *file_find_di_first(SMB_DEV_T dev, SMB_INO_T inode)
{
files_struct *fsp;
- if (file_id_equal(&fsp_fi_cache.id, &id)) {
+ if (fsp_fi_cache.dev == dev && fsp_fi_cache.inode == inode) {
/* Positive or negative cache hit. */
return fsp_fi_cache.fsp;
}
- fsp_fi_cache.id = id;
+ fsp_fi_cache.dev = dev;
+ fsp_fi_cache.inode = inode;
for (fsp=Files;fsp;fsp=fsp->next) {
if ( fsp->fh->fd != -1 &&
- file_id_equal(&fsp->file_id, &id)) {
+ fsp->dev == dev &&
+ fsp->inode == inode ) {
/* Setup positive cache. */
fsp_fi_cache.fsp = fsp;
return fsp;
@@ -350,9 +353,9 @@ files_struct *file_find_di_next(files_struct *start_fsp)
for (fsp = start_fsp->next;fsp;fsp=fsp->next) {
if ( fsp->fh->fd != -1 &&
- file_id_equal(&fsp->file_id, &start_fsp->file_id)) {
+ fsp->dev == start_fsp->dev &&
+ fsp->inode == start_fsp->inode )
return fsp;
- }
}
return NULL;
@@ -389,7 +392,9 @@ void fsp_set_pending_modtime(files_struct *tfsp, const struct timespec mod)
}
for (fsp = Files;fsp;fsp=fsp->next) {
- if ( fsp->fh->fd != -1 && file_id_equal(&fsp->file_id, &tfsp->file_id)) {
+ if ( fsp->fh->fd != -1 &&
+ fsp->dev == tfsp->dev &&
+ fsp->inode == tfsp->inode ) {
fsp->pending_modtime = mod;
fsp->pending_modtime_owner = False;
}
@@ -540,7 +545,8 @@ NTSTATUS dup_file_fsp(files_struct *fsp,
dup_fsp->fh = fsp->fh;
dup_fsp->fh->ref_count++;
- dup_fsp->file_id = fsp->file_id;
+ dup_fsp->dev = fsp->dev;
+ dup_fsp->inode = fsp->inode;
dup_fsp->initial_allocation_size = fsp->initial_allocation_size;
dup_fsp->mode = fsp->mode;
dup_fsp->file_pid = fsp->file_pid;
@@ -563,6 +569,7 @@ NTSTATUS dup_file_fsp(files_struct *fsp,
dup_fsp->modified = fsp->modified;
dup_fsp->is_directory = fsp->is_directory;
dup_fsp->is_stat = fsp->is_stat;
+ dup_fsp->aio_write_behind = fsp->aio_write_behind;
string_set(&dup_fsp->fsp_name,fsp->fsp_name);
*result = dup_fsp;
diff --git a/source/smbd/ipc.c b/source/smbd/ipc.c
index ce26b53e1b9..6e5ff9f0359 100644
--- a/source/smbd/ipc.c
+++ b/source/smbd/ipc.c
@@ -72,13 +72,10 @@ static void copy_trans_params_and_data(char *outbuf, int align,
Send a trans reply.
****************************************************************************/
-void send_trans_reply(const char *inbuf,
- char *outbuf,
- char *rparam,
- int rparam_len,
- char *rdata,
- int rdata_len,
- BOOL buffer_too_large)
+void send_trans_reply(char *outbuf,
+ char *rparam, int rparam_len,
+ char *rdata, int rdata_len,
+ BOOL buffer_too_large)
{
int this_ldata,this_lparam;
int tot_data_sent = 0;
@@ -100,11 +97,11 @@ void send_trans_reply(const char *inbuf,
ERROR_BOTH(STATUS_BUFFER_OVERFLOW,ERRDOS,ERRmoredata);
}
- set_message(inbuf,outbuf,10,1+align+this_ldata+this_lparam,True);
+ set_message(outbuf,10,1+align+this_ldata+this_lparam,True);
copy_trans_params_and_data(outbuf, align,
- rparam, tot_param_sent, this_lparam,
- rdata, tot_data_sent, this_ldata);
+ rparam, tot_param_sent, this_lparam,
+ rdata, tot_data_sent, this_ldata);
SSVAL(outbuf,smb_vwv0,lparam);
SSVAL(outbuf,smb_vwv1,ldata);
@@ -136,7 +133,7 @@ void send_trans_reply(const char *inbuf,
align = (this_lparam%4);
- set_message(inbuf,outbuf,10,1+this_ldata+this_lparam+align,False);
+ set_message(outbuf,10,1+this_ldata+this_lparam+align,False);
copy_trans_params_and_data(outbuf, align,
rparam, tot_param_sent, this_lparam,
@@ -163,9 +160,7 @@ void send_trans_reply(const char *inbuf,
Start the first part of an RPC reply which began with an SMBtrans request.
****************************************************************************/
-static BOOL api_rpc_trans_reply(const char *inbuf,
- char *outbuf,
- smb_np_struct *p)
+static BOOL api_rpc_trans_reply(char *outbuf, smb_np_struct *p)
{
BOOL is_data_outstanding;
char *rdata = (char *)SMB_MALLOC(p->max_trans_reply);
@@ -182,7 +177,7 @@ static BOOL api_rpc_trans_reply(const char *inbuf,
return False;
}
- send_trans_reply(inbuf, outbuf, NULL, 0, rdata, data_len, is_data_outstanding);
+ send_trans_reply(outbuf, NULL, 0, rdata, data_len, is_data_outstanding);
SAFE_FREE(rdata);
return True;
@@ -192,11 +187,7 @@ static BOOL api_rpc_trans_reply(const char *inbuf,
WaitNamedPipeHandleState
****************************************************************************/
-static BOOL api_WNPHS(const char *inbuf,
- char *outbuf,
- smb_np_struct *p,
- char *param,
- int param_len)
+static BOOL api_WNPHS(char *outbuf, smb_np_struct *p, char *param, int param_len)
{
uint16 priority;
@@ -208,7 +199,7 @@ static BOOL api_WNPHS(const char *inbuf,
if (wait_rpc_pipe_hnd_state(p, priority)) {
/* now send the reply */
- send_trans_reply(inbuf, outbuf, NULL, 0, NULL, 0, False);
+ send_trans_reply(outbuf, NULL, 0, NULL, 0, False);
return True;
}
return False;
@@ -219,11 +210,7 @@ static BOOL api_WNPHS(const char *inbuf,
SetNamedPipeHandleState
****************************************************************************/
-static BOOL api_SNPHS(const char *inbuf,
- char *outbuf,
- smb_np_struct *p,
- char *param,
- int param_len)
+static BOOL api_SNPHS(char *outbuf, smb_np_struct *p, char *param, int param_len)
{
uint16 id;
@@ -235,7 +222,7 @@ static BOOL api_SNPHS(const char *inbuf,
if (set_rpc_pipe_hnd_state(p, id)) {
/* now send the reply */
- send_trans_reply(inbuf, outbuf, NULL, 0, NULL, 0, False);
+ send_trans_reply(outbuf, NULL, 0, NULL, 0, False);
return True;
}
return False;
@@ -246,7 +233,7 @@ static BOOL api_SNPHS(const char *inbuf,
When no reply is generated, indicate unsupported.
****************************************************************************/
-static BOOL api_no_reply(const char *inbuf, char *outbuf, int max_rdata_len)
+static BOOL api_no_reply(char *outbuf, int max_rdata_len)
{
char rparam[4];
@@ -257,7 +244,7 @@ static BOOL api_no_reply(const char *inbuf, char *outbuf, int max_rdata_len)
DEBUG(3,("Unsupported API fd command\n"));
/* now send the reply */
- send_trans_reply(inbuf, outbuf, rparam, 4, NULL, 0, False);
+ send_trans_reply(outbuf, rparam, 4, NULL, 0, False);
return -1;
}
@@ -266,18 +253,9 @@ static BOOL api_no_reply(const char *inbuf, char *outbuf, int max_rdata_len)
Handle remote api calls delivered to a named pipe already opened.
****************************************************************************/
-static int api_fd_reply(connection_struct *conn,
- uint16 vuid,
- const char *inbuf,
- char *outbuf,
- uint16 *setup,
- char *data,
- char *params,
- int suwcnt,
- int tdscnt,
- int tpscnt,
- int mdrcnt,
- int mprcnt)
+static int api_fd_reply(connection_struct *conn,uint16 vuid,char *outbuf,
+ uint16 *setup,char *data,char *params,
+ int suwcnt,int tdscnt,int tpscnt,int mdrcnt,int mprcnt)
{
BOOL reply = False;
smb_np_struct *p = NULL;
@@ -305,7 +283,7 @@ static int api_fd_reply(connection_struct *conn,
/* Win9x does this call with a unicode pipe name, not a pnum. */
/* Just return success for now... */
DEBUG(3,("Got TRANSACT_WAITNAMEDPIPEHANDLESTATE on text pipe name\n"));
- send_trans_reply(inbuf, outbuf, NULL, 0, NULL, 0, False);
+ send_trans_reply(outbuf, NULL, 0, NULL, 0, False);
return -1;
}
@@ -331,94 +309,51 @@ static int api_fd_reply(connection_struct *conn,
/* dce/rpc command */
reply = write_to_pipe(p, data, tdscnt);
if (reply)
- reply = api_rpc_trans_reply(inbuf, outbuf, p);
+ reply = api_rpc_trans_reply(outbuf, p);
break;
case TRANSACT_WAITNAMEDPIPEHANDLESTATE:
/* Wait Named Pipe Handle state */
- reply = api_WNPHS(inbuf, outbuf, p, params, tpscnt);
+ reply = api_WNPHS(outbuf, p, params, tpscnt);
break;
case TRANSACT_SETNAMEDPIPEHANDLESTATE:
/* Set Named Pipe Handle state */
- reply = api_SNPHS(inbuf, outbuf, p, params, tpscnt);
+ reply = api_SNPHS(outbuf, p, params, tpscnt);
break;
default:
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
if (!reply)
- return api_no_reply(inbuf, outbuf, mdrcnt);
+ return api_no_reply(outbuf, mdrcnt);
return -1;
}
/****************************************************************************
- Handle named pipe commands.
-****************************************************************************/
-
-static int named_pipe(connection_struct *conn,
- uint16 vuid,
- const char *inbuf,
- char *outbuf,
- char *name,
- uint16 *setup,
- char *data,
- char *params,
- int suwcnt,
- int tdscnt,
- int tpscnt,
- int msrcnt,
- int mdrcnt,
- int mprcnt)
+ handle named pipe commands
+ ****************************************************************************/
+static int named_pipe(connection_struct *conn,uint16 vuid, char *outbuf,char *name,
+ uint16 *setup,char *data,char *params,
+ int suwcnt,int tdscnt,int tpscnt,
+ int msrcnt,int mdrcnt,int mprcnt)
{
DEBUG(3,("named pipe command on <%s> name\n", name));
- if (strequal(name,"LANMAN")) {
- return api_reply(conn,
- vuid,
- inbuf,
- outbuf,
- data,
- params,
- tdscnt,
- tpscnt,
- mdrcnt,
- mprcnt);
- }
+ if (strequal(name,"LANMAN"))
+ return api_reply(conn,vuid,outbuf,data,params,tdscnt,tpscnt,mdrcnt,mprcnt);
if (strequal(name,"WKSSVC") ||
strequal(name,"SRVSVC") ||
strequal(name,"WINREG") ||
strequal(name,"SAMR") ||
- strequal(name,"LSARPC")) {
+ strequal(name,"LSARPC"))
+ {
DEBUG(4,("named pipe command from Win95 (wow!)\n"));
- return api_fd_reply(conn,
- vuid,
- inbuf,
- outbuf,
- setup,
- data,
- params,
- suwcnt,
- tdscnt,
- tpscnt,
- mdrcnt,
- mprcnt);
+ return api_fd_reply(conn,vuid,outbuf,setup,data,params,suwcnt,tdscnt,tpscnt,mdrcnt,mprcnt);
}
- if (strlen(name) < 1) {
- return api_fd_reply(conn,
- vuid,
- inbuf,
- outbuf,
- setup,
- data,
- params,
- suwcnt,
- tdscnt,
- tpscnt,
- mdrcnt,
- mprcnt);
- }
+ if (strlen(name) < 1)
+ return api_fd_reply(conn,vuid,outbuf,setup,data,params,suwcnt,tdscnt,tpscnt,mdrcnt,mprcnt);
if (setup)
DEBUG(3,("unknown named pipe: setup 0x%X setup1=%d\n", (int)setup[0],(int)setup[1]));
@@ -427,10 +362,8 @@ static int named_pipe(connection_struct *conn,
}
static NTSTATUS handle_trans(connection_struct *conn,
- struct trans_state *state,
- const char *inbuf,
- char *outbuf,
- int *outsize)
+ struct trans_state *state,
+ char *outbuf, int *outsize)
{
char *local_machine_name;
int name_offset = 0;
@@ -469,18 +402,15 @@ static NTSTATUS handle_trans(connection_struct *conn,
name_offset++;
DEBUG(5,("calling named_pipe\n"));
- *outsize = named_pipe(conn,
- state->vuid,
- inbuf,
- outbuf,
- state->name+name_offset,
- state->setup,state->data,
- state->param,
- state->setup_count,state->total_data,
- state->total_param,
- state->max_setup_return,
- state->max_data_return,
- state->max_param_return);
+ *outsize = named_pipe(conn, state->vuid, outbuf,
+ state->name+name_offset,
+ state->setup,state->data,
+ state->param,
+ state->setup_count,state->total_data,
+ state->total_param,
+ state->max_setup_return,
+ state->max_data_return,
+ state->max_param_return);
if (*outsize == 0) {
return NT_STATUS_NOT_SUPPORTED;
@@ -496,11 +426,8 @@ static NTSTATUS handle_trans(connection_struct *conn,
Reply to a SMBtrans.
****************************************************************************/
-int reply_trans(connection_struct *conn,
- char *inbuf,
- char *outbuf,
- int size,
- int bufsize)
+int reply_trans(connection_struct *conn, char *inbuf,char *outbuf,
+ int size, int bufsize)
{
int outsize = 0;
unsigned int dsoff = SVAL(inbuf, smb_dsoff);
@@ -543,8 +470,8 @@ int reply_trans(connection_struct *conn,
state->one_way = BITSETW(inbuf+smb_vwv5,1);
memset(state->name, '\0',sizeof(state->name));
- srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), state->name,
- smb_buf(inbuf), sizeof(state->name), STR_TERMINATE);
+ srvstr_pull_buf(inbuf, state->name, smb_buf(inbuf),
+ sizeof(state->name), STR_TERMINATE);
if ((dscnt > state->total_data) || (pscnt > state->total_param))
goto bad_param;
@@ -625,7 +552,7 @@ int reply_trans(connection_struct *conn,
if ((state->received_param == state->total_param) &&
(state->received_data == state->total_data)) {
- result = handle_trans(conn, state, inbuf, outbuf, &outsize);
+ result = handle_trans(conn, state, outbuf, &outsize);
SAFE_FREE(state->data);
SAFE_FREE(state->param);
@@ -649,7 +576,7 @@ int reply_trans(connection_struct *conn,
/* We need to send an interim response then receive the rest
of the parameter/data bytes */
- outsize = set_message(inbuf,outbuf,0,0,True);
+ outsize = set_message(outbuf,0,0,True);
show_msg(outbuf);
END_PROFILE(SMBtrans);
return outsize;
@@ -760,7 +687,7 @@ int reply_transs(connection_struct *conn, char *inbuf,char *outbuf,
*/
SCVAL(outbuf,smb_com,SMBtrans);
- result = handle_trans(conn, state, inbuf, outbuf, &outsize);
+ result = handle_trans(conn, state, outbuf, &outsize);
DLIST_REMOVE(conn->pending_trans, state);
SAFE_FREE(state->data);
diff --git a/source/smbd/lanman.c b/source/smbd/lanman.c
index 0a9a529a85f..ff2044b2eb9 100644
--- a/source/smbd/lanman.c
+++ b/source/smbd/lanman.c
@@ -1720,7 +1720,6 @@ static BOOL api_RNetShareEnum( connection_struct *conn, uint16 vuid,
/* Ensure all the usershares are loaded. */
become_root();
- load_registry_shares();
count = load_usershare_shares();
unbecome_root();
@@ -1894,8 +1893,7 @@ static BOOL api_RNetShareAdd(connection_struct *conn,uint16 vuid,
goto error_exit;
} else {
SAFE_FREE(command);
- message_send_all(smbd_messaging_context(),
- MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
+ message_send_all(conn_tdb_ctx(), MSG_SMB_CONF_UPDATED, NULL, 0, False, NULL);
}
} else {
return False;
@@ -4191,7 +4189,7 @@ static BOOL api_RNetSessionEnum(connection_struct *conn, uint16 vuid,
char *p = skip_string(param,tpscnt,str2);
int uLevel;
struct pack_desc desc;
- struct sessionid *session_list;
+ struct sessionid *session_list = NULL;
int i, num_sessions;
if (!str1 || !str2 || !p) {
@@ -4214,11 +4212,12 @@ static BOOL api_RNetSessionEnum(connection_struct *conn, uint16 vuid,
return False;
}
- num_sessions = list_sessions(tmp_talloc_ctx(), &session_list);
+ num_sessions = list_sessions(&session_list);
if (mdrcnt > 0) {
*rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
if (!*rdata) {
+ SAFE_FREE(session_list);
return False;
}
}
@@ -4227,6 +4226,7 @@ static BOOL api_RNetSessionEnum(connection_struct *conn, uint16 vuid,
desc.buflen = mdrcnt;
desc.format = str2;
if (!init_package(&desc,num_sessions,0)) {
+ SAFE_FREE(session_list);
return False;
}
@@ -4247,6 +4247,7 @@ static BOOL api_RNetSessionEnum(connection_struct *conn, uint16 vuid,
*rparam_len = 8;
*rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
if (!*rparam) {
+ SAFE_FREE(session_list);
return False;
}
SSVALS(*rparam,0,desc.errcode);
@@ -4255,6 +4256,7 @@ static BOOL api_RNetSessionEnum(connection_struct *conn, uint16 vuid,
DEBUG(4,("RNetSessionEnum: errorcode %d\n",desc.errcode));
+ SAFE_FREE(session_list);
return True;
}
@@ -4361,19 +4363,11 @@ static const struct {
/****************************************************************************
- Handle remote api calls.
-****************************************************************************/
+ Handle remote api calls
+ ****************************************************************************/
-int api_reply(connection_struct *conn,
- uint16 vuid,
- const char *inbuf,
- char *outbuf,
- char *data,
- char *params,
- int tdscnt,
- int tpscnt,
- int mdrcnt,
- int mprcnt)
+int api_reply(connection_struct *conn,uint16 vuid,char *outbuf,char *data,char *params,
+ int tdscnt,int tpscnt,int mdrcnt,int mprcnt)
{
int api_command;
char *rdata = NULL;
@@ -4466,13 +4460,7 @@ int api_reply(connection_struct *conn,
/* If api_Unsupported returns false we can't return anything. */
if (reply) {
- send_trans_reply(inbuf,
- outbuf,
- rparam,
- rparam_len,
- rdata,
- rdata_len,
- False);
+ send_trans_reply(outbuf, rparam, rparam_len, rdata, rdata_len, False);
}
SAFE_FREE(rdata);
diff --git a/source/smbd/mangle_hash.c b/source/smbd/mangle_hash.c
index 3cc7d1e5c22..320e31ab679 100644
--- a/source/smbd/mangle_hash.c
+++ b/source/smbd/mangle_hash.c
@@ -437,7 +437,8 @@ static void cache_mangled_name( const char mangled_name[13], char *raw_name )
}
/* Allocate a new cache entry. If the allocation fails, just return. */
- data_val = string_term_tdb_data(raw_name);
+ data_val.dptr = raw_name;
+ data_val.dsize = strlen(raw_name)+1;
if (tdb_store_bystring(tdb_mangled_cache, mangled_name_key, data_val, TDB_REPLACE) != 0) {
DEBUG(0,("cache_mangled_name: Error storing entry %s -> %s\n", mangled_name_key, raw_name));
} else {
@@ -502,7 +503,7 @@ static BOOL check_cache( char *s, size_t maxlen, const struct share_params *p )
}
/* If we *did* find it, we need to copy it into the string buffer. */
- (void)safe_strcpy( s, (const char *)data_val.dptr, maxlen );
+ (void)safe_strcpy( s, data_val.dptr, maxlen );
if( saved_ext ) {
/* Replace the saved_ext as it was truncated. */
(void)safe_strcat( s, saved_ext, maxlen );
diff --git a/source/smbd/message.c b/source/smbd/message.c
index f390e539b05..fd53e60c141 100644
--- a/source/smbd/message.c
+++ b/source/smbd/message.c
@@ -131,13 +131,11 @@ int reply_sends(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
return(ERROR_DOS(ERRSRV,ERRmsgoff));
}
- outsize = set_message(inbuf,outbuf,0,0,True);
+ outsize = set_message(outbuf,0,0,True);
p = smb_buf(inbuf)+1;
- p += srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), msgfrom, p,
- sizeof(msgfrom), STR_ASCII|STR_TERMINATE) + 1;
- p += srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), msgto, p,
- sizeof(msgto), STR_ASCII|STR_TERMINATE) + 1;
+ p += srvstr_pull_buf(inbuf, msgfrom, p, sizeof(msgfrom), STR_ASCII|STR_TERMINATE) + 1;
+ p += srvstr_pull_buf(inbuf, msgto, p, sizeof(msgto), STR_ASCII|STR_TERMINATE) + 1;
msg = p;
@@ -172,16 +170,14 @@ int reply_sendstrt(connection_struct *conn, char *inbuf,char *outbuf, int dum_si
return(ERROR_DOS(ERRSRV,ERRmsgoff));
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
memset(msgbuf,'\0',sizeof(msgbuf));
msgpos = 0;
p = smb_buf(inbuf)+1;
- p += srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), msgfrom, p,
- sizeof(msgfrom), STR_ASCII|STR_TERMINATE) + 1;
- p += srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), msgto, p,
- sizeof(msgto), STR_ASCII|STR_TERMINATE) + 1;
+ p += srvstr_pull_buf(inbuf, msgfrom, p, sizeof(msgfrom), STR_ASCII|STR_TERMINATE) + 1;
+ p += srvstr_pull_buf(inbuf, msgto, p, sizeof(msgto), STR_ASCII|STR_TERMINATE) + 1;
DEBUG( 3, ( "SMBsendstrt (from %s to %s)\n", msgfrom, msgto ) );
@@ -206,7 +202,7 @@ int reply_sendtxt(connection_struct *conn, char *inbuf,char *outbuf, int dum_siz
return(ERROR_DOS(ERRSRV,ERRmsgoff));
}
- outsize = set_message(inbuf,outbuf,0,0,True);
+ outsize = set_message(outbuf,0,0,True);
msg = smb_buf(inbuf) + 1;
@@ -237,7 +233,7 @@ int reply_sendend(connection_struct *conn, char *inbuf,char *outbuf, int dum_siz
return(ERROR_DOS(ERRSRV,ERRmsgoff));
}
- outsize = set_message(inbuf,outbuf,0,0,True);
+ outsize = set_message(outbuf,0,0,True);
DEBUG(3,("SMBsendend\n"));
diff --git a/source/smbd/msdfs.c b/source/smbd/msdfs.c
index a3de1991162..74acf3d37e3 100644
--- a/source/smbd/msdfs.c
+++ b/source/smbd/msdfs.c
@@ -144,16 +144,14 @@ static NTSTATUS parse_dfs_path(const char *pathname,
*ppath_contains_wcard = False;
- pstrcpy(pdp->reqpath, p);
-
/* Rest is reqpath. */
if (pdp->posix_path) {
- status = check_path_syntax_posix(pdp->reqpath);
+ status = check_path_syntax_posix(pdp->reqpath, p);
} else {
if (allow_wcards) {
- status = check_path_syntax_wcard(pdp->reqpath, ppath_contains_wcard);
+ status = check_path_syntax_wcard(pdp->reqpath, p, ppath_contains_wcard);
} else {
- status = check_path_syntax(pdp->reqpath);
+ status = check_path_syntax(pdp->reqpath, p);
}
}
@@ -390,7 +388,8 @@ static NTSTATUS dfs_path_lookup(connection_struct *conn,
pstrcpy(localpath, pdp->reqpath);
status = unix_convert(conn, localpath, search_flag, NULL, &sbuf);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status,
+ NT_STATUS_OBJECT_PATH_NOT_FOUND)) {
return status;
}
@@ -422,6 +421,14 @@ static NTSTATUS dfs_path_lookup(connection_struct *conn,
}
/*
+ * localpath comes out of unix_convert, so it has
+ * no trailing backslash. Make sure that canon_dfspath hasn't either.
+ * Fix for bug #4860 from Jan Martin <Jan.Martin@rwedea.com>.
+ */
+
+ trim_char(canon_dfspath,0,'/');
+
+ /*
* Redirect if any component in the path is a link.
* We do this by walking backwards through the
* local path, chopping off the last component
@@ -722,7 +729,7 @@ static int setup_ver2_dfs_referral(const char *pathname,
STR_TERMINATE);
if (DEBUGLVL(10)) {
- dump_data(0, uni_requestedpath,requestedpathlen);
+ dump_data(0, (const char *) uni_requestedpath,requestedpathlen);
}
DEBUG(10,("ref count = %u\n",junction->referral_count));
@@ -822,7 +829,7 @@ static int setup_ver3_dfs_referral(const char *pathname,
reqpathlen = rpcstr_push(uni_reqpath, pathname, sizeof(pstring), STR_TERMINATE);
if (DEBUGLVL(10)) {
- dump_data(0, uni_reqpath,reqpathlen);
+ dump_data(0, (char *) uni_reqpath,reqpathlen);
}
uni_reqpathoffset1 = REFERRAL_HEADER_SIZE + VERSION3_REFERRAL_SIZE * junction->referral_count;
@@ -979,7 +986,7 @@ int setup_dfs_referral(connection_struct *orig_conn,
if (DEBUGLVL(10)) {
DEBUGADD(0,("DFS Referral pdata:\n"));
- dump_data(0,(uint8 *)*ppdata,reply_size);
+ dump_data(0,*ppdata,reply_size);
}
talloc_destroy(ctx);
@@ -1247,7 +1254,6 @@ int enum_msdfs_links(TALLOC_CTX *ctx, struct junction_map *jucn, int jn_max)
/* Ensure all the usershares are loaded. */
become_root();
- load_registry_shares();
sharecount = load_usershare_shares();
unbecome_root();
diff --git a/source/smbd/negprot.c b/source/smbd/negprot.c
index 3fdae1e06b8..bc7c75aab4c 100644
--- a/source/smbd/negprot.c
+++ b/source/smbd/negprot.c
@@ -43,7 +43,7 @@ static void get_challenge(char buff[8])
DEBUG(10, ("get challenge: creating negprot_global_auth_context\n"));
if (!NT_STATUS_IS_OK(nt_status = make_auth_context_subsystem(&negprot_global_auth_context))) {
DEBUG(0, ("make_auth_context_subsystem returned %s", nt_errstr(nt_status)));
- smb_panic("cannot make_negprot_global_auth_context!");
+ smb_panic("cannot make_negprot_global_auth_context!\n");
}
DEBUG(10, ("get challenge: getting challenge\n"));
cryptkey = negprot_global_auth_context->get_ntlm_challenge(negprot_global_auth_context);
@@ -56,7 +56,7 @@ static void get_challenge(char buff[8])
static int reply_corep(char *inbuf, char *outbuf)
{
- int outsize = set_message(inbuf,outbuf,1,0,True);
+ int outsize = set_message(outbuf,1,0,True);
Protocol = PROTOCOL_CORE;
@@ -70,7 +70,7 @@ static int reply_corep(char *inbuf, char *outbuf)
static int reply_coreplus(char *inbuf, char *outbuf)
{
int raw = (lp_readraw()?1:0) | (lp_writeraw()?2:0);
- int outsize = set_message(inbuf,outbuf,13,0,True);
+ int outsize = set_message(outbuf,13,0,True);
SSVAL(outbuf,smb_vwv5,raw); /* tell redirector we support
readbraw and writebraw (possibly) */
/* Reply, SMBlockread, SMBwritelock supported. */
@@ -99,7 +99,7 @@ static int reply_lanman1(char *inbuf, char *outbuf)
if (global_encrypted_passwords_negotiated)
secword |= NEGOTIATE_SECURITY_CHALLENGE_RESPONSE;
- set_message(inbuf,outbuf,13,global_encrypted_passwords_negotiated?8:0,True);
+ set_message(outbuf,13,global_encrypted_passwords_negotiated?8:0,True);
SSVAL(outbuf,smb_vwv1,secword);
/* Create a token value and add it to the outgoing packet. */
if (global_encrypted_passwords_negotiated) {
@@ -141,7 +141,7 @@ static int reply_lanman2(char *inbuf, char *outbuf)
if (global_encrypted_passwords_negotiated)
secword |= NEGOTIATE_SECURITY_CHALLENGE_RESPONSE;
- set_message(inbuf,outbuf,13,global_encrypted_passwords_negotiated?8:0,True);
+ set_message(outbuf,13,global_encrypted_passwords_negotiated?8:0,True);
SSVAL(outbuf,smb_vwv1,secword);
SIVAL(outbuf,smb_vwv6,sys_getpid());
@@ -228,10 +228,6 @@ static DATA_BLOB negprot_spnego(void)
name_to_fqdn(myname, global_myname());
strlower_m(myname);
asprintf(&host_princ_s, "cifs/%s@%s", myname, lp_realm());
- if (host_princ_s == NULL) {
- blob = data_blob_null;
- return blob;
- }
blob = spnego_gen_negTokenInit(guid, OIDs_krb5, host_princ_s);
SAFE_FREE(host_princ_s);
}
@@ -325,7 +321,7 @@ static int reply_nt1(char *inbuf, char *outbuf)
}
}
- set_message(inbuf,outbuf,17,0,True);
+ set_message(outbuf,17,0,True);
SCVAL(outbuf,smb_vwv1,secword);
@@ -369,7 +365,7 @@ static int reply_nt1(char *inbuf, char *outbuf)
}
SSVAL(outbuf,smb_vwv17, p - q); /* length of challenge+domain strings */
- set_message_end(inbuf,outbuf, p);
+ set_message_end(outbuf, p);
return (smb_len(outbuf)+4);
}
@@ -485,7 +481,7 @@ int reply_negprot(connection_struct *conn,
char *inbuf,char *outbuf, int dum_size,
int dum_buffsize)
{
- int outsize = set_message(inbuf,outbuf,1,0,True);
+ int outsize = set_message(outbuf,1,0,True);
int Index=0;
int choice= -1;
int protocol;
@@ -584,8 +580,7 @@ int reply_negprot(connection_struct *conn,
when the client connects to port 445. Of course there is a small
window where we are listening to messages -- jerry */
- claim_connection(
- NULL,"",FLAG_MSG_GENERAL|FLAG_MSG_SMBD|FLAG_MSG_PRINT_GENERAL);
+ claim_connection(NULL,"",0,True,FLAG_MSG_GENERAL|FLAG_MSG_SMBD|FLAG_MSG_PRINT_GENERAL);
/* Check for protocols, most desirable first */
for (protocol = 0; supported_protocols[protocol].proto_name; protocol++) {
diff --git a/source/smbd/notify.c b/source/smbd/notify.c
index cbafeccd943..df9d8ad1378 100644
--- a/source/smbd/notify.c
+++ b/source/smbd/notify.c
@@ -22,15 +22,12 @@
#include "includes.h"
-/* Max size we can send to client in a notify response. */
-extern int max_send;
-
struct notify_change_request {
struct notify_change_request *prev, *next;
struct files_struct *fsp; /* backpointer for cancel by mid */
char request_buf[smb_size];
uint32 filter;
- uint32 current_bufsize;
+ uint32 max_param;
struct notify_mid_map *mid_map;
void *backend_data;
};
@@ -62,8 +59,9 @@ static BOOL notify_change_record_identical(struct notify_change *c1,
}
static BOOL notify_marshall_changes(int num_changes,
- struct notify_change *changes,
- prs_struct *ps)
+ uint32 max_offset,
+ struct notify_change *changes,
+ prs_struct *ps)
{
int i;
UNISTR uni_name;
@@ -113,6 +111,11 @@ static BOOL notify_marshall_changes(int num_changes,
prs_set_offset(ps, prs_offset(ps)-2);
SAFE_FREE(uni_name.buffer);
+
+ if (prs_offset(ps) > max_offset) {
+ /* Too much data for client. */
+ return False;
+ }
}
return True;
@@ -129,7 +132,6 @@ static BOOL notify_marshall_changes(int num_changes,
static void change_notify_reply_packet(const char *request_buf,
NTSTATUS error_code)
{
- const char *inbuf = request_buf;
char outbuf[smb_size+38];
memset(outbuf, '\0', sizeof(outbuf));
@@ -141,7 +143,7 @@ static void change_notify_reply_packet(const char *request_buf,
* Seems NT needs a transact command with an error code
* in it. This is a longer packet than a simple error.
*/
- set_message(inbuf,outbuf,18,0,False);
+ set_message(outbuf,18,0,False);
show_msg(outbuf);
if (!send_smb(smbd_server_fd(),outbuf))
@@ -149,7 +151,7 @@ static void change_notify_reply_packet(const char *request_buf,
"failed.");
}
-void change_notify_reply(const char *request_buf,
+void change_notify_reply(const char *request_buf, uint32 max_param,
struct notify_change_buf *notify_buf)
{
char *outbuf = NULL;
@@ -158,19 +160,14 @@ void change_notify_reply(const char *request_buf,
if (notify_buf->num_changes == -1) {
change_notify_reply_packet(request_buf, NT_STATUS_OK);
+ notify_buf->num_changes = 0;
return;
}
- if (!prs_init(&ps, 0, NULL, False)
- || !notify_marshall_changes(notify_buf->num_changes,
- notify_buf->changes, &ps)) {
- change_notify_reply_packet(request_buf, NT_STATUS_NO_MEMORY);
- goto done;
- }
+ prs_init(&ps, 0, NULL, MARSHALL);
- buflen = smb_size+38+prs_offset(&ps) + 4 /* padding */;
-
- if (buflen > max_send) {
+ if (!notify_marshall_changes(notify_buf->num_changes, max_param,
+ notify_buf->changes, &ps)) {
/*
* We exceed what the client is willing to accept. Send
* nothing.
@@ -179,6 +176,8 @@ void change_notify_reply(const char *request_buf,
goto done;
}
+ buflen = smb_size+38+prs_offset(&ps) + 4 /* padding */;
+
if (!(outbuf = SMB_MALLOC_ARRAY(char, buflen))) {
change_notify_reply_packet(request_buf, NT_STATUS_NO_MEMORY);
goto done;
@@ -186,7 +185,7 @@ void change_notify_reply(const char *request_buf,
construct_reply_common(request_buf, outbuf);
- if (send_nt_replies(request_buf, outbuf, buflen, NT_STATUS_OK, prs_data_p(&ps),
+ if (send_nt_replies(outbuf, buflen, NT_STATUS_OK, prs_data_p(&ps),
prs_offset(&ps), NULL, 0) == -1) {
exit_server("change_notify_reply_packet: send_smb failed.");
}
@@ -239,7 +238,7 @@ NTSTATUS change_notify_create(struct files_struct *fsp, uint32 filter,
return status;
}
-NTSTATUS change_notify_add_request(const char *inbuf,
+NTSTATUS change_notify_add_request(const char *inbuf, uint32 max_param,
uint32 filter, BOOL recursive,
struct files_struct *fsp)
{
@@ -256,11 +255,11 @@ NTSTATUS change_notify_add_request(const char *inbuf,
map->req = request;
memcpy(request->request_buf, inbuf, sizeof(request->request_buf));
- request->current_bufsize = 0;
+ request->max_param = max_param;
request->filter = filter;
request->fsp = fsp;
request->backend_data = NULL;
-
+
DLIST_ADD_END(fsp->notify->requests, request,
struct notify_change_request *);
@@ -293,7 +292,7 @@ static void change_notify_remove_request(struct notify_change_request *remove_re
}
if (req == NULL) {
- smb_panic("notify_req not found in fsp's requests");
+ smb_panic("notify_req not found in fsp's requests\n");
}
DLIST_REMOVE(fsp->notify->requests, req);
@@ -360,7 +359,7 @@ void notify_fname(connection_struct *conn, uint32 action, uint32 filter,
static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
{
struct notify_change *change, *changes;
- char *tmp;
+ pstring name2;
if (fsp->notify == NULL) {
/*
@@ -369,6 +368,9 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
return;
}
+ pstrcpy(name2, name);
+ string_replace(name2, '/', '\\');
+
/*
* Someone has triggered a notify previously, queue the change for
* later.
@@ -399,14 +401,11 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
change = &(fsp->notify->changes[fsp->notify->num_changes]);
- if (!(tmp = talloc_strdup(changes, name))) {
+ if (!(change->name = talloc_strdup(changes, name2))) {
DEBUG(0, ("talloc_strdup failed\n"));
return;
}
- string_replace(tmp, '/', '\\');
- change->name = tmp;
-
change->action = action;
fsp->notify->num_changes += 1;
@@ -432,6 +431,7 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
*/
change_notify_reply(fsp->notify->requests->request_buf,
+ fsp->notify->requests->max_param,
fsp->notify);
change_notify_remove_request(fsp->notify->requests);
diff --git a/source/smbd/notify_internal.c b/source/smbd/notify_internal.c
index 20bfb74a291..d2b69c9d9e6 100644
--- a/source/smbd/notify_internal.c
+++ b/source/smbd/notify_internal.c
@@ -28,14 +28,13 @@
#include "librpc/gen_ndr/ndr_notify.h"
struct notify_context {
- struct db_context *db;
+ struct tdb_wrap *w;
struct server_id server;
struct messaging_context *messaging_ctx;
struct notify_list *list;
struct notify_array *array;
int seqnum;
struct sys_notify_context *sys_notify_ctx;
- TDB_DATA key;
};
@@ -92,10 +91,10 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server,
return NULL;
}
- notify->db = db_open(notify, lock_path("notify.tdb"),
+ notify->w = tdb_wrap_open(notify, lock_path("notify.tdb"),
0, TDB_SEQNUM|TDB_CLEAR_IF_FIRST,
O_RDWR|O_CREAT, 0644);
- if (notify->db == NULL) {
+ if (notify->w == NULL) {
talloc_free(notify);
return NULL;
}
@@ -104,8 +103,7 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server,
notify->messaging_ctx = messaging_ctx;
notify->list = NULL;
notify->array = NULL;
- notify->seqnum = notify->db->get_seqnum(notify->db);
- notify->key = string_term_tdb_data(NOTIFY_KEY);
+ notify->seqnum = tdb_get_seqnum(notify->w->tdb);
talloc_set_destructor(notify, notify_destructor);
@@ -119,29 +117,37 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server,
return notify;
}
+
/*
- lock and fetch the record
+ lock the notify db
*/
-static NTSTATUS notify_fetch_locked(struct notify_context *notify, struct db_record **rec)
+static NTSTATUS notify_lock(struct notify_context *notify)
{
- *rec = notify->db->fetch_locked(notify->db, notify, notify->key);
- if (*rec == NULL) {
+ if (tdb_lock_bystring(notify->w->tdb, NOTIFY_KEY) != 0) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
return NT_STATUS_OK;
}
/*
+ unlock the notify db
+*/
+static void notify_unlock(struct notify_context *notify)
+{
+ tdb_unlock_bystring(notify->w->tdb, NOTIFY_KEY);
+}
+
+/*
load the notify array
*/
-static NTSTATUS notify_load(struct notify_context *notify, struct db_record *rec)
+static NTSTATUS notify_load(struct notify_context *notify)
{
TDB_DATA dbuf;
DATA_BLOB blob;
NTSTATUS status;
int seqnum;
- seqnum = notify->db->get_seqnum(notify->db);
+ seqnum = tdb_get_seqnum(notify->w->tdb);
if (seqnum == notify->seqnum && notify->array != NULL) {
return NT_STATUS_OK;
@@ -153,32 +159,23 @@ static NTSTATUS notify_load(struct notify_context *notify, struct db_record *rec
notify->array = TALLOC_ZERO_P(notify, struct notify_array);
NT_STATUS_HAVE_NO_MEMORY(notify->array);
- if (!rec) {
- if (notify->db->fetch(notify->db, notify, notify->key, &dbuf) != 0) {
- return NT_STATUS_INTERNAL_DB_CORRUPTION;
- }
- } else {
- dbuf = rec->value;
+ dbuf = tdb_fetch_bystring(notify->w->tdb, NOTIFY_KEY);
+ if (dbuf.dptr == NULL) {
+ return NT_STATUS_OK;
}
blob.data = (uint8 *)dbuf.dptr;
blob.length = dbuf.dsize;
- if (blob.length == 0) {
- status = NT_STATUS_OK;
- } else {
- status = ndr_pull_struct_blob(&blob, notify->array, notify->array,
- (ndr_pull_flags_fn_t)ndr_pull_notify_array);
- }
+ status = ndr_pull_struct_blob(&blob, notify->array, notify->array,
+ (ndr_pull_flags_fn_t)ndr_pull_notify_array);
if (DEBUGLEVEL >= 10) {
DEBUG(10, ("notify_load:\n"));
NDR_PRINT_DEBUG(notify_array, notify->array);
}
- if (!rec) {
- talloc_free(dbuf.dptr);
- }
+ free(dbuf.dptr);
return status;
}
@@ -196,11 +193,12 @@ static int notify_compare(const void *p1, const void *p2)
/*
save the notify array
*/
-static NTSTATUS notify_save(struct notify_context *notify, struct db_record *rec)
+static NTSTATUS notify_save(struct notify_context *notify)
{
TDB_DATA dbuf;
DATA_BLOB blob;
NTSTATUS status;
+ int ret;
TALLOC_CTX *tmp_ctx;
/* if possible, remove some depth arrays */
@@ -211,7 +209,11 @@ static NTSTATUS notify_save(struct notify_context *notify, struct db_record *rec
/* we might just be able to delete the record */
if (notify->array->num_depths == 0) {
- return rec->delete_rec(rec);
+ ret = tdb_delete_bystring(notify->w->tdb, NOTIFY_KEY);
+ if (ret != 0) {
+ return NT_STATUS_INTERNAL_DB_CORRUPTION;
+ }
+ return NT_STATUS_OK;
}
tmp_ctx = talloc_new(notify);
@@ -229,13 +231,16 @@ static NTSTATUS notify_save(struct notify_context *notify, struct db_record *rec
NDR_PRINT_DEBUG(notify_array, notify->array);
}
- dbuf.dptr = blob.data;
+ dbuf.dptr = (char *)blob.data;
dbuf.dsize = blob.length;
-
- status = rec->store(rec, dbuf, TDB_REPLACE);
+
+ ret = tdb_store_bystring(notify->w->tdb, NOTIFY_KEY, dbuf, TDB_REPLACE);
talloc_free(tmp_ctx);
+ if (ret != 0) {
+ return NT_STATUS_INTERNAL_DB_CORRUPTION;
+ }
- return status;
+ return NT_STATUS_OK;
}
@@ -288,8 +293,7 @@ static void sys_notify_callback(struct sys_notify_context *ctx,
/*
add an entry to the notify array
*/
-static NTSTATUS notify_add_array(struct notify_context *notify, struct db_record *rec,
- struct notify_entry *e,
+static NTSTATUS notify_add_array(struct notify_context *notify, struct notify_entry *e,
void *private_data, int depth)
{
int i;
@@ -337,7 +341,7 @@ static NTSTATUS notify_add_array(struct notify_context *notify, struct db_record
d->max_mask_subdir |= d->entries[i].subdir_filter;
}
- return notify_save(notify, rec);
+ return notify_save(notify);
}
/*
@@ -354,20 +358,18 @@ NTSTATUS notify_add(struct notify_context *notify, struct notify_entry *e0,
struct notify_list *listel;
size_t len;
int depth;
- struct db_record *rec;
/* see if change notify is enabled at all */
if (notify == NULL) {
return NT_STATUS_NOT_IMPLEMENTED;
}
- status = notify_fetch_locked(notify, &rec);
+ status = notify_lock(notify);
NT_STATUS_NOT_OK_RETURN(status);
- status = notify_load(notify, rec);
+ status = notify_load(notify);
if (!NT_STATUS_IS_OK(status)) {
- talloc_free(rec);
- return status;
+ goto done;
}
/* cope with /. on the end of the path */
@@ -413,11 +415,11 @@ NTSTATUS notify_add(struct notify_context *notify, struct notify_entry *e0,
then we need to install it in the array used for the
intra-samba notify handling */
if (e.filter != 0 || e.subdir_filter != 0) {
- status = notify_add_array(notify, rec, &e, private_data, depth);
+ status = notify_add_array(notify, &e, private_data, depth);
}
done:
- talloc_free(rec);
+ notify_unlock(notify);
talloc_free(tmp_path);
return status;
@@ -432,7 +434,6 @@ NTSTATUS notify_remove(struct notify_context *notify, void *private_data)
struct notify_list *listel;
int i, depth;
struct notify_depth *d;
- struct db_record *rec;
/* see if change notify is enabled at all */
if (notify == NULL) {
@@ -453,17 +454,17 @@ NTSTATUS notify_remove(struct notify_context *notify, void *private_data)
talloc_free(listel);
- status = notify_fetch_locked(notify, &rec);
+ status = notify_lock(notify);
NT_STATUS_NOT_OK_RETURN(status);
- status = notify_load(notify, rec);
+ status = notify_load(notify);
if (!NT_STATUS_IS_OK(status)) {
- talloc_free(rec);
+ notify_unlock(notify);
return status;
}
if (depth >= notify->array->num_depths) {
- talloc_free(rec);
+ notify_unlock(notify);
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
@@ -477,7 +478,7 @@ NTSTATUS notify_remove(struct notify_context *notify, void *private_data)
}
}
if (i == d->num_entries) {
- talloc_free(rec);
+ notify_unlock(notify);
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
@@ -487,9 +488,9 @@ NTSTATUS notify_remove(struct notify_context *notify, void *private_data)
}
d->num_entries--;
- status = notify_save(notify, rec);
+ status = notify_save(notify);
- talloc_free(rec);
+ notify_unlock(notify);
return status;
}
@@ -502,14 +503,13 @@ static NTSTATUS notify_remove_all(struct notify_context *notify,
{
NTSTATUS status;
int i, depth, del_count=0;
- struct db_record *rec;
- status = notify_fetch_locked(notify, &rec);
+ status = notify_lock(notify);
NT_STATUS_NOT_OK_RETURN(status);
- status = notify_load(notify, rec);
+ status = notify_load(notify);
if (!NT_STATUS_IS_OK(status)) {
- talloc_free(rec);
+ notify_unlock(notify);
return status;
}
@@ -531,10 +531,10 @@ static NTSTATUS notify_remove_all(struct notify_context *notify,
}
if (del_count > 0) {
- status = notify_save(notify, rec);
+ status = notify_save(notify);
}
- talloc_free(rec);
+ notify_unlock(notify);
return status;
}
@@ -594,7 +594,7 @@ void notify_trigger(struct notify_context *notify,
}
again:
- status = notify_load(notify, NULL);
+ status = notify_load(notify);
if (!NT_STATUS_IS_OK(status)) {
return;
}
@@ -677,7 +677,7 @@ void notify_trigger(struct notify_context *notify,
DEBUG(10, ("Deleting notify entries for "
"process %s because it's gone\n",
- procid_str_static(&e->server)));
+ procid_str_static(&e->server.id)));
notify_remove_all(notify, &server);
goto again;
}
diff --git a/source/smbd/nttrans.c b/source/smbd/nttrans.c
index ef5f299c43f..45563b4a4f6 100644
--- a/source/smbd/nttrans.c
+++ b/source/smbd/nttrans.c
@@ -50,7 +50,7 @@ static const char *known_nt_pipes[] = {
static char *nttrans_realloc(char **ptr, size_t size)
{
if (ptr==NULL) {
- smb_panic("nttrans_realloc() called with NULL ptr");
+ smb_panic("nttrans_realloc() called with NULL ptr\n");
}
*ptr = (char *)SMB_REALLOC(*ptr, size);
@@ -68,14 +68,8 @@ static char *nttrans_realloc(char **ptr, size_t size)
HACK ! Always assumes smb_setup field is zero.
****************************************************************************/
-int send_nt_replies(const char *inbuf,
- char *outbuf,
- int bufsize,
- NTSTATUS nt_error,
- char *params,
- int paramsize,
- char *pdata,
- int datasize)
+int send_nt_replies(char *outbuf, int bufsize, NTSTATUS nt_error,
+ char *params, int paramsize, char *pdata, int datasize)
{
int data_to_send = datasize;
int params_to_send = paramsize;
@@ -91,7 +85,7 @@ int send_nt_replies(const char *inbuf,
* transNT replies.
*/
- set_message(inbuf,outbuf,18,0,True);
+ set_message(outbuf,18,0,True);
if (NT_STATUS_V(nt_error)) {
ERROR_NT(nt_error);
@@ -155,7 +149,7 @@ int send_nt_replies(const char *inbuf,
total_sent_thistime = MIN(total_sent_thistime, useable_space);
- set_message(inbuf,outbuf, 18, total_sent_thistime, True);
+ set_message(outbuf, 18, total_sent_thistime, True);
/*
* Set total params and data to be sent.
@@ -275,49 +269,49 @@ BOOL is_ntfs_stream_name(const char *fname)
return (strchr_m(fname, ':') != NULL) ? True : False;
}
-struct case_semantics_state {
- connection_struct *conn;
- BOOL case_sensitive;
- BOOL case_preserve;
- BOOL short_case_preserve;
-};
-
/****************************************************************************
- Restore case semantics.
+ Save case statics.
****************************************************************************/
-static int restore_case_semantics(struct case_semantics_state *state)
-{
- state->conn->case_sensitive = state->case_sensitive;
- state->conn->case_preserve = state->case_preserve;
- state->conn->short_case_preserve = state->short_case_preserve;
- return 0;
-}
+
+static BOOL saved_case_sensitive;
+static BOOL saved_case_preserve;
+static BOOL saved_short_case_preserve;
/****************************************************************************
Save case semantics.
****************************************************************************/
-static struct case_semantics_state *set_posix_case_semantics(TALLOC_CTX *mem_ctx,
- connection_struct *conn)
-{
- struct case_semantics_state *result;
- if (!(result = talloc(mem_ctx, struct case_semantics_state))) {
- DEBUG(0, ("talloc failed\n"));
- return NULL;
+static uint32 set_posix_case_semantics(connection_struct *conn, uint32 file_attributes)
+{
+ if(!(file_attributes & FILE_FLAG_POSIX_SEMANTICS)) {
+ return file_attributes;
}
- result->case_sensitive = conn->case_sensitive;
- result->case_preserve = conn->case_preserve;
- result->short_case_preserve = conn->short_case_preserve;
+ saved_case_sensitive = conn->case_sensitive;
+ saved_case_preserve = conn->case_preserve;
+ saved_short_case_preserve = conn->short_case_preserve;
/* Set to POSIX. */
conn->case_sensitive = True;
conn->case_preserve = True;
conn->short_case_preserve = True;
- talloc_set_destructor(result, restore_case_semantics);
+ return (file_attributes & ~FILE_FLAG_POSIX_SEMANTICS);
+}
- return result;
+/****************************************************************************
+ Restore case semantics.
+****************************************************************************/
+
+static void restore_case_semantics(connection_struct *conn, uint32 file_attributes)
+{
+ if(!(file_attributes & FILE_FLAG_POSIX_SEMANTICS)) {
+ return;
+ }
+
+ conn->case_sensitive = saved_case_sensitive;
+ conn->case_preserve = saved_case_preserve;
+ conn->short_case_preserve = saved_short_case_preserve;
}
/****************************************************************************
@@ -359,7 +353,7 @@ static int nt_open_pipe(char *fname, connection_struct *conn,
return(ERROR_DOS(ERRSRV,ERRnofids));
}
- /* TODO: Add pipe to db */
+ /* Add pipe to db */
if ( !store_pipe_opendb( p ) ) {
DEBUG(3,("nt_open_pipe: failed to store %s pipe open.\n", fname));
@@ -382,8 +376,7 @@ static int do_ntcreate_pipe_open(connection_struct *conn,
char *p = NULL;
uint32 flags = IVAL(inbuf,smb_ntcreate_Flags);
- srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), fname, smb_buf(inbuf),
- sizeof(fname), STR_TERMINATE);
+ srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE);
if ((ret = nt_open_pipe(fname, conn, inbuf, outbuf, &pnum)) != 0) {
return ret;
@@ -399,10 +392,10 @@ static int do_ntcreate_pipe_open(connection_struct *conn,
* the wcnt to 42 ? It's definately
* what happens on the wire....
*/
- set_message(inbuf,outbuf,50,0,True);
+ set_message(outbuf,50,0,True);
SCVAL(outbuf,smb_wct,42);
} else {
- set_message(inbuf,outbuf,34,0,True);
+ set_message(outbuf,34,0,True);
}
p = outbuf + smb_vwv2;
@@ -461,7 +454,7 @@ int reply_ntcreate_and_X_quota(connection_struct *conn,
return ERROR_NT(status);
}
- set_message(inbuf,outbuf,34,0,True);
+ set_message(outbuf,34,0,True);
p = outbuf + smb_vwv2;
@@ -487,6 +480,7 @@ int reply_ntcreate_and_X(connection_struct *conn,
uint32 flags = IVAL(inbuf,smb_ntcreate_Flags);
uint32 access_mask = IVAL(inbuf,smb_ntcreate_DesiredAccess);
uint32 file_attributes = IVAL(inbuf,smb_ntcreate_FileAttributes);
+ uint32 new_file_attributes;
uint32 share_access = IVAL(inbuf,smb_ntcreate_ShareAccess);
uint32 create_disposition = IVAL(inbuf,smb_ntcreate_CreateDisposition);
uint32 create_options = IVAL(inbuf,smb_ntcreate_CreateOptions);
@@ -505,8 +499,6 @@ int reply_ntcreate_and_X(connection_struct *conn,
struct timespec m_timespec;
BOOL extended_oplock_granted = False;
NTSTATUS status;
- struct smb_request req;
- struct case_semantics_state *case_state = NULL;
START_PROFILE(SMBntcreateX);
@@ -522,8 +514,6 @@ int reply_ntcreate_and_X(connection_struct *conn,
(unsigned int)create_options,
(unsigned int)root_dir_fid ));
- init_smb_request(&req, (uint8 *)inbuf);
-
/*
* If it's an IPC, use the pipe handler.
*/
@@ -553,7 +543,6 @@ int reply_ntcreate_and_X(connection_struct *conn,
*/
pstring rel_fname;
files_struct *dir_fsp = file_fsp(inbuf,smb_ntcreate_RootDirectoryFid);
- size_t dir_name_len;
if(!dir_fsp) {
END_PROFILE(SMBntcreateX);
@@ -562,9 +551,7 @@ int reply_ntcreate_and_X(connection_struct *conn,
if(!dir_fsp->is_directory) {
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname,
- smb_buf(inbuf), sizeof(fname), 0,
- STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBntcreateX);
return ERROR_NT(status);
@@ -595,29 +582,28 @@ int reply_ntcreate_and_X(connection_struct *conn,
*/
pstrcpy( fname, dir_fsp->fsp_name );
- dir_name_len = strlen(fname);
- /*
- * Ensure it ends in a '\'.
- */
+ if (ISDOT(fname)) {
+ fname[0] = '\0';
+ } else {
+ size_t dir_name_len = strlen(fname);
+ /*
+ * Ensure it ends in a '\'.
+ */
- if((fname[dir_name_len-1] != '\\') && (fname[dir_name_len-1] != '/')) {
- pstrcat(fname, "/");
- dir_name_len++;
+ if((fname[dir_name_len-1] != '\\') && (fname[dir_name_len-1] != '/')) {
+ pstrcat(fname, "/");
+ }
}
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), rel_fname,
- smb_buf(inbuf), sizeof(rel_fname), 0,
- STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, rel_fname, smb_buf(inbuf), sizeof(rel_fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBntcreateX);
return ERROR_NT(status);
}
pstrcat(fname, rel_fname);
} else {
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname,
- smb_buf(inbuf), sizeof(fname), 0,
- STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBntcreateX);
return ERROR_NT(status);
@@ -676,21 +662,18 @@ int reply_ntcreate_and_X(connection_struct *conn,
* Check if POSIX semantics are wanted.
*/
- if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
- case_state = set_posix_case_semantics(NULL, conn);
- file_attributes &= ~FILE_FLAG_POSIX_SEMANTICS;
- }
+ new_file_attributes = set_posix_case_semantics(conn, file_attributes);
status = unix_convert(conn, fname, False, NULL, &sbuf);
if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
END_PROFILE(SMBntcreateX);
return ERROR_NT(status);
}
/* All file access must go through check_name() */
status = check_name(conn, fname);
if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
END_PROFILE(SMBntcreateX);
return ERROR_NT(status);
}
@@ -709,23 +692,12 @@ int reply_ntcreate_and_X(connection_struct *conn,
&& (access_mask & DELETE_ACCESS)) {
if ((dos_mode(conn, fname, &sbuf) & FILE_ATTRIBUTE_READONLY) ||
!can_delete_file_in_directory(conn, fname)) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
END_PROFILE(SMBntcreateX);
return ERROR_NT(NT_STATUS_ACCESS_DENIED);
}
}
-#if 0
- /* We need to support SeSecurityPrivilege for this. */
- if ((access_mask & SEC_RIGHT_SYSTEM_SECURITY) &&
- !user_has_privileges(current_user.nt_user_token,
- &se_security)) {
- TALLOC_FREE(case_state);
- END_PROFILE(SMBntcreateX);
- return ERROR_NT(NT_STATUS_PRIVILEGE_NOT_HELD);
- }
-#endif
-
/*
* If it's a request for a directory open, deal with it separately.
*/
@@ -734,31 +706,18 @@ int reply_ntcreate_and_X(connection_struct *conn,
/* Can't open a temp directory. IFS kit test. */
if (file_attributes & FILE_ATTRIBUTE_TEMPORARY) {
- TALLOC_FREE(case_state);
END_PROFILE(SMBntcreateX);
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
oplock_request = 0;
- status = open_directory(conn, &req, fname, &sbuf,
+ status = open_directory(conn, fname, &sbuf,
access_mask,
share_access,
create_disposition,
create_options,
- file_attributes,
+ new_file_attributes,
&info, &fsp);
-
- TALLOC_FREE(case_state);
-
- if(!NT_STATUS_IS_OK(status)) {
- if (!use_nt_status() && NT_STATUS_EQUAL(
- status, NT_STATUS_OBJECT_NAME_COLLISION)) {
- status = NT_STATUS_DOS(ERRDOS, ERRfilexists);
- }
- END_PROFILE(SMBntcreateX);
- return ERROR_NT(status);
- }
-
} else {
/*
@@ -778,16 +737,16 @@ int reply_ntcreate_and_X(connection_struct *conn,
* before issuing an oplock break request to
* our client. JRA. */
- status = open_file_ntcreate(conn, &req, fname, &sbuf,
+ status = open_file_ntcreate(conn,fname,&sbuf,
access_mask,
share_access,
create_disposition,
create_options,
- file_attributes,
+ new_file_attributes,
oplock_request,
&info, &fsp);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!NT_STATUS_IS_OK(status)) {
/* We cheat here. There are two cases we
* care about. One is a directory rename,
* where the NT client will attempt to
@@ -815,43 +774,36 @@ int reply_ntcreate_and_X(connection_struct *conn,
*/
if (create_options & FILE_NON_DIRECTORY_FILE) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
END_PROFILE(SMBntcreateX);
return ERROR_FORCE_NT(NT_STATUS_FILE_IS_A_DIRECTORY);
}
-
+
oplock_request = 0;
- status = open_directory(conn, &req, fname,
- &sbuf,
+ status = open_directory(conn, fname, &sbuf,
access_mask,
share_access,
create_disposition,
create_options,
- file_attributes,
+ new_file_attributes,
&info, &fsp);
- if(!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
- if (!use_nt_status() && NT_STATUS_EQUAL(
- status, NT_STATUS_OBJECT_NAME_COLLISION)) {
- status = NT_STATUS_DOS(ERRDOS, ERRfilexists);
- }
- END_PROFILE(SMBntcreateX);
- return ERROR_NT(status);
- }
- } else {
- TALLOC_FREE(case_state);
- END_PROFILE(SMBntcreateX);
- if (open_was_deferred(SVAL(inbuf,smb_mid))) {
- /* We have re-scheduled this call. */
- return -1;
- }
- return ERROR_NT(status);
}
- }
+ }
+ }
+
+ restore_case_semantics(conn, file_attributes);
+
+ if(!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBntcreateX);
+
+ if (open_was_deferred(SVAL(inbuf,smb_mid))) {
+ /* We have re-scheduled this call. */
+ return -1;
+ }
+
+ return ERROR_OPEN(status);
}
-
- TALLOC_FREE(case_state);
file_len = sbuf.st_size;
fattr = dos_mode(conn,fname,&sbuf);
@@ -908,10 +860,10 @@ int reply_ntcreate_and_X(connection_struct *conn,
* the wcnt to 42 ? It's definately
* what happens on the wire....
*/
- set_message(inbuf,outbuf,50,0,True);
+ set_message(outbuf,50,0,True);
SCVAL(outbuf,smb_wct,42);
} else {
- set_message(inbuf,outbuf,34,0,True);
+ set_message(outbuf,34,0,True);
}
p = outbuf + smb_vwv2;
@@ -1021,9 +973,7 @@ static int do_nt_transact_create_pipe( connection_struct *conn, char *inbuf, cha
flags = IVAL(params,0);
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, params+53,
- sizeof(fname), parameter_count-53, STR_TERMINATE,
- &status);
+ srvstr_get_path(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -1076,7 +1026,7 @@ static int do_nt_transact_create_pipe( connection_struct *conn, char *inbuf, cha
DEBUG(5,("do_nt_transact_create_pipe: open name = %s\n", fname));
/* Send the required number of replies */
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, params, param_len, *ppdata, 0);
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, params, param_len, *ppdata, 0);
return -1;
}
@@ -1090,7 +1040,7 @@ static NTSTATUS set_sd(files_struct *fsp, char *data, uint32 sd_len, uint32 secu
prs_struct pd;
SEC_DESC *psd = NULL;
TALLOC_CTX *mem_ctx;
- NTSTATUS status;
+ BOOL ret;
if (sd_len == 0 || !lp_nt_acl_support(SNUM(fsp->conn))) {
return NT_STATUS_OK;
@@ -1140,10 +1090,16 @@ static NTSTATUS set_sd(files_struct *fsp, char *data, uint32 sd_len, uint32 secu
security_info_sent &= ~DACL_SECURITY_INFORMATION;
}
- status = SMB_VFS_FSET_NT_ACL( fsp, fsp->fh->fd, security_info_sent, psd);
+ ret = SMB_VFS_FSET_NT_ACL( fsp, fsp->fh->fd, security_info_sent, psd);
+
+ if (!ret) {
+ talloc_destroy(mem_ctx);
+ return NT_STATUS_ACCESS_DENIED;
+ }
talloc_destroy(mem_ctx);
- return status;
+
+ return NT_STATUS_OK;
}
/****************************************************************************
@@ -1201,6 +1157,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
uint32 flags;
uint32 access_mask;
uint32 file_attributes;
+ uint32 new_file_attributes;
uint32 share_access;
uint32 create_disposition;
uint32 create_options;
@@ -1215,8 +1172,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
char *pdata = NULL;
NTSTATUS status;
size_t param_len;
- struct smb_request req;
- struct case_semantics_state *case_state = NULL;
DEBUG(5,("call_nt_transact_create\n"));
@@ -1245,8 +1200,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
- init_smb_request(&req, (uint8 *)inbuf);
-
flags = IVAL(params,0);
access_mask = IVAL(params,8);
file_attributes = IVAL(params,20);
@@ -1293,17 +1246,13 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
* This filename is relative to a directory fid.
*/
files_struct *dir_fsp = file_fsp(params,4);
- size_t dir_name_len;
if(!dir_fsp) {
return ERROR_DOS(ERRDOS,ERRbadfid);
}
if(!dir_fsp->is_directory) {
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname,
- params+53, sizeof(fname),
- parameter_count-53, STR_TERMINATE,
- &status);
+ srvstr_get_path(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -1324,32 +1273,30 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
*/
pstrcpy( fname, dir_fsp->fsp_name );
- dir_name_len = strlen(fname);
- /*
- * Ensure it ends in a '\'.
- */
+ if (ISDOT(fname)) {
+ fname[0] = '\0';
+ } else {
+ size_t dir_name_len = strlen(fname);
+ /*
+ * Ensure it ends in a '\'.
+ */
- if((fname[dir_name_len-1] != '\\') && (fname[dir_name_len-1] != '/')) {
- pstrcat(fname, "/");
- dir_name_len++;
+ if((fname[dir_name_len-1] != '\\') && (fname[dir_name_len-1] != '/')) {
+ pstrcat(fname, "/");
+ }
}
{
pstring tmpname;
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), tmpname,
- params+53, sizeof(tmpname),
- parameter_count-53, STR_TERMINATE,
- &status);
+ srvstr_get_path(inbuf, tmpname, params+53, sizeof(tmpname), parameter_count-53, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
pstrcat(fname, tmpname);
}
} else {
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, params+53,
- sizeof(fname), parameter_count-53,
- STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -1375,15 +1322,11 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
/*
* Check if POSIX semantics are wanted.
*/
-
- if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
- case_state = set_posix_case_semantics(NULL, conn);
- file_attributes &= ~FILE_FLAG_POSIX_SEMANTICS;
- }
+ new_file_attributes = set_posix_case_semantics(conn, file_attributes);
+
status = resolve_dfspath(conn, SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES, fname);
if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
if (NT_STATUS_EQUAL(status,NT_STATUS_PATH_NOT_COVERED)) {
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
}
@@ -1392,13 +1335,13 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
status = unix_convert(conn, fname, False, NULL, &sbuf);
if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_NT(status);
}
/* All file access must go through check_name() */
status = check_name(conn, fname);
if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_NT(status);
}
@@ -1416,21 +1359,11 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
&& (access_mask & DELETE_ACCESS)) {
if ((dos_mode(conn, fname, &sbuf) & FILE_ATTRIBUTE_READONLY) ||
!can_delete_file_in_directory(conn, fname)) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_NT(NT_STATUS_ACCESS_DENIED);
}
}
-#if 0
- /* We need to support SeSecurityPrivilege for this. */
- if ((access_mask & SEC_RIGHT_SYSTEM_SECURITY) &&
- !user_has_privileges(current_user.nt_user_token,
- &se_security)) {
- TALLOC_FREE(case_state);
- return ERROR_NT(NT_STATUS_PRIVILEGE_NOT_HELD);
- }
-#endif
-
if (ea_len) {
pdata = data + sd_len;
@@ -1438,7 +1371,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
ea_list = read_nttrans_ea_list(tmp_talloc_ctx(), pdata,
ea_len);
if (!ea_list ) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
}
@@ -1451,7 +1384,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
/* Can't open a temp directory. IFS kit test. */
if (file_attributes & FILE_ATTRIBUTE_TEMPORARY) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
@@ -1462,34 +1395,29 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
*/
oplock_request = 0;
- status = open_directory(conn, &req, fname, &sbuf,
+ status = open_directory(conn, fname, &sbuf,
access_mask,
share_access,
create_disposition,
create_options,
- file_attributes,
+ new_file_attributes,
&info, &fsp);
- if(!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
- return ERROR_NT(status);
- }
-
} else {
/*
* Ordinary file case.
*/
- status = open_file_ntcreate(conn,&req,fname,&sbuf,
+ status = open_file_ntcreate(conn,fname,&sbuf,
access_mask,
share_access,
create_disposition,
create_options,
- file_attributes,
+ new_file_attributes,
oplock_request,
&info, &fsp);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!NT_STATUS_IS_OK(status)) {
if (NT_STATUS_EQUAL(status,
NT_STATUS_FILE_IS_A_DIRECTORY)) {
@@ -1498,39 +1426,38 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
*/
if (create_options & FILE_NON_DIRECTORY_FILE) {
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_FORCE_NT(NT_STATUS_FILE_IS_A_DIRECTORY);
}
-
+
oplock_request = 0;
- status = open_directory(conn, &req, fname,
- &sbuf,
+ status = open_directory(conn, fname, &sbuf,
access_mask,
share_access,
create_disposition,
create_options,
- file_attributes,
+ new_file_attributes,
&info, &fsp);
- if(!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(case_state);
- return ERROR_NT(status);
- }
- } else {
- TALLOC_FREE(case_state);
- if (open_was_deferred(SVAL(inbuf,smb_mid))) {
- /* We have re-scheduled this call. */
- return -1;
- }
- return ERROR_NT(status);
}
- }
+ }
+ }
+
+ restore_case_semantics(conn, file_attributes);
+ if(!NT_STATUS_IS_OK(status)) {
+
+ if (open_was_deferred(SVAL(inbuf,smb_mid))) {
+ /* We have re-scheduled this call. */
+ return -1;
+ }
+
+ return ERROR_OPEN(status);
}
/*
* According to the MS documentation, the only time the security
* descriptor is applied to the opened file is iff we *created* the
* file; an existing file stays the same.
- *
+ *
* Also, it seems (from observation) that you can open the file with
* any access mask but you can still write the sd. We need to override
* the granted access before we call set_sd
@@ -1548,7 +1475,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
if (!NT_STATUS_IS_OK(status)) {
talloc_destroy(ctx);
close_file(fsp,ERROR_CLOSE);
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_NT(status);
}
fsp->access_mask = saved_access_mask;
@@ -1558,12 +1485,12 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
status = set_ea(conn, fsp, fname, ea_list);
if (!NT_STATUS_IS_OK(status)) {
close_file(fsp,ERROR_CLOSE);
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
return ERROR_NT(status);
}
}
- TALLOC_FREE(case_state);
+ restore_case_semantics(conn, file_attributes);
file_len = sbuf.st_size;
fattr = dos_mode(conn,fname,&sbuf);
@@ -1691,7 +1618,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
DEBUG(5,("call_nt_transact_create: open name = %s\n", fname));
/* Send the required number of replies */
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, params, param_len, *ppdata, 0);
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, params, param_len, *ppdata, 0);
return -1;
}
@@ -1724,9 +1651,7 @@ int reply_ntcancel(connection_struct *conn,
Copy a file.
****************************************************************************/
-static NTSTATUS copy_internals(connection_struct *conn,
- struct smb_request *req,
- char *oldname, char *newname, uint32 attrs)
+static NTSTATUS copy_internals(connection_struct *conn, char *oldname, char *newname, uint32 attrs)
{
SMB_STRUCT_STAT sbuf1, sbuf2;
pstring last_component_oldname;
@@ -1785,14 +1710,14 @@ static NTSTATUS copy_internals(connection_struct *conn,
}
/* Ensure this is within the share. */
- status = check_reduced_name(conn, oldname);
+ status = reduce_name(conn, oldname);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
DEBUG(10,("copy_internals: doing file copy %s to %s\n", oldname, newname));
- status = open_file_ntcreate(conn, req, oldname, &sbuf1,
+ status = open_file_ntcreate(conn,oldname,&sbuf1,
FILE_READ_DATA, /* Read-only. */
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
FILE_OPEN,
@@ -1805,7 +1730,7 @@ static NTSTATUS copy_internals(connection_struct *conn,
return status;
}
- status = open_file_ntcreate(conn, req, newname, &sbuf2,
+ status = open_file_ntcreate(conn,newname,&sbuf2,
FILE_WRITE_DATA, /* Read-only. */
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
FILE_CREATE,
@@ -1869,16 +1794,11 @@ int reply_ntrename(connection_struct *conn,
BOOL dest_has_wcard = False;
uint32 attrs = SVAL(inbuf,smb_vwv0);
uint16 rename_type = SVAL(inbuf,smb_vwv1);
- struct smb_request req;
START_PROFILE(SMBntrename);
- init_smb_request(&req, (uint8 *)inbuf);
-
p = smb_buf(inbuf) + 1;
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), oldname, p,
- sizeof(oldname), 0, STR_TERMINATE, &status,
- &src_has_wcard);
+ p += srvstr_get_path_wcard(inbuf, oldname, p, sizeof(oldname), 0, STR_TERMINATE, &status, &src_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBntrename);
return ERROR_NT(status);
@@ -1896,9 +1816,7 @@ int reply_ntrename(connection_struct *conn,
}
p++;
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), newname, p,
- sizeof(newname), 0, STR_TERMINATE, &status,
- &dest_has_wcard);
+ p += srvstr_get_path_wcard(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status, &dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBntrename);
return ERROR_NT(status);
@@ -1926,9 +1844,7 @@ int reply_ntrename(connection_struct *conn,
switch(rename_type) {
case RENAME_FLAG_RENAME:
- status = rename_internals(conn, &req, oldname, newname,
- attrs, False, src_has_wcard,
- dest_has_wcard);
+ status = rename_internals(conn, oldname, newname, attrs, False, src_has_wcard, dest_has_wcard);
break;
case RENAME_FLAG_HARD_LINK:
if (src_has_wcard || dest_has_wcard) {
@@ -1943,8 +1859,7 @@ int reply_ntrename(connection_struct *conn,
/* No wildcards. */
status = NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
} else {
- status = copy_internals(conn, &req, oldname,
- newname, attrs);
+ status = copy_internals(conn, oldname, newname, attrs);
}
break;
case RENAME_FLAG_MOVE_CLUSTER_INFORMATION:
@@ -1964,7 +1879,7 @@ int reply_ntrename(connection_struct *conn,
return ERROR_NT(status);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
END_PROFILE(SMBntrename);
return(outsize);
@@ -2045,7 +1960,7 @@ static int call_nt_transact_notify_change(connection_struct *conn, char *inbuf,
* here.
*/
- change_notify_reply(inbuf, fsp->notify);
+ change_notify_reply(inbuf, max_param_count, fsp->notify);
/*
* change_notify_reply() above has independently sent its
@@ -2058,7 +1973,8 @@ static int call_nt_transact_notify_change(connection_struct *conn, char *inbuf,
* No changes pending, queue the request
*/
- status = change_notify_add_request(inbuf, filter, recursive, fsp);
+ status = change_notify_add_request(inbuf, max_param_count, filter,
+ recursive, fsp);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -2081,9 +1997,6 @@ static int call_nt_transact_rename(connection_struct *conn, char *inbuf, char *o
BOOL replace_if_exists = False;
BOOL dest_has_wcard = False;
NTSTATUS status;
- struct smb_request req;
-
- init_smb_request(&req, (uint8 *)inbuf);
if(parameter_count < 5) {
return ERROR_DOS(ERRDOS,ERRbadfunc);
@@ -2092,14 +2005,13 @@ static int call_nt_transact_rename(connection_struct *conn, char *inbuf, char *o
fsp = file_fsp(params, 0);
replace_if_exists = (SVAL(params,2) & RENAME_REPLACE_IF_EXISTS) ? True : False;
CHECK_FSP(fsp, conn);
- srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), new_name, params+4,
- sizeof(new_name), parameter_count - 4,
- STR_TERMINATE, &status, &dest_has_wcard);
+ srvstr_get_path_wcard(inbuf, new_name, params+4, sizeof(new_name), parameter_count - 4,
+ STR_TERMINATE, &status, &dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
- status = rename_internals(conn, &req, fsp->fsp_name,
+ status = rename_internals(conn, fsp->fsp_name,
new_name, 0, replace_if_exists, False, dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
@@ -2113,7 +2025,7 @@ static int call_nt_transact_rename(connection_struct *conn, char *inbuf, char *o
/*
* Rename was successful.
*/
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, NULL, 0, NULL, 0);
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, NULL, 0, NULL, 0);
DEBUG(3,("nt transact rename from = %s, to = %s succeeded.\n",
fsp->fsp_name, new_name));
@@ -2201,7 +2113,7 @@ static int call_nt_transact_query_security_desc(connection_struct *conn, char *i
if(max_data_count < sd_size) {
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_BUFFER_TOO_SMALL,
+ send_nt_replies(outbuf, bufsize, NT_STATUS_BUFFER_TOO_SMALL,
params, 4, *ppdata, 0);
talloc_destroy(mem_ctx);
return -1;
@@ -2250,7 +2162,7 @@ security descriptor.\n"));
talloc_destroy(mem_ctx);
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, params, 4, data,
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, params, 4, data,
(int)sd_size);
return -1;
}
@@ -2297,7 +2209,7 @@ static int call_nt_transact_set_security_desc(connection_struct *conn, char *inb
done:
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, NULL, 0, NULL, 0);
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, NULL, 0, NULL, 0);
return -1;
}
@@ -2343,31 +2255,19 @@ static int call_nt_transact_ioctl(connection_struct *conn, char *inbuf, char *ou
so we can know if we need to pre-allocate or not */
DEBUG(10,("FSCTL_SET_SPARSE: called on FID[0x%04X](but not implemented)\n", fidnum));
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, NULL, 0, NULL,
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, NULL, 0, NULL,
0);
return -1;
- case FSCTL_CREATE_OR_GET_OBJECT_ID:
- {
- unsigned char objid[16];
-
- /* This should return the object-id on this file.
- * I think I'll make this be the inode+dev. JRA.
+ case FSCTL_0x000900C0:
+ /* pretend this succeeded - don't know what this really is
+ but works ok like this --metze
*/
- DEBUG(10,("FSCTL_CREATE_OR_GET_OBJECT_ID: called on FID[0x%04X]\n",fidnum));
-
- data_count = 64;
- pdata = nttrans_realloc(ppdata, data_count);
- if (pdata == NULL) {
- return ERROR_NT(NT_STATUS_NO_MEMORY);
- }
- push_file_id_16(pdata, &fsp->file_id);
- memcpy(pdata+16,create_volume_objectid(conn,objid),16);
- push_file_id_16(pdata+32, &fsp->file_id);
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, NULL, 0, pdata, data_count);
+ DEBUG(10,("FSCTL_0x000900C0: called on FID[0x%04X](but not implemented)\n",fidnum));
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, NULL, 0, NULL,
+ 0);
return -1;
- }
case FSCTL_GET_REPARSE_POINT:
/* pretend this fail - my winXP does it like this
@@ -2375,7 +2275,9 @@ static int call_nt_transact_ioctl(connection_struct *conn, char *inbuf, char *ou
*/
DEBUG(10,("FSCTL_GET_REPARSE_POINT: called on FID[0x%04X](but not implemented)\n",fidnum));
- return ERROR_NT(NT_STATUS_NOT_A_REPARSE_POINT);
+ send_nt_replies(outbuf, bufsize, NT_STATUS_NOT_A_REPARSE_POINT,
+ NULL, 0, NULL, 0);
+ return -1;
case FSCTL_SET_REPARSE_POINT:
/* pretend this fail - I'm assuming this because of the FSCTL_GET_REPARSE_POINT case.
@@ -2383,7 +2285,9 @@ static int call_nt_transact_ioctl(connection_struct *conn, char *inbuf, char *ou
*/
DEBUG(10,("FSCTL_SET_REPARSE_POINT: called on FID[0x%04X](but not implemented)\n",fidnum));
- return ERROR_NT(NT_STATUS_NOT_A_REPARSE_POINT);
+ send_nt_replies(outbuf, bufsize, NT_STATUS_NOT_A_REPARSE_POINT,
+ NULL, 0, NULL, 0);
+ return -1;
case FSCTL_GET_SHADOW_COPY_DATA: /* don't know if this name is right...*/
{
@@ -2495,7 +2399,7 @@ static int call_nt_transact_ioctl(connection_struct *conn, char *inbuf, char *ou
talloc_destroy(shadow_data->mem_ctx);
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, NULL, 0,
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, NULL, 0,
pdata, data_count);
return -1;
@@ -2548,7 +2452,7 @@ static int call_nt_transact_ioctl(connection_struct *conn, char *inbuf, char *ou
*/
/* this works for now... */
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, NULL, 0,
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, NULL, 0,
NULL, 0);
return -1;
}
@@ -2815,7 +2719,7 @@ static int call_nt_transact_get_user_quota(connection_struct *conn, char *inbuf,
break;
}
- send_nt_replies(inbuf, outbuf, bufsize, nt_status, params, param_len,
+ send_nt_replies(outbuf, bufsize, nt_status, params, param_len,
pdata, data_len);
return -1;
@@ -2933,7 +2837,7 @@ static int call_nt_transact_set_user_quota(connection_struct *conn, char *inbuf,
return ERROR_DOS(ERRSRV,ERRerror);
}
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, params, param_len,
+ send_nt_replies(outbuf, bufsize, NT_STATUS_OK, params, param_len,
pdata, data_len);
return -1;
@@ -3199,7 +3103,7 @@ int reply_nttrans(connection_struct *conn,
}
memcpy( state->setup, &inbuf[smb_nt_SetupStart], state->setup_count);
- dump_data(10, (uint8 *)state->setup, state->setup_count);
+ dump_data(10, (char *)state->setup, state->setup_count);
}
if ((state->received_data == state->total_data) &&
@@ -3217,7 +3121,7 @@ int reply_nttrans(connection_struct *conn,
/* We need to send an interim response then receive the rest
of the parameter/data bytes */
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
show_msg(outbuf);
END_PROFILE(SMBnttrans);
return outsize;
diff --git a/source/smbd/open.c b/source/smbd/open.c
index 5cb8340e0e0..0fa11a56c81 100644
--- a/source/smbd/open.c
+++ b/source/smbd/open.c
@@ -25,11 +25,13 @@
extern struct generic_mapping file_generic_mapping;
extern struct current_user current_user;
extern userdom_struct current_user_info;
+extern uint16 global_smbpid;
extern BOOL global_client_failed_oplock_break;
struct deferred_open_record {
BOOL delayed_for_oplocks;
- struct file_id id;
+ SMB_DEV_T dev;
+ SMB_INO_T inode;
};
/****************************************************************************
@@ -200,7 +202,6 @@ static void change_dir_owner_to_parent(connection_struct *conn,
static NTSTATUS open_file(files_struct *fsp,
connection_struct *conn,
- struct smb_request *req,
const char *parent_dir,
const char *name,
const char *path,
@@ -358,9 +359,10 @@ static NTSTATUS open_file(files_struct *fsp,
}
fsp->mode = psbuf->st_mode;
- fsp->file_id = file_id_sbuf(psbuf);
- fsp->vuid = req ? req->vuid : UID_FIELD_INVALID;
- fsp->file_pid = req ? req->smbpid : 0;
+ fsp->inode = psbuf->st_ino;
+ fsp->dev = psbuf->st_dev;
+ fsp->vuid = current_user.vuid;
+ fsp->file_pid = global_smbpid;
fsp->can_lock = True;
fsp->can_read = (access_mask & (FILE_READ_DATA)) ? True : False;
if (!CAN_WRITE(conn)) {
@@ -374,6 +376,10 @@ static NTSTATUS open_file(files_struct *fsp,
fsp->sent_oplock_break = NO_BREAK_SENT;
fsp->is_directory = False;
fsp->is_stat = False;
+ if (conn->aio_write_behind_list &&
+ is_in_path(path, conn->aio_write_behind_list, conn->case_sensitive)) {
+ fsp->aio_write_behind = True;
+ }
string_set(&fsp->fsp_name, path);
fsp->wcp = NULL; /* Write cache pointer. */
@@ -511,7 +517,7 @@ static void validate_my_share_entries(int num,
return;
}
- fsp = file_find_dif(share_entry->id,
+ fsp = file_find_dif(share_entry->dev, share_entry->inode,
share_entry->share_file_id);
if (!fsp) {
DEBUG(0,("validate_my_share_entries: PANIC : %s\n",
@@ -644,7 +650,6 @@ static BOOL is_delete_request(files_struct *fsp) {
static BOOL delay_for_oplocks(struct share_mode_lock *lck,
files_struct *fsp,
- uint16 mid,
int pass_number,
int oplock_request)
{
@@ -729,7 +734,7 @@ static BOOL delay_for_oplocks(struct share_mode_lock *lck,
DEBUG(10, ("Sending break request to PID %s\n",
procid_str_static(&exclusive->pid)));
- exclusive->op_mid = mid;
+ exclusive->op_mid = get_current_mid();
/* Create the message. */
share_mode_entry_to_message(msg, exclusive);
@@ -741,10 +746,8 @@ static BOOL delay_for_oplocks(struct share_mode_lock *lck,
SSVAL(msg,6,exclusive->op_type | FORCE_OPLOCK_BREAK_TO_NONE);
}
- status = messaging_send_buf(smbd_messaging_context(), exclusive->pid,
- MSG_SMB_BREAK_REQUEST,
- (uint8 *)msg,
- MSG_SMB_SHARE_MODE_ENTRY_SIZE);
+ status = message_send_pid(exclusive->pid, MSG_SMB_BREAK_REQUEST,
+ msg, MSG_SMB_SHARE_MODE_ENTRY_SIZE, True);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(3, ("Could not send oplock break message: %s\n",
nt_errstr(status)));
@@ -769,9 +772,9 @@ static BOOL request_timed_out(struct timeval request_time,
static void defer_open(struct share_mode_lock *lck,
struct timeval request_time,
struct timeval timeout,
- uint16 mid,
struct deferred_open_record *state)
{
+ uint16 mid = get_current_mid();
int i;
/* Paranoia check */
@@ -802,7 +805,7 @@ static void defer_open(struct share_mode_lock *lck,
(char *)state, sizeof(*state))) {
exit_server("push_deferred_smb_message failed");
}
- add_deferred_open(lck, mid, request_time, state->id);
+ add_deferred_open(lck, mid, request_time, state->dev, state->inode);
/*
* Push the MID of this packet on the signing queue.
@@ -870,10 +873,8 @@ static BOOL open_match_attributes(connection_struct *conn,
****************************************************************************/
static files_struct *fcb_or_dos_open(connection_struct *conn,
- const char *fname,
- struct file_id id,
- uint16 file_pid,
- uint16 vuid,
+ const char *fname, SMB_DEV_T dev,
+ SMB_INO_T inode,
uint32 access_mask,
uint32 share_access,
uint32 create_options)
@@ -884,7 +885,7 @@ static files_struct *fcb_or_dos_open(connection_struct *conn,
DEBUG(5,("fcb_or_dos_open: attempting old open semantics for "
"file %s.\n", fname ));
- for(fsp = file_find_di_first(id); fsp;
+ for(fsp = file_find_di_first(dev, inode); fsp;
fsp = file_find_di_next(fsp)) {
DEBUG(10,("fcb_or_dos_open: checking file %s, fd = %d, "
@@ -896,8 +897,8 @@ static files_struct *fcb_or_dos_open(connection_struct *conn,
(unsigned int)fsp->access_mask ));
if (fsp->fh->fd != -1 &&
- fsp->vuid == vuid &&
- fsp->file_pid == file_pid &&
+ fsp->vuid == current_user.vuid &&
+ fsp->file_pid == global_smbpid &&
(fsp->fh->private_options & (NTCREATEX_OPTIONS_PRIVATE_DENY_DOS |
NTCREATEX_OPTIONS_PRIVATE_DENY_FCB)) &&
(fsp->access_mask & FILE_WRITE_DATA) &&
@@ -1066,9 +1067,7 @@ BOOL map_open_params_to_ntcreate(const char *fname, int deny_mode, int open_func
}
-static void schedule_defer_open(struct share_mode_lock *lck,
- struct timeval request_time,
- uint16 mid)
+static void schedule_defer_open(struct share_mode_lock *lck, struct timeval request_time)
{
struct deferred_open_record state;
@@ -1096,10 +1095,11 @@ static void schedule_defer_open(struct share_mode_lock *lck,
a 1 second delay for share mode conflicts. */
state.delayed_for_oplocks = True;
- state.id = lck->id;
+ state.dev = lck->dev;
+ state.inode = lck->ino;
if (!request_timed_out(request_time, timeout)) {
- defer_open(lck, request_time, timeout, mid, &state);
+ defer_open(lck, request_time, timeout, &state);
}
}
@@ -1108,7 +1108,6 @@ static void schedule_defer_open(struct share_mode_lock *lck,
****************************************************************************/
NTSTATUS open_file_ntcreate(connection_struct *conn,
- struct smb_request *req,
const char *fname,
SMB_STRUCT_STAT *psbuf,
uint32 access_mask, /* access bits (FILE_READ_DATA etc.) */
@@ -1127,7 +1126,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
BOOL def_acl = False;
BOOL posix_open = False;
BOOL new_file_created = False;
- struct file_id id;
+ SMB_DEV_T dev = 0;
+ SMB_INO_T inode = 0;
NTSTATUS fsp_open = NT_STATUS_ACCESS_DENIED;
files_struct *fsp = NULL;
mode_t new_unx_mode = (mode_t)0;
@@ -1135,6 +1135,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
int info;
uint32 existing_dos_attributes = 0;
struct pending_message_list *pml = NULL;
+ uint16 mid = get_current_mid();
struct timeval request_time = timeval_zero();
struct share_mode_lock *lck = NULL;
uint32 open_access_mask = access_mask;
@@ -1143,8 +1144,6 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
char *parent_dir;
const char *newname;
- ZERO_STRUCT(id);
-
if (conn->printer) {
/*
* Printers are handled completely differently.
@@ -1184,17 +1183,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
create_disposition, create_options, unx_mode,
oplock_request));
- if ((req == NULL) && ((oplock_request & INTERNAL_OPEN_ONLY) == 0)) {
- DEBUG(0, ("No smb request but not an internal only open!\n"));
- return NT_STATUS_INTERNAL_ERROR;
- }
-
- /*
- * Only non-internal opens can be deferred at all
- */
-
- if ((req != NULL)
- && ((pml = get_open_deferred_message(req->mid)) != NULL)) {
+ if ((pml = get_open_deferred_message(mid)) != NULL) {
struct deferred_open_record *state =
(struct deferred_open_record *)pml->private_data.data;
@@ -1205,16 +1194,16 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
request_time = pml->request_time;
/* Remove the deferred open entry under lock. */
- lck = get_share_mode_lock(NULL, state->id, NULL, NULL);
+ lck = get_share_mode_lock(NULL, state->dev, state->inode, NULL, NULL);
if (lck == NULL) {
DEBUG(0, ("could not get share mode lock\n"));
} else {
- del_deferred_open_entry(lck, req->mid);
+ del_deferred_open_entry(lck, mid);
TALLOC_FREE(lck);
}
/* Ensure we don't reprocess this message. */
- remove_deferred_open_smb_message(req->mid);
+ remove_deferred_open_smb_message(mid);
}
status = check_name(conn, fname);
@@ -1417,7 +1406,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
return status;
}
- fsp->file_id = file_id_sbuf(psbuf);
+ fsp->dev = psbuf->st_dev;
+ fsp->inode = psbuf->st_ino;
fsp->share_access = share_access;
fsp->fh->private_options = create_options;
fsp->access_mask = open_access_mask; /* We change this to the
@@ -1433,9 +1423,10 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
}
if (file_existed) {
- id = file_id_sbuf(psbuf);
+ dev = psbuf->st_dev;
+ inode = psbuf->st_ino;
- lck = get_share_mode_lock(NULL, id,
+ lck = get_share_mode_lock(NULL, dev, inode,
conn->connectpath,
fname);
@@ -1446,10 +1437,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
}
/* First pass - send break only on batch oplocks. */
- if ((req != NULL)
- && delay_for_oplocks(lck, fsp, req->mid, 1,
- oplock_request)) {
- schedule_defer_open(lck, request_time, req->mid);
+ if (delay_for_oplocks(lck, fsp, 1, oplock_request)) {
+ schedule_defer_open(lck, request_time);
TALLOC_FREE(lck);
file_free(fsp);
return NT_STATUS_SHARING_VIOLATION;
@@ -1466,11 +1455,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
* status again. */
/* Second pass - send break for both batch or
* exclusive oplocks. */
- if ((req != NULL)
- && delay_for_oplocks(lck, fsp, req->mid, 2,
- oplock_request)) {
- schedule_defer_open(lck, request_time,
- req->mid);
+ if (delay_for_oplocks(lck, fsp, 2, oplock_request)) {
+ schedule_defer_open(lck, request_time);
TALLOC_FREE(lck);
file_free(fsp);
return NT_STATUS_SHARING_VIOLATION;
@@ -1497,20 +1483,10 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
NTCREATEX_OPTIONS_PRIVATE_DENY_FCB)) {
files_struct *fsp_dup;
- if (req == NULL) {
- DEBUG(0, ("DOS open without an SMB "
- "request!\n"));
- TALLOC_FREE(lck);
- file_free(fsp);
- return NT_STATUS_INTERNAL_ERROR;
- }
-
/* Use the client requested access mask here,
* not the one we open with. */
- fsp_dup = fcb_or_dos_open(conn, fname, id,
- req->smbpid,
- req->vuid,
- access_mask,
+ fsp_dup = fcb_or_dos_open(conn, fname, dev,
+ inode, access_mask,
share_access,
create_options);
@@ -1582,13 +1558,13 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
a 1 second delay for share mode conflicts. */
state.delayed_for_oplocks = False;
- state.id = id;
+ state.dev = dev;
+ state.inode = inode;
- if ((req != NULL)
- && !request_timed_out(request_time,
- timeout)) {
+ if (!request_timed_out(request_time,
+ timeout)) {
defer_open(lck, request_time, timeout,
- req->mid, &state);
+ &state);
}
}
@@ -1632,7 +1608,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
* open_file strips any O_TRUNC flags itself.
*/
- fsp_open = open_file(fsp, conn, req, parent_dir, newname, fname, psbuf,
+ fsp_open = open_file(fsp, conn, parent_dir, newname, fname, psbuf,
flags|flags2, unx_mode, access_mask,
open_access_mask);
@@ -1661,9 +1637,10 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
* Nadav Danieli <nadavd@exanet.com>. JRA.
*/
- id = fsp->file_id;
+ dev = fsp->dev;
+ inode = fsp->inode;
- lck = get_share_mode_lock(NULL, id,
+ lck = get_share_mode_lock(NULL, dev, inode,
conn->connectpath,
fname);
@@ -1676,10 +1653,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
}
/* First pass - send break only on batch oplocks. */
- if ((req != NULL)
- && delay_for_oplocks(lck, fsp, req->mid, 1,
- oplock_request)) {
- schedule_defer_open(lck, request_time, req->mid);
+ if (delay_for_oplocks(lck, fsp, 1, oplock_request)) {
+ schedule_defer_open(lck, request_time);
TALLOC_FREE(lck);
fd_close(conn, fsp);
file_free(fsp);
@@ -1695,11 +1670,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
* status again. */
/* Second pass - send break for both batch or
* exclusive oplocks. */
- if ((req != NULL)
- && delay_for_oplocks(lck, fsp, req->mid, 2,
- oplock_request)) {
- schedule_defer_open(lck, request_time,
- req->mid);
+ if (delay_for_oplocks(lck, fsp, 2, oplock_request)) {
+ schedule_defer_open(lck, request_time);
TALLOC_FREE(lck);
fd_close(conn, fsp);
file_free(fsp);
@@ -1714,7 +1686,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
file_free(fsp);
state.delayed_for_oplocks = False;
- state.id = id;
+ state.dev = dev;
+ state.inode = inode;
/* Do it all over again immediately. In the second
* round we will find that the file existed and handle
@@ -1723,10 +1696,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
* "goto top of this function", but don't tell
* anybody... */
- if (req != NULL) {
- defer_open(lck, request_time, timeval_zero(),
- req->mid, &state);
- }
+ defer_open(lck, request_time, timeval_zero(),
+ &state);
TALLOC_FREE(lck);
return status;
}
@@ -1900,9 +1871,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
/* If this is a successful open, we must remove any deferred open
* records. */
- if (req != NULL) {
- del_deferred_open_entry(lck, req->mid);
- }
+ del_deferred_open_entry(lck, mid);
TALLOC_FREE(lck);
conn->num_files_open++;
@@ -1932,8 +1901,8 @@ NTSTATUS open_file_fchmod(connection_struct *conn, const char *fname,
/* note! we must use a non-zero desired access or we don't get
a real file descriptor. Oh what a twisted web we weave. */
- status = open_file(fsp, conn, NULL, NULL, NULL, fname, psbuf, O_WRONLY,
- 0, FILE_WRITE_DATA, FILE_WRITE_DATA);
+ status = open_file(fsp, conn, NULL, NULL, fname, psbuf, O_WRONLY, 0,
+ FILE_WRITE_DATA, FILE_WRITE_DATA);
/*
* This is not a user visible file open.
@@ -1970,6 +1939,7 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
char *parent_dir;
const char *dirname;
NTSTATUS status;
+ BOOL posix_open = False;
if(!CAN_WRITE(conn)) {
DEBUG(5,("mkdir_internal: failing create on read-only share "
@@ -1988,6 +1958,7 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
}
if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
+ posix_open = True;
mode = (mode_t)(file_attributes & ~FILE_FLAG_POSIX_SEMANTICS);
} else {
mode = unix_mode(conn, aDIR, name, parent_dir);
@@ -2012,6 +1983,14 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
return NT_STATUS_ACCESS_DENIED;
}
+ if (lp_store_dos_attributes(SNUM(conn))) {
+ if (!posix_open) {
+ file_set_dosmode(conn, name,
+ file_attributes | aDIR, NULL,
+ parent_dir);
+ }
+ }
+
if (lp_inherit_perms(SNUM(conn))) {
inherit_access_acl(conn, parent_dir, name, mode);
}
@@ -2045,7 +2024,6 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
****************************************************************************/
NTSTATUS open_directory(connection_struct *conn,
- struct smb_request *req,
const char *fname,
SMB_STRUCT_STAT *psbuf,
uint32 access_mask,
@@ -2161,9 +2139,10 @@ NTSTATUS open_directory(connection_struct *conn,
*/
fsp->mode = psbuf->st_mode;
- fsp->file_id = file_id_sbuf(psbuf);
- fsp->vuid = req ? req->vuid : UID_FIELD_INVALID;
- fsp->file_pid = req ? req->smbpid : 0;
+ fsp->inode = psbuf->st_ino;
+ fsp->dev = psbuf->st_dev;
+ fsp->vuid = current_user.vuid;
+ fsp->file_pid = global_smbpid;
fsp->can_lock = False;
fsp->can_read = False;
fsp->can_write = False;
@@ -2182,7 +2161,7 @@ NTSTATUS open_directory(connection_struct *conn,
string_set(&fsp->fsp_name,fname);
- lck = get_share_mode_lock(NULL, fsp->file_id,
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode,
conn->connectpath,
fname);
@@ -2241,7 +2220,7 @@ NTSTATUS create_directory(connection_struct *conn, const char *directory)
SET_STAT_INVALID(sbuf);
- status = open_directory(conn, NULL, directory, &sbuf,
+ status = open_directory(conn, directory, &sbuf,
FILE_READ_ATTRIBUTES, /* Just a stat open */
FILE_SHARE_NONE, /* Ignored for stat opens */
FILE_CREATE,
@@ -2261,9 +2240,8 @@ NTSTATUS create_directory(connection_struct *conn, const char *directory)
Open a pseudo-file (no locking checks - a 'stat' open).
****************************************************************************/
-NTSTATUS open_file_stat(connection_struct *conn, struct smb_request *req,
- const char *fname, SMB_STRUCT_STAT *psbuf,
- files_struct **result)
+NTSTATUS open_file_stat(connection_struct *conn, const char *fname,
+ SMB_STRUCT_STAT *psbuf, files_struct **result)
{
files_struct *fsp = NULL;
NTSTATUS status;
@@ -2289,9 +2267,10 @@ NTSTATUS open_file_stat(connection_struct *conn, struct smb_request *req,
*/
fsp->mode = psbuf->st_mode;
- fsp->file_id = file_id_sbuf(psbuf);
- fsp->vuid = req ? req->vuid : UID_FIELD_INVALID;
- fsp->file_pid = req ? req->smbpid : 0;
+ fsp->inode = psbuf->st_ino;
+ fsp->dev = psbuf->st_dev;
+ fsp->vuid = current_user.vuid;
+ fsp->file_pid = global_smbpid;
fsp->can_lock = False;
fsp->can_read = False;
fsp->can_write = False;
@@ -2314,37 +2293,34 @@ NTSTATUS open_file_stat(connection_struct *conn, struct smb_request *req,
smbd process.
****************************************************************************/
-void msg_file_was_renamed(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+void msg_file_was_renamed(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
files_struct *fsp;
- char *frm = (char *)data->data;
- struct file_id id;
+ char *frm = (char *)buf;
+ SMB_DEV_T dev;
+ SMB_INO_T inode;
const char *sharepath;
const char *newname;
size_t sp_len;
- if (data->data == NULL
- || data->length < MSG_FILE_RENAMED_MIN_SIZE + 2) {
- DEBUG(0, ("msg_file_was_renamed: Got invalid msg len %d\n",
- (int)data->length));
+ if (buf == NULL || len < MSG_FILE_RENAMED_MIN_SIZE + 2) {
+ DEBUG(0, ("msg_file_was_renamed: Got invalid msg len %d\n", (int)len));
return;
}
/* Unpack the message. */
- pull_file_id_16(frm, &id);
+ dev = DEV_T_VAL(frm,0);
+ inode = INO_T_VAL(frm,8);
sharepath = &frm[16];
newname = sharepath + strlen(sharepath) + 1;
sp_len = strlen(sharepath);
DEBUG(10,("msg_file_was_renamed: Got rename message for sharepath %s, new name %s, "
- "file_id %s\n",
- sharepath, newname, file_id_static_string(&id)));
+ "dev %x, inode %.0f\n",
+ sharepath, newname, (unsigned int)dev, (double)inode ));
- for(fsp = file_find_di_first(id); fsp; fsp = file_find_di_next(fsp)) {
+ for(fsp = file_find_di_first(dev, inode); fsp; fsp = file_find_di_next(fsp)) {
if (memcmp(fsp->conn->connectpath, sharepath, sp_len) == 0) {
DEBUG(10,("msg_file_was_renamed: renaming file fnum %d from %s -> %s\n",
fsp->fnum, fsp->fsp_name, newname ));
diff --git a/source/smbd/oplock.c b/source/smbd/oplock.c
index 39fc847d6ff..54c949254ee 100644
--- a/source/smbd/oplock.c
+++ b/source/smbd/oplock.c
@@ -62,7 +62,7 @@ BOOL oplock_message_waiting(fd_set *fds)
we're calling this in a shutting down state.
****************************************************************************/
-void process_kernel_oplocks(struct messaging_context *msg_ctx, fd_set *pfds)
+void process_kernel_oplocks(fd_set *pfds)
{
/*
* We need to check for kernel oplocks before going into the select
@@ -87,15 +87,16 @@ void process_kernel_oplocks(struct messaging_context *msg_ctx, fd_set *pfds)
}
/* Put the kernel break info into the message. */
- push_file_id_16(msg, &fsp->file_id);
- SIVAL(msg,16,fsp->fh->gen_id);
+ SDEV_T_VAL(msg,0,fsp->dev);
+ SINO_T_VAL(msg,8,fsp->inode);
+ SIVAL(msg,16,fsp->fh->file_id);
/* Don't need to be root here as we're only ever
sending to ourselves. */
- messaging_send_buf(msg_ctx, procid_self(),
- MSG_SMB_KERNEL_BREAK,
- (uint8 *)&msg, MSG_SMB_KERNEL_BREAK_SIZE);
+ message_send_pid(pid_to_procid(sys_getpid()),
+ MSG_SMB_KERNEL_BREAK,
+ &msg, MSG_SMB_KERNEL_BREAK_SIZE, True);
}
}
@@ -118,10 +119,10 @@ BOOL set_file_oplock(files_struct *fsp, int oplock_type)
exclusive_oplocks_open++;
}
- DEBUG(5,("set_file_oplock: granted oplock on file %s, %s/%lu, "
+ DEBUG(5,("set_file_oplock: granted oplock on file %s, 0x%x/%.0f/%lu, "
"tv_sec = %x, tv_usec = %x\n",
- fsp->fsp_name, file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id, (int)fsp->open_time.tv_sec,
+ fsp->fsp_name, (unsigned int)fsp->dev, (double)fsp->inode,
+ fsp->fh->file_id, (int)fsp->open_time.tv_sec,
(int)fsp->open_time.tv_usec ));
return True;
@@ -179,11 +180,13 @@ static void downgrade_file_oplock(files_struct *fsp)
BOOL remove_oplock(files_struct *fsp)
{
+ SMB_DEV_T dev = fsp->dev;
+ SMB_INO_T inode = fsp->inode;
BOOL ret;
struct share_mode_lock *lck;
/* Remove the oplock flag from the sharemode. */
- lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
if (lck == NULL) {
DEBUG(0,("remove_oplock: failed to lock share entry for "
"file %s\n", fsp->fsp_name ));
@@ -192,8 +195,9 @@ BOOL remove_oplock(files_struct *fsp)
ret = remove_share_oplock(lck, fsp);
if (!ret) {
DEBUG(0,("remove_oplock: failed to remove share oplock for "
- "file %s fnum %d, %s\n",
- fsp->fsp_name, fsp->fnum, file_id_static_string(&fsp->file_id)));
+ "file %s fnum %d, 0x%x/%.0f\n",
+ fsp->fsp_name, fsp->fnum, (unsigned int)dev,
+ (double)inode));
}
release_file_oplock(fsp);
TALLOC_FREE(lck);
@@ -205,10 +209,12 @@ BOOL remove_oplock(files_struct *fsp)
*/
BOOL downgrade_oplock(files_struct *fsp)
{
+ SMB_DEV_T dev = fsp->dev;
+ SMB_INO_T inode = fsp->inode;
BOOL ret;
struct share_mode_lock *lck;
- lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
if (lck == NULL) {
DEBUG(0,("downgrade_oplock: failed to lock share entry for "
"file %s\n", fsp->fsp_name ));
@@ -217,8 +223,9 @@ BOOL downgrade_oplock(files_struct *fsp)
ret = downgrade_share_oplock(lck, fsp);
if (!ret) {
DEBUG(0,("downgrade_oplock: failed to downgrade share oplock "
- "for file %s fnum %d, file_id %s\n",
- fsp->fsp_name, fsp->fnum, file_id_static_string(&fsp->file_id)));
+ "for file %s fnum %d, dev = %x, inode = %.0f\n",
+ fsp->fsp_name, fsp->fnum, (unsigned int)dev,
+ (double)inode));
}
downgrade_file_oplock(fsp);
@@ -254,7 +261,7 @@ static char *new_break_smb_message(TALLOC_CTX *mem_ctx,
}
memset(result,'\0',smb_size);
- set_message(NULL,result,8,0,True);
+ set_message(result,8,0,True);
SCVAL(result,smb_com,SMBlockingX);
SSVAL(result,smb_tid,fsp->conn->cnum);
SSVAL(result,smb_pid,0xFFFF);
@@ -284,13 +291,13 @@ static void wait_before_sending_break(void)
Ensure that we have a valid oplock.
****************************************************************************/
-static files_struct *initial_break_processing(struct file_id id, unsigned long file_id)
+static files_struct *initial_break_processing(SMB_DEV_T dev, SMB_INO_T inode, unsigned long file_id)
{
files_struct *fsp = NULL;
if( DEBUGLVL( 3 ) ) {
- dbgtext( "initial_break_processing: called for %s/%u\n",
- file_id_static_string(&id), (int)file_id);
+ dbgtext( "initial_break_processing: called for 0x%x/%.0f/%u\n",
+ (unsigned int)dev, (double)inode, (int)file_id);
dbgtext( "Current oplocks_open (exclusive = %d, levelII = %d)\n",
exclusive_oplocks_open, level_II_oplocks_open );
}
@@ -301,13 +308,14 @@ static files_struct *initial_break_processing(struct file_id id, unsigned long f
* we have an oplock on it.
*/
- fsp = file_find_dif(id, file_id);
+ fsp = file_find_dif(dev, inode, file_id);
if(fsp == NULL) {
/* The file could have been closed in the meantime - return success. */
if( DEBUGLVL( 3 ) ) {
dbgtext( "initial_break_processing: cannot find open file with " );
- dbgtext( "file_id %s gen_id = %lu", file_id_static_string(&id), file_id);
+ dbgtext( "dev = 0x%x, inode = %.0f file_id = %lu", (unsigned int)dev,
+ (double)inode, file_id);
dbgtext( "allowing break to succeed.\n" );
}
return NULL;
@@ -326,8 +334,8 @@ static files_struct *initial_break_processing(struct file_id id, unsigned long f
if(fsp->oplock_type == NO_OPLOCK) {
if( DEBUGLVL( 3 ) ) {
dbgtext( "initial_break_processing: file %s ", fsp->fsp_name );
- dbgtext( "(file_id = %s gen_id = %lu) has no oplock.\n",
- file_id_static_string(&id), fsp->fh->gen_id );
+ dbgtext( "(dev = %x, inode = %.0f, file_id = %lu) has no oplock.\n",
+ (unsigned int)dev, (double)inode, fsp->fh->file_id );
dbgtext( "Allowing break to succeed regardless.\n" );
}
return NULL;
@@ -381,34 +389,34 @@ static void add_oplock_timeout_handler(files_struct *fsp)
the client for LEVEL2.
*******************************************************************/
-static void process_oplock_async_level2_break_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void process_oplock_async_level2_break_message(int msg_type, struct process_id src,
+ void *buf, size_t len,
+ void *private_data)
{
struct share_mode_entry msg;
files_struct *fsp;
char *break_msg;
BOOL sign_state;
- if (data->data == NULL) {
+ if (buf == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
return;
}
- if (data->length != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
- DEBUG(0, ("Got invalid msg len %d\n", (int)data->length));
+ if (len != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
+ DEBUG(0, ("Got invalid msg len %d\n", (int)len));
return;
}
/* De-linearize incoming message. */
- message_to_share_mode_entry(&msg, (char *)data->data);
+ message_to_share_mode_entry(&msg, (char *)buf);
- DEBUG(10, ("Got oplock async level 2 break message from pid %d: %s/%lu\n",
- (int)procid_to_pid(&src), file_id_static_string(&msg.id), msg.share_file_id));
+ DEBUG(10, ("Got oplock async level 2 break message from pid %d: 0x%x/%.0f/%lu\n",
+ (int)procid_to_pid(&src), (unsigned int)msg.dev,
+ (double)msg.inode, msg.share_file_id));
- fsp = initial_break_processing(msg.id, msg.share_file_id);
+ fsp = initial_break_processing(msg.dev, msg.inode,
+ msg.share_file_id);
if (fsp == NULL) {
/* We hit a race here. Break messages are sent, and before we
@@ -468,11 +476,9 @@ static void process_oplock_async_level2_break_message(struct messaging_context *
This handles the generic oplock break message from another smbd.
*******************************************************************/
-static void process_oplock_break_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void process_oplock_break_message(int msg_type, struct process_id src,
+ void *buf, size_t len,
+ void *private_data)
{
struct share_mode_entry msg;
files_struct *fsp;
@@ -480,23 +486,25 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
BOOL break_to_level2 = False;
BOOL sign_state;
- if (data->data == NULL) {
+ if (buf == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
return;
}
- if (data->length != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
- DEBUG(0, ("Got invalid msg len %d\n", (int)data->length));
+ if (len != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
+ DEBUG(0, ("Got invalid msg len %d\n", (int)len));
return;
}
/* De-linearize incoming message. */
- message_to_share_mode_entry(&msg, (char *)data->data);
+ message_to_share_mode_entry(&msg, (char *)buf);
- DEBUG(10, ("Got oplock break message from pid %d: %s/%lu\n",
- (int)procid_to_pid(&src), file_id_static_string(&msg.id), msg.share_file_id));
+ DEBUG(10, ("Got oplock break message from pid %d: 0x%x/%.0f/%lu\n",
+ (int)procid_to_pid(&src), (unsigned int)msg.dev,
+ (double)msg.inode, msg.share_file_id));
- fsp = initial_break_processing(msg.id, msg.share_file_id);
+ fsp = initial_break_processing(msg.dev, msg.inode,
+ msg.share_file_id);
if (fsp == NULL) {
/* a We hit race here. Break messages are sent, and before we
@@ -505,9 +513,8 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
DEBUG(3, ("Did not find fsp\n"));
/* We just send the same message back. */
- messaging_send_buf(msg_ctx, src, MSG_SMB_BREAK_RESPONSE,
- (uint8 *)data->data,
- MSG_SMB_SHARE_MODE_ENTRY_SIZE);
+ message_send_pid(src, MSG_SMB_BREAK_RESPONSE,
+ buf, MSG_SMB_SHARE_MODE_ENTRY_SIZE, True);
return;
}
@@ -523,13 +530,12 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
if (EXCLUSIVE_OPLOCK_TYPE(msg.op_type) &&
!EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type)) {
- DEBUG(3, ("Already downgraded oplock on %s: %s\n",
- file_id_static_string(&fsp->file_id),
+ DEBUG(3, ("Already downgraded oplock on 0x%x/%.0f: %s\n",
+ (unsigned int)fsp->dev, (double)fsp->inode,
fsp->fsp_name));
/* We just send the same message back. */
- messaging_send_buf(msg_ctx, src, MSG_SMB_BREAK_RESPONSE,
- (uint8 *)data->data,
- MSG_SMB_SHARE_MODE_ENTRY_SIZE);
+ message_send_pid(src, MSG_SMB_BREAK_RESPONSE,
+ buf, MSG_SMB_SHARE_MODE_ENTRY_SIZE, True);
return;
}
@@ -579,37 +585,37 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
This handles the kernel oplock break message.
*******************************************************************/
-static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void process_kernel_oplock_break(int msg_type, struct process_id src,
+ void *buf, size_t len,
+ void *private_data)
{
- struct file_id id;
+ SMB_DEV_T dev;
+ SMB_INO_T inode;
unsigned long file_id;
files_struct *fsp;
char *break_msg;
BOOL sign_state;
- if (data->data == NULL) {
+ if (buf == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
return;
}
- if (data->length != MSG_SMB_KERNEL_BREAK_SIZE) {
- DEBUG(0, ("Got invalid msg len %d\n", (int)data->length));
+ if (len != MSG_SMB_KERNEL_BREAK_SIZE) {
+ DEBUG(0, ("Got invalid msg len %d\n", (int)len));
return;
}
/* Pull the data from the message. */
- pull_file_id_16((char *)data->data, &id);
- file_id = (unsigned long)IVAL(data->data, 16);
+ dev = DEV_T_VAL(buf, 0);
+ inode = INO_T_VAL(buf, 8);
+ file_id = (unsigned long)IVAL(buf, 16);
- DEBUG(10, ("Got kernel oplock break message from pid %d: %s/%u\n",
- (int)procid_to_pid(&src), file_id_static_string(&id),
+ DEBUG(10, ("Got kernel oplock break message from pid %d: 0x%x/%.0f/%u\n",
+ (int)procid_to_pid(&src), (unsigned int)dev, (double)inode,
(unsigned int)file_id));
- fsp = initial_break_processing(id, file_id);
+ fsp = initial_break_processing(dev, inode, file_id);
if (fsp == NULL) {
DEBUG(3, ("Got a kernel oplock break message for a file "
@@ -657,10 +663,8 @@ void reply_to_oplock_break_requests(files_struct *fsp)
share_mode_entry_to_message(msg, e);
- messaging_send_buf(smbd_messaging_context(), e->pid,
- MSG_SMB_BREAK_RESPONSE,
- (uint8 *)msg,
- MSG_SMB_SHARE_MODE_ENTRY_SIZE);
+ message_send_pid(e->pid, MSG_SMB_BREAK_RESPONSE,
+ msg, MSG_SMB_SHARE_MODE_ENTRY_SIZE, True);
}
SAFE_FREE(fsp->pending_break_messages);
@@ -673,59 +677,56 @@ void reply_to_oplock_break_requests(files_struct *fsp)
return;
}
-static void process_oplock_break_response(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void process_oplock_break_response(int msg_type, struct process_id src,
+ void *buf, size_t len,
+ void *private_data)
{
struct share_mode_entry msg;
- if (data->data == NULL) {
+ if (buf == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
return;
}
- if (data->length != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
- DEBUG(0, ("Got invalid msg len %u\n",
- (unsigned int)data->length));
+ if (len != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
+ DEBUG(0, ("Got invalid msg len %u\n", (unsigned int)len));
return;
}
/* De-linearize incoming message. */
- message_to_share_mode_entry(&msg, (char *)data->data);
+ message_to_share_mode_entry(&msg, (char *)buf);
- DEBUG(10, ("Got oplock break response from pid %d: %s/%lu mid %u\n",
- (int)procid_to_pid(&src), file_id_static_string(&msg.id), msg.share_file_id,
+ DEBUG(10, ("Got oplock break response from pid %d: 0x%x/%.0f/%lu mid %u\n",
+ (int)procid_to_pid(&src), (unsigned int)msg.dev,
+ (double)msg.inode, msg.share_file_id,
(unsigned int)msg.op_mid));
/* Here's the hack from open.c, store the mid in the 'port' field */
schedule_deferred_open_smb_message(msg.op_mid);
}
-static void process_open_retry_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void process_open_retry_message(int msg_type, struct process_id src,
+ void *buf, size_t len,
+ void *private_data)
{
struct share_mode_entry msg;
- if (data->data == NULL) {
+ if (buf == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
return;
}
- if (data->length != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
- DEBUG(0, ("Got invalid msg len %d\n", (int)data->length));
+ if (len != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
+ DEBUG(0, ("Got invalid msg len %d\n", (int)len));
return;
}
/* De-linearize incoming message. */
- message_to_share_mode_entry(&msg, (char *)data->data);
+ message_to_share_mode_entry(&msg, (char *)buf);
- DEBUG(10, ("Got open retry msg from pid %d: %s mid %u\n",
- (int)procid_to_pid(&src), file_id_static_string(&msg.id),
+ DEBUG(10, ("Got open retry msg from pid %d: 0x%x/%.0f/%lu mid %u\n",
+ (int)procid_to_pid(&src), (unsigned int)msg.dev,
+ (double)msg.inode, msg.share_file_id,
(unsigned int)msg.op_mid));
schedule_deferred_open_smb_message(msg.op_mid);
@@ -753,7 +754,7 @@ void release_level_2_oplocks_on_change(files_struct *fsp)
if (!LEVEL_II_OPLOCK_TYPE(fsp->oplock_type))
return;
- lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
if (lck == NULL) {
DEBUG(0,("release_level_2_oplocks_on_change: failed to lock "
"share mode entry for file %s.\n", fsp->fsp_name ));
@@ -801,10 +802,8 @@ void release_level_2_oplocks_on_change(files_struct *fsp)
share_mode_entry_to_message(msg, share_entry);
- messaging_send_buf(smbd_messaging_context(), share_entry->pid,
- MSG_SMB_ASYNC_LEVEL2_BREAK,
- (uint8 *)msg,
- MSG_SMB_SHARE_MODE_ENTRY_SIZE);
+ message_send_pid(share_entry->pid, MSG_SMB_ASYNC_LEVEL2_BREAK,
+ msg, MSG_SMB_SHARE_MODE_ENTRY_SIZE, True);
}
/* We let the message receivers handle removing the oplock state
@@ -827,13 +826,11 @@ void share_mode_entry_to_message(char *msg, struct share_mode_entry *e)
SIVAL(msg,16,e->private_options);
SIVAL(msg,20,(uint32)e->time.tv_sec);
SIVAL(msg,24,(uint32)e->time.tv_usec);
- push_file_id_16(msg+28, &e->id);
+ SDEV_T_VAL(msg,28,e->dev);
+ SINO_T_VAL(msg,36,e->inode);
SIVAL(msg,44,e->share_file_id);
SIVAL(msg,48,e->uid);
SSVAL(msg,52,e->flags);
-#ifdef CLUSTER_SUPPORT
- SIVAL(msg,54,e->pid.vnn);
-#endif
}
/****************************************************************************
@@ -850,33 +847,36 @@ void message_to_share_mode_entry(struct share_mode_entry *e, char *msg)
e->private_options = IVAL(msg,16);
e->time.tv_sec = (time_t)IVAL(msg,20);
e->time.tv_usec = (int)IVAL(msg,24);
- pull_file_id_16(msg+28, &e->id);
+ e->dev = DEV_T_VAL(msg,28);
+ e->inode = INO_T_VAL(msg,36);
e->share_file_id = (unsigned long)IVAL(msg,44);
e->uid = (uint32)IVAL(msg,48);
e->flags = (uint16)SVAL(msg,52);
-#ifdef CLUSTER_SUPPORT
- e->pid.vnn = IVAL(msg,54);
-#endif
}
/****************************************************************************
Setup oplocks for this process.
****************************************************************************/
-BOOL init_oplocks(struct messaging_context *msg_ctx)
+BOOL init_oplocks(void)
{
DEBUG(3,("init_oplocks: initializing messages.\n"));
- messaging_register(msg_ctx, NULL, MSG_SMB_BREAK_REQUEST,
- process_oplock_break_message);
- messaging_register(msg_ctx, NULL, MSG_SMB_ASYNC_LEVEL2_BREAK,
- process_oplock_async_level2_break_message);
- messaging_register(msg_ctx, NULL, MSG_SMB_BREAK_RESPONSE,
- process_oplock_break_response);
- messaging_register(msg_ctx, NULL, MSG_SMB_KERNEL_BREAK,
- process_kernel_oplock_break);
- messaging_register(msg_ctx, NULL, MSG_SMB_OPEN_RETRY,
- process_open_retry_message);
+ message_register(MSG_SMB_BREAK_REQUEST,
+ process_oplock_break_message,
+ NULL);
+ message_register(MSG_SMB_ASYNC_LEVEL2_BREAK,
+ process_oplock_async_level2_break_message,
+ NULL);
+ message_register(MSG_SMB_BREAK_RESPONSE,
+ process_oplock_break_response,
+ NULL);
+ message_register(MSG_SMB_KERNEL_BREAK,
+ process_kernel_oplock_break,
+ NULL);
+ message_register(MSG_SMB_OPEN_RETRY,
+ process_open_retry_message,
+ NULL);
if (lp_kernel_oplocks()) {
#if HAVE_KERNEL_OPLOCKS_IRIX
diff --git a/source/smbd/oplock_irix.c b/source/smbd/oplock_irix.c
index eb0164ae50e..c1159cd73b4 100644
--- a/source/smbd/oplock_irix.c
+++ b/source/smbd/oplock_irix.c
@@ -140,9 +140,8 @@ static files_struct *irix_oplock_receive_message(fd_set *fds)
* is the first fsp open with this dev,ino pair.
*/
- if ((fsp = file_find_di_first(
- file_id_create((SMB_DEV_T)os.os_dev,
- (SMB_INO_T)os.os_ino))) == NULL) {
+ if ((fsp = file_find_di_first((SMB_DEV_T)os.os_dev,
+ (SMB_INO_T)os.os_ino)) == NULL) {
DEBUG(0,("irix_oplock_receive_message: unable to find open "
"file with dev = %x, inode = %.0f\n",
(unsigned int)os.os_dev, (double)os.os_ino ));
@@ -150,9 +149,9 @@ static files_struct *irix_oplock_receive_message(fd_set *fds)
}
DEBUG(5,("irix_oplock_receive_message: kernel oplock break request "
- "received for file_id %s gen_id = %ul",
- file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id ));
+ "received for dev = %x, inode = %.0f\n, file_id = %ul",
+ (unsigned int)fsp->dev, (double)fsp->inode,
+ fsp->fh->file_id ));
return fsp;
}
@@ -166,27 +165,27 @@ static BOOL irix_set_kernel_oplock(files_struct *fsp, int oplock_type)
if (sys_fcntl_long(fsp->fh->fd, F_OPLKREG, oplock_pipe_write) == -1) {
if(errno != EAGAIN) {
DEBUG(0,("irix_set_kernel_oplock: Unable to get "
- "kernel oplock on file %s, file_id %s "
- "gen_id = %ul. Error was %s\n",
- fsp->fsp_name, file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id,
+ "kernel oplock on file %s, dev = %x, inode "
+ "= %.0f, file_id = %ul. Error was %s\n",
+ fsp->fsp_name, (unsigned int)fsp->dev,
+ (double)fsp->inode, fsp->fh->file_id,
strerror(errno) ));
} else {
DEBUG(5,("irix_set_kernel_oplock: Refused oplock on "
- "file %s, fd = %d, file_id = 5s, "
- "gen_id = %ul. Another process had the file "
+ "file %s, fd = %d, dev = %x, inode = %.0f, "
+ "file_id = %ul. Another process had the file "
"open.\n",
fsp->fsp_name, fsp->fh->fd,
- file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id ));
+ (unsigned int)fsp->dev, (double)fsp->inode,
+ fsp->fh->file_id ));
}
return False;
}
- DEBUG(10,("irix_set_kernel_oplock: got kernel oplock on file %s, file_id = %s "
- "gen_id = %ul\n",
- fsp->fsp_name, file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id));
+ DEBUG(10,("irix_set_kernel_oplock: got kernel oplock on file %s, dev "
+ "= %x, inode = %.0f, file_id = %ul\n",
+ fsp->fsp_name, (unsigned int)fsp->dev, (double)fsp->inode,
+ fsp->fh->file_id));
return True;
}
@@ -203,10 +202,10 @@ static void irix_release_kernel_oplock(files_struct *fsp)
* oplock state of this file.
*/
int state = sys_fcntl_long(fsp->fh->fd, F_OPLKACK, -1);
- dbgtext("irix_release_kernel_oplock: file %s, file_id = %s"
- "gen_id = %ul, has kernel oplock state "
- "of %x.\n", fsp->fsp_name, file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id, state );
+ dbgtext("irix_release_kernel_oplock: file %s, dev = %x, "
+ "inode = %.0f file_id = %ul, has kernel oplock state "
+ "of %x.\n", fsp->fsp_name, (unsigned int)fsp->dev,
+ (double)fsp->inode, fsp->fh->file_id, state );
}
/*
@@ -216,10 +215,10 @@ static void irix_release_kernel_oplock(files_struct *fsp)
if( DEBUGLVL( 0 )) {
dbgtext("irix_release_kernel_oplock: Error when "
"removing kernel oplock on file " );
- dbgtext("%s, file_id = %s gen_id = %ul. "
+ dbgtext("%s, dev = %x, inode = %.0f, file_id = %ul. "
"Error was %s\n",
- fsp->fsp_name, file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id,
+ fsp->fsp_name, (unsigned int)fsp->dev,
+ (double)fsp->inode, fsp->fh->file_id,
strerror(errno) );
}
}
diff --git a/source/smbd/oplock_linux.c b/source/smbd/oplock_linux.c
index e12a9d66ca9..14db98cde6c 100644
--- a/source/smbd/oplock_linux.c
+++ b/source/smbd/oplock_linux.c
@@ -167,17 +167,17 @@ static BOOL linux_set_kernel_oplock(files_struct *fsp, int oplock_type)
{
if ( SMB_VFS_LINUX_SETLEASE(fsp,fsp->fh->fd, F_WRLCK) == -1) {
DEBUG(3,("linux_set_kernel_oplock: Refused oplock on file %s, "
- "fd = %d, file_id = %s. (%s)\n",
+ "fd = %d, dev = %x, inode = %.0f. (%s)\n",
fsp->fsp_name, fsp->fh->fd,
- file_id_static_string(&fsp->file_id),
+ (unsigned int)fsp->dev, (double)fsp->inode,
strerror(errno)));
return False;
}
DEBUG(3,("linux_set_kernel_oplock: got kernel oplock on file %s, "
- "file_id = %s gen_id = %lu\n",
- fsp->fsp_name, file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id));
+ "dev = %x, inode = %.0f, file_id = %lu\n",
+ fsp->fsp_name, (unsigned int)fsp->dev, (double)fsp->inode,
+ fsp->fh->file_id));
return True;
}
@@ -194,10 +194,10 @@ static void linux_release_kernel_oplock(files_struct *fsp)
* oplock state of this file.
*/
int state = fcntl(fsp->fh->fd, F_GETLEASE, 0);
- dbgtext("linux_release_kernel_oplock: file %s, file_id = %s "
- "gen_id = %lu has kernel oplock state "
- "of %x.\n", fsp->fsp_name, file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id, state );
+ dbgtext("linux_release_kernel_oplock: file %s, dev = %x, "
+ "inode = %.0f file_id = %lu has kernel oplock state "
+ "of %x.\n", fsp->fsp_name, (unsigned int)fsp->dev,
+ (double)fsp->inode, fsp->fh->file_id, state );
}
/*
@@ -207,10 +207,10 @@ static void linux_release_kernel_oplock(files_struct *fsp)
if (DEBUGLVL(0)) {
dbgtext("linux_release_kernel_oplock: Error when "
"removing kernel oplock on file " );
- dbgtext("%s, file_id = %s, gen_id = %lu. "
+ dbgtext("%s, dev = %x, inode = %.0f, file_id = %lu. "
"Error was %s\n", fsp->fsp_name,
- file_id_static_string(&fsp->file_id),
- fsp->fh->gen_id, strerror(errno) );
+ (unsigned int)fsp->dev, (double)fsp->inode,
+ fsp->fh->file_id, strerror(errno) );
}
}
}
diff --git a/source/smbd/password.c b/source/smbd/password.c
index 00f687dc274..bf4e9258ff2 100644
--- a/source/smbd/password.c
+++ b/source/smbd/password.c
@@ -92,7 +92,14 @@ void invalidate_vuid(uint16 vuid)
if (vuser == NULL)
return;
+ SAFE_FREE(vuser->homedir);
+ SAFE_FREE(vuser->unix_homedir);
+ SAFE_FREE(vuser->logon_script);
+
session_yield(vuser);
+ SAFE_FREE(vuser->session_keystr);
+
+ TALLOC_FREE(vuser->server_info);
data_blob_free(&vuser->session_key);
@@ -102,7 +109,10 @@ void invalidate_vuid(uint16 vuid)
from the vuid 'owner' of connections */
conn_clear_vuid_cache(vuid);
- TALLOC_FREE(vuser);
+ SAFE_FREE(vuser->groups);
+ TALLOC_FREE(vuser->nt_user_token);
+
+ SAFE_FREE(vuser);
num_validated_vuids--;
}
@@ -143,11 +153,11 @@ int register_vuid(auth_serversupplied_info *server_info,
DATA_BLOB session_key, DATA_BLOB response_blob,
const char *smb_name)
{
- user_struct *vuser;
+ user_struct *vuser = NULL;
/* Paranoia check. */
if(lp_security() == SEC_SHARE) {
- smb_panic("Tried to register uid in security=share");
+ smb_panic("Tried to register uid in security=share\n");
}
/* Limit allowed vuids to 16bits - VUID_OFFSET. */
@@ -156,12 +166,14 @@ int register_vuid(auth_serversupplied_info *server_info,
return UID_FIELD_INVALID;
}
- if((vuser = TALLOC_ZERO_P(NULL, user_struct)) == NULL) {
- DEBUG(0,("Failed to talloc users struct!\n"));
+ if((vuser = SMB_MALLOC_P(user_struct)) == NULL) {
+ DEBUG(0,("Failed to malloc users struct!\n"));
data_blob_free(&session_key);
return UID_FIELD_INVALID;
}
+ ZERO_STRUCTP(vuser);
+
/* Allocate a free vuid. Yes this is a linear search... :-) */
while( get_valid_user_struct(next_vuid) != NULL ) {
next_vuid++;
@@ -191,11 +203,6 @@ int register_vuid(auth_serversupplied_info *server_info,
return vuser->vuid;
}
- /* use this to keep tabs on all our info from the authentication */
- vuser->server_info = server_info;
- /* Ensure that the server_info will dissapear with the vuser it is now attached to */
- talloc_steal(vuser, vuser->server_info);
-
/* the next functions should be done by a SID mapping system (SMS) as
* the new real sam db won't have reference to unix uids or gids
*/
@@ -205,13 +212,14 @@ int register_vuid(auth_serversupplied_info *server_info,
vuser->n_groups = server_info->n_groups;
if (vuser->n_groups) {
- if (!(vuser->groups = (gid_t *)talloc_memdup(vuser, server_info->groups,
- sizeof(gid_t) *
- vuser->n_groups))) {
- DEBUG(0,("register_vuid: failed to talloc_memdup "
+ if (!(vuser->groups = (gid_t *)memdup(server_info->groups,
+ sizeof(gid_t) *
+ vuser->n_groups))) {
+ DEBUG(0,("register_vuid: failed to memdup "
"vuser->groups\n"));
data_blob_free(&session_key);
- TALLOC_FREE(vuser);
+ free(vuser);
+ TALLOC_FREE(server_info);
return UID_FIELD_INVALID;
}
}
@@ -239,26 +247,24 @@ int register_vuid(auth_serversupplied_info *server_info,
const char *unix_homedir =
pdb_get_unix_homedir(server_info->sam_account);
if (unix_homedir) {
- vuser->unix_homedir = unix_homedir;
+ vuser->unix_homedir =
+ smb_xstrdup(unix_homedir);
}
} else {
struct passwd *passwd =
- getpwnam_alloc(vuser, vuser->user.unix_name);
+ getpwnam_alloc(NULL, vuser->user.unix_name);
if (passwd) {
- vuser->unix_homedir = passwd->pw_dir;
- /* Ensure that the unix_homedir now
- * belongs to vuser, so it goes away
- * with it, not with passwd below: */
- talloc_steal(vuser, vuser->unix_homedir);
+ vuser->unix_homedir =
+ smb_xstrdup(passwd->pw_dir);
TALLOC_FREE(passwd);
}
}
if (homedir) {
- vuser->homedir = homedir;
+ vuser->homedir = smb_xstrdup(homedir);
}
if (logon_script) {
- vuser->logon_script = logon_script;
+ vuser->logon_script = smb_xstrdup(logon_script);
}
}
@@ -274,15 +280,23 @@ int register_vuid(auth_serversupplied_info *server_info,
vuser->user.full_name));
if (server_info->ptok) {
- vuser->nt_user_token = dup_nt_token(vuser, server_info->ptok);
+ vuser->nt_user_token = dup_nt_token(NULL, server_info->ptok);
} else {
DEBUG(1, ("server_info does not contain a user_token - "
"cannot continue\n"));
- TALLOC_FREE(vuser);
+ TALLOC_FREE(server_info);
data_blob_free(&session_key);
+ SAFE_FREE(vuser->homedir);
+ SAFE_FREE(vuser->unix_homedir);
+ SAFE_FREE(vuser->logon_script);
+
+ SAFE_FREE(vuser);
return UID_FIELD_INVALID;
}
+ /* use this to keep tabs on all our info from the authentication */
+ vuser->server_info = server_info;
+
DEBUG(3,("UNIX uid %d is UNIX user %s, and will be vuid %u\n",
(int)vuser->uid,vuser->user.unix_name, vuser->vuid));
diff --git a/source/smbd/pipes.c b/source/smbd/pipes.c
index 1da2f0c22f4..58756a0b5a6 100644
--- a/source/smbd/pipes.c
+++ b/source/smbd/pipes.c
@@ -37,7 +37,7 @@
#define PIPEDB_KEY_FORMAT "PIPE/%s/%u/%d"
struct pipe_dbrec {
- struct server_id pid;
+ struct process_id pid;
int pnum;
uid_t uid;
@@ -65,8 +65,7 @@ int reply_open_pipe_and_X(connection_struct *conn,
int i;
/* XXXX we need to handle passed times, sattr and flags */
- srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), pipe_name,
- smb_buf(inbuf), sizeof(pipe_name), STR_TERMINATE);
+ srvstr_pull_buf(inbuf, pipe_name, smb_buf(inbuf), sizeof(pipe_name), STR_TERMINATE);
/* If the name doesn't start \PIPE\ then this is directed */
/* at a mailslot or something we really, really don't understand, */
@@ -109,7 +108,7 @@ int reply_open_pipe_and_X(connection_struct *conn,
}
/* Prepare the reply */
- set_message(inbuf,outbuf,15,0,True);
+ set_message(outbuf,15,0,True);
/* Mark the opened file as an existing named pipe in message mode. */
SSVAL(outbuf,smb_vwv9,2);
@@ -163,7 +162,7 @@ int reply_pipe_write(char *inbuf,char *outbuf,int length,int dum_bufsize)
return (UNIXERROR(ERRDOS,ERRnoaccess));
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,nwritten);
@@ -225,7 +224,7 @@ int reply_pipe_write_and_X(char *inbuf,char *outbuf,int length,int bufsize)
return (UNIXERROR(ERRDOS,ERRnoaccess));
}
- set_message(inbuf,outbuf,6,0,True);
+ set_message(outbuf,6,0,True);
nwritten = (pipe_start_message_raw ? nwritten + 2 : nwritten);
SSVAL(outbuf,smb_vwv2,nwritten);
@@ -261,7 +260,7 @@ int reply_pipe_read_and_X(char *inbuf,char *outbuf,int length,int bufsize)
return(ERROR_DOS(ERRDOS,ERRbadfid));
}
- set_message(inbuf,outbuf,12,0,True);
+ set_message(outbuf,12,0,True);
data = smb_buf(outbuf);
nread = read_from_pipe(p, data, smb_maxcnt, &unused);
@@ -278,7 +277,7 @@ int reply_pipe_read_and_X(char *inbuf,char *outbuf,int length,int bufsize)
p->pnum, smb_mincnt, smb_maxcnt, nread));
/* Ensure we set up the message length to include the data length read. */
- set_message_bcc(inbuf,outbuf,nread);
+ set_message_bcc(outbuf,nread);
return chain_reply(inbuf,outbuf,length,bufsize);
}
@@ -289,7 +288,7 @@ int reply_pipe_read_and_X(char *inbuf,char *outbuf,int length,int bufsize)
int reply_pipe_close(connection_struct *conn, char *inbuf,char *outbuf)
{
smb_np_struct *p = get_rpc_pipe_p(inbuf,smb_vwv0);
- int outsize = set_message(inbuf,outbuf,0,0,True);
+ int outsize = set_message(outbuf,0,0,True);
if (!p) {
return(ERROR_DOS(ERRDOS,ERRbadfid));
@@ -301,7 +300,5 @@ int reply_pipe_close(connection_struct *conn, char *inbuf,char *outbuf)
return ERROR_DOS(ERRDOS,ERRbadfid);
}
- /* TODO: REMOVE PIPE FROM DB */
-
return(outsize);
}
diff --git a/source/smbd/posix_acls.c b/source/smbd/posix_acls.c
index 947c30fb4a3..ade64c1c6cc 100644
--- a/source/smbd/posix_acls.c
+++ b/source/smbd/posix_acls.c
@@ -926,7 +926,7 @@ static mode_t map_nt_perms( uint32 *mask, int type)
Unpack a SEC_DESC into a UNIX owner and group.
****************************************************************************/
-NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_info_sent, SEC_DESC *psd)
+BOOL unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_info_sent, SEC_DESC *psd)
{
DOM_SID owner_sid;
DOM_SID grp_sid;
@@ -936,7 +936,7 @@ NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_i
if(security_info_sent == 0) {
DEBUG(0,("unpack_nt_owners: no security info sent !\n"));
- return NT_STATUS_OK;
+ return True;
}
/*
@@ -964,11 +964,9 @@ NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_i
DEBUG(3,("unpack_nt_owners: unable to validate"
" owner sid for %s\n",
sid_string_static(&owner_sid)));
- return NT_STATUS_INVALID_OWNER;
+ return False;
}
}
- DEBUG(3,("unpack_nt_owners: owner sid mapped to uid %u\n",
- (unsigned int)*puser ));
}
/*
@@ -986,16 +984,14 @@ NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_i
} else {
DEBUG(3,("unpack_nt_owners: unable to validate"
" group sid.\n"));
- return NT_STATUS_INVALID_OWNER;
+ return False;
}
}
- DEBUG(3,("unpack_nt_owners: group sid mapped to gid %u\n",
- (unsigned int)*pgrp));
- }
+ }
DEBUG(5,("unpack_nt_owners: owner_sids validated.\n"));
- return NT_STATUS_OK;
+ return True;
}
/****************************************************************************
@@ -3076,7 +3072,6 @@ int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid)
/* Case (4). */
if (!lp_dos_filemode(SNUM(conn))) {
- errno = EPERM;
return -1;
}
@@ -3112,7 +3107,7 @@ static NTSTATUS append_ugw_ace(files_struct *fsp,
{
mode_t perms;
SEC_ACCESS acc;
- int acl_type;
+ int nt_acl_type; /* Tru64 has "acl_type" as a macro.. */
DOM_SID trustee;
switch (ugw) {
@@ -3141,13 +3136,13 @@ static NTSTATUS append_ugw_ace(files_struct *fsp,
return NT_STATUS_INVALID_PARAMETER;
}
acc = map_canon_ace_perms(SNUM(fsp->conn),
- &acl_type,
+ &nt_acl_type,
perms,
fsp->is_directory);
init_sec_ace(se,
&trustee,
- acl_type,
+ nt_acl_type,
acc,
0);
return NT_STATUS_OK;
@@ -3195,14 +3190,13 @@ static NTSTATUS append_parent_acl(files_struct *fsp,
parent_name);
status = open_directory(fsp->conn,
- NULL,
parent_name,
&sbuf,
FILE_READ_ATTRIBUTES, /* Just a stat open */
FILE_SHARE_NONE, /* Ignored for stat opens */
FILE_OPEN,
0,
- INTERNAL_OPEN_ONLY,
+ 0,
&info,
&parent_fsp);
@@ -3303,7 +3297,7 @@ static NTSTATUS append_parent_acl(files_struct *fsp,
This should be the only external function needed for the UNIX style set ACL.
****************************************************************************/
-NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
+BOOL set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
{
connection_struct *conn = fsp->conn;
uid_t user = (uid_t)-1;
@@ -3315,13 +3309,15 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
canon_ace *dir_ace_list = NULL;
BOOL acl_perms = False;
mode_t orig_mode = (mode_t)0;
- NTSTATUS status;
+ uid_t orig_uid;
+ gid_t orig_gid;
+ BOOL need_chown = False;
DEBUG(10,("set_nt_acl: called for file %s\n", fsp->fsp_name ));
if (!CAN_WRITE(conn)) {
DEBUG(10,("set acl rejected on read-only share\n"));
- return NT_STATUS_MEDIA_WRITE_PROTECTED;
+ return False;
}
/*
@@ -3330,29 +3326,40 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
if(fsp->is_directory || fsp->fh->fd == -1) {
if(SMB_VFS_STAT(fsp->conn,fsp->fsp_name, &sbuf) != 0)
- return map_nt_error_from_unix(errno);
+ return False;
} else {
if(SMB_VFS_FSTAT(fsp,fsp->fh->fd,&sbuf) != 0)
- return map_nt_error_from_unix(errno);
+ return False;
}
/* Save the original elements we check against. */
orig_mode = sbuf.st_mode;
+ orig_uid = sbuf.st_uid;
+ orig_gid = sbuf.st_gid;
/*
* Unpack the user/group/world id's.
*/
- status = unpack_nt_owners( SNUM(conn), &user, &grp, security_info_sent, psd);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ if (!unpack_nt_owners( SNUM(conn), &user, &grp, security_info_sent, psd)) {
+ return False;
}
/*
* Do we need to chown ?
*/
- if (((user != (uid_t)-1) && (sbuf.st_uid != user)) || (( grp != (gid_t)-1) && (sbuf.st_gid != grp))) {
+ if (((user != (uid_t)-1) && (orig_uid != user)) || (( grp != (gid_t)-1) && (orig_gid != grp))) {
+ need_chown = True;
+ }
+
+ /*
+ * Chown before setting ACL only if we don't change the user, or
+ * if we change to the current user, but not if we want to give away
+ * the file.
+ */
+
+ if (need_chown && (user == (uid_t)-1 || user == current_user.ut.uid)) {
DEBUG(3,("set_nt_acl: chown %s. uid = %u, gid = %u.\n",
fsp->fsp_name, (unsigned int)user, (unsigned int)grp ));
@@ -3360,10 +3367,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
if(try_chown( fsp->conn, fsp->fsp_name, user, grp) == -1) {
DEBUG(3,("set_nt_acl: chown %s, %u, %u failed. Error = %s.\n",
fsp->fsp_name, (unsigned int)user, (unsigned int)grp, strerror(errno) ));
- if (errno == EPERM) {
- return NT_STATUS_INVALID_OWNER;
- }
- return map_nt_error_from_unix(errno);
+ return False;
}
/*
@@ -3373,7 +3377,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
if(fsp->is_directory) {
if(SMB_VFS_STAT(fsp->conn, fsp->fsp_name, &sbuf) != 0) {
- return map_nt_error_from_unix(errno);
+ return False;
}
} else {
@@ -3385,11 +3389,16 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
ret = SMB_VFS_FSTAT(fsp,fsp->fh->fd,&sbuf);
if(ret != 0)
- return map_nt_error_from_unix(errno);
+ return False;
}
/* Save the original elements we check against. */
orig_mode = sbuf.st_mode;
+ orig_uid = sbuf.st_uid;
+ orig_gid = sbuf.st_gid;
+
+ /* We did it, don't try again */
+ need_chown = False;
}
create_file_sids(&sbuf, &file_owner_sid, &file_grp_sid);
@@ -3400,9 +3409,9 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
SE_DESC_DACL_AUTO_INHERIT_REQ))==
(SE_DESC_DACL_AUTO_INHERITED|
SE_DESC_DACL_AUTO_INHERIT_REQ) ) {
- status = append_parent_acl(fsp, &sbuf, psd, &psd);
+ NTSTATUS status = append_parent_acl(fsp, &sbuf, psd, &psd);
if (!NT_STATUS_IS_OK(status)) {
- return status;
+ return False;
}
}
@@ -3416,7 +3425,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
DEBUG(3,("set_nt_acl: cannot set permissions\n"));
free_canon_ace_list(file_ace_list);
free_canon_ace_list(dir_ace_list);
- return NT_STATUS_ACCESS_DENIED;
+ return False;
}
/*
@@ -3439,7 +3448,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
DEBUG(3,("set_nt_acl: failed to set file acl on file %s (%s).\n", fsp->fsp_name, strerror(errno) ));
free_canon_ace_list(file_ace_list);
free_canon_ace_list(dir_ace_list);
- return map_nt_error_from_unix(errno);
+ return False;
}
}
@@ -3449,7 +3458,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
DEBUG(3,("set_nt_acl: failed to set default acl on directory %s (%s).\n", fsp->fsp_name, strerror(errno) ));
free_canon_ace_list(file_ace_list);
free_canon_ace_list(dir_ace_list);
- return map_nt_error_from_unix(errno);
+ return False;
}
} else {
@@ -3474,7 +3483,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
DEBUG(3,("set_nt_acl: sys_acl_delete_def_file failed (%s)\n", strerror(errno)));
free_canon_ace_list(file_ace_list);
free_canon_ace_list(dir_ace_list);
- return map_nt_error_from_unix(errno);
+ return False;
}
}
}
@@ -3497,7 +3506,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
free_canon_ace_list(dir_ace_list);
DEBUG(3,("set_nt_acl: failed to convert file acl to posix permissions for file %s.\n",
fsp->fsp_name ));
- return NT_STATUS_ACCESS_DENIED;
+ return False;
}
if (orig_mode != posix_perms) {
@@ -3522,7 +3531,7 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
fsp->fsp_name, (unsigned int)posix_perms, strerror(errno) ));
free_canon_ace_list(file_ace_list);
free_canon_ace_list(dir_ace_list);
- return map_nt_error_from_unix(errno);
+ return False;
}
}
}
@@ -3533,7 +3542,20 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
free_canon_ace_list(dir_ace_list);
}
- return NT_STATUS_OK;
+ /* Any chown pending? */
+ if (need_chown) {
+
+ DEBUG(3,("set_nt_acl: chown %s. uid = %u, gid = %u.\n",
+ fsp->fsp_name, (unsigned int)user, (unsigned int)grp ));
+
+ if(try_chown( fsp->conn, fsp->fsp_name, user, grp) == -1) {
+ DEBUG(3,("set_nt_acl: chown %s, %u, %u failed. Error = %s.\n",
+ fsp->fsp_name, (unsigned int)user, (unsigned int)grp, strerror(errno) ));
+ return False;
+ }
+ }
+
+ return True;
}
/****************************************************************************
diff --git a/source/smbd/process.c b/source/smbd/process.c
index 1cb2c27fd39..8dec71958ea 100644
--- a/source/smbd/process.c
+++ b/source/smbd/process.c
@@ -22,6 +22,7 @@
#include "includes.h"
uint16 global_smbpid;
+extern int keepalive;
extern struct auth_context *negprot_global_auth_context;
extern int smb_echo_count;
@@ -48,16 +49,13 @@ SIG_ATOMIC_T got_sig_term = 0;
extern BOOL global_machine_password_needs_changing;
extern int max_send;
-/*
- * Initialize a struct smb_request from an inbuf
- */
+/****************************************************************************
+ Function to return the current request mid from Inbuffer.
+****************************************************************************/
-void init_smb_request(struct smb_request *req, const uint8 *inbuf)
+uint16 get_current_mid(void)
{
- req->flags2 = SVAL(inbuf, smb_flg2);
- req->smbpid = SVAL(inbuf, smb_pid);
- req->mid = SVAL(inbuf, smb_mid);
- req->vuid = SVAL(inbuf, smb_uid);
+ return SVAL(InBuffer,smb_mid);
}
/****************************************************************************
@@ -68,8 +66,8 @@ void init_smb_request(struct smb_request *req, const uint8 *inbuf)
static struct pending_message_list *deferred_open_queue;
/****************************************************************************
- Function to push a message onto the tail of a linked list of smb messages
- ready for processing.
+ Function to push a message onto the tail of a linked list of smb messages ready
+ for processing.
****************************************************************************/
static BOOL push_queued_message(char *buf, int msg_len,
@@ -124,7 +122,7 @@ void remove_deferred_open_smb_message(uint16 mid)
for (pml = deferred_open_queue; pml; pml = pml->next) {
if (mid == SVAL(pml->buf.data,smb_mid)) {
- DEBUG(10,("remove_deferred_open_smb_message: "
+ DEBUG(10,("remove_sharing_violation_open_smb_message: "
"deleting mid %u len %u\n",
(unsigned int)mid,
(unsigned int)pml->buf.length ));
@@ -147,11 +145,11 @@ void schedule_deferred_open_smb_message(uint16 mid)
for (pml = deferred_open_queue; pml; pml = pml->next) {
uint16 msg_mid = SVAL(pml->buf.data,smb_mid);
- DEBUG(10, ("schedule_deferred_open_smb_message: [%d] "
- "msg_mid = %u\n", i++, (unsigned int)msg_mid ));
+ DEBUG(10,("schedule_deferred_open_smb_message: [%d] msg_mid = %u\n", i++,
+ (unsigned int)msg_mid ));
if (mid == msg_mid) {
- DEBUG(10, ("schedule_deferred_open_smb_message: "
- "scheduling mid %u\n", mid));
+ DEBUG(10,("schedule_deferred_open_smb_message: scheduling mid %u\n",
+ mid ));
pml->end_time.tv_sec = 0;
pml->end_time.tv_usec = 0;
DLIST_PROMOTE(deferred_open_queue, pml);
@@ -159,8 +157,8 @@ void schedule_deferred_open_smb_message(uint16 mid)
}
}
- DEBUG(10, ("schedule_deferred_open_smb_message: failed to find "
- "message mid %u\n", mid ));
+ DEBUG(10,("schedule_deferred_open_smb_message: failed to find message mid %u\n",
+ mid ));
}
/****************************************************************************
@@ -223,7 +221,6 @@ BOOL push_deferred_smb_message(uint16 mid,
struct idle_event {
struct timed_event *te;
struct timeval interval;
- char *name;
BOOL (*handler)(const struct timeval *now, void *private_data);
void *private_data;
};
@@ -244,19 +241,17 @@ static void idle_event_handler(struct event_context *ctx,
return;
}
- event->te = event_add_timed(ctx, event,
+ event->te = event_add_timed(smbd_event_context(), event,
timeval_sum(now, &event->interval),
- event->name,
+ "idle_event_handler",
idle_event_handler, event);
/* We can't do much but fail here. */
SMB_ASSERT(event->te != NULL);
}
-struct idle_event *event_add_idle(struct event_context *event_ctx,
- TALLOC_CTX *mem_ctx,
+struct idle_event *add_idle_event(TALLOC_CTX *mem_ctx,
struct timeval interval,
- const char *name,
BOOL (*handler)(const struct timeval *now,
void *private_data),
void *private_data)
@@ -274,15 +269,9 @@ struct idle_event *event_add_idle(struct event_context *event_ctx,
result->handler = handler;
result->private_data = private_data;
- if (!(result->name = talloc_asprintf(result, "idle_evt(%s)", name))) {
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(result);
- return NULL;
- }
-
- result->te = event_add_timed(event_ctx, result,
+ result->te = event_add_timed(smbd_event_context(), result,
timeval_sum(&now, &interval),
- result->name,
+ "idle_event_handler",
idle_event_handler, result);
if (result->te == NULL) {
DEBUG(0, ("event_add_timed failed\n"));
@@ -304,7 +293,7 @@ static void async_processing(fd_set *pfds)
process_aio_queue();
- process_kernel_oplocks(smbd_messaging_context(), pfds);
+ process_kernel_oplocks(pfds);
/* Do the aio check again after receive_local_message as it does a
select and may have eaten our signal. */
@@ -383,7 +372,7 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
* messages as we need to synchronously process any messages
* we may have sent to ourselves from the previous SMB.
*/
- message_dispatch(smbd_messaging_context());
+ message_dispatch();
/*
* Check to see if we already have a message on the deferred open queue
@@ -577,7 +566,7 @@ void respond_to_all_remaining_local_messages(void)
return;
}
- process_kernel_oplocks(smbd_messaging_context(), NULL);
+ process_kernel_oplocks(NULL);
return;
}
@@ -1042,9 +1031,8 @@ static int construct_reply(char *inbuf,char *outbuf,int size,int bufsize)
outsize += chain_size;
- if(outsize > 4) {
- smb_setlen(inbuf,outbuf,outsize - 4);
- }
+ if(outsize > 4)
+ smb_setlen(outbuf,outsize - 4);
return(outsize);
}
@@ -1132,7 +1120,7 @@ void remove_from_common_flags2(uint32 v)
void construct_reply_common(const char *inbuf, char *outbuf)
{
- set_message(inbuf,outbuf,0,0,False);
+ set_message(outbuf,0,0,False);
SCVAL(outbuf,smb_com,CVAL(inbuf,smb_com));
SIVAL(outbuf,smb_rcls,0);
@@ -1214,15 +1202,16 @@ int chain_reply(char *inbuf,char *outbuf,int size,int bufsize)
/* work out the new size for the in buffer. */
new_size = size - (inbuf2 - inbuf);
if (new_size < 0) {
- DEBUG(0,("chain_reply: chain packet size incorrect "
- "(orig size = %d, offset = %d)\n",
- size, (int)(inbuf2 - inbuf) ));
+ DEBUG(0,("chain_reply: chain packet size incorrect (orig size = %d, "
+ "offset = %d)\n",
+ size,
+ (inbuf2 - inbuf) ));
exit_server_cleanly("Bad chained packet");
return(-1);
}
/* And set it in the header. */
- smb_setlen(inbuf, inbuf2, new_size);
+ smb_setlen(inbuf2, new_size);
/* create the out buffer */
construct_reply_common(inbuf2, outbuf2);
@@ -1262,7 +1251,7 @@ static int setup_select_timeout(void)
{
int select_timeout;
- select_timeout = SMBD_SELECT_TIMEOUT*1000;
+ select_timeout = blocking_locks_timeout_ms(SMBD_SELECT_TIMEOUT*1000);
if (print_notify_messages_pending()) {
select_timeout = MIN(select_timeout, 1000);
@@ -1328,10 +1317,12 @@ void check_reload(time_t t)
Process any timeout housekeeping. Return False if the caller should exit.
****************************************************************************/
-static BOOL timeout_processing(int *select_timeout,
- time_t *last_timeout_processing_time)
+static BOOL timeout_processing(int deadtime, int *select_timeout, time_t *last_timeout_processing_time)
{
+ static time_t last_keepalive_sent_time = 0;
+ static time_t last_idle_closed_check = 0;
time_t t;
+ BOOL allidle = True;
if (smb_read_error == READ_EOF) {
DEBUG(3,("timeout_processing: End of file from client (client has disconnected).\n"));
@@ -1351,12 +1342,56 @@ static BOOL timeout_processing(int *select_timeout,
*last_timeout_processing_time = t = time(NULL);
+ if(last_keepalive_sent_time == 0)
+ last_keepalive_sent_time = t;
+
+ if(last_idle_closed_check == 0)
+ last_idle_closed_check = t;
+
/* become root again if waiting */
change_to_root_user();
+ /* run all registered idle events */
+ smb_run_idle_events(t);
+
/* check if we need to reload services */
check_reload(t);
+ /* automatic timeout if all connections are closed */
+ if (conn_num_open()==0 && (t - last_idle_closed_check) >= IDLE_CLOSED_TIMEOUT) {
+ DEBUG( 2, ( "Closing idle connection\n" ) );
+ return False;
+ } else {
+ last_idle_closed_check = t;
+ }
+
+ if (keepalive && (t - last_keepalive_sent_time)>keepalive) {
+ if (!send_keepalive(smbd_server_fd())) {
+ DEBUG( 2, ( "Keepalive failed - exiting.\n" ) );
+ return False;
+ }
+
+ /* send a keepalive for a password server or the like.
+ This is attached to the auth_info created in the
+ negprot */
+ if (negprot_global_auth_context && negprot_global_auth_context->challenge_set_method
+ && negprot_global_auth_context->challenge_set_method->send_keepalive) {
+
+ negprot_global_auth_context->challenge_set_method->send_keepalive
+ (&negprot_global_auth_context->challenge_set_method->private_data);
+ }
+
+ last_keepalive_sent_time = t;
+ }
+
+ /* check for connection timeouts */
+ allidle = conn_idle_all(t, deadtime);
+
+ if (allidle && conn_num_open()>0) {
+ DEBUG(2,("Closing idle connection 2.\n"));
+ return False;
+ }
+
if(global_machine_password_needs_changing &&
/* for ADS we need to do a regular ADS password change, not a domain
password change */
@@ -1405,6 +1440,12 @@ machine %s in domain %s.\n", global_myname(), lp_workgroup()));
secrets_lock_trust_account_password(lp_workgroup(), False);
}
+ /*
+ * Check to see if we have any blocking locks
+ * outstanding on the queue.
+ */
+ process_blocking_lock_queue();
+
/* update printer queue caches if necessary */
update_monitored_printq_cache();
@@ -1418,7 +1459,7 @@ machine %s in domain %s.\n", global_myname(), lp_workgroup()));
/* Send any queued printer notify message to interested smbd's. */
- print_notify_send_messages(smbd_messaging_context(), 0);
+ print_notify_send_messages(0);
/*
* Modify the select timeout depending upon
@@ -1503,9 +1544,13 @@ void smbd_process(void)
max_recv = MIN(lp_maxxmit(),BUFFER_SIZE);
while (True) {
+ int deadtime = lp_deadtime()*60;
int select_timeout = setup_select_timeout();
int num_echos;
+ if (deadtime <= 0)
+ deadtime = DEFAULT_SMBD_TIMEOUT;
+
errno = 0;
/* free up temporary memory */
@@ -1514,8 +1559,7 @@ void smbd_process(void)
/* Did someone ask for immediate checks on things like blocking locks ? */
if (select_timeout == 0) {
- if(!timeout_processing(&select_timeout,
- &last_timeout_processing_time))
+ if(!timeout_processing( deadtime, &select_timeout, &last_timeout_processing_time))
return;
num_smbs = 0; /* Reset smb counter. */
}
@@ -1527,8 +1571,7 @@ void smbd_process(void)
#endif
while (!receive_message_or_smb(InBuffer,BUFFER_SIZE+LARGE_WRITEX_HDR_SIZE,select_timeout)) {
- if(!timeout_processing(&select_timeout,
- &last_timeout_processing_time))
+ if(!timeout_processing( deadtime, &select_timeout, &last_timeout_processing_time))
return;
num_smbs = 0; /* Reset smb counter. */
}
@@ -1549,7 +1592,7 @@ void smbd_process(void)
process_smb(InBuffer, OutBuffer);
if (smb_echo_count != num_echos) {
- if(!timeout_processing( &select_timeout, &last_timeout_processing_time))
+ if(!timeout_processing( deadtime, &select_timeout, &last_timeout_processing_time))
return;
num_smbs = 0; /* Reset smb counter. */
}
@@ -1566,9 +1609,7 @@ void smbd_process(void)
if ((num_smbs % 200) == 0) {
time_t new_check_time = time(NULL);
if(new_check_time - last_timeout_processing_time >= (select_timeout/1000)) {
- if(!timeout_processing(
- &select_timeout,
- &last_timeout_processing_time))
+ if(!timeout_processing( deadtime, &select_timeout, &last_timeout_processing_time))
return;
num_smbs = 0; /* Reset smb counter. */
last_timeout_processing_time = new_check_time; /* Reset time. */
diff --git a/source/smbd/quotas.c b/source/smbd/quotas.c
index feb28e2c743..b6d3257c0ff 100644
--- a/source/smbd/quotas.c
+++ b/source/smbd/quotas.c
@@ -1225,6 +1225,9 @@ BOOL disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB
D.dqb_curblocks = user_quota.bused;
D.dqb_bsoftlimit = user_quota.bsoft;
D.dqb_bhardlimit = user_quota.bhard;
+ D.dqb_curfiles = user_quota.iused;
+ D.dqb_fsoftlimit = user_quota.isoft;
+ D.dqb_fhardlimit = user_quota.ihard;
}
else if(statbuf.f_vfstype == MNT_JFS)
{
diff --git a/source/smbd/reply.c b/source/smbd/reply.c
index b17fa1949bc..55f62a26f7c 100644
--- a/source/smbd/reply.c
+++ b/source/smbd/reply.c
@@ -47,12 +47,13 @@ extern BOOL global_encrypted_passwords_negotiated;
/* Custom version for processing POSIX paths. */
#define IS_PATH_SEP(c,posix_only) ((c) == '/' || (!(posix_only) && (c) == '\\'))
-static NTSTATUS check_path_syntax_internal(char *path,
- BOOL posix_path,
- BOOL *p_last_component_contains_wcard)
+NTSTATUS check_path_syntax_internal(pstring destname,
+ const pstring srcname,
+ BOOL posix_path,
+ BOOL *p_last_component_contains_wcard)
{
- char *d = path;
- const char *s = path;
+ char *d = destname;
+ const char *s = srcname;
NTSTATUS ret = NT_STATUS_OK;
BOOL start_of_name_component = True;
@@ -61,14 +62,13 @@ static NTSTATUS check_path_syntax_internal(char *path,
while (*s) {
if (IS_PATH_SEP(*s,posix_path)) {
/*
- * Safe to assume is not the second part of a mb char
- * as this is handled below.
+ * Safe to assume is not the second part of a mb char as this is handled below.
*/
/* Eat multiple '/' or '\\' */
while (IS_PATH_SEP(*s,posix_path)) {
s++;
}
- if ((d != path) && (*s != '\0')) {
+ if ((d != destname) && (*s != '\0')) {
/* We only care about non-leading or trailing '/' or '\\' */
*d++ = '/';
}
@@ -88,13 +88,13 @@ static NTSTATUS check_path_syntax_internal(char *path,
*/
/* If we just added a '/' - delete it */
- if ((d > path) && (*(d-1) == '/')) {
+ if ((d > destname) && (*(d-1) == '/')) {
*(d-1) = '\0';
d--;
}
/* Are we at the start ? Can't go back further if so. */
- if (d <= path) {
+ if (d <= destname) {
ret = NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
break;
}
@@ -102,7 +102,7 @@ static NTSTATUS check_path_syntax_internal(char *path,
/* We know this is safe as '/' cannot be part of a mb sequence. */
/* NOTE - if this assumption is invalid we are not in good shape... */
/* Decrement d first as d points to the *next* char to write into. */
- for (d--; d > path; d--) {
+ for (d--; d > destname; d--) {
if (*d == '/')
break;
}
@@ -176,10 +176,10 @@ static NTSTATUS check_path_syntax_internal(char *path,
No wildcards allowed.
****************************************************************************/
-NTSTATUS check_path_syntax(char *path)
+NTSTATUS check_path_syntax(pstring destname, const pstring srcname)
{
BOOL ignore;
- return check_path_syntax_internal(path, False, &ignore);
+ return check_path_syntax_internal(destname, srcname, False, &ignore);
}
/****************************************************************************
@@ -188,9 +188,9 @@ NTSTATUS check_path_syntax(char *path)
a wildcard.
****************************************************************************/
-NTSTATUS check_path_syntax_wcard(char *path, BOOL *p_contains_wcard)
+NTSTATUS check_path_syntax_wcard(pstring destname, const pstring srcname, BOOL *p_contains_wcard)
{
- return check_path_syntax_internal(path, False, p_contains_wcard);
+ return check_path_syntax_internal(destname, srcname, False, p_contains_wcard);
}
/****************************************************************************
@@ -199,48 +199,48 @@ NTSTATUS check_path_syntax_wcard(char *path, BOOL *p_contains_wcard)
set (a safe assumption).
****************************************************************************/
-NTSTATUS check_path_syntax_posix(char *path)
+NTSTATUS check_path_syntax_posix(pstring destname, const pstring srcname)
{
BOOL ignore;
- return check_path_syntax_internal(path, True, &ignore);
+ return check_path_syntax_internal(destname, srcname, True, &ignore);
}
/****************************************************************************
Pull a string and check the path allowing a wilcard - provide for error return.
****************************************************************************/
-size_t srvstr_get_path_wcard(char *inbuf, uint16 smb_flags2, char *dest,
- const char *src, size_t dest_len, size_t src_len,
- int flags, NTSTATUS *err, BOOL *contains_wcard)
+size_t srvstr_get_path_wcard(char *inbuf, char *dest, const char *src, size_t dest_len, size_t src_len, int flags,
+ NTSTATUS *err, BOOL *contains_wcard)
{
+ pstring tmppath;
+ char *tmppath_ptr = tmppath;
size_t ret;
#ifdef DEVELOPER
SMB_ASSERT(dest_len == sizeof(pstring));
#endif
if (src_len == 0) {
- ret = srvstr_pull_buf(inbuf, smb_flags2, dest, src,
- dest_len, flags);
+ ret = srvstr_pull_buf( inbuf, tmppath_ptr, src, dest_len, flags);
} else {
- ret = srvstr_pull(inbuf, smb_flags2, dest, src,
- dest_len, src_len, flags);
+ ret = srvstr_pull( inbuf, tmppath_ptr, src, dest_len, src_len, flags);
}
*contains_wcard = False;
- if (smb_flags2 & FLAGS2_DFS_PATHNAMES) {
+ if (SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES) {
/*
* For a DFS path the function parse_dfs_path()
* will do the path processing, just make a copy.
*/
+ pstrcpy(dest, tmppath);
*err = NT_STATUS_OK;
return ret;
}
if (lp_posix_pathnames()) {
- *err = check_path_syntax_posix(dest);
+ *err = check_path_syntax_posix(dest, tmppath);
} else {
- *err = check_path_syntax_wcard(dest, contains_wcard);
+ *err = check_path_syntax_wcard(dest, tmppath, contains_wcard);
}
return ret;
@@ -250,36 +250,35 @@ size_t srvstr_get_path_wcard(char *inbuf, uint16 smb_flags2, char *dest,
Pull a string and check the path - provide for error return.
****************************************************************************/
-size_t srvstr_get_path(char *inbuf, uint16 smb_flags2, char *dest,
- const char *src, size_t dest_len, size_t src_len,
- int flags, NTSTATUS *err)
+size_t srvstr_get_path(char *inbuf, char *dest, const char *src, size_t dest_len, size_t src_len, int flags, NTSTATUS *err)
{
+ pstring tmppath;
+ char *tmppath_ptr = tmppath;
size_t ret;
#ifdef DEVELOPER
SMB_ASSERT(dest_len == sizeof(pstring));
#endif
if (src_len == 0) {
- ret = srvstr_pull_buf(inbuf, smb_flags2, dest, src,
- dest_len, flags);
+ ret = srvstr_pull_buf( inbuf, tmppath_ptr, src, dest_len, flags);
} else {
- ret = srvstr_pull(inbuf, smb_flags2, dest, src,
- dest_len, src_len, flags);
+ ret = srvstr_pull( inbuf, tmppath_ptr, src, dest_len, src_len, flags);
}
- if (smb_flags2 & FLAGS2_DFS_PATHNAMES) {
+ if (SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES) {
/*
* For a DFS path the function parse_dfs_path()
* will do the path processing, just make a copy.
*/
+ pstrcpy(dest, tmppath);
*err = NT_STATUS_OK;
return ret;
}
if (lp_posix_pathnames()) {
- *err = check_path_syntax_posix(dest);
+ *err = check_path_syntax_posix(dest, tmppath);
} else {
- *err = check_path_syntax(dest);
+ *err = check_path_syntax(dest, tmppath);
}
return ret;
@@ -303,7 +302,7 @@ int reply_special(char *inbuf,char *outbuf)
memset(outbuf,'\0',smb_size);
- smb_setlen(inbuf,outbuf,0);
+ smb_setlen(outbuf,0);
switch (msg_type) {
case 0x81: /* session request */
@@ -398,13 +397,10 @@ int reply_tcon(connection_struct *conn,
*service_buf = *password = *dev = 0;
p = smb_buf(inbuf)+1;
- p += srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), service_buf, p,
- sizeof(service_buf), STR_TERMINATE) + 1;
- pwlen = srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), password, p,
- sizeof(password), STR_TERMINATE) + 1;
+ p += srvstr_pull_buf(inbuf, service_buf, p, sizeof(service_buf), STR_TERMINATE) + 1;
+ pwlen = srvstr_pull_buf(inbuf, password, p, sizeof(password), STR_TERMINATE) + 1;
p += pwlen;
- p += srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), dev, p, sizeof(dev),
- STR_TERMINATE) + 1;
+ p += srvstr_pull_buf(inbuf, dev, p, sizeof(dev), STR_TERMINATE) + 1;
p = strrchr_m(service_buf,'\\');
if (p) {
@@ -424,7 +420,7 @@ int reply_tcon(connection_struct *conn,
return ERROR_NT(nt_status);
}
- outsize = set_message(inbuf,outbuf,2,0,True);
+ outsize = set_message(outbuf,2,0,True);
SSVAL(outbuf,smb_vwv0,max_recv);
SSVAL(outbuf,smb_vwv1,conn->cnum);
SSVAL(outbuf,smb_tid,conn->cnum);
@@ -488,8 +484,7 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
p = smb_buf(inbuf) + passlen + 1;
}
- p += srvstr_pull_buf(inbuf, SVAL(inbuf, smb_flg2), path, p,
- sizeof(path), STR_TERMINATE);
+ p += srvstr_pull_buf(inbuf, path, p, sizeof(path), STR_TERMINATE);
/*
* the service name can be either: \\server\share
@@ -506,8 +501,7 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
else
fstrcpy(service,path);
- p += srvstr_pull(inbuf, SVAL(inbuf, smb_flg2), client_devicetype, p,
- sizeof(client_devicetype), 6, STR_ASCII);
+ p += srvstr_pull(inbuf, client_devicetype, p, sizeof(client_devicetype), 6, STR_ASCII);
DEBUG(4,("Client requested device type [%s] for share [%s]\n", client_devicetype, service));
@@ -528,11 +522,11 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
server_devicetype = "A:";
if (Protocol < PROTOCOL_NT1) {
- set_message(inbuf,outbuf,2,0,True);
+ set_message(outbuf,2,0,True);
p = smb_buf(outbuf);
p += srvstr_push(outbuf, p, server_devicetype, -1,
STR_TERMINATE|STR_ASCII);
- set_message_end(inbuf,outbuf,p);
+ set_message_end(outbuf,p);
} else {
/* NT sets the fstype of IPC$ to the null string */
const char *fstype = IS_IPC(conn) ? "" : lp_fstype(SNUM(conn));
@@ -542,7 +536,7 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
uint32 perm1 = 0;
uint32 perm2 = 0;
- set_message(inbuf,outbuf,7,0,True);
+ set_message(outbuf,7,0,True);
if (IS_IPC(conn)) {
perm1 = FILE_ALL_ACCESS;
@@ -556,7 +550,7 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
SIVAL(outbuf, smb_vwv3, perm1);
SIVAL(outbuf, smb_vwv5, perm2);
} else {
- set_message(inbuf,outbuf,3,0,True);
+ set_message(outbuf,3,0,True);
}
p = smb_buf(outbuf);
@@ -565,7 +559,7 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
p += srvstr_push(outbuf, p, fstype, -1,
STR_TERMINATE);
- set_message_end(inbuf,outbuf,p);
+ set_message_end(outbuf,p);
/* what does setting this bit do? It is set by NT4 and
may affect the ability to autorun mounted cdroms */
@@ -628,7 +622,7 @@ int reply_ioctl(connection_struct *conn,
return(ERROR_DOS(ERRSRV,ERRnosupport));
}
- outsize = set_message(inbuf,outbuf,8,replysize+1,True);
+ outsize = set_message(outbuf,8,replysize+1,True);
SSVAL(outbuf,smb_vwv1,replysize); /* Total data bytes returned */
SSVAL(outbuf,smb_vwv5,replysize); /* Data bytes this buffer */
SSVAL(outbuf,smb_vwv6,52); /* Offset to data */
@@ -684,8 +678,7 @@ int reply_checkpath(connection_struct *conn, char *inbuf,char *outbuf, int dum_s
START_PROFILE(SMBcheckpath);
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), name, smb_buf(inbuf) + 1,
- sizeof(name), 0, STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBcheckpath);
status = map_checkpath_error(inbuf, status);
@@ -725,7 +718,7 @@ int reply_checkpath(connection_struct *conn, char *inbuf,char *outbuf, int dum_s
return ERROR_BOTH(NT_STATUS_NOT_A_DIRECTORY,ERRDOS,ERRbadpath);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
END_PROFILE(SMBcheckpath);
return outsize;
@@ -772,8 +765,7 @@ int reply_getatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
START_PROFILE(SMBgetatr);
p = smb_buf(inbuf) + 1;
- p += srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, p,
- sizeof(fname), 0, STR_TERMINATE, &status);
+ p += srvstr_get_path(inbuf, fname, p, sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBgetatr);
return ERROR_NT(status);
@@ -822,7 +814,7 @@ int reply_getatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
}
}
- outsize = set_message(inbuf,outbuf,10,0,True);
+ outsize = set_message(outbuf,10,0,True);
SSVAL(outbuf,smb_vwv0,mode);
if(lp_dos_filetime_resolution(SNUM(conn)) ) {
@@ -859,8 +851,7 @@ int reply_setatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
START_PROFILE(SMBsetatr);
p = smb_buf(inbuf) + 1;
- p += srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, p,
- sizeof(fname), 0, STR_TERMINATE, &status);
+ p += srvstr_get_path(inbuf, fname, p, sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBsetatr);
return ERROR_NT(status);
@@ -916,7 +907,7 @@ int reply_setatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
return UNIXERROR(ERRDOS, ERRnoaccess);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
DEBUG( 3, ( "setatr name=%s mode=%d\n", fname, mode ) );
@@ -939,7 +930,7 @@ int reply_dskattr(connection_struct *conn, char *inbuf,char *outbuf, int dum_siz
return(UNIXERROR(ERRHRD,ERRgeneral));
}
- outsize = set_message(inbuf,outbuf,5,0,True);
+ outsize = set_message(outbuf,5,0,True);
if (Protocol <= PROTOCOL_LANMAN2) {
double total_space, free_space;
@@ -1018,13 +1009,11 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
expect_close = True;
}
- outsize = set_message(inbuf,outbuf,1,3,True);
+ outsize = set_message(outbuf,1,3,True);
maxentries = SVAL(inbuf,smb_vwv0);
dirtype = SVAL(inbuf,smb_vwv1);
p = smb_buf(inbuf) + 1;
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), path, p,
- sizeof(path), 0, STR_TERMINATE, &nt_status,
- &mask_contains_wcard);
+ p += srvstr_get_path_wcard(inbuf, path, p, sizeof(path), 0, STR_TERMINATE, &nt_status, &mask_contains_wcard);
if (!NT_STATUS_IS_OK(nt_status)) {
END_PROFILE(SMBsearch);
return ERROR_NT(nt_status);
@@ -1192,7 +1181,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
SSVAL(outbuf,smb_flg2, (SVAL(outbuf, smb_flg2) & (~FLAGS2_UNICODE_STRINGS)));
outsize += DIR_STRUCT_SIZE*numentries;
- smb_setlen(inbuf,outbuf,outsize - 4);
+ smb_setlen(outbuf,outsize - 4);
if ((! *directory) && dptr_path(dptr_num))
slprintf(directory, sizeof(directory)-1, "(%s)",dptr_path(dptr_num));
@@ -1227,11 +1216,9 @@ int reply_fclose(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
return reply_unknown(inbuf, outbuf);
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
p = smb_buf(inbuf) + 1;
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), path, p,
- sizeof(path), 0, STR_TERMINATE, &err,
- &path_contains_wcard);
+ p += srvstr_get_path_wcard(inbuf, path, p, sizeof(path), 0, STR_TERMINATE, &err, &path_contains_wcard);
if (!NT_STATUS_IS_OK(err)) {
END_PROFILE(SMBfclose);
return ERROR_NT(err);
@@ -1282,16 +1269,11 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
uint32 create_disposition;
uint32 create_options = 0;
NTSTATUS status;
- struct smb_request req;
-
START_PROFILE(SMBopen);
-
- init_smb_request(&req, (uint8 *)inbuf);
deny_mode = SVAL(inbuf,smb_vwv0);
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, smb_buf(inbuf)+1,
- sizeof(fname), 0, STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBopen);
return ERROR_NT(status);
@@ -1324,7 +1306,7 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
return ERROR_NT(NT_STATUS_DOS(ERRDOS, ERRbadaccess));
}
- status = open_file_ntcreate(conn, &req, fname, &sbuf,
+ status = open_file_ntcreate(conn,fname,&sbuf,
access_mask,
share_mode,
create_disposition,
@@ -1339,7 +1321,7 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
/* We have re-scheduled this call. */
return -1;
}
- return ERROR_NT(status);
+ return ERROR_OPEN(status);
}
size = sbuf.st_size;
@@ -1353,7 +1335,7 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
return ERROR_DOS(ERRDOS,ERRnoaccess);
}
- outsize = set_message(inbuf,outbuf,7,0,True);
+ outsize = set_message(outbuf,7,0,True);
SSVAL(outbuf,smb_vwv0,fsp->fnum);
SSVAL(outbuf,smb_vwv1,fattr);
if(lp_dos_filetime_resolution(SNUM(conn)) ) {
@@ -1407,12 +1389,9 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
uint32 share_mode;
uint32 create_disposition;
uint32 create_options = 0;
- struct smb_request req;
START_PROFILE(SMBopenX);
- init_smb_request(&req, (uint8 *)inbuf);
-
/* If it's an IPC, pass off the pipe handler. */
if (IS_IPC(conn)) {
if (lp_nt_pipe_support()) {
@@ -1425,8 +1404,7 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
}
/* XXXX we need to handle passed times, sattr and flags */
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, smb_buf(inbuf),
- sizeof(fname), 0, STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBopenX);
return ERROR_NT(status);
@@ -1462,7 +1440,7 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
return ERROR_NT(NT_STATUS_DOS(ERRDOS, ERRbadaccess));
}
- status = open_file_ntcreate(conn, &req, fname, &sbuf,
+ status = open_file_ntcreate(conn,fname,&sbuf,
access_mask,
share_mode,
create_disposition,
@@ -1477,7 +1455,7 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
/* We have re-scheduled this call. */
return -1;
}
- return ERROR_NT(status);
+ return ERROR_OPEN(status);
}
/* Setting the "size" field in vwv9 and vwv10 causes the file to be set to this size,
@@ -1533,9 +1511,9 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
}
if (open_flags & EXTENDED_RESPONSE_REQUIRED) {
- set_message(inbuf,outbuf,19,0,True);
+ set_message(outbuf,19,0,True);
} else {
- set_message(inbuf,outbuf,15,0,True);
+ set_message(outbuf,15,0,True);
}
SSVAL(outbuf,smb_vwv2,fsp->fnum);
SSVAL(outbuf,smb_vwv3,fattr);
@@ -1577,7 +1555,7 @@ int reply_ulogoffX(connection_struct *conn, char *inbuf,char *outbuf,int length,
invalidate_vuid(vuid);
- set_message(inbuf,outbuf,2,0,True);
+ set_message(outbuf,2,0,True);
DEBUG( 3, ( "ulogoffX vuid=%d\n", vuid ) );
@@ -1604,18 +1582,14 @@ int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
uint32 share_mode = FILE_SHARE_READ|FILE_SHARE_WRITE;
uint32 create_disposition;
uint32 create_options = 0;
- struct smb_request req;
START_PROFILE(SMBcreate);
-
- init_smb_request(&req, (uint8 *)inbuf);
com = SVAL(inbuf,smb_com);
ts[1] = convert_time_t_to_timespec(srv_make_unix_date3(inbuf + smb_vwv1)); /* mtime. */
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, smb_buf(inbuf) + 1,
- sizeof(fname), 0, STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf) + 1, sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBcreate);
return ERROR_NT(status);
@@ -1655,7 +1629,7 @@ int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
}
/* Open file using ntcreate. */
- status = open_file_ntcreate(conn, &req, fname, &sbuf,
+ status = open_file_ntcreate(conn,fname,&sbuf,
access_mask,
share_mode,
create_disposition,
@@ -1670,13 +1644,13 @@ int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
/* We have re-scheduled this call. */
return -1;
}
- return ERROR_NT(status);
+ return ERROR_OPEN(status);
}
ts[0] = get_atimespec(&sbuf); /* atime. */
file_ntimes(conn, fname, ts);
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,fsp->fnum);
if (oplock_request && lp_fake_oplocks(SNUM(conn))) {
@@ -1710,14 +1684,10 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
char *p, *s;
NTSTATUS status;
unsigned int namelen;
- struct smb_request req;
START_PROFILE(SMBctemp);
- init_smb_request(&req, (uint8 *)inbuf);
-
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, smb_buf(inbuf)+1,
- sizeof(fname), 0, STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBctemp);
return ERROR_NT(status);
@@ -1758,7 +1728,7 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
SMB_VFS_STAT(conn,fname,&sbuf);
/* We should fail if file does not exist. */
- status = open_file_ntcreate(conn, &req, fname, &sbuf,
+ status = open_file_ntcreate(conn,fname,&sbuf,
FILE_GENERIC_READ | FILE_GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -1776,10 +1746,10 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
/* We have re-scheduled this call. */
return -1;
}
- return ERROR_NT(status);
+ return ERROR_OPEN(status);
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,fsp->fnum);
/* the returned filename is relative to the directory */
@@ -1798,7 +1768,7 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
#endif
namelen = srvstr_push(outbuf, p, s, -1, STR_ASCII|STR_TERMINATE);
p += namelen;
- outsize = set_message_end(inbuf,outbuf, p);
+ outsize = set_message_end(outbuf, p);
if (oplock_request && lp_fake_oplocks(SNUM(conn))) {
SCVAL(outbuf,smb_flg,CVAL(outbuf,smb_flg)|CORE_OPLOCK_GRANTED);
@@ -1820,16 +1790,17 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
Check if a user is allowed to rename a file.
********************************************************************/
-static NTSTATUS can_rename(connection_struct *conn, files_struct *fsp,
- uint16 dirtype, SMB_STRUCT_STAT *pst)
+static NTSTATUS can_rename(connection_struct *conn, char *fname, uint16 dirtype, SMB_STRUCT_STAT *pst, BOOL self_open)
{
+ files_struct *fsp;
uint32 fmode;
+ NTSTATUS status;
if (!CAN_WRITE(conn)) {
return NT_STATUS_MEDIA_WRITE_PROTECTED;
}
- fmode = dos_mode(conn, fsp->fsp_name, pst);
+ fmode = dos_mode(conn,fname,pst);
if ((fmode & ~dirtype) & (aHIDDEN | aSYSTEM)) {
return NT_STATUS_NO_SUCH_FILE;
}
@@ -1838,19 +1809,31 @@ static NTSTATUS can_rename(connection_struct *conn, files_struct *fsp,
return NT_STATUS_OK;
}
- if (fsp->access_mask & DELETE_ACCESS) {
- return NT_STATUS_OK;
- }
+ status = open_file_ntcreate(conn, fname, pst,
+ DELETE_ACCESS,
+ /* If we're checking our fsp don't deny for delete. */
+ self_open ?
+ FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE :
+ FILE_SHARE_READ|FILE_SHARE_WRITE,
+ FILE_OPEN,
+ 0,
+ FILE_ATTRIBUTE_NORMAL,
+ 0,
+ NULL, &fsp);
- return NT_STATUS_ACCESS_DENIED;
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+ close_file(fsp,NORMAL_CLOSE);
+ return NT_STATUS_OK;
}
/*******************************************************************
- * unlink a file with all relevant access checks
- *******************************************************************/
+ Check if a user is allowed to delete a file.
+********************************************************************/
-static NTSTATUS do_unlink(connection_struct *conn, struct smb_request *req,
- char *fname, uint32 dirtype)
+static NTSTATUS can_delete(connection_struct *conn, char *fname,
+ uint32 dirtype, BOOL can_defer)
{
SMB_STRUCT_STAT sbuf;
uint32 fattr;
@@ -1858,7 +1841,7 @@ static NTSTATUS do_unlink(connection_struct *conn, struct smb_request *req,
uint32 dirtype_orig = dirtype;
NTSTATUS status;
- DEBUG(10,("do_unlink: %s, dirtype = %d\n", fname, dirtype ));
+ DEBUG(10,("can_delete: %s, dirtype = %d\n", fname, dirtype ));
if (!CAN_WRITE(conn)) {
return NT_STATUS_MEDIA_WRITE_PROTECTED;
@@ -1942,28 +1925,19 @@ static NTSTATUS do_unlink(connection_struct *conn, struct smb_request *req,
/* On open checks the open itself will check the share mode, so
don't do it here as we'll get it wrong. */
- status = open_file_ntcreate(conn, req, fname, &sbuf,
+ status = open_file_ntcreate(conn, fname, &sbuf,
DELETE_ACCESS,
FILE_SHARE_NONE,
FILE_OPEN,
0,
FILE_ATTRIBUTE_NORMAL,
- req != NULL ? 0 : INTERNAL_OPEN_ONLY,
+ can_defer ? 0 : INTERNAL_OPEN_ONLY,
NULL, &fsp);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("open_file_ntcreate failed: %s\n",
- nt_errstr(status)));
- return status;
- }
-
- /* The set is across all open files on this dev/inode pair. */
- if (!set_delete_on_close(fsp, True, &current_user.ut)) {
- close_file(fsp, NORMAL_CLOSE);
- return NT_STATUS_ACCESS_DENIED;
+ if (NT_STATUS_IS_OK(status)) {
+ close_file(fsp,NORMAL_CLOSE);
}
-
- return close_file(fsp,NORMAL_CLOSE);
+ return status;
}
/****************************************************************************
@@ -1971,8 +1945,8 @@ static NTSTATUS do_unlink(connection_struct *conn, struct smb_request *req,
code.
****************************************************************************/
-NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req,
- uint32 dirtype, char *name, BOOL has_wild)
+NTSTATUS unlink_internals(connection_struct *conn, uint32 dirtype,
+ char *name, BOOL has_wild, BOOL can_defer)
{
pstring directory;
pstring mask;
@@ -2022,12 +1996,17 @@ NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req,
return status;
}
- status = do_unlink(conn, req, directory, dirtype);
+ status = can_delete(conn,directory,dirtype,can_defer);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
- count++;
+ if (SMB_VFS_UNLINK(conn,directory) == 0) {
+ count++;
+ notify_fname(conn, NOTIFY_ACTION_REMOVED,
+ FILE_NOTIFY_CHANGE_FILE_NAME,
+ directory);
+ }
} else {
struct smb_Dir *dir_hnd = NULL;
long offset = 0;
@@ -2086,14 +2065,19 @@ NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req,
return status;
}
- status = do_unlink(conn, req, fname, dirtype);
+ status = can_delete(conn, fname, dirtype, can_defer);
if (!NT_STATUS_IS_OK(status)) {
continue;
}
-
- count++;
- DEBUG(3,("unlink_internals: succesful unlink [%s]\n",
- fname));
+ if (SMB_VFS_UNLINK(conn,fname) == 0) {
+ count++;
+ DEBUG(3,("unlink_internals: succesful unlink "
+ "[%s]\n",fname));
+ notify_fname(conn, NOTIFY_ACTION_REMOVED,
+ FILE_NOTIFY_CHANGE_FILE_NAME,
+ fname);
+ }
+
}
CloseDir(dir_hnd);
}
@@ -2117,17 +2101,12 @@ int reply_unlink(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
uint32 dirtype;
NTSTATUS status;
BOOL path_contains_wcard = False;
- struct smb_request req;
START_PROFILE(SMBunlink);
- init_smb_request(&req, (uint8 *)inbuf);
-
dirtype = SVAL(inbuf,smb_vwv0);
- srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), name,
- smb_buf(inbuf) + 1, sizeof(name), 0,
- STR_TERMINATE, &status, &path_contains_wcard);
+ srvstr_get_path_wcard(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), 0, STR_TERMINATE, &status, &path_contains_wcard);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBunlink);
return ERROR_NT(status);
@@ -2144,9 +2123,10 @@ int reply_unlink(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
DEBUG(3,("reply_unlink : %s\n",name));
- status = unlink_internals(conn, &req, dirtype, name,
- path_contains_wcard);
+ status = unlink_internals(conn, dirtype, name, path_contains_wcard,
+ True);
if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBunlink);
if (open_was_deferred(SVAL(inbuf,smb_mid))) {
/* We have re-scheduled this call. */
return -1;
@@ -2154,7 +2134,7 @@ int reply_unlink(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
return ERROR_NT(status);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
END_PROFILE(SMBunlink);
return outsize;
@@ -2172,42 +2152,39 @@ static void fail_readraw(void)
exit_server_cleanly(errstr);
}
+#if defined(WITH_SENDFILE)
/****************************************************************************
Fake (read/write) sendfile. Returns -1 on read or write fail.
****************************************************************************/
-static ssize_t fake_sendfile(files_struct *fsp, SMB_OFF_T startpos, size_t nread, char *buf, size_t bufsize)
+static ssize_t fake_sendfile(files_struct *fsp, SMB_OFF_T startpos, size_t nread, char *buf, int bufsize)
{
- size_t tosend = nread;
+ ssize_t ret=0;
- while (tosend > 0) {
- ssize_t ret;
- size_t cur_read;
+ /* Paranioa check... */
+ if (nread > bufsize) {
+ fail_readraw();
+ }
- if (tosend > bufsize) {
- cur_read = bufsize;
- } else {
- cur_read = tosend;
- }
- ret = read_file(fsp,buf,startpos,cur_read);
+ if (nread > 0) {
+ ret = read_file(fsp,buf,startpos,nread);
if (ret == -1) {
return -1;
}
+ }
- /* If we had a short read, fill with zeros. */
- if (ret < cur_read) {
- memset(buf, '\0', cur_read - ret);
- }
-
- if (write_data(smbd_server_fd(),buf,cur_read) != cur_read) {
- return -1;
- }
- tosend -= cur_read;
- startpos += cur_read;
+ /* If we had a short read, fill with zeros. */
+ if (ret < nread) {
+ memset(buf, '\0', nread - ret);
}
+ if (write_data(smbd_server_fd(),buf,nread) != nread) {
+ return -1;
+ }
+
return (ssize_t)nread;
}
+#endif
/****************************************************************************
Use sendfile in readbraw.
@@ -2266,9 +2243,10 @@ void send_file_readbraw(connection_struct *conn, files_struct *fsp, SMB_OFF_T st
return;
}
-#endif
-normal_readbraw:
+ normal_readbraw:
+
+#endif
if (nread > 0) {
ret = read_file(fsp,outbuf+4,startpos,nread);
@@ -2428,7 +2406,7 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length
numtoread = SVAL(inbuf,smb_vwv1);
startpos = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv2);
- outsize = set_message(inbuf,outbuf,5,3,True);
+ outsize = set_message(outbuf,5,3,True);
numtoread = MIN(BUFFER_SIZE-outsize,numtoread);
data = smb_buf(outbuf) + 3;
@@ -2440,8 +2418,7 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length
* Note that the requested lock size is unaffected by max_recv.
*/
- br_lck = do_lock(smbd_messaging_context(),
- fsp,
+ br_lck = do_lock(fsp,
(uint32)SVAL(inbuf,smb_pid),
(SMB_BIG_UINT)numtoread,
(SMB_BIG_UINT)startpos,
@@ -2511,7 +2488,7 @@ int reply_read(connection_struct *conn, char *inbuf,char *outbuf, int size, int
numtoread = SVAL(inbuf,smb_vwv1);
startpos = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv2);
- outsize = set_message(inbuf,outbuf,5,3,True);
+ outsize = set_message(outbuf,5,3,True);
numtoread = MIN(BUFFER_SIZE-outsize,numtoread);
/*
* The requested read size cannot be greater than max_recv. JRA.
@@ -2552,52 +2529,16 @@ Returning short read of maximum allowed for compatibility with Windows 2000.\n",
}
/****************************************************************************
- Setup readX header.
-****************************************************************************/
-
-static int setup_readX_header(char *inbuf, char *outbuf, size_t smb_maxcnt)
-{
- int outsize;
- char *data = smb_buf(outbuf);
-
- SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be -1. */
- SSVAL(outbuf,smb_vwv5,smb_maxcnt);
- SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
- SSVAL(outbuf,smb_vwv7,(smb_maxcnt >> 16));
- SSVAL(smb_buf(outbuf),-2,smb_maxcnt);
- SCVAL(outbuf,smb_vwv0,0xFF);
- outsize = set_message(inbuf, outbuf,12,smb_maxcnt,False);
- /* Reset the outgoing length, set_message truncates at 0x1FFFF. */
- _smb_setlen_large(outbuf,(smb_size + 12*2 + smb_maxcnt - 4));
- return outsize;
-}
-
-/****************************************************************************
Reply to a read and X - possibly using sendfile.
****************************************************************************/
int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length, int len_outbuf,
files_struct *fsp, SMB_OFF_T startpos, size_t smb_maxcnt)
{
- SMB_STRUCT_STAT sbuf;
int outsize = 0;
ssize_t nread = -1;
char *data = smb_buf(outbuf);
- if(SMB_VFS_FSTAT(fsp,fsp->fh->fd, &sbuf) == -1) {
- return(UNIXERROR(ERRDOS,ERRnoaccess));
- }
-
- if (startpos > sbuf.st_size) {
- smb_maxcnt = 0;
- } else if (smb_maxcnt > (sbuf.st_size - startpos)) {
- smb_maxcnt = (sbuf.st_size - startpos);
- }
-
- if (smb_maxcnt == 0) {
- goto normal_read;
- }
-
#if defined(WITH_SENDFILE)
/*
* We can only use sendfile on a non-chained packet
@@ -2607,16 +2548,34 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length
if ((chain_size == 0) && (CVAL(inbuf,smb_vwv0) == 0xFF) &&
lp_use_sendfile(SNUM(conn)) && (fsp->wcp == NULL) ) {
+ SMB_STRUCT_STAT sbuf;
DATA_BLOB header;
+ if(SMB_VFS_FSTAT(fsp,fsp->fh->fd, &sbuf) == -1)
+ return(UNIXERROR(ERRDOS,ERRnoaccess));
+
+ if (startpos > sbuf.st_size)
+ goto normal_read;
+
+ if (smb_maxcnt > (sbuf.st_size - startpos))
+ smb_maxcnt = (sbuf.st_size - startpos);
+
+ if (smb_maxcnt == 0)
+ goto normal_read;
+
/*
* Set up the packet header before send. We
* assume here the sendfile will work (get the
* correct amount of data).
*/
- setup_readX_header(inbuf,outbuf,smb_maxcnt);
- set_message(inbuf,outbuf,12,smb_maxcnt,False);
+ SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be -1. */
+ SSVAL(outbuf,smb_vwv5,smb_maxcnt);
+ SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
+ SSVAL(outbuf,smb_vwv7,((smb_maxcnt >> 16) & 1));
+ SSVAL(smb_buf(outbuf),-2,smb_maxcnt);
+ SCVAL(outbuf,smb_vwv0,0xFF);
+ set_message(outbuf,12,smb_maxcnt,False);
header.data = (uint8 *)outbuf;
header.length = data - outbuf;
header.free = NULL;
@@ -2661,40 +2620,28 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length
return -1;
}
-#endif
-
-normal_read:
-
- if ((smb_maxcnt & 0xFF0000) > 0x10000) {
- int sendlen = setup_readX_header(inbuf,outbuf,smb_maxcnt) - smb_maxcnt;
- /* Send out the header. */
- if (write_data(smbd_server_fd(),outbuf,sendlen) != sendlen) {
- DEBUG(0,("send_file_readX: write_data failed for file %s (%s). Terminating\n",
- fsp->fsp_name, strerror(errno) ));
- exit_server_cleanly("send_file_readX sendfile failed");
- }
- if ((nread = fake_sendfile(fsp, startpos, smb_maxcnt, data,
- len_outbuf - (data-outbuf))) == -1) {
- DEBUG(0,("send_file_readX: fake_sendfile failed for file %s (%s).\n",
- fsp->fsp_name, strerror(errno) ));
- exit_server_cleanly("send_file_readX: fake_sendfile failed");
- }
- return -1;
- } else {
- nread = read_file(fsp,data,startpos,smb_maxcnt);
+ normal_read:
- if (nread < 0) {
- return(UNIXERROR(ERRDOS,ERRnoaccess));
- }
+#endif
- outsize = setup_readX_header(inbuf, outbuf,nread);
+ nread = read_file(fsp,data,startpos,smb_maxcnt);
+
+ if (nread < 0) {
+ return(UNIXERROR(ERRDOS,ERRnoaccess));
+ }
- DEBUG( 3, ( "send_file_readX fnum=%d max=%d nread=%d\n",
- fsp->fnum, (int)smb_maxcnt, (int)nread ) );
+ outsize = set_message(outbuf,12,nread,False);
+ SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be -1. */
+ SSVAL(outbuf,smb_vwv5,nread);
+ SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
+ SSVAL(outbuf,smb_vwv7,((nread >> 16) & 1));
+ SSVAL(smb_buf(outbuf),-2,nread);
+
+ DEBUG( 3, ( "send_file_readX fnum=%d max=%d nread=%d\n",
+ fsp->fnum, (int)smb_maxcnt, (int)nread ) );
- /* Returning the number of bytes we want to send back - including header. */
- return outsize;
- }
+ /* Returning the number of bytes we want to send back - including header. */
+ return outsize;
}
/****************************************************************************
@@ -2707,7 +2654,6 @@ int reply_read_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
SMB_OFF_T startpos = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv3);
ssize_t nread = -1;
size_t smb_maxcnt = SVAL(inbuf,smb_vwv5);
- BOOL big_readX = False;
#if 0
size_t smb_mincnt = SVAL(inbuf,smb_vwv6);
#endif
@@ -2725,25 +2671,17 @@ int reply_read_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
return(ERROR_DOS(ERRDOS,ERRbadaccess));
}
- set_message(inbuf,outbuf,12,0,True);
+ set_message(outbuf,12,0,True);
if (global_client_caps & CAP_LARGE_READX) {
- size_t upper_size = SVAL(inbuf,smb_vwv7);
- smb_maxcnt |= (upper_size<<16);
- if (upper_size > 1) {
- /* Can't do this on a chained packet. */
- if ((CVAL(inbuf,smb_vwv0) != 0xFF)) {
- return ERROR_NT(NT_STATUS_NOT_SUPPORTED);
- }
- /* We currently don't do this on signed or sealed data. */
- if (srv_is_signing_active() || srv_encryption_on()) {
- return ERROR_NT(NT_STATUS_NOT_SUPPORTED);
- }
- /* Is there room in the reply for this data ? */
- if (smb_maxcnt > (0xFFFFFF - (smb_size -4 + 12*2))) {
- return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- }
- big_readX = True;
+ if (SVAL(inbuf,smb_vwv7) == 1) {
+ smb_maxcnt |= (1<<16);
+ }
+ if (smb_maxcnt > BUFFER_SIZE) {
+ DEBUG(0,("reply_read_and_X - read too large (%u) for reply buffer %u\n",
+ (unsigned int)smb_maxcnt, (unsigned int)BUFFER_SIZE));
+ END_PROFILE(SMBreadX);
+ return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
}
@@ -2776,7 +2714,7 @@ int reply_read_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
return ERROR_DOS(ERRDOS,ERRlock);
}
- if (!big_readX && schedule_aio_read_and_X(conn, inbuf, outbuf, length, bufsize, fsp, startpos, smb_maxcnt)) {
+ if (schedule_aio_read_and_X(conn, inbuf, outbuf, length, bufsize, fsp, startpos, smb_maxcnt)) {
END_PROFILE(SMBreadX);
return -1;
}
@@ -2858,7 +2796,7 @@ int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int size,
/* Return a message to the redirector to tell it to send more bytes */
SCVAL(outbuf,smb_com,SMBwritebraw);
SSVALS(outbuf,smb_vwv0,-1);
- outsize = set_message(inbuf,outbuf,Protocol>PROTOCOL_COREPLUS?1:0,0,True);
+ outsize = set_message(outbuf,Protocol>PROTOCOL_COREPLUS?1:0,0,True);
show_msg(outbuf);
if (!send_smb(smbd_server_fd(),outbuf))
exit_server_cleanly("reply_writebraw: send_smb failed.");
@@ -2872,7 +2810,7 @@ int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int size,
numtowrite = smb_len(inbuf);
/* Set up outbuf to return the correct return */
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SCVAL(outbuf,smb_com,SMBwritec);
if (numtowrite != 0) {
@@ -2996,8 +2934,7 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf,
}
if (numtowrite) {
- status = do_unlock(smbd_messaging_context(),
- fsp,
+ status = do_unlock(fsp,
(uint32)SVAL(inbuf,smb_pid),
(SMB_BIG_UINT)numtowrite,
(SMB_BIG_UINT)startpos,
@@ -3009,7 +2946,7 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf,
}
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,nwritten);
@@ -3095,7 +3032,7 @@ int reply_write(connection_struct *conn, char *inbuf,char *outbuf,int size,int d
return(UNIXERROR(ERRHRD,ERRdiskfull));
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,nwritten);
@@ -3139,7 +3076,7 @@ int reply_write_and_X(connection_struct *conn, char *inbuf,char *outbuf,int leng
return(ERROR_DOS(ERRDOS,ERRbadaccess));
}
- set_message(inbuf,outbuf,6,0,True);
+ set_message(outbuf,6,0,True);
/* Deal with possible LARGE_WRITEX */
if (large_writeX) {
@@ -3292,7 +3229,7 @@ int reply_lseek(connection_struct *conn, char *inbuf,char *outbuf, int size, int
fsp->fh->pos = res;
- outsize = set_message(inbuf,outbuf,2,0,True);
+ outsize = set_message(outbuf,2,0,True);
SIVAL(outbuf,smb_vwv0,res);
DEBUG(3,("lseek fnum=%d ofs=%.0f newpos = %.0f mode=%d\n",
@@ -3308,7 +3245,7 @@ int reply_lseek(connection_struct *conn, char *inbuf,char *outbuf, int size, int
int reply_flush(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize)
{
- int outsize = set_message(inbuf,outbuf,0,0,False);
+ int outsize = set_message(outbuf,0,0,False);
uint16 fnum = SVAL(inbuf,smb_vwv0);
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
START_PROFILE(SMBflush);
@@ -3346,7 +3283,7 @@ int reply_exit(connection_struct *conn,
file_close_pid(SVAL(inbuf,smb_pid),SVAL(inbuf,smb_uid));
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
DEBUG(3,("exit\n"));
@@ -3366,7 +3303,7 @@ int reply_close(connection_struct *conn, char *inbuf,char *outbuf, int size,
files_struct *fsp = NULL;
START_PROFILE(SMBclose);
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
/* If it's an IPC, pass off to the pipe handler. */
if (IS_IPC(conn)) {
@@ -3486,7 +3423,7 @@ int reply_writeclose(connection_struct *conn,
return ERROR_NT(close_status);
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,nwritten);
END_PROFILE(SMBwriteclose);
@@ -3503,7 +3440,7 @@ int reply_writeclose(connection_struct *conn,
int reply_lock(connection_struct *conn,
char *inbuf,char *outbuf, int length, int dum_buffsize)
{
- int outsize = set_message(inbuf,outbuf,0,0,False);
+ int outsize = set_message(outbuf,0,0,False);
SMB_BIG_UINT count,offset;
NTSTATUS status;
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
@@ -3521,8 +3458,7 @@ int reply_lock(connection_struct *conn,
DEBUG(3,("lock fd=%d fnum=%d offset=%.0f count=%.0f\n",
fsp->fh->fd, fsp->fnum, (double)offset, (double)count));
- br_lck = do_lock(smbd_messaging_context(),
- fsp,
+ br_lck = do_lock(fsp,
(uint32)SVAL(inbuf,smb_pid),
count,
offset,
@@ -3550,7 +3486,7 @@ int reply_lock(connection_struct *conn,
int reply_unlock(connection_struct *conn, char *inbuf,char *outbuf, int size,
int dum_buffsize)
{
- int outsize = set_message(inbuf,outbuf,0,0,False);
+ int outsize = set_message(outbuf,0,0,False);
SMB_BIG_UINT count,offset;
NTSTATUS status;
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
@@ -3561,8 +3497,7 @@ int reply_unlock(connection_struct *conn, char *inbuf,char *outbuf, int size,
count = (SMB_BIG_UINT)IVAL(inbuf,smb_vwv1);
offset = (SMB_BIG_UINT)IVAL(inbuf,smb_vwv3);
- status = do_unlock(smbd_messaging_context(),
- fsp,
+ status = do_unlock(fsp,
(uint32)SVAL(inbuf,smb_pid),
count,
offset,
@@ -3591,7 +3526,7 @@ int reply_unlock(connection_struct *conn, char *inbuf,char *outbuf, int size,
int reply_tdis(connection_struct *conn,
char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
{
- int outsize = set_message(inbuf,outbuf,0,0,False);
+ int outsize = set_message(outbuf,0,0,False);
uint16 vuid;
START_PROFILE(SMBtdis);
@@ -3622,7 +3557,7 @@ int reply_echo(connection_struct *conn,
int smb_reverb = SVAL(inbuf,smb_vwv0);
int seq_num;
unsigned int data_len = smb_buflen(inbuf);
- int outsize = set_message(inbuf,outbuf,1,data_len,True);
+ int outsize = set_message(outbuf,1,data_len,True);
START_PROFILE(SMBecho);
if (data_len > BUFFER_SIZE) {
@@ -3643,7 +3578,7 @@ int reply_echo(connection_struct *conn,
for (seq_num =1 ; seq_num <= smb_reverb ; seq_num++) {
SSVAL(outbuf,smb_vwv0,seq_num);
- smb_setlen(inbuf,outbuf,outsize - 4);
+ smb_setlen(outbuf,outsize - 4);
show_msg(outbuf);
if (!send_smb(smbd_server_fd(),outbuf))
@@ -3684,7 +3619,7 @@ int reply_printopen(connection_struct *conn,
return(ERROR_NT(status));
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,fsp->fnum);
DEBUG(3,("openprint fd=%d fnum=%d\n",
@@ -3701,7 +3636,7 @@ int reply_printopen(connection_struct *conn,
int reply_printclose(connection_struct *conn,
char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
{
- int outsize = set_message(inbuf,outbuf,0,0,False);
+ int outsize = set_message(outbuf,0,0,False);
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
NTSTATUS status;
START_PROFILE(SMBsplclose);
@@ -3734,7 +3669,7 @@ int reply_printclose(connection_struct *conn,
int reply_printqueue(connection_struct *conn,
char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
{
- int outsize = set_message(inbuf,outbuf,2,3,True);
+ int outsize = set_message(outbuf,2,3,True);
int max_count = SVAL(inbuf,smb_vwv0);
int start_index = SVAL(inbuf,smb_vwv1);
START_PROFILE(SMBsplretq);
@@ -3782,7 +3717,7 @@ int reply_printqueue(connection_struct *conn,
}
if (count > 0) {
- outsize = set_message(inbuf,outbuf,2,28*count+3,False);
+ outsize = set_message(outbuf,2,28*count+3,False);
SSVAL(outbuf,smb_vwv0,count);
SSVAL(outbuf,smb_vwv1,(max_count>0?first+count:first-1));
SCVAL(smb_buf(outbuf),0,1);
@@ -3805,7 +3740,7 @@ int reply_printqueue(connection_struct *conn,
int reply_printwrite(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
{
int numtowrite;
- int outsize = set_message(inbuf,outbuf,0,0,False);
+ int outsize = set_message(outbuf,0,0,False);
char *data;
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
@@ -3848,9 +3783,7 @@ int reply_mkdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
START_PROFILE(SMBmkdir);
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), directory,
- smb_buf(inbuf) + 1, sizeof(directory), 0,
- STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBmkdir);
return ERROR_NT(status);
@@ -3898,7 +3831,7 @@ int reply_mkdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
return ERROR_NT(status);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
DEBUG( 3, ( "mkdir %s ret=%d\n", directory, outsize ) );
@@ -4091,9 +4024,7 @@ int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
NTSTATUS status;
START_PROFILE(SMBrmdir);
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), directory,
- smb_buf(inbuf) + 1, sizeof(directory), 0,
- STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBrmdir);
return ERROR_NT(status);
@@ -4127,7 +4058,7 @@ int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
return ERROR_NT(status);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
DEBUG( 3, ( "rmdir %s\n", directory ) );
@@ -4225,15 +4156,13 @@ static BOOL resolve_wildcards(const char *name1, char *name2)
asynchronously.
****************************************************************************/
-static void rename_open_files(connection_struct *conn,
- struct share_mode_lock *lck,
- const char *newname)
+static void rename_open_files(connection_struct *conn, struct share_mode_lock *lck,
+ SMB_DEV_T dev, SMB_INO_T inode, const char *newname)
{
files_struct *fsp;
BOOL did_rename = False;
- for(fsp = file_find_di_first(lck->id); fsp;
- fsp = file_find_di_next(fsp)) {
+ for(fsp = file_find_di_first(dev, inode); fsp; fsp = file_find_di_next(fsp)) {
/* fsp_name is a relative path under the fsp. To change this for other
sharepaths we need to manipulate relative paths. */
/* TODO - create the absolute path and manipulate the newname
@@ -4241,21 +4170,20 @@ static void rename_open_files(connection_struct *conn,
if (fsp->conn != conn) {
continue;
}
- DEBUG(10,("rename_open_files: renaming file fnum %d (file_id %s) from %s -> %s\n",
- fsp->fnum, file_id_static_string(&fsp->file_id),
+ DEBUG(10,("rename_open_files: renaming file fnum %d (dev = %x, inode = %.0f) from %s -> %s\n",
+ fsp->fnum, (unsigned int)fsp->dev, (double)fsp->inode,
fsp->fsp_name, newname ));
string_set(&fsp->fsp_name, newname);
did_rename = True;
}
if (!did_rename) {
- DEBUG(10,("rename_open_files: no open files on file_id %s for %s\n",
- file_id_static_string(&lck->id), newname ));
+ DEBUG(10,("rename_open_files: no open files on dev %x, inode %.0f for %s\n",
+ (unsigned int)dev, (double)inode, newname ));
}
/* Send messages to all smbd's (not ourself) that the name has changed. */
- rename_share_filename(smbd_messaging_context(), lck, conn->connectpath,
- newname);
+ rename_share_filename(lck, conn->connectpath, newname);
}
/****************************************************************************
@@ -4287,59 +4215,17 @@ static BOOL rename_path_prefix_equal(const char *src, const char *dest)
return ((memcmp(psrc, pdst, slen) == 0) && pdst[slen] == '/');
}
-/*
- * Do the notify calls from a rename
- */
-
-static void notify_rename(connection_struct *conn, BOOL is_dir,
- const char *oldpath, const char *newpath)
-{
- char *olddir, *newdir;
- const char *oldname, *newname;
- uint32 mask;
-
- mask = is_dir ? FILE_NOTIFY_CHANGE_DIR_NAME
- : FILE_NOTIFY_CHANGE_FILE_NAME;
-
- if (!parent_dirname_talloc(NULL, oldpath, &olddir, &oldname)
- || !parent_dirname_talloc(NULL, newpath, &newdir, &newname)) {
- TALLOC_FREE(olddir);
- return;
- }
-
- if (strcmp(olddir, newdir) == 0) {
- notify_fname(conn, NOTIFY_ACTION_OLD_NAME, mask, oldpath);
- notify_fname(conn, NOTIFY_ACTION_NEW_NAME, mask, newpath);
- }
- else {
- notify_fname(conn, NOTIFY_ACTION_REMOVED, mask, oldpath);
- notify_fname(conn, NOTIFY_ACTION_ADDED, mask, newpath);
- }
- TALLOC_FREE(olddir);
- TALLOC_FREE(newdir);
-
- /* this is a strange one. w2k3 gives an additional event for
- CHANGE_ATTRIBUTES and CHANGE_CREATION on the new file when renaming
- files, but not directories */
- if (!is_dir) {
- notify_fname(conn, NOTIFY_ACTION_MODIFIED,
- FILE_NOTIFY_CHANGE_ATTRIBUTES
- |FILE_NOTIFY_CHANGE_CREATION,
- newpath);
- }
-}
-
/****************************************************************************
Rename an open file - given an fsp.
****************************************************************************/
NTSTATUS rename_internals_fsp(connection_struct *conn, files_struct *fsp, pstring newname, uint32 attrs, BOOL replace_if_exists)
{
- SMB_STRUCT_STAT sbuf, sbuf1;
+ SMB_STRUCT_STAT sbuf;
pstring newname_last_component;
NTSTATUS status = NT_STATUS_OK;
+ BOOL dest_exists;
struct share_mode_lock *lck = NULL;
- BOOL dst_exists;
ZERO_STRUCT(sbuf);
@@ -4407,22 +4293,14 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, files_struct *fsp, pstrin
return NT_STATUS_OK;
}
- /*
- * Have vfs_object_exist also fill sbuf1
- */
- dst_exists = vfs_object_exist(conn, newname, &sbuf1);
+ dest_exists = vfs_object_exist(conn,newname,NULL);
- if(!replace_if_exists && dst_exists) {
+ if(!replace_if_exists && dest_exists) {
DEBUG(3,("rename_internals_fsp: dest exists doing rename %s -> %s\n",
fsp->fsp_name,newname));
return NT_STATUS_OBJECT_NAME_COLLISION;
}
- if (dst_exists && file_find_di_first(file_id_sbuf(&sbuf1)) != NULL) {
- DEBUG(3, ("rename_internals_fsp: Target file open\n"));
- return NT_STATUS_ACCESS_DENIED;
- }
-
/* Ensure we have a valid stat struct for the source. */
if (fsp->fh->fd != -1) {
if (SMB_VFS_FSTAT(fsp,fsp->fh->fd,&sbuf) == -1) {
@@ -4434,7 +4312,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, files_struct *fsp, pstrin
}
}
- status = can_rename(conn, fsp, attrs, &sbuf);
+ status = can_rename(conn,fsp->fsp_name,attrs,&sbuf,True);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(3,("rename_internals_fsp: Error %s rename %s -> %s\n",
@@ -4448,14 +4326,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, files_struct *fsp, pstrin
return NT_STATUS_ACCESS_DENIED;
}
- lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
-
- /*
- * We have the file open ourselves, so not being able to get the
- * corresponding share mode lock is a fatal error.
- */
-
- SMB_ASSERT(lck != NULL);
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
if(SMB_VFS_RENAME(conn,fsp->fsp_name, newname) == 0) {
uint32 create_options = fsp->fh->private_options;
@@ -4463,9 +4334,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, files_struct *fsp, pstrin
DEBUG(3,("rename_internals_fsp: succeeded doing rename on %s -> %s\n",
fsp->fsp_name,newname));
- rename_open_files(conn, lck, newname);
-
- notify_rename(conn, fsp->is_directory, fsp->fsp_name, newname);
+ rename_open_files(conn, lck, fsp->dev, fsp->inode, newname);
/*
* A rename acts as a new file create w.r.t. allowing an initial delete
@@ -4505,12 +4374,54 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, files_struct *fsp, pstrin
return status;
}
+/*
+ * Do the notify calls from a rename
+ */
+
+static void notify_rename(connection_struct *conn, BOOL is_dir,
+ const char *oldpath, const char *newpath)
+{
+ char *olddir, *newdir;
+ const char *oldname, *newname;
+ uint32 mask;
+
+ mask = is_dir ? FILE_NOTIFY_CHANGE_DIR_NAME
+ : FILE_NOTIFY_CHANGE_FILE_NAME;
+
+ if (!parent_dirname_talloc(NULL, oldpath, &olddir, &oldname)
+ || !parent_dirname_talloc(NULL, newpath, &newdir, &newname)) {
+ TALLOC_FREE(olddir);
+ return;
+ }
+
+ if (strcmp(olddir, newdir) == 0) {
+ notify_fname(conn, NOTIFY_ACTION_OLD_NAME, mask, oldpath);
+ notify_fname(conn, NOTIFY_ACTION_NEW_NAME, mask, newpath);
+ }
+ else {
+ notify_fname(conn, NOTIFY_ACTION_REMOVED, mask, oldpath);
+ notify_fname(conn, NOTIFY_ACTION_ADDED, mask, newpath);
+ }
+ TALLOC_FREE(olddir);
+ TALLOC_FREE(newdir);
+
+ /* this is a strange one. w2k3 gives an additional event for
+ CHANGE_ATTRIBUTES and CHANGE_CREATION on the new file when renaming
+ files, but not directories */
+ if (!is_dir) {
+ notify_fname(conn, NOTIFY_ACTION_MODIFIED,
+ FILE_NOTIFY_CHANGE_ATTRIBUTES
+ |FILE_NOTIFY_CHANGE_CREATION,
+ newpath);
+ }
+}
+
/****************************************************************************
The guts of the rename command, split out so it may be called by the NT SMB
code.
****************************************************************************/
-NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
+NTSTATUS rename_internals(connection_struct *conn,
pstring name,
pstring newname,
uint32 attrs,
@@ -4526,6 +4437,7 @@ NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
int count=0;
NTSTATUS status = NT_STATUS_OK;
SMB_STRUCT_STAT sbuf1, sbuf2;
+ struct share_mode_lock *lck = NULL;
struct smb_Dir *dir_hnd = NULL;
const char *dname;
long offset = 0;
@@ -4580,8 +4492,6 @@ NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
}
if (!src_has_wild) {
- files_struct *fsp;
-
/*
* No wildcards - just process the one file.
*/
@@ -4608,6 +4518,12 @@ NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
conn->short_case_preserve, directory,
newname, last_component_dest, is_short_name));
+ /* Ensure the source name is valid for us to access. */
+ status = check_name(conn, directory);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
/* The dest name still may have wildcards. */
if (dest_has_wild) {
if (!resolve_wildcards(directory,newname)) {
@@ -4617,34 +4533,133 @@ NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
}
}
- ZERO_STRUCT(sbuf1);
- SMB_VFS_STAT(conn, directory, &sbuf1);
-
- status = S_ISDIR(sbuf1.st_mode) ?
- open_directory(conn, req, directory, &sbuf1,
- DELETE_ACCESS,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- FILE_OPEN, 0, 0, NULL,
- &fsp)
- : open_file_ntcreate(conn, req, directory, &sbuf1,
- DELETE_ACCESS,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- FILE_OPEN, 0, 0, 0, NULL,
- &fsp);
+ /*
+ * Check for special case with case preserving and not
+ * case sensitive, if directory and newname are identical,
+ * and the old last component differs from the original
+ * last component only by case, then we should allow
+ * the rename (user is trying to change the case of the
+ * filename).
+ */
+ if((conn->case_sensitive == False) &&
+ (((conn->case_preserve == True) &&
+ (is_short_name == False)) ||
+ ((conn->short_case_preserve == True) &&
+ (is_short_name == True))) &&
+ strcsequal(directory, newname)) {
+ pstring modified_last_component;
+
+ /*
+ * Get the last component of the modified name.
+ * Note that we guarantee that newname contains a '/'
+ * character above.
+ */
+ p = strrchr_m(newname,'/');
+ pstrcpy(modified_last_component,p+1);
+
+ if(strcsequal(modified_last_component,
+ last_component_dest) == False) {
+ /*
+ * Replace the modified last component with
+ * the original.
+ */
+ pstrcpy(p+1, last_component_dest);
+ }
+ }
+
+ /* Ensure the dest name is valid for us to access. */
+ status = check_name(conn, newname);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ /*
+ * The source object must exist.
+ */
+
+ if (!vfs_object_exist(conn, directory, &sbuf1)) {
+ DEBUG(3, ("rename_internals: source doesn't exist "
+ "doing rename %s -> %s\n",
+ directory,newname));
+
+ if (errno == ENOTDIR || errno == EISDIR
+ || errno == ENOENT) {
+ /*
+ * Must return different errors depending on
+ * whether the parent directory existed or
+ * not.
+ */
+
+ p = strrchr_m(directory, '/');
+ if (!p)
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ *p = '\0';
+ if (vfs_object_exist(conn, directory, NULL))
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ return NT_STATUS_OBJECT_PATH_NOT_FOUND;
+ }
+ status = map_nt_error_from_unix(errno);
+ DEBUG(3, ("rename_internals: Error %s rename %s -> "
+ "%s\n", nt_errstr(status), directory,
+ newname));
+
+ return status;
+ }
+
+ status = can_rename(conn,directory,attrs,&sbuf1,False);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("Could not open rename source %s: %s\n",
- directory, nt_errstr(status)));
+ DEBUG(3,("rename_internals: Error %s rename %s -> "
+ "%s\n", nt_errstr(status), directory,
+ newname));
return status;
}
- status = rename_internals_fsp(conn, fsp, newname, attrs,
- replace_if_exists);
+ /*
+ * If the src and dest names are identical - including case,
+ * don't do the rename, just return success.
+ */
- close_file(fsp, NORMAL_CLOSE);
+ if (strcsequal(directory, newname)) {
+ DEBUG(3, ("rename_internals: identical names in "
+ "rename %s - returning success\n",
+ directory));
+ return NT_STATUS_OK;
+ }
+
+ if(!replace_if_exists && vfs_object_exist(conn,newname,NULL)) {
+ DEBUG(3,("rename_internals: dest exists doing "
+ "rename %s -> %s\n", directory, newname));
+ return NT_STATUS_OBJECT_NAME_COLLISION;
+ }
+
+ if (rename_path_prefix_equal(directory, newname)) {
+ return NT_STATUS_SHARING_VIOLATION;
+ }
- DEBUG(3, ("rename_internals: Error %s rename %s -> %s\n",
- nt_errstr(status), directory,newname));
+ lck = get_share_mode_lock(NULL, sbuf1.st_dev, sbuf1.st_ino,
+ NULL, NULL);
+
+ if(SMB_VFS_RENAME(conn,directory, newname) == 0) {
+ DEBUG(3,("rename_internals: succeeded doing rename "
+ "on %s -> %s\n", directory, newname));
+ rename_open_files(conn, lck, sbuf1.st_dev,
+ sbuf1.st_ino, newname);
+ TALLOC_FREE(lck);
+ notify_rename(conn, S_ISDIR(sbuf1.st_mode),
+ directory, newname);
+ return NT_STATUS_OK;
+ }
+
+ TALLOC_FREE(lck);
+ if (errno == ENOTDIR || errno == EISDIR) {
+ status = NT_STATUS_OBJECT_NAME_COLLISION;
+ } else {
+ status = map_nt_error_from_unix(errno);
+ }
+
+ DEBUG(3,("rename_internals: Error %s rename %s -> %s\n",
+ nt_errstr(status), directory,newname));
return status;
}
@@ -4673,7 +4688,6 @@ NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
*/
while ((dname = ReadDirName(dir_hnd, &offset))) {
- files_struct *fsp;
pstring fname;
BOOL sysdir_entry = False;
@@ -4703,8 +4717,26 @@ NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
break;
}
+ status = NT_STATUS_ACCESS_DENIED;
slprintf(fname, sizeof(fname)-1, "%s/%s", directory, dname);
+ /* Ensure the source name is valid for us to access. */
+ status = check_name(conn, fname);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ if (!vfs_object_exist(conn, fname, &sbuf1)) {
+ status = NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ DEBUG(6, ("rename %s failed. Error %s\n",
+ fname, nt_errstr(status)));
+ continue;
+ }
+ status = can_rename(conn,fname,attrs,&sbuf1,False);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(6, ("rename %s refused\n", fname));
+ continue;
+ }
pstrcpy(destname,newname);
if (!resolve_wildcards(fname,destname)) {
@@ -4713,42 +4745,41 @@ NTSTATUS rename_internals(connection_struct *conn, struct smb_request *req,
continue;
}
- ZERO_STRUCT(sbuf1);
- SMB_VFS_STAT(conn, fname, &sbuf1);
-
- status = S_ISDIR(sbuf1.st_mode) ?
- open_directory(conn, req, fname, &sbuf1,
- DELETE_ACCESS,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- FILE_OPEN, 0, 0, NULL,
- &fsp)
- : open_file_ntcreate(conn, req, fname, &sbuf1,
- DELETE_ACCESS,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- FILE_OPEN, 0, 0, 0, NULL,
- &fsp);
-
+ /* Ensure the dest name is valid for us to access. */
+ status = check_name(conn, destname);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3,("rename_internals: open_file_ntcreate "
- "returned %s rename %s -> %s\n",
- nt_errstr(status), directory, newname));
- break;
+ return status;
}
- status = rename_internals_fsp(conn, fsp, destname, attrs,
- replace_if_exists);
-
- close_file(fsp, NORMAL_CLOSE);
+ if (strcsequal(fname,destname)) {
+ DEBUG(3,("rename_internals: identical names "
+ "in wildcard rename %s - success\n",
+ fname));
+ count++;
+ status = NT_STATUS_OK;
+ continue;
+ }
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(3, ("rename_internals_fsp returned %s for "
- "rename %s -> %s\n", nt_errstr(status),
- directory, newname));
- break;
+ if (!replace_if_exists && vfs_file_exist(conn,destname, NULL)) {
+ DEBUG(6,("file_exist %s\n", destname));
+ status = NT_STATUS_OBJECT_NAME_COLLISION;
+ continue;
+ }
+
+ if (rename_path_prefix_equal(fname, destname)) {
+ return NT_STATUS_SHARING_VIOLATION;
}
- count++;
+ lck = get_share_mode_lock(NULL, sbuf1.st_dev,
+ sbuf1.st_ino, NULL, NULL);
+ if (!SMB_VFS_RENAME(conn,fname,destname)) {
+ rename_open_files(conn, lck, sbuf1.st_dev,
+ sbuf1.st_ino, newname);
+ count++;
+ status = NT_STATUS_OK;
+ }
+ TALLOC_FREE(lck);
DEBUG(3,("rename_internals: doing rename on %s -> "
"%s\n",fname,destname));
}
@@ -4776,24 +4807,17 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
NTSTATUS status;
BOOL src_has_wcard = False;
BOOL dest_has_wcard = False;
- struct smb_request req;
START_PROFILE(SMBmv);
- init_smb_request(&req, (uint8 *)inbuf);
-
p = smb_buf(inbuf) + 1;
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), name, p,
- sizeof(name), 0, STR_TERMINATE, &status,
- &src_has_wcard);
+ p += srvstr_get_path_wcard(inbuf, name, p, sizeof(name), 0, STR_TERMINATE, &status, &src_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBmv);
return ERROR_NT(status);
}
p++;
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), newname, p,
- sizeof(newname), 0, STR_TERMINATE, &status,
- &dest_has_wcard);
+ p += srvstr_get_path_wcard(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status, &dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBmv);
return ERROR_NT(status);
@@ -4819,8 +4843,7 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
DEBUG(3,("reply_mv : %s -> %s\n",name,newname));
- status = rename_internals(conn, &req, name, newname, attrs, False,
- src_has_wcard, dest_has_wcard);
+ status = rename_internals(conn, name, newname, attrs, False, src_has_wcard, dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBmv);
if (open_was_deferred(SVAL(inbuf,smb_mid))) {
@@ -4830,7 +4853,7 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
return ERROR_NT(status);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
END_PROFILE(SMBmv);
return(outsize);
@@ -4884,7 +4907,7 @@ NTSTATUS copy_file(connection_struct *conn,
}
}
- status = open_file_ntcreate(conn, NULL, src, &src_sbuf,
+ status = open_file_ntcreate(conn,src,&src_sbuf,
FILE_GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
@@ -4902,7 +4925,7 @@ NTSTATUS copy_file(connection_struct *conn,
ZERO_STRUCTP(&sbuf2);
}
- status = open_file_ntcreate(conn, NULL, dest, &sbuf2,
+ status = open_file_ntcreate(conn,dest,&sbuf2,
FILE_GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
new_create_disposition,
@@ -4982,16 +5005,12 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
*directory = *mask = 0;
p = smb_buf(inbuf);
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), name, p,
- sizeof(name), 0, STR_TERMINATE, &status,
- &source_has_wild);
+ p += srvstr_get_path_wcard(inbuf, name, p, sizeof(name), 0, STR_TERMINATE, &status, &source_has_wild);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBcopy);
return ERROR_NT(status);
}
- p += srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), newname, p,
- sizeof(newname), 0, STR_TERMINATE, &status,
- &dest_has_wild);
+ p += srvstr_get_path_wcard(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status, &dest_has_wild);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(SMBcopy);
return ERROR_NT(status);
@@ -5181,7 +5200,7 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
return ERROR_DOS(ERRDOS,error);
}
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,count);
END_PROFILE(SMBcopy);
@@ -5207,9 +5226,7 @@ int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
return ERROR_DOS(ERRDOS,ERRnoaccess);
}
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), newdir,
- smb_buf(inbuf) + 1, sizeof(newdir), 0, STR_TERMINATE,
- &status);
+ srvstr_get_path(inbuf, newdir, smb_buf(inbuf) + 1, sizeof(newdir), 0, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
END_PROFILE(pathworks_setdir);
return ERROR_NT(status);
@@ -5232,7 +5249,7 @@ int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
set_conn_connectpath(conn,newdir);
}
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
SCVAL(outbuf,smb_reh,CVAL(inbuf,smb_reh));
DEBUG(3,("setdir %s\n", newdir));
@@ -5509,8 +5526,7 @@ int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf,
"pid %u, file %s\n", (double)offset, (double)count,
(unsigned int)lock_pid, fsp->fsp_name ));
- status = do_unlock(smbd_messaging_context(),
- fsp,
+ status = do_unlock(fsp,
lock_pid,
count,
offset,
@@ -5584,8 +5600,7 @@ int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf,
struct byte_range_lock *br_lck;
uint32 block_smbpid;
- br_lck = do_lock(smbd_messaging_context(),
- fsp,
+ br_lck = do_lock(fsp,
lock_pid,
count,
offset,
@@ -5673,8 +5688,7 @@ int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf,
return ERROR_DOS(ERRDOS,ERRnoaccess);
}
- do_unlock(smbd_messaging_context(),
- fsp,
+ do_unlock(fsp,
lock_pid,
count,
offset,
@@ -5684,7 +5698,7 @@ int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf,
return ERROR_NT(status);
}
- set_message(inbuf,outbuf,2,0,True);
+ set_message(outbuf,2,0,True);
DEBUG(3, ("lockingX fnum=%d type=%d num_locks=%d num_ulocks=%d\n",
fsp->fnum, (unsigned int)locktype, num_locks, num_ulocks));
@@ -5720,7 +5734,7 @@ int reply_readbmpx(connection_struct *conn, char *inbuf,char *outbuf,int length,
return ERROR_DOS(ERRSRV,ERRuseSTD);
}
- outsize = set_message(inbuf,outbuf,8,0,True);
+ outsize = set_message(outbuf,8,0,True);
CHECK_FSP(fsp,conn);
if (!CHECK_READ(fsp,inbuf)) {
@@ -5756,7 +5770,7 @@ int reply_readbmpx(connection_struct *conn, char *inbuf,char *outbuf,int length,
if (nread < (ssize_t)N)
tcount = total_read + nread;
- set_message(inbuf,outbuf,8,nread+pad,False);
+ set_message(outbuf,8,nread+pad,False);
SIVAL(outbuf,smb_vwv0,startpos);
SSVAL(outbuf,smb_vwv2,tcount);
SSVAL(outbuf,smb_vwv6,nread);
@@ -5785,7 +5799,7 @@ int reply_setattrE(connection_struct *conn, char *inbuf,char *outbuf, int size,
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
START_PROFILE(SMBsetattrE);
- outsize = set_message(inbuf,outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
if(!fsp || (fsp->conn != conn)) {
END_PROFILE(SMBsetattrE);
@@ -5923,7 +5937,7 @@ int reply_writebmpx(connection_struct *conn, char *inbuf,char *outbuf, int size,
SMBwritebmpx */
SCVAL(outbuf,smb_com,SMBwriteBmpx);
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVALS(outbuf,smb_vwv0,-1); /* We don't support smb_remaining */
@@ -5932,13 +5946,13 @@ int reply_writebmpx(connection_struct *conn, char *inbuf,char *outbuf, int size,
if (write_through && tcount==nwritten) {
/* We need to send both a primary and a secondary response */
- smb_setlen(inbuf,outbuf,outsize - 4);
+ smb_setlen(outbuf,outsize - 4);
show_msg(outbuf);
if (!send_smb(smbd_server_fd(),outbuf))
exit_server_cleanly("reply_writebmpx: send_smb failed.");
/* Now the secondary */
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SCVAL(outbuf,smb_com,SMBwritec);
SSVAL(outbuf,smb_vwv0,nwritten);
}
@@ -6025,7 +6039,7 @@ int reply_writebs(connection_struct *conn, char *inbuf,char *outbuf, int dum_siz
wbms->wr_total_written += nwritten;
if(wbms->wr_total_written >= tcount) {
if (write_through) {
- outsize = set_message(inbuf,outbuf,1,0,True);
+ outsize = set_message(outbuf,1,0,True);
SSVAL(outbuf,smb_vwv0,wbms->wr_total_written);
send_response = True;
}
@@ -6055,7 +6069,7 @@ int reply_getattrE(connection_struct *conn, char *inbuf,char *outbuf, int size,
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
START_PROFILE(SMBgetattrE);
- outsize = set_message(inbuf,outbuf,11,0,True);
+ outsize = set_message(outbuf,11,0,True);
if(!fsp || (fsp->conn != conn)) {
END_PROFILE(SMBgetattrE);
diff --git a/source/smbd/seal.c b/source/smbd/seal.c
deleted file mode 100644
index 5d8ef9b63c8..00000000000
--- a/source/smbd/seal.c
+++ /dev/null
@@ -1,704 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SMB Transport encryption (sealing) code - server code.
- Copyright (C) Jeremy Allison 2007.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-/******************************************************************************
- Server side encryption.
-******************************************************************************/
-
-/******************************************************************************
- Global server state.
-******************************************************************************/
-
-struct smb_srv_trans_enc_ctx {
- struct smb_trans_enc_state *es;
- AUTH_NTLMSSP_STATE *auth_ntlmssp_state; /* Must be kept in sync with pointer in ec->ntlmssp_state. */
-};
-
-static struct smb_srv_trans_enc_ctx *partial_srv_trans_enc_ctx;
-static struct smb_srv_trans_enc_ctx *srv_trans_enc_ctx;
-
-/******************************************************************************
- Is server encryption on ?
-******************************************************************************/
-
-BOOL srv_encryption_on(void)
-{
- if (srv_trans_enc_ctx) {
- return common_encryption_on(srv_trans_enc_ctx->es);
- }
- return False;
-}
-
-/******************************************************************************
- Create an auth_ntlmssp_state and ensure pointer copy is correct.
-******************************************************************************/
-
-static NTSTATUS make_auth_ntlmssp(struct smb_srv_trans_enc_ctx *ec)
-{
- NTSTATUS status = auth_ntlmssp_start(&ec->auth_ntlmssp_state);
- if (!NT_STATUS_IS_OK(status)) {
- return nt_status_squash(status);
- }
-
- /*
- * We must remember to update the pointer copy for the common
- * functions after any auth_ntlmssp_start/auth_ntlmssp_end.
- */
- ec->es->s.ntlmssp_state = ec->auth_ntlmssp_state->ntlmssp_state;
- return status;
-}
-
-/******************************************************************************
- Destroy an auth_ntlmssp_state and ensure pointer copy is correct.
-******************************************************************************/
-
-static void destroy_auth_ntlmssp(struct smb_srv_trans_enc_ctx *ec)
-{
- /*
- * We must remember to update the pointer copy for the common
- * functions after any auth_ntlmssp_start/auth_ntlmssp_end.
- */
-
- if (ec->auth_ntlmssp_state) {
- auth_ntlmssp_end(&ec->auth_ntlmssp_state);
- /* The auth_ntlmssp_end killed this already. */
- ec->es->s.ntlmssp_state = NULL;
- }
-}
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
-
-/******************************************************************************
- Import a name.
-******************************************************************************/
-
-static NTSTATUS get_srv_gss_creds(const char *service,
- const char *name,
- gss_cred_usage_t cred_type,
- gss_cred_id_t *p_srv_cred)
-{
- OM_uint32 ret;
- OM_uint32 min;
- gss_name_t srv_name;
- gss_buffer_desc input_name;
- char *host_princ_s = NULL;
- NTSTATUS status = NT_STATUS_OK;
-
- gss_OID_desc nt_hostbased_service =
- {10, CONST_DISCARD(char *,"\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x04")};
-
- asprintf(&host_princ_s, "%s@%s", service, name);
- if (host_princ_s == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
- input_name.value = host_princ_s;
- input_name.length = strlen(host_princ_s) + 1;
-
- ret = gss_import_name(&min,
- &input_name,
- &nt_hostbased_service,
- &srv_name);
-
- DEBUG(10,("get_srv_gss_creds: imported name %s\n",
- host_princ_s ));
-
- if (ret != GSS_S_COMPLETE) {
- SAFE_FREE(host_princ_s);
- return map_nt_error_from_gss(ret, min);
- }
-
- /*
- * We're accessing the krb5.keytab file here.
- * ensure we have permissions to do so.
- */
- become_root();
-
- ret = gss_acquire_cred(&min,
- srv_name,
- GSS_C_INDEFINITE,
- GSS_C_NULL_OID_SET,
- cred_type,
- p_srv_cred,
- NULL,
- NULL);
- unbecome_root();
-
- if (ret != GSS_S_COMPLETE) {
- ADS_STATUS adss = ADS_ERROR_GSS(ret, min);
- DEBUG(10,("get_srv_gss_creds: gss_acquire_cred failed with %s\n",
- ads_errstr(adss)));
- status = map_nt_error_from_gss(ret, min);
- }
-
- SAFE_FREE(host_princ_s);
- gss_release_name(&min, &srv_name);
- return status;
-}
-
-/******************************************************************************
- Create a gss state.
- Try and get the cifs/server@realm principal first, then fall back to
- host/server@realm.
-******************************************************************************/
-
-static NTSTATUS make_auth_gss(struct smb_srv_trans_enc_ctx *ec)
-{
- NTSTATUS status;
- gss_cred_id_t srv_cred;
- fstring fqdn;
-
- name_to_fqdn(fqdn, global_myname());
- strlower_m(fqdn);
-
- status = get_srv_gss_creds("cifs", fqdn, GSS_C_ACCEPT, &srv_cred);
- if (!NT_STATUS_IS_OK(status)) {
- status = get_srv_gss_creds("host", fqdn, GSS_C_ACCEPT, &srv_cred);
- if (!NT_STATUS_IS_OK(status)) {
- return nt_status_squash(status);
- }
- }
-
- ec->es->s.gss_state = SMB_MALLOC_P(struct smb_tran_enc_state_gss);
- if (!ec->es->s.gss_state) {
- OM_uint32 min;
- gss_release_cred(&min, &srv_cred);
- return NT_STATUS_NO_MEMORY;
- }
- ZERO_STRUCTP(ec->es->s.gss_state);
- ec->es->s.gss_state->creds = srv_cred;
-
- /* No context yet. */
- ec->es->s.gss_state->gss_ctx = GSS_C_NO_CONTEXT;
-
- return NT_STATUS_OK;
-}
-#endif
-
-/******************************************************************************
- Shutdown a server encryption context.
-******************************************************************************/
-
-static void srv_free_encryption_context(struct smb_srv_trans_enc_ctx **pp_ec)
-{
- struct smb_srv_trans_enc_ctx *ec = *pp_ec;
-
- if (!ec) {
- return;
- }
-
- if (ec->es) {
- switch (ec->es->smb_enc_type) {
- case SMB_TRANS_ENC_NTLM:
- destroy_auth_ntlmssp(ec);
- break;
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- case SMB_TRANS_ENC_GSS:
- break;
-#endif
- }
- common_free_encryption_state(&ec->es);
- }
-
- SAFE_FREE(ec);
- *pp_ec = NULL;
-}
-
-/******************************************************************************
- Create a server encryption context.
-******************************************************************************/
-
-static NTSTATUS make_srv_encryption_context(enum smb_trans_enc_type smb_enc_type, struct smb_srv_trans_enc_ctx **pp_ec)
-{
- struct smb_srv_trans_enc_ctx *ec;
-
- *pp_ec = NULL;
-
- ec = SMB_MALLOC_P(struct smb_srv_trans_enc_ctx);
- if (!ec) {
- return NT_STATUS_NO_MEMORY;
- }
- ZERO_STRUCTP(partial_srv_trans_enc_ctx);
- ec->es = SMB_MALLOC_P(struct smb_trans_enc_state);
- if (!ec->es) {
- SAFE_FREE(ec);
- return NT_STATUS_NO_MEMORY;
- }
- ZERO_STRUCTP(ec->es);
- ec->es->smb_enc_type = smb_enc_type;
- switch (smb_enc_type) {
- case SMB_TRANS_ENC_NTLM:
- {
- NTSTATUS status = make_auth_ntlmssp(ec);
- if (!NT_STATUS_IS_OK(status)) {
- srv_free_encryption_context(&ec);
- return status;
- }
- }
- break;
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- case SMB_TRANS_ENC_GSS:
- /* Acquire our credentials by calling gss_acquire_cred here. */
- {
- NTSTATUS status = make_auth_gss(ec);
- if (!NT_STATUS_IS_OK(status)) {
- srv_free_encryption_context(&ec);
- return status;
- }
- }
- break;
-#endif
- default:
- srv_free_encryption_context(&ec);
- return NT_STATUS_INVALID_PARAMETER;
- }
- *pp_ec = ec;
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Free an encryption-allocated buffer.
-******************************************************************************/
-
-void srv_free_enc_buffer(char *buf)
-{
- /* We know this is an smb buffer, and we
- * didn't malloc, only copy, for a keepalive,
- * so ignore session keepalives. */
-
- if(CVAL(buf,0) == SMBkeepalive) {
- return;
- }
-
- if (srv_trans_enc_ctx) {
- common_free_enc_buffer(srv_trans_enc_ctx->es, buf);
- }
-}
-
-/******************************************************************************
- Decrypt an incoming buffer.
-******************************************************************************/
-
-NTSTATUS srv_decrypt_buffer(char *buf)
-{
- /* Ignore session keepalives. */
- if(CVAL(buf,0) == SMBkeepalive) {
- return NT_STATUS_OK;
- }
-
- if (srv_trans_enc_ctx) {
- return common_decrypt_buffer(srv_trans_enc_ctx->es, buf);
- }
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Encrypt an outgoing buffer. Return the encrypted pointer in buf_out.
-******************************************************************************/
-
-NTSTATUS srv_encrypt_buffer(char *buf, char **buf_out)
-{
- *buf_out = buf;
-
- /* Ignore session keepalives. */
- if(CVAL(buf,0) == SMBkeepalive) {
- return NT_STATUS_OK;
- }
-
- if (srv_trans_enc_ctx) {
- return common_encrypt_buffer(srv_trans_enc_ctx->es, buf, buf_out);
- }
- /* Not encrypting. */
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Do the gss encryption negotiation. Parameters are in/out.
- Until success we do everything on the partial enc ctx.
-******************************************************************************/
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
-static NTSTATUS srv_enc_spnego_gss_negotiate(unsigned char **ppdata, size_t *p_data_size, DATA_BLOB secblob)
-{
- OM_uint32 ret;
- OM_uint32 min;
- OM_uint32 flags = 0;
- gss_buffer_desc in_buf, out_buf;
- struct smb_tran_enc_state_gss *gss_state;
- DATA_BLOB auth_reply = data_blob_null;
- DATA_BLOB response = data_blob_null;
- NTSTATUS status;
-
- if (!partial_srv_trans_enc_ctx) {
- status = make_srv_encryption_context(SMB_TRANS_ENC_GSS, &partial_srv_trans_enc_ctx);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
- }
-
- gss_state = partial_srv_trans_enc_ctx->es->s.gss_state;
-
- in_buf.value = secblob.data;
- in_buf.length = secblob.length;
-
- out_buf.value = NULL;
- out_buf.length = 0;
-
- become_root();
-
- ret = gss_accept_sec_context(&min,
- &gss_state->gss_ctx,
- gss_state->creds,
- &in_buf,
- GSS_C_NO_CHANNEL_BINDINGS,
- NULL,
- NULL, /* Ignore oids. */
- &out_buf, /* To return. */
- &flags,
- NULL, /* Ingore time. */
- NULL); /* Ignore delegated creds. */
- unbecome_root();
-
- status = gss_err_to_ntstatus(ret, min);
- if (ret != GSS_S_COMPLETE && ret != GSS_S_CONTINUE_NEEDED) {
- return status;
- }
-
- /* Ensure we've got sign+seal available. */
- if (ret == GSS_S_COMPLETE) {
- if ((flags & (GSS_C_INTEG_FLAG|GSS_C_CONF_FLAG|GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG)) !=
- (GSS_C_INTEG_FLAG|GSS_C_CONF_FLAG|GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG)) {
- DEBUG(0,("srv_enc_spnego_gss_negotiate: quality of service not good enough "
- "for SMB sealing.\n"));
- gss_release_buffer(&min, &out_buf);
- return NT_STATUS_ACCESS_DENIED;
- }
- }
-
- auth_reply = data_blob(out_buf.value, out_buf.length);
- gss_release_buffer(&min, &out_buf);
-
- /* Wrap in SPNEGO. */
- response = spnego_gen_auth_response(&auth_reply, status, OID_KERBEROS5);
- data_blob_free(&auth_reply);
-
- SAFE_FREE(*ppdata);
- *ppdata = response.data;
- *p_data_size = response.length;
-
- return status;
-}
-#endif
-
-/******************************************************************************
- Do the NTLM SPNEGO (or raw) encryption negotiation. Parameters are in/out.
- Until success we do everything on the partial enc ctx.
-******************************************************************************/
-
-static NTSTATUS srv_enc_ntlm_negotiate(unsigned char **ppdata, size_t *p_data_size, DATA_BLOB secblob, BOOL spnego_wrap)
-{
- NTSTATUS status;
- DATA_BLOB chal = data_blob_null;
- DATA_BLOB response = data_blob_null;
-
- status = make_srv_encryption_context(SMB_TRANS_ENC_NTLM, &partial_srv_trans_enc_ctx);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- status = auth_ntlmssp_update(partial_srv_trans_enc_ctx->auth_ntlmssp_state, secblob, &chal);
-
- /* status here should be NT_STATUS_MORE_PROCESSING_REQUIRED
- * for success ... */
-
- if (spnego_wrap) {
- response = spnego_gen_auth_response(&chal, status, OID_NTLMSSP);
- data_blob_free(&chal);
- } else {
- /* Return the raw blob. */
- response = chal;
- }
-
- SAFE_FREE(*ppdata);
- *ppdata = response.data;
- *p_data_size = response.length;
- return status;
-}
-
-/******************************************************************************
- Do the SPNEGO encryption negotiation. Parameters are in/out.
- Based off code in smbd/sesssionsetup.c
- Until success we do everything on the partial enc ctx.
-******************************************************************************/
-
-static NTSTATUS srv_enc_spnego_negotiate(connection_struct *conn,
- unsigned char **ppdata,
- size_t *p_data_size,
- unsigned char **pparam,
- size_t *p_param_size)
-{
- NTSTATUS status;
- DATA_BLOB blob = data_blob_null;
- DATA_BLOB secblob = data_blob_null;
- BOOL got_kerberos_mechanism = False;
-
- blob = data_blob_const(*ppdata, *p_data_size);
-
- status = parse_spnego_mechanisms(blob, &secblob, &got_kerberos_mechanism);
- if (!NT_STATUS_IS_OK(status)) {
- return nt_status_squash(status);
- }
-
- /* We should have no partial context at this point. */
-
- srv_free_encryption_context(&partial_srv_trans_enc_ctx);
-
-#if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
- if (got_kerberos_mechanism && lp_use_kerberos_keytab() ) {
- status = srv_enc_spnego_gss_negotiate(ppdata, p_data_size, secblob);
- } else
-#endif
- {
- status = srv_enc_ntlm_negotiate(ppdata, p_data_size, secblob, True);
- }
-
- data_blob_free(&secblob);
-
- if (!NT_STATUS_EQUAL(status,NT_STATUS_MORE_PROCESSING_REQUIRED) && !NT_STATUS_IS_OK(status)) {
- srv_free_encryption_context(&partial_srv_trans_enc_ctx);
- return nt_status_squash(status);
- }
-
- if (NT_STATUS_IS_OK(status)) {
- /* Return the context we're using for this encryption state. */
- if (!(*pparam = SMB_MALLOC_ARRAY(unsigned char, 2))) {
- return NT_STATUS_NO_MEMORY;
- }
- SSVAL(*pparam,0,partial_srv_trans_enc_ctx->es->enc_ctx_num);
- *p_param_size = 2;
- }
-
- return status;
-}
-
-/******************************************************************************
- Complete a SPNEGO encryption negotiation. Parameters are in/out.
- We only get this for a NTLM auth second stage.
-******************************************************************************/
-
-static NTSTATUS srv_enc_spnego_ntlm_auth(connection_struct *conn,
- unsigned char **ppdata,
- size_t *p_data_size,
- unsigned char **pparam,
- size_t *p_param_size)
-{
- NTSTATUS status;
- DATA_BLOB blob = data_blob_null;
- DATA_BLOB auth = data_blob_null;
- DATA_BLOB auth_reply = data_blob_null;
- DATA_BLOB response = data_blob_null;
- struct smb_srv_trans_enc_ctx *ec = partial_srv_trans_enc_ctx;
-
- /* We must have a partial context here. */
-
- if (!ec || !ec->es || ec->auth_ntlmssp_state == NULL || ec->es->smb_enc_type != SMB_TRANS_ENC_NTLM) {
- srv_free_encryption_context(&partial_srv_trans_enc_ctx);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- blob = data_blob_const(*ppdata, *p_data_size);
- if (!spnego_parse_auth(blob, &auth)) {
- srv_free_encryption_context(&partial_srv_trans_enc_ctx);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- status = auth_ntlmssp_update(ec->auth_ntlmssp_state, auth, &auth_reply);
- data_blob_free(&auth);
-
- response = spnego_gen_auth_response(&auth_reply, status, OID_NTLMSSP);
- data_blob_free(&auth_reply);
-
- if (NT_STATUS_IS_OK(status)) {
- /* Return the context we're using for this encryption state. */
- if (!(*pparam = SMB_MALLOC_ARRAY(unsigned char, 2))) {
- return NT_STATUS_NO_MEMORY;
- }
- SSVAL(*pparam,0,ec->es->enc_ctx_num);
- *p_param_size = 2;
- }
-
- SAFE_FREE(*ppdata);
- *ppdata = response.data;
- *p_data_size = response.length;
- return status;
-}
-
-/******************************************************************************
- Raw NTLM encryption negotiation. Parameters are in/out.
- This function does both steps.
-******************************************************************************/
-
-static NTSTATUS srv_enc_raw_ntlm_auth(connection_struct *conn,
- unsigned char **ppdata,
- size_t *p_data_size,
- unsigned char **pparam,
- size_t *p_param_size)
-{
- NTSTATUS status;
- DATA_BLOB blob = data_blob_const(*ppdata, *p_data_size);
- DATA_BLOB response = data_blob_null;
- struct smb_srv_trans_enc_ctx *ec;
-
- if (!partial_srv_trans_enc_ctx) {
- /* This is the initial step. */
- status = srv_enc_ntlm_negotiate(ppdata, p_data_size, blob, False);
- if (!NT_STATUS_EQUAL(status,NT_STATUS_MORE_PROCESSING_REQUIRED) && !NT_STATUS_IS_OK(status)) {
- srv_free_encryption_context(&partial_srv_trans_enc_ctx);
- return nt_status_squash(status);
- }
- return status;
- }
-
- ec = partial_srv_trans_enc_ctx;
- if (!ec || !ec->es || ec->auth_ntlmssp_state == NULL || ec->es->smb_enc_type != SMB_TRANS_ENC_NTLM) {
- srv_free_encryption_context(&partial_srv_trans_enc_ctx);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- /* Second step. */
- status = auth_ntlmssp_update(partial_srv_trans_enc_ctx->auth_ntlmssp_state, blob, &response);
-
- if (NT_STATUS_IS_OK(status)) {
- /* Return the context we're using for this encryption state. */
- if (!(*pparam = SMB_MALLOC_ARRAY(unsigned char, 2))) {
- return NT_STATUS_NO_MEMORY;
- }
- SSVAL(*pparam,0,ec->es->enc_ctx_num);
- *p_param_size = 2;
- }
-
- /* Return the raw blob. */
- SAFE_FREE(*ppdata);
- *ppdata = response.data;
- *p_data_size = response.length;
- return status;
-}
-
-/******************************************************************************
- Do the SPNEGO encryption negotiation. Parameters are in/out.
-******************************************************************************/
-
-NTSTATUS srv_request_encryption_setup(connection_struct *conn,
- unsigned char **ppdata,
- size_t *p_data_size,
- unsigned char **pparam,
- size_t *p_param_size)
-{
- unsigned char *pdata = *ppdata;
-
- SAFE_FREE(*pparam);
- *p_param_size = 0;
-
- if (*p_data_size < 1) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (pdata[0] == ASN1_APPLICATION(0)) {
- /* its a negTokenTarg packet */
- return srv_enc_spnego_negotiate(conn, ppdata, p_data_size, pparam, p_param_size);
- }
-
- if (pdata[0] == ASN1_CONTEXT(1)) {
- /* It's an auth packet */
- return srv_enc_spnego_ntlm_auth(conn, ppdata, p_data_size, pparam, p_param_size);
- }
-
- /* Maybe it's a raw unwrapped auth ? */
- if (*p_data_size < 7) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (strncmp((char *)pdata, "NTLMSSP", 7) == 0) {
- return srv_enc_raw_ntlm_auth(conn, ppdata, p_data_size, pparam, p_param_size);
- }
-
- DEBUG(1,("srv_request_encryption_setup: Unknown packet\n"));
-
- return NT_STATUS_LOGON_FAILURE;
-}
-
-/******************************************************************************
- Negotiation was successful - turn on server-side encryption.
-******************************************************************************/
-
-static NTSTATUS check_enc_good(struct smb_srv_trans_enc_ctx *ec)
-{
- if (!ec || !ec->es) {
- return NT_STATUS_LOGON_FAILURE;
- }
-
- if (ec->es->smb_enc_type == SMB_TRANS_ENC_NTLM) {
- if ((ec->es->s.ntlmssp_state->neg_flags & (NTLMSSP_NEGOTIATE_SIGN|NTLMSSP_NEGOTIATE_SEAL)) !=
- (NTLMSSP_NEGOTIATE_SIGN|NTLMSSP_NEGOTIATE_SEAL)) {
- return NT_STATUS_INVALID_PARAMETER;
- }
- }
- /* Todo - check gssapi case. */
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Negotiation was successful - turn on server-side encryption.
-******************************************************************************/
-
-NTSTATUS srv_encryption_start(connection_struct *conn)
-{
- NTSTATUS status;
-
- /* Check that we are really doing sign+seal. */
- status = check_enc_good(partial_srv_trans_enc_ctx);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
- /* Throw away the context we're using currently (if any). */
- srv_free_encryption_context(&srv_trans_enc_ctx);
-
- /* Steal the partial pointer. Deliberate shallow copy. */
- srv_trans_enc_ctx = partial_srv_trans_enc_ctx;
- srv_trans_enc_ctx->es->enc_on = True;
-
- partial_srv_trans_enc_ctx = NULL;
- return NT_STATUS_OK;
-}
-
-/******************************************************************************
- Shutdown all server contexts.
-******************************************************************************/
-
-void server_encryption_shutdown(void)
-{
- srv_free_encryption_context(&partial_srv_trans_enc_ctx);
- srv_free_encryption_context(&srv_trans_enc_ctx);
-}
diff --git a/source/smbd/sec_ctx.c b/source/smbd/sec_ctx.c
index 97842419d5c..be00db9adb8 100644
--- a/source/smbd/sec_ctx.c
+++ b/source/smbd/sec_ctx.c
@@ -192,7 +192,7 @@ BOOL push_sec_ctx(void)
if (sec_ctx_stack_ndx == MAX_SEC_CTX_DEPTH) {
DEBUG(0, ("Security context stack overflow!\n"));
- smb_panic("Security context stack overflow!");
+ smb_panic("Security context stack overflow!\n");
}
/* Store previous user context */
@@ -228,70 +228,6 @@ BOOL push_sec_ctx(void)
}
/****************************************************************************
- Change UNIX security context. Calls panic if not successful so no return value.
-****************************************************************************/
-
-#ifndef HAVE_DARWIN_INITGROUPS
-
-/* Normal credential switch path. */
-
-static void set_unix_security_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups)
-{
- /* Start context switch */
- gain_root();
-#ifdef HAVE_SETGROUPS
- sys_setgroups(gid, ngroups, groups);
-#endif
- become_id(uid, gid);
- /* end context switch */
-}
-
-#else /* HAVE_DARWIN_INITGROUPS */
-
-/* The Darwin groups implementation is a little unusual. The list of
-* groups in the kernel credential is not exhaustive, but more like
-* a cache. The full group list is held in userspace and checked
-* dynamically.
-*
-* This is an optional mechanism, and setgroups(2) opts out
-* of it. That is, if you call setgroups, then the list of groups you
-* set are the only groups that are ever checked. This is not what we
-* want. We want to opt in to the dynamic resolution mechanism, so we
-* need to specify the uid of the user whose group list (cache) we are
-* setting.
-*
-* The Darwin rules are:
-* 1. Thou shalt setegid, initgroups and seteuid IN THAT ORDER
-* 2. Thou shalt not pass more that NGROUPS_MAX to initgroups
-* 3. Thou shalt leave the first entry in the groups list well alone
-*/
-
-#include <sys/syscall.h>
-
-static void set_unix_security_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups)
-{
- int max = groups_max();
-
- /* Start context switch */
- gain_root();
-
- become_gid(gid);
-
-
- if (syscall(SYS_initgroups, (ngroups > max) ? max : ngroups,
- groups, uid) == 1) {
- DEBUG(0, ("WARNING: failed to set group list "
- "(%d groups) for UID %ld: %s\n",
- ngroups, uid, strerror(errno)));
- }
-
- become_uid(uid);
- /* end context switch */
-}
-
-#endif /* HAVE_DARWIN_INITGROUPS */
-
-/****************************************************************************
Set the current security context to a given user.
****************************************************************************/
@@ -307,8 +243,11 @@ void set_sec_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups, NT_USER_TOKEN
debug_nt_user_token(DBGC_CLASS, 5, token);
debug_unix_user_token(DBGC_CLASS, 5, uid, gid, ngroups, groups);
- /* Change uid, gid and supplementary group list. */
- set_unix_security_ctx(uid, gid, ngroups, groups);
+ gain_root();
+
+#ifdef HAVE_SETGROUPS
+ sys_setgroups(ngroups, groups);
+#endif
ctx_p->ut.ngroups = ngroups;
@@ -338,6 +277,8 @@ void set_sec_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups, NT_USER_TOKEN
ctx_p->token = NULL;
}
+ become_id(uid, gid);
+
ctx_p->ut.uid = uid;
ctx_p->ut.gid = gid;
@@ -374,7 +315,7 @@ BOOL pop_sec_ctx(void)
if (sec_ctx_stack_ndx == 0) {
DEBUG(0, ("Security context stack underflow!\n"));
- smb_panic("Security context stack underflow!");
+ smb_panic("Security context stack underflow!\n");
}
ctx_p = &sec_ctx_stack[sec_ctx_stack_ndx];
@@ -393,13 +334,15 @@ BOOL pop_sec_ctx(void)
sec_ctx_stack_ndx--;
+ gain_root();
+
prev_ctx_p = &sec_ctx_stack[sec_ctx_stack_ndx];
- /* Change uid, gid and supplementary group list. */
- set_unix_security_ctx(prev_ctx_p->ut.uid,
- prev_ctx_p->ut.gid,
- prev_ctx_p->ut.ngroups,
- prev_ctx_p->ut.groups);
+#ifdef HAVE_SETGROUPS
+ sys_setgroups(prev_ctx_p->ut.ngroups, prev_ctx_p->ut.groups);
+#endif
+
+ become_id(prev_ctx_p->ut.uid, prev_ctx_p->ut.gid);
/* Update current_user stuff */
diff --git a/source/smbd/server.c b/source/smbd/server.c
index edbd8798474..89cceae2a6d 100644
--- a/source/smbd/server.c
+++ b/source/smbd/server.c
@@ -4,7 +4,6 @@
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Martin Pool 2002
Copyright (C) Jelmer Vernooij 2002-2003
- Copyright (C) James Peach 2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -67,7 +66,7 @@ struct event_context *smbd_event_context(void)
static struct event_context *ctx;
if (!ctx && !(ctx = event_context_init(NULL))) {
- smb_panic("Could not init smbd event context");
+ smb_panic("Could not init smbd event context\n");
}
return ctx;
}
@@ -78,7 +77,7 @@ struct messaging_context *smbd_messaging_context(void)
if (!ctx && !(ctx = messaging_init(NULL, server_id_self(),
smbd_event_context()))) {
- smb_panic("Could not init smbd messaging context");
+ smb_panic("Could not init smbd messaging context\n");
}
return ctx;
}
@@ -87,14 +86,10 @@ struct messaging_context *smbd_messaging_context(void)
What to do when smb.conf is updated.
********************************************************************/
-static void smb_conf_updated(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void smb_conf_updated(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
- DEBUG(10,("smb_conf_updated: Got message saying smb.conf was "
- "updated. Reloading.\n"));
+ DEBUG(10,("smb_conf_updated: Got message saying smb.conf was updated. Reloading.\n"));
reload_services(False);
}
@@ -103,13 +98,10 @@ static void smb_conf_updated(struct messaging_context *msg,
Delete a statcache entry.
********************************************************************/
-static void smb_stat_cache_delete(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_tnype,
- struct server_id server_id,
- DATA_BLOB *data)
+static void smb_stat_cache_delete(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
- const char *name = (const char *)data->data;
+ const char *name = (const char *)buf;
DEBUG(10,("smb_stat_cache_delete: delete name %s\n", name));
stat_cache_delete(name);
}
@@ -157,11 +149,9 @@ static void killkids(void)
somewhere else.
****************************************************************************/
-static void msg_sam_sync(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_sam_sync(int UNUSED(msg_type), struct process_id UNUSED(pid),
+ void *UNUSED(buf), size_t UNUSED(len),
+ void *private_data)
{
DEBUG(10, ("** sam sync message received, ignoring\n"));
}
@@ -171,18 +161,15 @@ static void msg_sam_sync(struct messaging_context *msg,
somewhere else.
****************************************************************************/
-static void msg_sam_repl(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_sam_repl(int msg_type, struct process_id pid,
+ void *buf, size_t len, void *private_data)
{
uint32 low_serial;
- if (data->length != sizeof(low_serial))
+ if (len != sizeof(uint32))
return;
- low_serial = *((uint32 *)data->data);
+ low_serial = *((uint32 *)buf);
DEBUG(3, ("received sam replication message, serial = 0x%04x\n",
low_serial));
@@ -208,44 +195,38 @@ static BOOL open_sockets_inetd(void)
return True;
}
-static void msg_exit_server(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB *data)
+static void msg_exit_server(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
DEBUG(3, ("got a SHUTDOWN message\n"));
exit_server_cleanly(NULL);
}
#ifdef DEVELOPER
-static void msg_inject_fault(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id src,
- DATA_BLOB *data)
+static void msg_inject_fault(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
int sig;
- if (data->length != sizeof(sig)) {
+ if (len != sizeof(int)) {
- DEBUG(0, ("Process %s sent bogus signal injection request\n",
- procid_str_static(&src)));
+ DEBUG(0, ("Process %llu sent bogus signal injection request\n",
+ (unsigned long long)src.pid));
return;
}
- sig = *(int *)data->data;
+ sig = *(int *)buf;
if (sig == -1) {
exit_server("internal error injected");
return;
}
#if HAVE_STRSIGNAL
- DEBUG(0, ("Process %s requested injection of signal %d (%s)\n",
- procid_str_static(&src), sig, strsignal(sig)));
+ DEBUG(0, ("Process %llu requested injection of signal %d (%s)\n",
+ (unsigned long long)src.pid, sig, strsignal(sig)));
#else
- DEBUG(0, ("Process %s requested injection of signal %d\n",
- procid_str_static(&src), sig));
+ DEBUG(0, ("Process %llu requested injection of signal %d\n",
+ (unsigned long long)src.pid, sig));
#endif
kill(sys_getpid(), sig);
@@ -316,33 +297,25 @@ static BOOL allowable_number_of_smbd_processes(void)
}
/****************************************************************************
- Are we idle enough that we could safely exit?
-****************************************************************************/
-
-static BOOL smbd_is_idle(void)
-{
- /* Currently we define "idle" as having no client connections. */
- return count_all_current_connections() == 0;
-}
-
-/****************************************************************************
Open the socket communication.
****************************************************************************/
-static BOOL open_sockets_smbd(enum smb_server_mode server_mode, const char *smb_ports)
+static BOOL open_sockets_smbd(BOOL is_daemon, BOOL interactive, const char *smb_ports)
{
+ int num_interfaces = iface_count();
int num_sockets = 0;
int fd_listenset[FD_SETSIZE];
fd_set listen_set;
int s;
int maxfd = 0;
int i;
- struct timeval idle_timeout = timeval_zero();
+ char *ports;
- if (server_mode == SERVER_MODE_INETD) {
+ if (!is_daemon) {
return open_sockets_inetd();
}
+
#ifdef HAVE_ATEXIT
{
static int atexit_set;
@@ -355,56 +328,143 @@ static BOOL open_sockets_smbd(enum smb_server_mode server_mode, const char *smb_
/* Stop zombies */
CatchSignal(SIGCLD, sig_cld);
-
+
FD_ZERO(&listen_set);
- /* At this point, it doesn't matter what daemon mode we are in, we
- * need some sockets to listen on.
- */
- num_sockets = smbd_sockinit(smb_ports, fd_listenset, &idle_timeout);
- if (num_sockets == 0) {
- return False;
+ /* use a reasonable default set of ports - listing on 445 and 139 */
+ if (!smb_ports) {
+ ports = lp_smb_ports();
+ if (!ports || !*ports) {
+ ports = smb_xstrdup(SMB_PORTS);
+ } else {
+ ports = smb_xstrdup(ports);
+ }
+ } else {
+ ports = smb_xstrdup(smb_ports);
}
- for (i = 0; i < num_sockets; ++i) {
- FD_SET(fd_listenset[i], &listen_set);
- maxfd = MAX(maxfd, fd_listenset[i]);
- }
+ if (lp_interfaces() && lp_bind_interfaces_only()) {
+ /* We have been given an interfaces line, and been
+ told to only bind to those interfaces. Create a
+ socket per interface and bind to only these.
+ */
+
+ /* Now open a listen socket for each of the
+ interfaces. */
+ for(i = 0; i < num_interfaces; i++) {
+ struct in_addr *ifip = iface_n_ip(i);
+ fstring tok;
+ const char *ptr;
+
+ if(ifip == NULL) {
+ DEBUG(0,("open_sockets_smbd: interface %d has NULL IP address !\n", i));
+ continue;
+ }
+
+ for (ptr=ports; next_token(&ptr, tok, " \t,", sizeof(tok)); ) {
+ unsigned port = atoi(tok);
+ if (port == 0 || port > 0xffff) {
+ continue;
+ }
+ s = fd_listenset[num_sockets] = open_socket_in(SOCK_STREAM, port, 0, ifip->s_addr, True);
+ if(s == -1)
+ return False;
+
+ /* ready to listen */
+ set_socket_options(s,"SO_KEEPALIVE");
+ set_socket_options(s,user_socket_options);
+
+ /* Set server socket to non-blocking for the accept. */
+ set_blocking(s,False);
+
+ if (listen(s, SMBD_LISTEN_BACKLOG) == -1) {
+ DEBUG(0,("listen: %s\n",strerror(errno)));
+ close(s);
+ return False;
+ }
+ FD_SET(s,&listen_set);
+ maxfd = MAX( maxfd, s);
+
+ num_sockets++;
+ if (num_sockets >= FD_SETSIZE) {
+ DEBUG(0,("open_sockets_smbd: Too many sockets to bind to\n"));
+ return False;
+ }
+ }
+ }
+ } else {
+ /* Just bind to 0.0.0.0 - accept connections
+ from anywhere. */
+
+ fstring tok;
+ const char *ptr;
+
+ num_interfaces = 1;
+
+ for (ptr=ports; next_token(&ptr, tok, " \t,", sizeof(tok)); ) {
+ unsigned port = atoi(tok);
+ if (port == 0 || port > 0xffff) continue;
+ /* open an incoming socket */
+ s = open_socket_in(SOCK_STREAM, port, 0,
+ interpret_addr(lp_socket_address()),True);
+ if (s == -1)
+ return(False);
+
+ /* ready to listen */
+ set_socket_options(s,"SO_KEEPALIVE");
+ set_socket_options(s,user_socket_options);
+
+ /* Set server socket to non-blocking for the accept. */
+ set_blocking(s,False);
+
+ if (listen(s, SMBD_LISTEN_BACKLOG) == -1) {
+ DEBUG(0,("open_sockets_smbd: listen: %s\n",
+ strerror(errno)));
+ close(s);
+ return False;
+ }
+
+ fd_listenset[num_sockets] = s;
+ FD_SET(s,&listen_set);
+ maxfd = MAX( maxfd, s);
+
+ num_sockets++;
+
+ if (num_sockets >= FD_SETSIZE) {
+ DEBUG(0,("open_sockets_smbd: Too many sockets to bind to\n"));
+ return False;
+ }
+ }
+ }
+
+ SAFE_FREE(ports);
/* Listen to messages */
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_SAM_SYNC, msg_sam_sync);
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_SAM_REPL, msg_sam_repl);
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SHUTDOWN, msg_exit_server);
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_FILE_RENAME, msg_file_was_renamed);
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_CONF_UPDATED, smb_conf_updated);
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_STAT_CACHE_DELETE, smb_stat_cache_delete);
- brl_register_msgs(smbd_messaging_context());
+ message_register(MSG_SMB_SAM_SYNC, msg_sam_sync, NULL);
+ message_register(MSG_SMB_SAM_REPL, msg_sam_repl, NULL);
+ message_register(MSG_SHUTDOWN, msg_exit_server, NULL);
+ message_register(MSG_SMB_FILE_RENAME, msg_file_was_renamed, NULL);
+ message_register(MSG_SMB_CONF_UPDATED, smb_conf_updated, NULL);
+ message_register(MSG_SMB_STAT_CACHE_DELETE, smb_stat_cache_delete,
+ NULL);
#ifdef DEVELOPER
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_INJECT_FAULT, msg_inject_fault);
+ message_register(MSG_SMB_INJECT_FAULT, msg_inject_fault, NULL);
#endif
/* now accept incoming connections - forking a new process
for each incoming connection */
DEBUG(2,("waiting for a connection\n"));
while (1) {
- struct timeval now;
- fd_set r_fds, w_fds;
+ fd_set lfds;
int num;
/* Free up temporary memory from the main smbd. */
lp_TALLOC_FREE();
/* Ensure we respond to PING and DEBUG messages from the main smbd. */
- message_dispatch(smbd_messaging_context());
+ message_dispatch();
if (got_sig_cld) {
pid_t pid;
@@ -415,31 +475,11 @@ static BOOL open_sockets_smbd(enum smb_server_mode server_mode, const char *smb_
}
}
- memcpy((char *)&r_fds, (char *)&listen_set,
+ memcpy((char *)&lfds, (char *)&listen_set,
sizeof(listen_set));
- FD_ZERO(&w_fds);
- GetTimeOfDay(&now);
-
- event_add_to_select_args(smbd_event_context(), &now,
- &r_fds, &w_fds, &idle_timeout,
- &maxfd);
-
- if (timeval_is_zero(&idle_timeout)) {
- num = sys_select(maxfd + 1, &r_fds, &w_fds,
- NULL, NULL);
- } else {
- num = sys_select(maxfd + 1, &r_fds, &w_fds,
- NULL, &idle_timeout);
-
- /* If the idle timeout fired and we are idle, exit
- * gracefully. We expect to be running under a process
- * controller that will restart us if necessry.
- */
- if (num == 0 && smbd_is_idle()) {
- exit_server_cleanly("idle timeout");
- }
- }
-
+
+ num = sys_select(maxfd+1,&lfds,NULL,NULL,NULL);
+
if (num == -1 && errno == EINTR) {
if (got_sig_term) {
exit_server_cleanly(NULL);
@@ -455,11 +495,7 @@ static BOOL open_sockets_smbd(enum smb_server_mode server_mode, const char *smb_
continue;
}
-
- if (run_events(smbd_event_context(), num, &r_fds, &w_fds)) {
- continue;
- }
-
+
/* check if we need to reload services */
check_reload(time(NULL));
@@ -472,11 +508,11 @@ static BOOL open_sockets_smbd(enum smb_server_mode server_mode, const char *smb_
s = -1;
for(i = 0; i < num_sockets; i++) {
- if(FD_ISSET(fd_listenset[i],&r_fds)) {
+ if(FD_ISSET(fd_listenset[i],&lfds)) {
s = fd_listenset[i];
/* Clear this so we don't look
at it again. */
- FD_CLR(fd_listenset[i],&r_fds);
+ FD_CLR(fd_listenset[i],&lfds);
break;
}
}
@@ -495,13 +531,8 @@ static BOOL open_sockets_smbd(enum smb_server_mode server_mode, const char *smb_
/* Ensure child is set to blocking mode */
set_blocking(smbd_server_fd(),True);
- /* In interactive mode, return with a connected socket.
- * Foreground and daemon modes should fork worker
- * processes.
- */
- if (server_mode == SERVER_MODE_INTERACTIVE) {
+ if (smbd_server_fd() != -1 && interactive)
return True;
- }
if (allowable_number_of_smbd_processes() &&
smbd_server_fd() != -1 &&
@@ -539,7 +570,7 @@ static BOOL open_sockets_smbd(enum smb_server_mode server_mode, const char *smb_
* CLEAR_IF_FIRST flags */
if (tdb_reopen_all(1) == -1) {
DEBUG(0,("tdb_reopen_all failed.\n"));
- smb_panic("tdb_reopen_all failed");
+ smb_panic("tdb_reopen_all failed.");
}
return True;
@@ -696,8 +727,7 @@ static void exit_server_common(enum server_exit_reason how,
invalidate_all_vuids();
- /* 3 second timeout. */
- print_notify_send_messages(smbd_messaging_context(), 3);
+ print_notify_send_messages(3); /* 3 second timeout. */
/* delete our entry in the connections database. */
yield_connection(NULL,"");
@@ -713,8 +743,6 @@ static void exit_server_common(enum server_exit_reason how,
locking_end();
printing_end();
- server_encryption_shutdown();
-
if (how != SERVER_EXIT_NORMAL) {
int oldlevel = DEBUGLEVEL;
char *last_inbuf = get_InBuffer();
@@ -786,35 +814,6 @@ static BOOL init_structs(void )
return True;
}
-/*
- * Send keepalive packets to our client
- */
-static BOOL keepalive_fn(const struct timeval *now, void *private_data)
-{
- if (!send_keepalive(smbd_server_fd())) {
- DEBUG( 2, ( "Keepalive failed - exiting.\n" ) );
- return False;
- }
- return True;
-}
-
-/*
- * Do the recurring check if we're idle
- */
-static BOOL deadtime_fn(const struct timeval *now, void *private_data)
-{
- if ((conn_num_open() == 0)
- || (conn_idle_all(now->tv_sec))) {
- DEBUG( 2, ( "Closing idle connection\n" ) );
- messaging_send(smbd_messaging_context(), procid_self(),
- MSG_SHUTDOWN, &data_blob_null);
- return False;
- }
-
- return True;
-}
-
-
/****************************************************************************
main program.
****************************************************************************/
@@ -828,25 +827,22 @@ extern void build_options(BOOL screen);
int main(int argc,const char *argv[])
{
/* shall I run as a daemon */
- BOOL no_process_group = False;
- BOOL log_stdout = False;
- const char *ports = NULL;
- const char *profile_level = NULL;
+ static BOOL is_daemon = False;
+ static BOOL interactive = False;
+ static BOOL Fork = True;
+ static BOOL no_process_group = False;
+ static BOOL log_stdout = False;
+ static char *ports = NULL;
+ static char *profile_level = NULL;
int opt;
poptContext pc;
- enum smb_server_mode server_mode = SERVER_MODE_DAEMON;
-
struct poptOption long_options[] = {
POPT_AUTOHELP
- {"daemon", 'D', POPT_ARG_VAL, &server_mode, SERVER_MODE_DAEMON,
- "Become a daemon (default)" },
- {"interactive", 'i', POPT_ARG_VAL, &server_mode, SERVER_MODE_INTERACTIVE,
- "Run interactive (not a daemon)"},
- {"foreground", 'F', POPT_ARG_VAL, &server_mode, SERVER_MODE_FOREGROUND,
- "Run daemon in foreground (for daemontools, etc.)" },
- {"no-process-group", '\0', POPT_ARG_VAL, &no_process_group, True,
- "Don't create a new process group" },
+ {"daemon", 'D', POPT_ARG_VAL, &is_daemon, True, "Become a daemon (default)" },
+ {"interactive", 'i', POPT_ARG_VAL, &interactive, True, "Run interactive (not a daemon)"},
+ {"foreground", 'F', POPT_ARG_VAL, &Fork, False, "Run daemon in foreground (for daemontools, etc.)" },
+ {"no-process-group", '\0', POPT_ARG_VAL, &no_process_group, True, "Don't create a new process group" },
{"log-stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
{"build-options", 'b', POPT_ARG_NONE, NULL, 'b', "Print build options" },
{"port", 'p', POPT_ARG_STRING, &ports, 0, "Listen on the specified ports"},
@@ -886,14 +882,16 @@ extern void build_options(BOOL screen);
set_remote_machine_name("smbd", False);
- if (server_mode == SERVER_MODE_INTERACTIVE) {
+ if (interactive) {
+ Fork = False;
log_stdout = True;
- if (DEBUGLEVEL >= 9) {
- talloc_enable_leak_report();
- }
}
- if (log_stdout && server_mode == SERVER_MODE_DAEMON) {
+ if (interactive && (DEBUGLEVEL >= 9)) {
+ talloc_enable_leak_report();
+ }
+
+ if (log_stdout && Fork) {
DEBUG(0,("ERROR: Can't log to stdout (-S) unless daemon is in foreground (-F) or interactive (-i)\n"));
exit(1);
}
@@ -967,13 +965,13 @@ extern void build_options(BOOL screen);
init_structs();
#ifdef WITH_PROFILE
- if (!profile_setup(smbd_messaging_context(), False)) {
+ if (!profile_setup(False)) {
DEBUG(0,("ERROR: failed to setup profiling\n"));
return -1;
}
if (profile_level != NULL) {
int pl = atoi(profile_level);
- struct server_id src;
+ struct process_id src;
DEBUG(1, ("setting profiling level: %s\n",profile_level));
src.pid = getpid();
@@ -983,19 +981,21 @@ extern void build_options(BOOL screen);
DEBUG(3,( "loaded services\n"));
- if (is_a_socket(0)) {
- if (server_mode == SERVER_MODE_DAEMON) {
- DEBUG(0,("standard input is a socket, "
- "assuming -F option\n"));
- }
- server_mode = SERVER_MODE_INETD;
+ if (!is_daemon && !is_a_socket(0)) {
+ if (!interactive)
+ DEBUG(0,("standard input is not a socket, assuming -D option\n"));
+
+ /*
+ * Setting is_daemon here prevents us from eventually calling
+ * the open_sockets_inetd()
+ */
+
+ is_daemon = True;
}
- if (server_mode == SERVER_MODE_DAEMON) {
+ if (is_daemon && !interactive) {
DEBUG( 3, ( "Becoming a daemon.\n" ) );
- become_daemon(True, no_process_group);
- } else if (server_mode == SERVER_MODE_FOREGROUND) {
- become_daemon(False, no_process_group);
+ become_daemon(Fork, no_process_group);
}
#if HAVE_SETPGID
@@ -1003,28 +1003,24 @@ extern void build_options(BOOL screen);
* If we're interactive we want to set our own process group for
* signal management.
*/
- if (server_mode == SERVER_MODE_INTERACTIVE && !no_process_group) {
+ if (interactive && !no_process_group)
setpgid( (pid_t)0, (pid_t)0);
- }
#endif
if (!directory_exist(lp_lockdir(), NULL))
mkdir(lp_lockdir(), 0755);
- if (server_mode != SERVER_MODE_INETD &&
- server_mode != SERVER_MODE_INTERACTIVE) {
+ if (is_daemon)
pidfile_create("smbd");
- }
/* Setup all the TDB's - including CLEAR_IF_FIRST tdb's. */
-
- if (smbd_messaging_context() == NULL)
+ if (!message_init())
exit(1);
/* Initialise the password backed before the global_sam_sid
to ensure that we fetch from ldap before we make a domain sid up */
- if(!initialize_password_db(False, smbd_event_context()))
+ if(!initialize_password_db(False))
exit(1);
if (!secrets_init()) {
@@ -1040,7 +1036,7 @@ extern void build_options(BOOL screen);
if (!session_init())
exit(1);
- if (!connections_init(True))
+ if (conn_tdb_ctx() == NULL)
exit(1);
if (!locking_init(0))
@@ -1056,7 +1052,7 @@ extern void build_options(BOOL screen);
exit(1);
#endif
- if (!print_backend_init(smbd_messaging_context()))
+ if (!print_backend_init())
exit(1);
if (!init_guest_info()) {
@@ -1067,16 +1063,15 @@ extern void build_options(BOOL screen);
/* Setup the main smbd so that we can get messages. */
/* don't worry about general printing messages here */
- claim_connection(NULL,"",FLAG_MSG_GENERAL|FLAG_MSG_SMBD);
+ claim_connection(NULL,"",0,True,FLAG_MSG_GENERAL|FLAG_MSG_SMBD);
/* only start the background queue daemon if we are
running as a daemon -- bad things will happen if
smbd is launched via inetd and we fork a copy of
ourselves here */
- if (server_mode != SERVER_MODE_INETD &&
- server_mode != SERVER_MODE_INTERACTIVE) {
+
+ if ( is_daemon && !interactive )
start_background_queue();
- }
/* Always attempt to initialize DMAPI. We will only use it later if
* lp_dmapi_support is set on the share, but we need a single global
@@ -1084,9 +1079,8 @@ extern void build_options(BOOL screen);
*/
dmapi_init_session();
- if (!open_sockets_smbd(server_mode, ports)) {
+ if (!open_sockets_smbd(is_daemon, interactive, ports))
exit(1);
- }
/*
* everything after this point is run after the fork()
@@ -1099,8 +1093,7 @@ extern void build_options(BOOL screen);
/* Possibly reload the services file. Only worth doing in
* daemon mode. In inetd mode, we know we only just loaded this.
*/
- if (server_mode != SERVER_MODE_INETD &&
- server_mode != SERVER_MODE_INTERACTIVE) {
+ if (is_daemon) {
reload_services(True);
}
@@ -1115,38 +1108,14 @@ extern void build_options(BOOL screen);
}
/* Setup oplocks */
- if (!init_oplocks(smbd_messaging_context()))
+ if (!init_oplocks())
exit(1);
/* Setup aio signal handler. */
initialize_async_io_handler();
- /*
- * For clustering, we need to re-init our ctdbd connection after the
- * fork
- */
- if (!NT_STATUS_IS_OK(messaging_reinit(smbd_messaging_context())))
- exit(1);
-
/* register our message handlers */
- messaging_register(smbd_messaging_context(), NULL,
- MSG_SMB_FORCE_TDIS, msg_force_tdis);
-
- if ((lp_keepalive() != 0)
- && !(event_add_idle(smbd_event_context(), NULL,
- timeval_set(lp_keepalive(), 0),
- "keepalive", keepalive_fn,
- NULL))) {
- DEBUG(0, ("Could not add keepalive event\n"));
- exit(1);
- }
-
- if (!(event_add_idle(smbd_event_context(), NULL,
- timeval_set(IDLE_CLOSED_TIMEOUT, 0),
- "deadtime", deadtime_fn, NULL))) {
- DEBUG(0, ("Could not add deadtime event\n"));
- exit(1);
- }
+ message_register(MSG_SMB_FORCE_TDIS, msg_force_tdis, NULL);
smbd_process();
diff --git a/source/smbd/service.c b/source/smbd/service.c
index 2b842236958..bfe9649ea4a 100644
--- a/source/smbd/service.c
+++ b/source/smbd/service.c
@@ -254,104 +254,6 @@ int add_home_service(const char *service, const char *username, const char *home
}
-static int load_registry_service(const char *servicename)
-{
- struct registry_key *key;
- char *path;
- WERROR err;
-
- uint32 i;
- char *value_name;
- struct registry_value *value;
-
- int res = -1;
-
- if (!lp_registry_shares()) {
- return -1;
- }
-
- if (asprintf(&path, "%s\\%s", KEY_SMBCONF, servicename) == -1) {
- return -1;
- }
-
- err = reg_open_path(NULL, path, REG_KEY_READ, get_root_nt_token(),
- &key);
- SAFE_FREE(path);
-
- if (!W_ERROR_IS_OK(err)) {
- return -1;
- }
-
- res = lp_add_service(servicename, -1);
- if (res == -1) {
- goto error;
- }
-
- for (i=0;
- W_ERROR_IS_OK(reg_enumvalue(key, key, i, &value_name, &value));
- i++) {
- switch (value->type) {
- case REG_DWORD: {
- char *tmp;
- if (asprintf(&tmp, "%d", value->v.dword) == -1) {
- continue;
- }
- lp_do_parameter(res, value_name, tmp);
- SAFE_FREE(tmp);
- break;
- }
- case REG_SZ: {
- lp_do_parameter(res, value_name, value->v.sz.str);
- break;
- }
- default:
- /* Ignore all the rest */
- break;
- }
-
- TALLOC_FREE(value_name);
- TALLOC_FREE(value);
- }
-
- if (!service_ok(res)) {
- /* this is actually never reached, since
- * service_ok only returns False if the service
- * entry does not have a service name, and we _know_
- * we do have a service name here... */
- res = -1;
- }
-
- error:
-
- TALLOC_FREE(key);
- return res;
-}
-
-void load_registry_shares(void)
-{
- struct registry_key *key;
- char *name;
- WERROR err;
- int i;
-
- if (!lp_registry_shares()) {
- return;
- }
-
- err = reg_open_path(NULL, KEY_SMBCONF, REG_KEY_READ,
- get_root_nt_token(), &key);
- if (!(W_ERROR_IS_OK(err))) {
- return;
- }
-
- for (i=0; W_ERROR_IS_OK(reg_enumkey(key, key, i, &name, NULL)); i++) {
- load_registry_service(name);
- TALLOC_FREE(name);
- }
-
- TALLOC_FREE(key);
- return;
-}
/**
* Find a service entry.
@@ -445,10 +347,6 @@ int find_service(fstring service)
}
}
- if (iService < 0) {
- iService = load_registry_service(service);
- }
-
if (iService >= 0) {
if (!VALID_SNUM(iService)) {
DEBUG(0,("Invalid snum %d for %s\n",iService, service));
@@ -790,6 +688,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
conn->veto_list = NULL;
conn->hide_list = NULL;
conn->veto_oplock_list = NULL;
+ conn->aio_write_behind_list = NULL;
string_set(&conn->dirpath,"");
string_set(&conn->user,user);
@@ -989,31 +888,17 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
}
/* ROOT Activities: */
- /*
- * Enforce the max connections parameter.
- */
-
- if ((lp_max_connections(snum) > 0)
- && (count_current_connections(lp_servicename(SNUM(conn)), True) >=
- lp_max_connections(snum))) {
-
- DEBUG(1, ("Max connections (%d) exceeded for %s\n",
- lp_max_connections(snum), lp_servicename(snum)));
+ /* check number of connections */
+ if (!claim_connection(conn,
+ lp_servicename(snum),
+ lp_max_connections(snum),
+ False,0)) {
+ DEBUG(1,("too many connections - rejected\n"));
conn_free(conn);
*status = NT_STATUS_INSUFFICIENT_RESOURCES;
return NULL;
}
- /*
- * Get us an entry in the connections db
- */
- if (!claim_connection(conn, lp_servicename(snum), 0)) {
- DEBUG(1, ("Could not store connections entry\n"));
- conn_free(conn);
- *status = NT_STATUS_INTERNAL_DB_ERROR;
- return NULL;
- }
-
/* Preexecs are done here as they might make the dir we are to ChDir
* to below */
/* execute any "root preexec = " line */
@@ -1244,7 +1129,7 @@ connection_struct *make_connection(const char *service_in, DATA_BLOB password,
if (strequal(service_in,HOMES_NAME)) {
if(lp_security() != SEC_SHARE) {
- DATA_BLOB no_pw = data_blob_null;
+ DATA_BLOB no_pw = data_blob(NULL, 0);
if (vuser->homes_snum == -1) {
DEBUG(2, ("[homes] share not available for "
"this user because it was not found "
@@ -1280,7 +1165,7 @@ connection_struct *make_connection(const char *service_in, DATA_BLOB password,
} else if ((lp_security() != SEC_SHARE) && (vuser->homes_snum != -1)
&& strequal(service_in,
lp_servicename(vuser->homes_snum))) {
- DATA_BLOB no_pw = data_blob_null;
+ DATA_BLOB no_pw = data_blob(NULL, 0);
DEBUG(5, ("making a connection to 'homes' service [%s] "
"created at session setup time\n", service_in));
return make_connection_snum(vuser->homes_snum,
diff --git a/source/smbd/session.c b/source/smbd/session.c
index 6b1bb0cbee5..bcb840a3fe4 100644
--- a/source/smbd/session.c
+++ b/source/smbd/session.c
@@ -29,25 +29,19 @@
#include "includes.h"
+static TDB_CONTEXT *tdb;
+
/********************************************************************
********************************************************************/
-static struct db_context *session_db_ctx(void)
-{
- static struct db_context *ctx;
-
- if (ctx)
- return ctx;
-
- ctx = db_open(NULL, lock_path("sessionid.tdb"), 0,
- TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
- O_RDWR | O_CREAT, 0644);
- return ctx;
-}
-
BOOL session_init(void)
{
- if (session_db_ctx() == NULL) {
+ if (tdb)
+ return True;
+
+ tdb = tdb_open_log(lock_path("sessionid.tdb"), 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
+ O_RDWR | O_CREAT, 0644);
+ if (!tdb) {
DEBUG(1,("session_init: failed to open sessionid tdb\n"));
return False;
}
@@ -61,17 +55,18 @@ BOOL session_init(void)
BOOL session_claim(user_struct *vuser)
{
- TDB_DATA key, data;
int i = 0;
+ TDB_DATA data;
struct sockaddr sa;
struct in_addr *client_ip;
struct sessionid sessionid;
- struct server_id pid = procid_self();
+ uint32 pid = (uint32)sys_getpid();
+ TDB_DATA key;
fstring keystr;
char * hostname;
- struct db_context *ctx;
- struct db_record *rec;
- NTSTATUS status;
+ int tdb_store_flag; /* If using utmp, we do an inital 'lock hold' store,
+ but we don't need this if we are just using the
+ (unique) pid/vuid combination */
vuser->session_keystr = NULL;
@@ -81,9 +76,8 @@ BOOL session_claim(user_struct *vuser)
return True;
}
- if (!(ctx = session_db_ctx())) {
+ if (!session_init())
return False;
- }
ZERO_STRUCT(sessionid);
@@ -91,69 +85,35 @@ BOOL session_claim(user_struct *vuser)
data.dsize = 0;
if (lp_utmp()) {
-
for (i=1;i<MAX_SESSION_ID;i++) {
-
- /*
- * This is very inefficient and needs fixing -- vl
- */
-
- struct server_id sess_pid;
-
- snprintf(keystr, sizeof(keystr), "ID/%d", i);
- key = string_term_tdb_data(keystr);
-
- rec = ctx->fetch_locked(ctx, NULL, key);
-
- if (rec == NULL) {
- DEBUG(1, ("Could not lock \"%s\"\n", keystr));
- return False;
- }
-
- if (rec->value.dsize != sizeof(sessionid)) {
- DEBUG(1, ("Re-using invalid record\n"));
- break;
- }
-
- sess_pid = ((struct sessionid *)rec->value.dptr)->pid;
-
- if (!process_exists(sess_pid)) {
- DEBUG(5, ("%s has died -- re-using session\n",
- procid_str_static(&sess_pid)));
- break;
- }
-
- TALLOC_FREE(rec);
+ slprintf(keystr, sizeof(keystr)-1, "ID/%d", i);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr)+1;
+
+ if (tdb_store(tdb, key, data, TDB_INSERT) == 0) break;
}
if (i == MAX_SESSION_ID) {
- SMB_ASSERT(rec == NULL);
- DEBUG(1,("session_claim: out of session IDs "
- "(max is %d)\n", MAX_SESSION_ID));
+ DEBUG(1,("session_claim: out of session IDs (max is %d)\n",
+ MAX_SESSION_ID));
return False;
}
-
- snprintf(sessionid.id_str, sizeof(sessionid.id_str),
- SESSION_UTMP_TEMPLATE, i);
+ slprintf(sessionid.id_str, sizeof(sessionid.id_str)-1, SESSION_UTMP_TEMPLATE, i);
+ tdb_store_flag = TDB_MODIFY;
} else
{
- snprintf(keystr, sizeof(keystr), "ID/%s/%u",
- procid_str_static(&pid), vuser->vuid);
- key = string_term_tdb_data(keystr);
-
- rec = ctx->fetch_locked(ctx, NULL, key);
-
- if (rec == NULL) {
- DEBUG(1, ("Could not lock \"%s\"\n", keystr));
- return False;
- }
-
- snprintf(sessionid.id_str, sizeof(sessionid.id_str),
+ slprintf(keystr, sizeof(keystr)-1, "ID/%lu/%u",
+ (long unsigned int)sys_getpid(),
+ vuser->vuid);
+ slprintf(sessionid.id_str, sizeof(sessionid.id_str)-1,
SESSION_TEMPLATE, (long unsigned int)sys_getpid(),
vuser->vuid);
- }
- SMB_ASSERT(rec != NULL);
+ key.dptr = keystr;
+ key.dsize = strlen(keystr)+1;
+
+ tdb_store_flag = TDB_REPLACE;
+ }
/* If 'hostname lookup' == yes, then do the DNS lookup. This is
needed because utmp and PAM both expect DNS names
@@ -178,25 +138,19 @@ BOOL session_claim(user_struct *vuser)
client_ip = client_inaddr(&sa);
- if (!smb_pam_claim_session(sessionid.username, sessionid.id_str,
- sessionid.hostname)) {
+ if (!smb_pam_claim_session(sessionid.username, sessionid.id_str, sessionid.hostname)) {
DEBUG(1,("pam_session rejected the session for %s [%s]\n",
sessionid.username, sessionid.id_str));
-
- TALLOC_FREE(rec);
+ if (tdb_store_flag == TDB_MODIFY) {
+ tdb_delete(tdb, key);
+ }
return False;
}
- data.dptr = (uint8 *)&sessionid;
+ data.dptr = (char *)&sessionid;
data.dsize = sizeof(sessionid);
-
- status = rec->store(rec, data, TDB_REPLACE);
-
- TALLOC_FREE(rec);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(1,("session_claim: unable to create session id "
- "record: %s\n", nt_errstr(status)));
+ if (tdb_store(tdb, key, data, tdb_store_flag) != 0) {
+ DEBUG(1,("session_claim: unable to create session id record\n"));
return False;
}
@@ -206,12 +160,9 @@ BOOL session_claim(user_struct *vuser)
sessionid.id_str, sessionid.id_num);
}
- TALLOC_FREE(rec);
-
- vuser->session_keystr = talloc_strdup(vuser, keystr);
+ vuser->session_keystr = SMB_STRDUP(keystr);
if (!vuser->session_keystr) {
- DEBUG(0, ("session_claim: talloc_strdup() failed for "
- "session_keystr\n"));
+ DEBUG(0, ("session_claim: strdup() failed for session_keystr\n"));
return False;
}
return True;
@@ -223,60 +174,54 @@ BOOL session_claim(user_struct *vuser)
void session_yield(user_struct *vuser)
{
- TDB_DATA key;
+ TDB_DATA dbuf;
struct sessionid sessionid;
struct in_addr *client_ip;
- struct db_context *ctx;
- struct db_record *rec;
+ TDB_DATA key;
- if (!(ctx = session_db_ctx())) return;
+ if (!tdb) return;
if (!vuser->session_keystr) {
return;
}
- key = string_term_tdb_data(vuser->session_keystr);
+ key.dptr = vuser->session_keystr;
+ key.dsize = strlen(vuser->session_keystr)+1;
- if (!(rec = ctx->fetch_locked(ctx, NULL, key))) {
- return;
- }
+ dbuf = tdb_fetch(tdb, key);
- if (rec->value.dsize != sizeof(sessionid))
+ if (dbuf.dsize != sizeof(sessionid))
return;
- memcpy(&sessionid, rec->value.dptr, sizeof(sessionid));
+ memcpy(&sessionid, dbuf.dptr, sizeof(sessionid));
client_ip = interpret_addr2(sessionid.ip_addr);
+ SAFE_FREE(dbuf.dptr);
+
if (lp_utmp()) {
sys_utmp_yield(sessionid.username, sessionid.hostname,
client_ip,
sessionid.id_str, sessionid.id_num);
}
- smb_pam_close_session(sessionid.username, sessionid.id_str,
- sessionid.hostname);
+ smb_pam_close_session(sessionid.username, sessionid.id_str, sessionid.hostname);
- rec->delete_rec(rec);
-
- TALLOC_FREE(rec);
+ tdb_delete(tdb, key);
}
/********************************************************************
********************************************************************/
-static BOOL session_traverse(int (*fn)(struct db_record *db,
- void *private_data),
- void *private_data)
+BOOL session_traverse(int (*fn)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *),
+ void *state)
{
- struct db_context *ctx;
-
- if (!(ctx = session_db_ctx())) {
+ if (!session_init()) {
DEBUG(3, ("No tdb opened\n"));
return False;
}
- ctx->traverse_read(ctx, fn, private_data);
+ tdb_traverse(tdb, fn, state);
return True;
}
@@ -284,29 +229,25 @@ static BOOL session_traverse(int (*fn)(struct db_record *db,
********************************************************************/
struct session_list {
- TALLOC_CTX *mem_ctx;
int count;
struct sessionid *sessions;
};
-static int gather_sessioninfo(struct db_record *rec, void *state)
+static int gather_sessioninfo(TDB_CONTEXT *stdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state)
{
+ uint32 i;
struct session_list *sesslist = (struct session_list *) state;
- const struct sessionid *current =
- (const struct sessionid *) rec->value.dptr;
-
- sesslist->sessions = TALLOC_REALLOC_ARRAY(
- sesslist->mem_ctx, sesslist->sessions, struct sessionid,
- sesslist->count+1);
+ const struct sessionid *current = (const struct sessionid *) dbuf.dptr;
+ i = sesslist->count;
+
+ sesslist->sessions = SMB_REALLOC_ARRAY(sesslist->sessions, struct sessionid, i+1);
if (!sesslist->sessions) {
sesslist->count = 0;
return -1;
}
- memcpy(&sesslist->sessions[sesslist->count], current,
- sizeof(struct sessionid));
-
+ memcpy(&sesslist->sessions[i], current, sizeof(struct sessionid));
sesslist->count++;
DEBUG(7,("gather_sessioninfo session from %s@%s\n",
@@ -318,11 +259,10 @@ static int gather_sessioninfo(struct db_record *rec, void *state)
/********************************************************************
********************************************************************/
-int list_sessions(TALLOC_CTX *mem_ctx, struct sessionid **session_list)
+int list_sessions(struct sessionid **session_list)
{
struct session_list sesslist;
- sesslist.mem_ctx = mem_ctx;
sesslist.count = 0;
sesslist.sessions = NULL;
diff --git a/source/smbd/sesssetup.c b/source/smbd/sesssetup.c
index e938c0bbaca..05a5962056c 100644
--- a/source/smbd/sesssetup.c
+++ b/source/smbd/sesssetup.c
@@ -96,18 +96,15 @@ static void sessionsetup_start_signing_engine(const auth_serversupplied_info *se
Send a security blob via a session setup reply.
****************************************************************************/
-static BOOL reply_sesssetup_blob(connection_struct *conn,
- const char *inbuf,
- char *outbuf,
- DATA_BLOB blob,
- NTSTATUS nt_status)
+static BOOL reply_sesssetup_blob(connection_struct *conn, char *outbuf,
+ DATA_BLOB blob, NTSTATUS nt_status)
{
char *p;
if (!NT_STATUS_IS_OK(nt_status) && !NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
ERROR_NT(nt_status_squash(nt_status));
} else {
- set_message(inbuf,outbuf,4,0,True);
+ set_message(outbuf,4,0,True);
nt_status = nt_status_squash(nt_status);
SIVAL(outbuf, smb_rcls, NT_STATUS_V(nt_status));
@@ -121,7 +118,7 @@ static BOOL reply_sesssetup_blob(connection_struct *conn,
p += add_signature( outbuf, p );
- set_message_end(inbuf,outbuf,p);
+ set_message_end(outbuf,p);
}
show_msg(outbuf);
@@ -177,7 +174,7 @@ static BOOL make_krb5_skew_error(DATA_BLOB *pblob_out)
char *host_princ_s = NULL;
BOOL ret = False;
- *pblob_out = data_blob_null;
+ *pblob_out = data_blob(NULL,0);
initialize_krb5_error_table();
kerr = krb5_init_context(&context);
@@ -243,9 +240,9 @@ static int reply_spnego_kerberos(connection_struct *conn,
PAC_DATA *pac_data;
DATA_BLOB ap_rep, ap_rep_wrapped, response;
auth_serversupplied_info *server_info = NULL;
- DATA_BLOB session_key = data_blob_null;
+ DATA_BLOB session_key = data_blob(NULL, 0);
uint8 tok_id[2];
- DATA_BLOB nullblob = data_blob_null;
+ DATA_BLOB nullblob = data_blob(NULL, 0);
fstring real_username;
BOOL map_domainuser_to_guest = False;
BOOL username_was_mapped;
@@ -270,9 +267,7 @@ static int reply_spnego_kerberos(connection_struct *conn,
return ERROR_NT(nt_status_squash(NT_STATUS_LOGON_FAILURE));
}
- ret = ads_verify_ticket(mem_ctx, lp_realm(), 0, &ticket,
- &client, &pac_data, &ap_rep,
- &session_key, True);
+ ret = ads_verify_ticket(mem_ctx, lp_realm(), 0, &ticket, &client, &pac_data, &ap_rep, &session_key);
data_blob_free(&ticket);
@@ -297,7 +292,7 @@ static int reply_spnego_kerberos(connection_struct *conn,
}
ap_rep_wrapped = spnego_gen_krb5_wrap(ap_rep, TOK_ID_KRB_ERROR);
response = spnego_gen_auth_response(&ap_rep_wrapped, ret, OID_KERBEROS5_OLD);
- reply_sesssetup_blob(conn, inbuf, outbuf, response, NT_STATUS_MORE_PROCESSING_REQUIRED);
+ reply_sesssetup_blob(conn, outbuf, response, NT_STATUS_MORE_PROCESSING_REQUIRED);
/*
* In this one case we don't invalidate the intermediate vuid.
@@ -525,7 +520,7 @@ static int reply_spnego_kerberos(connection_struct *conn,
/* current_user_info is changed on new vuid */
reload_services( True );
- set_message(inbuf,outbuf,4,0,True);
+ set_message(outbuf,4,0,True);
SSVAL(outbuf, smb_vwv3, 0);
if (server_info->guest) {
@@ -541,10 +536,10 @@ static int reply_spnego_kerberos(connection_struct *conn,
if (NT_STATUS_IS_OK(ret)) {
ap_rep_wrapped = spnego_gen_krb5_wrap(ap_rep, TOK_ID_KRB_AP_REP);
} else {
- ap_rep_wrapped = data_blob_null;
+ ap_rep_wrapped = data_blob(NULL, 0);
}
response = spnego_gen_auth_response(&ap_rep_wrapped, ret, OID_KERBEROS5_OLD);
- reply_sesssetup_blob(conn, inbuf, outbuf, response, ret);
+ reply_sesssetup_blob(conn, outbuf, response, ret);
data_blob_free(&ap_rep);
data_blob_free(&ap_rep_wrapped);
@@ -584,7 +579,7 @@ static BOOL reply_spnego_ntlmssp(connection_struct *conn, char *inbuf, char *out
if (NT_STATUS_IS_OK(nt_status)) {
int sess_vuid;
- DATA_BLOB nullblob = data_blob_null;
+ DATA_BLOB nullblob = data_blob(NULL, 0);
DATA_BLOB session_key = data_blob((*auth_ntlmssp_state)->ntlmssp_state->session_key.data, (*auth_ntlmssp_state)->ntlmssp_state->session_key.length);
/* register_vuid keeps the server info */
@@ -598,7 +593,7 @@ static BOOL reply_spnego_ntlmssp(connection_struct *conn, char *inbuf, char *out
/* current_user_info is changed on new vuid */
reload_services( True );
- set_message(inbuf,outbuf,4,0,True);
+ set_message(outbuf,4,0,True);
SSVAL(outbuf, smb_vwv3, 0);
if (server_info->guest) {
@@ -617,7 +612,7 @@ static BOOL reply_spnego_ntlmssp(connection_struct *conn, char *inbuf, char *out
response = *ntlmssp_blob;
}
- ret = reply_sesssetup_blob(conn, inbuf, outbuf, response, nt_status);
+ ret = reply_sesssetup_blob(conn, outbuf, response, nt_status);
if (wrap) {
data_blob_free(&response);
}
@@ -639,7 +634,7 @@ static BOOL reply_spnego_ntlmssp(connection_struct *conn, char *inbuf, char *out
Is this a krb5 mechanism ?
****************************************************************************/
-NTSTATUS parse_spnego_mechanisms(DATA_BLOB blob_in, DATA_BLOB *pblob_out, BOOL *p_is_krb5)
+static NTSTATUS parse_spnego_mechanisms(DATA_BLOB blob_in, DATA_BLOB *pblob_out, BOOL *p_is_krb5)
{
char *OIDs[ASN1_MAX_OIDS];
int i;
@@ -750,9 +745,9 @@ static int reply_spnego_auth(connection_struct *conn, char *inbuf, char *outbuf,
DATA_BLOB blob1,
AUTH_NTLMSSP_STATE **auth_ntlmssp_state)
{
- DATA_BLOB auth = data_blob_null;
- DATA_BLOB auth_reply = data_blob_null;
- DATA_BLOB secblob = data_blob_null;
+ DATA_BLOB auth = data_blob(NULL,0);
+ DATA_BLOB auth_reply = data_blob(NULL,0);
+ DATA_BLOB secblob = data_blob(NULL,0);
NTSTATUS status = NT_STATUS_INVALID_PARAMETER;
if (!spnego_parse_auth(blob1, &auth)) {
@@ -992,7 +987,8 @@ static NTSTATUS check_spnego_blob_complete(uint16 smbpid, uint16 vuid, DATA_BLOB
}
/* We must store this blob until complete. */
- if (!(pad = SMB_MALLOC_P(struct pending_auth_data))) {
+ pad = SMB_MALLOC(sizeof(struct pending_auth_data));
+ if (!pad) {
return NT_STATUS_NO_MEMORY;
}
pad->needed_len = needed_len - pblob->length;
@@ -1029,7 +1025,6 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
user_struct *vuser = NULL;
NTSTATUS status = NT_STATUS_OK;
uint16 smbpid = SVAL(inbuf,smb_pid);
- uint16 smb_flag2 = SVAL(inbuf, smb_flg2);
DEBUG(3,("Doing spnego session setup\n"));
@@ -1058,12 +1053,9 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
#endif
p2 = inbuf + smb_vwv13 + data_blob_len;
- p2 += srvstr_pull_buf(inbuf, smb_flag2, native_os, p2,
- sizeof(native_os), STR_TERMINATE);
- p2 += srvstr_pull_buf(inbuf, smb_flag2, native_lanman, p2,
- sizeof(native_lanman), STR_TERMINATE);
- p2 += srvstr_pull_buf(inbuf, smb_flag2, primary_domain, p2,
- sizeof(primary_domain), STR_TERMINATE);
+ p2 += srvstr_pull_buf(inbuf, native_os, p2, sizeof(native_os), STR_TERMINATE);
+ p2 += srvstr_pull_buf(inbuf, native_lanman, p2, sizeof(native_lanman), STR_TERMINATE);
+ p2 += srvstr_pull_buf(inbuf, primary_domain, p2, sizeof(primary_domain), STR_TERMINATE);
DEBUG(3,("NativeOS=[%s] NativeLanMan=[%s] PrimaryDomain=[%s]\n",
native_os, native_lanman, primary_domain));
@@ -1095,7 +1087,7 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
}
if (!vuser) {
- vuid = register_vuid(NULL, data_blob_null, data_blob_null, NULL);
+ vuid = register_vuid(NULL, data_blob(NULL, 0), data_blob(NULL, 0), NULL);
if (vuid == UID_FIELD_INVALID ) {
data_blob_free(&blob1);
return ERROR_NT(nt_status_squash(NT_STATUS_INVALID_PARAMETER));
@@ -1180,27 +1172,26 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
a new session setup with VC==0 is ignored.
****************************************************************************/
-static int shutdown_other_smbds(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
- void *private_data)
+static int shutdown_other_smbds(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
+ void *p)
{
- const char *ip = (const char *)private_data;
+ struct sessionid *sessionid = (struct sessionid *)dbuf.dptr;
+ const char *ip = (const char *)p;
- if (!process_exists(crec->pid)) {
+ if (!process_exists(pid_to_procid(sessionid->pid))) {
return 0;
}
- if (procid_is_me(&crec->pid)) {
+ if (sessionid->pid == sys_getpid()) {
return 0;
}
- if (strcmp(ip, crec->addr) != 0) {
+ if (strcmp(ip, sessionid->ip_addr) != 0) {
return 0;
}
- messaging_send(smbd_messaging_context(), crec->pid, MSG_SHUTDOWN,
- &data_blob_null);
+ message_send_pid(pid_to_procid(sessionid->pid), MSG_SHUTDOWN,
+ NULL, 0, True);
return 0;
}
@@ -1212,7 +1203,7 @@ static void setup_new_vc_session(void)
invalidate_all_vuids();
#endif
if (lp_reset_on_zero_vc()) {
- connections_forall(shutdown_other_smbds, client_addr());
+ session_traverse(shutdown_other_smbds, client_addr());
}
}
@@ -1237,7 +1228,6 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
static BOOL done_sesssetup = False;
auth_usersupplied_info *user_info = NULL;
auth_serversupplied_info *server_info = NULL;
- uint16 smb_flag2 = SVAL(inbuf, smb_flg2);
NTSTATUS nt_status;
@@ -1251,12 +1241,12 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
ZERO_STRUCT(nt_resp);
ZERO_STRUCT(plaintext_password);
- DEBUG(3,("wct=%d flg2=0x%x\n", CVAL(inbuf, smb_wct), smb_flag2));
+ DEBUG(3,("wct=%d flg2=0x%x\n", CVAL(inbuf, smb_wct), SVAL(inbuf, smb_flg2)));
/* a SPNEGO session setup has 12 command words, whereas a normal
NT1 session setup has 13. See the cifs spec. */
if (CVAL(inbuf, smb_wct) == 12 &&
- (smb_flag2 & FLAGS2_EXTENDED_SECURITY)) {
+ (SVAL(inbuf, smb_flg2) & FLAGS2_EXTENDED_SECURITY)) {
if (!global_spnego_negotiated) {
DEBUG(0,("reply_sesssetup_and_X: Rejecting attempt at SPNEGO session setup when it was not negoitiated.\n"));
return ERROR_NT(nt_status_squash(NT_STATUS_LOGON_FAILURE));
@@ -1288,9 +1278,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
plaintext_password.data[passlen1] = 0;
}
- srvstr_pull_buf(inbuf, smb_flag2, user,
- smb_buf(inbuf)+passlen1, sizeof(user),
- STR_TERMINATE);
+ srvstr_pull_buf(inbuf, user, smb_buf(inbuf)+passlen1, sizeof(user), STR_TERMINATE);
*domain = 0;
} else {
@@ -1358,7 +1346,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
nt_resp = data_blob(p+passlen1, passlen2);
} else {
pstring pass;
- BOOL unic= smb_flag2 & FLAGS2_UNICODE_STRINGS;
+ BOOL unic=SVAL(inbuf, smb_flg2) & FLAGS2_UNICODE_STRINGS;
#if 0
/* This was the previous fix. Not sure if it's still valid. JRA. */
@@ -1370,28 +1358,21 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
if (unic && (passlen2 == 0) && passlen1) {
/* Only a ascii plaintext password was sent. */
- srvstr_pull(inbuf, smb_flag2, pass,
- smb_buf(inbuf), sizeof(pass),
- passlen1, STR_TERMINATE|STR_ASCII);
+ srvstr_pull(inbuf, pass, smb_buf(inbuf), sizeof(pass),
+ passlen1, STR_TERMINATE|STR_ASCII);
} else {
- srvstr_pull(inbuf, smb_flag2, pass,
- smb_buf(inbuf), sizeof(pass),
- unic ? passlen2 : passlen1,
- STR_TERMINATE);
+ srvstr_pull(inbuf, pass, smb_buf(inbuf),
+ sizeof(pass), unic ? passlen2 : passlen1,
+ STR_TERMINATE);
}
plaintext_password = data_blob(pass, strlen(pass)+1);
}
p += passlen1 + passlen2;
- p += srvstr_pull_buf(inbuf, smb_flag2, user, p,
- sizeof(user), STR_TERMINATE);
- p += srvstr_pull_buf(inbuf, smb_flag2, domain, p,
- sizeof(domain), STR_TERMINATE);
- p += srvstr_pull_buf(inbuf, smb_flag2, native_os,
- p, sizeof(native_os), STR_TERMINATE);
- p += srvstr_pull_buf(inbuf, smb_flag2,
- native_lanman, p, sizeof(native_lanman),
- STR_TERMINATE);
+ p += srvstr_pull_buf(inbuf, user, p, sizeof(user), STR_TERMINATE);
+ p += srvstr_pull_buf(inbuf, domain, p, sizeof(domain), STR_TERMINATE);
+ p += srvstr_pull_buf(inbuf, native_os, p, sizeof(native_os), STR_TERMINATE);
+ p += srvstr_pull_buf(inbuf, native_lanman, p, sizeof(native_lanman), STR_TERMINATE);
/* not documented or decoded by Ethereal but there is one more string
in the extra bytes which is the same as the PrimaryDomain when using
@@ -1401,10 +1382,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
byte_count = SVAL(inbuf, smb_vwv13);
if ( PTR_DIFF(p, save_p) < byte_count)
- p += srvstr_pull_buf(inbuf, smb_flag2,
- primary_domain, p,
- sizeof(primary_domain),
- STR_TERMINATE);
+ p += srvstr_pull_buf(inbuf, primary_domain, p, sizeof(primary_domain), STR_TERMINATE);
else
fstrcpy( primary_domain, "null" );
@@ -1529,17 +1507,17 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
if (server_info->user_session_key.data) {
session_key = data_blob(server_info->user_session_key.data, server_info->user_session_key.length);
} else {
- session_key = data_blob_null;
+ session_key = data_blob(NULL, 0);
}
data_blob_clear_free(&plaintext_password);
/* it's ok - setup a reply */
- set_message(inbuf,outbuf,3,0,True);
+ set_message(outbuf,3,0,True);
if (Protocol >= PROTOCOL_NT1) {
char *p = smb_buf( outbuf );
p += add_signature( outbuf, p );
- set_message_end(inbuf, outbuf, p );
+ set_message_end( outbuf, p );
/* perhaps grab OS version here?? */
}
diff --git a/source/smbd/share_access.c b/source/smbd/share_access.c
index b12d543f5a1..adb9d169642 100644
--- a/source/smbd/share_access.c
+++ b/source/smbd/share_access.c
@@ -86,7 +86,7 @@ static BOOL token_contains_name(TALLOC_CTX *mem_ctx,
if (name == NULL) {
/* This is too security sensitive, better panic than return a
* result that might be interpreted in a wrong way. */
- smb_panic("substitutions failed");
+ smb_panic("substitutions failed\n");
}
/* check to see is we already have a SID */
@@ -136,7 +136,7 @@ static BOOL token_contains_name(TALLOC_CTX *mem_ctx,
}
continue;
}
- smb_panic("got invalid prefix from do_groups_check");
+ smb_panic("got invalid prefix from do_groups_check\n");
}
return False;
}
@@ -164,7 +164,7 @@ BOOL token_contains_name_in_list(const char *username,
}
if ( (mem_ctx = talloc_new(NULL)) == NULL ) {
- smb_panic("talloc_new failed");
+ smb_panic("talloc_new failed\n");
}
while (*list != NULL) {
diff --git a/source/smbd/sockinit.c b/source/smbd/sockinit.c
deleted file mode 100644
index 9d46776f892..00000000000
--- a/source/smbd/sockinit.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- Copyright (C) Andrew Tridgell 1992-1998
- Copyright (C) James Peach 2007
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "smb_launchd.h"
-
-extern pstring user_socket_options;
-
-static int init_sockets_smbd(const char *smb_ports, int listenset[FD_SETSIZE])
-{
- int num_interfaces = iface_count();
- char * ports;
- int num_sockets = 0;
- int i, s;
-
- /* use a reasonable default set of ports - listing on 445 and 139 */
- if (!smb_ports) {
- ports = lp_smb_ports();
- if (!ports || !*ports) {
- ports = smb_xstrdup(SMB_PORTS);
- } else {
- ports = smb_xstrdup(ports);
- }
- } else {
- ports = smb_xstrdup(smb_ports);
- }
-
- if (lp_interfaces() && lp_bind_interfaces_only()) {
- /* We have been given an interfaces line, and been
- told to only bind to those interfaces. Create a
- socket per interface and bind to only these.
- */
-
- /* Now open a listen socket for each of the
- interfaces. */
- for(i = 0; i < num_interfaces; i++) {
- struct in_addr *ifip = iface_n_ip(i);
- fstring tok;
- const char *ptr;
-
- if(ifip == NULL) {
- DEBUG(0,("init_sockets_smbd: interface %d has NULL IP address !\n", i));
- continue;
- }
-
- for (ptr=ports; next_token(&ptr, tok, " \t,", sizeof(tok)); ) {
- unsigned port = atoi(tok);
- if (port == 0 || port > 0xffff) {
- continue;
- }
- s = listenset[num_sockets] = open_socket_in(SOCK_STREAM, port, 0, ifip->s_addr, True);
- if(s == -1)
- return 0;
-
- /* ready to listen */
- set_socket_options(s,"SO_KEEPALIVE");
- set_socket_options(s,user_socket_options);
-
- /* Set server socket to non-blocking for the accept. */
- set_blocking(s,False);
-
- if (listen(s, SMBD_LISTEN_BACKLOG) == -1) {
- DEBUG(0,("listen: %s\n",strerror(errno)));
- close(s);
- return 0;
- }
-
- num_sockets++;
- if (num_sockets >= FD_SETSIZE) {
- DEBUG(0,("init_sockets_smbd: Too many sockets to bind to\n"));
- return 0;
- }
- }
- }
- } else {
- /* Just bind to 0.0.0.0 - accept connections
- from anywhere. */
-
- fstring tok;
- const char *ptr;
-
- num_interfaces = 1;
-
- for (ptr=ports; next_token(&ptr, tok, " \t,", sizeof(tok)); ) {
- unsigned port = atoi(tok);
- if (port == 0 || port > 0xffff) continue;
- /* open an incoming socket */
- s = open_socket_in(SOCK_STREAM, port, 0,
- interpret_addr(lp_socket_address()),True);
- if (s == -1)
- return 0;
-
- /* ready to listen */
- set_socket_options(s,"SO_KEEPALIVE");
- set_socket_options(s,user_socket_options);
-
- /* Set server socket to non-blocking for the accept. */
- set_blocking(s,False);
-
- if (listen(s, SMBD_LISTEN_BACKLOG) == -1) {
- DEBUG(0,("init_sockets_smbd: listen: %s\n",
- strerror(errno)));
- close(s);
- return 0;
- }
-
- listenset[num_sockets] = s;
- num_sockets++;
-
- if (num_sockets >= FD_SETSIZE) {
- DEBUG(0,("init_sockets_smbd: Too many sockets to bind to\n"));
- return 0;
- }
- }
- }
-
- SAFE_FREE(ports);
- return num_sockets;
-}
-
-static int init_sockets_launchd(const struct smb_launch_info *linfo,
- const char * smb_ports,
- int listenset[FD_SETSIZE])
-{
- int num_sockets;
- int i;
-
- /* The launchd service configuration does not have to provide sockets,
- * even though it's basically useless without it.
- */
- if (!linfo->num_sockets) {
- return init_sockets_smbd(smb_ports, listenset);
- }
-
- /* Make sure we don't get more sockets than we can handle. */
- num_sockets = MIN(FD_SETSIZE, linfo->num_sockets);
- memcpy(listenset, linfo->socket_list, num_sockets * sizeof(int));
-
- /* Get the sockets ready. This could be hoisted into
- * open_sockets_smbd(), but the order of socket operations might
- * matter for some platforms, so this approach seems less risky.
- * --jpeach
- */
- for (i = 0; i < num_sockets; ++i) {
- set_socket_options(listenset[i], "SO_KEEPALIVE");
- set_socket_options(listenset[i], user_socket_options);
-
- /* Set server socket to non-blocking for the accept. */
- set_blocking(listenset[i], False);
- }
-
- return num_sockets;
-}
-
-/* This function is responsible for opening (or retrieving) all the sockets we
- * smbd will be listening on. It should apply all the configured socket options
- * and return the number of valid sockets in listenset.
- */
-int smbd_sockinit(const char *cmdline_ports, int listenset[FD_SETSIZE],
- struct timeval *idle)
-{
- int num_sockets;
- struct smb_launch_info linfo;
-
- ZERO_STRUCTP(idle);
-
- if (smb_launchd_checkin(&linfo)) {
- /* We are running under launchd and launchd has
- * opened some sockets for us.
- */
- num_sockets = init_sockets_launchd(&linfo,
- cmdline_ports,
- listenset);
- idle->tv_sec = linfo.idle_timeout_secs;
- smb_launchd_checkout(&linfo);
- } else {
- num_sockets = init_sockets_smbd(cmdline_ports,
- listenset);
- }
-
- return num_sockets;
-}
-
diff --git a/source/smbd/statcache.c b/source/smbd/statcache.c
index 92c845ce2e8..1a2b7a8237b 100644
--- a/source/smbd/statcache.c
+++ b/source/smbd/statcache.c
@@ -131,7 +131,7 @@ void stat_cache_add( const char *full_orig_name, const char *orig_translated_pat
*/
data_val.dsize = translated_path_length + 1;
- data_val.dptr = (uint8 *)translated_path;
+ data_val.dptr = translated_path;
if (tdb_store_bystring(tdb_stat_cache, original_path, data_val, TDB_REPLACE) != 0) {
DEBUG(0,("stat_cache_add: Error storing entry %s -> %s\n", original_path, translated_path));
@@ -165,9 +165,6 @@ BOOL stat_cache_lookup(connection_struct *conn, pstring name, pstring dirpath,
size_t namelen;
BOOL sizechanged = False;
unsigned int num_components = 0;
- char *translated_path;
- size_t translated_path_length;
- TDB_DATA data_val;
if (!lp_stat_cache())
return False;
@@ -210,87 +207,82 @@ BOOL stat_cache_lookup(connection_struct *conn, pstring name, pstring dirpath,
}
while (1) {
+ TDB_DATA data_val;
char *sp;
data_val = tdb_fetch_bystring(tdb_stat_cache, chk_name);
-
- if (data_val.dptr != NULL && data_val.dsize != 0) {
- break;
- }
-
- DEBUG(10,("stat_cache_lookup: lookup failed for name [%s]\n", chk_name ));
- /*
- * Didn't find it - remove last component for next try.
- */
- if (!(sp = strrchr_m(chk_name, '/'))) {
+ if(data_val.dptr == NULL || data_val.dsize == 0) {
+ DEBUG(10,("stat_cache_lookup: lookup failed for name [%s]\n", chk_name ));
/*
- * We reached the end of the name - no match.
+ * Didn't find it - remove last component for next try.
*/
- DO_PROFILE_INC(statcache_misses);
- SAFE_FREE(chk_name);
- return False;
- }
-
- *sp = '\0';
-
- /*
- * Count the number of times we have done this, we'll
- * need it when reconstructing the string.
- */
- if (sizechanged)
- num_components++;
-
- if ((*chk_name == '\0')
- || ISDOT(chk_name) || ISDOTDOT(chk_name)) {
- DO_PROFILE_INC(statcache_misses);
- SAFE_FREE(chk_name);
- return False;
- }
- }
-
- translated_path = (char *)data_val.dptr;
- translated_path_length = data_val.dsize - 1;
-
- DEBUG(10,("stat_cache_lookup: lookup succeeded for name [%s] "
- "-> [%s]\n", chk_name, translated_path ));
- DO_PROFILE_INC(statcache_hits);
-
- if (SMB_VFS_STAT(conn, translated_path, pst) != 0) {
- /* Discard this entry - it doesn't exist in the filesystem. */
- tdb_delete_bystring(tdb_stat_cache, chk_name);
- SAFE_FREE(chk_name);
- SAFE_FREE(data_val.dptr);
- return False;
- }
-
- if (!sizechanged) {
- memcpy(name, translated_path,
- MIN(sizeof(pstring)-1, translated_path_length));
- } else if (num_components == 0) {
- pstrcpy(name, translated_path);
- } else {
- char *sp;
-
- sp = strnrchr_m(name, '/', num_components);
- if (sp) {
- pstring last_component;
- pstrcpy(last_component, sp);
- pstrcpy(name, translated_path);
- pstrcat(name, last_component);
+ sp = strrchr_m(chk_name, '/');
+ if (sp) {
+ *sp = '\0';
+ /*
+ * Count the number of times we have done this,
+ * we'll need it when reconstructing the string.
+ */
+ if (sizechanged)
+ num_components++;
+
+ } else {
+ /*
+ * We reached the end of the name - no match.
+ */
+ DO_PROFILE_INC(statcache_misses);
+ SAFE_FREE(chk_name);
+ return False;
+ }
+ if((*chk_name == '\0') || (strcmp(chk_name, ".") == 0)
+ || (strcmp(chk_name, "..") == 0)) {
+ DO_PROFILE_INC(statcache_misses);
+ SAFE_FREE(chk_name);
+ return False;
+ }
} else {
- pstrcpy(name, translated_path);
+ BOOL retval;
+ char *translated_path = data_val.dptr;
+ size_t translated_path_length = data_val.dsize - 1;
+
+ DEBUG(10,("stat_cache_lookup: lookup succeeded for name [%s] -> [%s]\n", chk_name, translated_path ));
+ DO_PROFILE_INC(statcache_hits);
+ if(SMB_VFS_STAT(conn,translated_path, pst) != 0) {
+ /* Discard this entry - it doesn't exist in the filesystem. */
+ tdb_delete_bystring(tdb_stat_cache, chk_name);
+ SAFE_FREE(chk_name);
+ SAFE_FREE(data_val.dptr);
+ return False;
+ }
+
+ if (!sizechanged) {
+ memcpy(name, translated_path, MIN(sizeof(pstring)-1, translated_path_length));
+ } else if (num_components == 0) {
+ pstrcpy(name, translated_path);
+ } else {
+ sp = strnrchr_m(name, '/', num_components);
+ if (sp) {
+ pstring last_component;
+ pstrcpy(last_component, sp);
+ pstrcpy(name, translated_path);
+ pstrcat(name, last_component);
+ } else {
+ pstrcpy(name, translated_path);
+ }
+ }
+
+ /* set pointer for 'where to start' on fixing the rest of the name */
+ *start = &name[translated_path_length];
+ if(**start == '/')
+ ++*start;
+
+ pstrcpy(dirpath, translated_path);
+ retval = (namelen == translated_path_length) ? True : False;
+ SAFE_FREE(chk_name);
+ SAFE_FREE(data_val.dptr);
+ return retval;
}
}
-
- /* set pointer for 'where to start' on fixing the rest of the name */
- *start = &name[translated_path_length];
- if (**start == '/')
- ++*start;
-
- pstrcpy(dirpath, translated_path);
- SAFE_FREE(chk_name);
- SAFE_FREE(data_val.dptr);
- return (namelen == translated_path_length);
}
/***************************************************************************
@@ -300,10 +292,11 @@ BOOL stat_cache_lookup(connection_struct *conn, pstring name, pstring dirpath,
void send_stat_cache_delete_message(const char *name)
{
#ifdef DEVELOPER
- message_send_all(smbd_messaging_context(),
+ message_send_all(conn_tdb_ctx(),
MSG_SMB_STAT_CACHE_DELETE,
name,
strlen(name)+1,
+ True,
NULL);
#endif
}
@@ -336,7 +329,7 @@ unsigned int fast_string_hash(TDB_DATA *key)
{
unsigned int n = 0;
const char *p;
- for (p = (const char *)key->dptr; *p != '\0'; p++) {
+ for (p = key->dptr; *p != '\0'; p++) {
n = ((n << 5) + n) ^ (unsigned int)(*p);
}
return n;
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index 005983f133c..b2ce5b8c26d 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -147,7 +147,7 @@ static BOOL get_ea_value(TALLOC_CTX *mem_ctx, connection_struct *conn, files_str
}
DEBUG(10,("get_ea_value: EA %s is of length %u: ", ea_name, (unsigned int)sizeret));
- dump_data(10, (uint8 *)val, sizeret);
+ dump_data(10, val, sizeret);
pea->flags = 0;
if (strnequal(ea_name, "user.", 5)) {
@@ -487,7 +487,7 @@ struct ea_list *read_ea_list_entry(TALLOC_CTX *ctx, const char *pdata, size_t da
}
DEBUG(10,("read_ea_list_entry: read ea name %s\n", eal->ea.name));
- dump_data(10, eal->ea.value.data, eal->ea.value.length);
+ dump_data(10, (const char *)eal->ea.value.data, eal->ea.value.length);
return eal;
}
@@ -577,8 +577,7 @@ static struct ea_list *ea_list_union(struct ea_list *name_list, struct ea_list *
HACK ! Always assumes smb_setup field is zero.
****************************************************************************/
-int send_trans2_replies(const char *inbuf,
- char *outbuf,
+int send_trans2_replies(char *outbuf,
int bufsize,
const char *params,
int paramsize,
@@ -603,7 +602,7 @@ int send_trans2_replies(const char *inbuf,
/* Initially set the wcnt area to be 10 - this is true for all trans2 replies */
- set_message(inbuf,outbuf,10,0,True);
+ set_message(outbuf,10,0,True);
/* Modify the data_to_send and datasize and set the error if
we're trying to send more than max_data_bytes. We still send
@@ -658,7 +657,7 @@ int send_trans2_replies(const char *inbuf,
total_sent_thistime = MIN(total_sent_thistime, useable_space+ alignment_offset + data_alignment_offset);
- set_message(inbuf, outbuf, 10, total_sent_thistime, True);
+ set_message(outbuf, 10, total_sent_thistime, True);
/* Set total params and data to be sent */
SSVAL(outbuf,smb_tprcnt,paramsize);
@@ -740,12 +739,9 @@ int send_trans2_replies(const char *inbuf,
Reply to a TRANSACT2_OPEN.
****************************************************************************/
-static int call_trans2open(connection_struct *conn,
- struct smb_request *req,
- char *inbuf, char *outbuf, int bufsize,
- char **pparams, int total_params,
- char **ppdata, int total_data,
- unsigned int max_data_bytes)
+static int call_trans2open(connection_struct *conn, char *inbuf, char *outbuf, int bufsize,
+ char **pparams, int total_params, char **ppdata, int total_data,
+ unsigned int max_data_bytes)
{
char *params = *pparams;
char *pdata = *ppdata;
@@ -804,9 +800,7 @@ static int call_trans2open(connection_struct *conn,
return(ERROR_DOS(ERRSRV,ERRaccess));
}
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, pname,
- sizeof(fname), total_params - 28, STR_TERMINATE,
- &status);
+ srvstr_get_path(inbuf, fname, pname, sizeof(fname), total_params - 28, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -864,7 +858,7 @@ static int call_trans2open(connection_struct *conn,
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
- status = open_file_ntcreate(conn, req, fname, &sbuf,
+ status = open_file_ntcreate(conn,fname,&sbuf,
access_mask,
share_mode,
create_disposition,
@@ -872,13 +866,13 @@ static int call_trans2open(connection_struct *conn,
open_attr,
oplock_request,
&smb_action, &fsp);
-
+
if (!NT_STATUS_IS_OK(status)) {
if (open_was_deferred(SVAL(inbuf,smb_mid))) {
/* We have re-scheduled this call. */
return -1;
}
- return ERROR_NT(status);
+ return ERROR_OPEN(status);
}
size = get_file_size(sbuf);
@@ -956,7 +950,7 @@ static int call_trans2open(connection_struct *conn,
}
/* Send the required number of replies */
- send_trans2_replies(inbuf, outbuf, bufsize, params, 30, *ppdata, 0, max_data_bytes);
+ send_trans2_replies(outbuf, bufsize, params, 30, *ppdata, 0, max_data_bytes);
return -1;
}
@@ -1166,28 +1160,16 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
DEBUG(8,("get_lanman2_dir_entry:readdir on dirptr 0x%lx now at offset %ld\n",
(long)conn->dirptr,curr_dirpos));
- if (!dname) {
+ if (!dname)
return(False);
- }
-
- /*
- * fname may get mangled, dname is never mangled.
- * Whenever we're accessing the filesystem we use
- * pathreal which is composed from dname.
- */
pstrcpy(fname,dname);
- /* This will mangle fname if it's an illegal name. */
- mangle_map(fname,False,True,conn->params);
-
- if(!(got_match = *got_exact_match = exact_match(conn, fname, mask))) {
+ if(!(got_match = *got_exact_match = exact_match(conn, fname, mask)))
got_match = mask_match(fname, mask, conn->case_sensitive);
- }
if(!got_match && check_mangled_names &&
!mangle_is_8_3(fname, False, conn->params)) {
- pstring mangled_name;
/*
* It turns out that NT matches wildcards against
@@ -1196,25 +1178,21 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
* that some people have been seeing.... JRA.
*/
- pstrcpy(mangled_name, fname);
-
- /* Force the mangling into 8.3. */
- mangle_map( mangled_name, True, False, conn->params);
- if(!(got_match = *got_exact_match = exact_match(conn, mangled_name, mask))) {
- got_match = mask_match(mangled_name, mask, conn->case_sensitive);
- }
+ pstring newname;
+ pstrcpy( newname, fname);
+ mangle_map( newname, True, False, conn->params);
+ if(!(got_match = *got_exact_match = exact_match(conn, newname, mask)))
+ got_match = mask_match(newname, mask, conn->case_sensitive);
}
- if (got_match) {
- BOOL isdots = (strequal(dname,"..") || strequal(dname,"."));
- if (dont_descend && !isdots) {
+ if(got_match) {
+ BOOL isdots = (strequal(fname,"..") || strequal(fname,"."));
+ if (dont_descend && !isdots)
continue;
- }
pstrcpy(pathreal,conn->dirpath);
- if(needslash) {
+ if(needslash)
pstrcat(pathreal,"/");
- }
pstrcat(pathreal,dname);
if (INFO_LEVEL_IS_UNIX(info_level)) {
@@ -1252,13 +1230,12 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
}
if (!dir_check_ftype(conn,mode,dirtype)) {
- DEBUG(5,("get_lanman2_dir_entry: [%s] attribs didn't match %x\n",fname,dirtype));
+ DEBUG(5,("[%s] attribs didn't match %x\n",fname,dirtype));
continue;
}
- if (!(mode & aDIR)) {
+ if (!(mode & aDIR))
file_size = get_file_size(sbuf);
- }
allocation_size = get_allocation_size(conn,NULL,&sbuf);
mdate_ts = get_mtimespec(&sbuf);
@@ -1275,7 +1252,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
mdate = convert_timespec_to_time_t(mdate_ts);
adate = convert_timespec_to_time_t(adate_ts);
- DEBUG(5,("get_lanman2_dir_entry: found %s fname=%s\n",pathreal,fname));
+ DEBUG(5,("get_lanman2_dir_entry found %s fname=%s\n",pathreal,fname));
found = True;
@@ -1283,6 +1260,8 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
}
}
+ mangle_map(fname,False,True,conn->params);
+
p = pdata;
last_entry_ptr = p;
@@ -1749,9 +1728,7 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
- srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), directory,
- params+12, sizeof(directory), total_params - 12,
- STR_TERMINATE, &ntstatus, &mask_contains_wcard);
+ srvstr_get_path_wcard(inbuf, directory, params+12, sizeof(directory), total_params - 12, STR_TERMINATE, &ntstatus, &mask_contains_wcard);
if (!NT_STATUS_IS_OK(ntstatus)) {
return ERROR_NT(ntstatus);
}
@@ -1937,7 +1914,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
SSVAL(params,6,0); /* Never an EA error */
SSVAL(params,8,last_entry_off);
- send_trans2_replies(inbuf, outbuf, bufsize, params, 10, pdata, PTR_DIFF(p,pdata), max_data_bytes);
+ send_trans2_replies( outbuf, bufsize, params, 10, pdata, PTR_DIFF(p,pdata), max_data_bytes);
if ((! *directory) && dptr_path(dptr_num))
slprintf(directory,sizeof(directory)-1, "(%s)",dptr_path(dptr_num));
@@ -2016,20 +1993,17 @@ static int call_trans2findnext(connection_struct *conn, char *inbuf, char *outbu
*mask = *directory = *resume_name = 0;
- srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), resume_name,
- params+12, sizeof(resume_name),
- total_params - 12, STR_TERMINATE, &ntstatus,
- &mask_contains_wcard);
+ srvstr_get_path_wcard(inbuf, resume_name, params+12, sizeof(resume_name), total_params - 12, STR_TERMINATE, &ntstatus, &mask_contains_wcard);
if (!NT_STATUS_IS_OK(ntstatus)) {
/* Win9x or OS/2 can send a resume name of ".." or ".". This will cause the parser to
complain (it thinks we're asking for the directory above the shared
path or an invalid name). Catch this as the resume name is only compared, never used in
a file access. JRA. */
- if (NT_STATUS_EQUAL(ntstatus,NT_STATUS_OBJECT_PATH_SYNTAX_BAD)) {
- pstrcpy(resume_name, "..");
- } else if (NT_STATUS_EQUAL(ntstatus,NT_STATUS_OBJECT_NAME_INVALID)) {
- pstrcpy(resume_name, ".");
- } else {
+ srvstr_pull(inbuf, resume_name, params+12,
+ sizeof(resume_name), total_params - 12,
+ STR_TERMINATE);
+
+ if (!(ISDOT(resume_name) || ISDOTDOT(resume_name))) {
return ERROR_NT(ntstatus);
}
}
@@ -2233,7 +2207,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
SSVAL(params,4,0); /* Never an EA error */
SSVAL(params,6,last_entry_off);
- send_trans2_replies(inbuf, outbuf, bufsize, params, 8, pdata, PTR_DIFF(p,pdata), max_data_bytes);
+ send_trans2_replies( outbuf, bufsize, params, 8, pdata, PTR_DIFF(p,pdata), max_data_bytes);
if ((! *directory) && dptr_path(dptr_num))
slprintf(directory,sizeof(directory)-1, "(%s)",dptr_path(dptr_num));
@@ -2245,12 +2219,6 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
return(-1);
}
-unsigned char *create_volume_objectid(connection_struct *conn, unsigned char objid[16])
-{
- E_md4hash(lp_servicename(SNUM(conn)),objid);
- return objid;
-}
-
/****************************************************************************
Reply to a TRANS2_QFSINFO (query filesystem info).
****************************************************************************/
@@ -2358,8 +2326,6 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_dev, (unsi
SIVAL(pdata,0,FILE_CASE_PRESERVED_NAMES|FILE_CASE_SENSITIVE_SEARCH|
(lp_nt_acl_support(SNUM(conn)) ? FILE_PERSISTENT_ACLS : 0)|
- FILE_SUPPORTS_OBJECT_IDS|
- FILE_UNICODE_ON_DISK|
quota_flag); /* FS ATTRIBUTES */
SIVAL(pdata,4,255); /* Max filename component length */
@@ -2541,12 +2507,8 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
}
#endif /* HAVE_SYS_QUOTAS */
case SMB_FS_OBJECTID_INFORMATION:
- {
- unsigned char objid[16];
- memcpy(pdata,create_volume_objectid(conn, objid),16);
data_len = 64;
break;
- }
/*
* Query the version and capabilities of the CIFS UNIX extensions
@@ -2566,10 +2528,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
CIFS_UNIX_POSIX_PATHNAMES_CAP|
CIFS_UNIX_FCNTL_LOCKS_CAP|
CIFS_UNIX_EXTATTR_CAP|
- CIFS_UNIX_POSIX_PATH_OPERATIONS_CAP|
- /* Ensure we don't do this on signed or sealed data. */
- (srv_is_signing_active() ? 0 : CIFS_UNIX_LARGE_READ_CAP)
- )));
+ CIFS_UNIX_POSIX_PATH_OPERATIONS_CAP)));
break;
case SMB_QUERY_POSIX_FS_INFO:
@@ -2729,7 +2688,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
}
- send_trans2_replies(inbuf, outbuf, bufsize, params, 0, pdata, data_len, max_data_bytes);
+ send_trans2_replies( outbuf, bufsize, params, 0, pdata, data_len, max_data_bytes);
DEBUG( 4, ( "%s info_level = %d\n", smb_fn_name(CVAL(inbuf,smb_com)), info_level) );
@@ -2805,42 +2764,6 @@ cap_low = 0x%x, cap_high = 0x%x\n",
}
break;
}
- case SMB_REQUEST_TRANSPORT_ENCRYPTION:
- {
- NTSTATUS status;
- size_t param_len = 0;
- size_t data_len = total_data;
-
- if (!lp_unix_extensions()) {
- return ERROR_NT(NT_STATUS_INVALID_LEVEL);
- }
-
- DEBUG( 4,("call_trans2setfsinfo: request transport encrption.\n"));
-
- status = srv_request_encryption_setup(conn,
- (unsigned char **)ppdata,
- &data_len,
- (unsigned char **)pparams,
- &param_len
- );
-
- if (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- error_packet_set(outbuf, 0, 0, status, __LINE__,__FILE__);
- } else if (!NT_STATUS_IS_OK(status)) {
- return ERROR_NT(status);
- }
-
- send_trans2_replies(inbuf, outbuf, bufsize, *pparams, param_len, *ppdata, data_len, max_data_bytes);
-
- if (NT_STATUS_IS_OK(status)) {
- /* Server-side transport encryption is now *on*. */
- status = srv_encryption_start(conn);
- if (!NT_STATUS_IS_OK(status)) {
- exit_server_cleanly("Failure in setting up encrypted transport");
- }
- }
- return -1;
- }
case SMB_FS_QUOTA_INFORMATION:
{
files_struct *fsp = NULL;
@@ -2925,7 +2848,7 @@ cap_low = 0x%x, cap_high = 0x%x\n",
* like windows do...
* --metze
*/
- outsize = set_message(inbuf, outbuf,10,0,True);
+ outsize = set_message(outbuf,10,0,True);
return outsize;
}
@@ -3219,68 +3142,6 @@ static char *store_file_unix_basic_info2(connection_struct *conn,
}
/****************************************************************************
- Reply to a TRANSACT2_QFILEINFO on a PIPE !
-****************************************************************************/
-
-static int call_trans2qpipeinfo(connection_struct *conn, char *inbuf, char *outbuf, int length, int bufsize,
- unsigned int tran_call,
- char **pparams, int total_params, char **ppdata, int total_data,
- unsigned int max_data_bytes)
-{
- char *params = *pparams;
- char *pdata = *ppdata;
- unsigned int data_size = 0;
- unsigned int param_size = 2;
- uint16 info_level;
- smb_np_struct *p_pipe = NULL;
-
- if (!params) {
- return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- }
-
- if (total_params < 4) {
- return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- }
-
- p_pipe = get_rpc_pipe_p(params,0);
- if (p_pipe == NULL) {
- return ERROR_NT(NT_STATUS_INVALID_HANDLE);
- }
-
- info_level = SVAL(params,2);
-
- *pparams = (char *)SMB_REALLOC(*pparams,2);
- if (*pparams == NULL) {
- return ERROR_NT(NT_STATUS_NO_MEMORY);
- }
- params = *pparams;
- SSVAL(params,0,0);
- data_size = max_data_bytes + DIR_ENTRY_SAFETY_MARGIN;
- *ppdata = (char *)SMB_REALLOC(*ppdata, data_size);
- if (*ppdata == NULL ) {
- return ERROR_NT(NT_STATUS_NO_MEMORY);
- }
- pdata = *ppdata;
-
- switch (info_level) {
- case SMB_FILE_STANDARD_INFORMATION:
- memset(pdata,24,0);
- SOFF_T(pdata,0,4096LL);
- SIVAL(pdata,16,1);
- SIVAL(pdata,20,1);
- data_size = 24;
- break;
-
- default:
- return ERROR_NT(NT_STATUS_INVALID_LEVEL);
- }
-
- send_trans2_replies(inbuf, outbuf, bufsize, params, param_size, *ppdata, data_size, max_data_bytes);
-
- return(-1);
-}
-
-/****************************************************************************
Reply to a TRANS2_QFILEPATHINFO or TRANSACT2_QFILEINFO (query file info by
file name or file id).
****************************************************************************/
@@ -3325,20 +3186,6 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
- if (IS_IPC(conn)) {
- return call_trans2qpipeinfo(conn,
- inbuf,
- outbuf,
- length,
- bufsize,
- tran_call,
- pparams,
- total_params,
- ppdata,
- total_data,
- max_data_bytes);
- }
-
fsp = file_fsp(params,0);
info_level = SVAL(params,2);
@@ -3376,7 +3223,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
return UNIXERROR(ERRDOS,ERRbadpath);
}
- delete_pending = get_delete_on_close_flag(file_id_sbuf(&sbuf));
+ delete_pending = get_delete_on_close_flag(sbuf.st_dev, sbuf.st_ino);
} else {
/*
* Original code - this is an open file.
@@ -3389,7 +3236,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
return(UNIXERROR(ERRDOS,ERRbadfid));
}
pos = fsp->fh->position_information;
- delete_pending = get_delete_on_close_flag(file_id_sbuf(&sbuf));
+ delete_pending = get_delete_on_close_flag(sbuf.st_dev, sbuf.st_ino);
access_mask = fsp->access_mask;
}
} else {
@@ -3408,9 +3255,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, &params[6],
- sizeof(fname), total_params - 6,
- STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, fname, &params[6], sizeof(fname), total_params - 6, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -3444,7 +3289,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
return UNIXERROR(ERRDOS,ERRbadpath);
}
- delete_pending = get_delete_on_close_flag(file_id_sbuf(&sbuf));
+ delete_pending = get_delete_on_close_flag(sbuf.st_dev, sbuf.st_ino);
if (delete_pending) {
return ERROR_NT(NT_STATUS_DELETE_PENDING);
}
@@ -3571,7 +3416,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
}
} else {
/* Do we have this path open ? */
- files_struct *fsp1 = file_find_di_first(file_id_sbuf(&sbuf));
+ files_struct *fsp1 = file_find_di_first(sbuf.st_dev, sbuf.st_ino);
if (fsp1 && !null_timespec(fsp1->pending_modtime)) {
/* the pending modtime overrides the current modtime */
mtime_ts = fsp1->pending_modtime;
@@ -4121,7 +3966,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
- send_trans2_replies(inbuf, outbuf, bufsize, params, param_size, *ppdata, data_size, max_data_bytes);
+ send_trans2_replies(outbuf, bufsize, params, param_size, *ppdata, data_size, max_data_bytes);
return(-1);
}
@@ -4177,7 +4022,7 @@ NTSTATUS hardlink_internals(connection_struct *conn, pstring oldname, pstring ne
}
/* Ensure this is within the share. */
- status = check_reduced_name(conn, oldname);
+ status = reduce_name(conn, oldname);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -4311,7 +4156,6 @@ static NTSTATUS smb_set_file_dosmode(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_set_file_size(connection_struct *conn,
- struct smb_request *req,
files_struct *fsp,
const char *fname,
SMB_STRUCT_STAT *psbuf,
@@ -4341,7 +4185,7 @@ static NTSTATUS smb_set_file_size(connection_struct *conn,
return NT_STATUS_OK;
}
- status = open_file_ntcreate(conn, req, fname, psbuf,
+ status = open_file_ntcreate(conn, fname, psbuf,
FILE_WRITE_DATA,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
FILE_OPEN,
@@ -4539,8 +4383,7 @@ static NTSTATUS smb_set_file_unix_link(connection_struct *conn,
return NT_STATUS_ACCESS_DENIED;
}
- srvstr_pull(inbuf, SVAL(inbuf, smb_flg2), link_target, pdata,
- sizeof(link_target), total_data, STR_TERMINATE);
+ srvstr_pull(inbuf, link_target, pdata, sizeof(link_target), total_data, STR_TERMINATE);
/* !widelinks forces the target path to be within the share. */
/* This means we can interpret the target as a pathname. */
@@ -4596,8 +4439,7 @@ static NTSTATUS smb_set_file_unix_hlink(connection_struct *conn,
return NT_STATUS_INVALID_PARAMETER;
}
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), oldname, pdata,
- sizeof(oldname), total_data, STR_TERMINATE, &status);
+ srvstr_get_path(inbuf, oldname, pdata, sizeof(oldname), total_data, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -4618,7 +4460,6 @@ static NTSTATUS smb_set_file_unix_hlink(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_file_rename_information(connection_struct *conn,
- struct smb_request *req,
char *inbuf,
char *outbuf,
const char *pdata,
@@ -4627,7 +4468,7 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
pstring fname)
{
BOOL overwrite;
- uint32 root_fid;
+ /* uint32 root_fid; */ /* Not used */
uint32 len;
pstring newname;
pstring base_name;
@@ -4640,16 +4481,14 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
}
overwrite = (CVAL(pdata,0) ? True : False);
- root_fid = IVAL(pdata,4);
+ /* root_fid = IVAL(pdata,4); */
len = IVAL(pdata,8);
- if (len > (total_data - 12) || (len == 0) || (root_fid != 0)) {
+ if (len > (total_data - 12) || (len == 0)) {
return NT_STATUS_INVALID_PARAMETER;
}
- srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), newname, &pdata[12],
- sizeof(newname), len, 0, &status,
- &dest_has_wcard);
+ srvstr_get_path_wcard(inbuf, newname, &pdata[12], sizeof(newname), len, 0, &status, &dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -4682,8 +4521,7 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
} else {
DEBUG(10,("smb_file_rename_information: SMB_FILE_RENAME_INFORMATION %s -> %s\n",
fname, newname ));
- status = rename_internals(conn, req, fname, base_name, 0,
- overwrite, False, dest_has_wcard);
+ status = rename_internals(conn, fname, base_name, 0, overwrite, False, dest_has_wcard);
}
return status;
@@ -4828,8 +4666,7 @@ static NTSTATUS smb_set_posix_lock(connection_struct *conn,
(double)offset ));
if (lock_type == UNLOCK_LOCK) {
- status = do_unlock(smbd_messaging_context(),
- fsp,
+ status = do_unlock(fsp,
lock_pid,
count,
offset,
@@ -4837,8 +4674,7 @@ static NTSTATUS smb_set_posix_lock(connection_struct *conn,
} else {
uint32 block_smbpid;
- struct byte_range_lock *br_lck = do_lock(smbd_messaging_context(),
- fsp,
+ struct byte_range_lock *br_lck = do_lock(fsp,
lock_pid,
count,
offset,
@@ -4974,7 +4810,6 @@ static NTSTATUS smb_set_file_basic_info(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_set_file_allocation_info(connection_struct *conn,
- struct smb_request *req,
const char *pdata,
int total_data,
files_struct *fsp,
@@ -5010,24 +4845,31 @@ static NTSTATUS smb_set_file_allocation_info(connection_struct *conn,
allocation_size = smb_roundup(conn, allocation_size);
}
- if(allocation_size == get_file_size(*psbuf)) {
- return NT_STATUS_OK;
- }
-
DEBUG(10,("smb_set_file_allocation_info: file %s : setting new allocation size to %.0f\n",
fname, (double)allocation_size ));
-
+
if (fsp && fsp->fh->fd != -1) {
/* Open file handle. */
- if (vfs_allocate_file_space(fsp, allocation_size) == -1) {
- return map_nt_error_from_unix(errno);
+ /* Only change if needed. */
+ if (allocation_size != get_file_size(*psbuf)) {
+ if (vfs_allocate_file_space(fsp, allocation_size) == -1) {
+ return map_nt_error_from_unix(errno);
+ }
+ }
+ /* But always update the time. */
+ if (null_timespec(fsp->pending_modtime)) {
+ /*
+ * This is equivalent to a write. Ensure it's seen immediately
+ * if there are no pending writes.
+ */
+ set_filetime(fsp->conn, fsp->fsp_name, timespec_current());
}
return NT_STATUS_OK;
}
/* Pathname or stat or directory file. */
- status = open_file_ntcreate(conn, req, fname, psbuf,
+ status = open_file_ntcreate(conn, fname, psbuf,
FILE_WRITE_DATA,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
FILE_OPEN,
@@ -5035,17 +4877,27 @@ static NTSTATUS smb_set_file_allocation_info(connection_struct *conn,
FILE_ATTRIBUTE_NORMAL,
FORCE_OPLOCK_BREAK_TO_NONE,
NULL, &new_fsp);
-
+
if (!NT_STATUS_IS_OK(status)) {
/* NB. We check for open_was_deferred in the caller. */
return status;
}
- if (vfs_allocate_file_space(new_fsp, allocation_size) == -1) {
- status = map_nt_error_from_unix(errno);
- close_file(new_fsp,NORMAL_CLOSE);
- return status;
+
+ /* Only change if needed. */
+ if (allocation_size != get_file_size(*psbuf)) {
+ if (vfs_allocate_file_space(new_fsp, allocation_size) == -1) {
+ status = map_nt_error_from_unix(errno);
+ close_file(new_fsp,NORMAL_CLOSE);
+ return status;
+ }
}
+ /* Changing the allocation size should set the last mod time. */
+ /* Don't need to call set_filetime as this will be flushed on
+ * close. */
+
+ fsp_set_pending_modtime(new_fsp, timespec_current());
+
close_file(new_fsp,NORMAL_CLOSE);
return NT_STATUS_OK;
}
@@ -5055,7 +4907,6 @@ static NTSTATUS smb_set_file_allocation_info(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_set_file_end_of_file_info(connection_struct *conn,
- struct smb_request *req,
const char *pdata,
int total_data,
files_struct *fsp,
@@ -5080,7 +4931,7 @@ static NTSTATUS smb_set_file_end_of_file_info(connection_struct *conn,
DEBUG(10,("smb_set_file_end_of_file_info: Set end of file info for "
"file %s to %.0f\n", fname, (double)size ));
- return smb_set_file_size(conn, req,
+ return smb_set_file_size(conn,
fsp,
fname,
psbuf,
@@ -5176,7 +5027,6 @@ static NTSTATUS smb_unix_mknod(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_set_file_unix_basic(connection_struct *conn,
- struct smb_request *req,
const char *pdata,
int total_data,
files_struct *fsp,
@@ -5290,18 +5140,9 @@ size = %.0f, uid = %u, gid = %u, raw perms = 0%o\n",
*/
if ((set_owner != (uid_t)SMB_UID_NO_CHANGE) && (psbuf->st_uid != set_owner)) {
- int ret;
-
- DEBUG(10,("smb_set_file_unix_basic: SMB_SET_FILE_UNIX_BASIC changing owner %u for path %s\n",
+ DEBUG(10,("smb_set_file_unix_basic: SMB_SET_FILE_UNIX_BASIC changing owner %u for file %s\n",
(unsigned int)set_owner, fname ));
-
- if (S_ISLNK(psbuf->st_mode)) {
- ret = SMB_VFS_LCHOWN(conn, fname, set_owner, (gid_t)-1);
- } else {
- ret = SMB_VFS_CHOWN(conn, fname, set_owner, (gid_t)-1);
- }
-
- if (ret != 0) {
+ if (SMB_VFS_CHOWN(conn, fname, set_owner, (gid_t)-1) != 0) {
status = map_nt_error_from_unix(errno);
if (delete_on_fail) {
SMB_VFS_UNLINK(conn,fname);
@@ -5328,7 +5169,7 @@ size = %.0f, uid = %u, gid = %u, raw perms = 0%o\n",
/* Deal with any size changes. */
- status = smb_set_file_size(conn, req,
+ status = smb_set_file_size(conn,
fsp,
fname,
psbuf,
@@ -5351,7 +5192,6 @@ size = %.0f, uid = %u, gid = %u, raw perms = 0%o\n",
****************************************************************************/
static NTSTATUS smb_set_file_unix_info2(connection_struct *conn,
- struct smb_request *req,
const char *pdata,
int total_data,
files_struct *fsp,
@@ -5369,7 +5209,7 @@ static NTSTATUS smb_set_file_unix_info2(connection_struct *conn,
/* Start by setting all the fields that are common between UNIX_BASIC
* and UNIX_INFO2.
*/
- status = smb_set_file_unix_basic(conn, req, pdata, total_data,
+ status = smb_set_file_unix_basic(conn, pdata, total_data,
fsp, fname, psbuf);
if (!NT_STATUS_IS_OK(status)) {
return status;
@@ -5413,7 +5253,6 @@ static NTSTATUS smb_set_file_unix_info2(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_posix_mkdir(connection_struct *conn,
- struct smb_request *req,
char **ppdata,
int total_data,
const char *fname,
@@ -5446,7 +5285,7 @@ static NTSTATUS smb_posix_mkdir(connection_struct *conn,
DEBUG(10,("smb_posix_mkdir: file %s, mode 0%o\n",
fname, (unsigned int)unixmode ));
- status = open_directory(conn, req,
+ status = open_directory(conn,
fname,
psbuf,
FILE_READ_ATTRIBUTES, /* Just a stat open */
@@ -5508,7 +5347,6 @@ static NTSTATUS smb_posix_mkdir(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_posix_open(connection_struct *conn,
- struct smb_request *req,
char **ppdata,
int total_data,
const char *fname,
@@ -5544,7 +5382,7 @@ static NTSTATUS smb_posix_open(connection_struct *conn,
wire_open_mode = IVAL(pdata,4);
if (wire_open_mode == (SMB_O_CREAT|SMB_O_DIRECTORY)) {
- return smb_posix_mkdir(conn, req,
+ return smb_posix_mkdir(conn,
ppdata,
total_data,
fname,
@@ -5612,7 +5450,7 @@ static NTSTATUS smb_posix_open(connection_struct *conn,
(unsigned int)wire_open_mode,
(unsigned int)unixmode ));
- status = open_file_ntcreate(conn, req,
+ status = open_file_ntcreate(conn,
fname,
psbuf,
access_mask,
@@ -5696,7 +5534,6 @@ static NTSTATUS smb_posix_open(connection_struct *conn,
****************************************************************************/
static NTSTATUS smb_posix_unlink(connection_struct *conn,
- struct smb_request *req,
const char *pdata,
int total_data,
const char *fname,
@@ -5705,7 +5542,10 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
NTSTATUS status = NT_STATUS_OK;
files_struct *fsp = NULL;
uint16 flags = 0;
+ char del = 1;
int info = 0;
+ int i;
+ struct share_mode_lock *lck = NULL;
if (total_data < 2) {
return NT_STATUS_INVALID_PARAMETER;
@@ -5727,20 +5567,19 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
fname));
if (VALID_STAT_OF_DIR(*psbuf)) {
- status = open_directory(conn, req,
+ status = open_directory(conn,
fname,
psbuf,
DELETE_ACCESS,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
FILE_OPEN,
- FILE_DELETE_ON_CLOSE,
+ 0,
FILE_FLAG_POSIX_SEMANTICS|0777,
- &info,
+ &info,
&fsp);
} else {
- char del = 1;
- status = open_file_ntcreate(conn, req,
+ status = open_file_ntcreate(conn,
fname,
psbuf,
DELETE_ACCESS,
@@ -5751,26 +5590,59 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
0, /* No oplock, but break existing ones. */
&info,
&fsp);
- /*
- * For file opens we must set the delete on close
- * after the open.
- */
+ }
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
- status = smb_set_file_disposition_info(conn,
- &del,
- 1,
- fsp,
- fname,
- psbuf);
+ /*
+ * Don't lie to client. If we can't really delete due to
+ * non-POSIX opens return SHARING_VIOLATION.
+ */
+
+ lck = get_share_mode_lock(NULL, fsp->dev, fsp->inode, NULL, NULL);
+ if (lck == NULL) {
+ DEBUG(0, ("smb_posix_unlink: Could not get share mode "
+ "lock for file %s\n", fsp->fsp_name));
+ close_file(fsp, NORMAL_CLOSE);
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
+ /*
+ * See if others still have the file open. If this is the case, then
+ * don't delete. If all opens are POSIX delete we can set the delete
+ * on close disposition.
+ */
+ for (i=0; i<lck->num_share_modes; i++) {
+ struct share_mode_entry *e = &lck->share_modes[i];
+ if (is_valid_share_mode_entry(e)) {
+ if (e->flags & SHARE_MODE_FLAG_POSIX_OPEN) {
+ continue;
+ }
+ /* Fail with sharing violation. */
+ close_file(fsp, NORMAL_CLOSE);
+ TALLOC_FREE(lck);
+ return NT_STATUS_SHARING_VIOLATION;
+ }
}
+ /*
+ * Set the delete on close.
+ */
+ status = smb_set_file_disposition_info(conn,
+ &del,
+ 1,
+ fsp,
+ fname,
+ psbuf);
+
if (!NT_STATUS_IS_OK(status)) {
+ close_file(fsp, NORMAL_CLOSE);
+ TALLOC_FREE(lck);
return status;
}
+ TALLOC_FREE(lck);
return close_file(fsp, NORMAL_CLOSE);
}
@@ -5778,10 +5650,7 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
Reply to a TRANS2_SETFILEINFO (set file info by fileid or pathname).
****************************************************************************/
-static int call_trans2setfilepathinfo(connection_struct *conn,
- struct smb_request *req,
- char *inbuf, char *outbuf, int length,
- int bufsize,
+static int call_trans2setfilepathinfo(connection_struct *conn, char *inbuf, char *outbuf, int length, int bufsize,
unsigned int tran_call,
char **pparams, int total_params, char **ppdata, int total_data,
unsigned int max_data_bytes)
@@ -5838,7 +5707,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
DEBUG(3,("call_trans2setfilepathinfo: Cancelling print job (%s)\n", fsp->fsp_name ));
SSVAL(params,0,0);
- send_trans2_replies(inbuf, outbuf, bufsize, params, 2, *ppdata, 0, max_data_bytes);
+ send_trans2_replies(outbuf, bufsize, params, 2, *ppdata, 0, max_data_bytes);
return(-1);
} else
return (UNIXERROR(ERRDOS,ERRbadpath));
@@ -5862,9 +5731,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
}
info_level = SVAL(params,0);
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), fname, &params[6],
- sizeof(fname), total_params - 6, STR_TERMINATE,
- &status);
+ srvstr_get_path(inbuf, fname, &params[6], sizeof(fname), total_params - 6, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -5964,7 +5831,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
case SMB_FILE_ALLOCATION_INFORMATION:
case SMB_SET_FILE_ALLOCATION_INFO:
{
- status = smb_set_file_allocation_info(conn, req,
+ status = smb_set_file_allocation_info(conn,
pdata,
total_data,
fsp,
@@ -5976,7 +5843,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
case SMB_FILE_END_OF_FILE_INFORMATION:
case SMB_SET_FILE_END_OF_FILE_INFO:
{
- status = smb_set_file_end_of_file_info(conn, req,
+ status = smb_set_file_end_of_file_info(conn,
pdata,
total_data,
fsp,
@@ -6035,7 +5902,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
case SMB_SET_FILE_UNIX_BASIC:
{
- status = smb_set_file_unix_basic(conn, req,
+ status = smb_set_file_unix_basic(conn,
pdata,
total_data,
fsp,
@@ -6046,7 +5913,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
case SMB_SET_FILE_UNIX_INFO2:
{
- status = smb_set_file_unix_info2(conn, req,
+ status = smb_set_file_unix_info2(conn,
pdata,
total_data,
fsp,
@@ -6086,7 +5953,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
case SMB_FILE_RENAME_INFORMATION:
{
- status = smb_file_rename_information(conn, req,
+ status = smb_file_rename_information(conn,
inbuf,
outbuf,
pdata,
@@ -6130,7 +5997,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
- status = smb_posix_open(conn, req,
+ status = smb_posix_open(conn,
ppdata,
total_data,
fname,
@@ -6146,7 +6013,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
return ERROR_NT(NT_STATUS_INVALID_LEVEL);
}
- status = smb_posix_unlink(conn, req,
+ status = smb_posix_unlink(conn,
pdata,
total_data,
fname,
@@ -6171,11 +6038,14 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
if (NT_STATUS_EQUAL(status,NT_STATUS_PATH_NOT_COVERED)) {
return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath);
}
+ if (info_level == SMB_POSIX_PATH_OPEN) {
+ return ERROR_OPEN(status);
+ }
return ERROR_NT(status);
}
SSVAL(params,0,0);
- send_trans2_replies(inbuf, outbuf, bufsize, params, 2, *ppdata, data_return_size, max_data_bytes);
+ send_trans2_replies(outbuf, bufsize, params, 2, *ppdata, data_return_size, max_data_bytes);
return -1;
}
@@ -6202,9 +6072,7 @@ static int call_trans2mkdir(connection_struct *conn, char *inbuf, char *outbuf,
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
- srvstr_get_path(inbuf, SVAL(inbuf,smb_flg2), directory, &params[4],
- sizeof(directory), total_params - 4, STR_TERMINATE,
- &status);
+ srvstr_get_path(inbuf, directory, &params[4], sizeof(directory), total_params - 4, STR_TERMINATE, &status);
if (!NT_STATUS_IS_OK(status)) {
return ERROR_NT(status);
}
@@ -6276,7 +6144,7 @@ static int call_trans2mkdir(connection_struct *conn, char *inbuf, char *outbuf,
SSVAL(params,0,0);
- send_trans2_replies(inbuf, outbuf, bufsize, params, 2, *ppdata, 0, max_data_bytes);
+ send_trans2_replies(outbuf, bufsize, params, 2, *ppdata, 0, max_data_bytes);
return(-1);
}
@@ -6325,7 +6193,7 @@ static int call_trans2findnotifyfirst(connection_struct *conn, char *inbuf, char
if(fnf_handle == 0)
fnf_handle = 257;
- send_trans2_replies(inbuf, outbuf, bufsize, params, 6, *ppdata, 0, max_data_bytes);
+ send_trans2_replies(outbuf, bufsize, params, 6, *ppdata, 0, max_data_bytes);
return(-1);
}
@@ -6353,7 +6221,7 @@ static int call_trans2findnotifynext(connection_struct *conn, char *inbuf, char
SSVAL(params,0,0); /* No changes */
SSVAL(params,2,0); /* No EA errors */
- send_trans2_replies(inbuf, outbuf, bufsize, params, 4, *ppdata, 0, max_data_bytes);
+ send_trans2_replies(outbuf, bufsize, params, 4, *ppdata, 0, max_data_bytes);
return(-1);
}
@@ -6383,13 +6251,12 @@ static int call_trans2getdfsreferral(connection_struct *conn, char* inbuf, char*
if(!lp_host_msdfs())
return ERROR_DOS(ERRDOS,ERRbadfunc);
- srvstr_pull(inbuf, SVAL(inbuf, smb_flg2), pathname, &params[2],
- sizeof(pathname), total_params - 2, STR_TERMINATE);
+ srvstr_pull(inbuf, pathname, &params[2], sizeof(pathname), total_params - 2, STR_TERMINATE);
if((reply_size = setup_dfs_referral(conn, pathname,max_referral_level,ppdata,&status)) < 0)
return ERROR_NT(status);
SSVAL(outbuf,smb_flg2,SVAL(outbuf,smb_flg2) | FLAGS2_DFS_PATHNAMES);
- send_trans2_replies(inbuf, outbuf,bufsize,0,0,*ppdata,reply_size, max_data_bytes);
+ send_trans2_replies(outbuf,bufsize,0,0,*ppdata,reply_size, max_data_bytes);
return(-1);
}
@@ -6427,7 +6294,7 @@ static int call_trans2ioctl(connection_struct *conn, char* inbuf, char* outbuf,
SSVAL(pdata,0,fsp->rap_print_jobid); /* Job number */
srvstr_push( outbuf, pdata + 2, global_myname(), 15, STR_ASCII|STR_TERMINATE); /* Our NetBIOS name */
srvstr_push( outbuf, pdata+18, lp_servicename(SNUM(conn)), 13, STR_ASCII|STR_TERMINATE); /* Service name */
- send_trans2_replies(inbuf, outbuf,bufsize,*pparams,0,*ppdata,32, max_data_bytes);
+ send_trans2_replies(outbuf,bufsize,*pparams,0,*ppdata,32, max_data_bytes);
return(-1);
} else {
DEBUG(2,("Unknown TRANS2_IOCTL\n"));
@@ -6450,7 +6317,7 @@ int reply_findclose(connection_struct *conn,
dptr_close(&dptr_num);
- outsize = set_message(inbuf, outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
DEBUG(3,("SMBfindclose dptr_num = %d\n", dptr_num));
@@ -6477,7 +6344,7 @@ int reply_findnclose(connection_struct *conn,
findnotifyfirst - so any dptr_num is ok here.
Just ignore it. */
- outsize = set_message(inbuf, outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
DEBUG(3,("SMB_findnclose dptr_num = %d\n", dptr_num));
@@ -6485,9 +6352,9 @@ int reply_findnclose(connection_struct *conn,
return(outsize);
}
-static int handle_trans2(connection_struct *conn, struct smb_request *req,
- struct trans_state *state,
- char *inbuf, char *outbuf, int size, int bufsize)
+int handle_trans2(connection_struct *conn,
+ struct trans_state *state,
+ char *inbuf, char *outbuf, int size, int bufsize)
{
int outsize;
@@ -6501,7 +6368,7 @@ static int handle_trans2(connection_struct *conn, struct smb_request *req,
{
START_PROFILE(Trans2_open);
outsize = call_trans2open(
- conn, req, inbuf, outbuf, bufsize,
+ conn, inbuf, outbuf, bufsize,
&state->param, state->total_param,
&state->data, state->total_data,
state->max_data_return);
@@ -6575,7 +6442,7 @@ static int handle_trans2(connection_struct *conn, struct smb_request *req,
{
START_PROFILE(Trans2_setpathinfo);
outsize = call_trans2setfilepathinfo(
- conn, req, inbuf, outbuf, size, bufsize, state->call,
+ conn, inbuf, outbuf, size, bufsize, state->call,
&state->param, state->total_param,
&state->data, state->total_data,
state->max_data_return);
@@ -6679,8 +6546,7 @@ int reply_trans2(connection_struct *conn, char *inbuf,char *outbuf,
}
if (IS_IPC(conn) && (tran_call != TRANSACT2_OPEN)
- && (tran_call != TRANSACT2_GET_DFS_REFERRAL)
- && (tran_call != TRANSACT2_QFILEINFO)) {
+ && (tran_call != TRANSACT2_GET_DFS_REFERRAL)) {
END_PROFILE(SMBtrans2);
return ERROR_DOS(ERRSRV,ERRaccess);
}
@@ -6783,10 +6649,7 @@ int reply_trans2(connection_struct *conn, char *inbuf,char *outbuf,
if ((state->received_param == state->total_param) &&
(state->received_data == state->total_data)) {
- struct smb_request req;
- init_smb_request(&req, (uint8 *)inbuf);
-
- outsize = handle_trans2(conn, &req, state, inbuf, outbuf,
+ outsize = handle_trans2(conn, state, inbuf, outbuf,
size, bufsize);
SAFE_FREE(state->data);
SAFE_FREE(state->param);
@@ -6799,7 +6662,7 @@ int reply_trans2(connection_struct *conn, char *inbuf,char *outbuf,
/* We need to send an interim response then receive the rest
of the parameter/data bytes */
- outsize = set_message(inbuf, outbuf,0,0,False);
+ outsize = set_message(outbuf,0,0,False);
show_msg(outbuf);
END_PROFILE(SMBtrans2);
return outsize;
@@ -6825,7 +6688,6 @@ int reply_transs2(connection_struct *conn,
int outsize = 0;
unsigned int pcnt,poff,dcnt,doff,pdisp,ddisp;
struct trans_state *state;
- struct smb_request req;
START_PROFILE(SMBtranss2);
@@ -6911,10 +6773,7 @@ int reply_transs2(connection_struct *conn,
*/
SCVAL(outbuf,smb_com,SMBtrans2);
- init_smb_request(&req, (uint8 *)inbuf);
-
- outsize = handle_trans2(conn, &req, state, inbuf, outbuf, size,
- bufsize);
+ outsize = handle_trans2(conn, state, inbuf, outbuf, size, bufsize);
DLIST_REMOVE(conn->pending_trans, state);
SAFE_FREE(state->data);
diff --git a/source/smbd/vfs.c b/source/smbd/vfs.c
index b854c36a7ba..2fd448061e4 100644
--- a/source/smbd/vfs.c
+++ b/source/smbd/vfs.c
@@ -802,7 +802,7 @@ char *vfs_GetWd(connection_struct *conn, char *path)
it is below dir in the heirachy. This uses realpath.
********************************************************************/
-NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
+NTSTATUS reduce_name(connection_struct *conn, const pstring fname)
{
#ifdef REALPATH_TAKES_NULL
BOOL free_resolved_name = True;
diff --git a/source/lib/tdb/Makefile.in b/source/tdb/Makefile.in
index b2f42ea70fb..455a6e52ce4 100644
--- a/source/lib/tdb/Makefile.in
+++ b/source/tdb/Makefile.in
@@ -12,18 +12,18 @@ libdir = @libdir@
VPATH = @srcdir@:@libreplacedir@
srcdir = @srcdir@
builddir = @builddir@
-CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -Iinclude -I@libreplacedir@
+CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -Iinclude -I../include -I@libreplacedir@
CFLAGS = $(CPPFLAGS) @CFLAGS@
LDFLAGS = @LDFLAGS@
EXEEXT = @EXEEXT@
.PHONY: test
-PROGS = bin/tdbtool$(EXEEXT) bin/tdbdump$(EXEEXT) bin/tdbbackup$(EXEEXT)
-PROGS_NOINSTALL = bin/tdbtest$(EXEEXT) bin/tdbtorture$(EXEEXT)
+PROGS = bin/tdbtool$(EXEEXT) bin/tdbtorture$(EXEEXT)
+PROGS_NOINSTALL = bin/tdbtest$(EXEEXT) bin/tdbdump$(EXEEXT) bin/tdbbackup$(EXEEXT)
ALL_PROGS = $(PROGS) $(PROGS_NOINSTALL)
-TDB_OBJ = @TDBOBJ@ @LIBREPLACEOBJ@
+TDB_OBJ = @TDBOBJ@
DIRS = bin common tools
diff --git a/source/lib/ldb/aclocal.m4 b/source/tdb/aclocal.m4
index 5605e476bab..5605e476bab 100644
--- a/source/lib/ldb/aclocal.m4
+++ b/source/tdb/aclocal.m4
diff --git a/source/lib/tdb/autogen.sh b/source/tdb/autogen.sh
index bf84eeee19a..1691689e10c 100755
--- a/source/lib/tdb/autogen.sh
+++ b/source/tdb/autogen.sh
@@ -3,7 +3,7 @@
rm -rf autom4te.cache
rm -f configure config.h.in
-IPATHS="-I libreplace -I lib/replace -I ../libreplace -I ../replace"
+IPATHS="-I libreplace -I lib/replace -I ../libreplace -I ../replace -I ../lib/replace"
autoconf $IPATHS || exit 1
autoheader $IPATHS || exit 1
diff --git a/source/lib/tdb/common/dump.c b/source/tdb/common/dump.c
index 3f5c2c87f5b..3f5c2c87f5b 100644
--- a/source/lib/tdb/common/dump.c
+++ b/source/tdb/common/dump.c
diff --git a/source/lib/tdb/common/error.c b/source/tdb/common/error.c
index ddc810e93d2..4cf33a29ab2 100644
--- a/source/lib/tdb/common/error.c
+++ b/source/tdb/common/error.c
@@ -49,7 +49,7 @@ static struct tdb_errname {
/* Error string for the last tdb error */
const char *tdb_errorstr(struct tdb_context *tdb)
{
- uint32_t i;
+ u32 i;
for (i = 0; i < sizeof(emap) / sizeof(struct tdb_errname); i++)
if (tdb->ecode == emap[i].ecode)
return emap[i].estring;
diff --git a/source/lib/tdb/common/freelist.c b/source/tdb/common/freelist.c
index 01b61aff865..0efe47f8798 100644
--- a/source/lib/tdb/common/freelist.c
+++ b/source/tdb/common/freelist.c
@@ -29,7 +29,7 @@
#include "tdb_private.h"
/* read a freelist record and check for simple errors */
-int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
+int rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
{
if (tdb->methods->tdb_read(tdb, off, rec, sizeof(*rec),DOCONV()) == -1)
return -1;
@@ -37,7 +37,7 @@ int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct
if (rec->magic == TDB_MAGIC) {
/* this happens when a app is showdown while deleting a record - we should
not completely fail when this happens */
- TDB_LOG((tdb, TDB_DEBUG_WARNING, "tdb_rec_free_read non-free magic 0x%x at offset=%d - fixing\n",
+ TDB_LOG((tdb, TDB_DEBUG_WARNING, "rec_free_read non-free magic 0x%x at offset=%d - fixing\n",
rec->magic, off));
rec->magic = TDB_FREE_MAGIC;
if (tdb->methods->tdb_write(tdb, off, rec, sizeof(*rec)) == -1)
@@ -47,7 +47,7 @@ int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct
if (rec->magic != TDB_FREE_MAGIC) {
/* Ensure ecode is set for log fn. */
tdb->ecode = TDB_ERR_CORRUPT;
- TDB_LOG((tdb, TDB_DEBUG_WARNING, "tdb_rec_free_read bad magic 0x%x at offset=%d\n",
+ TDB_LOG((tdb, TDB_DEBUG_WARNING, "rec_free_read bad magic 0x%x at offset=%d\n",
rec->magic, off));
return TDB_ERRCODE(TDB_ERR_CORRUPT, -1);
}
@@ -286,7 +286,7 @@ tdb_off_t tdb_allocate(struct tdb_context *tdb, tdb_len_t length, struct list_st
issues when faced with a slowly increasing record size.
*/
while (rec_ptr) {
- if (tdb_rec_free_read(tdb, rec_ptr, rec) == -1) {
+ if (rec_free_read(tdb, rec_ptr, rec) == -1) {
goto fail;
}
@@ -311,7 +311,7 @@ tdb_off_t tdb_allocate(struct tdb_context *tdb, tdb_len_t length, struct list_st
}
if (bestfit.rec_ptr != 0) {
- if (tdb_rec_free_read(tdb, bestfit.rec_ptr, rec) == -1) {
+ if (rec_free_read(tdb, bestfit.rec_ptr, rec) == -1) {
goto fail;
}
diff --git a/source/lib/tdb/common/freelistcheck.c b/source/tdb/common/freelistcheck.c
index 19368f6ad6e..3f79a016b86 100644
--- a/source/lib/tdb/common/freelistcheck.c
+++ b/source/tdb/common/freelistcheck.c
@@ -39,7 +39,7 @@ static int seen_insert(struct tdb_context *mem_tdb, tdb_off_t rec_ptr)
TDB_DATA key, data;
memset(&data, '\0', sizeof(data));
- key.dptr = (unsigned char *)&rec_ptr;
+ key.dptr = (char *)&rec_ptr;
key.dsize = sizeof(rec_ptr);
return tdb_store(mem_tdb, key, data, TDB_INSERT);
}
@@ -88,7 +88,7 @@ int tdb_validate_freelist(struct tdb_context *tdb, int *pnum_entries)
goto fail;
}
- if (tdb_rec_free_read(tdb, rec_ptr, &rec) == -1) {
+ if (rec_free_read(tdb, rec_ptr, &rec) == -1) {
goto fail;
}
diff --git a/source/lib/tdb/common/io.c b/source/tdb/common/io.c
index 2a01a103d1a..01ada7647b9 100644
--- a/source/lib/tdb/common/io.c
+++ b/source/tdb/common/io.c
@@ -89,20 +89,39 @@ static int tdb_write(struct tdb_context *tdb, tdb_off_t off,
if (tdb->map_ptr) {
memcpy(off + (char *)tdb->map_ptr, buf, len);
- } else if (pwrite(tdb->fd, buf, len, off) != (ssize_t)len) {
- /* Ensure ecode is set for log fn. */
- tdb->ecode = TDB_ERR_IO;
- TDB_LOG((tdb, TDB_DEBUG_FATAL,"tdb_write failed at %d len=%d (%s)\n",
- off, len, strerror(errno)));
- return TDB_ERRCODE(TDB_ERR_IO, -1);
+ } else {
+ ssize_t written = pwrite(tdb->fd, buf, len, off);
+ if ((written != (ssize_t)len) && (written != -1)) {
+ /* try once more */
+ TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_write: wrote only "
+ "%d of %d bytes at %d, trying once more\n",
+ written, len, off));
+ errno = ENOSPC;
+ written = pwrite(tdb->fd, (void *)((char *)buf+written),
+ len-written,
+ off+written);
+ }
+ if (written == -1) {
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_IO;
+ TDB_LOG((tdb, TDB_DEBUG_FATAL,"tdb_write failed at %d "
+ "len=%d (%s)\n", off, len, strerror(errno)));
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+ } else if (written != (ssize_t)len) {
+ TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_write: failed to "
+ "write %d bytes at %d in two attempts\n",
+ len, off));
+ errno = ENOSPC;
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+ }
}
return 0;
}
/* Endian conversion: we only ever deal with 4 byte quantities */
-void *tdb_convert(void *buf, uint32_t size)
+void *tdb_convert(void *buf, u32 size)
{
- uint32_t i, *p = (uint32_t *)buf;
+ u32 i, *p = (u32 *)buf;
for (i = 0; i < size / 4; i++)
p[i] = TDB_BYTEREV(p[i]);
return buf;
@@ -143,17 +162,17 @@ static int tdb_read(struct tdb_context *tdb, tdb_off_t off, void *buf,
do an unlocked scan of the hash table heads to find the next non-zero head. The value
will then be confirmed with the lock held
*/
-static void tdb_next_hash_chain(struct tdb_context *tdb, uint32_t *chain)
+static void tdb_next_hash_chain(struct tdb_context *tdb, u32 *chain)
{
- uint32_t h = *chain;
+ u32 h = *chain;
if (tdb->map_ptr) {
for (;h < tdb->header.hash_size;h++) {
- if (0 != *(uint32_t *)(TDB_HASH_TOP(h) + (unsigned char *)tdb->map_ptr)) {
+ if (0 != *(u32 *)(TDB_HASH_TOP(h) + (unsigned char *)tdb->map_ptr)) {
break;
}
}
} else {
- uint32_t off=0;
+ u32 off=0;
for (;h < tdb->header.hash_size;h++) {
if (tdb_ofs_read(tdb, TDB_HASH_TOP(h), &off) != 0 || off != 0) {
break;
@@ -221,7 +240,16 @@ static int tdb_expand_file(struct tdb_context *tdb, tdb_off_t size, tdb_off_t ad
if (ftruncate(tdb->fd, size+addition) == -1) {
char b = 0;
- if (pwrite(tdb->fd, &b, 1, (size+addition) - 1) != 1) {
+ ssize_t written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ if (written == 0) {
+ /* try once more, potentially revealing errno */
+ written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ }
+ if (written == 0) {
+ /* again - give up, guessing errno */
+ errno = ENOSPC;
+ }
+ if (written != 1) {
TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file to %d failed (%s)\n",
size+addition, strerror(errno)));
return -1;
@@ -233,15 +261,28 @@ static int tdb_expand_file(struct tdb_context *tdb, tdb_off_t size, tdb_off_t ad
disk. This must be done with write, not via mmap */
memset(buf, TDB_PAD_BYTE, sizeof(buf));
while (addition) {
- int n = addition>sizeof(buf)?sizeof(buf):addition;
- int ret = pwrite(tdb->fd, buf, n, size);
- if (ret != n) {
- TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file write of %d failed (%s)\n",
- n, strerror(errno)));
+ size_t n = addition>sizeof(buf)?sizeof(buf):addition;
+ ssize_t written = pwrite(tdb->fd, buf, n, size);
+ if (written == 0) {
+ /* prevent infinite loops: try _once_ more */
+ written = pwrite(tdb->fd, buf, n, size);
+ }
+ if (written == 0) {
+ /* give up, trying to provide a useful errno */
+ TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file write "
+ "returned 0 twice: giving up!\n"));
+ errno = ENOSPC;
+ return -1;
+ } else if (written == -1) {
+ TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file write of "
+ "%d bytes failed (%s)\n", n, strerror(errno)));
return -1;
+ } else if (written != n) {
+ TDB_LOG((tdb, TDB_DEBUG_WARNING, "expand_file: wrote "
+ "only %d of %d bytes - retrying\n", written,n));
}
- addition -= n;
- size += n;
+ addition -= written;
+ size += written;
}
return 0;
}
@@ -332,16 +373,16 @@ int tdb_ofs_write(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d)
/* read a lump of data, allocating the space for it */
-unsigned char *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len_t len)
+char *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len_t len)
{
- unsigned char *buf;
+ char *buf;
/* some systems don't like zero length malloc */
if (len == 0) {
len = 1;
}
- if (!(buf = (unsigned char *)malloc(len))) {
+ if (!(buf = (char *)malloc(len))) {
/* Ensure ecode is set for log fn. */
tdb->ecode = TDB_ERR_OOM;
TDB_LOG((tdb, TDB_DEBUG_ERROR,"tdb_alloc_read malloc failed len=%d (%s)\n",
@@ -376,7 +417,7 @@ int tdb_parse_data(struct tdb_context *tdb, TDB_DATA key,
if (tdb->methods->tdb_oob(tdb, offset+len, 0) != 0) {
return -1;
}
- data.dptr = offset + (unsigned char *)tdb->map_ptr;
+ data.dptr = offset + (char *)tdb->map_ptr;
return parser(key, data, private_data);
}
diff --git a/source/lib/tdb/common/lock.c b/source/tdb/common/lock.c
index 8500438a4e7..8a964371d3a 100644
--- a/source/lib/tdb/common/lock.c
+++ b/source/tdb/common/lock.c
@@ -401,7 +401,7 @@ int tdb_write_unlock_record(struct tdb_context *tdb, tdb_off_t off)
int tdb_unlock_record(struct tdb_context *tdb, tdb_off_t off)
{
struct tdb_traverse_lock *i;
- uint32_t count = 0;
+ u32 count = 0;
if (off == 0)
return 0;
diff --git a/source/lib/tdb/common/open.c b/source/tdb/common/open.c
index 84e67f1993c..402352d3af2 100644
--- a/source/lib/tdb/common/open.c
+++ b/source/tdb/common/open.c
@@ -35,8 +35,8 @@ static struct tdb_context *tdbs = NULL;
/* This is based on the hash algorithm from gdbm */
static unsigned int default_tdb_hash(TDB_DATA *key)
{
- uint32_t value; /* Used to compute the hash value. */
- uint32_t i; /* Used to cycle through random values. */
+ u32 value; /* Used to compute the hash value. */
+ u32 i; /* Used to cycle through random values. */
/* Set the initial value from the key size. */
for (value = 0x238F13AF * key->dsize, i=0; i < key->dsize; i++)
@@ -50,7 +50,9 @@ static unsigned int default_tdb_hash(TDB_DATA *key)
static int tdb_new_database(struct tdb_context *tdb, int hash_size)
{
struct tdb_header *newdb;
- int size, ret = -1;
+ size_t size;
+ int ret = -1;
+ ssize_t written;
/* We make it up in memory, then write it out if not internal */
size = sizeof(struct tdb_header) + (hash_size+1)*sizeof(tdb_off_t);
@@ -79,10 +81,22 @@ static int tdb_new_database(struct tdb_context *tdb, int hash_size)
memcpy(&tdb->header, newdb, sizeof(tdb->header));
/* Don't endian-convert the magic food! */
memcpy(newdb->magic_food, TDB_MAGIC_FOOD, strlen(TDB_MAGIC_FOOD)+1);
- if (write(tdb->fd, newdb, size) != size) {
- ret = -1;
- } else {
+ /* we still have "ret == -1" here */
+ written = write(tdb->fd, newdb, size);
+ if (written == size) {
ret = 0;
+ } else if (written != -1) {
+ /* call write once again, this usually should return -1 and
+ * set errno appropriately */
+ size -= written;
+ written = write(tdb->fd, newdb+written, size);
+ if (written == size) {
+ ret = 0;
+ } else if (written >= 0) {
+ /* a second incomplete write - we give up.
+ * guessing the errno... */
+ errno = ENOSPC;
+ }
}
fail:
@@ -138,7 +152,7 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
struct stat st;
int rev = 0, locked = 0;
unsigned char *vp;
- uint32_t vertest;
+ u32 vertest;
if (!(tdb = (struct tdb_context *)calloc(1, sizeof *tdb))) {
/* Can't log this */
@@ -165,10 +179,6 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
tdb->page_size = 0x2000;
}
- if (open_flags & TDB_VOLATILE) {
- tdb->max_dead_records = 5;
- }
-
if ((open_flags & O_ACCMODE) == O_WRONLY) {
TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_open_ex: can't open tdb %s write-only\n",
name));
@@ -221,20 +231,23 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
}
}
+ errno = 0;
if (read(tdb->fd, &tdb->header, sizeof(tdb->header)) != sizeof(tdb->header)
|| strcmp(tdb->header.magic_food, TDB_MAGIC_FOOD) != 0
|| (tdb->header.version != TDB_VERSION
&& !(rev = (tdb->header.version==TDB_BYTEREV(TDB_VERSION))))) {
/* its not a valid database - possibly initialise it */
if (!(open_flags & O_CREAT) || tdb_new_database(tdb, hash_size) == -1) {
- errno = EIO; /* ie bad format or something */
+ if (errno == 0) {
+ errno = EIO; /* ie bad format or something */
+ }
goto fail;
}
rev = (tdb->flags & TDB_CONVERT);
}
vp = (unsigned char *)&tdb->header.version;
- vertest = (((uint32_t)vp[0]) << 24) | (((uint32_t)vp[1]) << 16) |
- (((uint32_t)vp[2]) << 8) | (uint32_t)vp[3];
+ vertest = (((u32)vp[0]) << 24) | (((u32)vp[1]) << 16) |
+ (((u32)vp[2]) << 8) | (u32)vp[3];
tdb->flags |= (vertest==TDB_VERSION) ? TDB_BIGENDIAN : 0;
if (!rev)
tdb->flags &= ~TDB_CONVERT;
diff --git a/source/lib/tdb/common/tdb.c b/source/tdb/common/tdb.c
index 92811bea49f..3e8358b00d2 100644
--- a/source/lib/tdb/common/tdb.c
+++ b/source/tdb/common/tdb.c
@@ -63,7 +63,7 @@ static int tdb_key_compare(TDB_DATA key, TDB_DATA data, void *private_data)
/* Returns 0 on fail. On success, return offset of record, and fills
in rec */
-static tdb_off_t tdb_find(struct tdb_context *tdb, TDB_DATA key, uint32_t hash,
+static tdb_off_t tdb_find(struct tdb_context *tdb, TDB_DATA key, u32 hash,
struct list_struct *r)
{
tdb_off_t rec_ptr;
@@ -90,11 +90,10 @@ static tdb_off_t tdb_find(struct tdb_context *tdb, TDB_DATA key, uint32_t hash,
}
/* As tdb_find, but if you succeed, keep the lock */
-tdb_off_t tdb_find_lock_hash(struct tdb_context *tdb, TDB_DATA key,
- uint32_t hash, int locktype,
+tdb_off_t tdb_find_lock_hash(struct tdb_context *tdb, TDB_DATA key, u32 hash, int locktype,
struct list_struct *rec)
{
- uint32_t rec_ptr;
+ u32 rec_ptr;
if (tdb_lock(tdb, BUCKET(hash), locktype) == -1)
return 0;
@@ -108,7 +107,7 @@ tdb_off_t tdb_find_lock_hash(struct tdb_context *tdb, TDB_DATA key,
is <= the old data size and the key exists.
on failure return -1.
*/
-static int tdb_update_hash(struct tdb_context *tdb, TDB_DATA key, uint32_t hash, TDB_DATA dbuf)
+static int tdb_update_hash(struct tdb_context *tdb, TDB_DATA key, u32 hash, TDB_DATA dbuf)
{
struct list_struct rec;
tdb_off_t rec_ptr;
@@ -147,7 +146,7 @@ TDB_DATA tdb_fetch(struct tdb_context *tdb, TDB_DATA key)
tdb_off_t rec_ptr;
struct list_struct rec;
TDB_DATA ret;
- uint32_t hash;
+ u32 hash;
/* find which hash bucket it is in */
hash = tdb->hash_fn(&key);
@@ -185,7 +184,7 @@ int tdb_parse_record(struct tdb_context *tdb, TDB_DATA key,
tdb_off_t rec_ptr;
struct list_struct rec;
int ret;
- uint32_t hash;
+ u32 hash;
/* find which hash bucket it is in */
hash = tdb->hash_fn(&key);
@@ -208,7 +207,7 @@ int tdb_parse_record(struct tdb_context *tdb, TDB_DATA key,
this doesn't match the conventions in the rest of this module, but is
compatible with gdbm
*/
-static int tdb_exists_hash(struct tdb_context *tdb, TDB_DATA key, uint32_t hash)
+static int tdb_exists_hash(struct tdb_context *tdb, TDB_DATA key, u32 hash)
{
struct list_struct rec;
@@ -220,7 +219,7 @@ static int tdb_exists_hash(struct tdb_context *tdb, TDB_DATA key, uint32_t hash)
int tdb_exists(struct tdb_context *tdb, TDB_DATA key)
{
- uint32_t hash = tdb->hash_fn(&key);
+ u32 hash = tdb->hash_fn(&key);
return tdb_exists_hash(tdb, key, hash);
}
@@ -259,7 +258,7 @@ int tdb_do_delete(struct tdb_context *tdb, tdb_off_t rec_ptr, struct list_struct
return 0;
}
-static int tdb_count_dead(struct tdb_context *tdb, uint32_t hash)
+static int tdb_count_dead(struct tdb_context *tdb, u32 hash)
{
int res = 0;
tdb_off_t rec_ptr;
@@ -284,7 +283,7 @@ static int tdb_count_dead(struct tdb_context *tdb, uint32_t hash)
/*
* Purge all DEAD records from a hash chain
*/
-static int tdb_purge_dead(struct tdb_context *tdb, uint32_t hash)
+static int tdb_purge_dead(struct tdb_context *tdb, u32 hash)
{
int res = -1;
struct list_struct rec;
@@ -320,7 +319,7 @@ static int tdb_purge_dead(struct tdb_context *tdb, uint32_t hash)
}
/* delete an entry in the database given a key */
-static int tdb_delete_hash(struct tdb_context *tdb, TDB_DATA key, uint32_t hash)
+static int tdb_delete_hash(struct tdb_context *tdb, TDB_DATA key, u32 hash)
{
tdb_off_t rec_ptr;
struct list_struct rec;
@@ -374,14 +373,14 @@ static int tdb_delete_hash(struct tdb_context *tdb, TDB_DATA key, uint32_t hash)
int tdb_delete(struct tdb_context *tdb, TDB_DATA key)
{
- uint32_t hash = tdb->hash_fn(&key);
+ u32 hash = tdb->hash_fn(&key);
return tdb_delete_hash(tdb, key, hash);
}
/*
* See if we have a dead record around with enough space
*/
-static tdb_off_t tdb_find_dead(struct tdb_context *tdb, uint32_t hash,
+static tdb_off_t tdb_find_dead(struct tdb_context *tdb, u32 hash,
struct list_struct *r, tdb_len_t length)
{
tdb_off_t rec_ptr;
@@ -415,7 +414,7 @@ static tdb_off_t tdb_find_dead(struct tdb_context *tdb, uint32_t hash,
int tdb_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
{
struct list_struct rec;
- uint32_t hash;
+ u32 hash;
tdb_off_t rec_ptr;
char *p = NULL;
int ret = -1;
@@ -553,7 +552,7 @@ int tdb_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
/* Append to an entry. Create if not exist. */
int tdb_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf)
{
- uint32_t hash;
+ u32 hash;
TDB_DATA dbuf;
int ret = -1;
@@ -565,10 +564,10 @@ int tdb_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf)
dbuf = tdb_fetch(tdb, key);
if (dbuf.dptr == NULL) {
- dbuf.dptr = (unsigned char *)malloc(new_dbuf.dsize);
+ dbuf.dptr = (char *)malloc(new_dbuf.dsize);
} else {
- unsigned char *new_dptr = (unsigned char *)realloc(dbuf.dptr,
- dbuf.dsize + new_dbuf.dsize);
+ char *new_dptr = (char *)realloc(dbuf.dptr,
+ dbuf.dsize + new_dbuf.dsize);
if (new_dptr == NULL) {
free(dbuf.dptr);
}
diff --git a/source/lib/tdb/common/tdb_private.h b/source/tdb/common/tdb_private.h
index 2b91ebd0bac..10bc6dacdcf 100644
--- a/source/lib/tdb/common/tdb_private.h
+++ b/source/tdb/common/tdb_private.h
@@ -31,12 +31,20 @@
#include "system/select.h"
#include "tdb.h"
+#ifndef u32
+#define u32 unsigned
+#endif
+
#ifndef HAVE_GETPAGESIZE
#define getpagesize() 0x2000
#endif
-typedef uint32_t tdb_len_t;
-typedef uint32_t tdb_off_t;
+typedef u32 tdb_len_t;
+typedef u32 tdb_off_t;
+
+#ifndef offsetof
+#define offsetof(t,f) ((unsigned int)&((t *)0)->f)
+#endif
#define TDB_MAGIC_FOOD "TDB file\n"
#define TDB_VERSION (0x26011967 + 6)
@@ -88,8 +96,8 @@ struct list_struct {
tdb_len_t rec_len; /* total byte length of record */
tdb_len_t key_len; /* byte length of key */
tdb_len_t data_len; /* byte length of data */
- uint32_t full_hash; /* the full 32 bit hash of the key */
- uint32_t magic; /* try to catch errors */
+ u32 full_hash; /* the full 32 bit hash of the key */
+ u32 magic; /* try to catch errors */
/* the following union is implied:
union {
char record[rec_len];
@@ -97,7 +105,7 @@ struct list_struct {
char key[key_len];
char data[data_len];
}
- uint32_t totalsize; (tailer)
+ u32 totalsize; (tailer)
}
*/
};
@@ -106,8 +114,8 @@ struct list_struct {
/* this is stored at the front of every database */
struct tdb_header {
char magic_food[32]; /* for /etc/magic */
- uint32_t version; /* version of the code */
- uint32_t hash_size; /* number of hash entries */
+ u32 version; /* version of the code */
+ u32 hash_size; /* number of hash entries */
tdb_off_t rwlocks; /* obsolete - kept to detect old formats */
tdb_off_t recovery_start; /* offset of transaction recovery region */
tdb_off_t sequence_number; /* used when TDB_SEQNUM is set */
@@ -116,14 +124,14 @@ struct tdb_header {
struct tdb_lock_type {
int list;
- uint32_t count;
- uint32_t ltype;
+ u32 count;
+ u32 ltype;
};
struct tdb_traverse_lock {
struct tdb_traverse_lock *next;
- uint32_t off;
- uint32_t hash;
+ u32 off;
+ u32 hash;
int lock_rw;
};
@@ -131,7 +139,7 @@ struct tdb_traverse_lock {
struct tdb_methods {
int (*tdb_read)(struct tdb_context *, tdb_off_t , void *, tdb_len_t , int );
int (*tdb_write)(struct tdb_context *, tdb_off_t, const void *, tdb_len_t);
- void (*next_hash_chain)(struct tdb_context *, uint32_t *);
+ void (*next_hash_chain)(struct tdb_context *, u32 *);
int (*tdb_oob)(struct tdb_context *, tdb_off_t , int );
int (*tdb_expand_file)(struct tdb_context *, tdb_off_t , tdb_off_t );
int (*tdb_brlock)(struct tdb_context *, tdb_off_t , int, int, int, size_t);
@@ -149,7 +157,7 @@ struct tdb_context {
struct tdb_lock_type *lockrecs; /* only real locks, all with count>0 */
enum TDB_ERROR ecode; /* error code for last tdb error */
struct tdb_header header; /* a cached copy of the header */
- uint32_t flags; /* the flags passed to tdb_open */
+ u32 flags; /* the flags passed to tdb_open */
struct tdb_traverse_lock travlocks; /* current traversal locks */
struct tdb_context *next; /* all tdbs to avoid multiple opens */
dev_t device; /* uniquely identifies this tdb */
@@ -178,7 +186,7 @@ int tdb_write_lock_record(struct tdb_context *tdb, tdb_off_t off);
int tdb_write_unlock_record(struct tdb_context *tdb, tdb_off_t off);
int tdb_ofs_read(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d);
int tdb_ofs_write(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d);
-void *tdb_convert(void *buf, uint32_t size);
+void *tdb_convert(void *buf, u32 size);
int tdb_free(struct tdb_context *tdb, tdb_off_t offset, struct list_struct *rec);
tdb_off_t tdb_allocate(struct tdb_context *tdb, tdb_len_t length, struct list_struct *rec);
int tdb_ofs_read(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d);
@@ -188,17 +196,17 @@ int tdb_unlock_record(struct tdb_context *tdb, tdb_off_t off);
int tdb_rec_read(struct tdb_context *tdb, tdb_off_t offset, struct list_struct *rec);
int tdb_rec_write(struct tdb_context *tdb, tdb_off_t offset, struct list_struct *rec);
int tdb_do_delete(struct tdb_context *tdb, tdb_off_t rec_ptr, struct list_struct *rec);
-unsigned char *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len_t len);
+char *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len_t len);
int tdb_parse_data(struct tdb_context *tdb, TDB_DATA key,
tdb_off_t offset, tdb_len_t len,
int (*parser)(TDB_DATA key, TDB_DATA data,
void *private_data),
void *private_data);
-tdb_off_t tdb_find_lock_hash(struct tdb_context *tdb, TDB_DATA key, uint32_t hash, int locktype,
+tdb_off_t tdb_find_lock_hash(struct tdb_context *tdb, TDB_DATA key, u32 hash, int locktype,
struct list_struct *rec);
void tdb_io_init(struct tdb_context *tdb);
int tdb_expand(struct tdb_context *tdb, tdb_off_t size);
-int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off,
- struct list_struct *rec);
+int rec_free_read(struct tdb_context *tdb, tdb_off_t off,
+ struct list_struct *rec);
diff --git a/source/lib/tdb/tools/tdbbackup.c b/source/tdb/common/tdbback.c
index 2e728d46aa1..1339bd22172 100644
--- a/source/lib/tdb/tools/tdbbackup.c
+++ b/source/tdb/common/tdbback.c
@@ -18,42 +18,48 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/*
-
- This program is meant for backup/restore of tdb databases. Typical usage would be:
- tdbbackup *.tdb
- when Samba shuts down cleanly, which will make a backup of all the local databases
- to *.bak files. Then on Samba startup you would use:
- tdbbackup -v *.tdb
- and this will check the databases for corruption and if corruption is detected then
- the backup will be restored.
-
- You may also like to do a backup on a regular basis while Samba is
- running, perhaps using cron.
-
- The reason this program is needed is to cope with power failures
- while Samba is running. A power failure could lead to database
- corruption and Samba will then not start correctly.
+#ifdef STANDALONE
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
- Note that many of the databases in Samba are transient and thus
- don't need to be backed up, so you can optimise the above a little
- by only running the backup on the critical databases.
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+#include <time.h>
+#include <sys/mman.h>
+
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <ctype.h>
+#include <signal.h>
+
+#else
+#include "includes.h"
+
+#ifdef malloc
+#undef malloc
+#endif
+
+#ifdef realloc
+#undef realloc
+#endif
+
+#ifdef calloc
+#undef calloc
+#endif
- */
+#endif
-#include "replace.h"
-#include "system/locale.h"
-#include "system/time.h"
-#include "system/filesys.h"
#include "tdb.h"
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
static int failed;
-static char *add_suffix(const char *name, const char *suffix)
+char *add_suffix(const char *name, const char *suffix)
{
char *ret;
int len = strlen(name) + strlen(suffix) + 1;
@@ -71,7 +77,7 @@ static int copy_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
TDB_CONTEXT *tdb_new = (TDB_CONTEXT *)state;
if (tdb_store(tdb_new, key, dbuf, TDB_INSERT) != 0) {
- fprintf(stderr,"Failed to insert into %s\n", tdb_name(tdb));
+ fprintf(stderr,"Failed to insert into %s\n", tdb_name(tdb_new));
failed = 1;
return 1;
}
@@ -89,7 +95,7 @@ static int test_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
only doing the backup if its OK
this function is also used for restore
*/
-static int backup_tdb(const char *old_name, const char *new_name, int hash_size)
+int backup_tdb(const char *old_name, const char *new_name, int hash_size)
{
TDB_CONTEXT *tdb;
TDB_CONTEXT *tdb_new;
@@ -190,10 +196,12 @@ static int backup_tdb(const char *old_name, const char *new_name, int hash_size)
return 0;
}
+
+
/*
verify a tdb and if it is corrupt then restore from *.bak
*/
-static int verify_tdb(const char *fname, const char *bak_name)
+int verify_tdb(const char *fname, const char *bak_name)
{
TDB_CONTEXT *tdb;
int count = -1;
@@ -217,85 +225,3 @@ static int verify_tdb(const char *fname, const char *bak_name)
return 0;
}
-
-/*
- see if one file is newer than another
-*/
-static int file_newer(const char *fname1, const char *fname2)
-{
- struct stat st1, st2;
- if (stat(fname1, &st1) != 0) {
- return 0;
- }
- if (stat(fname2, &st2) != 0) {
- return 1;
- }
- return (st1.st_mtime > st2.st_mtime);
-}
-
-static void usage(void)
-{
- printf("Usage: tdbbackup [options] <fname...>\n\n");
- printf(" -h this help message\n");
- printf(" -s suffix set the backup suffix\n");
- printf(" -v verify mode (restore if corrupt)\n");
- printf(" -n hashsize set the new hash size for the backup\n");
-}
-
-
- int main(int argc, char *argv[])
-{
- int i;
- int ret = 0;
- int c;
- int verify = 0;
- int hashsize = 0;
- const char *suffix = ".bak";
-
- while ((c = getopt(argc, argv, "vhs:n:")) != -1) {
- switch (c) {
- case 'h':
- usage();
- exit(0);
- case 'v':
- verify = 1;
- break;
- case 's':
- suffix = optarg;
- break;
- case 'n':
- hashsize = atoi(optarg);
- break;
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (argc < 1) {
- usage();
- exit(1);
- }
-
- for (i=0; i<argc; i++) {
- const char *fname = argv[i];
- char *bak_name;
-
- bak_name = add_suffix(fname, suffix);
-
- if (verify) {
- if (verify_tdb(fname, bak_name) != 0) {
- ret = 1;
- }
- } else {
- if (file_newer(fname, bak_name) &&
- backup_tdb(fname, bak_name, hashsize) != 0) {
- ret = 1;
- }
- }
-
- free(bak_name);
- }
-
- return ret;
-}
diff --git a/source/lib/tdb/common/transaction.c b/source/tdb/common/transaction.c
index 9530b8b2442..8bda651f1e4 100644
--- a/source/lib/tdb/common/transaction.c
+++ b/source/tdb/common/transaction.c
@@ -88,6 +88,9 @@
*/
+int transaction_brlock(struct tdb_context *tdb, tdb_off_t offset,
+ int rw_type, int lck_type, int probe, size_t len);
+
struct tdb_transaction_el {
struct tdb_transaction_el *next, *prev;
tdb_off_t offset;
@@ -101,7 +104,7 @@ struct tdb_transaction_el {
struct tdb_transaction {
/* we keep a mirrored copy of the tdb hash heads here so
tdb_next_hash_chain() can operate efficiently */
- uint32_t *hash_heads;
+ u32 *hash_heads;
/* the original io methods - used to do IOs to the real db */
const struct tdb_methods *io_methods;
@@ -206,7 +209,7 @@ static int transaction_write(struct tdb_context *tdb, tdb_off_t off,
hash heads */
if (len == sizeof(tdb_off_t) && off >= FREELIST_TOP &&
off < FREELIST_TOP+TDB_HASHTABLE_SIZE(tdb)) {
- uint32_t chain = (off-FREELIST_TOP) / sizeof(tdb_off_t);
+ u32 chain = (off-FREELIST_TOP) / sizeof(tdb_off_t);
memcpy(&tdb->transaction->hash_heads[chain], buf, len);
}
@@ -317,9 +320,9 @@ fail:
/*
accelerated hash chain head search, using the cached hash heads
*/
-static void transaction_next_hash_chain(struct tdb_context *tdb, uint32_t *chain)
+static void transaction_next_hash_chain(struct tdb_context *tdb, u32 *chain)
{
- uint32_t h = *chain;
+ u32 h = *chain;
for (;h < tdb->header.hash_size;h++) {
/* the +1 takes account of the freelist */
if (0 != tdb->transaction->hash_heads[h+1]) {
@@ -358,8 +361,8 @@ static int transaction_expand_file(struct tdb_context *tdb, tdb_off_t size,
/*
brlock during a transaction - ignore them
*/
-static int transaction_brlock(struct tdb_context *tdb, tdb_off_t offset,
- int rw_type, int lck_type, int probe, size_t len)
+int transaction_brlock(struct tdb_context *tdb, tdb_off_t offset,
+ int rw_type, int lck_type, int probe, size_t len)
{
return 0;
}
@@ -440,8 +443,8 @@ int tdb_transaction_start(struct tdb_context *tdb)
/* setup a copy of the hash table heads so the hash scan in
traverse can be fast */
- tdb->transaction->hash_heads = (uint32_t *)
- calloc(tdb->header.hash_size+1, sizeof(uint32_t));
+ tdb->transaction->hash_heads = (u32 *)
+ calloc(tdb->header.hash_size+1, sizeof(u32));
if (tdb->transaction->hash_heads == NULL) {
tdb->ecode = TDB_ERR_OOM;
goto fail;
@@ -572,7 +575,7 @@ static tdb_len_t tdb_recovery_size(struct tdb_context *tdb)
struct tdb_transaction_el *el;
tdb_len_t recovery_size = 0;
- recovery_size = sizeof(uint32_t);
+ recovery_size = sizeof(u32);
for (el=tdb->transaction->elements;el;el=el->next) {
if (el->offset >= tdb->transaction->old_map_size) {
continue;
@@ -678,7 +681,7 @@ static int transaction_setup_recovery(struct tdb_context *tdb,
struct list_struct *rec;
tdb_off_t recovery_offset, recovery_max_size;
tdb_off_t old_map_size = tdb->transaction->old_map_size;
- uint32_t magic, tailer;
+ u32 magic, tailer;
/*
check that the recovery area has enough space
@@ -781,7 +784,7 @@ int tdb_transaction_commit(struct tdb_context *tdb)
{
const struct tdb_methods *methods;
tdb_off_t magic_offset = 0;
- uint32_t zero = 0;
+ u32 zero = 0;
if (tdb->transaction == NULL) {
TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_transaction_commit: no transaction\n"));
@@ -934,7 +937,7 @@ int tdb_transaction_recover(struct tdb_context *tdb)
{
tdb_off_t recovery_head, recovery_eof;
unsigned char *data, *p;
- uint32_t zero = 0;
+ u32 zero = 0;
struct list_struct rec;
/* find the recovery area */
@@ -988,7 +991,7 @@ int tdb_transaction_recover(struct tdb_context *tdb)
/* recover the file data */
p = data;
while (p+8 < data + rec.data_len) {
- uint32_t ofs, len;
+ u32 ofs, len;
if (DOCONV()) {
tdb_convert(p, 8);
}
diff --git a/source/lib/tdb/common/traverse.c b/source/tdb/common/traverse.c
index 6426162e994..03c208fc290 100644
--- a/source/lib/tdb/common/traverse.c
+++ b/source/tdb/common/traverse.c
@@ -279,10 +279,10 @@ TDB_DATA tdb_firstkey(struct tdb_context *tdb)
/* find the next entry in the database, returning its key */
TDB_DATA tdb_nextkey(struct tdb_context *tdb, TDB_DATA oldkey)
{
- uint32_t oldhash;
+ u32 oldhash;
TDB_DATA key = tdb_null;
struct list_struct rec;
- unsigned char *k = NULL;
+ char *k = NULL;
/* Is locked key the old key? If so, traverse will be reliable. */
if (tdb->travlocks.off) {
diff --git a/source/lib/tdb/libtdb.m4 b/source/tdb/config.m4
index fefa5912c26..a37f36b29e0 100644
--- a/source/lib/tdb/libtdb.m4
+++ b/source/tdb/config.m4
@@ -1,13 +1,13 @@
-dnl find the tdb sources. This is meant to work both for
+dnl find the tdb sources. This is meant to work both for
dnl tdb standalone builds, and builds of packages using tdb
tdbdir=""
tdbpaths="$srcdir $srcdir/lib/tdb $srcdir/tdb $srcdir/../tdb"
for d in $tdbpaths; do
- if test -f "$d/common/tdb.c"; then
- tdbdir="$d"
- AC_SUBST(tdbdir)
- break;
- fi
+ if test -f "$d/common/tdb.c"; then
+ tdbdir="$d"
+ AC_SUBST(tdbdir)
+ break;
+ fi
done
if test x"$tdbdir" = "x"; then
AC_MSG_ERROR([cannot find tdb source in $tdbpaths])
@@ -15,7 +15,9 @@ fi
TDBOBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
TDBOBJ="$TDBOBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o"
AC_SUBST(TDBOBJ)
-AC_SUBST(LIBREPLACEOBJ)
+
+libreplacedir=../lib/replace
+AC_SUBST(libreplacedir)
AC_CHECK_FUNCS(mmap pread pwrite getpagesize utime)
AC_CHECK_HEADERS(getopt.h sys/select.h sys/time.h)
diff --git a/source/lib/tdb/config.mk b/source/tdb/config.mk
index ab90ed728d5..c5d1a339907 100644
--- a/source/lib/tdb/config.mk
+++ b/source/tdb/config.mk
@@ -7,7 +7,7 @@ DESCRIPTION = Trivial Database Library
OBJ_FILES = \
common/tdb.o common/dump.o common/io.o common/lock.o \
common/open.o common/traverse.o common/freelist.o \
- common/error.o common/transaction.o
+ common/error.o common/transaction.o common/tdbutil.o
CFLAGS = -Ilib/tdb/include
PUBLIC_HEADERS = include/tdb.h
#
@@ -18,6 +18,7 @@ PUBLIC_HEADERS = include/tdb.h
# Start BINARY tdbtool
[BINARY::tdbtool]
INSTALLDIR = BINDIR
+ENABLE = NO
OBJ_FILES= \
tools/tdbtool.o
PRIVATE_DEPENDENCIES = \
@@ -51,6 +52,7 @@ PRIVATE_DEPENDENCIES = \
# Start BINARY tdbbackup
[BINARY::tdbbackup]
INSTALLDIR = BINDIR
+ENABLE = NO
OBJ_FILES= \
tools/tdbbackup.o
PRIVATE_DEPENDENCIES = \
diff --git a/source/lib/tdb/configure.ac b/source/tdb/configure.in
index 8bfff589cc5..0a72af20d94 100644
--- a/source/lib/tdb/configure.ac
+++ b/source/tdb/configure.in
@@ -1,10 +1,13 @@
-AC_PREREQ(2.50)
AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
AC_DEFUN([SMB_ENABLE], [echo -n ""])
-AC_INIT(tdb, 1.1.0)
-AC_CONFIG_SRCDIR([common/tdb.c])
+AC_INIT(include/tdb.h)
AC_CONFIG_HEADER(include/config.h)
-AC_LIBREPLACE_ALL_CHECKS
-m4_include(libtdb.m4)
+AC_PROG_CC
+AC_SYS_LARGEFILE
+AC_CHECK_SIZEOF(off_t,cross)
+AC_CHECK_SIZEOF(size_t,cross)
+AC_CHECK_SIZEOF(ssize_t,cross)
+AC_FUNC_MMAP
+sinclude(config.m4)
AC_OUTPUT(Makefile tdb.pc)
diff --git a/source/lib/tdb/docs/README b/source/tdb/docs/README
index b31ce36ab14..b31ce36ab14 100644
--- a/source/lib/tdb/docs/README
+++ b/source/tdb/docs/README
diff --git a/source/lib/tdb/docs/tdb.magic b/source/tdb/docs/tdb.magic
index f5619e7327e..f5619e7327e 100644
--- a/source/lib/tdb/docs/tdb.magic
+++ b/source/tdb/docs/tdb.magic
diff --git a/source/lib/tdb/include/tdb.h b/source/tdb/include/tdb.h
index 3268a3bfa04..51bf709f442 100644
--- a/source/lib/tdb/include/tdb.h
+++ b/source/tdb/include/tdb.h
@@ -47,7 +47,6 @@ extern "C" {
#define TDB_BIGENDIAN 32 /* header is big-endian (internal use) */
#define TDB_NOSYNC 64 /* don't use synchronous transactions */
#define TDB_SEQNUM 128 /* maintain a sequence number */
-#define TDB_VOLATILE 256 /* Activate the per-hashchain freelist, default 5 */
#define TDB_ERRCODE(code, ret) ((tdb->ecode = (code)), ret)
@@ -61,7 +60,7 @@ enum tdb_debug_level {TDB_DEBUG_FATAL = 0, TDB_DEBUG_ERROR,
TDB_DEBUG_WARNING, TDB_DEBUG_TRACE};
typedef struct TDB_DATA {
- unsigned char *dptr;
+ char *dptr;
size_t dsize;
} TDB_DATA;
diff --git a/source/include/reg_db.h b/source/tdb/include/tdbback.h
index 9a35f91e5dc..69d3bb6f91a 100644
--- a/source/include/reg_db.h
+++ b/source/tdb/include/tdbback.h
@@ -1,8 +1,8 @@
/*
- Parameters for Samba's Internal Registry Database
-
- Copyright (C) Michael Adam 2007
-
+ Unix SMB/CIFS implementation.
+ low level tdb backup and restore utility
+ Copyright (C) Andrew Tridgell 2002
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
@@ -18,14 +18,6 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#ifndef _REG_DB_H
-#define _REG_DB_H
-
-#define REG_TDB_FLAGS TDB_SEQNUM
-
-#define REGVER_V1 1 /* first db version with write support */
-
-#define REG_VALUE_PREFIX "SAMBA_REGVAL"
-#define REG_SECDESC_PREFIX "SAMBA_SECDESC"
-
-#endif /* _REG_DB_H */
+char *add_suffix(const char *name, const char *suffix);
+int backup_tdb(const char *old_name, const char *new_name, int hash_size);
+int verify_tdb(const char *fname, const char *bak_name);
diff --git a/source/tdb/include/tdbconfig.h.in b/source/tdb/include/tdbconfig.h.in
new file mode 100644
index 00000000000..d6d2c09b3c8
--- /dev/null
+++ b/source/tdb/include/tdbconfig.h.in
@@ -0,0 +1,58 @@
+/* include/tdbconfig.h.in. Generated from configure.in by autoheader. */
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `pread' function. */
+#undef HAVE_PREAD
+
+/* Define to 1 if you have the `pwrite' function. */
+#undef HAVE_PWRITE
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
diff --git a/source/lib/tdb/swig/Tdb.py b/source/tdb/swig/Tdb.py
index aac7a90354d..aac7a90354d 100644
--- a/source/lib/tdb/swig/Tdb.py
+++ b/source/tdb/swig/Tdb.py
diff --git a/source/lib/tdb/swig/tdb.i b/source/tdb/swig/tdb.i
index 98bf6441ce8..98bf6441ce8 100644
--- a/source/lib/tdb/swig/tdb.i
+++ b/source/tdb/swig/tdb.i
diff --git a/source/lib/tdb/tdb.pc.in b/source/tdb/tdb.pc.in
index 8180d471850..0d54afe2424 100644
--- a/source/lib/tdb/tdb.pc.in
+++ b/source/tdb/tdb.pc.in
@@ -6,5 +6,5 @@ includedir=@includedir@
Name: tdb
Description: A trivial database
Version: 4.0
-Libs: -L${libdir} -ltdb
-Cflags: -I${includedir}
+#Libs: @LIBS@ -L${libdir} -ltdb
+Cflags: -I${includedir} @CFLAGS@
diff --git a/source/tdb/tools/tdbbackup.c b/source/tdb/tools/tdbbackup.c
new file mode 100644
index 00000000000..4ae5a4f9212
--- /dev/null
+++ b/source/tdb/tools/tdbbackup.c
@@ -0,0 +1,155 @@
+/*
+ Unix SMB/CIFS implementation.
+ low level tdb backup and restore utility
+ Copyright (C) Andrew Tridgell 2002
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+/*
+
+ This program is meant for backup/restore of tdb databases. Typical usage would be:
+ tdbbackup *.tdb
+ when Samba shuts down cleanly, which will make a backup of all the local databases
+ to *.bak files. Then on Samba startup you would use:
+ tdbbackup -v *.tdb
+ and this will check the databases for corruption and if corruption is detected then
+ the backup will be restored.
+
+ You may also like to do a backup on a regular basis while Samba is
+ running, perhaps using cron.
+
+ The reason this program is needed is to cope with power failures
+ while Samba is running. A power failure could lead to database
+ corruption and Samba will then not start correctly.
+
+ Note that many of the databases in Samba are transient and thus
+ don't need to be backed up, so you can optimise the above a little
+ by only running the backup on the critical databases.
+
+ */
+
+#ifdef STANDALONE
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+#include <time.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <ctype.h>
+#include <signal.h>
+
+#else
+
+#include "includes.h"
+
+#endif
+
+#include "tdb.h"
+#include "tdbback.h"
+
+extern int optind;
+extern char *optarg;
+
+/*
+ see if one file is newer than another
+*/
+static int file_newer(const char *fname1, const char *fname2)
+{
+ struct stat st1, st2;
+ if (stat(fname1, &st1) != 0) {
+ return 0;
+ }
+ if (stat(fname2, &st2) != 0) {
+ return 1;
+ }
+ return (st1.st_mtime > st2.st_mtime);
+}
+
+static void usage(void)
+{
+ printf("Usage: tdbbackup [options] <fname...>\n\n");
+ printf(" -h this help message\n");
+ printf(" -s suffix set the backup suffix\n");
+ printf(" -v verify mode (restore if corrupt)\n");
+ printf(" -n hashsize set the new hash size for the backup\n");
+}
+
+
+ int main(int argc, char *argv[])
+{
+ int i;
+ int ret = 0;
+ int c;
+ int verify = 0;
+ int hashsize = 0;
+ const char *suffix = ".bak";
+
+ while ((c = getopt(argc, argv, "vhs:n:")) != -1) {
+ switch (c) {
+ case 'h':
+ usage();
+ exit(0);
+ case 'v':
+ verify = 1;
+ break;
+ case 's':
+ suffix = optarg;
+ break;
+ case 'n':
+ hashsize = atoi(optarg);
+ break;
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (argc < 1) {
+ usage();
+ exit(1);
+ }
+
+ for (i=0; i<argc; i++) {
+ const char *fname = argv[i];
+ char *bak_name;
+
+ bak_name = add_suffix(fname, suffix);
+
+ if (verify) {
+ if (verify_tdb(fname, bak_name) != 0) {
+ ret = 1;
+ }
+ } else {
+ if (file_newer(fname, bak_name) &&
+ backup_tdb(fname, bak_name, hashsize) != 0) {
+ ret = 1;
+ }
+ }
+
+ free(bak_name);
+ }
+
+ return ret;
+}
diff --git a/source/lib/tdb/tools/tdbdump.c b/source/tdb/tools/tdbdump.c
index 4ceef2d60c1..b702fb07355 100644
--- a/source/lib/tdb/tools/tdbdump.c
+++ b/source/tdb/tools/tdbdump.c
@@ -18,10 +18,18 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include "replace.h"
-#include "system/locale.h"
-#include "system/time.h"
-#include "system/filesys.h"
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+#include <time.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <ctype.h>
+#include <signal.h>
#include "tdb.h"
static void print_data(TDB_DATA d)
@@ -65,7 +73,7 @@ static int dump_tdb(const char *fname, const char *keyname)
if (!keyname) {
tdb_traverse(tdb, traverse_fn, NULL);
} else {
- key.dptr = discard_const_p(uint8_t,keyname);
+ key.dptr = (char *)keyname;
key.dsize = strlen( keyname);
value = tdb_fetch(tdb, key);
if (!value.dptr) {
diff --git a/source/lib/tdb/tools/tdbtest.c b/source/tdb/tools/tdbtest.c
index 1564a42bc41..1564a42bc41 100644
--- a/source/lib/tdb/tools/tdbtest.c
+++ b/source/tdb/tools/tdbtest.c
diff --git a/source/lib/tdb/tools/tdbtool.c b/source/tdb/tools/tdbtool.c
index e90acd18f0a..2f549ef91b9 100644
--- a/source/lib/tdb/tools/tdbtool.c
+++ b/source/tdb/tools/tdbtool.c
@@ -21,27 +21,37 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include "replace.h"
-#include "system/locale.h"
-#include "system/time.h"
-#include "system/filesys.h"
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+#include <time.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <ctype.h>
+#include <signal.h>
#include "tdb.h"
+#include "pstring.h"
static int do_command(void);
-const char *cmdname;
-char *arg1, *arg2;
+char *cmdname, *arg1, *arg2;
size_t arg1len, arg2len;
+int do_connections;
int bIterate = 0;
char *line;
TDB_DATA iterate_kbuf;
char cmdline[1024];
-static int disable_mmap;
enum commands {
CMD_CREATE_TDB,
CMD_OPEN_TDB,
CMD_ERASE,
CMD_DUMP,
+ CMD_CDUMP,
CMD_INSERT,
CMD_MOVE,
CMD_STORE,
@@ -52,8 +62,6 @@ enum commands {
CMD_LIST_HASH_FREE,
CMD_LIST_FREE,
CMD_INFO,
- CMD_MMAP,
- CMD_SPEED,
CMD_FIRST,
CMD_NEXT,
CMD_SYSTEM,
@@ -71,6 +79,7 @@ COMMAND_TABLE cmd_table[] = {
{"open", CMD_OPEN_TDB},
{"erase", CMD_ERASE},
{"dump", CMD_DUMP},
+ {"cdump", CMD_CDUMP},
{"insert", CMD_INSERT},
{"move", CMD_MOVE},
{"store", CMD_STORE},
@@ -81,8 +90,6 @@ COMMAND_TABLE cmd_table[] = {
{"list", CMD_LIST_HASH_FREE},
{"free", CMD_LIST_FREE},
{"info", CMD_INFO},
- {"speed", CMD_SPEED},
- {"mmap", CMD_MMAP},
{"first", CMD_FIRST},
{"1", CMD_FIRST},
{"next", CMD_NEXT},
@@ -93,24 +100,33 @@ COMMAND_TABLE cmd_table[] = {
{NULL, CMD_HELP}
};
-struct timeval tp1,tp2;
-
-static void _start_timer(void)
-{
- gettimeofday(&tp1,NULL);
-}
-
-static double _end_timer(void)
-{
- gettimeofday(&tp2,NULL);
- return((tp2.tv_sec - tp1.tv_sec) +
- (tp2.tv_usec - tp1.tv_usec)*1.0e-6);
-}
-
/* a tdb tool for manipulating a tdb database */
+/* these are taken from smb.h - make sure they are in sync */
+
+typedef struct connections_key {
+ pid_t pid;
+ int cnum;
+ fstring name;
+} connections_key;
+
+typedef struct connections_data {
+ int magic;
+ pid_t pid;
+ int cnum;
+ uid_t uid;
+ gid_t gid;
+ char servicename[FSTRING_LEN];
+ char addr[24];
+ char machine[FSTRING_LEN];
+ time_t start;
+ unsigned bcast_msg_flags;
+} connections_data;
+
static TDB_CONTEXT *tdb;
+static int print_crec(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state);
+static int print_arec(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state);
static int print_rec(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state);
static int print_key(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state);
static int print_hexkey(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state);
@@ -169,6 +185,7 @@ static void help(void)
" open dbname : open an existing database\n"
" erase : erase the database\n"
" dump : dump the database as strings\n"
+" cdump : dump the database as connection records\n"
" keys : dump the database keys as strings\n"
" hexkeys : dump the database keys as hex values\n"
" info : print summary info about the database\n"
@@ -192,20 +209,20 @@ static void terror(const char *why)
printf("%s\n", why);
}
-static void create_tdb(const char *tdbname)
+static void create_tdb(char * tdbname)
{
if (tdb) tdb_close(tdb);
- tdb = tdb_open(tdbname, 0, TDB_CLEAR_IF_FIRST | (disable_mmap?TDB_NOMMAP:0),
+ tdb = tdb_open(tdbname, 0, TDB_CLEAR_IF_FIRST,
O_RDWR | O_CREAT | O_TRUNC, 0600);
if (!tdb) {
printf("Could not create %s: %s\n", tdbname, strerror(errno));
}
}
-static void open_tdb(const char *tdbname)
+static void open_tdb(char *tdbname)
{
if (tdb) tdb_close(tdb);
- tdb = tdb_open(tdbname, 0, disable_mmap?TDB_NOMMAP:0, O_RDWR, 0600);
+ tdb = tdb_open(tdbname, 0, 0, O_RDWR, 0600);
if (!tdb) {
printf("Could not open %s: %s\n", tdbname, strerror(errno));
}
@@ -220,9 +237,9 @@ static void insert_tdb(char *keyname, size_t keylen, char* data, size_t datalen)
return;
}
- key.dptr = (unsigned char *)keyname;
+ key.dptr = keyname;
key.dsize = keylen;
- dbuf.dptr = (unsigned char *)data;
+ dbuf.dptr = data;
dbuf.dsize = datalen;
if (tdb_store(tdb, key, dbuf, TDB_INSERT) == -1) {
@@ -244,9 +261,9 @@ static void store_tdb(char *keyname, size_t keylen, char* data, size_t datalen)
return;
}
- key.dptr = (unsigned char *)keyname;
+ key.dptr = keyname;
key.dsize = keylen;
- dbuf.dptr = (unsigned char *)data;
+ dbuf.dptr = data;
dbuf.dsize = datalen;
printf("Storing key:\n");
@@ -266,7 +283,7 @@ static void show_tdb(char *keyname, size_t keylen)
return;
}
- key.dptr = (unsigned char *)keyname;
+ key.dptr = keyname;
key.dsize = keylen;
dbuf = tdb_fetch(tdb, key);
@@ -291,7 +308,7 @@ static void delete_tdb(char *keyname, size_t keylen)
return;
}
- key.dptr = (unsigned char *)keyname;
+ key.dptr = keyname;
key.dsize = keylen;
if (tdb_delete(tdb, key) != 0) {
@@ -314,7 +331,7 @@ static void move_rec(char *keyname, size_t keylen, char* tdbname)
return;
}
- key.dptr = (unsigned char *)keyname;
+ key.dptr = keyname;
key.dsize = keylen;
dbuf = tdb_fetch(tdb, key);
@@ -342,19 +359,61 @@ static void move_rec(char *keyname, size_t keylen, char* tdbname)
return;
}
+static int print_conn_key(TDB_DATA key)
+{
+ printf( "\nkey %d bytes\n", (int)key.dsize);
+ printf( "pid =%5d ", ((connections_key*)key.dptr)->pid);
+ printf( "cnum =%10d ", ((connections_key*)key.dptr)->cnum);
+ printf( "name =[%s]\n", ((connections_key*)key.dptr)->name);
+ return 0;
+}
+
+static int print_conn_data(TDB_DATA dbuf)
+{
+ printf( "\ndata %d bytes\n", (int)dbuf.dsize);
+ printf( "pid =%5d ", ((connections_data*)dbuf.dptr)->pid);
+ printf( "cnum =%10d ", ((connections_data*)dbuf.dptr)->cnum);
+ printf( "name =[%s]\n", ((connections_data*)dbuf.dptr)->servicename);
+
+ printf( "uid =%5d ", ((connections_data*)dbuf.dptr)->uid);
+ printf( "addr =[%s]\n", ((connections_data*)dbuf.dptr)->addr);
+ printf( "gid =%5d ", ((connections_data*)dbuf.dptr)->gid);
+ printf( "machine=[%s]\n", ((connections_data*)dbuf.dptr)->machine);
+ printf( "start = %s\n", ctime(&((connections_data*)dbuf.dptr)->start));
+ printf( "magic = 0x%x ", ((connections_data*)dbuf.dptr)->magic);
+ printf( "flags = 0x%x\n", ((connections_data*)dbuf.dptr)->bcast_msg_flags);
+ return 0;
+}
+
static int print_rec(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
{
+ if (do_connections && (dbuf.dsize == sizeof(connections_data)))
+ print_crec(the_tdb, key, dbuf, state);
+ else
+ print_arec(the_tdb, key, dbuf, state);
+ return 0;
+}
+
+static int print_crec(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
+{
+ print_conn_key(key);
+ print_conn_data(dbuf);
+ return 0;
+}
+
+static int print_arec(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
+{
printf("\nkey %d bytes\n", (int)key.dsize);
- print_asc((const char *)key.dptr, key.dsize);
+ print_asc(key.dptr, key.dsize);
printf("\ndata %d bytes\n", (int)dbuf.dsize);
- print_data((const char *)dbuf.dptr, dbuf.dsize);
+ print_data(dbuf.dptr, dbuf.dsize);
return 0;
}
static int print_key(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
{
printf("key %d bytes: ", (int)key.dsize);
- print_asc((const char *)key.dptr, key.dsize);
+ print_asc(key.dptr, key.dsize);
printf("\n");
return 0;
}
@@ -362,7 +421,7 @@ static int print_key(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *st
static int print_hexkey(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
{
printf("key %d bytes\n", (int)key.dsize);
- print_data((const char *)key.dptr, key.dsize);
+ print_data(key.dptr, key.dsize);
printf("\n");
return 0;
}
@@ -385,31 +444,6 @@ static void info_tdb(void)
printf("%d records totalling %d bytes\n", count, total_bytes);
}
-static void speed_tdb(const char *tlimit)
-{
- unsigned timelimit = tlimit?atoi(tlimit):0;
- double t;
- int ops=0;
- if (timelimit == 0) timelimit = 10;
- printf("Testing traverse speed for %u seconds\n", timelimit);
- _start_timer();
- while ((t=_end_timer()) < timelimit) {
- tdb_traverse(tdb, traverse_fn, NULL);
- printf("%10.3f ops/sec\r", (++ops)/t);
- }
- printf("\n");
-}
-
-static void toggle_mmap(void)
-{
- disable_mmap = !disable_mmap;
- if (disable_mmap) {
- printf("mmap is disabled\n");
- } else {
- printf("mmap is enabled\n");
- }
-}
-
static char *tdb_getline(const char *prompt)
{
static char thisline[1024];
@@ -458,6 +492,8 @@ static int do_command(void)
enum commands mycmd = CMD_HELP;
int cmd_len;
+ do_connections = 0;
+
if (cmdname && strlen(cmdname) == 0) {
mycmd = CMD_NEXT;
} else {
@@ -503,6 +539,11 @@ static int do_command(void)
bIterate = 0;
tdb_traverse(tdb, print_rec, NULL);
return 0;
+ case CMD_CDUMP:
+ do_connections = 1;
+ bIterate = 0;
+ tdb_traverse(tdb, print_rec, NULL);
+ return 0;
case CMD_INSERT:
bIterate = 0;
insert_tdb(arg1, arg1len,arg2,arg2len);
@@ -538,12 +579,6 @@ static int do_command(void)
case CMD_INFO:
info_tdb();
return 0;
- case CMD_SPEED:
- speed_tdb(arg1);
- return 0;
- case CMD_MMAP:
- toggle_mmap();
- return 0;
case CMD_FIRST:
bIterate = 1;
first_record(tdb, &iterate_kbuf);
@@ -604,17 +639,17 @@ static char *convert_string(char *instring, size_t *sizep)
int main(int argc, char *argv[])
{
- cmdname = "";
+ cmdname = (char *) "";
arg1 = NULL;
arg1len = 0;
arg2 = NULL;
arg2len = 0;
if (argv[1]) {
- cmdname = "open";
+ cmdname = (char *) "open";
arg1 = argv[1];
do_command();
- cmdname = "";
+ cmdname = (char *) "";
arg1 = NULL;
}
diff --git a/source/lib/tdb/tools/tdbtorture.c b/source/tdb/tools/tdbtorture.c
index 14a2b48cdc7..14a2b48cdc7 100644
--- a/source/lib/tdb/tools/tdbtorture.c
+++ b/source/tdb/tools/tdbtorture.c
diff --git a/source/tests/crypttest.c b/source/tests/crypttest.c
index 8bed1c74d13..efee2e593d4 100644
--- a/source/tests/crypttest.c
+++ b/source/tests/crypttest.c
@@ -814,7 +814,7 @@ main()
if((strcmp(c_out1, expected_out) != 0) &&
(strcmp(c_out2, expected_out) == 0))
- return 1;
+ exit(1);
#ifdef HAVE_BIGCRYPT
/*
@@ -843,10 +843,10 @@ main()
if((strcmp(big_c_out1, big_expected_out) != 0) &&
(strcmp(big_c_out2, big_expected_out) == 0))
- return 1;
+ exit(1);
}
#endif
- return 0;
+ exit(0);
}
diff --git a/source/tests/fcntl_lock.c b/source/tests/fcntl_lock.c
index 728f94b6122..3dc12a38973 100644
--- a/source/tests/fcntl_lock.c
+++ b/source/tests/fcntl_lock.c
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
if (fd == -1) {
fprintf(stderr,"ERROR: failed to open %s (errno=%d)\n",
DATA, (int)errno);
- return 1;
+ exit(1);
}
lock.l_type = F_WRLCK;
@@ -74,9 +74,9 @@ int main(int argc, char *argv[])
if ((ret == -1) ||
(lock.l_type == F_UNLCK)) {
fprintf(stderr,"ERROR: lock test failed (ret=%d errno=%d)\n", ret, (int)errno);
- return 1;
+ exit(1);
} else {
- return 0;
+ exit(0);
}
}
@@ -86,7 +86,7 @@ int main(int argc, char *argv[])
if (fd == -1) {
fprintf(stderr,"ERROR: failed to open %s (errno=%d)\n",
DATA, (int)errno);
- return 1;
+ exit(1);
}
lock.l_type = F_WRLCK;
@@ -117,5 +117,5 @@ int main(int argc, char *argv[])
status);
}
- return status;
+ exit(status);
}
diff --git a/source/tests/fcntl_lock64.c b/source/tests/fcntl_lock64.c
index b218fa9282e..e5ecd88fd04 100644
--- a/source/tests/fcntl_lock64.c
+++ b/source/tests/fcntl_lock64.c
@@ -16,10 +16,6 @@
#include <sys/fcntl.h>
#endif
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
#include <errno.h>
static int sys_waitpid(pid_t pid,int *status,int options)
@@ -44,7 +40,7 @@ int main(int argc, char *argv[])
sleep(2);
fd = open64(DATA, O_RDONLY);
- if (fd == -1) return 1;
+ if (fd == -1) exit(1);
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
@@ -60,10 +56,10 @@ int main(int argc, char *argv[])
if ((ret == -1) ||
(lock.l_type == F_UNLCK)) {
/* printf("No lock conflict\n"); */
- return 1;
+ exit(1);
} else {
/* printf("lock conflict\n"); */
- return 0;
+ exit(0);
}
}
@@ -96,5 +92,5 @@ int main(int argc, char *argv[])
unlink(DATA);
- return status;
+ exit(status);
}
diff --git a/source/tests/ftruncate.c b/source/tests/ftruncate.c
index 700d5c8ce54..93282782eed 100644
--- a/source/tests/ftruncate.c
+++ b/source/tests/ftruncate.c
@@ -21,7 +21,7 @@ main()
unlink(DATA);
if (lseek(fd, 0, SEEK_END) == LEN) {
- return 0;
+ exit(0);
}
- return 1;
+ exit(1);
}
diff --git a/source/tests/getgroups.c b/source/tests/getgroups.c
index c73cd21650d..343fd5a184f 100644
--- a/source/tests/getgroups.c
+++ b/source/tests/getgroups.c
@@ -11,10 +11,6 @@
#include <unistd.h>
#endif
-#if defined(HAVE_STDLIB_H)
-#include <stdlib.h>
-#endif
-
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
@@ -30,7 +26,7 @@ main()
if (sizeof(gid_t) == sizeof(int)) {
fprintf(stderr,"gid_t and int are the same size\n");
- return 1;
+ exit(1);
}
if (ngroups <= 0)
@@ -48,7 +44,7 @@ main()
if (ngroups == 0) {
printf("WARNING: can't determine getgroups return type\n");
- return 1;
+ exit(1);
}
cgroups = (char *)igroups;
@@ -56,15 +52,15 @@ main()
if (ngroups == 1 &&
cgroups[2] == 0x42 && cgroups[3] == 0x42) {
fprintf(stderr,"getgroups returns gid_t\n");
- return 1;
+ exit(1);
}
for (i=0;i<ngroups;i++) {
if (igroups[i] == 0x42424242) {
fprintf(stderr,"getgroups returns gid_t\n");
- return 1;
+ exit(1);
}
}
- return 0;
+ exit(0);
}
diff --git a/source/tests/os2_delete.c b/source/tests/os2_delete.c
new file mode 100644
index 00000000000..b3aaf67f418
--- /dev/null
+++ b/source/tests/os2_delete.c
@@ -0,0 +1,214 @@
+/*
+ test readdir/unlink pattern that OS/2 uses
+ tridge@samba.org July 2005
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <errno.h>
+#include <string.h>
+#include <fcntl.h>
+
+#define NUM_FILES 700
+#define READDIR_SIZE 100
+#define DELETE_SIZE 4
+
+#define TESTDIR "test.dir"
+
+#define FAILED(d) (fprintf(stderr, "Failed for %s - %s\n", d, strerror(errno)), exit(1), 1)
+
+#ifndef MIN
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#endif
+
+static void cleanup(void)
+{
+ /* I'm a lazy bastard */
+ system("rm -rf " TESTDIR);
+ mkdir(TESTDIR, 0700) == 0 || FAILED("mkdir");
+}
+
+static void create_files()
+{
+ int i;
+ for (i=0;i<NUM_FILES;i++) {
+ char fname[40];
+ sprintf(fname, TESTDIR "/test%u.txt", i);
+ close(open(fname, O_CREAT|O_RDWR, 0600)) == 0 || FAILED("close");
+ }
+}
+
+static int os2_delete(DIR *d)
+{
+ off_t offsets[READDIR_SIZE];
+ int i, j;
+ struct dirent *de;
+ char names[READDIR_SIZE][30];
+
+ /* scan, remembering offsets */
+ for (i=0, de=readdir(d);
+ de && i < READDIR_SIZE;
+ de=readdir(d), i++) {
+ offsets[i] = telldir(d);
+ strcpy(names[i], de->d_name);
+ }
+
+ if (i == 0) {
+ return 0;
+ }
+
+ /* delete the first few */
+ for (j=0; j<MIN(i, DELETE_SIZE); j++) {
+ char fname[40];
+ sprintf(fname, TESTDIR "/%s", names[j]);
+ unlink(fname) == 0 || FAILED("unlink");
+ }
+
+ /* seek to just after the deletion */
+ seekdir(d, offsets[j-1]);
+
+ /* return number deleted */
+ return j;
+}
+
+int main(void)
+{
+ int total_deleted = 0;
+ DIR *d;
+ struct dirent *de;
+
+ cleanup();
+ create_files();
+
+ d = opendir(TESTDIR);
+
+ /* skip past . and .. */
+ de = readdir(d);
+ strcmp(de->d_name, ".") == 0 || FAILED("match .");
+ de = readdir(d);
+ strcmp(de->d_name, "..") == 0 || FAILED("match ..");
+
+ while (1) {
+ int n = os2_delete(d);
+ if (n == 0) break;
+ total_deleted += n;
+ }
+ closedir(d);
+
+ printf("Deleted %d files of %d\n", total_deleted, NUM_FILES);
+
+ rmdir(TESTDIR) == 0 || FAILED("rmdir");
+
+ return 0;
+}
+/*
+ test readdir/unlink pattern that OS/2 uses
+ tridge@samba.org July 2005
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <errno.h>
+#include <string.h>
+#include <fcntl.h>
+
+#define NUM_FILES 700
+#define READDIR_SIZE 100
+#define DELETE_SIZE 4
+
+#define TESTDIR "test.dir"
+
+#define FAILED(d) (fprintf(stderr, "Failed for %s - %s\n", d, strerror(errno)), exit(1), 1)
+
+#ifndef MIN
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#endif
+
+static void cleanup(void)
+{
+ /* I'm a lazy bastard */
+ system("rm -rf " TESTDIR);
+ mkdir(TESTDIR, 0700) == 0 || FAILED("mkdir");
+}
+
+static void create_files()
+{
+ int i;
+ for (i=0;i<NUM_FILES;i++) {
+ char fname[40];
+ sprintf(fname, TESTDIR "/test%u.txt", i);
+ close(open(fname, O_CREAT|O_RDWR, 0600)) == 0 || FAILED("close");
+ }
+}
+
+static int os2_delete(DIR *d)
+{
+ off_t offsets[READDIR_SIZE];
+ int i, j;
+ struct dirent *de;
+ char names[READDIR_SIZE][30];
+
+ /* scan, remembering offsets */
+ for (i=0, de=readdir(d);
+ de && i < READDIR_SIZE;
+ de=readdir(d), i++) {
+ offsets[i] = telldir(d);
+ strcpy(names[i], de->d_name);
+ }
+
+ if (i == 0) {
+ return 0;
+ }
+
+ /* delete the first few */
+ for (j=0; j<MIN(i, DELETE_SIZE); j++) {
+ char fname[40];
+ sprintf(fname, TESTDIR "/%s", names[j]);
+ unlink(fname) == 0 || FAILED("unlink");
+ }
+
+ /* seek to just after the deletion */
+ seekdir(d, offsets[j-1]);
+
+ /* return number deleted */
+ return j;
+}
+
+int main(void)
+{
+ int total_deleted = 0;
+ DIR *d;
+ struct dirent *de;
+
+ cleanup();
+ create_files();
+
+ d = opendir(TESTDIR);
+
+ /* skip past . and .. */
+ de = readdir(d);
+ strcmp(de->d_name, ".") == 0 || FAILED("match .");
+ de = readdir(d);
+ strcmp(de->d_name, "..") == 0 || FAILED("match ..");
+
+ while (1) {
+ int n = os2_delete(d);
+ if (n == 0) break;
+ total_deleted += n;
+ }
+ closedir(d);
+
+ printf("Deleted %d files of %d\n", total_deleted, NUM_FILES);
+
+ rmdir(TESTDIR) == 0 || FAILED("rmdir");
+
+ return 0;
+}
diff --git a/source/tests/shared_mmap.c b/source/tests/shared_mmap.c
index 6af9ba0b394..fcef75d0d61 100644
--- a/source/tests/shared_mmap.c
+++ b/source/tests/shared_mmap.c
@@ -22,7 +22,7 @@ main()
int fd = open(DATA,O_RDWR|O_CREAT|O_TRUNC,0666);
int count=7;
- if (fd == -1) return 1;
+ if (fd == -1) exit(1);
for (i=0;i<10000;i++) {
write(fd,&i,sizeof(i));
@@ -32,7 +32,7 @@ main()
if (fork() == 0) {
fd = open(DATA,O_RDWR);
- if (fd == -1) return 1;
+ if (fd == -1) exit(1);
buf = (int *)mmap(NULL, 10000*sizeof(int),
(PROT_READ | PROT_WRITE),
@@ -41,21 +41,21 @@ main()
while (count-- && buf[9124] != 55732) sleep(1);
- if (count <= 0) return 1;
+ if (count <= 0) exit(1);
buf[1763] = 7268;
- return 0;
+ exit(0);
}
fd = open(DATA,O_RDWR);
- if (fd == -1) return 1;
+ if (fd == -1) exit(1);
buf = (int *)mmap(NULL, 10000*sizeof(int),
(PROT_READ | PROT_WRITE),
MAP_FILE | MAP_SHARED,
fd, 0);
- if (buf == (int *)-1) return 1;
+ if (buf == (int *)-1) exit(1);
buf[9124] = 55732;
@@ -63,6 +63,6 @@ main()
unlink(DATA);
- if (count > 0) return 0;
- return 1;
+ if (count > 0) exit(0);
+ exit(1);
}
diff --git a/source/tests/summary.c b/source/tests/summary.c
index c3da22f1708..79a530b0136 100644
--- a/source/tests/summary.c
+++ b/source/tests/summary.c
@@ -1,9 +1,7 @@
-#include <stdlib.h>
#include <stdio.h>
main()
{
- exit (0);
#if !(defined(HAVE_FCNTL_LOCK) || defined(HAVE_STRUCT_FLOCK64))
printf("ERROR: No locking available. Running Samba would be unsafe\n");
exit(1);
diff --git a/source/tests/trivial.c b/source/tests/trivial.c
index ae368a13980..2723637a0ff 100644
--- a/source/tests/trivial.c
+++ b/source/tests/trivial.c
@@ -1,4 +1,3 @@
-#include <stdlib.h>
main()
{
exit(0);
diff --git a/source/tests/unixsock.c b/source/tests/unixsock.c
index ba384ae3626..f2765d68f67 100644
--- a/source/tests/unixsock.c
+++ b/source/tests/unixsock.c
@@ -1,5 +1,4 @@
-/*
- * -*- c-file-style: "linux" -*-
+/* -*- c-file-style: "linux" -*-
*
* Try creating a Unix-domain socket, opening it, and reading from it.
* The POSIX name for these is AF_LOCAL/PF_LOCAL.
@@ -9,17 +8,15 @@
* on which they are broken under some conditions, such as RedHat 7.0
* (unpatched). We can't build WinBind there at the moment.
*
- * Martin Pool <mbp@samba.org>, June 2000.
- */
+ * Coding standard says to always use exit() for this, not return, so
+ * we do.
+ *
+ * Martin Pool <mbp@samba.org>, June 2000. */
/* TODO: Look for AF_LOCAL (most standard), AF_UNIX, and AF_FILE. */
#include <stdio.h>
-#if defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-
#ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
@@ -51,7 +48,7 @@ static int bind_socket(char const *filename)
/* Create the socket. */
if ((sock_fd = socket(PF_LOCAL, SOCK_STREAM, 0)) < 0) {
perror ("socket(PF_LOCAL, SOCK_STREAM)");
- return 1;
+ exit(1);
}
/* Bind a name to the socket. */
@@ -70,7 +67,7 @@ static int bind_socket(char const *filename)
if (bind(sock_fd, (struct sockaddr *) &name, size) < 0) {
perror ("bind");
- return 1;
+ exit(1);
}
return sock_fd;
@@ -87,10 +84,10 @@ int main(void)
alarm(15); /* secs */
if ((sock_fd = bind_socket(filename)) < 0)
- return 1;
+ exit(1);
/* the socket will be deleted when autoconf cleans up these
files. */
- return 0;
+ exit(0);
}
diff --git a/source/torture/cmd_vfs.c b/source/torture/cmd_vfs.c
index 1005d14e797..455ca1c82c7 100644
--- a/source/torture/cmd_vfs.c
+++ b/source/torture/cmd_vfs.c
@@ -88,7 +88,7 @@ static NTSTATUS cmd_show_data(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int ar
printf("show_data: error=-1 (not enough data in buffer)\n");
return NT_STATUS_UNSUCCESSFUL;
}
- dump_data(0, (uint8 *)(vfs->data) + offset, len);
+ dump_data(0, (char *)(vfs->data) + offset, len);
return NT_STATUS_OK;
}
diff --git a/source/torture/locktest.c b/source/torture/locktest.c
index 8d3234e367f..ff14b803a73 100644
--- a/source/torture/locktest.c
+++ b/source/torture/locktest.c
@@ -116,13 +116,13 @@ static struct record preset[] = {
static struct record *recorded;
-static void print_brl(struct file_id id,
- struct server_id pid,
+static void print_brl(SMB_DEV_T dev,
+ SMB_INO_T ino,
+ struct process_id pid,
enum brl_type lock_type,
enum brl_flavour lock_flav,
br_off start,
- br_off size,
- void *private_data)
+ br_off size)
{
#if NASTY_POSIX_LOCK_HACK
{
@@ -138,8 +138,8 @@ static void print_brl(struct file_id id,
}
#endif
- printf("%s %s %s %.0f:%.0f(%.0f)\n",
- procid_str_static(&pid), file_id_static_string(&id),
+ printf("%s %05x:%05x %s %.0f:%.0f(%.0f)\n",
+ procid_str_static(&pid), (int)dev, (int)ino,
lock_type==READ_LOCK?"R":"W",
(double)start, (double)start+size-1,(double)size);
@@ -148,7 +148,7 @@ static void print_brl(struct file_id id,
static void show_locks(void)
{
- brl_forall(print_brl, NULL);
+ brl_forall(print_brl);
/* system("cat /proc/locks"); */
}
diff --git a/source/torture/locktest2.c b/source/torture/locktest2.c
index 0da7e9cf00c..0a897fb2065 100644
--- a/source/torture/locktest2.c
+++ b/source/torture/locktest2.c
@@ -136,14 +136,13 @@ static BOOL try_unlock(struct cli_state *c, int fstype,
return False;
}
-static void print_brl(struct file_id id, struct server_id pid,
+static void print_brl(SMB_DEV_T dev, SMB_INO_T ino, struct process_id pid,
enum brl_type lock_type,
enum brl_flavour lock_flav,
- br_off start, br_off size,
- void *private_data)
+ br_off start, br_off size)
{
- printf("%6d %s %s %.0f:%.0f(%.0f)\n",
- (int)procid_to_pid(&pid), file_id_static_string(&id),
+ printf("%6d %05x:%05x %s %.0f:%.0f(%.0f)\n",
+ (int)procid_to_pid(&pid), (int)dev, (int)ino,
lock_type==READ_LOCK?"R":"W",
(double)start, (double)start+size-1,(double)size);
@@ -260,7 +259,7 @@ static BOOL test_one(struct cli_state *cli[NSERVERS][NCONNECTIONS],
op==READ_LOCK?"READ_LOCK":"WRITE_LOCK",
ret[0], ret[1]);
}
- if (showall) brl_forall(print_brl, NULL);
+ if (showall) brl_forall(print_brl);
if (ret[0] != ret[1]) return False;
} else if (r2 < LOCK_PCT+UNLOCK_PCT) {
/* unset a lock */
@@ -275,7 +274,7 @@ static BOOL test_one(struct cli_state *cli[NSERVERS][NCONNECTIONS],
start, start+len-1, len,
ret[0], ret[1]);
}
- if (showall) brl_forall(print_brl, NULL);
+ if (showall) brl_forall(print_brl);
if (!hide_unlock_fails && ret[0] != ret[1]) return False;
} else {
/* reopen the file */
@@ -291,7 +290,7 @@ static BOOL test_one(struct cli_state *cli[NSERVERS][NCONNECTIONS],
if (showall) {
printf("reopen conn=%u fstype=%u f=%u\n",
conn, fstype, f);
- brl_forall(print_brl, NULL);
+ brl_forall(print_brl);
}
}
return True;
diff --git a/source/torture/mangle_test.c b/source/torture/mangle_test.c
index 1330477cc57..1c9fba355a6 100644
--- a/source/torture/mangle_test.c
+++ b/source/torture/mangle_test.c
@@ -87,7 +87,7 @@ static BOOL test_one(struct cli_state *cli, const char *name)
data = tdb_fetch_bystring(tdb, shortname);
if (data.dptr) {
/* maybe its a duplicate long name? */
- if (!strequal(name, (const char *)data.dptr)) {
+ if (!strequal(name, data.dptr)) {
/* we have a collision */
collisions++;
printf("Collision between %s and %s -> %s "
@@ -98,7 +98,7 @@ static BOOL test_one(struct cli_state *cli, const char *name)
} else {
TDB_DATA namedata;
/* store it for later */
- namedata.dptr = CONST_DISCARD(uint8 *, name);
+ namedata.dptr = CONST_DISCARD(char *, name);
namedata.dsize = strlen(name)+1;
tdb_store_bystring(tdb, shortname, namedata, TDB_REPLACE);
}
diff --git a/source/torture/msgtest.c b/source/torture/msgtest.c
index d8c280e69bf..5a066bc599e 100644
--- a/source/torture/msgtest.c
+++ b/source/torture/msgtest.c
@@ -29,19 +29,14 @@ static int pong_count;
/****************************************************************************
a useful function for testing the message system
****************************************************************************/
-static void pong_message(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id pid,
- DATA_BLOB *data)
+static void pong_message(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
{
pong_count++;
}
int main(int argc, char *argv[])
{
- struct event_context *evt_ctx;
- struct messaging_context *msg_ctx;
pid_t pid;
int i, n;
char buf[12];
@@ -52,12 +47,8 @@ static void pong_message(struct messaging_context *msg_ctx,
lp_load(dyn_CONFIGFILE,False,False,False,True);
- if (!(evt_ctx = event_context_init(NULL)) ||
- !(msg_ctx = messaging_init(NULL, server_id_self(), evt_ctx))) {
- fprintf(stderr, "could not init messaging context\n");
- exit(1);
- }
-
+ message_init();
+
if (argc != 3) {
fprintf(stderr, "%s: Usage - %s pid count\n", argv[0],
argv[0]);
@@ -67,15 +58,14 @@ static void pong_message(struct messaging_context *msg_ctx,
pid = atoi(argv[1]);
n = atoi(argv[2]);
- messaging_register(msg_ctx, NULL, MSG_PONG, pong_message);
+ message_register(MSG_PONG, pong_message, NULL);
for (i=0;i<n;i++) {
- messaging_send(msg_ctx, pid_to_procid(pid), MSG_PING,
- &data_blob_null);
+ message_send_pid(pid_to_procid(pid), MSG_PING, NULL, 0, True);
}
while (pong_count < i) {
- message_dispatch(msg_ctx);
+ message_dispatch();
smb_msleep(1);
}
@@ -85,14 +75,14 @@ static void pong_message(struct messaging_context *msg_ctx,
safe_strcpy(buf, "1234567890", sizeof(buf)-1);
for (i=0;i<n;i++) {
- messaging_send(msg_ctx, pid_to_procid(getpid()), MSG_PING,
- &data_blob_null);
- messaging_send_buf(msg_ctx, pid_to_procid(getpid()), MSG_PING,
- (uint8 *)buf, 11);
+ message_send_pid(pid_to_procid(getpid()), MSG_PING,
+ NULL, 0, False);
+ message_send_pid(pid_to_procid(getpid()), MSG_PING,
+ buf, 11, False);
}
for (i=0;i<n;i++) {
- message_dispatch(msg_ctx);
+ message_dispatch();
smb_msleep(1);
}
@@ -111,25 +101,24 @@ static void pong_message(struct messaging_context *msg_ctx,
printf("Sending pings for %d seconds\n", (int)timelimit);
while (timeval_elapsed(&tv) < timelimit) {
- if(NT_STATUS_IS_OK(messaging_send_buf(
- msg_ctx, pid_to_procid(pid),
- MSG_PING,
- (uint8 *)buf, 11)))
+ if(NT_STATUS_IS_OK(message_send_pid(pid_to_procid(pid),
+ MSG_PING,
+ buf, 11, False)))
ping_count++;
- if(NT_STATUS_IS_OK(messaging_send(
- msg_ctx, pid_to_procid(pid),
- MSG_PING, &data_blob_null)))
+ if(NT_STATUS_IS_OK(message_send_pid(pid_to_procid(pid),
+ MSG_PING,
+ NULL, 0, False)))
ping_count++;
while (ping_count > pong_count + 20) {
- message_dispatch(msg_ctx);
+ message_dispatch();
}
}
printf("waiting for %d remaining replies (done %d)\n",
(int)(ping_count - pong_count), pong_count);
while (timeval_elapsed(&tv) < 30 && pong_count < ping_count) {
- message_dispatch(msg_ctx);
+ message_dispatch();
}
if (ping_count != pong_count) {
diff --git a/source/torture/torture.c b/source/torture/torture.c
index 92599e27652..8ca2eb58981 100644
--- a/source/torture/torture.c
+++ b/source/torture/torture.c
@@ -2619,7 +2619,7 @@ static BOOL new_trans(struct cli_state *pcli, int fnum, int level)
correct = False;
} else {
printf("qfileinfo: level %d, len = %u\n", level, len);
- dump_data(0, (uint8 *)buf, len);
+ dump_data(0, buf, len);
printf("\n");
}
SAFE_FREE(buf);
@@ -4541,7 +4541,7 @@ static BOOL run_eatest(int dummy)
for (i = 0; i < num_eas; i++) {
printf("%d: ea_name = %s. Val = ", i, ea_list[i].name);
- dump_data(0, ea_list[i].value.data,
+ dump_data(0, (char *)ea_list[i].value.data,
ea_list[i].value.length);
}
@@ -4570,7 +4570,7 @@ static BOOL run_eatest(int dummy)
printf("num_eas = %d\n", (int)num_eas);
for (i = 0; i < num_eas; i++) {
printf("%d: ea_name = %s. Val = ", i, ea_list[i].name);
- dump_data(0, ea_list[i].value.data,
+ dump_data(0, (char *)ea_list[i].value.data,
ea_list[i].value.length);
}
diff --git a/source/utils/net.c b/source/utils/net.c
index 628bd5ec1ed..a030531947a 100644
--- a/source/utils/net.c
+++ b/source/utils/net.c
@@ -85,7 +85,6 @@ int opt_attrs = 0;
int opt_timestamps = 0;
const char *opt_exclude = NULL;
const char *opt_destination = NULL;
-BOOL opt_testmode = False;
BOOL opt_have_ip = False;
struct in_addr opt_dest_ip;
@@ -603,7 +602,7 @@ static int net_getlocalsid(int argc, const char **argv)
name = global_myname();
}
- if(!initialize_password_db(False, NULL)) {
+ if(!initialize_password_db(False)) {
DEBUG(0, ("WARNING: Could not open passdb - local sid may not reflect passdb\n"
"backend knowlege (such as the sid stored in LDAP)\n"));
}
@@ -673,7 +672,7 @@ static int net_getdomainsid(int argc, const char **argv)
DOM_SID domain_sid;
fstring sid_str;
- if(!initialize_password_db(False, NULL)) {
+ if(!initialize_password_db(False)) {
DEBUG(0, ("WARNING: Could not open passdb - domain sid may not reflect passdb\n"
"backend knowlege (such as the sid stored in LDAP)\n"));
}
@@ -872,7 +871,6 @@ static struct functable net_func[] = {
{"STATUS", net_status},
{"USERSHARE", net_usershare},
{"USERSIDLIST", net_usersidlist},
- {"CONF", net_conf},
#ifdef WITH_FAKE_KASERVER
{"AFS", net_afs},
#endif
@@ -914,7 +912,6 @@ static struct functable net_func[] = {
{"machine-pass",'P', POPT_ARG_NONE, &opt_machine_pass},
{"myworkgroup", 'W', POPT_ARG_STRING, &opt_workgroup},
{"verbose", 'v', POPT_ARG_NONE, &opt_verbose},
- {"test", 'T', POPT_ARG_NONE, &opt_testmode},
/* Options for 'net groupmap set' */
{"local", 'L', POPT_ARG_NONE, &opt_localgroup},
{"domain", 'D', POPT_ARG_NONE, &opt_domaingroup},
@@ -1002,6 +999,10 @@ static struct functable net_func[] = {
opt_user_name = getenv("LOGNAME");
}
+ if (!opt_user_name) {
+ opt_user_name = "";
+ }
+
if (!opt_workgroup) {
opt_workgroup = smb_xstrdup(lp_workgroup());
}
diff --git a/source/utils/net.h b/source/utils/net.h
index 3739abdad7e..d037871f82e 100644
--- a/source/utils/net.h
+++ b/source/utils/net.h
@@ -67,8 +67,6 @@ enum netdom_domain_t { ND_TYPE_NT4, ND_TYPE_AD };
/* INCLUDE FILES */
#include "utils/net_proto.h"
-#include "libmsrpc.h"
-
/* MACROS & DEFINES */
@@ -114,7 +112,6 @@ extern int opt_attrs;
extern int opt_timestamps;
extern const char *opt_exclude;
extern const char *opt_destination;
-extern BOOL opt_testmode;
extern BOOL opt_have_ip;
extern struct in_addr opt_dest_ip;
diff --git a/source/utils/net_ads.c b/source/utils/net_ads.c
index 29d7e386d87..75b631c351f 100644
--- a/source/utils/net_ads.c
+++ b/source/utils/net_ads.c
@@ -1190,50 +1190,28 @@ done:
static ADS_STATUS net_precreate_machine_acct( ADS_STRUCT *ads, const char *ou )
{
ADS_STATUS rc = ADS_ERROR(LDAP_SERVER_DOWN);
- char *ou_str = NULL;
- char *dn = NULL;
+ char *dn, *ou_str;
LDAPMessage *res = NULL;
- BOOL moved;
ou_str = ads_ou_string(ads, ou);
- if (asprintf(&dn, "%s,%s", ou_str, ads->config.bind_path) == -1) {
- rc = ADS_ERROR(LDAP_NO_MEMORY);
- goto done;
+ if ((asprintf(&dn, "%s,%s", ou_str, ads->config.bind_path)) == -1) {
+ SAFE_FREE(ou_str);
+ return ADS_ERROR(LDAP_NO_MEMORY);
}
rc = ads_search_dn(ads, &res, dn, NULL);
- if (!ADS_ERR_OK(rc)) {
- d_fprintf(stderr, "The specified OU does not exist.\n");
- goto done;
- }
+ ads_msgfree(ads, res);
+ if (ADS_ERR_OK(rc)) {
/* Attempt to create the machine account and bail if this fails.
Assume that the admin wants exactly what they requested */
rc = ads_create_machine_acct( ads, global_myname(), dn );
- if (ADS_ERR_OK(rc)) {
- DEBUG(1, ("machine account created\n"));
- goto done;
+ if ( rc.error_type == ENUM_ADS_ERROR_LDAP && rc.err.rc == LDAP_ALREADY_EXISTS ) {
+ rc = ADS_SUCCESS;
}
- if ( !(rc.error_type == ENUM_ADS_ERROR_LDAP && rc.err.rc == LDAP_ALREADY_EXISTS) ) {
- DEBUG(1, ("machine account creation failed\n"));
- goto done;
- }
-
- rc = ads_move_machine_acct(ads, global_myname(), dn, &moved);
- if (!ADS_ERR_OK(rc)) {
- DEBUG(1, ("failure to locate/move pre-existing machine account\n"));
- goto done;
}
- if (moved) {
- d_printf("The machine account was moved into the specified OU.\n");
- } else {
- d_printf("The machine account already exists in the specified OU.\n");
- }
-
-done:
- ads_msgfree(ads, res);
SAFE_FREE( ou_str );
SAFE_FREE( dn );
@@ -1369,10 +1347,10 @@ static NTSTATUS net_update_dns_internal(TALLOC_CTX *ctx, ADS_STRUCT *ads,
status = ads_dns_lookup_ns( ctx, root_domain, &nameservers, &ns_count );
if ( !NT_STATUS_IS_OK(status) || (ns_count == 0)) {
- DEBUG(3,("net_ads_join: Failed to find name server for the %s "
+ DEBUG(3,("net_ads_join: Failed to find name server for the %s "
"realm\n", ads->config.realm));
- goto done;
- }
+ goto done;
+ }
dnsdomain = root_domain;
@@ -1450,12 +1428,7 @@ static int net_ads_join_usage(int argc, const char **argv)
d_printf(" The OU string read from top to bottom without RDNs and delimited by a '/'.\n");
d_printf(" E.g. \"createcomputer=Computers/Servers/Unix\"\n");
d_printf(" NB: A backslash '\\' is used as escape at multiple levels and may\n");
- d_printf(" need to be doubled or even quadrupled. It is not used as a separator.\n");
- d_printf(" osName=string Set the operatingSystem attribute during the join.\n");
- d_printf(" osVer=string Set the operatingSystemVersion attribute during the join.\n");
- d_printf(" NB: osName and osVer must be specified together for either to take effect.\n");
- d_printf(" Also, the operatingSystemService attribute is also set when along with\n");
- d_printf(" the two other attributes.\n");
+ d_printf(" need to be doubled or even quadrupled. It is not used as a separator");
return -1;
}
@@ -1555,7 +1528,7 @@ int net_ads_join(int argc, const char **argv)
status = net_precreate_machine_acct( ads, create_in_ou );
if ( !ADS_ERR_OK(status) ) {
d_fprintf( stderr, "Failed to pre-create the machine object "
- "in OU %s.\n", create_in_ou);
+ "in OU %s.\n", argv[0]);
DEBUG(1, ("error calling net_precreate_machine_acct: %s\n",
ads_errstr(status)));
nt_status = ads_ntstatus(status);
@@ -1747,7 +1720,7 @@ static int net_ads_dns_register(int argc, const char **argv)
#endif
if (argc > 0) {
- d_fprintf(stderr, "net ads dns register <name> <ip>\n");
+ d_fprintf(stderr, "net ads dns register\n");
return -1;
}
@@ -1921,6 +1894,12 @@ static int net_ads_printer_info(int argc, const char **argv)
return 0;
}
+void do_drv_upgrade_printer(int msg_type, struct process_id src,
+ void *buf, size_t len, void *private_data)
+{
+ return;
+}
+
static int net_ads_printer_publish(int argc, const char **argv)
{
ADS_STRUCT *ads;
@@ -2418,18 +2397,16 @@ static int net_ads_keytab_usage(int argc, const char **argv)
d_printf(
"net ads keytab <COMMAND>\n"\
"<COMMAND> can be either:\n"\
-" ADD Adds new service principal\n"\
" CREATE Creates a fresh keytab\n"\
+" ADD Adds new service principal\n"\
" FLUSH Flushes out all keytab entries\n"\
" HELP Prints this help message\n"\
-" LIST List the keytab\n"\
-"The ADD and LIST command will take arguments, the other commands\n"\
+"The ADD command will take arguments, the other commands\n"\
"will not take any arguments. The arguments given to ADD\n"\
"should be a list of principals to add. For example, \n"\
" net ads keytab add srv1 srv2\n"\
"will add principals for the services srv1 and srv2 to the\n"\
"system's keytab.\n"\
-"The LIST command takes a keytabname.\n"\
"\n"
);
return -1;
@@ -2478,26 +2455,13 @@ static int net_ads_keytab_create(int argc, const char **argv)
return ret;
}
-static int net_ads_keytab_list(int argc, const char **argv)
-{
- const char *keytab = NULL;
-
- if (argc >= 1) {
- keytab = argv[0];
- }
-
- return ads_keytab_list(keytab);
-}
-
-
int net_ads_keytab(int argc, const char **argv)
{
struct functable func[] = {
- {"ADD", net_ads_keytab_add},
{"CREATE", net_ads_keytab_create},
+ {"ADD", net_ads_keytab_add},
{"FLUSH", net_ads_keytab_flush},
{"HELP", net_ads_keytab_usage},
- {"LIST", net_ads_keytab_list},
{NULL, NULL}
};
diff --git a/source/utils/net_ads_gpo.c b/source/utils/net_ads_gpo.c
index be5406af17d..83cc2fe8fcf 100644
--- a/source/utils/net_ads_gpo.c
+++ b/source/utils/net_ads_gpo.c
@@ -46,8 +46,11 @@ static int net_ads_gpo_refresh(int argc, const char **argv)
TALLOC_CTX *mem_ctx;
ADS_STRUCT *ads;
ADS_STATUS status;
- const char *dn = NULL;
- struct GROUP_POLICY_OBJECT *gpo_list = NULL;
+ const char *attrs[] = { "userAccountControl", NULL };
+ LDAPMessage *res = NULL;
+ const char *filter;
+ char *dn = NULL;
+ struct GROUP_POLICY_OBJECT *gpo_list;
uint32 uac = 0;
uint32 flags = 0;
struct GROUP_POLICY_OBJECT *gpo;
@@ -63,14 +66,35 @@ static int net_ads_gpo_refresh(int argc, const char **argv)
return -1;
}
+ filter = talloc_asprintf(mem_ctx, "(&(objectclass=user)(sAMAccountName=%s))", argv[0]);
+ if (filter == NULL) {
+ goto out;
+ }
+
status = ads_startup(False, &ads);
if (!ADS_ERR_OK(status)) {
goto out;
}
- status = ads_find_samaccount(ads, mem_ctx, argv[0], &uac, &dn);
+ status = ads_do_search_all(ads, ads->config.bind_path,
+ LDAP_SCOPE_SUBTREE,
+ filter, attrs, &res);
+
if (!ADS_ERR_OK(status)) {
- printf("failed to find samaccount for %s\n", argv[0]);
+ goto out;
+ }
+
+ if (ads_count_replies(ads, res) != 1) {
+ printf("no result\n");
+ goto out;
+ }
+
+ dn = ads_get_dn(ads, res);
+ if (dn == NULL) {
+ goto out;
+ }
+
+ if (!ads_pull_uint32(ads, res, "userAccountControl", &uac)) {
goto out;
}
@@ -103,8 +127,8 @@ static int net_ads_gpo_refresh(int argc, const char **argv)
GPO_VERSION_USER(gpo->version),
GPO_VERSION_MACHINE(gpo->version));
- result = gpo_explode_filesyspath(mem_ctx, gpo->file_sys_path,
- &server, &share, &nt_path, &unix_path);
+ result = ads_gpo_explode_filesyspath(ads, mem_ctx, gpo->file_sys_path,
+ &server, &share, &nt_path, &unix_path);
if (!NT_STATUS_IS_OK(result)) {
printf("got: %s\n", nt_errstr(result));
}
@@ -115,6 +139,9 @@ static int net_ads_gpo_refresh(int argc, const char **argv)
}
out:
+ ads_memfree(ads, dn);
+ ads_msgfree(ads, res);
+
ads_destroy(&ads);
talloc_destroy(mem_ctx);
return 0;
@@ -198,7 +225,10 @@ static int net_ads_gpo_apply(int argc, const char **argv)
TALLOC_CTX *mem_ctx;
ADS_STRUCT *ads;
ADS_STATUS status;
- const char *dn = NULL;
+ const char *attrs[] = {"distinguishedName", "userAccountControl", NULL};
+ LDAPMessage *res = NULL;
+ const char *filter;
+ char *dn = NULL;
struct GROUP_POLICY_OBJECT *gpo_list;
uint32 uac = 0;
uint32 flags = 0;
@@ -213,16 +243,38 @@ static int net_ads_gpo_apply(int argc, const char **argv)
goto out;
}
+ filter = talloc_asprintf(mem_ctx, "(&(objectclass=user)(sAMAccountName=%s))", argv[0]);
+ if (filter == NULL) {
+ goto out;
+ }
+
status = ads_startup(False, &ads);
if (!ADS_ERR_OK(status)) {
goto out;
}
- status = ads_find_samaccount(ads, mem_ctx, argv[0], &uac, &dn);
+ status = ads_do_search_all(ads, ads->config.bind_path,
+ LDAP_SCOPE_SUBTREE,
+ filter, attrs, &res);
+
if (!ADS_ERR_OK(status)) {
goto out;
}
+ if (ads_count_replies(ads, res) != 1) {
+ printf("no result\n");
+ goto out;
+ }
+
+ dn = ads_get_dn(ads, res);
+ if (dn == NULL) {
+ goto out;
+ }
+
+ if (!ads_pull_uint32(ads, res, "userAccountControl", &uac)) {
+ goto out;
+ }
+
if (uac & UF_WORKSTATION_TRUST_ACCOUNT) {
flags |= GPO_LIST_FLAG_MACHINE;
}
@@ -237,12 +289,15 @@ static int net_ads_gpo_apply(int argc, const char **argv)
}
/* FIXME: allow to process just a single extension */
- status = gpo_process_gpo_list(ads, mem_ctx, gpo_list, NULL, flags);
+ status = gpo_process_gpo_list(ads, mem_ctx, &gpo_list, NULL, flags);
if (!ADS_ERR_OK(status)) {
goto out;
}
out:
+ ads_memfree(ads, dn);
+ ads_msgfree(ads, res);
+
ads_destroy(&ads);
talloc_destroy(mem_ctx);
return 0;
diff --git a/source/utils/net_conf.c b/source/utils/net_conf.c
deleted file mode 100644
index 61bcb60aaf1..00000000000
--- a/source/utils/net_conf.c
+++ /dev/null
@@ -1,1225 +0,0 @@
-/*
- * Samba Unix/Linux SMB client library
- * Distributed SMB/CIFS Server Management Utility
- * Local configuration interface
- * Copyright (C) Michael Adam 2007
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * This is an interface to the configuration stored inside the
- * samba registry. In the future there might be support for other
- * configuration backends as well.
- */
-
-#include "includes.h"
-#include "utils/net.h"
-
-/*
- * usage functions
- */
-
-static int net_conf_list_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf list\n");
- return -1;
-}
-
-static int net_conf_import_usage(int argc, const char**argv)
-{
- d_printf("USAGE: net conf import [--test|-T] <filename> [<servicename>]\n"
- "\t[--test|-T] testmode - do not act, just print "
- "what would be done\n"
- "\t<servicename> only import service <servicename>, "
- "ignore the rest\n");
- return -1;
-}
-
-static int net_conf_listshares_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf listshares\n");
- return -1;
-}
-
-static int net_conf_drop_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf drop\n");
- return -1;
-}
-
-static int net_conf_showshare_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf showshare <sharename>\n");
- return -1;
-}
-
-static int net_conf_addshare_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf addshare <sharename> <path> "
- "[writeable={y|N} [guest_ok={y|N} [<comment>]]\n"
- "\t<sharename> the new share name.\n"
- "\t<path> the path on the filesystem to export.\n"
- "\twriteable={y|N} set \"writeable to \"yes\" or "
- "\"no\" (default) on this share.\n"
- "\tguest_ok={y|N} set \"guest ok\" to \"yes\" or "
- "\"no\" (default) on this share.\n"
- "\t<comment> optional comment for the new share.\n");
- return -1;
-}
-
-static int net_conf_delshare_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf delshare <sharename>\n");
- return -1;
-}
-
-static int net_conf_setparm_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf setparm <section> <param> <value>\n");
- return -1;
-}
-
-static int net_conf_getparm_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf getparm <section> <param>\n");
- return -1;
-}
-
-static int net_conf_delparm_usage(int argc, const char **argv)
-{
- d_printf("USAGE: net conf delparm <section> <param>\n");
- return -1;
-}
-
-
-/*
- * Helper functions
- */
-
-static char *format_value(TALLOC_CTX *mem_ctx, struct registry_value *value)
-{
- char *result = NULL;
-
- /* what if mem_ctx = NULL? */
-
- switch (value->type) {
- case REG_DWORD:
- result = talloc_asprintf(mem_ctx, "%d", value->v.dword);
- break;
- case REG_SZ:
- case REG_EXPAND_SZ:
- result = talloc_asprintf(mem_ctx, "%s", value->v.sz.str);
- break;
- case REG_MULTI_SZ: {
- uint32 j;
- for (j = 0; j < value->v.multi_sz.num_strings; j++) {
- result = talloc_asprintf(mem_ctx, "\"%s\" ",
- value->v.multi_sz.strings[j]);
- }
- break;
- }
- case REG_BINARY:
- result = talloc_asprintf(mem_ctx, "binary (%d bytes)",
- (int)value->v.binary.length);
- break;
- default:
- result = talloc_asprintf(mem_ctx, "<unprintable>");
- break;
- }
- return result;
-}
-
-/*
- * add a value to a key.
- */
-static WERROR reg_setvalue_internal(struct registry_key *key,
- const char *valname,
- const char *valstr)
-{
- struct registry_value val;
- WERROR werr = WERR_OK;
- char *subkeyname;
-
- ZERO_STRUCT(val);
-
- val.type = REG_SZ;
- val.v.sz.str = CONST_DISCARD(char *, valstr);
- val.v.sz.len = strlen(valstr) + 1;
-
- if (!lp_parameter_is_valid(valname)) {
- d_fprintf(stderr, "Invalid parameter '%s' given.\n", valname);
- werr = WERR_INVALID_PARAM;
- goto done;
- }
-
- if (registry_smbconf_valname_forbidden(valname)) {
- d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
- valname);
- werr = WERR_INVALID_PARAM;
- goto done;
- }
-
- subkeyname = strrchr_m(key->key->name, '\\');
- if ((subkeyname == NULL) || (*(subkeyname +1) == '\0')) {
- d_fprintf(stderr, "Invalid registry key '%s' given as "
- "smbconf section.\n", key->key->name);
- werr = WERR_INVALID_PARAM;
- goto done;
- }
- subkeyname++;
- if (!strequal(subkeyname, GLOBAL_NAME) &&
- lp_parameter_is_global(valname))
- {
- d_fprintf(stderr, "Global paramter '%s' not allowed in "
- "service definition ('%s').\n", valname,
- subkeyname);
- werr = WERR_INVALID_PARAM;
- goto done;
- }
-
- werr = reg_setvalue(key, valname, &val);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr,
- "Error adding value '%s' to "
- "key '%s': %s\n",
- valname, key->key->name, dos_errstr(werr));
- }
-
-done:
- return werr;
-}
-
-/*
- * Open a subkey of KEY_SMBCONF (i.e a service)
- * - variant without error output (q = quiet)-
- */
-static WERROR smbconf_open_path_q(TALLOC_CTX *ctx, const char *subkeyname,
- uint32 desired_access,
- struct registry_key **key)
-{
- WERROR werr = WERR_OK;
- char *path = NULL;
- NT_USER_TOKEN *token;
-
- if (!(token = registry_create_admin_token(ctx))) {
- DEBUG(1, ("Error creating admin token\n"));
- goto done;
- }
-
- if (subkeyname == NULL) {
- path = talloc_strdup(ctx, KEY_SMBCONF);
- }
- else {
- path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, subkeyname);
- }
-
- werr = reg_open_path(ctx, path, desired_access,
- token, key);
-
-done:
- TALLOC_FREE(path);
- return werr;
-}
-
-/*
- * Open a subkey of KEY_SMBCONF (i.e a service)
- * - variant with error output -
- */
-static WERROR smbconf_open_path(TALLOC_CTX *ctx, const char *subkeyname,
- uint32 desired_access,
- struct registry_key **key)
-{
- WERROR werr = WERR_OK;
-
- werr = smbconf_open_path_q(ctx, subkeyname, desired_access, key);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error opening registry path '%s\\%s': %s\n",
- KEY_SMBCONF,
- (subkeyname == NULL) ? "" : subkeyname,
- dos_errstr(werr));
- }
-
- return werr;
-}
-
-/*
- * open the base key KEY_SMBCONF
- */
-static WERROR smbconf_open_basepath(TALLOC_CTX *ctx, uint32 desired_access,
- struct registry_key **key)
-{
- return smbconf_open_path(ctx, NULL, desired_access, key);
-}
-
-/*
- * delete a subkey of KEY_SMBCONF
- */
-static WERROR reg_delkey_internal(TALLOC_CTX *ctx, const char *keyname)
-{
- WERROR werr = WERR_OK;
- struct registry_key *key = NULL;
-
- werr = smbconf_open_basepath(ctx, REG_KEY_WRITE, &key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- werr = reg_deletekey_recursive(key, key, keyname);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error deleting registry key %s\\%s: %s\n",
- KEY_SMBCONF, keyname, dos_errstr(werr));
- }
-
-done:
- TALLOC_FREE(key);
- return werr;
-}
-
-/*
- * create a subkey of KEY_SMBCONF
- */
-static WERROR reg_createkey_internal(TALLOC_CTX *ctx,
- const char * subkeyname,
- struct registry_key **newkey)
-{
- WERROR werr = WERR_OK;
- struct registry_key *create_parent = NULL;
- TALLOC_CTX *create_ctx;
- enum winreg_CreateAction action = REG_ACTION_NONE;
-
- /* create a new talloc ctx for creation. it will hold
- * the intermediate parent key (SMBCONF) for creation
- * and will be destroyed when leaving this function... */
- if (!(create_ctx = talloc_new(ctx))) {
- werr = WERR_NOMEM;
- goto done;
- }
-
- werr = smbconf_open_basepath(create_ctx, REG_KEY_WRITE, &create_parent);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- werr = reg_createkey(ctx, create_parent, subkeyname,
- REG_KEY_WRITE, newkey, &action);
- if (W_ERROR_IS_OK(werr) && (action != REG_CREATED_NEW_KEY)) {
- d_fprintf(stderr, "Key '%s' already exists.\n", subkeyname);
- werr = WERR_ALREADY_EXISTS;
- }
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error creating key %s: %s\n",
- subkeyname, dos_errstr(werr));
- }
-
-done:
- TALLOC_FREE(create_ctx);
- return werr;
-}
-
-/*
- * check if a subkey of KEY_SMBCONF of a given name exists
- */
-static BOOL smbconf_key_exists(TALLOC_CTX *ctx, const char *subkeyname)
-{
- BOOL ret = False;
- WERROR werr = WERR_OK;
- TALLOC_CTX *mem_ctx;
- struct registry_key *key;
-
- if (!(mem_ctx = talloc_new(ctx))) {
- d_fprintf(stderr, "ERROR: Out of memory...!\n");
- goto done;
- }
-
- werr = smbconf_open_path_q(mem_ctx, subkeyname, REG_KEY_READ, &key);
- if (W_ERROR_IS_OK(werr)) {
- ret = True;
- }
-
-done:
- TALLOC_FREE(mem_ctx);
- return ret;
-}
-
-static BOOL smbconf_value_exists(TALLOC_CTX *ctx, struct registry_key *key,
- const char *param)
-{
- BOOL ret = False;
- WERROR werr = WERR_OK;
- struct registry_value *value = NULL;
-
- werr = reg_queryvalue(ctx, key, param, &value);
- if (W_ERROR_IS_OK(werr)) {
- ret = True;
- }
-
- TALLOC_FREE(value);
- return ret;
-}
-
-static WERROR list_values(TALLOC_CTX *ctx, struct registry_key *key)
-{
- WERROR werr = WERR_OK;
- uint32 idx = 0;
- struct registry_value *valvalue = NULL;
- char *valname = NULL;
-
- for (idx = 0;
- W_ERROR_IS_OK(werr = reg_enumvalue(ctx, key, idx, &valname,
- &valvalue));
- idx++)
- {
- d_printf("\t%s = %s\n", valname, format_value(ctx, valvalue));
- }
- if (!W_ERROR_EQUAL(WERR_NO_MORE_ITEMS, werr)) {
- d_fprintf(stderr, "Error enumerating values: %s\n",
- dos_errstr(werr));
- goto done;
- }
- werr = WERR_OK;
-
-done:
- return werr;
-}
-
-static WERROR drop_smbconf_internal(TALLOC_CTX *ctx)
-{
- char *path, *p;
- WERROR werr = WERR_OK;
- NT_USER_TOKEN *token;
- struct registry_key *parent_key = NULL;
- struct registry_key *new_key = NULL;
- TALLOC_CTX* tmp_ctx = NULL;
- enum winreg_CreateAction action;
-
- tmp_ctx = talloc_new(ctx);
- if (tmp_ctx == NULL) {
- werr = WERR_NOMEM;
- goto done;
- }
-
- if (!(token = registry_create_admin_token(tmp_ctx))) {
- /* what is the appropriate error code here? */
- werr = WERR_CAN_NOT_COMPLETE;
- goto done;
- }
-
- path = talloc_strdup(tmp_ctx, KEY_SMBCONF);
- if (path == NULL) {
- d_fprintf(stderr, "ERROR: out of memory!\n");
- werr = WERR_NOMEM;
- goto done;
- }
- p = strrchr(path, '\\');
- *p = '\0';
- werr = reg_open_path(tmp_ctx, path, REG_KEY_WRITE, token, &parent_key);
-
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- werr = reg_deletekey_recursive(tmp_ctx, parent_key, p+1);
-
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- werr = reg_createkey(tmp_ctx, parent_key, p+1, REG_KEY_WRITE,
- &new_key, &action);
-
-done:
- TALLOC_FREE(tmp_ctx);
- return werr;
-}
-
-static char *parm_valstr(TALLOC_CTX *ctx, struct parm_struct *parm,
- struct share_params *share)
-{
- char *valstr = NULL;
- int i = 0;
- void *ptr = parm->ptr;
-
- if (parm->p_class == P_LOCAL && share->service >= 0) {
- ptr = lp_local_ptr(share->service, ptr);
- }
-
- switch (parm->type) {
- case P_CHAR:
- valstr = talloc_asprintf(ctx, "%c", *(char *)ptr);
- break;
- case P_STRING:
- case P_USTRING:
- valstr = talloc_asprintf(ctx, "%s", *(char **)ptr);
- break;
- case P_GSTRING:
- case P_UGSTRING:
- valstr = talloc_asprintf(ctx, "%s", (char *)ptr);
- break;
- case P_BOOL:
- valstr = talloc_asprintf(ctx, "%s", BOOLSTR(*(BOOL *)ptr));
- break;
- case P_BOOLREV:
- valstr = talloc_asprintf(ctx, "%s", BOOLSTR(!*(BOOL *)ptr));
- break;
- case P_ENUM:
- for (i = 0; parm->enum_list[i].name; i++) {
- if (*(int *)ptr == parm->enum_list[i].value)
- {
- valstr = talloc_asprintf(ctx, "%s",
- parm->enum_list[i].name);
- break;
- }
- }
- break;
- case P_OCTAL:
- valstr = talloc_asprintf(ctx, "%s", octal_string(*(int *)ptr));
- break;
- case P_LIST:
- valstr = talloc_strdup(ctx, "");
- if ((char ***)ptr && *(char ***)ptr) {
- char **list = *(char ***)ptr;
- for (; *list; list++) {
- /* surround strings with whitespace
- * in double quotes */
- if (strchr_m(*list, ' '))
- {
- valstr = talloc_asprintf_append(
- valstr, "\"%s\"%s",
- *list,
- ((*(list+1))?", ":""));
- }
- else {
- valstr = talloc_asprintf_append(
- valstr, "%s%s", *list,
- ((*(list+1))?", ":""));
- }
- }
- }
- break;
- case P_INTEGER:
- valstr = talloc_asprintf(ctx, "%d", *(int *)ptr);
- break;
- case P_SEP:
- break;
- default:
- valstr = talloc_asprintf(ctx, "<type unimplemented>\n");
- break;
- }
-
- return valstr;
-}
-
-static int import_process_service(TALLOC_CTX *ctx,
- struct share_params *share)
-{
- int ret = -1;
- struct parm_struct *parm;
- int pnum = 0;
- const char *servicename;
- struct registry_key *key;
- WERROR werr;
- char *valstr = NULL;
- TALLOC_CTX *tmp_ctx = NULL;
-
- tmp_ctx = talloc_new(ctx);
- if (tmp_ctx == NULL) {
- werr = WERR_NOMEM;
- goto done;
- }
-
- servicename = (share->service == GLOBAL_SECTION_SNUM)?
- GLOBAL_NAME : lp_servicename(share->service);
-
- if (opt_testmode) {
- d_printf("[%s]\n", servicename);
- }
- else {
- if (smbconf_key_exists(tmp_ctx, servicename)) {
- werr = reg_delkey_internal(tmp_ctx, servicename);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
- }
- werr = reg_createkey_internal(tmp_ctx, servicename, &key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
- }
-
- while ((parm = lp_next_parameter(share->service, &pnum, 0)))
- {
- if ((share->service < 0 && parm->p_class == P_LOCAL)
- && !(parm->flags & FLAG_GLOBAL))
- continue;
-
- valstr = parm_valstr(tmp_ctx, parm, share);
-
- if (parm->type != P_SEP) {
- if (opt_testmode) {
- d_printf("\t%s = %s\n", parm->label, valstr);
- }
- else {
- werr = reg_setvalue_internal(key, parm->label,
- valstr);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
- }
- }
- }
-
- if (opt_testmode) {
- d_printf("\n");
- }
-
- ret = 0;
-
-done:
- TALLOC_FREE(tmp_ctx);
- return ret;
-}
-
-/* return True iff there are nondefault globals */
-static BOOL globals_exist(void)
-{
- int i = 0;
- struct parm_struct *parm;
-
- while ((parm = lp_next_parameter(GLOBAL_SECTION_SNUM, &i, 0)) != NULL) {
- if (parm->type != P_SEP) {
- return True;
- }
- }
- return False;
-}
-
-/*
- * the conf functions
- */
-
-int net_conf_list(int argc, const char **argv)
-{
- WERROR werr = WERR_OK;
- int ret = -1;
- TALLOC_CTX *ctx;
- struct registry_key *base_key = NULL;
- struct registry_key *sub_key = NULL;
- uint32 idx_key = 0;
- char *subkey_name = NULL;
-
- ctx = talloc_init("list");
-
- if (argc != 0) {
- net_conf_list_usage(argc, argv);
- goto done;
- }
-
- werr = smbconf_open_basepath(ctx, REG_KEY_READ, &base_key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- if (smbconf_key_exists(ctx, GLOBAL_NAME)) {
- werr = reg_openkey(ctx, base_key, GLOBAL_NAME,
- REG_KEY_READ, &sub_key);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error opening subkey '%s' : %s\n",
- subkey_name, dos_errstr(werr));
- goto done;
- }
- d_printf("[%s]\n", GLOBAL_NAME);
- if (!W_ERROR_IS_OK(list_values(ctx, sub_key))) {
- goto done;
- }
- d_printf("\n");
- }
-
- for (idx_key = 0;
- W_ERROR_IS_OK(werr = reg_enumkey(ctx, base_key, idx_key,
- &subkey_name, NULL));
- idx_key++)
- {
- if (strequal(subkey_name, GLOBAL_NAME)) {
- continue;
- }
- d_printf("[%s]\n", subkey_name);
-
- werr = reg_openkey(ctx, base_key, subkey_name,
- REG_KEY_READ, &sub_key);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr,
- "Error opening subkey '%s': %s\n",
- subkey_name, dos_errstr(werr));
- goto done;
- }
- if (!W_ERROR_IS_OK(list_values(ctx, sub_key))) {
- goto done;
- }
- d_printf("\n");
- }
- if (!W_ERROR_EQUAL(WERR_NO_MORE_ITEMS, werr)) {
- d_fprintf(stderr, "Error enumerating subkeys: %s\n",
- dos_errstr(werr));
- goto done;
- }
-
- ret = 0;
-
-done:
- TALLOC_FREE(ctx);
- return ret;
-}
-
-int net_conf_import(int argc, const char **argv)
-{
- int ret = -1;
- const char *filename = NULL;
- const char *servicename = NULL;
- BOOL service_found = False;
- TALLOC_CTX *ctx;
- struct share_iterator *shares;
- struct share_params *share;
- struct share_params global_share = { GLOBAL_SECTION_SNUM };
-
- ctx = talloc_init("net_conf_import");
-
- switch (argc) {
- case 0:
- default:
- net_conf_import_usage(argc, argv);
- goto done;
- case 2:
- servicename = argv[1];
- case 1:
- filename = argv[0];
- break;
- }
-
- DEBUG(3,("net_conf_import: reading configuration from file %s.\n",
- filename));
-
- if (!lp_load(filename,
- False, /* global_only */
- True, /* save_defaults */
- False, /* add_ipc */
- True)) /* initialize_globals */
- {
- d_fprintf(stderr, "Error parsing configuration file.\n");
- goto done;
- }
-
- if (opt_testmode) {
- d_printf("\nTEST MODE - "
- "would import the following configuration:\n\n");
- }
-
- if (((servicename == NULL) && globals_exist()) ||
- strequal(servicename, GLOBAL_NAME))
- {
- service_found = True;
- if (import_process_service(ctx, &global_share) != 0) {
- goto done;
- }
- }
-
- if (service_found && (servicename != NULL)) {
- ret = 0;
- goto done;
- }
-
- if (!(shares = share_list_all(ctx))) {
- d_fprintf(stderr, "Could not list shares...\n");
- goto done;
- }
- while ((share = next_share(shares)) != NULL) {
- if ((servicename == NULL)
- || strequal(servicename, lp_servicename(share->service)))
- {
- service_found = True;
- if (import_process_service(ctx, share)!= 0) {
- goto done;
- }
- }
- }
-
- if ((servicename != NULL) && !service_found) {
- d_printf("Share %s not found in file %s\n",
- servicename, filename);
- goto done;
-
- }
-
- ret = 0;
-
-done:
- TALLOC_FREE(ctx);
- return ret;
-}
-
-int net_conf_listshares(int argc, const char **argv)
-{
- WERROR werr = WERR_OK;
- int ret = -1;
- struct registry_key *key;
- uint32 idx = 0;
- char *subkey_name = NULL;
- TALLOC_CTX *ctx;
-
- ctx = talloc_init("listshares");
-
- if (argc != 0) {
- net_conf_listshares_usage(argc, argv);
- goto done;
- }
-
- werr = smbconf_open_basepath(ctx, SEC_RIGHTS_ENUM_SUBKEYS, &key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- for (idx = 0;
- W_ERROR_IS_OK(werr = reg_enumkey(ctx, key, idx,
- &subkey_name, NULL));
- idx++)
- {
- d_printf("%s\n", subkey_name);
- }
- if (! W_ERROR_EQUAL(WERR_NO_MORE_ITEMS, werr)) {
- d_fprintf(stderr, "Error enumerating subkeys: %s\n",
- dos_errstr(werr));
- goto done;
- }
-
- ret = 0;
-
-done:
- TALLOC_FREE(ctx);
- return ret;
-}
-
-int net_conf_drop(int argc, const char **argv)
-{
- int ret = -1;
- WERROR werr;
-
- if (argc != 0) {
- net_conf_drop_usage(argc, argv);
- goto done;
- }
-
- werr = drop_smbconf_internal(NULL);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error deleting configuration: %s\n",
- dos_errstr(werr));
- goto done;
- }
-
- ret = 0;
-
-done:
- return ret;
-}
-
-int net_conf_showshare(int argc, const char **argv)
-{
- int ret = -1;
- WERROR werr = WERR_OK;
- struct registry_key *key = NULL;
- TALLOC_CTX *ctx;
-
- ctx = talloc_init("showshare");
-
- if (argc != 1) {
- net_conf_showshare_usage(argc, argv);
- goto done;
- }
-
- werr = smbconf_open_path(ctx, argv[0], REG_KEY_READ, &key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- d_printf("[%s]\n", argv[0]);
-
- if (!W_ERROR_IS_OK(list_values(ctx, key))) {
- goto done;
- }
-
- ret = 0;
-
-done:
- TALLOC_FREE(ctx);
- return ret;
-}
-
-int net_conf_addshare(int argc, const char **argv)
-{
- int ret = -1;
- WERROR werr = WERR_OK;
- struct registry_key *newkey = NULL;
- char *sharename = NULL;
- const char *path = NULL;
- const char *comment = NULL;
- const char *guest_ok = "no";
- const char *writeable = "no";
- SMB_STRUCT_STAT sbuf;
-
- switch (argc) {
- case 0:
- case 1:
- default:
- net_conf_addshare_usage(argc, argv);
- goto done;
- case 5:
- comment = argv[4];
- case 4:
- if (!strnequal(argv[3], "guest_ok=", 9)) {
- net_conf_addshare_usage(argc, argv);
- goto done;
- }
- switch (argv[3][9]) {
- case 'y':
- case 'Y':
- guest_ok = "yes";
- break;
- case 'n':
- case 'N':
- guest_ok = "no";
- break;
- default:
- net_conf_addshare_usage(argc, argv);
- goto done;
- }
- case 3:
- if (!strnequal(argv[2], "writeable=", 10)) {
- net_conf_addshare_usage(argc, argv);
- goto done;
- }
- switch (argv[2][10]) {
- case 'y':
- case 'Y':
- writeable = "yes";
- break;
- case 'n':
- case 'N':
- writeable = "no";
- break;
- default:
- net_conf_addshare_usage(argc, argv);
- goto done;
- }
-
- case 2:
- path = argv[1];
- sharename = strdup_lower(argv[0]);
- break;
- }
-
- /*
- * validate arguments
- */
-
- /* validate share name */
-
- if (!validate_net_name(sharename, INVALID_SHARENAME_CHARS,
- strlen(sharename)))
- {
- d_fprintf(stderr, "ERROR: share name %s contains "
- "invalid characters (any of %s)\n",
- sharename, INVALID_SHARENAME_CHARS);
- goto done;
- }
-
- if (getpwnam(sharename)) {
- d_fprintf(stderr, "ERROR: share name %s is already a valid "
- "system user name.\n", sharename);
- goto done;
- }
-
- if (strequal(sharename, GLOBAL_NAME)) {
- d_fprintf(stderr,
- "ERROR: 'global' is not a valid share name.\n");
- goto done;
- }
-
- /* validate path */
-
- if (path[0] != '/') {
- d_fprintf(stderr,
- "Error: path '%s' is not an absolute path.\n",
- path);
- goto done;
- }
-
- if (sys_stat(path, &sbuf) != 0) {
- d_fprintf(stderr,
- "ERROR: cannot stat path '%s' to ensure "
- "this is a directory.\n"
- "Error was '%s'.\n",
- path, strerror(errno));
- goto done;
- }
-
- if (!S_ISDIR(sbuf.st_mode)) {
- d_fprintf(stderr,
- "ERROR: path '%s' is not a directory.\n",
- path);
- goto done;
- }
-
- /*
- * create the share
- */
-
- werr = reg_createkey_internal(NULL, argv[0], &newkey);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- /* add config params as values */
-
- werr = reg_setvalue_internal(newkey, "path", path);
- if (!W_ERROR_IS_OK(werr))
- goto done;
-
- if (comment != NULL) {
- werr = reg_setvalue_internal(newkey, "comment", comment);
- if (!W_ERROR_IS_OK(werr))
- goto done;
- }
-
- werr = reg_setvalue_internal(newkey, "guest ok", guest_ok);
- if (!W_ERROR_IS_OK(werr))
- goto done;
-
- werr = reg_setvalue_internal(newkey, "writeable", writeable);
- if (!W_ERROR_IS_OK(werr))
- goto done;
-
- ret = 0;
-
-done:
- TALLOC_FREE(newkey);
- SAFE_FREE(sharename);
- return ret;
-}
-
-int net_conf_delshare(int argc, const char **argv)
-{
- int ret = -1;
- const char *sharename = NULL;
-
- if (argc != 1) {
- net_conf_delshare_usage(argc, argv);
- goto done;
- }
- sharename = argv[0];
-
- if (W_ERROR_IS_OK(reg_delkey_internal(NULL, sharename))) {
- ret = 0;
- }
-done:
- return ret;
-}
-
-static int net_conf_setparm(int argc, const char **argv)
-{
- int ret = -1;
- WERROR werr = WERR_OK;
- struct registry_key *key = NULL;
- char *service = NULL;
- char *param = NULL;
- const char *value_str = NULL;
- TALLOC_CTX *ctx;
-
- ctx = talloc_init("setparm");
-
- if (argc != 3) {
- net_conf_setparm_usage(argc, argv);
- goto done;
- }
- service = strdup_lower(argv[0]);
- param = strdup_lower(argv[1]);
- value_str = argv[2];
-
- if (!smbconf_key_exists(ctx, service)) {
- werr = reg_createkey_internal(ctx, service, &key);
- }
- else {
- werr = smbconf_open_path(ctx, service, REG_KEY_READ, &key);
- }
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- werr = reg_setvalue_internal(key, param, value_str);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error setting value '%s': %s\n",
- param, dos_errstr(werr));
- goto done;
- }
-
-
- ret = 0;
-
-done:
- SAFE_FREE(service);
- TALLOC_FREE(ctx);
- return ret;
-}
-
-static int net_conf_getparm(int argc, const char **argv)
-{
- int ret = -1;
- WERROR werr = WERR_OK;
- struct registry_key *key = NULL;
- char *service = NULL;
- char *param = NULL;
- struct registry_value *value = NULL;
- TALLOC_CTX *ctx;
-
- ctx = talloc_init("getparm");
-
- if (argc != 2) {
- net_conf_getparm_usage(argc, argv);
- goto done;
- }
- service = strdup_lower(argv[0]);
- param = strdup_lower(argv[1]);
-
- if (!smbconf_key_exists(ctx, service)) {
- d_fprintf(stderr,
- "ERROR: given service '%s' does not exist.\n",
- service);
- goto done;
- }
-
- werr = smbconf_open_path(ctx, service, REG_KEY_READ, &key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- werr = reg_queryvalue(ctx, key, param, &value);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error querying value '%s': %s.\n",
- param, dos_errstr(werr));
- goto done;
- }
-
- d_printf("%s\n", format_value(ctx, value));
-
- ret = 0;
-done:
- SAFE_FREE(service);
- SAFE_FREE(param);
- TALLOC_FREE(ctx);
- return ret;
-}
-
-static int net_conf_delparm(int argc, const char **argv)
-{
- int ret = -1;
- WERROR werr = WERR_OK;
- struct registry_key *key = NULL;
- char *service = NULL;
- char *param = NULL;
- TALLOC_CTX *ctx;
-
- ctx = talloc_init("delparm");
-
- if (argc != 2) {
- net_conf_delparm_usage(argc, argv);
- goto done;
- }
- service = strdup_lower(argv[0]);
- param = strdup_lower(argv[1]);
-
- if (!smbconf_key_exists(ctx, service)) {
- d_fprintf(stderr,
- "Error: given service '%s' does not exist.\n",
- service);
- goto done;
- }
-
- werr = smbconf_open_path(ctx, service, REG_KEY_READ, &key);
- if (!W_ERROR_IS_OK(werr)) {
- goto done;
- }
-
- if (!smbconf_value_exists(ctx, key, param)) {
- d_fprintf(stderr,
- "Error: given parameter '%s' is not set.\n",
- param);
- goto done;
- }
- werr = reg_deletevalue(key, param);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr, "Error deleting value '%s': %s.\n",
- param, dos_errstr(werr));
- goto done;
- }
-
- ret = 0;
-
-done:
- return ret;
-}
-
-/*
- * Entry-point for all the CONF functions.
- */
-
-int net_conf(int argc, const char **argv)
-{
- int ret = -1;
- struct functable2 func[] = {
- {"list", net_conf_list,
- "Dump the complete configuration in smb.conf like format."},
- {"import", net_conf_import,
- "Import configuration from file in smb.conf format."},
- {"listshares", net_conf_listshares,
- "List the registry shares."},
- {"drop", net_conf_drop,
- "Delete the complete configuration from registry."},
- {"showshare", net_conf_showshare,
- "Show the definition of a registry share."},
- {"addshare", net_conf_addshare,
- "Create a new registry share."},
- {"delshare", net_conf_delshare,
- "Delete a registry share."},
- {"setparm", net_conf_setparm,
- "Store a parameter."},
- {"getparm", net_conf_getparm,
- "Retrieve the value of a parameter."},
- {"delparm", net_conf_delparm,
- "Delete a parameter."},
- {NULL, NULL, NULL}
- };
-
- if (!registry_init_regdb()) {
- d_fprintf(stderr, "Error initializing the registry!\n");
- goto done;
- }
-
- ret = net_run_function2(argc, argv, "net conf", func);
-
- regdb_close();
-
-done:
- return ret;
-}
-
-/* END */
diff --git a/source/utils/net_domain.c b/source/utils/net_domain.c
index 948aa5c19bb..5b330d8765c 100644
--- a/source/utils/net_domain.c
+++ b/source/utils/net_domain.c
@@ -180,7 +180,7 @@ NTSTATUS netdom_get_domain_sid( TALLOC_CTX *mem_ctx, struct cli_state *cli,
if ( !NT_STATUS_IS_OK(status) )
return status;
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &lsa_pol);
cli_rpc_pipe_close(pipe_hnd); /* Done with this pipe */
/* Bail out if domain didn't get set. */
@@ -209,14 +209,10 @@ NTSTATUS netdom_join_domain( TALLOC_CTX *mem_ctx, struct cli_state *cli,
uint32 num_rids, *name_types, *user_rids;
uint32 flags = 0x3e8;
uint32 acb_info = ACB_WSTRUST;
- uint32 fields_present;
- uchar pwbuf[532];
+ uchar pwbuf[516];
SAM_USERINFO_CTR ctr;
- SAM_USER_INFO_25 p25;
- const int infolevel = 25;
- struct MD5Context md5ctx;
- uchar md5buffer[16];
- DATA_BLOB digested_session_key;
+ SAM_USER_INFO_24 p24;
+ SAM_USER_INFO_16 p16;
uchar md4_trust_password[16];
/* Open the domain */
@@ -287,49 +283,24 @@ NTSTATUS netdom_join_domain( TALLOC_CTX *mem_ctx, struct cli_state *cli,
status = rpccli_samr_open_user(pipe_hnd, mem_ctx, &domain_pol,
SEC_RIGHTS_MAXIMUM_ALLOWED, user_rid, &user_pol);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
- /* Create a random machine account password and generate the hash */
+ /* Create a random machine account password */
- E_md4hash(clear_pw, md4_trust_password);
+ E_md4hash( clear_pw, md4_trust_password);
encode_pw_buffer(pwbuf, clear_pw, STR_UNICODE);
-
- generate_random_buffer((uint8*)md5buffer, sizeof(md5buffer));
- digested_session_key = data_blob_talloc(mem_ctx, 0, 16);
-
- MD5Init(&md5ctx);
- MD5Update(&md5ctx, md5buffer, sizeof(md5buffer));
- MD5Update(&md5ctx, cli->user_session_key.data, cli->user_session_key.length);
- MD5Final(digested_session_key.data, &md5ctx);
-
- SamOEMhashBlob(pwbuf, sizeof(pwbuf), &digested_session_key);
- memcpy(&pwbuf[516], md5buffer, sizeof(md5buffer));
-
- /* Fill in the additional account flags now */
-
- acb_info |= ACB_PWNOEXP;
- if ( dom_type == ND_TYPE_AD ) {
-#if !defined(ENCTYPE_ARCFOUR_HMAC)
- acb_info |= ACB_USE_DES_KEY_ONLY;
-#endif
- ;;
- }
- /* Set password and account flags on machine account */
+ /* Set password on machine account */
ZERO_STRUCT(ctr);
- ZERO_STRUCT(p25);
+ ZERO_STRUCT(p24);
- fields_present = ACCT_NT_PWD_SET | ACCT_LM_PWD_SET | ACCT_FLAGS;
- init_sam_user_info25P(&p25, fields_present, acb_info, (char *)pwbuf);
+ init_sam_user_info24(&p24, (char *)pwbuf,24);
- ctr.switch_value = infolevel;
- ctr.info.id25 = &p25;
+ ctr.switch_value = 24;
+ ctr.info.id24 = &p24;
- status = rpccli_samr_set_userinfo2(pipe_hnd, mem_ctx, &user_pol,
- infolevel, &cli->user_session_key, &ctr);
+ status = rpccli_samr_set_userinfo(pipe_hnd, mem_ctx, &user_pol,
+ 24, &cli->user_session_key, &ctr);
if ( !NT_STATUS_IS_OK(status) ) {
d_fprintf( stderr, "Failed to set password for machine account (%s)\n",
@@ -337,6 +308,35 @@ NTSTATUS netdom_join_domain( TALLOC_CTX *mem_ctx, struct cli_state *cli,
return status;
}
+
+ /* Why do we have to try to (re-)set the ACB to be the same as what
+ we passed in the samr_create_dom_user() call? When a NT
+ workstation is joined to a domain by an administrator the
+ acb_info is set to 0x80. For a normal user with "Add
+ workstations to the domain" rights the acb_info is 0x84. I'm
+ not sure whether it is supposed to make a difference or not. NT
+ seems to cope with either value so don't bomb out if the set
+ userinfo2 level 0x10 fails. -tpot */
+
+ ZERO_STRUCT(ctr);
+ ctr.switch_value = 16;
+ ctr.info.id16 = &p16;
+
+ /* Fill in the additional account flags now */
+
+ acb_info |= ACB_PWNOEXP;
+ if ( dom_type == ND_TYPE_AD ) {
+#if !defined(ENCTYPE_ARCFOUR_HMAC)
+ acb_info |= ACB_USE_DES_KEY_ONLY;
+#endif
+ ;;
+ }
+
+ init_sam_user_info16(&p16, acb_info);
+
+ status = rpccli_samr_set_userinfo2(pipe_hnd, mem_ctx, &user_pol, 16,
+ &cli->user_session_key, &ctr);
+
rpccli_samr_close(pipe_hnd, mem_ctx, &user_pol);
cli_rpc_pipe_close(pipe_hnd); /* Done with this pipe */
diff --git a/source/utils/net_groupmap.c b/source/utils/net_groupmap.c
index bb30a31c0b9..ad1a141cfc5 100644
--- a/source/utils/net_groupmap.c
+++ b/source/utils/net_groupmap.c
@@ -725,7 +725,7 @@ static int net_groupmap_listmem(int argc, const char **argv)
printf("%s\n", sid_string_static(&(members[i])));
}
- TALLOC_FREE(members);
+ SAFE_FREE(members);
return 0;
}
diff --git a/source/utils/net_help.c b/source/utils/net_help.c
index a293822c29c..369fc095f21 100644
--- a/source/utils/net_help.c
+++ b/source/utils/net_help.c
@@ -234,9 +234,8 @@ static int net_usage(int argc, const char **argv)
" net changesecretpw\tto change the machine password in the local secrets database only\n"\
" \tthis requires the -f flag as a safety barrier\n"\
" net status\t\tShow server status\n"\
- " net usersidlist\tto get a list of all users with their SIDs\n"
- " net usershare\t\tto add, delete and list locally user-modifiable shares\n"
- " net conf\t\tto view and edit samba's registry based configuration\n"
+ " net usersidlist\tto get a list of all users with their SIDs\n"
+ " net usershare\t\tto add, delete and list locally user-modifiable shares\n"
"\n"\
" net ads <command>\tto run ADS commands\n"\
" net rap <command>\tto run RAP (pre-RPC) commands\n"\
diff --git a/source/utils/net_idmap.c b/source/utils/net_idmap.c
index d4d2c931b84..1f70dafcfe8 100644
--- a/source/utils/net_idmap.c
+++ b/source/utils/net_idmap.c
@@ -35,17 +35,17 @@ static int net_idmap_dump_one_entry(TDB_CONTEXT *tdb,
TDB_DATA data,
void *unused)
{
- if (strcmp((char *)key.dptr, "USER HWM") == 0) {
+ if (strcmp(key.dptr, "USER HWM") == 0) {
printf("USER HWM %d\n", IVAL(data.dptr,0));
return 0;
}
- if (strcmp((char *)key.dptr, "GROUP HWM") == 0) {
+ if (strcmp(key.dptr, "GROUP HWM") == 0) {
printf("GROUP HWM %d\n", IVAL(data.dptr,0));
return 0;
}
- if (strncmp((char *)key.dptr, "S-", 2) != 0)
+ if (strncmp(key.dptr, "S-", 2) != 0)
return 0;
printf("%s %s\n", data.dptr, key.dptr);
diff --git a/source/utils/net_rpc.c b/source/utils/net_rpc.c
index 3c722d2760b..fee994b7519 100644
--- a/source/utils/net_rpc.c
+++ b/source/utils/net_rpc.c
@@ -5,7 +5,6 @@
Copyright (C) 2002 Jim McDonough (jmcd@us.ibm.com)
Copyright (C) 2004 Guenther Deschner (gd@samba.org)
Copyright (C) 2005 Jeremy Allison (jra@samba.org)
- Copyright (C) 2006 Jelmer Vernooij (jelmer@samba.org)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -82,7 +81,7 @@ NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx,
return result;
}
- rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
+ rpccli_lsa_close(lsa_pipe, mem_ctx, &pol);
cli_rpc_pipe_close(lsa_pipe);
return NT_STATUS_OK;
@@ -2030,14 +2029,14 @@ static NTSTATUS get_sid_from_name(struct cli_state *cli,
}
result = rpccli_lsa_lookup_names(pipe_hnd, mem_ctx, &lsa_pol, 1,
- &name, NULL, 1, &sids, &types);
+ &name, NULL, &sids, &types);
if (NT_STATUS_IS_OK(result)) {
sid_copy(sid, &sids[0]);
*type = types[0];
}
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &lsa_pol);
done:
if (pipe_hnd) {
@@ -3014,16 +3013,13 @@ static NTSTATUS rpc_share_add_internals(const DOM_SID *domain_sid,
TALLOC_CTX *mem_ctx,int argc,
const char **argv)
{
- NTSTATUS result;
+ WERROR result;
char *sharename;
char *path;
uint32 type = STYPE_DISKTREE; /* only allow disk shares to be added */
uint32 num_users=0, perms=0;
char *password=NULL; /* don't allow a share password */
uint32 level = 2;
- uint32 parm_error;
- union srvsvc_NetShareInfo info;
- struct srvsvc_NetShareInfo2 info2;
if ((sharename = talloc_strdup(mem_ctx, argv[0])) == NULL) {
return NT_STATUS_NO_MEMORY;
@@ -3034,20 +3030,11 @@ static NTSTATUS rpc_share_add_internals(const DOM_SID *domain_sid,
return NT_STATUS_UNSUCCESSFUL;
*path++ = '\0';
- info.info2 = &info2;
-
- info2.type = type;
- info2.comment = opt_comment;
- info2.permissions = perms;
- info2.max_users = opt_maxusers;
- info2.current_users = num_users;
- info2.path = path;
- info2.password = password;
- info2.name = sharename;
-
- result = rpccli_srvsvc_NetShareAdd(pipe_hnd, mem_ctx, NULL, level,
- info, &parm_error);
- return result;
+ result = rpccli_srvsvc_net_share_add(pipe_hnd, mem_ctx, sharename, type,
+ opt_comment, perms, opt_maxusers,
+ num_users, path, password,
+ level, NULL);
+ return werror_to_ntstatus(result);
}
static int rpc_share_add(int argc, const char **argv)
@@ -3084,7 +3071,10 @@ static NTSTATUS rpc_share_del_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
- return rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx, NULL, argv[0], 0);
+ WERROR result;
+
+ result = rpccli_srvsvc_net_share_del(pipe_hnd, mem_ctx, argv[0]);
+ return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
/**
@@ -3111,83 +3101,169 @@ static int rpc_share_delete(int argc, const char **argv)
/**
* Formatted print of share info
*
- * @param info1 pointer to struct srvsvc_NetShareInfo1 to format
+ * @param info1 pointer to SRV_SHARE_INFO_1 to format
**/
-static void display_share_info_1(struct srvsvc_NetShareInfo1 *info1)
+static void display_share_info_1(SRV_SHARE_INFO_1 *info1)
{
+ fstring netname = "", remark = "";
+
+ rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname);
+ rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark);
+
if (opt_long_list_entries) {
d_printf("%-12s %-8.8s %-50s\n",
- info1->name, share_type[info1->type & ~(STYPE_TEMPORARY|STYPE_HIDDEN)],
- info1->comment ? info1->comment : "");
+ netname, share_type[info1->info_1.type & ~(STYPE_TEMPORARY|STYPE_HIDDEN)], remark);
} else {
- d_printf("%s\n", info1->name);
+ d_printf("%s\n", netname);
}
}
-static NTSTATUS get_share_info(struct rpc_pipe_client *pipe_hnd,
+static WERROR get_share_info(struct rpc_pipe_client *pipe_hnd,
TALLOC_CTX *mem_ctx,
uint32 level,
int argc,
const char **argv,
- union srvsvc_NetShareCtr *ctr,
- uint32 *numentries)
+ SRV_SHARE_INFO_CTR *ctr)
{
- union srvsvc_NetShareInfo info;
- NTSTATUS status;
-
- switch(level) {
- case 1:
- if (!(ctr->ctr1 = TALLOC_ZERO_P(
- mem_ctx, struct srvsvc_NetShareCtr1))) {
- return NT_STATUS_NO_MEMORY;
- }
- break;
- case 502:
- if (!(ctr->ctr502 = TALLOC_ZERO_P(
- mem_ctx, struct srvsvc_NetShareCtr502))) {
- return NT_STATUS_NO_MEMORY;
- }
- break;
- default:
- return NT_STATUS_INVALID_LEVEL;
- break;
- }
+ WERROR result;
+ SRV_SHARE_INFO info;
/* no specific share requested, enumerate all */
if (argc == 0) {
- uint32 hnd = 0;
- return rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, NULL,
- &level, ctr, 0xffffffff,
- numentries, &hnd);
+ ENUM_HND hnd;
+ uint32 preferred_len = 0xffffffff;
+
+ init_enum_hnd(&hnd, 0);
+
+ return rpccli_srvsvc_net_share_enum(pipe_hnd, mem_ctx, level, ctr,
+ preferred_len, &hnd);
}
/* request just one share */
- status = rpccli_srvsvc_NetShareGetInfo(pipe_hnd, mem_ctx, NULL,
- argv[0], level, &info);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
+ result = rpccli_srvsvc_net_share_get_info(pipe_hnd, mem_ctx, argv[0], level, &info);
+
+ if (!W_ERROR_IS_OK(result))
+ goto done;
- *numentries = 1;
+ /* construct ctr */
+ ZERO_STRUCTP(ctr);
- switch(level) {
+ ctr->info_level = ctr->switch_value = level;
+ ctr->ptr_share_info = ctr->ptr_entries = 1;
+ ctr->num_entries = ctr->num_entries2 = 1;
+
+ switch (level) {
case 1:
- ctr->ctr1->count = 1;
- ctr->ctr1->array = info.info1;
- break;
+ {
+ char *s;
+ SRV_SHARE_INFO_1 *info1;
+
+ ctr->share.info1 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_1, 1);
+ if (ctr->share.info1 == NULL) {
+ result = WERR_NOMEM;
+ goto done;
+ }
+ info1 = ctr->share.info1;
+
+ memset(ctr->share.info1, 0, sizeof(SRV_SHARE_INFO_1));
+
+ /* Copy pointer crap */
+
+ memcpy(&info1->info_1, &info.share.info1.info_1, sizeof(SH_INFO_1));
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &info.share.info1.info_1_str.uni_netname);
+ if (s)
+ init_unistr2(&info1->info_1_str.uni_netname, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info.share.info1.info_1_str.uni_remark);
+ if (s)
+ init_unistr2(&info1->info_1_str.uni_remark, s, UNI_STR_TERMINATE);
+ }
+ case 2:
+ {
+ char *s;
+ SRV_SHARE_INFO_2 *info2;
+
+ ctr->share.info2 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_2, 1);
+ if (ctr->share.info2 == NULL) {
+ result = WERR_NOMEM;
+ goto done;
+ }
+ info2 = ctr->share.info2;
+
+ memset(ctr->share.info2, 0, sizeof(SRV_SHARE_INFO_2));
+
+ /* Copy pointer crap */
+
+ memcpy(&info2->info_2, &info.share.info2.info_2, sizeof(SH_INFO_2));
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &info.share.info2.info_2_str.uni_netname);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_netname, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info.share.info2.info_2_str.uni_remark);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_remark, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info.share.info2.info_2_str.uni_path);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_path, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info.share.info2.info_2_str.uni_passwd);
+ if (s)
+ init_unistr2(&info2->info_2_str.uni_passwd, s, UNI_STR_TERMINATE);
+ }
case 502:
- ctr->ctr501->count = 1;
- ctr->ctr502->array = info.info502;
- break;
- default:
- return NT_STATUS_INTERNAL_ERROR;
- break;
+ {
+ char *s;
+ SRV_SHARE_INFO_502 *info502;
+
+ ctr->share.info502 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_502, 1);
+ if (ctr->share.info502 == NULL) {
+ result = WERR_NOMEM;
+ goto done;
+ }
+ info502 = ctr->share.info502;
+
+ memset(ctr->share.info502, 0, sizeof(SRV_SHARE_INFO_502));
+
+ /* Copy pointer crap */
+
+ memcpy(&info502->info_502, &info.share.info502.info_502, sizeof(SH_INFO_502));
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &info.share.info502.info_502_str.uni_netname);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_netname, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info.share.info502.info_502_str.uni_remark);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_remark, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info.share.info502.info_502_str.uni_path);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_path, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &info.share.info502.info_502_str.uni_passwd);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_passwd, s, UNI_STR_TERMINATE);
+
+ info502->info_502_str.sd = dup_sec_desc(mem_ctx, info.share.info502.info_502_str.sd);
+
}
- return NT_STATUS_OK;
+ } /* switch */
+
+done:
+ return result;
}
/**
@@ -3214,14 +3290,12 @@ static NTSTATUS rpc_share_list_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
- union srvsvc_NetShareCtr ctr;
- NTSTATUS result;
+ SRV_SHARE_INFO_CTR ctr;
+ WERROR result;
uint32 i, level = 1;
- uint32 numentries;
- result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr,
- &numentries);
- if (!NT_STATUS_IS_OK(result))
+ result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr);
+ if (!W_ERROR_IS_OK(result))
goto done;
/* Display results */
@@ -3232,10 +3306,10 @@ static NTSTATUS rpc_share_list_internals(const DOM_SID *domain_sid,
"\nShare name Type Description\n"\
"---------- ---- -----------\n");
}
- for (i = 0; i < numentries; i++)
- display_share_info_1(&ctr.ctr1->array[i]);
+ for (i = 0; i < ctr.num_entries; i++)
+ display_share_info_1(&ctr.share.info1[i]);
done:
- return NT_STATUS_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+ return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
/***
@@ -3262,7 +3336,7 @@ static BOOL check_share_availability(struct cli_state *cli, const char *netname)
return True;
}
-static BOOL check_share_sanity(struct cli_state *cli, const char *netname, uint32 type)
+static BOOL check_share_sanity(struct cli_state *cli, fstring netname, uint32 type)
{
/* only support disk shares */
if (! ( type == STYPE_DISKTREE || type == (STYPE_DISKTREE | STYPE_HIDDEN)) ) {
@@ -3308,18 +3382,18 @@ static NTSTATUS rpc_share_migrate_shares_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
- NTSTATUS result;
+ WERROR result;
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
- union srvsvc_NetShareCtr ctr_src;
+ SRV_SHARE_INFO_CTR ctr_src;
+ uint32 type = STYPE_DISKTREE; /* only allow disk shares to be added */
+ char *password = NULL; /* don't allow a share password */
uint32 i;
struct rpc_pipe_client *srvsvc_pipe = NULL;
struct cli_state *cli_dst = NULL;
uint32 level = 502; /* includes secdesc */
- uint32 numentries;
- result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src,
- &numentries);
- if (!NT_STATUS_IS_OK(result))
+ result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src);
+ if (!W_ERROR_IS_OK(result))
goto done;
/* connect destination PI_SRVSVC */
@@ -3328,37 +3402,41 @@ static NTSTATUS rpc_share_migrate_shares_internals(const DOM_SID *domain_sid,
return nt_status;
- for (i = 0; i < numentries; i++) {
- uint32 parm_error = 0;
- union srvsvc_NetShareInfo info;
+ for (i = 0; i < ctr_src.num_entries; i++) {
+ fstring netname = "", remark = "", path = "";
/* reset error-code */
nt_status = NT_STATUS_UNSUCCESSFUL;
- if (!check_share_sanity(cli, ctr_src.ctr502->array[i].name,
- ctr_src.ctr502->array[i].type))
-
+ rpcstr_pull_unistr2_fstring(
+ netname, &ctr_src.share.info502[i].info_502_str.uni_netname);
+ rpcstr_pull_unistr2_fstring(
+ remark, &ctr_src.share.info502[i].info_502_str.uni_remark);
+ rpcstr_pull_unistr2_fstring(
+ path, &ctr_src.share.info502[i].info_502_str.uni_path);
+
+ if (!check_share_sanity(cli, netname, ctr_src.share.info502[i].info_502.type))
continue;
/* finally add the share on the dst server */
printf("migrating: [%s], path: %s, comment: %s, without share-ACLs\n",
- ctr_src.ctr502->array[i].name,
- ctr_src.ctr502->array[i].path,
- ctr_src.ctr502->array[i].comment);
-
- info.info502 = &ctr_src.ctr502->array[i];
-
- result = rpccli_srvsvc_NetShareAdd(srvsvc_pipe, mem_ctx, NULL,
- 502, info, &parm_error);
+ netname, path, remark);
+
+ result = rpccli_srvsvc_net_share_add(srvsvc_pipe, mem_ctx, netname, type, remark,
+ ctr_src.share.info502[i].info_502.perms,
+ ctr_src.share.info502[i].info_502.max_uses,
+ ctr_src.share.info502[i].info_502.num_uses,
+ path, password, level,
+ NULL);
- if (NT_STATUS_EQUAL(result, NT_STATUS_OBJECT_NAME_COLLISION)) {
- printf(" [%s] does already exist\n", ctr_src.ctr502->array[i].name);
+ if (W_ERROR_V(result) == W_ERROR_V(WERR_ALREADY_EXISTS)) {
+ printf(" [%s] does already exist\n", netname);
continue;
}
- if (!NT_STATUS_IS_OK(result)) {
- printf("cannot add share: %s\n", nt_errstr(result));
+ if (!W_ERROR_IS_OK(result)) {
+ printf("cannot add share: %s\n", dos_errstr(result));
goto done;
}
@@ -3588,9 +3666,9 @@ static NTSTATUS rpc_share_migrate_files_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
- NTSTATUS result;
+ WERROR result;
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
- union srvsvc_NetShareCtr ctr_src;
+ SRV_SHARE_INFO_CTR ctr_src;
uint32 i;
uint32 level = 502;
struct copy_clistate cp_clistate;
@@ -3598,24 +3676,27 @@ static NTSTATUS rpc_share_migrate_files_internals(const DOM_SID *domain_sid,
BOOL got_dst_share = False;
pstring mask = "\\*";
char *dst = NULL;
- uint32 numentries;
dst = SMB_STRDUP(opt_destination?opt_destination:"127.0.0.1");
- result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src,
- &numentries);
+ result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src);
- if (!NT_STATUS_IS_OK(result))
+ if (!W_ERROR_IS_OK(result))
goto done;
- for (i = 0; i < numentries; i++) {
- if (!check_share_sanity(cli, ctr_src.ctr502->array[i].name,
- ctr_src.ctr502->array[i].type))
+ for (i = 0; i < ctr_src.num_entries; i++) {
+
+ fstring netname = "";
+
+ rpcstr_pull_unistr2_fstring(
+ netname, &ctr_src.share.info502[i].info_502_str.uni_netname);
+
+ if (!check_share_sanity(cli, netname, ctr_src.share.info502[i].info_502.type))
continue;
/* one might not want to mirror whole discs :) */
- if (strequal(ctr_src.ctr502->array[i].name, "print$") || ctr_src.ctr502->array[i].name[1] == '$') {
- d_printf("skipping [%s]: builtin/hidden share\n", ctr_src.ctr502->array[i].name);
+ if (strequal(netname, "print$") || netname[1] == '$') {
+ d_printf("skipping [%s]: builtin/hidden share\n", netname);
continue;
}
@@ -3629,7 +3710,7 @@ static NTSTATUS rpc_share_migrate_files_internals(const DOM_SID *domain_sid,
break;
}
printf(" [%s] files and directories %s ACLs, %s DOS Attributes %s\n",
- ctr_src.ctr502->array[i].name,
+ netname,
opt_acls ? "including" : "without",
opt_attrs ? "including" : "without",
opt_timestamps ? "(preserving timestamps)" : "");
@@ -3643,7 +3724,7 @@ static NTSTATUS rpc_share_migrate_files_internals(const DOM_SID *domain_sid,
/* open share source */
nt_status = connect_to_service(&cp_clistate.cli_share_src,
&cli->dest_ip, cli->desthost,
- ctr_src.ctr502->array[i].name, "A:");
+ netname, "A:");
if (!NT_STATUS_IS_OK(nt_status))
goto done;
@@ -3652,22 +3733,21 @@ static NTSTATUS rpc_share_migrate_files_internals(const DOM_SID *domain_sid,
if (net_mode_share == NET_MODE_SHARE_MIGRATE) {
/* open share destination */
nt_status = connect_to_service(&cp_clistate.cli_share_dst,
- NULL, dst, ctr_src.ctr502->array[i].name, "A:");
+ NULL, dst, netname, "A:");
if (!NT_STATUS_IS_OK(nt_status))
goto done;
got_dst_share = True;
}
- if (!copy_top_level_perms(&cp_clistate, ctr_src.ctr502->array[i].name)) {
- d_fprintf(stderr, "Could not handle the top level directory permissions for the share: %s\n", ctr_src.ctr502->array[i].name);
+ if (!copy_top_level_perms(&cp_clistate, netname)) {
+ d_fprintf(stderr, "Could not handle the top level directory permissions for the share: %s\n", netname);
nt_status = NT_STATUS_UNSUCCESSFUL;
goto done;
}
if (!sync_files(&cp_clistate, mask)) {
- d_fprintf(stderr, "could not handle files for share: %s\n",
- ctr_src.ctr502->array[i].name);
+ d_fprintf(stderr, "could not handle files for share: %s\n", netname);
nt_status = NT_STATUS_UNSUCCESSFUL;
goto done;
}
@@ -3724,21 +3804,18 @@ static NTSTATUS rpc_share_migrate_security_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
- NTSTATUS result;
+ WERROR result;
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
- union srvsvc_NetShareCtr ctr_src;
- union srvsvc_NetShareInfo info;
+ SRV_SHARE_INFO_CTR ctr_src;
+ SRV_SHARE_INFO info;
uint32 i;
struct rpc_pipe_client *srvsvc_pipe = NULL;
struct cli_state *cli_dst = NULL;
uint32 level = 502; /* includes secdesc */
- uint32 numentries;
- uint32 parm_error = 0;
- result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src,
- &numentries);
+ result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src);
- if (!NT_STATUS_IS_OK(result))
+ if (!W_ERROR_IS_OK(result))
goto done;
/* connect destination PI_SRVSVC */
@@ -3747,31 +3824,42 @@ static NTSTATUS rpc_share_migrate_security_internals(const DOM_SID *domain_sid,
return nt_status;
- for (i = 0; i < numentries; i++) {
+ for (i = 0; i < ctr_src.num_entries; i++) {
+
+ fstring netname = "", remark = "", path = "";
/* reset error-code */
nt_status = NT_STATUS_UNSUCCESSFUL;
- if (!check_share_sanity(cli, ctr_src.ctr502->array[i].name, ctr_src.ctr502->array[i].type))
+ rpcstr_pull_unistr2_fstring(
+ netname, &ctr_src.share.info502[i].info_502_str.uni_netname);
+ rpcstr_pull_unistr2_fstring(
+ remark, &ctr_src.share.info502[i].info_502_str.uni_remark);
+ rpcstr_pull_unistr2_fstring(
+ path, &ctr_src.share.info502[i].info_502_str.uni_path);
+
+ if (!check_share_sanity(cli, netname, ctr_src.share.info502[i].info_502.type))
continue;
printf("migrating: [%s], path: %s, comment: %s, including share-ACLs\n",
- ctr_src.ctr502->array[i].name,
- ctr_src.ctr502->array[i].path,
- ctr_src.ctr502->array[i].comment);
+ netname, path, remark);
if (opt_verbose)
- display_sec_desc(ctr_src.ctr502->array[i].sd);
+ display_sec_desc(ctr_src.share.info502[i].info_502_str.sd);
/* init info */
ZERO_STRUCT(info);
+ info.switch_value = level;
+ info.ptr_share_ctr = 1;
+
+ /* FIXME: shouldn't we be able to just set the security descriptor ? */
+ info.share.info502 = ctr_src.share.info502[i];
+
/* finally modify the share on the dst server */
- result = rpccli_srvsvc_NetShareSetInfo(
- srvsvc_pipe, mem_ctx, NULL, argv[0], level, info,
- &parm_error);
+ result = rpccli_srvsvc_net_share_set_info(srvsvc_pipe, mem_ctx, netname, level, &info);
- if (!NT_STATUS_IS_OK(result)) {
- printf("cannot set share-acl: %s\n", nt_errstr(result));
+ if (!W_ERROR_IS_OK(result)) {
+ printf("cannot set share-acl: %s\n", dos_errstr(result));
goto done;
}
@@ -3995,7 +4083,7 @@ static NTSTATUS rpc_aliaslist_dump(const DOM_SID *domain_sid,
for (i=0; i<num_server_aliases; i++) {
char **names;
char **domains;
- enum lsa_SidType *types;
+ uint32 *types;
int j;
struct full_alias *alias = &server_aliases[i];
@@ -4029,7 +4117,7 @@ static NTSTATUS rpc_aliaslist_dump(const DOM_SID *domain_sid,
DEBUG(1, ("\n"));
}
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &lsa_pol);
return NT_STATUS_OK;
}
@@ -4074,11 +4162,7 @@ static void init_user_token(NT_USER_TOKEN *token, DOM_SID *user_sid)
{
token->num_sids = 4;
- if (!(token->user_sids = SMB_MALLOC_ARRAY(DOM_SID, 4))) {
- d_fprintf(stderr, "malloc failed\n");
- token->num_sids = 0;
- return;
- }
+ token->user_sids = SMB_MALLOC_ARRAY(DOM_SID, 4);
token->user_sids[0] = *user_sid;
sid_copy(&token->user_sids[1], &global_sid_World);
@@ -4405,20 +4489,20 @@ static void show_userlist(struct rpc_pipe_client *pipe_hnd,
SEC_DESC *root_sd = NULL;
struct cli_state *cli = pipe_hnd->cli;
int i;
- union srvsvc_NetShareInfo info;
- NTSTATUS result;
+ SRV_SHARE_INFO info;
+ WERROR result;
uint16 cnum;
- result = rpccli_srvsvc_NetShareGetInfo(pipe_hnd, mem_ctx, NULL, netname,
+ result = rpccli_srvsvc_net_share_get_info(pipe_hnd, mem_ctx, netname,
502, &info);
- if (!NT_STATUS_IS_OK(result)) {
+ if (!W_ERROR_IS_OK(result)) {
DEBUG(1, ("Coult not query secdesc for share %s\n",
netname));
return;
}
- share_sd = info.info502->sd;
+ share_sd = info.share.info502.info_502_str.sd;
if (share_sd == NULL) {
DEBUG(1, ("Got no secdesc for share %s\n",
netname));
@@ -4532,7 +4616,7 @@ static NTSTATUS rpc_share_allowedusers_internals(const DOM_SID *domain_sid,
{
int ret;
BOOL r;
- uint32 hnd;
+ ENUM_HND hnd;
uint32 i;
FILE *f;
@@ -4570,7 +4654,8 @@ static NTSTATUS rpc_share_allowedusers_internals(const DOM_SID *domain_sid,
for (i=0; i<num_tokens; i++)
collect_alias_memberships(&tokens[i].token);
- hnd = 0;
+ init_enum_hnd(&hnd, 0);
+
share_list.num_shares = 0;
share_list.shares = NULL;
@@ -4701,10 +4786,7 @@ static NTSTATUS rpc_sh_share_add(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *pipe_hnd,
int argc, const char **argv)
{
- union srvsvc_NetShareInfo info;
- struct srvsvc_NetShareInfo2 info2;
- NTSTATUS result;
- uint32 parm_error = 0;
+ WERROR result;
if ((argc < 2) || (argc > 3)) {
d_fprintf(stderr, "usage: %s <share> <path> [comment]\n",
@@ -4712,15 +4794,12 @@ static NTSTATUS rpc_sh_share_add(TALLOC_CTX *mem_ctx,
return NT_STATUS_INVALID_PARAMETER;
}
- info.info2 = &info2;
- info2.name = argv[0];
- info2.type = STYPE_DISKTREE;
- info2.comment = (argc == 3) ? argv[2] : "";
-
- result = rpccli_srvsvc_NetShareAdd(
- pipe_hnd, mem_ctx, NULL, 2, info, &parm_error);
+ result = rpccli_srvsvc_net_share_add(
+ pipe_hnd, mem_ctx, argv[0], STYPE_DISKTREE,
+ (argc == 3) ? argv[2] : "",
+ 0, 0, 0, argv[1], NULL, 2, NULL);
- return result;
+ return werror_to_ntstatus(result);
}
static NTSTATUS rpc_sh_share_delete(TALLOC_CTX *mem_ctx,
@@ -4728,15 +4807,15 @@ static NTSTATUS rpc_sh_share_delete(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *pipe_hnd,
int argc, const char **argv)
{
- NTSTATUS result;
+ WERROR result;
if (argc != 1) {
d_fprintf(stderr, "usage: %s <share>\n", ctx->whoami);
return NT_STATUS_INVALID_PARAMETER;
}
- result = rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx, NULL, argv[0], 0);
- return result;
+ result = rpccli_srvsvc_net_share_del(pipe_hnd, mem_ctx, argv[0]);
+ return werror_to_ntstatus(result);
}
static NTSTATUS rpc_sh_share_info(TALLOC_CTX *mem_ctx,
@@ -4744,27 +4823,37 @@ static NTSTATUS rpc_sh_share_info(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *pipe_hnd,
int argc, const char **argv)
{
- union srvsvc_NetShareInfo info;
- NTSTATUS result;
+ SRV_SHARE_INFO info;
+ SRV_SHARE_INFO_2 *info2 = &info.share.info2;
+ WERROR result;
if (argc != 1) {
d_fprintf(stderr, "usage: %s <share>\n", ctx->whoami);
return NT_STATUS_INVALID_PARAMETER;
}
- result = rpccli_srvsvc_NetShareGetInfo(
- pipe_hnd, mem_ctx, NULL, argv[0], 2, &info);
- if (!NT_STATUS_IS_OK(result)) {
+ result = rpccli_srvsvc_net_share_get_info(
+ pipe_hnd, mem_ctx, argv[0], 2, &info);
+ if (!W_ERROR_IS_OK(result)) {
goto done;
}
- d_printf("Name: %s\n", info.info2->name);
- d_printf("Comment: %s\n", info.info2->comment);
- d_printf("Path: %s\n", info.info2->path);
- d_printf("Password: %s\n", info.info2->password);
+ d_printf("Name: %s\n",
+ rpcstr_pull_unistr2_talloc(mem_ctx,
+ &info2->info_2_str.uni_netname));
+ d_printf("Comment: %s\n",
+ rpcstr_pull_unistr2_talloc(mem_ctx,
+ &info2->info_2_str.uni_remark));
+
+ d_printf("Path: %s\n",
+ rpcstr_pull_unistr2_talloc(mem_ctx,
+ &info2->info_2_str.uni_path));
+ d_printf("Password: %s\n",
+ rpcstr_pull_unistr2_talloc(mem_ctx,
+ &info2->info_2_str.uni_passwd));
done:
- return result;
+ return werror_to_ntstatus(result);
}
struct rpc_sh_cmd *net_rpc_share_cmds(TALLOC_CTX *mem_ctx,
@@ -4820,9 +4909,9 @@ static NTSTATUS rpc_file_close_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
- NTSTATUS result;
- result = rpccli_srvsvc_NetFileClose(pipe_hnd, mem_ctx, NULL, atoi(argv[0]));
- return NT_STATUS_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+ WERROR result;
+ result = rpccli_srvsvc_net_file_close(pipe_hnd, mem_ctx, atoi(argv[0]));
+ return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
/**
@@ -4853,10 +4942,15 @@ static int rpc_file_close(int argc, const char **argv)
* @param str3 strings for FILE_INFO_3
**/
-static void display_file_info_3( struct srvsvc_NetFileInfo3 *info3 )
+static void display_file_info_3( FILE_INFO_3 *info3 )
{
+ fstring user = "", path = "";
+
+ rpcstr_pull_unistr2_fstring(user, info3->user);
+ rpcstr_pull_unistr2_fstring(path, info3->path);
+
d_printf("%-7.1d %-20.20s 0x%-4.2x %-6.1d %s\n",
- info3->fid, info3->user, info3->permissions, info3->num_locks, info3->path);
+ info3->id, user, info3->perms, info3->num_locks, path);
}
/**
@@ -4883,25 +4977,22 @@ static NTSTATUS rpc_file_list_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
- union srvsvc_NetFileCtr ctr;
- NTSTATUS result;
- uint32 hnd;
+ SRV_FILE_INFO_CTR ctr;
+ WERROR result;
+ ENUM_HND hnd;
uint32 preferred_len = 0xffffffff, i;
const char *username=NULL;
- uint32 level = 3;
- uint32 numentries;
- hnd = 0;
+ init_enum_hnd(&hnd, 0);
/* if argc > 0, must be user command */
if (argc > 0)
username = smb_xstrdup(argv[0]);
- result = rpccli_srvsvc_NetFileEnum(pipe_hnd, mem_ctx, NULL, NULL,
- username, &level, &ctr,
- preferred_len, &numentries, &hnd);
+ result = rpccli_srvsvc_net_file_enum(pipe_hnd,
+ mem_ctx, 3, username, &ctr, preferred_len, &hnd);
- if (!NT_STATUS_IS_OK(result))
+ if (!W_ERROR_IS_OK(result))
goto done;
/* Display results */
@@ -4910,10 +5001,10 @@ static NTSTATUS rpc_file_list_internals(const DOM_SID *domain_sid,
"\nEnumerating open files on remote server:\n\n"\
"\nFileId Opened by Perms Locks Path"\
"\n------ --------- ----- ----- ---- \n");
- for (i = 0; i < numentries; i++)
- display_file_info_3(&ctr.ctr3->array[i]);
+ for (i = 0; i < ctr.num_entries; i++)
+ display_file_info_3(&ctr.file.info3[i]);
done:
- return NT_STATUS_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+ return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
}
/**
@@ -4990,7 +5081,7 @@ static NTSTATUS rpc_shutdown_abort_internals(const DOM_SID *domain_sid,
{
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- result = rpccli_initshutdown_Abort(pipe_hnd, mem_ctx, NULL);
+ result = rpccli_shutdown_abort(pipe_hnd, mem_ctx);
if (NT_STATUS_IS_OK(result)) {
d_printf("\nShutdown successfully aborted\n");
@@ -5027,7 +5118,7 @@ static NTSTATUS rpc_reg_shutdown_abort_internals(const DOM_SID *domain_sid,
{
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- result = rpccli_winreg_AbortSystemShutdown(pipe_hnd, mem_ctx, NULL);
+ result = werror_to_ntstatus(rpccli_reg_abort_shutdown(pipe_hnd, mem_ctx));
if (NT_STATUS_IS_OK(result)) {
d_printf("\nShutdown successfully aborted\n");
@@ -5050,7 +5141,7 @@ static NTSTATUS rpc_reg_shutdown_abort_internals(const DOM_SID *domain_sid,
static int rpc_shutdown_abort(int argc, const char **argv)
{
- int rc = run_rpc_command(NULL, PI_INITSHUTDOWN, 0,
+ int rc = run_rpc_command(NULL, PI_SHUTDOWN, 0,
rpc_shutdown_abort_internals,
argc, argv);
@@ -5091,8 +5182,6 @@ static NTSTATUS rpc_init_shutdown_internals(const DOM_SID *domain_sid,
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
const char *msg = "This machine will be shutdown shortly";
uint32 timeout = 20;
- struct initshutdown_String msg_string;
- struct initshutdown_String_sub s;
if (opt_comment) {
msg = opt_comment;
@@ -5101,12 +5190,9 @@ static NTSTATUS rpc_init_shutdown_internals(const DOM_SID *domain_sid,
timeout = opt_timeout;
}
- s.name = msg;
- msg_string.name = &s;
-
/* create an entry */
- result = rpccli_initshutdown_Init(pipe_hnd, mem_ctx, NULL,
- &msg_string, timeout, opt_force, opt_reboot);
+ result = rpccli_shutdown_init(pipe_hnd, mem_ctx, msg, timeout, opt_reboot,
+ opt_force);
if (NT_STATUS_IS_OK(result)) {
d_printf("\nShutdown of remote machine succeeded\n");
@@ -5141,37 +5227,55 @@ static NTSTATUS rpc_reg_shutdown_internals(const DOM_SID *domain_sid,
int argc,
const char **argv)
{
+ WERROR result;
const char *msg = "This machine will be shutdown shortly";
uint32 timeout = 20;
- struct initshutdown_String msg_string;
- struct initshutdown_String_sub s;
- NTSTATUS result;
+#if 0
+ poptContext pc;
+ int rc;
+
+ struct poptOption long_options[] = {
+ {"message", 'm', POPT_ARG_STRING, &msg},
+ {"timeout", 't', POPT_ARG_INT, &timeout},
+ {"reboot", 'r', POPT_ARG_NONE, &reboot},
+ {"force", 'f', POPT_ARG_NONE, &force},
+ { 0, 0, 0, 0}
+ };
+
+ pc = poptGetContext(NULL, argc, (const char **) argv, long_options,
+ POPT_CONTEXT_KEEP_FIRST);
+ rc = poptGetNextOpt(pc);
+
+ if (rc < -1) {
+ /* an error occurred during option processing */
+ DEBUG(0, ("%s: %s\n",
+ poptBadOption(pc, POPT_BADOPTION_NOALIAS),
+ poptStrerror(rc)));
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+#endif
if (opt_comment) {
msg = opt_comment;
}
- s.name = msg;
- msg_string.name = &s;
-
if (opt_timeout) {
timeout = opt_timeout;
}
/* create an entry */
- result = rpccli_winreg_InitiateSystemShutdown(pipe_hnd, mem_ctx, NULL,
- &msg_string, timeout, opt_force, opt_reboot);
+ result = rpccli_reg_shutdown(pipe_hnd, mem_ctx, msg, timeout, opt_reboot, opt_force);
- if (NT_STATUS_IS_OK(result)) {
+ if (W_ERROR_IS_OK(result)) {
d_printf("\nShutdown of remote machine succeeded\n");
} else {
d_fprintf(stderr, "\nShutdown of remote machine failed\n");
- if ( W_ERROR_EQUAL(ntstatus_to_werror(result),WERR_MACHINE_LOCKED) )
+ if (W_ERROR_EQUAL(result,WERR_MACHINE_LOCKED))
d_fprintf(stderr, "\nMachine locked, use -f switch to force\n");
else
- d_fprintf(stderr, "\nresult was: %s\n", nt_errstr(result));
+ d_fprintf(stderr, "\nresult was: %s\n", dos_errstr(result));
}
- return result;
+ return werror_to_ntstatus(result);
}
/**
@@ -5186,7 +5290,7 @@ static NTSTATUS rpc_reg_shutdown_internals(const DOM_SID *domain_sid,
static int rpc_shutdown(int argc, const char **argv)
{
- int rc = run_rpc_command(NULL, PI_INITSHUTDOWN, 0,
+ int rc = run_rpc_command(NULL, PI_SHUTDOWN, 0,
rpc_init_shutdown_internals,
argc, argv);
@@ -5620,7 +5724,9 @@ static int rpc_trustdom_establish(int argc, const char **argv)
* Store the password in secrets db
*/
- if (!pdb_set_trusteddom_pw(domain_name, opt_password, domain_sid)) {
+ if (!secrets_store_trusted_domain_password(domain_name,
+ opt_password,
+ domain_sid)) {
DEBUG(0, ("Storing password for trusted domain failed.\n"));
cli_shutdown(cli);
talloc_destroy(mem_ctx);
@@ -5631,7 +5737,7 @@ static int rpc_trustdom_establish(int argc, const char **argv)
* Close the pipes and clean up
*/
- nt_status = rpccli_lsa_Close(pipe_hnd, mem_ctx, &connect_hnd);
+ nt_status = rpccli_lsa_close(pipe_hnd, mem_ctx, &connect_hnd);
if (NT_STATUS_IS_ERR(nt_status)) {
DEBUG(0, ("Couldn't close LSA pipe. Error was %s\n",
nt_errstr(nt_status)));
@@ -5660,7 +5766,6 @@ static int rpc_trustdom_establish(int argc, const char **argv)
static int rpc_trustdom_revoke(int argc, const char **argv)
{
char* domain_name;
- int rc = -1;
if (argc < 1) return -1;
@@ -5669,16 +5774,13 @@ static int rpc_trustdom_revoke(int argc, const char **argv)
strupper_m(domain_name);
/* delete password of the trust */
- if (!pdb_del_trusteddom_pw(domain_name)) {
+ if (!trusted_domain_password_delete(domain_name)) {
DEBUG(0, ("Failed to revoke relationship to the trusted domain %s\n",
domain_name));
- goto done;
+ return -1;
};
- rc = 0;
-done:
- SAFE_FREE(domain_name);
- return rc;
+ return 0;
}
/**
@@ -5764,7 +5866,9 @@ static NTSTATUS vampire_trusted_domain(struct rpc_pipe_client *pipe_hnd,
goto done;
}
- if (!pdb_set_trusteddom_pw(trusted_dom_name, cleartextpwd, &dom_sid)) {
+ if (!secrets_store_trusted_domain_password(trusted_dom_name,
+ cleartextpwd,
+ &dom_sid)) {
DEBUG(0, ("Storing password for trusted domain failed.\n"));
nt_status = NT_STATUS_UNSUCCESSFUL;
goto done;
@@ -5902,7 +6006,7 @@ static int rpc_trustdom_vampire(int argc, const char **argv)
} while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES));
/* close this connection before doing next one */
- nt_status = rpccli_lsa_Close(pipe_hnd, mem_ctx, &connect_hnd);
+ nt_status = rpccli_lsa_close(pipe_hnd, mem_ctx, &connect_hnd);
if (NT_STATUS_IS_ERR(nt_status)) {
DEBUG(0, ("Couldn't properly close lsa policy handle. Error was %s\n",
nt_errstr(nt_status)));
@@ -6036,7 +6140,7 @@ static int rpc_trustdom_list(int argc, const char **argv)
} while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES));
/* close this connection before doing next one */
- nt_status = rpccli_lsa_Close(pipe_hnd, mem_ctx, &connect_hnd);
+ nt_status = rpccli_lsa_close(pipe_hnd, mem_ctx, &connect_hnd);
if (NT_STATUS_IS_ERR(nt_status)) {
DEBUG(0, ("Couldn't properly close lsa policy handle. Error was %s\n",
nt_errstr(nt_status)));
diff --git a/source/utils/net_rpc_join.c b/source/utils/net_rpc_join.c
index ba3c6190126..d23bd767519 100644
--- a/source/utils/net_rpc_join.c
+++ b/source/utils/net_rpc_join.c
@@ -193,7 +193,7 @@ int net_rpc_join_newstyle(int argc, const char **argv)
5, &domain, &domain_sid),
"error querying info policy");
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &lsa_pol);
cli_rpc_pipe_close(pipe_hnd); /* Done with this pipe */
/* Bail out if domain didn't get set. */
diff --git a/source/utils/net_rpc_printer.c b/source/utils/net_rpc_printer.c
index 6f9d52ddec9..1f277338521 100644
--- a/source/utils/net_rpc_printer.c
+++ b/source/utils/net_rpc_printer.c
@@ -129,22 +129,18 @@ static void display_reg_value(const char *subkey, REGISTRY_VALUE value)
break;
case REG_MULTI_SZ: {
- uint32 i, num_values;
- char **values;
-
- if (!W_ERROR_IS_OK(reg_pull_multi_sz(NULL, value.data_p,
- value.size, &num_values,
- &values))) {
- d_printf("reg_pull_multi_sz failed\n");
- break;
+ uint16 *curstr = (uint16 *) value.data_p;
+ uint8 *start = value.data_p;
+ d_printf("\t[%s:%s]: REG_MULTI_SZ:\n", subkey, value.valuename);
+ while ((*curstr != 0) &&
+ ((uint8 *) curstr < start + value.size)) {
+ rpcstr_pull(text, curstr, sizeof(text), -1,
+ STR_TERMINATE);
+ d_printf("%s\n", text);
+ curstr += strlen(text) + 1;
}
-
- for (i=0; i<num_values; i++) {
- d_printf("%s\n", values[i]);
- }
- TALLOC_FREE(values);
- break;
}
+ break;
default:
d_printf("\t%s: unknown type %d\n", value.valuename, value.type);
@@ -2170,7 +2166,7 @@ NTSTATUS rpc_printer_migrate_settings_internals(const DOM_SID *domain_sid,
if (ctr_enum.printers_2[i].devmode != NULL) {
/* copy devmode (info level 2) */
- ctr_dst.printers_2->devmode = (DEVICEMODE *)
+ ctr_dst.printers_2->devmode =
TALLOC_MEMDUP(mem_ctx,
ctr_enum.printers_2[i].devmode,
sizeof(DEVICEMODE));
@@ -2332,7 +2328,7 @@ NTSTATUS rpc_printer_migrate_settings_internals(const DOM_SID *domain_sid,
value.type = REG_SZ;
value.size = data.uni_str_len * 2;
if (value.size) {
- value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
+ value.data_p = TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
} else {
value.data_p = NULL;
}
diff --git a/source/utils/net_rpc_registry.c b/source/utils/net_rpc_registry.c
index b439f50ee44..873cb7b4597 100644
--- a/source/utils/net_rpc_registry.c
+++ b/source/utils/net_rpc_registry.c
@@ -1,8 +1,7 @@
/*
Samba Unix/Linux SMB client library
Distributed SMB/CIFS Server Management Utility
-
- Copyright (C) Gerald (Jerry) Carter 2005-2006
+ Copyright (C) Gerald (Jerry) Carter 2005
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,547 +22,63 @@
#include "regfio.h"
#include "reg_objects.h"
-static BOOL reg_hive_key(const char *fullname, uint32 *reg_type,
- const char **key_name)
-{
- const char *sep;
- ptrdiff_t len;
-
- sep = strchr_m(fullname, '\\');
-
- if (sep != NULL) {
- len = sep - fullname;
- *key_name = sep+1;
- }
- else {
- len = strlen(fullname);
- *key_name = "";
- }
-
- if (strnequal(fullname, "HKLM", len) ||
- strnequal(fullname, "HKEY_LOCAL_MACHINE", len))
- (*reg_type) = HKEY_LOCAL_MACHINE;
- else if (strnequal(fullname, "HKCR", len) ||
- strnequal(fullname, "HKEY_CLASSES_ROOT", len))
- (*reg_type) = HKEY_CLASSES_ROOT;
- else if (strnequal(fullname, "HKU", len) ||
- strnequal(fullname, "HKEY_USERS", len))
- (*reg_type) = HKEY_USERS;
- else if (strnequal(fullname, "HKPD", len) ||
- strnequal(fullname, "HKEY_PERFORMANCE_DATA", len))
- (*reg_type) = HKEY_PERFORMANCE_DATA;
- else {
- DEBUG(10,("reg_hive_key: unrecognised hive key %s\n",
- fullname));
- return False;
- }
-
- return True;
-}
-
-static NTSTATUS registry_openkey(TALLOC_CTX *mem_ctx,
- struct rpc_pipe_client *pipe_hnd,
- const char *name, uint32 access_mask,
- struct policy_handle *hive_hnd,
- struct policy_handle *key_hnd)
-{
- uint32 hive;
- NTSTATUS status;
- struct winreg_String key;
-
- if (!reg_hive_key(name, &hive, &key.name)) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- status = rpccli_winreg_Connect(pipe_hnd, mem_ctx, hive, access_mask,
- hive_hnd);
- if (!(NT_STATUS_IS_OK(status))) {
- return status;
- }
-
- status = rpccli_winreg_OpenKey(pipe_hnd, mem_ctx, hive_hnd, key, 0,
- access_mask, key_hnd);
- if (!(NT_STATUS_IS_OK(status))) {
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, hive_hnd);
- return status;
- }
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS registry_enumkeys(TALLOC_CTX *ctx,
- struct rpc_pipe_client *pipe_hnd,
- struct policy_handle *key_hnd,
- uint32 *pnum_keys, char ***pnames,
- char ***pclasses, NTTIME ***pmodtimes)
-{
- TALLOC_CTX *mem_ctx;
- NTSTATUS status;
- uint32 num_subkeys, max_subkeylen, max_classlen;
- uint32 num_values, max_valnamelen, max_valbufsize;
- uint32 i;
- NTTIME last_changed_time;
- uint32 secdescsize;
- struct winreg_String classname;
- char **names, **classes;
- NTTIME **modtimes;
-
- if (!(mem_ctx = talloc_new(ctx))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- ZERO_STRUCT(classname);
- status = rpccli_winreg_QueryInfoKey(
- pipe_hnd, mem_ctx, key_hnd, &classname, &num_subkeys,
- &max_subkeylen, &max_classlen, &num_values, &max_valnamelen,
- &max_valbufsize, &secdescsize, &last_changed_time );
-
- if (!NT_STATUS_IS_OK(status)) {
- goto error;
- }
-
- if (num_subkeys == 0) {
- *pnum_keys = 0;
- TALLOC_FREE(mem_ctx);
- return NT_STATUS_OK;
- }
-
- if ((!(names = TALLOC_ZERO_ARRAY(mem_ctx, char *, num_subkeys))) ||
- (!(classes = TALLOC_ZERO_ARRAY(mem_ctx, char *, num_subkeys))) ||
- (!(modtimes = TALLOC_ZERO_ARRAY(mem_ctx, NTTIME *,
- num_subkeys)))) {
- status = NT_STATUS_NO_MEMORY;
- goto error;
- }
-
- for (i=0; i<num_subkeys; i++) {
- char c, n;
- struct winreg_StringBuf class_buf;
- struct winreg_StringBuf name_buf;
- NTTIME modtime;
-
- c = '\0';
- class_buf.name = &c;
- class_buf.size = max_classlen+2;
-
- n = '\0';
- name_buf.name = &n;
- name_buf.size = max_subkeylen+2;
-
- ZERO_STRUCT(modtime);
-
- status = rpccli_winreg_EnumKey(pipe_hnd, mem_ctx, key_hnd,
- i, &name_buf, &class_buf,
- &modtime);
-
- if (W_ERROR_EQUAL(ntstatus_to_werror(status),
- WERR_NO_MORE_ITEMS) ) {
- status = NT_STATUS_OK;
- break;
- }
- if (!NT_STATUS_IS_OK(status)) {
- goto error;
- }
-
- classes[i] = NULL;
-
- if (class_buf.name &&
- (!(classes[i] = talloc_strdup(classes, class_buf.name)))) {
- status = NT_STATUS_NO_MEMORY;
- goto error;
- }
-
- if (!(names[i] = talloc_strdup(names, name_buf.name))) {
- status = NT_STATUS_NO_MEMORY;
- goto error;
- }
-
- if ((!(modtimes[i] = (NTTIME *)talloc_memdup(
- modtimes, &modtime, sizeof(modtime))))) {
- status = NT_STATUS_NO_MEMORY;
- goto error;
- }
- }
-
- *pnum_keys = num_subkeys;
-
- if (pnames) {
- *pnames = talloc_move(ctx, &names);
- }
- if (pclasses) {
- *pclasses = talloc_move(ctx, &classes);
- }
- if (pmodtimes) {
- *pmodtimes = talloc_move(ctx, &modtimes);
- }
-
- status = NT_STATUS_OK;
-
- error:
- TALLOC_FREE(mem_ctx);
- return status;
-}
-
-static NTSTATUS registry_enumvalues(TALLOC_CTX *ctx,
- struct rpc_pipe_client *pipe_hnd,
- struct policy_handle *key_hnd,
- uint32 *pnum_values, char ***pvalnames,
- struct registry_value ***pvalues)
-{
- TALLOC_CTX *mem_ctx;
- NTSTATUS status;
- uint32 num_subkeys, max_subkeylen, max_classlen;
- uint32 num_values, max_valnamelen, max_valbufsize;
- uint32 i;
- NTTIME last_changed_time;
- uint32 secdescsize;
- struct winreg_String classname;
- struct registry_value **values;
- char **names;
-
- if (!(mem_ctx = talloc_new(ctx))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- ZERO_STRUCT(classname);
- status = rpccli_winreg_QueryInfoKey(
- pipe_hnd, mem_ctx, key_hnd, &classname, &num_subkeys,
- &max_subkeylen, &max_classlen, &num_values, &max_valnamelen,
- &max_valbufsize, &secdescsize, &last_changed_time );
-
- if (!NT_STATUS_IS_OK(status)) {
- goto error;
- }
-
- if (num_values == 0) {
- *pnum_values = 0;
- TALLOC_FREE(mem_ctx);
- return NT_STATUS_OK;
- }
-
- if ((!(names = TALLOC_ARRAY(mem_ctx, char *, num_values))) ||
- (!(values = TALLOC_ARRAY(mem_ctx, struct registry_value *,
- num_values)))) {
- status = NT_STATUS_NO_MEMORY;
- goto error;
- }
-
- for (i=0; i<num_values; i++) {
- enum winreg_Type type = REG_NONE;
- uint8 *data = NULL;
- uint32 data_size;
- uint32 value_length;
-
- char n;
- struct winreg_ValNameBuf name_buf;
- WERROR err;
-
- n = '\0';
- name_buf.name = &n;
- name_buf.size = max_valnamelen + 2;
-
- data_size = max_valbufsize;
- data = (uint8 *)TALLOC(mem_ctx, data_size);
- value_length = 0;
-
- status = rpccli_winreg_EnumValue(pipe_hnd, mem_ctx, key_hnd,
- i, &name_buf, &type,
- data, &data_size,
- &value_length );
-
- if ( W_ERROR_EQUAL(ntstatus_to_werror(status),
- WERR_NO_MORE_ITEMS) ) {
- status = NT_STATUS_OK;
- break;
- }
-
- if (!(NT_STATUS_IS_OK(status))) {
- goto error;
- }
-
- if (name_buf.name == NULL) {
- status = NT_STATUS_INVALID_PARAMETER;
- goto error;
- }
-
- if (!(names[i] = talloc_strdup(names, name_buf.name))) {
- status = NT_STATUS_NO_MEMORY;
- goto error;
- }
-
- err = registry_pull_value(values, &values[i], type, data,
- data_size, value_length);
- if (!W_ERROR_IS_OK(err)) {
- status = werror_to_ntstatus(err);
- goto error;
- }
- }
-
- *pnum_values = num_values;
-
- if (pvalnames) {
- *pvalnames = talloc_move(ctx, &names);
- }
- if (pvalues) {
- *pvalues = talloc_move(ctx, &values);
- }
-
- status = NT_STATUS_OK;
-
- error:
- TALLOC_FREE(mem_ctx);
- return status;
-}
-
-static NTSTATUS registry_setvalue(TALLOC_CTX *mem_ctx,
- struct rpc_pipe_client *pipe_hnd,
- struct policy_handle *key_hnd,
- const char *name,
- const struct registry_value *value)
-{
- struct winreg_String name_string;
- DATA_BLOB blob;
- NTSTATUS result;
- WERROR err;
-
- err = registry_push_value(mem_ctx, value, &blob);
- if (!W_ERROR_IS_OK(err)) {
- return werror_to_ntstatus(err);
- }
-
- name_string.name = name;
- result = rpccli_winreg_SetValue(pipe_hnd, blob.data, key_hnd,
- name_string, value->type,
- blob.data, blob.length);
- TALLOC_FREE(blob.data);
- return result;
-}
-
-static NTSTATUS rpc_registry_setvalue_internal(const DOM_SID *domain_sid,
- const char *domain_name,
- struct cli_state *cli,
- struct rpc_pipe_client *pipe_hnd,
- TALLOC_CTX *mem_ctx,
- int argc,
- const char **argv )
-{
- struct policy_handle hive_hnd, key_hnd;
- NTSTATUS status;
- struct registry_value value;
-
- status = registry_openkey(mem_ctx, pipe_hnd, argv[0], REG_KEY_WRITE,
- &hive_hnd, &key_hnd);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "registry_openkey failed: %s\n",
- nt_errstr(status));
- return status;
- }
-
- if (!strequal(argv[2], "multi_sz") && (argc != 4)) {
- d_fprintf(stderr, "Too many args for type %s\n", argv[2]);
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (strequal(argv[2], "dword")) {
- value.type = REG_DWORD;
- value.v.dword = strtoul(argv[3], NULL, 10);
- }
- else if (strequal(argv[2], "sz")) {
- value.type = REG_SZ;
- value.v.sz.len = strlen(argv[3])+1;
- value.v.sz.str = CONST_DISCARD(char *, argv[3]);
- }
- else {
- d_fprintf(stderr, "type \"%s\" not implemented\n", argv[2]);
- status = NT_STATUS_NOT_IMPLEMENTED;
- goto error;
- }
-
- status = registry_setvalue(mem_ctx, pipe_hnd, &key_hnd,
- argv[1], &value);
-
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "registry_setvalue failed: %s\n",
- nt_errstr(status));
- }
-
- error:
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &key_hnd);
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &hive_hnd);
-
- return NT_STATUS_OK;
-}
-
-static int rpc_registry_setvalue( int argc, const char **argv )
-{
- if (argc < 4) {
- d_fprintf(stderr, "usage: net rpc registry setvalue <key> "
- "<valuename> <type> [<val>]+\n");
- return -1;
- }
-
- return run_rpc_command( NULL, PI_WINREG, 0,
- rpc_registry_setvalue_internal, argc, argv );
-}
-
-static NTSTATUS rpc_registry_deletevalue_internal(const DOM_SID *domain_sid,
- const char *domain_name,
- struct cli_state *cli,
- struct rpc_pipe_client *pipe_hnd,
- TALLOC_CTX *mem_ctx,
- int argc,
- const char **argv )
-{
- struct policy_handle hive_hnd, key_hnd;
- NTSTATUS status;
- struct winreg_String valuename;
-
- status = registry_openkey(mem_ctx, pipe_hnd, argv[0], REG_KEY_WRITE,
- &hive_hnd, &key_hnd);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "registry_openkey failed: %s\n",
- nt_errstr(status));
- return status;
- }
-
- valuename.name = argv[1];
-
- status = rpccli_winreg_DeleteValue(pipe_hnd, mem_ctx, &key_hnd,
- valuename);
-
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "registry_deletevalue failed: %s\n",
- nt_errstr(status));
- }
-
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &key_hnd);
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &hive_hnd);
-
- return NT_STATUS_OK;
-}
-
-static int rpc_registry_deletevalue( int argc, const char **argv )
-{
- if (argc != 2) {
- d_fprintf(stderr, "usage: net rpc registry deletevalue <key> "
- "<valuename>\n");
- return -1;
- }
-
- return run_rpc_command( NULL, PI_WINREG, 0,
- rpc_registry_deletevalue_internal, argc, argv );
-}
-
-static NTSTATUS rpc_registry_createkey_internal(const DOM_SID *domain_sid,
- const char *domain_name,
- struct cli_state *cli,
- struct rpc_pipe_client *pipe_hnd,
- TALLOC_CTX *mem_ctx,
- int argc,
- const char **argv )
-{
- uint32 hive;
- struct policy_handle hive_hnd, key_hnd;
- struct winreg_String key, keyclass;
- enum winreg_CreateAction action;
- NTSTATUS status;
-
- if (!reg_hive_key(argv[0], &hive, &key.name)) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- status = rpccli_winreg_Connect(pipe_hnd, mem_ctx, hive,
- REG_KEY_READ|REG_KEY_WRITE,
- &hive_hnd);
- if (!(NT_STATUS_IS_OK(status))) {
- return status;
- }
-
- action = REG_ACTION_NONE;
- keyclass.name = "";
-
- status = rpccli_winreg_CreateKey(pipe_hnd, mem_ctx, &hive_hnd, key,
- keyclass, 0, REG_KEY_READ, NULL,
- &key_hnd, &action);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "createkey returned %s\n",
- nt_errstr(status));
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &hive_hnd);
- return status;
- }
-
- switch (action) {
- case REG_ACTION_NONE:
- d_printf("createkey did nothing -- huh?\n");
- break;
- case REG_CREATED_NEW_KEY:
- d_printf("createkey created %s\n", argv[0]);
- break;
- case REG_OPENED_EXISTING_KEY:
- d_printf("createkey opened existing %s\n", argv[0]);
- break;
- }
-
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &key_hnd);
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &hive_hnd);
-
- return status;
-}
-
-static int rpc_registry_createkey( int argc, const char **argv )
-{
- if (argc != 1) {
- d_fprintf(stderr, "usage: net rpc registry createkey <key>\n");
- return -1;
- }
-
- return run_rpc_command( NULL, PI_WINREG, 0,
- rpc_registry_createkey_internal, argc, argv );
-}
+/********************************************************************
+********************************************************************/
-static NTSTATUS rpc_registry_deletekey_internal(const DOM_SID *domain_sid,
- const char *domain_name,
- struct cli_state *cli,
- struct rpc_pipe_client *pipe_hnd,
- TALLOC_CTX *mem_ctx,
- int argc,
- const char **argv )
+char* dump_regval_type( uint32 type )
{
- uint32 hive;
- struct policy_handle hive_hnd;
- struct winreg_String key;
- NTSTATUS status;
-
- if (!reg_hive_key(argv[0], &hive, &key.name)) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- status = rpccli_winreg_Connect(pipe_hnd, mem_ctx, hive, REG_KEY_WRITE,
- &hive_hnd);
- if (!(NT_STATUS_IS_OK(status))) {
- return status;
- }
-
- status = rpccli_winreg_DeleteKey(pipe_hnd, mem_ctx, &hive_hnd, key);
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &hive_hnd);
-
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "deletekey returned %s\n",
- nt_errstr(status));
+ static fstring string;
+
+ switch (type) {
+ case REG_SZ:
+ fstrcpy( string, "REG_SZ" );
+ break;
+ case REG_MULTI_SZ:
+ fstrcpy( string, "REG_MULTI_SZ" );
+ break;
+ case REG_EXPAND_SZ:
+ fstrcpy( string, "REG_EXPAND_SZ" );
+ break;
+ case REG_DWORD:
+ fstrcpy( string, "REG_DWORD" );
+ break;
+ case REG_BINARY:
+ fstrcpy( string, "REG_BINARY" );
+ break;
+ default:
+ fstr_sprintf( string, "UNKNOWN [%d]", type );
}
-
- return status;
+
+ return string;
}
+/********************************************************************
+********************************************************************/
-static int rpc_registry_deletekey( int argc, const char **argv )
+void dump_regval_buffer( uint32 type, REGVAL_BUFFER *buffer )
{
- if (argc != 1) {
- d_fprintf(stderr, "usage: net rpc registry deletekey <key>\n");
- return -1;
+ pstring string;
+ uint32 value;
+
+ switch (type) {
+ case REG_SZ:
+ rpcstr_pull( string, buffer->buffer, sizeof(string), -1, STR_TERMINATE );
+ d_printf("%s\n", string);
+ break;
+ case REG_MULTI_SZ:
+ d_printf("\n");
+ break;
+ case REG_DWORD:
+ value = IVAL( buffer->buffer, 0 );
+ d_printf( "0x%x\n", value );
+ break;
+ case REG_BINARY:
+ d_printf("\n");
+ break;
+
+
+ default:
+ d_printf( "\tUnknown type [%d]\n", type );
}
-
- return run_rpc_command( NULL, PI_WINREG, 0,
- rpc_registry_deletekey_internal, argc, argv );
}
/********************************************************************
@@ -577,90 +92,104 @@ static NTSTATUS rpc_registry_enumerate_internal(const DOM_SID *domain_sid,
int argc,
const char **argv )
{
+ WERROR result = WERR_GENERAL_FAILURE;
+ uint32 hive;
+ pstring subpath;
POLICY_HND pol_hive, pol_key;
- NTSTATUS status;
- uint32 num_subkeys = 0;
- uint32 num_values = 0;
- char **names = NULL, **classes = NULL;
- NTTIME **modtimes = NULL;
- uint32 i;
- struct registry_value **values = NULL;
+ uint32 idx;
if (argc != 1 ) {
d_printf("Usage: net rpc enumerate <path> [recurse]\n");
d_printf("Example: net rpc enumerate 'HKLM\\Software\\Samba'\n");
return NT_STATUS_OK;
}
-
- status = registry_openkey(mem_ctx, pipe_hnd, argv[0], REG_KEY_READ,
- &pol_hive, &pol_key);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "registry_openkey failed: %s\n",
- nt_errstr(status));
- return status;
+
+ if ( !reg_split_hive( argv[0], &hive, subpath ) ) {
+ d_fprintf(stderr, "invalid registry path\n");
+ return NT_STATUS_OK;
}
-
- status = registry_enumkeys(mem_ctx, pipe_hnd, &pol_key, &num_subkeys,
- &names, &classes, &modtimes);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "enumerating keys failed: %s\n",
- nt_errstr(status));
- return status;
+
+ /* open the top level hive and then the registry key */
+
+ result = rpccli_reg_connect(pipe_hnd, mem_ctx, hive, MAXIMUM_ALLOWED_ACCESS, &pol_hive );
+ if ( !W_ERROR_IS_OK(result) ) {
+ d_fprintf(stderr, "Unable to connect to remote registry\n");
+ return werror_to_ntstatus(result);
}
-
- for (i=0; i<num_subkeys; i++) {
- d_printf("Keyname = %s\n", names[i]);
- d_printf("Modtime = %s\n", modtimes[i]
- ? http_timestring(nt_time_to_unix(*modtimes[i]))
- : "None");
- d_printf("\n" );
+
+ if ( strlen( subpath ) != 0 ) {
+ result = rpccli_reg_open_entry(pipe_hnd, mem_ctx, &pol_hive, subpath, MAXIMUM_ALLOWED_ACCESS, &pol_key );
+ if ( !W_ERROR_IS_OK(result) ) {
+ d_fprintf(stderr, "Unable to open [%s]\n", argv[0]);
+ return werror_to_ntstatus(result);
+ }
}
+
+ /* get the subkeys */
+
+ result = WERR_OK;
+ idx = 0;
+ while ( W_ERROR_IS_OK(result) ) {
+ time_t modtime;
+ fstring keyname, classname;
+
+ result = rpccli_reg_enum_key(pipe_hnd, mem_ctx, &pol_key, idx,
+ keyname, classname, &modtime );
+
+ if ( W_ERROR_EQUAL(result, WERR_NO_MORE_ITEMS) ) {
+ result = WERR_OK;
+ break;
+ }
+
+ d_printf("Keyname = %s\n", keyname );
+ d_printf("Classname = %s\n", classname );
+ d_printf("Modtime = %s\n", http_timestring(modtime) );
+ d_printf("\n" );
- status = registry_enumvalues(mem_ctx, pipe_hnd, &pol_key, &num_values,
- &names, &values);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "enumerating values failed: %s\n",
- nt_errstr(status));
- return status;
+ idx++;
}
- for (i=0; i<num_values; i++) {
- struct registry_value *v = values[i];
- d_printf("Valuename = %s\n", names[i]);
- d_printf("Type = %s\n",
- reg_type_lookup(v->type));
- switch(v->type) {
- case REG_DWORD:
- d_printf("Value = %d\n", v->v.dword);
- break;
- case REG_SZ:
- case REG_EXPAND_SZ:
- d_printf("Value = \"%s\"\n", v->v.sz.str);
- break;
- case REG_MULTI_SZ: {
- uint32 j;
- for (j = 0; j < v->v.multi_sz.num_strings; j++) {
- d_printf("Value[%3.3d] = \"%s\"\n", j,
- v->v.multi_sz.strings[j]);
- }
- break;
- }
- case REG_BINARY:
- d_printf("Value = %d bytes\n",
- (int)v->v.binary.length);
- break;
- default:
- d_printf("Value = <unprintable>\n");
+ if ( !W_ERROR_IS_OK(result) )
+ goto out;
+
+ /* get the values */
+
+ result = WERR_OK;
+ idx = 0;
+ while ( W_ERROR_IS_OK(result) ) {
+ uint32 type;
+ fstring name;
+ REGVAL_BUFFER value;
+
+ fstrcpy( name, "" );
+ ZERO_STRUCT( value );
+
+ result = rpccli_reg_enum_val(pipe_hnd, mem_ctx, &pol_key, idx,
+ name, &type, &value );
+
+ if ( W_ERROR_EQUAL(result, WERR_NO_MORE_ITEMS) ) {
+ result = WERR_OK;
break;
}
- d_printf("\n");
- }
+ d_printf("Valuename = %s\n", name );
+ d_printf("Type = %s\n", dump_regval_type(type) );
+ d_printf("Data = " );
+ dump_regval_buffer( type, &value );
+ d_printf("\n" );
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &pol_key );
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &pol_hive );
+ idx++;
+ }
+
+
+out:
+ /* cleanup */
+
+ if ( strlen( subpath ) != 0 )
+ rpccli_reg_close(pipe_hnd, mem_ctx, &pol_key );
+ rpccli_reg_close(pipe_hnd, mem_ctx, &pol_hive );
- return status;
+ return werror_to_ntstatus(result);
}
/********************************************************************
@@ -684,35 +213,46 @@ static NTSTATUS rpc_registry_save_internal(const DOM_SID *domain_sid,
const char **argv )
{
WERROR result = WERR_GENERAL_FAILURE;
+ uint32 hive;
+ pstring subpath;
POLICY_HND pol_hive, pol_key;
- NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- struct winreg_String filename;
if (argc != 2 ) {
d_printf("Usage: net rpc backup <path> <file> \n");
return NT_STATUS_OK;
}
- status = registry_openkey(mem_ctx, pipe_hnd, argv[0], REG_KEY_ALL,
- &pol_hive, &pol_key);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "registry_openkey failed: %s\n",
- nt_errstr(status));
- return status;
+ if ( !reg_split_hive( argv[0], &hive, subpath ) ) {
+ d_fprintf(stderr, "invalid registry path\n");
+ return NT_STATUS_OK;
}
-
- filename.name = argv[1];
- status = rpccli_winreg_SaveKey( pipe_hnd, mem_ctx, &pol_key, &filename, NULL );
+
+ /* open the top level hive and then the registry key */
+
+ result = rpccli_reg_connect(pipe_hnd, mem_ctx, hive, MAXIMUM_ALLOWED_ACCESS, &pol_hive );
+ if ( !W_ERROR_IS_OK(result) ) {
+ d_fprintf(stderr, "Unable to connect to remote registry\n");
+ return werror_to_ntstatus(result);
+ }
+
+ result = rpccli_reg_open_entry(pipe_hnd, mem_ctx, &pol_hive, subpath, MAXIMUM_ALLOWED_ACCESS, &pol_key );
+ if ( !W_ERROR_IS_OK(result) ) {
+ d_fprintf(stderr, "Unable to open [%s]\n", argv[0]);
+ return werror_to_ntstatus(result);
+ }
+
+ result = rpccli_reg_save_key(pipe_hnd, mem_ctx, &pol_key, argv[1] );
if ( !W_ERROR_IS_OK(result) ) {
d_fprintf(stderr, "Unable to save [%s] to %s:%s\n", argv[0], cli->desthost, argv[1]);
}
+
/* cleanup */
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &pol_key );
- rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &pol_hive );
+ rpccli_reg_close(pipe_hnd, mem_ctx, &pol_key );
+ rpccli_reg_close(pipe_hnd, mem_ctx, &pol_hive );
- return status;
+ return werror_to_ntstatus(result);
}
/********************************************************************
@@ -739,7 +279,7 @@ static void dump_values( REGF_NK_REC *nk )
for ( i=0; i<nk->num_values; i++ ) {
d_printf( "\"%s\" = ", nk->values[i].valuename ? nk->values[i].valuename : "(default)" );
- d_printf( "(%s) ", reg_type_lookup( nk->values[i].type ) );
+ d_printf( "(%s) ", dump_regval_type( nk->values[i].type ) );
data_size = nk->values[i].data_size & ~VK_DATA_IN_OFFSET;
switch ( nk->values[i].type ) {
@@ -949,27 +489,30 @@ out:
/********************************************************************
********************************************************************/
+static int net_help_registry( int argc, const char **argv )
+{
+ d_printf("net rpc registry enumerate <path> [recurse] Enumerate the subkeya and values for a given registry path\n");
+ d_printf("net rpc registry save <path> <file> Backup a registry tree to a file on the server\n");
+ d_printf("net rpc registry dump <file> Dump the contents of a registry file to stdout\n");
+
+ return -1;
+}
+
+/********************************************************************
+********************************************************************/
+
int net_rpc_registry(int argc, const char **argv)
{
- struct functable2 func[] = {
- { "enumerate", rpc_registry_enumerate,
- "Enumerate registry keys and values" },
- { "createkey", rpc_registry_createkey,
- "Create a new registry key" },
- { "deletekey", rpc_registry_deletekey,
- "Delete a registry key" },
- { "setvalue", rpc_registry_setvalue,
- "Set a new registry value" },
- { "deletevalue", rpc_registry_deletevalue,
- "Delete a registry value" },
- { "save", rpc_registry_save,
- "Save a registry file" },
- { "dump", rpc_registry_dump,
- "Dump a registry file" },
- { "copy", rpc_registry_copy,
- "Copy a registry file" },
- {NULL, NULL, NULL}
+ struct functable func[] = {
+ {"enumerate", rpc_registry_enumerate},
+ {"save", rpc_registry_save},
+ {"dump", rpc_registry_dump},
+ {"copy", rpc_registry_copy},
+ {NULL, NULL}
};
- return net_run_function2(argc, argv, "net rpc registry", func);
+ if ( argc )
+ return net_run_function( argc, argv, func, net_help_registry );
+
+ return net_help_registry( argc, argv );
}
diff --git a/source/utils/net_rpc_rights.c b/source/utils/net_rpc_rights.c
index 4189f20658a..11c4991e7d7 100644
--- a/source/utils/net_rpc_rights.c
+++ b/source/utils/net_rpc_rights.c
@@ -48,7 +48,7 @@ static NTSTATUS sid_to_name(struct rpc_pipe_client *pipe_hnd,
fstrcpy( name, names[0] );
}
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &pol);
return result;
}
@@ -76,12 +76,12 @@ static NTSTATUS name_to_sid(struct rpc_pipe_client *pipe_hnd,
return result;
result = rpccli_lsa_lookup_names(pipe_hnd, mem_ctx, &pol, 1, &name,
- NULL, 1, &sids, &sid_types);
+ NULL, &sids, &sid_types);
if ( NT_STATUS_IS_OK(result) )
sid_copy( sid, &sids[0] );
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &pol);
return result;
}
@@ -391,7 +391,7 @@ static NTSTATUS rpc_rights_list_internal(const DOM_SID *domain_sid,
result = enum_privileges_for_user(pipe_hnd, mem_ctx, &pol, &sid );
done:
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &pol);
return result;
}
@@ -442,7 +442,7 @@ static NTSTATUS rpc_rights_grant_internal(const DOM_SID *domain_sid,
argv[0], nt_errstr(result));
}
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &dom_pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &dom_pol);
return result;
}
@@ -493,7 +493,7 @@ done:
argv[0], nt_errstr(result));
}
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &dom_pol);
+ rpccli_lsa_close(pipe_hnd, mem_ctx, &dom_pol);
return result;
}
diff --git a/source/utils/net_rpc_service.c b/source/utils/net_rpc_service.c
index c0b1fe3515f..58a5b27f400 100644
--- a/source/utils/net_rpc_service.c
+++ b/source/utils/net_rpc_service.c
@@ -49,7 +49,7 @@ static WERROR query_service_state(struct rpc_pipe_client *pipe_hnd,
*state = service_status.state;
}
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hService);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hService );
return result;
}
@@ -131,7 +131,7 @@ static WERROR control_service(struct rpc_pipe_client *pipe_hnd,
d_printf("%s service is %s.\n", service, svc_status_string(state));
done:
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hService);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hService );
return result;
}
@@ -185,7 +185,7 @@ static NTSTATUS rpc_service_list_internal(const DOM_SID *domain_sid,
}
done:
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hSCM);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hSCM );
return werror_to_ntstatus(result);
}
@@ -286,8 +286,8 @@ static NTSTATUS rpc_service_status_internal(const DOM_SID *domain_sid,
}
done:
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hService);
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hSCM);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hService );
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hSCM );
return werror_to_ntstatus(result);
}
@@ -325,7 +325,7 @@ static NTSTATUS rpc_service_stop_internal(const DOM_SID *domain_sid,
result = control_service(pipe_hnd, mem_ctx, &hSCM, servicename,
SVCCTL_CONTROL_STOP, SVCCTL_STOPPED );
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hSCM);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hSCM );
return werror_to_ntstatus(result);
}
@@ -363,7 +363,7 @@ static NTSTATUS rpc_service_pause_internal(const DOM_SID *domain_sid,
result = control_service(pipe_hnd, mem_ctx, &hSCM, servicename,
SVCCTL_CONTROL_PAUSE, SVCCTL_PAUSED );
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hSCM);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hSCM );
return werror_to_ntstatus(result);
}
@@ -401,7 +401,7 @@ static NTSTATUS rpc_service_resume_internal(const DOM_SID *domain_sid,
result = control_service(pipe_hnd, mem_ctx, &hSCM, servicename,
SVCCTL_CONTROL_CONTINUE, SVCCTL_RUNNING );
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hSCM);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hSCM );
return werror_to_ntstatus(result);
}
@@ -463,8 +463,8 @@ static NTSTATUS rpc_service_start_internal(const DOM_SID *domain_sid,
d_fprintf(stderr, "Failed to start service: %s [%s]\n", servicename, dos_errstr(result) );
done:
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hService);
- rpccli_svcctl_CloseServiceHandle(pipe_hnd, mem_ctx, &hSCM);
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hService );
+ rpccli_svcctl_close_service(pipe_hnd, mem_ctx, &hSCM );
return werror_to_ntstatus(result);
}
diff --git a/source/utils/net_sam.c b/source/utils/net_sam.c
index 851c3e86dee..bf397803bc5 100644
--- a/source/utils/net_sam.c
+++ b/source/utils/net_sam.c
@@ -507,61 +507,6 @@ static int net_sam_policy(int argc, const char **argv)
* Map a unix group to a domain group
*/
-static NTSTATUS map_unix_group(const struct group *grp, GROUP_MAP *pmap)
-{
- NTSTATUS status;
- GROUP_MAP map;
- const char *grpname, *dom, *name;
- uint32 rid;
-
- if (pdb_getgrgid(&map, grp->gr_gid)) {
- return NT_STATUS_GROUP_EXISTS;
- }
-
- map.gid = grp->gr_gid;
- grpname = grp->gr_name;
-
- if (lookup_name(tmp_talloc_ctx(), grpname, LOOKUP_NAME_ISOLATED,
- &dom, &name, NULL, NULL)) {
-
- const char *tmp = talloc_asprintf(
- tmp_talloc_ctx(), "Unix Group %s", grp->gr_name);
-
- DEBUG(5, ("%s exists as %s\\%s, retrying as \"%s\"\n",
- grpname, dom, name, tmp));
- grpname = tmp;
- }
-
- if (lookup_name(tmp_talloc_ctx(), grpname, LOOKUP_NAME_ISOLATED,
- NULL, NULL, NULL, NULL)) {
- DEBUG(3, ("\"%s\" exists, can't map it\n", grp->gr_name));
- return NT_STATUS_GROUP_EXISTS;
- }
-
- fstrcpy(map.nt_name, grpname);
-
- if (pdb_rid_algorithm()) {
- rid = algorithmic_pdb_gid_to_group_rid( grp->gr_gid );
- } else {
- if (!pdb_new_rid(&rid)) {
- DEBUG(3, ("Could not get a new RID for %s\n",
- grp->gr_name));
- return NT_STATUS_ACCESS_DENIED;
- }
- }
-
- sid_compose(&map.sid, get_global_sam_sid(), rid);
- map.sid_name_use = SID_NAME_DOM_GRP;
- fstrcpy(map.comment, talloc_asprintf(tmp_talloc_ctx(), "Unix Group %s",
- grp->gr_name));
-
- status = pdb_add_group_mapping_entry(&map);
- if (NT_STATUS_IS_OK(status)) {
- *pmap = map;
- }
- return status;
-}
-
static int net_sam_mapunixgroup(int argc, const char **argv)
{
NTSTATUS status;
@@ -594,67 +539,6 @@ static int net_sam_mapunixgroup(int argc, const char **argv)
}
/*
- * Remove a group mapping
- */
-
-static NTSTATUS unmap_unix_group(const struct group *grp, GROUP_MAP *pmap)
-{
- NTSTATUS status;
- GROUP_MAP map;
- const char *grpname;
- DOM_SID dom_sid;
-
- map.gid = grp->gr_gid;
- grpname = grp->gr_name;
-
- if (!lookup_name(tmp_talloc_ctx(), grpname, LOOKUP_NAME_ISOLATED,
- NULL, NULL, NULL, NULL)) {
- DEBUG(3, ("\"%s\" does not exist, can't unmap it\n", grp->gr_name));
- return NT_STATUS_NO_SUCH_GROUP;
- }
-
- fstrcpy(map.nt_name, grpname);
-
- if (!pdb_gid_to_sid(map.gid, &dom_sid)) {
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- status = pdb_delete_group_mapping_entry(dom_sid);
-
- return status;
-}
-
-static int net_sam_unmapunixgroup(int argc, const char **argv)
-{
- NTSTATUS status;
- GROUP_MAP map;
- struct group *grp;
-
- if (argc != 1) {
- d_fprintf(stderr, "usage: net sam unmapunixgroup <name>\n");
- return -1;
- }
-
- grp = getgrnam(argv[0]);
- if (grp == NULL) {
- d_fprintf(stderr, "Could not find mapping for group %s.\n", argv[0]);
- return -1;
- }
-
- status = unmap_unix_group(grp, &map);
-
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "Unmapping group %s failed with %s.\n",
- argv[0], nt_errstr(status));
- return -1;
- }
-
- d_printf("Unmapped unix group %s.\n", argv[0]);
-
- return 0;
-}
-
-/*
* Create a local group
*/
@@ -688,47 +572,6 @@ static int net_sam_createlocalgroup(int argc, const char **argv)
}
/*
- * Delete a local group
- */
-
-static int net_sam_deletelocalgroup(int argc, const char **argv)
-{
- DOM_SID sid;
- enum lsa_SidType type;
- const char *dom, *name;
- NTSTATUS status;
-
- if (argc != 1) {
- d_fprintf(stderr, "usage: net sam deletelocalgroup <name>\n");
- return -1;
- }
-
- if (!lookup_name(tmp_talloc_ctx(), argv[0], LOOKUP_NAME_ISOLATED,
- &dom, &name, &sid, &type)) {
- d_fprintf(stderr, "Could not find %s.\n", argv[0]);
- return -1;
- }
-
- if (type != SID_NAME_ALIAS) {
- d_fprintf(stderr, "%s is a %s, not a local group.\n", argv[0],
- sid_type_lookup(type));
- return -1;
- }
-
- status = pdb_delete_alias(&sid);
-
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf(stderr, "Deleting local group %s failed with %s\n",
- argv[0], nt_errstr(status));
- return -1;
- }
-
- d_printf("Deleted local group %s.\n", argv[0]);
-
- return 0;
-}
-
-/*
* Create a local group
*/
@@ -958,8 +801,6 @@ static int net_sam_listmem(int argc, const char **argv)
sid_string_static(&members[i]));
}
}
-
- TALLOC_FREE(members);
} else {
d_fprintf(stderr, "Can only list local group members so far.\n"
"%s is a %s\n", argv[0], sid_type_lookup(grouptype));
@@ -1149,7 +990,7 @@ static int net_sam_provision(int argc, const char **argv)
goto failed;
}
- if (!NT_STATUS_IS_OK(smbldap_init(tc, NULL, ldap_uri, &ls))) {
+ if (!NT_STATUS_IS_OK(smbldap_init(tc, ldap_uri, &ls))) {
d_fprintf(stderr, "Unable to connect to the LDAP server.\n");
goto failed;
}
@@ -1500,12 +1341,8 @@ int net_sam(int argc, const char **argv)
"Create a new BUILTIN group" },
{ "createlocalgroup", net_sam_createlocalgroup,
"Create a new local group" },
- { "deletelocalgroup", net_sam_deletelocalgroup,
- "Delete an existing local group" },
{ "mapunixgroup", net_sam_mapunixgroup,
"Map a unix group to a domain group" },
- { "unmapunixgroup", net_sam_unmapunixgroup,
- "Remove a group mapping of an unix group to a domain group" },
{ "addmem", net_sam_addmem,
"Add a member to a group" },
{ "delmem", net_sam_delmem,
diff --git a/source/utils/net_status.c b/source/utils/net_status.c
index 80fba51b37a..354111f6092 100644
--- a/source/utils/net_status.c
+++ b/source/utils/net_status.c
@@ -31,18 +31,18 @@ static int show_session(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
memcpy(&sessionid, dbuf.dptr, sizeof(sessionid));
- if (!process_exists(sessionid.pid)) {
+ if (!process_exists_by_pid(sessionid.pid)) {
return 0;
}
if (*parseable) {
- d_printf("%s\\%s\\%s\\%s\\%s\n",
- procid_str_static(&sessionid.pid), uidtoname(sessionid.uid),
+ d_printf("%d\\%s\\%s\\%s\\%s\n",
+ (int)sessionid.pid, uidtoname(sessionid.uid),
gidtoname(sessionid.gid),
sessionid.remote_machine, sessionid.hostname);
} else {
- d_printf("%7s %-12s %-12s %-12s (%s)\n",
- procid_str_static(&sessionid.pid), uidtoname(sessionid.uid),
+ d_printf("%5d %-12s %-12s %-12s (%s)\n",
+ (int)sessionid.pid, uidtoname(sessionid.uid),
gidtoname(sessionid.gid),
sessionid.remote_machine, sessionid.hostname);
}
@@ -84,22 +84,27 @@ static int net_status_sessions(int argc, const char **argv)
return 0;
}
-static int show_share(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
+static int show_share(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
void *state)
{
- if (crec->cnum == -1)
+ struct connections_data crec;
+
+ if (dbuf.dsize != sizeof(crec))
return 0;
- if (!process_exists(crec->pid)) {
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum == -1)
+ return 0;
+
+ if (!process_exists(crec.pid)) {
return 0;
}
d_printf("%-10.10s %s %-12s %s",
- crec->servicename, procid_str_static(&crec->pid),
- crec->machine,
- time_to_asc(crec->start));
+ crec.servicename,procid_str_static(&crec.pid),
+ crec.machine,
+ time_to_asc(crec.start));
return 0;
}
@@ -120,7 +125,7 @@ static int collect_pid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
memcpy(&sessionid, dbuf.dptr, sizeof(sessionid));
- if (!process_exists(sessionid.pid))
+ if (!process_exists_by_pid(sessionid.pid))
return 0;
ids->num_entries += 1;
@@ -134,37 +139,41 @@ static int collect_pid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
return 0;
}
-static int show_share_parseable(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
+static int show_share_parseable(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
void *state)
{
struct sessionids *ids = (struct sessionids *)state;
+ struct connections_data crec;
int i;
BOOL guest = True;
- if (crec->cnum == -1)
+ if (dbuf.dsize != sizeof(crec))
+ return 0;
+
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum == -1)
return 0;
- if (!process_exists(crec->pid)) {
+ if (!process_exists(crec.pid)) {
return 0;
}
for (i=0; i<ids->num_entries; i++) {
- struct server_id id = ids->entries[i].pid;
- if (procid_equal(&id, &crec->pid)) {
+ struct process_id id = pid_to_procid(ids->entries[i].pid);
+ if (procid_equal(&id, &crec.pid)) {
guest = False;
break;
}
}
d_printf("%s\\%s\\%s\\%s\\%s\\%s\\%s",
- crec->servicename,procid_str_static(&crec->pid),
+ crec.servicename,procid_str_static(&crec.pid),
guest ? "" : uidtoname(ids->entries[i].uid),
guest ? "" : gidtoname(ids->entries[i].gid),
- crec->machine,
+ crec.machine,
guest ? "" : ids->entries[i].hostname,
- time_to_asc(crec->start));
+ time_to_asc(crec.start));
return 0;
}
@@ -188,7 +197,18 @@ static int net_status_shares_parseable(int argc, const char **argv)
tdb_traverse(tdb, collect_pid, &ids);
tdb_close(tdb);
- connections_forall(show_share_parseable, &ids);
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0,
+ TDB_DEFAULT, O_RDONLY, 0);
+
+ if (tdb == NULL) {
+ d_fprintf(stderr, "%s not initialised\n", lock_path("connections.tdb"));
+ d_fprintf(stderr, "This is normal if no SMB client has ever "
+ "connected to your server.\n");
+ return -1;
+ }
+
+ tdb_traverse(tdb, show_share_parseable, &ids);
+ tdb_close(tdb);
SAFE_FREE(ids.entries);
@@ -197,6 +217,8 @@ static int net_status_shares_parseable(int argc, const char **argv)
static int net_status_shares(int argc, const char **argv)
{
+ TDB_CONTEXT *tdb;
+
if (argc == 0) {
d_printf("\nService pid machine "
@@ -204,7 +226,19 @@ static int net_status_shares(int argc, const char **argv)
d_printf("-------------------------------------"
"------------------\n");
- connections_forall(show_share, NULL);
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0,
+ TDB_DEFAULT, O_RDONLY, 0);
+
+ if (tdb == NULL) {
+ d_fprintf(stderr, "%s not initialised\n",
+ lock_path("connections.tdb"));
+ d_fprintf(stderr, "This is normal if no SMB client has "
+ "ever connected to your server.\n");
+ return -1;
+ }
+
+ tdb_traverse(tdb, show_share, NULL);
+ tdb_close(tdb);
return 0;
}
diff --git a/source/utils/net_util.c b/source/utils/net_util.c
index be12b0f8661..be39a754656 100644
--- a/source/utils/net_util.c
+++ b/source/utils/net_util.c
@@ -59,7 +59,7 @@ NTSTATUS net_rpc_lookup_name(TALLOC_CTX *mem_ctx, struct cli_state *cli,
}
result = rpccli_lsa_lookup_names(lsa_pipe, mem_ctx, &pol, 1,
- &name, &dom_names, 1, &sids, &types);
+ &name, &dom_names, &sids, &types);
if (!NT_STATUS_IS_OK(result)) {
/* This can happen easily, don't log an error */
@@ -81,7 +81,7 @@ NTSTATUS net_rpc_lookup_name(TALLOC_CTX *mem_ctx, struct cli_state *cli,
done:
if (is_valid_policy_hnd(&pol)) {
- rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
+ rpccli_lsa_close(lsa_pipe, mem_ctx, &pol);
}
cli_rpc_pipe_close(lsa_pipe);
diff --git a/source/utils/netlookup.c b/source/utils/netlookup.c
index 82e1b8af801..33b6c4bb257 100644
--- a/source/utils/netlookup.c
+++ b/source/utils/netlookup.c
@@ -206,8 +206,8 @@ NTSTATUS net_lookup_sid_from_name(TALLOC_CTX *ctx, const char *full_name, DOM_SI
&csp->pol,
1,
&full_name,
- NULL, 1,
- &sids, &types);
+ NULL, &sids,
+ &types);
if (!NT_STATUS_IS_OK(nt_status)) {
return nt_status;
diff --git a/source/utils/ntlm_auth.c b/source/utils/ntlm_auth.c
index a2b41660b58..1f0a915574d 100644
--- a/source/utils/ntlm_auth.c
+++ b/source/utils/ntlm_auth.c
@@ -704,7 +704,7 @@ static void manage_squid_ntlmssp_request(enum stdio_helper_mode stdio_helper_mod
}
request = base64_decode_data_blob(buf + 3);
} else {
- request = data_blob_null;
+ request = data_blob(NULL, 0);
}
if ((strncmp(buf, "PW ", 3) == 0)) {
@@ -761,7 +761,7 @@ static void manage_squid_ntlmssp_request(enum stdio_helper_mode stdio_helper_mod
}
DEBUG(10, ("got NTLMSSP packet:\n"));
- dump_data(10, request.data, request.length);
+ dump_data(10, (const char *)request.data, request.length);
nt_status = ntlmssp_update(ntlmssp_state, request, &reply);
@@ -832,7 +832,7 @@ static void manage_client_ntlmssp_request(enum stdio_helper_mode stdio_helper_mo
}
request = base64_decode_data_blob(buf + 3);
} else {
- request = data_blob_null;
+ request = data_blob(NULL, 0);
}
if (strncmp(buf, "PW ", 3) == 0) {
@@ -854,7 +854,7 @@ static void manage_client_ntlmssp_request(enum stdio_helper_mode stdio_helper_mo
if (!ntlmssp_state && use_cached_creds) {
/* check whether credentials are usable. */
- DATA_BLOB empty_blob = data_blob_null;
+ DATA_BLOB empty_blob = data_blob(NULL, 0);
nt_status = do_ccache_ntlm_auth(empty_blob, empty_blob, NULL);
if (!NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
@@ -910,11 +910,11 @@ static void manage_client_ntlmssp_request(enum stdio_helper_mode stdio_helper_mo
}
ntlmssp_want_feature_list(ntlmssp_state, want_feature_list);
first = True;
- initial_message = data_blob_null;
+ initial_message = data_blob(NULL, 0);
}
DEBUG(10, ("got NTLMSSP packet:\n"));
- dump_data(10, request.data, request.length);
+ dump_data(10, (const char *)request.data, request.length);
if (use_cached_creds && !opt_password && !first) {
nt_status = do_ccache_ntlm_auth(initial_message, request, &reply);
@@ -1135,12 +1135,12 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode,
}
DEBUG(10, ("got NTLMSSP packet:\n"));
- dump_data(10, request.negTokenInit.mechToken.data,
+ dump_data(10, (const char *)request.negTokenInit.mechToken.data,
request.negTokenInit.mechToken.length);
response.type = SPNEGO_NEG_TOKEN_TARG;
response.negTokenTarg.supportedMech = SMB_STRDUP(OID_NTLMSSP);
- response.negTokenTarg.mechListMIC = data_blob_null;
+ response.negTokenTarg.mechListMIC = data_blob(NULL, 0);
status = ntlmssp_update(ntlmssp_state,
request.negTokenInit.mechToken,
@@ -1163,13 +1163,13 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode,
response.type = SPNEGO_NEG_TOKEN_TARG;
response.negTokenTarg.supportedMech = SMB_STRDUP(OID_KERBEROS5_OLD);
- response.negTokenTarg.mechListMIC = data_blob_null;
- response.negTokenTarg.responseToken = data_blob_null;
+ response.negTokenTarg.mechListMIC = data_blob(NULL, 0);
+ response.negTokenTarg.responseToken = data_blob(NULL, 0);
status = ads_verify_ticket(mem_ctx, lp_realm(), 0,
&request.negTokenInit.mechToken,
&principal, NULL, &ap_rep,
- &session_key, True);
+ &session_key);
talloc_destroy(mem_ctx);
@@ -1222,7 +1222,7 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode,
response.type = SPNEGO_NEG_TOKEN_TARG;
response.negTokenTarg.supportedMech = SMB_STRDUP(OID_NTLMSSP);
- response.negTokenTarg.mechListMIC = data_blob_null;
+ response.negTokenTarg.mechListMIC = data_blob(NULL, 0);
if (NT_STATUS_IS_OK(status)) {
user = SMB_STRDUP(ntlmssp_state->user);
@@ -1276,7 +1276,7 @@ static NTLMSSP_STATE *client_ntlmssp_state = NULL;
static BOOL manage_client_ntlmssp_init(SPNEGO_DATA spnego)
{
NTSTATUS status;
- DATA_BLOB null_blob = data_blob_null;
+ DATA_BLOB null_blob = data_blob(NULL, 0);
DATA_BLOB to_server;
char *to_server_base64;
const char *my_mechs[] = {OID_NTLMSSP, NULL};
@@ -1337,7 +1337,7 @@ static BOOL manage_client_ntlmssp_init(SPNEGO_DATA spnego)
static void manage_client_ntlmssp_targ(SPNEGO_DATA spnego)
{
NTSTATUS status;
- DATA_BLOB null_blob = data_blob_null;
+ DATA_BLOB null_blob = data_blob(NULL, 0);
DATA_BLOB request;
DATA_BLOB to_server;
char *to_server_base64;
@@ -1398,7 +1398,7 @@ static BOOL manage_client_krb5_init(SPNEGO_DATA spnego)
{
char *principal;
DATA_BLOB tkt, to_server;
- DATA_BLOB session_key_krb5 = data_blob_null;
+ DATA_BLOB session_key_krb5 = data_blob(NULL, 0);
SPNEGO_DATA reply;
char *reply_base64;
int retval;
@@ -1462,7 +1462,7 @@ static BOOL manage_client_krb5_init(SPNEGO_DATA spnego)
reply.negTokenInit.mechTypes = my_mechs;
reply.negTokenInit.reqFlags = 0;
reply.negTokenInit.mechToken = tkt;
- reply.negTokenInit.mechListMIC = data_blob_null;
+ reply.negTokenInit.mechListMIC = data_blob(NULL, 0);
len = write_spnego_data(&to_server, &reply);
data_blob_free(&tkt);
@@ -1751,9 +1751,9 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
}
}
/* clear out the state */
- challenge = data_blob_null;
- nt_response = data_blob_null;
- lm_response = data_blob_null;
+ challenge = data_blob(NULL, 0);
+ nt_response = data_blob(NULL, 0);
+ lm_response = data_blob(NULL, 0);
SAFE_FREE(full_username);
SAFE_FREE(username);
SAFE_FREE(domain);
@@ -1800,7 +1800,7 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
x_fprintf(x_stdout, "Error: hex decode of %s failed! (got %d bytes, expected 8)\n.\n",
parameter,
(int)challenge.length);
- challenge = data_blob_null;
+ challenge = data_blob(NULL, 0);
}
} else if (strequal(request, "NT-Response")) {
nt_response = strhex_to_data_blob(NULL, parameter);
@@ -1808,7 +1808,7 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
x_fprintf(x_stdout, "Error: hex decode of %s failed! (only got %d bytes, needed at least 24)\n.\n",
parameter,
(int)nt_response.length);
- nt_response = data_blob_null;
+ nt_response = data_blob(NULL, 0);
}
} else if (strequal(request, "LANMAN-Response")) {
lm_response = strhex_to_data_blob(NULL, parameter);
@@ -1816,7 +1816,7 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
x_fprintf(x_stdout, "Error: hex decode of %s failed! (got %d bytes, expected 24)\n.\n",
parameter,
(int)lm_response.length);
- lm_response = data_blob_null;
+ lm_response = data_blob(NULL, 0);
}
} else if (strequal(request, "Password")) {
plaintext_password = smb_xstrdup(parameter);
@@ -1950,10 +1950,10 @@ static void manage_ntlm_change_password_1_request(enum stdio_helper_mode helper_
SAFE_FREE(error_string);
}
/* clear out the state */
- new_nt_pswd = data_blob_null;
- old_nt_hash_enc = data_blob_null;
- new_lm_pswd = data_blob_null;
- old_nt_hash_enc = data_blob_null;
+ new_nt_pswd = data_blob(NULL, 0);
+ old_nt_hash_enc = data_blob(NULL, 0);
+ new_lm_pswd = data_blob(NULL, 0);
+ old_nt_hash_enc = data_blob(NULL, 0);
SAFE_FREE(full_username);
SAFE_FREE(username);
SAFE_FREE(domain);
@@ -1999,7 +1999,7 @@ static void manage_ntlm_change_password_1_request(enum stdio_helper_mode helper_
"(got %d bytes, expected 516)\n.\n",
parameter,
(int)new_nt_pswd.length);
- new_nt_pswd = data_blob_null;
+ new_nt_pswd = data_blob(NULL, 0);
}
} else if (strequal(request, "old-nt-hash-blob")) {
old_nt_hash_enc = strhex_to_data_blob(NULL, parameter);
@@ -2008,7 +2008,7 @@ static void manage_ntlm_change_password_1_request(enum stdio_helper_mode helper_
"(got %d bytes, expected 16)\n.\n",
parameter,
(int)old_nt_hash_enc.length);
- old_nt_hash_enc = data_blob_null;
+ old_nt_hash_enc = data_blob(NULL, 0);
}
} else if (strequal(request, "new-lm-password-blob")) {
new_lm_pswd = strhex_to_data_blob(NULL, parameter);
@@ -2017,7 +2017,7 @@ static void manage_ntlm_change_password_1_request(enum stdio_helper_mode helper_
"(got %d bytes, expected 516)\n.\n",
parameter,
(int)new_lm_pswd.length);
- new_lm_pswd = data_blob_null;
+ new_lm_pswd = data_blob(NULL, 0);
}
}
else if (strequal(request, "old-lm-hash-blob")) {
@@ -2028,7 +2028,7 @@ static void manage_ntlm_change_password_1_request(enum stdio_helper_mode helper_
"(got %d bytes, expected 16)\n.\n",
parameter,
(int)old_lm_hash_enc.length);
- old_lm_hash_enc = data_blob_null;
+ old_lm_hash_enc = data_blob(NULL, 0);
}
} else if (strequal(request, "nt-domain")) {
domain = smb_xstrdup(parameter);
diff --git a/source/utils/ntlm_auth_diagnostics.c b/source/utils/ntlm_auth_diagnostics.c
index a4e0d6b1ba9..f7997de711e 100644
--- a/source/utils/ntlm_auth_diagnostics.c
+++ b/source/utils/ntlm_auth_diagnostics.c
@@ -116,9 +116,9 @@ static BOOL test_lm_ntlm_broken(enum ntlm_break break_which)
sizeof(lm_key)) != 0) {
DEBUG(1, ("LM Key does not match expectations!\n"));
DEBUG(1, ("lm_key:\n"));
- dump_data(1, lm_key, 8);
+ dump_data(1, (const char *)lm_key, 8);
DEBUG(1, ("expected:\n"));
- dump_data(1, lm_hash, 8);
+ dump_data(1, (const char *)lm_hash, 8);
pass = False;
}
@@ -127,9 +127,9 @@ static BOOL test_lm_ntlm_broken(enum ntlm_break break_which)
8) != 0) {
DEBUG(1, ("NT Session Key does not match expectations (should be LM hash)!\n"));
DEBUG(1, ("user_session_key:\n"));
- dump_data(1, user_session_key, sizeof(user_session_key));
+ dump_data(1, (const char *)user_session_key, sizeof(user_session_key));
DEBUG(1, ("expected:\n"));
- dump_data(1, lm_hash, sizeof(lm_hash));
+ dump_data(1, (const char *)lm_hash, sizeof(lm_hash));
pass = False;
}
} else {
@@ -137,9 +137,9 @@ static BOOL test_lm_ntlm_broken(enum ntlm_break break_which)
sizeof(user_session_key)) != 0) {
DEBUG(1, ("NT Session Key does not match expectations!\n"));
DEBUG(1, ("user_session_key:\n"));
- dump_data(1, user_session_key, 16);
+ dump_data(1, (const char *)user_session_key, 16);
DEBUG(1, ("expected:\n"));
- dump_data(1, session_key.data, session_key.length);
+ dump_data(1, (const char *)session_key.data, session_key.length);
pass = False;
}
}
@@ -215,17 +215,17 @@ static BOOL test_ntlm_in_lm(void)
sizeof(lm_key)) != 0) {
DEBUG(1, ("LM Key does not match expectations!\n"));
DEBUG(1, ("lm_key:\n"));
- dump_data(1, lm_key, 8);
+ dump_data(1, (const char *)lm_key, 8);
DEBUG(1, ("expected:\n"));
- dump_data(1, lm_hash, 8);
+ dump_data(1, (const char *)lm_hash, 8);
pass = False;
}
if (memcmp(lm_hash, user_session_key, 8) != 0) {
DEBUG(1, ("Session Key (first 8 lm hash) does not match expectations!\n"));
DEBUG(1, ("user_session_key:\n"));
- dump_data(1, user_session_key, 16);
+ dump_data(1, (const char *)user_session_key, 16);
DEBUG(1, ("expected:\n"));
- dump_data(1, lm_hash, 8);
+ dump_data(1, (const char *)lm_hash, 8);
pass = False;
}
return pass;
@@ -243,10 +243,10 @@ static BOOL test_ntlm_in_both(void)
DATA_BLOB nt_response = data_blob(NULL, 24);
DATA_BLOB session_key = data_blob(NULL, 16);
- uint8 lm_key[8];
- uint8 lm_hash[16];
- uint8 user_session_key[16];
- uint8 nt_hash[16];
+ char lm_key[8];
+ char lm_hash[16];
+ char user_session_key[16];
+ char nt_hash[16];
DATA_BLOB chall = get_challenge();
char *error_string;
@@ -257,10 +257,10 @@ static BOOL test_ntlm_in_both(void)
flags |= WBFLAG_PAM_USER_SESSION_KEY;
SMBNTencrypt(opt_password,chall.data,nt_response.data);
- E_md4hash(opt_password, nt_hash);
- SMBsesskeygen_ntv1(nt_hash, NULL, session_key.data);
+ E_md4hash(opt_password, (unsigned char *)nt_hash);
+ SMBsesskeygen_ntv1((const unsigned char *)nt_hash, NULL, session_key.data);
- E_deshash(opt_password, lm_hash);
+ E_deshash(opt_password, (unsigned char *)lm_hash);
nt_status = contact_winbind_auth_crap(opt_username, opt_domain,
opt_workstation,
@@ -268,8 +268,8 @@ static BOOL test_ntlm_in_both(void)
&nt_response,
&nt_response,
flags,
- lm_key,
- user_session_key,
+ (unsigned char *)lm_key,
+ (unsigned char *)user_session_key,
&error_string, NULL);
data_blob_free(&nt_response);
@@ -297,7 +297,7 @@ static BOOL test_ntlm_in_both(void)
DEBUG(1, ("user_session_key:\n"));
dump_data(1, user_session_key, 16);
DEBUG(1, ("expected:\n"));
- dump_data(1, session_key.data, session_key.length);
+ dump_data(1, (const char *)session_key.data, session_key.length);
pass = False;
}
@@ -314,9 +314,9 @@ static BOOL test_lmv2_ntlmv2_broken(enum ntlm_break break_which)
BOOL pass = True;
NTSTATUS nt_status;
uint32 flags = 0;
- DATA_BLOB ntlmv2_response = data_blob_null;
- DATA_BLOB lmv2_response = data_blob_null;
- DATA_BLOB ntlmv2_session_key = data_blob_null;
+ DATA_BLOB ntlmv2_response = data_blob(NULL, 0);
+ DATA_BLOB lmv2_response = data_blob(NULL, 0);
+ DATA_BLOB ntlmv2_session_key = data_blob(NULL, 0);
DATA_BLOB names_blob = NTLMv2_generate_names_blob(get_winbind_netbios_name(), get_winbind_domain());
uchar user_session_key[16];
@@ -378,9 +378,9 @@ static BOOL test_lmv2_ntlmv2_broken(enum ntlm_break break_which)
sizeof(user_session_key)) != 0) {
DEBUG(1, ("USER (NTLMv2) Session Key does not match expectations!\n"));
DEBUG(1, ("user_session_key:\n"));
- dump_data(1, user_session_key, 16);
+ dump_data(1, (const char *)user_session_key, 16);
DEBUG(1, ("expected:\n"));
- dump_data(1, ntlmv2_session_key.data, ntlmv2_session_key.length);
+ dump_data(1, (const char *)ntlmv2_session_key.data, ntlmv2_session_key.length);
pass = False;
}
return pass;
@@ -442,8 +442,8 @@ static BOOL test_plaintext(enum ntlm_break break_which)
{
NTSTATUS nt_status;
uint32 flags = 0;
- DATA_BLOB nt_response = data_blob_null;
- DATA_BLOB lm_response = data_blob_null;
+ DATA_BLOB nt_response = data_blob(NULL, 0);
+ DATA_BLOB lm_response = data_blob(NULL, 0);
char *password;
smb_ucs2_t *nt_response_ucs2;
diff --git a/source/utils/pdbedit.c b/source/utils/pdbedit.c
index 5dff7e5a93f..82e5934165a 100644
--- a/source/utils/pdbedit.c
+++ b/source/utils/pdbedit.c
@@ -758,7 +758,6 @@ int main (int argc, char **argv)
static char *pwd_time_format = NULL;
static BOOL pw_from_stdin = False;
struct pdb_methods *bin, *bout, *bdef;
- char *configfile = NULL;
poptContext pc;
struct poptOption long_options[] = {
POPT_AUTOHELP
@@ -816,9 +815,6 @@ int main (int argc, char **argv)
case 'C':
account_policy_value_set = True;
break;
- case 's':
- configfile = optarg;
- break;
}
}
@@ -827,13 +823,12 @@ int main (int argc, char **argv)
if (user_name == NULL)
user_name = poptGetArg(pc);
- if (!lp_load(configfile?configfile:dyn_CONFIGFILE,
- True,False,False,True)) {
+ if (!lp_load(dyn_CONFIGFILE,True,False,False,True)) {
fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE);
exit(1);
}
- if(!initialize_password_db(False, NULL))
+ if(!initialize_password_db(False))
exit(1);
if (!init_names())
diff --git a/source/utils/smbcacls.c b/source/utils/smbcacls.c
index 4a742510900..82cae037207 100644
--- a/source/utils/smbcacls.c
+++ b/source/utils/smbcacls.c
@@ -145,7 +145,7 @@ static BOOL StringToSid(DOM_SID *sid, const char *str)
if (!cacls_open_policy_hnd() ||
!NT_STATUS_IS_OK(rpccli_lsa_lookup_names(global_pipe_hnd, global_hack_cli->mem_ctx,
- &pol, 1, &str, NULL, 1, &sids,
+ &pol, 1, &str, NULL, &sids,
&types))) {
result = False;
goto done;
@@ -381,7 +381,7 @@ static SEC_DESC *sec_desc_parse(char *str)
fstring tok;
SEC_DESC *ret = NULL;
size_t sd_size;
- DOM_SID *grp_sid=NULL, *owner_sid=NULL;
+ DOM_SID *group_sid=NULL, *owner_sid=NULL;
SEC_ACL *dacl=NULL;
int revision=1;
@@ -407,13 +407,13 @@ static SEC_DESC *sec_desc_parse(char *str)
}
if (strncmp(tok,"GROUP:", 6) == 0) {
- if (grp_sid) {
+ if (group_sid) {
printf("Only specify group once\n");
goto done;
}
- grp_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
- if (!grp_sid ||
- !StringToSid(grp_sid, tok+6)) {
+ group_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
+ if (!group_sid ||
+ !StringToSid(group_sid, tok+6)) {
printf("Failed to parse group sid\n");
goto done;
}
@@ -436,11 +436,11 @@ static SEC_DESC *sec_desc_parse(char *str)
goto done;
}
- ret = make_sec_desc(ctx,revision, SEC_DESC_SELF_RELATIVE, owner_sid, grp_sid,
+ ret = make_sec_desc(ctx,revision, SEC_DESC_SELF_RELATIVE, owner_sid, group_sid,
NULL, dacl, &sd_size);
done:
- SAFE_FREE(grp_sid);
+ SAFE_FREE(group_sid);
SAFE_FREE(owner_sid);
return ret;
@@ -738,7 +738,7 @@ static int cacl_set(struct cli_state *cli, char *filename,
and W2K. JRA.
*/
- sd = make_sec_desc(ctx,old->revision, old->type, old->owner_sid, old->grp_sid,
+ sd = make_sec_desc(ctx,old->revision, old->type, old->owner_sid, old->group_sid,
NULL, old->dacl, &sd_size);
fnum = cli_nt_create(cli, filename, WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS);
@@ -902,8 +902,11 @@ static struct cli_state *connect_one(const char *share)
fstrcpy(server,path+2);
share = strchr_m(server,'\\');
if (!share) {
- printf("Invalid argument: %s\n", share);
- return -1;
+ share = strchr_m(server,'/');
+ if (!share) {
+ printf("Invalid argument: %s\n", share);
+ return -1;
+ }
}
*share = 0;
diff --git a/source/utils/smbcontrol.c b/source/utils/smbcontrol.c
index 83ccce7057f..060079a5735 100644
--- a/source/utils/smbcontrol.c
+++ b/source/utils/smbcontrol.c
@@ -47,29 +47,42 @@ static int num_replies; /* Used by message callback fns */
/* Send a message to a destination pid. Zero means broadcast smbd. */
-static BOOL send_message(struct messaging_context *msg_ctx,
- struct server_id pid, int msg_type,
- const void *buf, int len)
+static BOOL send_message(struct process_id pid, int msg_type,
+ const void *buf, int len,
+ BOOL duplicates)
{
+ TDB_CONTEXT *tdb;
BOOL ret;
int n_sent = 0;
+ if (!message_init())
+ return False;
+
if (procid_to_pid(&pid) != 0)
- return NT_STATUS_IS_OK(
- messaging_send_buf(msg_ctx, pid, msg_type,
- (uint8 *)buf, len));
+ return NT_STATUS_IS_OK(message_send_pid(pid, msg_type, buf, len,
+ duplicates));
- ret = message_send_all(msg_ctx, msg_type, buf, len, &n_sent);
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0,
+ TDB_DEFAULT, O_RDWR, 0);
+ if (!tdb) {
+ fprintf(stderr,"Failed to open connections database"
+ ": %s\n", strerror(errno));
+ return False;
+ }
+
+ ret = message_send_all(tdb,msg_type, buf, len, duplicates,
+ &n_sent);
DEBUG(10,("smbcontrol/send_message: broadcast message to "
"%d processes\n", n_sent));
+ tdb_close(tdb);
+
return ret;
}
/* Wait for one or more reply messages */
-static void wait_replies(struct messaging_context *msg_ctx,
- BOOL multiple_replies)
+static void wait_replies(BOOL multiple_replies)
{
time_t start_time = time(NULL);
@@ -77,8 +90,7 @@ static void wait_replies(struct messaging_context *msg_ctx,
busy-wait here as there is no nicer way to do it. */
do {
- message_dispatch(msg_ctx);
- event_loop_once(messaging_event_context(msg_ctx));
+ message_dispatch();
if (num_replies > 0 && !multiple_replies)
break;
sleep(1);
@@ -87,33 +99,26 @@ static void wait_replies(struct messaging_context *msg_ctx,
/* Message handler callback that displays the PID and a string on stdout */
-static void print_pid_string_cb(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id pid,
- DATA_BLOB *data)
+static void print_pid_string_cb(int msg_type, struct process_id pid, void *buf,
+ size_t len, void *private_data)
{
printf("PID %u: %.*s", (unsigned int)procid_to_pid(&pid),
- (int)data->length, (const char *)data->data);
+ (int)len, (const char *)buf);
num_replies++;
}
/* Message handler callback that displays a string on stdout */
-static void print_string_cb(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id pid,
- DATA_BLOB *data)
+static void print_string_cb(int msg_type, struct process_id pid,
+ void *buf, size_t len, void *private_data)
{
- printf("%.*s", (int)data->length, (const char *)data->data);
+ printf("%.*s", (int)len, (const char *)buf);
num_replies++;
}
/* Send no message. Useful for testing. */
-static BOOL do_noop(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_noop(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -128,8 +133,7 @@ static BOOL do_noop(struct messaging_context *msg_ctx,
/* Send a debug string */
-static BOOL do_debug(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_debug(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 2) {
@@ -138,8 +142,8 @@ static BOOL do_debug(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_DEBUG, argv[1],
- strlen(argv[1]) + 1);
+ return send_message(
+ pid, MSG_DEBUG, argv[1], strlen(argv[1]) + 1, False);
}
#if defined(HAVE_LIBUNWIND_PTRACE) && defined(HAVE_LINUX_PTRACE)
@@ -243,18 +247,21 @@ cleanup:
ptrace(PTRACE_DETACH, pid, NULL, NULL);
}
-static int stack_trace_connection(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
- void *priv)
+static int stack_trace_connection(TDB_CONTEXT * tdb, TDB_DATA key,
+ TDB_DATA data, void * priv)
{
- print_stack_trace(procid_to_pid(&conn->pid), (int *)priv);
+ struct connections_data conn;
+
+ if (data.dsize != sizeof(conn))
+ return 0;
+
+ memcpy(&conn, data.dptr, sizeof(conn));
+ print_stack_trace(procid_to_pid(&conn.pid), (int *)priv);
return 0;
}
-static BOOL do_daemon_stack_trace(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_daemon_stack_trace(const struct process_id pid,
const int argc, const char **argv)
{
fprintf(stderr,
@@ -279,7 +286,19 @@ static BOOL do_daemon_stack_trace(struct messaging_context *msg_ctx,
*/
print_stack_trace(dest, &count);
} else {
- connections_forall(stack_trace_connection, &count);
+ TDB_CONTEXT * tdb;
+
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0,
+ TDB_DEFAULT, O_RDONLY, 0);
+ if (!tdb) {
+ fprintf(stderr,
+ "Failed to open connections database: %s\n",
+ strerror(errno));
+ return False;
+ }
+
+ tdb_traverse(tdb, stack_trace_connection, &count);
+ tdb_close(tdb);
}
return True;
@@ -287,8 +306,7 @@ static BOOL do_daemon_stack_trace(struct messaging_context *msg_ctx,
#else /* defined(HAVE_LIBUNWIND_PTRACE) && defined(HAVE_LINUX_PTRACE) */
-static BOOL do_daemon_stack_trace(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_daemon_stack_trace(const struct process_id pid,
const int argc, const char **argv)
{
fprintf(stderr,
@@ -300,8 +318,7 @@ static BOOL do_daemon_stack_trace(struct messaging_context *msg_ctx,
/* Inject a fault (fatal signal) into a running smbd */
-static BOOL do_inject_fault(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_inject_fault(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 2) {
@@ -334,16 +351,15 @@ static BOOL do_inject_fault(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_SMB_INJECT_FAULT,
- &sig, sizeof(int));
+ return send_message(pid, MSG_SMB_INJECT_FAULT,
+ &sig, sizeof(int), False);
}
#endif /* DEVELOPER */
}
/* Force a browser election */
-static BOOL do_election(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_election(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -351,16 +367,14 @@ static BOOL do_election(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_FORCE_ELECTION, NULL, 0);
+ return send_message(
+ pid, MSG_FORCE_ELECTION, NULL, 0, False);
}
/* Ping a samba daemon process */
-static void pong_cb(struct messaging_context *msg,
- void *private_data,
- uint32_t msg_type,
- struct server_id pid,
- DATA_BLOB *data)
+static void pong_cb(int msg_type, struct process_id pid, void *buf,
+ size_t len, void *private_data)
{
char *src_string = procid_str(NULL, &pid);
printf("PONG from pid %s\n", src_string);
@@ -368,9 +382,7 @@ static void pong_cb(struct messaging_context *msg,
num_replies++;
}
-static BOOL do_ping(struct messaging_context *msg_ctx,
- const struct server_id pid,
- const int argc, const char **argv)
+static BOOL do_ping(const struct process_id pid, const int argc, const char **argv)
{
if (argc != 1) {
fprintf(stderr, "Usage: smbcontrol <dest> ping\n");
@@ -379,27 +391,26 @@ static BOOL do_ping(struct messaging_context *msg_ctx,
/* Send a message and register our interest in a reply */
- if (!send_message(msg_ctx, pid, MSG_PING, NULL, 0))
+ if (!send_message(pid, MSG_PING, NULL, 0, False))
return False;
- messaging_register(msg_ctx, NULL, MSG_PONG, pong_cb);
+ message_register(MSG_PONG, pong_cb, NULL);
- wait_replies(msg_ctx, procid_to_pid(&pid) == 0);
+ wait_replies(procid_to_pid(&pid) == 0);
/* No replies were received within the timeout period */
if (num_replies == 0)
printf("No replies received\n");
- messaging_deregister(msg_ctx, MSG_PONG, NULL);
+ message_deregister(MSG_PONG);
return num_replies;
}
/* Set profiling options */
-static BOOL do_profile(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_profile(const struct process_id pid,
const int argc, const char **argv)
{
int v;
@@ -423,29 +434,26 @@ static BOOL do_profile(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_PROFILE, &v, sizeof(int));
+ return send_message(pid, MSG_PROFILE, &v, sizeof(int), False);
}
/* Return the profiling level */
-static void profilelevel_cb(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id pid,
- DATA_BLOB *data)
+static void profilelevel_cb(int msg_type, struct process_id pid, void *buf,
+ size_t len, void *private_data)
{
int level;
const char *s;
num_replies++;
- if (data->length != sizeof(int)) {
+ if (len != sizeof(int)) {
fprintf(stderr, "invalid message length %ld returned\n",
- (unsigned long)data->length);
+ (unsigned long)len);
return;
}
- memcpy(&level, data->data, sizeof(int));
+ memcpy(&level, buf, sizeof(int));
switch (level) {
case 0:
@@ -468,21 +476,17 @@ static void profilelevel_cb(struct messaging_context *msg_ctx,
printf("Profiling %s on pid %u\n",s,(unsigned int)procid_to_pid(&pid));
}
-static void profilelevel_rqst(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id pid,
- DATA_BLOB *data)
+static void profilelevel_rqst(int msg_type, struct process_id pid,
+ void *buf, size_t len, void *private_data)
{
int v = 0;
/* Send back a dummy reply */
- send_message(msg_ctx, pid, MSG_PROFILELEVEL, &v, sizeof(int));
+ send_message(pid, MSG_PROFILELEVEL, &v, sizeof(int), False);
}
-static BOOL do_profilelevel(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_profilelevel(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -492,29 +496,27 @@ static BOOL do_profilelevel(struct messaging_context *msg_ctx,
/* Send a message and register our interest in a reply */
- if (!send_message(msg_ctx, pid, MSG_REQ_PROFILELEVEL, NULL, 0))
+ if (!send_message(pid, MSG_REQ_PROFILELEVEL, NULL, 0, False))
return False;
- messaging_register(msg_ctx, NULL, MSG_PROFILELEVEL, profilelevel_cb);
- messaging_register(msg_ctx, NULL, MSG_REQ_PROFILELEVEL,
- profilelevel_rqst);
+ message_register(MSG_PROFILELEVEL, profilelevel_cb, NULL);
+ message_register(MSG_REQ_PROFILELEVEL, profilelevel_rqst, NULL);
- wait_replies(msg_ctx, procid_to_pid(&pid) == 0);
+ wait_replies(procid_to_pid(&pid) == 0);
/* No replies were received within the timeout period */
if (num_replies == 0)
printf("No replies received\n");
- messaging_deregister(msg_ctx, MSG_PROFILE, NULL);
+ message_deregister(MSG_PROFILE);
return num_replies;
}
/* Display debug level settings */
-static BOOL do_debuglevel(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_debuglevel(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -524,27 +526,26 @@ static BOOL do_debuglevel(struct messaging_context *msg_ctx,
/* Send a message and register our interest in a reply */
- if (!send_message(msg_ctx, pid, MSG_REQ_DEBUGLEVEL, NULL, 0))
+ if (!send_message(pid, MSG_REQ_DEBUGLEVEL, NULL, 0, False))
return False;
- messaging_register(msg_ctx, NULL, MSG_DEBUGLEVEL, print_pid_string_cb);
+ message_register(MSG_DEBUGLEVEL, print_pid_string_cb, NULL);
- wait_replies(msg_ctx, procid_to_pid(&pid) == 0);
+ wait_replies(procid_to_pid(&pid) == 0);
/* No replies were received within the timeout period */
if (num_replies == 0)
printf("No replies received\n");
- messaging_deregister(msg_ctx, MSG_DEBUGLEVEL, NULL);
+ message_deregister(MSG_DEBUGLEVEL);
return num_replies;
}
/* Send a print notify message */
-static BOOL do_printnotify(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_printnotify(const struct process_id pid,
const int argc, const char **argv)
{
const char *cmd;
@@ -678,14 +679,13 @@ static BOOL do_printnotify(struct messaging_context *msg_ctx,
return False;
send:
- print_notify_send_messages(msg_ctx, 0);
+ print_notify_send_messages(0);
return True;
}
/* Close a share */
-static BOOL do_closeshare(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_closeshare(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 2) {
@@ -694,42 +694,13 @@ static BOOL do_closeshare(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_SMB_FORCE_TDIS, argv[1],
- strlen(argv[1]) + 1);
-}
-
-/* force a blocking lock retry */
-
-static BOOL do_lockretry(struct messaging_context *msg_ctx,
- const struct server_id pid,
- const int argc, const char **argv)
-{
- if (argc != 1) {
- fprintf(stderr, "Usage: smbcontrol <dest> lockretry\n");
- return False;
- }
-
- return send_message(msg_ctx, pid, MSG_SMB_UNLOCK, NULL, 0);
-}
-
-/* force a validation of all brl entries, including re-sends. */
-
-static BOOL do_brl_revalidate(struct messaging_context *msg_ctx,
- const struct server_id pid,
- const int argc, const char **argv)
-{
- if (argc != 1) {
- fprintf(stderr, "Usage: smbcontrol <dest> brl-revalidate\n");
- return False;
- }
-
- return send_message(msg_ctx, pid, MSG_SMB_BRL_VALIDATE, NULL, 0);
+ return send_message(
+ pid, MSG_SMB_FORCE_TDIS, argv[1], strlen(argv[1]) + 1, False);
}
/* Force a SAM synchronisation */
-static BOOL do_samsync(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_samsync(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -737,13 +708,13 @@ static BOOL do_samsync(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_SMB_SAM_SYNC, NULL, 0);
+ return send_message(
+ pid, MSG_SMB_SAM_SYNC, NULL, 0, False);
}
/* Force a SAM replication */
-static BOOL do_samrepl(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_samrepl(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -751,13 +722,13 @@ static BOOL do_samrepl(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_SMB_SAM_REPL, NULL, 0);
+ return send_message(
+ pid, MSG_SMB_SAM_REPL, NULL, 0, False);
}
/* Display talloc pool usage */
-static BOOL do_poolusage(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_poolusage(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -765,29 +736,28 @@ static BOOL do_poolusage(struct messaging_context *msg_ctx,
return False;
}
- messaging_register(msg_ctx, NULL, MSG_POOL_USAGE, print_string_cb);
+ message_register(MSG_POOL_USAGE, print_string_cb, NULL);
/* Send a message and register our interest in a reply */
- if (!send_message(msg_ctx, pid, MSG_REQ_POOL_USAGE, NULL, 0))
+ if (!send_message(pid, MSG_REQ_POOL_USAGE, NULL, 0, False))
return False;
- wait_replies(msg_ctx, procid_to_pid(&pid) == 0);
+ wait_replies(procid_to_pid(&pid) == 0);
/* No replies were received within the timeout period */
if (num_replies == 0)
printf("No replies received\n");
- messaging_deregister(msg_ctx, MSG_POOL_USAGE, NULL);
+ message_deregister(MSG_POOL_USAGE);
return num_replies;
}
/* Perform a dmalloc mark */
-static BOOL do_dmalloc_mark(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_dmalloc_mark(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -795,13 +765,13 @@ static BOOL do_dmalloc_mark(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_REQ_DMALLOC_MARK, NULL, 0);
+ return send_message(
+ pid, MSG_REQ_DMALLOC_MARK, NULL, 0, False);
}
/* Perform a dmalloc changed */
-static BOOL do_dmalloc_changed(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_dmalloc_changed(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -810,14 +780,13 @@ static BOOL do_dmalloc_changed(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_REQ_DMALLOC_LOG_CHANGED,
- NULL, 0);
+ return send_message(
+ pid, MSG_REQ_DMALLOC_LOG_CHANGED, NULL, 0, False);
}
/* Shutdown a server process */
-static BOOL do_shutdown(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_shutdown(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -825,13 +794,12 @@ static BOOL do_shutdown(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_SHUTDOWN, NULL, 0);
+ return send_message(pid, MSG_SHUTDOWN, NULL, 0, False);
}
/* Notify a driver upgrade */
-static BOOL do_drvupgrade(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_drvupgrade(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 2) {
@@ -840,12 +808,11 @@ static BOOL do_drvupgrade(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_DEBUG, argv[1],
- strlen(argv[1]) + 1);
+ return send_message(
+ pid, MSG_DEBUG, argv[1], strlen(argv[1]) + 1, False);
}
-static BOOL do_winbind_online(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_winbind_online(const struct process_id pid,
const int argc, const char **argv)
{
TDB_CONTEXT *tdb;
@@ -875,11 +842,10 @@ static BOOL do_winbind_online(struct messaging_context *msg_ctx,
tdb_delete_bystring(tdb, "WINBINDD_OFFLINE");
tdb_close(tdb);
- return send_message(msg_ctx, pid, MSG_WINBIND_ONLINE, NULL, 0);
+ return send_message(pid, MSG_WINBIND_ONLINE, NULL, 0, False);
}
-static BOOL do_winbind_offline(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_winbind_offline(const struct process_id pid,
const int argc, const char **argv)
{
TDB_CONTEXT *tdb;
@@ -921,7 +887,7 @@ static BOOL do_winbind_offline(struct messaging_context *msg_ctx,
for (retry = 0; retry < 5; retry++) {
TDB_DATA d;
- uint8 buf[4];
+ char buf[4];
ZERO_STRUCT(d);
@@ -931,8 +897,7 @@ static BOOL do_winbind_offline(struct messaging_context *msg_ctx,
tdb_store_bystring(tdb, "WINBINDD_OFFLINE", d, TDB_INSERT);
- ret = send_message(msg_ctx, pid, MSG_WINBIND_OFFLINE,
- NULL, 0);
+ ret = send_message(pid, MSG_WINBIND_OFFLINE, NULL, 0, False);
/* Check that the entry "WINBINDD_OFFLINE" still exists. */
d = tdb_fetch_bystring( tdb, "WINBINDD_OFFLINE" );
@@ -950,11 +915,10 @@ static BOOL do_winbind_offline(struct messaging_context *msg_ctx,
return ret;
}
-static BOOL do_winbind_onlinestatus(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_winbind_onlinestatus(const struct process_id pid,
const int argc, const char **argv)
{
- struct server_id myid;
+ struct process_id myid;
myid = pid_to_procid(sys_getpid());
@@ -963,44 +927,25 @@ static BOOL do_winbind_onlinestatus(struct messaging_context *msg_ctx,
return False;
}
- messaging_register(msg_ctx, NULL, MSG_WINBIND_ONLINESTATUS,
- print_pid_string_cb);
+ message_register(MSG_WINBIND_ONLINESTATUS, print_pid_string_cb, NULL);
- if (!send_message(msg_ctx, pid, MSG_WINBIND_ONLINESTATUS, &myid,
- sizeof(myid)))
+ if (!send_message(pid, MSG_WINBIND_ONLINESTATUS, &myid, sizeof(myid), False))
return False;
- wait_replies(msg_ctx, procid_to_pid(&pid) == 0);
+ wait_replies(procid_to_pid(&pid) == 0);
/* No replies were received within the timeout period */
if (num_replies == 0)
printf("No replies received\n");
- messaging_deregister(msg_ctx, MSG_WINBIND_ONLINESTATUS, NULL);
+ message_deregister(MSG_WINBIND_ONLINESTATUS);
return num_replies;
}
-static BOOL do_dump_event_list(struct messaging_context *msg_ctx,
- const struct server_id pid,
- const int argc, const char **argv)
-{
- struct server_id myid;
-
- myid = pid_to_procid(sys_getpid());
-
- if (argc != 1) {
- fprintf(stderr, "Usage: smbcontrol <dest> dump-event-list\n");
- return False;
- }
-
- return send_message(msg_ctx, pid, MSG_DUMP_EVENT_LIST, NULL, 0);
-}
-
-static BOOL do_reload_config(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_reload_config(const struct process_id pid,
const int argc, const char **argv)
{
if (argc != 1) {
@@ -1008,7 +953,7 @@ static BOOL do_reload_config(struct messaging_context *msg_ctx,
return False;
}
- return send_message(msg_ctx, pid, MSG_SMB_CONF_UPDATED, NULL, 0);
+ return send_message(pid, MSG_SMB_CONF_UPDATED, NULL, 0, False);
}
static void my_make_nmb_name( struct nmb_name *n, const char *name, int type)
@@ -1022,8 +967,7 @@ static void my_make_nmb_name( struct nmb_name *n, const char *name, int type)
push_ascii(n->scope, global_scope(), 64, STR_TERMINATE);
}
-static BOOL do_nodestatus(struct messaging_context *msg_ctx,
- const struct server_id pid,
+static BOOL do_nodestatus(const struct process_id pid,
const int argc, const char **argv)
{
struct packet_struct p;
@@ -1056,15 +1000,14 @@ static BOOL do_nodestatus(struct messaging_context *msg_ctx,
p.packet.nmb.question.question_type = 0x21;
p.packet.nmb.question.question_class = 0x1;
- return send_message(msg_ctx, pid, MSG_SEND_PACKET, &p, sizeof(p));
+ return send_message(pid, MSG_SEND_PACKET, &p, sizeof(p), False);
}
/* A list of message type supported */
static const struct {
const char *name; /* Option name */
- BOOL (*fn)(struct messaging_context *msg_ctx,
- const struct server_id pid,
+ BOOL (*fn)(const struct process_id pid,
const int argc, const char **argv);
const char *help; /* Short help text */
} msg_types[] = {
@@ -1081,8 +1024,6 @@ static const struct {
{ "debuglevel", do_debuglevel, "Display current debuglevels" },
{ "printnotify", do_printnotify, "Send a print notify message" },
{ "close-share", do_closeshare, "Forcibly disconnect a share" },
- { "lockretry", do_lockretry, "Force a blocking lock retry" },
- { "brl-revalidate", do_brl_revalidate, "Revalidate all brl entries" },
{ "samsync", do_samsync, "Initiate SAM synchronisation" },
{ "samrepl", do_samrepl, "Initiate SAM replication" },
{ "pool-usage", do_poolusage, "Display talloc memory usage" },
@@ -1095,18 +1036,17 @@ static const struct {
{ "online", do_winbind_online, "Ask winbind to go into online state"},
{ "offline", do_winbind_offline, "Ask winbind to go into offline state"},
{ "onlinestatus", do_winbind_onlinestatus, "Request winbind online status"},
- { "dump-event-list", do_dump_event_list, "Dump event list"},
{ "noop", do_noop, "Do nothing" },
{ NULL }
};
/* Display usage information */
-static void usage(poptContext pc)
+static void usage(poptContext *pc)
{
int i;
- poptPrintHelp(pc, stderr, 0);
+ poptPrintHelp(*pc, stderr, 0);
fprintf(stderr, "\n");
fprintf(stderr, "<destination> is one of \"nmbd\", \"smbd\", \"winbindd\" or a "
@@ -1126,9 +1066,9 @@ static void usage(poptContext pc)
/* Return the pid number for a string destination */
-static struct server_id parse_dest(const char *dest)
+static struct process_id parse_dest(const char *dest)
{
- struct server_id result = {-1};
+ struct process_id result = {-1};
pid_t pid;
/* Zero is a special return value for broadcast smbd */
@@ -1173,11 +1113,10 @@ static struct server_id parse_dest(const char *dest)
/* Execute smbcontrol command */
-static BOOL do_command(struct messaging_context *msg_ctx,
- int argc, const char **argv)
+static BOOL do_command(int argc, const char **argv)
{
const char *dest = argv[0], *command = argv[1];
- struct server_id pid;
+ struct process_id pid;
int i;
/* Check destination */
@@ -1191,8 +1130,7 @@ static BOOL do_command(struct messaging_context *msg_ctx,
for (i = 0; msg_types[i].name; i++) {
if (strequal(command, msg_types[i].name))
- return msg_types[i].fn(msg_ctx, pid,
- argc - 1, argv + 1);
+ return msg_types[i].fn(pid, argc - 1, argv + 1);
}
fprintf(stderr, "smbcontrol: unknown command '%s'\n", command);
@@ -1200,42 +1138,15 @@ static BOOL do_command(struct messaging_context *msg_ctx,
return False;
}
-static void smbcontrol_help(poptContext pc,
- enum poptCallbackReason preason,
- struct poptOption * poption,
- const char * parg,
- void * pdata)
-{
- if (poption->shortName != '?') {
- poptPrintUsage(pc, stdout, 0);
- } else {
- usage(pc);
- }
-
- exit(0);
-}
-
-struct poptOption help_options[] = {
- { NULL, '\0', POPT_ARG_CALLBACK, (void *)&smbcontrol_help, '\0',
- NULL, NULL },
- { "help", '?', 0, NULL, '?', "Show this help message", NULL },
- { "usage", '\0', 0, NULL, 'u', "Display brief usage message", NULL },
- { NULL }
-} ;
-
/* Main program */
int main(int argc, const char **argv)
{
poptContext pc;
int opt;
- struct event_context *evt_ctx;
- struct messaging_context *msg_ctx;
static struct poptOption long_options[] = {
- /* POPT_AUTOHELP */
- { NULL, '\0', POPT_ARG_INCLUDE_TABLE, help_options,
- 0, "Help options:", NULL },
+ POPT_AUTOHELP
{ "timeout", 't', POPT_ARG_INT, &timeout, 't',
"Set timeout value in seconds", "TIMEOUT" },
@@ -1256,7 +1167,7 @@ int main(int argc, const char **argv)
"<parameters>");
if (argc == 1)
- usage(pc);
+ usage(&pc);
while ((opt = poptGetNextOpt(pc)) != -1) {
switch(opt) {
@@ -1280,7 +1191,7 @@ int main(int argc, const char **argv)
}
if (argc == 1)
- usage(pc);
+ usage(&pc);
lp_load(dyn_CONFIGFILE,False,False,False,True);
@@ -1288,11 +1199,5 @@ int main(int argc, const char **argv)
* routines mostly return True==1 for success, but
* shell needs 0. */
- if (!(evt_ctx = event_context_init(NULL)) ||
- !(msg_ctx = messaging_init(NULL, server_id_self(), evt_ctx))) {
- fprintf(stderr, "could not init messaging context\n");
- exit(1);
- }
-
- return !do_command(msg_ctx, argc, argv);
+ return !do_command(argc, argv);
}
diff --git a/source/utils/smbcquotas.c b/source/utils/smbcquotas.c
index bf05441c21e..40f4a86f96b 100644
--- a/source/utils/smbcquotas.c
+++ b/source/utils/smbcquotas.c
@@ -116,7 +116,7 @@ static BOOL StringToSid(DOM_SID *sid, const char *str)
if (!cli_open_policy_hnd() ||
!NT_STATUS_IS_OK(rpccli_lsa_lookup_names(global_pipe_hnd, cli_ipc->mem_ctx,
- &pol, 1, &str, NULL, 1, &sids,
+ &pol, 1, &str, NULL, &sids,
&types))) {
result = False;
goto done;
@@ -500,8 +500,11 @@ FSQFLAGS:QUOTA_ENABLED/DENY_DISK/LOG_SOFTLIMIT/LOG_HARD_LIMIT", "SETSTRING" },
pstrcpy(server,path+2);
share = strchr_m(server,'\\');
if (!share) {
- printf("Invalid argument: %s\n", share);
- exit(EXIT_PARSE_ERROR);
+ share = strchr_m(server,'/');
+ if (!share) {
+ printf("Invalid argument: %s\n", share);
+ exit(EXIT_PARSE_ERROR);
+ }
}
*share = 0;
diff --git a/source/utils/smbpasswd.c b/source/utils/smbpasswd.c
index 92179567812..74606624412 100644
--- a/source/utils/smbpasswd.c
+++ b/source/utils/smbpasswd.c
@@ -305,7 +305,7 @@ static int process_root(int local_flags)
}
/* Ensure passdb startup(). */
- if(!initialize_password_db(False, NULL)) {
+ if(!initialize_password_db(False)) {
DEBUG(0, ("Failed to open passdb!\n"));
exit(1);
}
diff --git a/source/utils/smbtree.c b/source/utils/smbtree.c
index 31ed7635654..d9cd446f6cb 100644
--- a/source/utils/smbtree.c
+++ b/source/utils/smbtree.c
@@ -134,12 +134,10 @@ static BOOL get_rpc_shares(struct cli_state *cli,
NTSTATUS status;
struct rpc_pipe_client *pipe_hnd;
TALLOC_CTX *mem_ctx;
- uint32 enum_hnd;
- struct srvsvc_NetShareCtr1 ctr1;
- union srvsvc_NetShareCtr ctr;
- uint32 numentries;
+ ENUM_HND enum_hnd;
+ WERROR werr;
+ SRV_SHARE_INFO_CTR ctr;
int i;
- uint32 info_level = 1;
mem_ctx = talloc_new(NULL);
if (mem_ctx == NULL) {
@@ -147,7 +145,8 @@ static BOOL get_rpc_shares(struct cli_state *cli,
return False;
}
- enum_hnd = 0;
+ init_enum_hnd(&enum_hnd, 0);
+
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &status);
if (pipe_hnd == NULL) {
@@ -157,24 +156,23 @@ static BOOL get_rpc_shares(struct cli_state *cli,
return False;
}
- ZERO_STRUCT(ctr1);
- level = 1;
- ctr.ctr1 = &ctr1;
-
- status = rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, NULL,
- &info_level, &ctr,
- 0xffffffff, &numentries,
- &enum_hnd);
+ werr = rpccli_srvsvc_net_share_enum(pipe_hnd, mem_ctx, 1, &ctr,
+ 0xffffffff, &enum_hnd);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!W_ERROR_IS_OK(werr)) {
TALLOC_FREE(mem_ctx);
cli_rpc_pipe_close(pipe_hnd);
return False;
}
- for (i=0; i<numentries; i++) {
- fn(ctr.ctr1->array[i].name, ctr.ctr1->array[i].type,
- ctr.ctr1->array[i].comment, state);
+ for (i=0; i<ctr.num_entries; i++) {
+ SRV_SHARE_INFO_1 *info = &ctr.share.info1[i];
+ char *name, *comment;
+ name = rpcstr_pull_unistr2_talloc(
+ mem_ctx, &info->info_1_str.uni_netname);
+ comment = rpcstr_pull_unistr2_talloc(
+ mem_ctx, &info->info_1_str.uni_remark);
+ fn(name, info->info_1.type, comment, state);
}
TALLOC_FREE(mem_ctx);
diff --git a/source/utils/status.c b/source/utils/status.c
index d6e408e52ea..df742f73e79 100644
--- a/source/utils/status.c
+++ b/source/utils/status.c
@@ -35,7 +35,7 @@
#define SMB_MAXPIDS 2048
static uid_t Ucrit_uid = 0; /* added by OH */
-static struct server_id Ucrit_pid[SMB_MAXPIDS]; /* Ugly !!! */ /* added by OH */
+static pid_t Ucrit_pid[SMB_MAXPIDS]; /* Ugly !!! */ /* added by OH */
static int Ucrit_MaxPid=0; /* added by OH */
static unsigned int Ucrit_IsActive = 0; /* added by OH */
@@ -69,7 +69,7 @@ static unsigned int Ucrit_checkUid(uid_t uid)
return 0;
}
-static unsigned int Ucrit_checkPid(struct server_id pid)
+static unsigned int Ucrit_checkPid(pid_t pid)
{
int i;
@@ -77,14 +77,14 @@ static unsigned int Ucrit_checkPid(struct server_id pid)
return 1;
for (i=0;i<Ucrit_MaxPid;i++) {
- if (cluster_id_equal(&pid, &Ucrit_pid[i]))
+ if( pid == Ucrit_pid[i] )
return 1;
}
return 0;
}
-static BOOL Ucrit_addPid( struct server_id pid )
+static BOOL Ucrit_addPid( pid_t pid )
{
if ( !Ucrit_IsActive )
return True;
@@ -119,7 +119,7 @@ static void print_share_mode(const struct share_mode_entry *e,
}
count++;
- if (Ucrit_checkPid(e->pid)) {
+ if (Ucrit_checkPid(procid_to_pid(&e->pid))) {
d_printf("%-11s ",procid_str_static(&e->pid));
d_printf("%-9u ", (unsigned int)e->uid);
switch (map_share_mode_to_deny_mode(e->share_access,
@@ -166,27 +166,15 @@ static void print_share_mode(const struct share_mode_entry *e,
}
}
-static void print_brl(struct file_id id,
- struct server_id pid,
+static void print_brl(SMB_DEV_T dev,
+ SMB_INO_T ino,
+ struct process_id pid,
enum brl_type lock_type,
enum brl_flavour lock_flav,
br_off start,
- br_off size,
- void *private_data)
+ br_off size)
{
static int count;
- int i;
- static const struct {
- enum brl_type lock_type;
- const char *desc;
- } lock_types[] = {
- { READ_LOCK, "R" },
- { WRITE_LOCK, "W" },
- { PENDING_READ_LOCK, "PR" },
- { PENDING_WRITE_LOCK, "PW" },
- { UNLOCK_LOCK, "U" }
- };
- const char *desc="X";
if (count==0) {
d_printf("Byte range locks:\n");
d_printf(" Pid dev:inode R/W start size\n");
@@ -194,49 +182,47 @@ static void print_brl(struct file_id id,
}
count++;
- for (i=0;i<ARRAY_SIZE(lock_types);i++) {
- if (lock_type == lock_types[i].lock_type) {
- desc = lock_types[i].desc;
- }
- }
-
- d_printf("%8s %s %2s %9.0f %9.0f\n",
- procid_str_static(&pid), file_id_static_string(&id),
- desc,
- (double)start, (double)size);
+ d_printf("%8s %05x:%05x %s %9.0f %9.0f\n",
+ procid_str_static(&pid), (int)dev, (int)ino,
+ lock_type==READ_LOCK?"R":"W",
+ (double)start, (double)size);
}
-static int traverse_fn1(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
- void *state)
+static int traverse_fn1(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state)
{
- if (crec->cnum == -1)
+ struct connections_data crec;
+
+ if (dbuf.dsize != sizeof(crec))
+ return 0;
+
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum == -1)
return 0;
- if (!process_exists(crec->pid) || !Ucrit_checkUid(crec->uid)) {
+ if (!process_exists(crec.pid) || !Ucrit_checkUid(crec.uid)) {
return 0;
}
d_printf("%-10s %s %-12s %s",
- crec->servicename,procid_str_static(&crec->pid),
- crec->machine,
- time_to_asc(crec->start));
+ crec.servicename,procid_str_static(&crec.pid),
+ crec.machine,
+ time_to_asc(crec.start));
return 0;
}
-static int traverse_sessionid(struct db_record *db, void *state)
+static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state)
{
struct sessionid sessionid;
fstring uid_str, gid_str;
- if (db->value.dsize != sizeof(sessionid))
+ if (dbuf.dsize != sizeof(sessionid))
return 0;
- memcpy(&sessionid, db->value.dptr, sizeof(sessionid));
+ memcpy(&sessionid, dbuf.dptr, sizeof(sessionid));
- if (!process_exists(sessionid.pid) || !Ucrit_checkUid(sessionid.uid)) {
+ if (!process_exists_by_pid(sessionid.pid) || !Ucrit_checkUid(sessionid.uid)) {
return 0;
}
@@ -245,8 +231,8 @@ static int traverse_sessionid(struct db_record *db, void *state)
fstr_sprintf(uid_str, "%d", sessionid.uid);
fstr_sprintf(gid_str, "%d", sessionid.gid);
- d_printf("%-7s %-12s %-12s %-12s (%s)\n",
- procid_str_static(&sessionid.pid),
+ d_printf("%5d %-12s %-12s %-12s (%s)\n",
+ (int)sessionid.pid,
numeric_only ? uid_str : uidtoname(sessionid.uid),
numeric_only ? gid_str : gidtoname(sessionid.gid),
sessionid.remote_machine, sessionid.hostname);
@@ -261,6 +247,7 @@ static int traverse_sessionid(struct db_record *db, void *state)
{
int c;
int profile_only = 0;
+ TDB_CONTEXT *tdb;
BOOL show_processes, show_locks, show_shares;
poptContext pc;
struct poptOption long_options[] = {
@@ -323,13 +310,6 @@ static int traverse_sessionid(struct db_record *db, void *state)
return (-1);
}
- /*
- * This implicitly initializes the global ctdbd connection, usable by
- * the db_open() calls further down.
- */
-
- messaging_init(NULL, procid_self(), event_context_init(NULL));
-
switch (profile_only) {
case 'P':
/* Dump profile data */
@@ -342,18 +322,16 @@ static int traverse_sessionid(struct db_record *db, void *state)
}
if ( show_processes ) {
- struct db_context *db;
- db = db_open(NULL, lock_path("sessionid.tdb"), 0,
- TDB_DEFAULT, O_RDWR, 0644);
- if (!db) {
+ tdb = tdb_open_log(lock_path("sessionid.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
+ if (!tdb) {
d_printf("sessionid.tdb not initialised\n");
} else {
d_printf("\nSamba version %s\n",SAMBA_VERSION_STRING);
d_printf("PID Username Group Machine \n");
d_printf("-------------------------------------------------------------------\n");
- db->traverse_read(db, traverse_sessionid, NULL);
- talloc_free(db);
+ tdb_traverse(tdb, traverse_sessionid, NULL);
+ tdb_close(tdb);
}
if (processes_only)
@@ -361,19 +339,26 @@ static int traverse_sessionid(struct db_record *db, void *state)
}
if ( show_shares ) {
- if (verbose) {
- d_printf("Opened %s\n", lock_path("connections.tdb"));
- }
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
+ if (!tdb) {
+ d_printf("%s not initialised\n", lock_path("connections.tdb"));
+ d_printf("This is normal if an SMB client has never connected to your server.\n");
+ } else {
+ if (verbose) {
+ d_printf("Opened %s\n", lock_path("connections.tdb"));
+ }
- if (brief)
- exit(0);
+ if (brief)
+ exit(0);
- d_printf("\nService pid machine Connected at\n");
- d_printf("-------------------------------------------------------\n");
+ d_printf("\nService pid machine Connected at\n");
+ d_printf("-------------------------------------------------------\n");
- connections_forall(traverse_fn1, NULL);
+ tdb_traverse(tdb, traverse_fn1, NULL);
+ tdb_close(tdb);
- d_printf("\n");
+ d_printf("\n");
+ }
if ( shares_only )
exit(0);
@@ -398,7 +383,7 @@ static int traverse_sessionid(struct db_record *db, void *state)
d_printf("\n");
if (show_brl) {
- brl_forall(print_brl, NULL);
+ brl_forall(print_brl);
}
locking_end();
diff --git a/source/utils/status_profile.c b/source/utils/status_profile.c
index cc7feec2d83..b4c4940f3fd 100644
--- a/source/utils/status_profile.c
+++ b/source/utils/status_profile.c
@@ -47,7 +47,7 @@ static void profile_separator(const char * title)
BOOL status_profile_dump(BOOL verbose)
{
#ifdef WITH_PROFILE
- if (!profile_setup(NULL, True)) {
+ if (!profile_setup(True)) {
fprintf(stderr,"Failed to initialise profile memory\n");
return False;
}
@@ -487,7 +487,7 @@ BOOL status_profile_rates(BOOL verbose)
usec_to_sec(sample_interval_usec));
}
- if (!profile_setup(NULL, True)) {
+ if (!profile_setup(True)) {
fprintf(stderr,"Failed to initialise profile memory\n");
return False;
}
diff --git a/source/web/startstop.c b/source/web/startstop.c
index 1485516474c..44945cd5362 100644
--- a/source/web/startstop.c
+++ b/source/web/startstop.c
@@ -121,7 +121,7 @@ void stop_winbindd(void)
}
#endif
/* kill a specified process */
-void kill_pid(struct server_id pid)
+void kill_pid(struct process_id pid)
{
if (geteuid() != 0) return;
diff --git a/source/web/statuspage.c b/source/web/statuspage.c
index cd7b23d8649..e4d726c4fd2 100644
--- a/source/web/statuspage.c
+++ b/source/web/statuspage.c
@@ -28,14 +28,14 @@
PIDMAP {
PIDMAP *next, *prev;
- struct server_id pid;
+ struct process_id pid;
char *machine;
};
static PIDMAP *pidmap;
static int PID_or_Machine; /* 0 = show PID, else show Machine name */
-static struct server_id smbd_pid;
+static struct process_id smbd_pid;
/* from 2nd call on, remove old list */
static void initPid2Machine (void)
@@ -55,7 +55,7 @@ static void initPid2Machine (void)
}
/* add new PID <-> Machine name mapping */
-static void addPid2Machine (struct server_id pid, char *machine)
+static void addPid2Machine (struct process_id pid, char *machine)
{
/* show machine name rather PID on table "Open Files"? */
if (PID_or_Machine) {
@@ -75,7 +75,7 @@ static void addPid2Machine (struct server_id pid, char *machine)
}
/* lookup PID <-> Machine name mapping */
-static char *mapPid2Machine (struct server_id pid)
+static char *mapPid2Machine (struct process_id pid)
{
static char pidbuf [64];
PIDMAP *map;
@@ -167,16 +167,20 @@ static void print_share_mode(const struct share_mode_entry *e,
/* kill off any connections chosen by the user */
-static int traverse_fn1(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
- void *private_data)
+static int traverse_fn1(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void* state)
{
- if (crec->cnum == -1 && process_exists(crec->pid)) {
+ struct connections_data crec;
+
+ if (dbuf.dsize != sizeof(crec))
+ return 0;
+
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum == -1 && process_exists(crec.pid)) {
char buf[30];
- slprintf(buf,sizeof(buf)-1,"kill_%s", procid_str_static(&crec->pid));
+ slprintf(buf,sizeof(buf)-1,"kill_%s", procid_str_static(&crec.pid));
if (cgi_variable(buf)) {
- kill_pid(crec->pid);
+ kill_pid(crec.pid);
sleep(SLEEP_TIME);
}
}
@@ -184,24 +188,28 @@ static int traverse_fn1(struct db_record *rec,
}
/* traversal fn for showing machine connections */
-static int traverse_fn2(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
- void *private_data)
+static int traverse_fn2(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void* state)
{
- if (crec->cnum == -1 || !process_exists(crec->pid) ||
- procid_equal(&crec->pid, &smbd_pid))
+ struct connections_data crec;
+
+ if (dbuf.dsize != sizeof(crec))
+ return 0;
+
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum == -1 || !process_exists(crec.pid) ||
+ procid_equal(&crec.pid, &smbd_pid))
return 0;
- addPid2Machine (crec->pid, crec->machine);
+ addPid2Machine (crec.pid, crec.machine);
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n",
- procid_str_static(&crec->pid),
- crec->machine, crec->addr,
- tstring(crec->start));
+ procid_str_static(&crec.pid),
+ crec.machine,crec.addr,
+ tstring(crec.start));
if (geteuid() == 0) {
printf("<td><input type=submit value=\"X\" name=\"kill_%s\"></td>\n",
- procid_str_static(&crec->pid));
+ procid_str_static(&crec.pid));
}
printf("</tr>\n");
@@ -209,19 +217,23 @@ static int traverse_fn2(struct db_record *rec,
}
/* traversal fn for showing share connections */
-static int traverse_fn3(struct db_record *rec,
- const struct connections_key *key,
- const struct connections_data *crec,
- void *private_data)
+static int traverse_fn3(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void* state)
{
- if (crec->cnum == -1 || !process_exists(crec->pid))
+ struct connections_data crec;
+
+ if (dbuf.dsize != sizeof(crec))
+ return 0;
+
+ memcpy(&crec, dbuf.dptr, sizeof(crec));
+
+ if (crec.cnum == -1 || !process_exists(crec.pid))
return 0;
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n",
- crec->servicename, uidtoname(crec->uid),
- gidtoname(crec->gid),procid_str_static(&crec->pid),
- crec->machine,
- tstring(crec->start));
+ crec.servicename,uidtoname(crec.uid),
+ gidtoname(crec.gid),procid_str_static(&crec.pid),
+ crec.machine,
+ tstring(crec.start));
return 0;
}
@@ -232,6 +244,7 @@ void status_page(void)
const char *v;
int autorefresh=0;
int refresh_interval=30;
+ TDB_CONTEXT *tdb;
int nr_running=0;
BOOL waitup = False;
@@ -309,7 +322,8 @@ void status_page(void)
PID_or_Machine = 0;
}
- connections_forall(traverse_fn1, NULL);
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
+ if (tdb) tdb_traverse(tdb, traverse_fn1, NULL);
initPid2Machine ();
@@ -330,6 +344,12 @@ void status_page(void)
printf("<p>\n");
+ if (!tdb) {
+ /* open failure either means no connections have been
+ made */
+ }
+
+
printf("<table>\n");
printf("<tr><td>%s</td><td>%s</td></tr>", _("version:"), SAMBA_VERSION_STRING);
@@ -399,7 +419,7 @@ void status_page(void)
}
printf("</tr>\n");
- connections_forall(traverse_fn2, NULL);
+ if (tdb) tdb_traverse(tdb, traverse_fn2, NULL);
printf("</table><p>\n");
@@ -408,7 +428,7 @@ void status_page(void)
printf("<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>\n\n",
_("Share"), _("User"), _("Group"), _("PID"), _("Client"), _("Date"));
- connections_forall(traverse_fn3, NULL);
+ if (tdb) tdb_traverse(tdb, traverse_fn3, NULL);
printf("</table><p>\n");
@@ -421,6 +441,8 @@ void status_page(void)
locking_end();
printf("</table>\n");
+ if (tdb) tdb_close(tdb);
+
printf("<br><input type=submit name=\"show_client_in_col_1\" value=\"%s\">\n", _("Show Client in col 1"));
printf("<input type=submit name=\"show_pid_in_col_1\" value=\"%s\">\n", _("Show PID in col 1"));
diff --git a/source/web/swat.c b/source/web/swat.c
index e30c6d35f92..d43f8941bc1 100644
--- a/source/web/swat.c
+++ b/source/web/swat.c
@@ -1003,7 +1003,7 @@ static BOOL change_password(const char *remote_machine, const char *user_name,
return NT_STATUS_IS_OK(ret);
}
- if(!initialize_password_db(True, NULL)) {
+ if(!initialize_password_db(True)) {
printf("%s\n<p>", _("Can't setup password database vectors."));
return False;
}